From a0c0a00fc419b7bc08202a79134fcd5bc0427071 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Thu, 15 Sep 2016 16:59:08 -0400 Subject: [PATCH] Bash-4.4 distribution sources and documentation --- CHANGES | 1035 +- COMPAT | 42 +- CWRU/changelog | 5831 +++++ INSTALL | 442 +- MANIFEST | 85 + Makefile.in | 107 +- NEWS | 224 + NOTES | 4 +- POSIX | 230 +- RBASH | 46 +- README | 6 +- aclocal.m4 | 8 +- alias.c | 8 +- array.c | 12 +- arrayfunc.c | 127 +- arrayfunc.h | 13 +- assoc.c | 19 +- bashhist.c | 83 +- bashjmp.h | 4 +- bashline.c | 160 +- braces.c | 58 +- builtins.h | 1 + builtins/Makefile.in | 90 +- builtins/alias.def | 10 +- builtins/bashgetopt.c | 6 + builtins/bashgetopt.h | 3 + builtins/bind.def | 16 +- builtins/break.def | 4 + builtins/caller.def | 2 + builtins/cd.def | 40 +- builtins/command.def | 80 +- builtins/common.c | 38 +- builtins/common.h | 32 +- builtins/complete.def | 20 +- builtins/declare.def | 311 +- builtins/echo.def | 10 +- builtins/enable.def | 84 +- builtins/eval.def | 2 +- builtins/evalfile.c | 78 +- builtins/evalstring.c | 87 +- builtins/exec.def | 18 +- builtins/exit.def | 4 + builtins/fc.def | 21 +- builtins/fg_bg.def | 4 + builtins/getopt.c | 46 + builtins/getopt.h | 17 + builtins/getopts.def | 28 +- builtins/hash.def | 23 +- builtins/help.def | 73 +- builtins/history.def | 27 +- builtins/jobs.def | 10 +- builtins/kill.def | 8 +- builtins/let.def | 2 + builtins/mapfile.def | 54 +- builtins/mkbuiltins.c | 57 +- builtins/printf.def | 31 +- builtins/pushd.def | 43 +- builtins/read.def | 51 +- builtins/reserved.def | 2 +- builtins/return.def | 10 +- builtins/set.def | 128 +- builtins/setattr.def | 103 +- builtins/shift.def | 5 + builtins/shopt.def | 99 +- builtins/source.def | 12 +- builtins/suspend.def | 3 +- builtins/test.def | 7 +- builtins/trap.def | 5 +- builtins/type.def | 48 +- builtins/ulimit.def | 21 +- builtins/umask.def | 7 +- builtins/wait.def | 14 +- command.h | 13 +- config-bot.h | 4 + config-top.h | 28 + config.h.in | 43 +- configure | 334 +- configure.ac | 92 +- doc/FAQ | 16 +- doc/Makefile.in | 47 +- doc/aosa-bash-full.pdf | Bin 0 -> 393895 bytes doc/aosa-bash.pdf | Bin 153472 -> 228239 bytes doc/bash.0 | 2827 +-- doc/bash.1 | 804 +- doc/bash.html | 839 +- doc/bash.info | 11484 ++++++++++ doc/bash.pdf | Bin 312770 -> 363392 bytes doc/bash.ps | 16233 +++++++------- doc/bashbug.0 | 9 +- doc/bashbug.1 | 9 +- doc/bashbug.ps | 68 +- doc/bashref.dvi | Bin 721984 -> 744904 bytes doc/bashref.html | 25607 ++++++++++------------ doc/bashref.info | 9386 ++++---- doc/bashref.pdf | Bin 463824 -> 734389 bytes doc/bashref.ps | 21569 +++++++++--------- doc/bashref.texi | 533 +- doc/builtins.0 | 946 +- doc/builtins.ps | 4438 ++-- doc/rbash.0 | 18 +- doc/rbash.ps | 76 +- doc/texinfo.tex | 2066 +- doc/version.texi | 13 +- error.c | 23 + error.h | 3 + eval.c | 27 +- examples/functions/dirstack | 160 + examples/loadables/Makefile.in | 66 +- examples/loadables/Makefile.inc.in | 108 + examples/loadables/README | 5 +- examples/loadables/basename.c | 1 + examples/loadables/dirname.c | 1 + examples/loadables/finfo.c | 11 +- examples/loadables/head.c | 2 + examples/loadables/hello.c | 22 +- examples/loadables/ln.c | 15 +- examples/loadables/loadables.h | 34 + examples/loadables/logname.c | 1 + examples/loadables/mkdir.c | 4 +- examples/loadables/mypid.c | 19 +- examples/loadables/necho.c | 1 + examples/loadables/pathchk.c | 7 +- examples/loadables/perl/Makefile.in | 2 +- examples/loadables/realpath.c | 1 + examples/loadables/rmdir.c | 1 + examples/loadables/setpgid.c | 121 + examples/loadables/sync.c | 1 + examples/loadables/tee.c | 1 + examples/loadables/template.c | 21 +- examples/loadables/truefalse.c | 2 + examples/loadables/tty.c | 1 + examples/loadables/uname.c | 1 + examples/loadables/unlink.c | 1 + examples/loadables/whoami.c | 1 + execute_cmd.c | 470 +- execute_cmd.h | 18 +- expr.c | 9 +- externs.h | 18 +- findcmd.c | 115 +- findcmd.h | 9 +- flags.c | 49 +- flags.h | 7 +- general.c | 178 +- general.h | 32 +- hashlib.c | 10 + hashlib.h | 2 +- include/chartypes.h | 28 +- include/posixjmp.h | 22 +- include/shmbchar.h | 247 +- include/shmbutil.h | 29 + input.c | 4 +- jobs.c | 518 +- jobs.h | 37 +- lib/glob/Makefile.in | 4 +- lib/glob/glob.c | 20 +- lib/glob/gmisc.c | 45 +- lib/glob/sm_loop.c | 63 +- lib/glob/smatch.c | 4 + lib/intl/l10nflist.c | 5 +- lib/intl/loadmsgcat.c | 16 +- lib/intl/localealias.c | 5 +- lib/malloc/Makefile.in | 2 +- lib/malloc/malloc.c | 4 +- lib/malloc/stats.c | 2 +- lib/malloc/table.c | 184 +- lib/malloc/table.h | 11 + lib/malloc/trace.c | 4 +- lib/readline/Makefile.in | 10 +- lib/readline/bind.c | 218 +- lib/readline/callback.c | 79 +- lib/readline/chardefs.h | 18 +- lib/readline/colors.c | 56 +- lib/readline/colors.h | 10 +- lib/readline/complete.c | 180 +- lib/readline/display.c | 428 +- lib/readline/doc/history.texi | 2 +- lib/readline/doc/hstech.texi | 15 +- lib/readline/doc/hsuser.texi | 19 +- lib/readline/doc/rlman.texi | 2 +- lib/readline/doc/rltech.texi | 103 +- lib/readline/doc/rluser.texi | 123 +- lib/readline/doc/rluserman.texi | 2 +- lib/readline/doc/version.texi | 12 +- lib/readline/examples/fileman.c | 18 + lib/readline/examples/rl-callbacktest.c | 15 +- lib/readline/examples/rl.c | 1 + lib/readline/funmap.c | 9 +- lib/readline/histexpand.c | 48 +- lib/readline/histfile.c | 293 +- lib/readline/histlib.h | 3 - lib/readline/history.c | 54 +- lib/readline/history.h | 18 +- lib/readline/input.c | 67 +- lib/readline/isearch.c | 25 +- lib/readline/kill.c | 106 +- lib/readline/macro.c | 4 +- lib/readline/mbutil.c | 4 +- lib/readline/misc.c | 8 +- lib/readline/parens.c | 28 +- lib/readline/posixjmp.h | 22 +- lib/readline/readline.c | 127 +- lib/readline/readline.h | 50 +- lib/readline/rlconf.h | 14 +- lib/readline/rlmbutil.h | 46 +- lib/readline/rlprivate.h | 37 +- lib/readline/rltty.c | 57 +- lib/readline/rltypedefs.h | 19 + lib/readline/search.c | 11 +- lib/readline/signals.c | 39 +- lib/readline/tcap.h | 4 +- lib/readline/terminal.c | 9 +- lib/readline/text.c | 85 +- lib/readline/tilde.c | 10 +- lib/readline/undo.c | 11 +- lib/readline/util.c | 67 +- lib/readline/vi_keymap.c | 6 +- lib/readline/vi_mode.c | 172 +- lib/sh/Makefile.in | 60 +- lib/sh/casemod.c | 87 +- lib/sh/eaccess.c | 10 +- lib/sh/mbscasecmp.c | 9 +- lib/sh/mbscmp.c | 9 +- lib/sh/mktime.c | 29 +- lib/sh/netconn.c | 4 +- lib/sh/netopen.c | 3 +- lib/sh/shmatch.c | 9 +- lib/sh/shmbchar.c | 11 +- lib/sh/shquote.c | 74 +- lib/sh/strtrans.c | 12 +- lib/sh/tmpfile.c | 29 +- lib/sh/ufuncs.c | 4 + lib/sh/unicode.c | 4 +- lib/sh/winsize.c | 4 +- lib/sh/zgetline.c | 14 +- lib/termcap/Makefile.in | 2 +- lib/termcap/termcap.c | 6 +- lib/termcap/termcap.h | 2 +- lib/tilde/Makefile.in | 2 +- lib/tilde/tilde.c | 10 +- locale.c | 4 +- make_cmd.c | 21 +- nojobs.c | 87 +- parse.y | 337 +- parser-built | 156 +- patchlevel.h | 4 +- pathexp.c | 26 +- pathexp.h | 9 +- pcomplete.c | 39 +- pcomplete.h | 1 + pcomplib.c | 4 +- po/LINGUAS | 2 +- po/af.gmo | Bin 1244 -> 1224 bytes po/af.po | 1354 +- po/bash.pot | 1346 +- po/bg.gmo | Bin 235979 -> 219559 bytes po/bg.po | 2701 ++- po/ca.gmo | Bin 9739 -> 99978 bytes po/ca.po | 6721 +++--- po/cs.gmo | Bin 173589 -> 163599 bytes po/cs.po | 1839 +- po/da.gmo | Bin 100735 -> 79327 bytes po/da.po | 1385 +- po/de.gmo | Bin 89921 -> 94101 bytes po/de.po | 1542 +- po/el.gmo | Bin 37185 -> 38710 bytes po/el.po | 1405 +- po/en@boldquot.gmo | Bin 165724 -> 168863 bytes po/en@boldquot.po | 1620 +- po/en@quot.gmo | Bin 164132 -> 167255 bytes po/en@quot.po | 1594 +- po/eo.gmo | Bin 161232 -> 151825 bytes po/eo.po | 1406 +- po/es.gmo | Bin 122470 -> 95671 bytes po/es.po | 1407 +- po/et.gmo | Bin 12133 -> 12133 bytes po/et.po | 1352 +- po/fi.gmo | Bin 102765 -> 81468 bytes po/fi.po | 1382 +- po/fr.gmo | Bin 126213 -> 167383 bytes po/fr.po | 2800 +-- po/ga.gmo | Bin 58471 -> 55927 bytes po/ga.po | 1543 +- po/gl.gmo | Bin 63233 -> 59107 bytes po/gl.po | 1440 +- po/hr.gmo | Bin 34075 -> 33869 bytes po/hr.po | 1384 +- po/hu.gmo | Bin 110947 -> 160744 bytes po/hu.po | 2971 +-- po/id.gmo | Bin 108579 -> 99123 bytes po/id.po | 1523 +- po/it.gmo | Bin 122520 -> 95487 bytes po/it.po | 1385 +- po/ja.gmo | Bin 133748 -> 110336 bytes po/ja.po | 1701 +- po/lt.gmo | Bin 29354 -> 29236 bytes po/lt.po | 1371 +- po/nb.gmo | Bin 0 -> 152775 bytes po/nb.po | 5738 +++++ po/nl.gmo | Bin 170658 -> 159651 bytes po/nl.po | 1430 +- po/pl.gmo | Bin 173751 -> 163030 bytes po/pl.po | 1544 +- po/pt_BR.gmo | Bin 9580 -> 162582 bytes po/pt_BR.po | 5544 +++-- po/ro.gmo | Bin 9358 -> 9312 bytes po/ro.po | 1364 +- po/ru.gmo | Bin 9155 -> 134863 bytes po/ru.po | 6281 +++++- po/sk.gmo | Bin 121115 -> 94657 bytes po/sk.po | 1388 +- po/sl.gmo | Bin 117289 -> 91641 bytes po/sl.po | 1389 +- po/sr.gmo | Bin 219040 -> 205678 bytes po/sr.po | 1471 +- po/sv.gmo | Bin 165974 -> 156578 bytes po/sv.po | 1978 +- po/tr.gmo | Bin 88390 -> 80056 bytes po/tr.po | 1738 +- po/uk.gmo | Bin 222687 -> 209474 bytes po/uk.po | 1468 +- po/vi.gmo | Bin 179349 -> 168996 bytes po/vi.po | 2052 +- po/zh_CN.gmo | Bin 102094 -> 147592 bytes po/zh_CN.po | 1930 +- po/zh_TW.gmo | Bin 5876 -> 93961 bytes po/zh_TW.po | 3676 +++- print_cmd.c | 32 +- quit.h | 8 +- redir.c | 42 +- shell.c | 179 +- shell.h | 8 +- sig.c | 34 +- sig.h | 4 +- stringlib.c | 2 +- subst.c | 1562 +- subst.h | 54 +- support/Makefile.in | 3 +- support/bash.pc.in | 28 + support/bashbug.sh | 5 +- support/man2html.c | 44 +- support/texi2dvi | 2338 +- support/xcase.c | 2 + syntax.h | 2 + test.c | 12 +- tests/alias.right | 8 + tests/alias.tests | 1 + tests/alias2.sub | 22 + tests/appendop.right | 10 +- tests/arith.right | 16 +- tests/arith.tests | 8 + tests/arith7.sub | 11 + tests/array.right | 244 +- tests/array.tests | 13 +- tests/array17.sub | 78 + tests/array18.sub | 34 + tests/array19.sub | 167 + tests/array20.sub | 34 + tests/array21.sub | 37 + tests/assoc.right | 135 +- tests/assoc.tests | 21 + tests/assoc8.sub | 7 + tests/attr.right | 37 + tests/attr.tests | 41 + tests/attr1.sub | 55 + tests/attr2.sub | 24 + tests/builtins.right | 85 +- tests/builtins.tests | 6 + tests/builtins5.sub | 61 + tests/builtins6.sub | 68 + tests/case.right | 7 + tests/case.tests | 20 + tests/casemod.right | 4 + tests/casemod.tests | 14 + tests/comsub-posix.right | 1 + tests/comsub-posix.tests | 13 + tests/comsub.right | 21 + tests/comsub.tests | 5 + tests/comsub1.sub | 6 + tests/comsub2.sub | 8 + tests/comsub3.sub | 31 + tests/cond.right | 5 + tests/cond.tests | 11 + tests/coproc.right | 5 +- tests/coproc.tests | 30 +- tests/dollar-at-star | 14 + tests/dollar-at-star2.sub | 207 + tests/dollar-at-star3.sub | 44 + tests/dollar-at-star4.sub | 97 + tests/dollar-at-star5.sub | 53 + tests/dollar-at-star6.sub | 29 + tests/dollar-at-star7.sub | 25 + tests/dollar-at-star8.sub | 14 + tests/dollar.right | 202 +- tests/errors.right | 27 +- tests/errors.tests | 7 + tests/errors4.sub | 18 + tests/errors5.sub | 11 + tests/errors6.sub | 20 + tests/exec.right | 46 +- tests/exec10.sub | 34 + tests/exec11.sub | 14 + tests/exec12.sub | 17 + tests/exec13.sub | 21 + tests/execscript | 32 + tests/exp.right | 127 + tests/exp.tests | 15 + tests/exp7.sub | 11 + tests/exp8.sub | 31 + tests/exp9.sub | 69 + tests/exportfunc.right | 14 + tests/exportfunc.tests | 71 + tests/exportfunc1.sub | 21 + tests/exportfunc2.sub | 400 + tests/exportfunc3.sub | 25 + tests/extglob.right | 13 + tests/extglob.tests | 4 + tests/extglob2.sub | 7 + tests/extglob3.sub | 21 + tests/extglob4.sub | 25 + tests/getopts.right | 12 + tests/getopts.tests | 5 + tests/getopts10.sub | 17 + tests/getopts5.sub | 1 - tests/getopts8.sub | 13 + tests/getopts9.sub | 16 + tests/globstar.right | 1 - tests/globstar2.sub | 15 +- tests/heredoc.right | 13 +- tests/heredoc3.sub | 6 +- tests/herestr.right | 7 +- tests/herestr.tests | 2 + tests/herestr1.sub | 10 + tests/histexp.right | 67 + tests/histexp.tests | 18 + tests/histexp1.sub | 23 + tests/histexp2.sub | 14 + tests/histexp3.sub | 35 + tests/histexp4.sub | 23 + tests/history.right | 4 +- tests/history.tests | 2 +- tests/history1.sub | 2 +- tests/intl.right | 37 +- tests/intl.tests | 9 +- tests/intl3.sub | 23 + tests/jobs.right | 2 +- tests/lastpipe.right | 10 + tests/lastpipe.tests | 3 + tests/lastpipe2.sub | 30 + tests/mapfile.right | 5 + tests/mapfile.tests | 2 + tests/mapfile2.sub | 6 + tests/nameref.right | 284 +- tests/nameref.tests | 18 +- tests/nameref10.sub | 64 + tests/nameref11.sub | 41 + tests/nameref12.sub | 100 + tests/nameref13.sub | 102 + tests/nameref14.sub | 43 + tests/nameref15.sub | 88 + tests/nameref16.sub | 44 + tests/nameref17.sub | 103 + tests/nameref18.sub | 54 + tests/nameref4.sub | 17 +- tests/nameref8.sub | 4 + tests/nameref9.sub | 8 + tests/new-exp.right | 105 +- tests/new-exp.tests | 24 + tests/new-exp10.sub | 86 + tests/new-exp3.sub | 4 + tests/new-exp8.sub | 21 + tests/nquote.right | 6 + tests/nquote.tests | 1 + tests/nquote3.sub | 8 + tests/parser.right | 1 + tests/parser.tests | 4 + tests/parser1.sub | 1 + tests/posix2.right | 4 + tests/posix2.tests | 12 + tests/redir.right | 18 + tests/redir.tests | 3 + tests/redir11.sub | 53 + tests/redir12.sub | 5 + tests/run-alias | 4 +- tests/run-all | 15 +- tests/run-appendop | 4 +- tests/run-arith | 4 +- tests/run-arith-for | 4 +- tests/run-array | 4 +- tests/run-array2 | 4 +- tests/run-assoc | 4 +- tests/run-attr | 2 + tests/run-braces | 4 +- tests/run-builtins | 4 +- tests/run-case | 4 +- tests/run-casemod | 4 +- tests/run-comsub | 4 +- tests/run-comsub-eof | 4 +- tests/run-comsub-posix | 4 +- tests/run-cond | 4 +- tests/run-coproc | 6 +- tests/run-cprint | 4 +- tests/run-dbg-support | 0 tests/run-dbg-support2 | 0 tests/run-dirstack | 8 +- tests/run-dollars | 4 +- tests/run-errors | 5 +- tests/run-execscript | 4 +- tests/run-exp-tests | 4 +- tests/run-exportfunc | 2 + tests/run-extglob | 4 +- tests/run-extglob2 | 4 +- tests/run-extglob3 | 4 +- tests/run-func | 4 +- tests/run-getopts | 4 +- tests/run-glob-test | 4 +- tests/run-globstar | 4 +- tests/run-heredoc | 4 +- tests/run-herestr | 4 +- tests/run-histexpand | 4 +- tests/run-history | 4 +- tests/run-ifs | 4 +- tests/run-ifs-posix | 4 +- tests/run-input-test | 4 +- tests/run-intl | 6 +- tests/run-invert | 4 +- tests/run-iquote | 4 +- tests/run-jobs | 4 +- tests/run-lastpipe | 4 +- tests/run-mapfile | 4 +- tests/run-minimal | 15 +- tests/run-more-exp | 4 +- tests/run-nameref | 4 +- tests/run-new-exp | 4 +- tests/run-nquote | 4 +- tests/run-nquote1 | 4 +- tests/run-nquote2 | 4 +- tests/run-nquote3 | 4 +- tests/run-nquote4 | 4 +- tests/run-nquote5 | 4 +- tests/run-parser | 2 + tests/run-posix2 | 4 +- tests/run-posixexp | 4 +- tests/run-posixexp2 | 4 +- tests/run-posixpat | 4 +- tests/run-posixpipe | 4 +- tests/run-precedence | 4 +- tests/run-printf | 6 +- tests/run-quote | 4 +- tests/run-read | 4 +- tests/run-redir | 4 +- tests/run-rhs-exp | 4 +- tests/run-rsh | 4 +- tests/run-set-e | 4 +- tests/run-set-x | 0 tests/run-shopt | 4 +- tests/run-strip | 4 +- tests/run-test | 4 +- tests/run-tilde | 4 +- tests/run-tilde2 | 4 +- tests/run-trap | 4 +- tests/run-type | 4 +- tests/run-varenv | 4 +- tests/run-vredir | 4 +- tests/shopt.right | 12 +- tests/source6.sub | 5 + tests/test-glue-functions | 9 + tests/trap.right | 7 +- tests/trap.tests | 1 + tests/unicode2.sub | 30 +- tests/unicode3.sub | 2 + tests/varenv.right | 33 +- tests/varenv.sh | 8 +- tests/varenv4.sub | 14 + tests/varenv7.sub | 62 + tests/varenv8.sub | 14 + tests/vredir.right | 13 +- tests/vredir.tests | 2 + tests/vredir7.sub | 23 + trap.c | 145 +- trap.h | 6 +- unwind_prot.c | 37 +- unwind_prot.h | 3 + variables.c | 573 +- variables.h | 28 +- version.c | 8 +- xmalloc.c | 6 +- y.tab.c | 3279 +-- y.tab.h | 156 +- 588 files changed, 130746 insertions(+), 80164 deletions(-) create mode 100644 doc/aosa-bash-full.pdf create mode 100644 doc/bash.info create mode 100644 examples/functions/dirstack create mode 100644 examples/loadables/Makefile.inc.in create mode 100644 examples/loadables/loadables.h create mode 100644 examples/loadables/setpgid.c create mode 100644 po/nb.gmo create mode 100644 po/nb.po create mode 100644 support/bash.pc.in create mode 100644 tests/alias2.sub create mode 100644 tests/arith7.sub create mode 100644 tests/array17.sub create mode 100644 tests/array18.sub create mode 100644 tests/array19.sub create mode 100644 tests/array20.sub create mode 100644 tests/array21.sub create mode 100644 tests/assoc8.sub create mode 100644 tests/attr.right create mode 100644 tests/attr.tests create mode 100644 tests/attr1.sub create mode 100644 tests/attr2.sub create mode 100644 tests/builtins5.sub create mode 100644 tests/builtins6.sub create mode 100644 tests/comsub2.sub create mode 100644 tests/comsub3.sub create mode 100644 tests/dollar-at-star2.sub create mode 100644 tests/dollar-at-star3.sub create mode 100644 tests/dollar-at-star4.sub create mode 100644 tests/dollar-at-star5.sub create mode 100644 tests/dollar-at-star6.sub create mode 100644 tests/dollar-at-star7.sub create mode 100644 tests/dollar-at-star8.sub create mode 100644 tests/errors4.sub create mode 100644 tests/errors5.sub create mode 100644 tests/errors6.sub create mode 100644 tests/exec10.sub create mode 100644 tests/exec11.sub create mode 100644 tests/exec12.sub create mode 100644 tests/exec13.sub create mode 100644 tests/exp7.sub create mode 100644 tests/exp8.sub create mode 100644 tests/exp9.sub create mode 100644 tests/exportfunc.right create mode 100644 tests/exportfunc.tests create mode 100644 tests/exportfunc1.sub create mode 100644 tests/exportfunc2.sub create mode 100644 tests/exportfunc3.sub create mode 100644 tests/extglob2.sub create mode 100644 tests/extglob3.sub create mode 100644 tests/extglob4.sub create mode 100644 tests/getopts10.sub create mode 100644 tests/getopts8.sub create mode 100644 tests/getopts9.sub create mode 100644 tests/herestr1.sub create mode 100644 tests/histexp1.sub create mode 100644 tests/histexp2.sub create mode 100644 tests/histexp3.sub create mode 100644 tests/histexp4.sub create mode 100644 tests/intl3.sub create mode 100644 tests/lastpipe2.sub create mode 100644 tests/mapfile2.sub create mode 100644 tests/nameref10.sub create mode 100644 tests/nameref11.sub create mode 100644 tests/nameref12.sub create mode 100644 tests/nameref13.sub create mode 100644 tests/nameref14.sub create mode 100644 tests/nameref15.sub create mode 100644 tests/nameref16.sub create mode 100644 tests/nameref17.sub create mode 100644 tests/nameref18.sub create mode 100644 tests/nameref9.sub create mode 100644 tests/new-exp10.sub create mode 100644 tests/nquote3.sub create mode 100644 tests/parser.right create mode 100644 tests/parser.tests create mode 100644 tests/parser1.sub create mode 100644 tests/redir11.sub create mode 100644 tests/redir12.sub create mode 100644 tests/run-attr mode change 100755 => 100644 tests/run-dbg-support mode change 100755 => 100644 tests/run-dbg-support2 create mode 100644 tests/run-exportfunc create mode 100644 tests/run-parser mode change 100755 => 100644 tests/run-set-x create mode 100644 tests/test-glue-functions create mode 100644 tests/varenv7.sub create mode 100644 tests/varenv8.sub create mode 100644 tests/vredir7.sub diff --git a/CHANGES b/CHANGES index 5985e42..43cb134 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,1036 @@ +This document details the changes between this version, bash-4.4-release, and +the previous version, bash-4.4-rc2. + +1. Changes to Bash + +a. Fixed a bug that could potentially result in a crash due to an integer + overflow. + +b. Fixed a bug in where commands printed due to `set -x' could be incorrectly + quoted if being printed in contexts where they haven't yet been expanded. + +c. Fixed several memory leaks. + +d. Fixed a bug that could potentially cause the terminal attributes to be + set incorrectly by a command run from a programmable completion. + +e. Fixed several potential buffer overflow issues in the word expansion code. + +2. Changes to Readline + +3. New Features in Bash + +4. New Features in Readline + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-rc2, and +the previous version, bash-4.4-beta2. + +1. Changes to Bash + +a. Fixed an out-of-bounds read in the redirection operator completion code. + +b. Fixed execution context so `until continue' doesn't disable execution for + subsequent commands. + +c. Fixed trap handling code so traps don't inherit a command's temporary + environment. + +d. Fixed a bug that resulted in incorrect line numbers when a function is + defined as part of another function's execution. + +e. Fixed a bug in the expansion of ${a[@]} in contexts where word splitting + is not performed and $IFS is not the default. + +f. Fixed a bug that caused ''"$@" to not expand to an empty argument when + there are no positional parameters. + +g. Fixed a bug that caused a shell compiled without job control to use the + incorrect exit status for builtin commands preceded by a command executed + from the file system that causes the shell to call waitpid(). + +h. Improved word completion for quoted strings containing unterminated command + substitutions with embedded double quotes. + +2. Changes to Readline + +a. Fixed a bug that caused mode strings to be displayed incorrectly if the + prompt was shorter than the mode string. + +3. New Features in Bash + +a. Using ${a[@]} or ${a[*]} with an array without any assigned elements when + the nounset option is enabled no longer throws an unbound variable error. + +4. New Features in Readline + +a. New application-callable function: rl_pending_signal(): returns the signal + number of any signal readline has caught but not yet handled. + +b. New application-settable variable: rl_persistent_signal_handlers: if set + to a non-zero value, readline will enable the readline-6.2 signal handler + behavior in callback mode: handlers are installed when + rl_callback_handler_install is called and removed removed when a complete + line has been read. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-beta2, and +the previous version, bash-4.4-rc1. + +1. Changes to Bash + +a. Fixed a memory leak when processing ${!var[@]}. + +b. Fixed a bug that caused subshells to free trap strings associated with + inherited signals. + +c. Inheriting BASHOPTS from the environment now works to force actions + associated with enabling an option, instead of just marking the option + as enabled. + +d. Fixed a bug that allowed assignments to BASH_CMDS when the shell was in + restricted mode. + +e. Fixed a bug caused by an accidental omission of part of the original patch + for EXECIGNORE. + +e. Prompt expansion now quotes the results of the \s, \h, and \H expansions. + +f. Fixed a bug that caused parsing errors in command substitutions with + consecutive case statements separated by newlines. + +g. Updated logic used to decide whether bash is running inside an emacs + terminal emulator to work with future emacs versions. + +h. Fixed two extended pattern matching bugs caused by premature short- + circuiting. + +i. Fixed a memory leak in the code that removes duplicate history entries. + +j. There are a number of bug fixes to coproc, mapfile, declare, unset, + and assignment statements that prevent nameref variables from creating + and unsetting variables with invalid names. + +k. Fixed a bug that caused variables to be inadvertently marked as both an + associative and an indexed array. + +l. Fixed a bug that caused `bash -c' to not run a trap specified in the + command string. + +j. There are a number of bug fixes to coproc, mapfile, declare, and assignment + statements that prevent nameref variables from overwriting or modifying + attributes of readonly variables. + +k. Fixed a bug that caused command substitution to attempt to set the + terminal's process group incorrectly. + +l. Fixed a bug that could cause prompt string expansion to display error + messages when the `nounset' shell option is set. + +m. Fixed a bug that caused "$@" to not expand to an empty string under the + circumstances when Posix says it should ("${@-${@-$@}}"). + +n. Fixed several bugs caused by referencing nameref variables whose values + are names of unset variables (or names that are valid for referencing + but not assignment), including creating variables in the temporary + environment. + +o. Function tracing and error tracing are disabled if --debugger is supplied + at startup but the shell can't find the debugger start file. + +p. Fixed a bug when IFS is used as the control variable in a for statement. + +q. Fixed a bug with SIGINT received by a command substitution in an interactive + shell. + +r. The checks for nameref variable self-references are more thorough. + +s. Fixed several bugs with multi-line aliases. + +t. Fixed `test' to handle the four-argument case where $1 == '(' and + $4 == ')'. + +u. Fixed a bug in the expansion of $* in the cases where word splitting is + not performed. + +v. Fixed a bug in execution of case statements where IFS includes the + pattern matching characters. + +2. Changes to Readline + +a. When refreshing the line as the result of a key sequence, Readline attempts + to redraw only the last line of a multiline prompt. + +b. Fixed an issue that caused completion of git commands to display + incorrectly when using colored-completion-prefix. + +c. Fixed several redisplay bugs having to do with multibyte characters and + invisible characters in prompt strings. + +3. New Features in Bash + +a. Value conversions (arithmetic expansions, case modification, etc.) now + happen when assigning elements of an array using compound assignment. + +b. There is a new option settable in config-top.h that makes multiple + directory arguments to `cd' a fatal error. + +c. Bash now uses mktemp() when creating internal temporary files; it produces + a warning at build time on many Linux systems. + +4. New Features in Readline + +a. The default binding for ^W in vi mode now uses word boundaries specified + by Posix (vi-unix-word-rubout is bindable command name). + +b. rl_clear_visible_line: new application-callable function; clears all + screen lines occupied by the current visible readline line. + +c. rl_tty_set_echoing: application-callable function that controls whether + or not readline thinks it is echoing terminal output. + +d. Handle >| and strings of digits preceding and following redirection + specifications as single tokens when tokenizing the line for history + expansion. + +e. Fixed a bug with displaying completions when the prefix display length + is greater than the length of the completions to be displayed. + +f. The :p history modifier now applies to the entire line, so any expansion + specifying :p causes the line to be printed instead of expanded. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-rc1, and +the previous version, bash-4.4-beta. + +1. Changes to Bash + +a. Fixed several problems with bash completion not special-casing bash syntax + constructs. + +b. Fixed a bug that caused the mapfile builtin to not create array variables + when a variable of the same name appears in the temporary environment. + +c. Fixed a bug that caused prompt expansion to loop when PS1 contained a + syntax error. + +d. Fixed a bug that caused the ${array[@]@A} expansion to split the results + even when double-quoted. + +e. There is a new implementation of the code that saves the last CHILD_MAX + exited background pids so their status can be queried later. + +f. Bash-4.4 can now be configured and built on very old versions of Solaris 2. + +g. Fixed problems with --help support for several builtins. + +h. Fixed values added to BASH_SOURCE and BASH_LINENO for functions inherited + from the environment. + +i. Fixed a bug that caused background processes run from non-interactive shells + with job control enabled to place the terminal in the wrong process group + under certain circumstances. + +j. Fixed a bug that caused `fc' to return an incorrect exit status when + executing commands from the history list. + +k. Fixed a bug that caused the shell to exit when a process substitution + received a SIGINT when run in certain terminal emulators. + +l. EXECIGNORE now honors the setting of `extglob' when attempting to match + executable names. + +m. Fixed a bug where `return' used the wrong exit status when executed in a + DEBUG trap. + +n. Fixed a bug that caused a command containing a here-document and an escaped + newline to be stored in the history list incorrectly. + +o. Fixed a bug that caused set -e to be honored in cases of builtins invoking + other builtins when it should be ignored. + +p. Fixed a bug that caused `readonly' and `export' to create local array + variables when used within shell functions. + +q. Fixed a bug that allowed subshells begun to execute process substitutions + to have access to the command's temporary environment. + +r. Fixed a bug that could cause the shell to dump core when receiving a + SIGCHLD for which a trap has been set while running in posix mode. + +s. Fixed a bug that caused bash to not restore BASH_ARGC, BASH_ARGV, + BASH_SOURCE, BASH_LINENO, and FUNCNAME if the shell received a SIGINT + while reading commands from a file while executing `.'. + +t. Fixed a bug that caused the `-o history' option to have no effect when + supplied on the command line when starting a new shell. + +u. Fixed a bug that caused history expansions occurring in command + substitutions to not be performed. + +v. Fixed a bug that caused `eval' run in a non-interactive shell to disable + history expansion for the remainder of the shell script, even if the script + had previously enabled it. + +w. Fixed a bug that caused "$@" to not expand to multiple words when IFS is set + to the empty string. + +x. Fixed a bug that caused process and command substitution to inherit output + buffered in the stdio library but not written. + +y. Fixed a bug that caused a terminating signal received during `echo' to run + an exit trap in a signal handler context. + +z. Fixed a bug that caused a builtin command containing a process substitution + to return the wrong exit status. + +aa. Fixed a bug that caused `()' subshells with piped input to incorrectly + redirect the standard input of some of the commands in the subshell from + /dev/null. + +bb. The history builtin now uses more descriptive error messages for missing or + invalid timestamps. + +2. Changes to Readline + +a. The history file writing functions only attempt to create and use a backup + history file if the history file exists and is a regular file. + +b. Fixed an out-of-bounds read in readline's internal tilde expansion + interface. + +c. Fixed several redisplay bugs with prompt strings containing multibyte + and non-visible characters whose physical length is longer than the screen + width. + +d. Fixed a redisplay bug with prompt strings containing invisible characters + whose physical length exceeds the screen width and using incremental search. + +e. Readline prints more descriptive error messages when it encounters errors + while reading an inputrc file. + +f. Fixed a bug in the character insertion code that attempts to optimize + typeahead when it reads a character that is not bound to self-insert and + resets the key sequence state. + +3. New Features in Bash + +a. BASH_COMPAT and FUNCNEST can be inherited and set from the shell's initial + environment. + +b. inherit_errexit: a new `shopt' option that, when set, causes command + substitutions to inherit the -e option. By default, those subshells disable + -e. It's enabled as part of turning on posix mode. + +c. New prompt string: PS0. Expanded and displayed by interactive shells after + reading a complete command but before executing it. + +d. Interactive shells now behave as if SIGTSTP/SIGTTIN/SIGTTOU are set to + SIG_DFL when the shell is started, so they are set to SIG_DFL in child + processes. + +e. Posix-mode shells now allow double quotes to quote the history expansion + character. + +f. OLDPWD can be inherited from the environment if it names a directory. + +g. Shells running as root no longer inherit PS4 from the environment, closing + a security hole involving PS4 expansion performing command substitution. + +h. If executing an implicit `cd' when the `autocd' option is set, bash will + now invoke a function named `cd' if one exists before executing the `cd' + builtin. + +4. New Features in Readline + +a. If an incremental search string has its last character removed with DEL, + the resulting empty search string no longer matches the previous line. + +b. If readline reads a history file that begins with `#' (or the value of + the history comment character) and has enabled history timestamps, the + history entries are assumed to be delimited by timestamps. This allows + multi-line history entries. + +c. Readline now throws an error if it parses a key binding without a + terminating `:' or whitespace. + +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-beta, and +the previous version, bash-4.4-alpha. + +1. Changes to Bash + +a. Fixed two bugs that caused out-of-bounds reads when skipping over assignment + statements while finding the word on which to perform programmable + completion. + +b. Fixed a memory leak in programmable completion. + +c. Fixed a bug that could cause the shell to crash when interrupting the + wait builtin. + +d. Fixed a bug that caused ${!vvv@} to be interpreted as introducing the new + `@' operator. + +e. Fixed a bug that caused the && and || operators to be incorrectly optimized. + +f. The shell now undoes redirections before exiting the shell when the `-e' + option is enabled, and a shell function fails. + +g. History expansion now skips over the history expansion character in command + and process substitution. + +h. Fixed a bug that caused stray '\001' characters to be added to the output + of `declare -p'. + +i. Fixed a memory leak when processing declare commands that perform compound + array assignments. + +j. Fixed a bug that could cause the shell to crash when reading input from a + file and the limit on open file descriptors is high. + +k. Fixed a bug that caused the ERR and RETURN traps to be unset if they were + set in a shell function but unset previously. + +l. Fixed a bug that caused several signals to be ignored if `exec' failed in + an interactive shell. + +m. A posix-mode non-interactive shell now considers a parameter expansion error + to be a fatal error. + +n. The `time' command now prints timing statistics for failed commands when + the -e option is enabled. + +o. Fixed a bug that caused the shell to crash when attempting to indirectly + expand a shell variable with an invalid name. + +p. Fixed a bug that caused the shell to crash when running a trap containing + a process substitution. + +q. Bash now prints the keyword `function' before a function with the same name + as a reserved word when using `declare -f' to avoid parse errors when + reusing the output as input. + +r. Fixed a bug that caused the shell to crash when using declare -g to attempt + to redefine an existing global indexed array variable as an associative + array. + +s. Fixed a memory leak that occurred when interrupting brace expansions + generating a sequence. + +t. Fixed a bug that resulted in alias expansion in redirections. + +u. The `declare -a' and `declare -A' commands now print fewer warnings when + attempting to create and initialize an array at the same time, but + relying on word expansions to construct the compound assignment. + +v. The `help' builtin now behaves better in locales where each wide + character occupies more than one display column. + +w. The `read' builtin no longer has a possible race condition when a timeout + occurs. + +x. Fixed several expansion problems encountered when IFS="'". + +y. Fixed a problem with the expansion of $'\c?'. + +z. Bash no longer splits the expansion of here-strings, as the documentation + has always said. + +aa. Bash now puts `s' in the value of $- if the shell is reading from standard + input, as Posix requires. + +bb. Fixed a bug that caused the shell to crash if invoked with a NULL + environment. + +cc. The shell now only trusts an inherited value for $PWD if it begins with a + `/'. + +dd. Fixed a memory leak when creating local array variables and assigning to + them using compound assignment with the `declare' builtin. + +ee. Fixed a bug that could cause the shell to crash when processing nested here + documents inside a command substitution. + +ff. Array keys and values are now displayed using $'...' quoting where + appropriate. + +gg. Fixed a bug that could cause the shell to crash if the replacement string + in pattern substitution was NULL. + +hh. Fixed a bug that could cause the shell to crash if a command substitution + contained a non-fatal syntax error. + +ii. Fixed a bug that could cause the shell to crash if variable indirection + resulted in a NULL variable. + +jj. Fixed a bug that could cause the shell to crash if a long string contained + multiple unterminated parameter expansion constructs. + +kk. Improved the code that acts on SIGINT received while waiting for a child + process only if the child exits due to SIGINT. + +ll. $BASH_SUBSHELL now has more consistent values in asynchronous simple + commands. + +2. Changes to Readline + +a. Colored completion prefixes are now displayed using a different color, less + likely to collide with files. + +b. Fixed a bug that caused vi-mode character search to misbehave when + running in callback mode. + +c. Fixed a bug that caused output to be delayed when input is coming from a + macro in vi-mode. + +d. Fixed a bug that caused the vi-mode `.' command to misbehave when redoing + a multi-key key sequence via a macro. + +e. Fixed a bug that caused problems with applications that supply their own + input function when performing completion. + +f. When read returns -1/EIO when attempting to read a key, return an error + instead of line termination back to the caller. + +g. Updated tty auditing feature based on patch from Red Hat. + +h. Fixed a bug that could cause the history library to crash on overflows + introduced by malicious editing of timestamps in the history file. + +3. New Features in Bash + +a. `make install' now installs the example loadable builtins and a set of + bash headers to use when developing new loadable builtins. + +b. `enable -f' now attempts to call functions named BUILTIN_builtin_load when + loading BUILTIN, and BUILTIN_builtin_unload when deleting it. This allows + loadable builtins to run initialization and cleanup code. + +c. There is a new BASH_LOADABLES_PATH variable containing a list of directories + where the `enable -f' command looks for shared objects containing loadable + builtins. + +d. The `complete_fullquote' option to `shopt' changes filename completion to + quote all shell metacharacters in filenames and directory names. + +e. The `kill' builtin now has a `-L' option, equivalent to `-l', for + compatibility with Linux standalone versions of kill. + +4. New Features in Readline +------------------------------------------------------------------------------ +This document details the changes between this version, bash-4.4-alpha, and +the previous version, bash-4.3-release. + +1. Changes to Bash + +a. A bug that caused pipelines to be corrupted while running the DEBUG trap + was fixed. + +b. A bug that accidentally omitted the `-R' unary operator from `test' was + fixed. + +c. A bug that could cause the shell to not restore the terminal's process + group on shell exit was fixed. + +d. Several changes were made to programmable completion to accommodate + assumptions made by the bash-completion package. + +e. Bash no longer inhibits C-style escape processing ($'...') while performing + pattern substitution word expansions. + +f. Fixed a bug that caused `return' executed from a trap handler to use the + wrong return status when one was not supplied as an argument. + +g. In Posix mode, defining a function with the same name as a special + builtin is now an error, fatal only when the shell is not interactive. + +h. Fixed a bug that caused compound array assignments to discard unset or null + variables used as subscripts, thereby making it appear as if the index was + not present. + +i. Fixed a bug that caused extended glob patterns to incorrectly match + filenames with a leading `.'. + +j. Fixed a bug involving sign extension when reallocating the input line + after a history expansion, causing segmentation faults. + +k. Bash now does a better job at identifying syntax errors during word + completion and tailoring completion appropriately. + +l. Bash now uses the current locale's decimal point in comamnd timing output. + +m. Fixed a bug that caused segmentation faults while reading here documents if + PS2 contains a command substitution. + +n. There are several changes to how $@ is expanded when unquoted but in a + context where word splitting is not performed (e.g., on the rhs of an + assignment or in a conditional command). + +o. Bash now quotes command hash table entries that contain shell metacharacters + when displaying hash table contents. + +p. Fixed a potential file descriptor leak when dup2() fails while performing a + redirection. + +q. Fixed a bug that caused directory names evaluated during word completion to + be dequoted twice. + +r. Fixed several bugs which could result in indirect variable expansion and + namerefs creating variables with invalid names or referencing variables + set to the empty string. + +s. Fixed a bug that caused bash to not expand $0 in word expansions where it + should. + +t. Fixed a bug that caused bash to perform process substitution if <( + appeared inside an arithmetic context. + +u. Fixed a bug in extglob pattern parsing that caused slashes in the pattern + to be confused as directory names. + +v. Fixed several bugs with treatment of invisible variables (variables with + attributes that are unset because they have never been assigned values). + +w. Fixed a bug that caused the `read' builtin to not clean up readline's + state when using the -e and -t options together and the read timed out. + +x. Fixed a bug that caused the shell to exit with the wrong (but non-zero) + value if a command was not found or was not executable. + +y. Fixed a bug that caused the `time' reserved word to not be recognized as + such in all contexts where it should have been. + +z. Fixed a bug that caused the shell to close process subsitution file + descriptors when executing a script without the `#!' leading line. + +aa. Fixed a typo that caused the `compat42' shell option to set the wrong + compatibility level. + +bb. The shell now handles process substitution commands with embedded + parentheses the same way as it does when parsing command substitution. + +cc. Fixed a bug that caused nested pipelines and the `lastpipe' shell option + to produce core dumps. + +dd. Fixed a bug that caused patterns containing `*' to match pathnames in cases + where slashes must be matched explicitly. + +ee. Fixed a problem with patterns containing `:' in colon-separated variables + like GLOBIGNORE. + +ff. Fixed a bug that caused indirect variable expansion using indexed arrays to + always use index 0. + +gg. Fixed a parsing problem that caused quoted newlines immediately following a + command substitution to be mishandled in certain cases. + +hh. Fixed a potential buffer overflow on systems without locale_charset or the + bash replacement. + +ii. Fixed a bug that caused background processes to modify the terminal's + process group under certain circumstances. + +jj. Asynchronous commands now always set $? to 0 and are not affected by + whether or not the command's exit status is being inverted. + +kk. Fixed a problem that caused a line ending with an escaped newline and + containingh a prior `eval' to be incorrectly parsed. + +ll. Fixed an issue with programmable completion and `!' in extglob patterns + used as arguments to `compgen -X'. + +mm. Word completion now treats the two-character token `>|' as requiring + filename expansion. + +nn. Bash no longer expands tildes in $PATH elements while in Posix mode. + +oo. Fixed a bug that caused bash to not clean up readline's state, including + the terminal settings, if it received a fatal signal while in a readline() + call (including `read -e' and `read -s'). + +pp. Fixed bug that caused importing shell functions from the environment to + execute additional commands following the function. + +qq. Fixed a bug that caused the parser to return a lookahead character pushed + back by a previous call, even when on another line. + +rr. Fixed a bug that caused many here-documents or many nested case statements + to overflow an internal stack. + +ss. Changed the way bash encodes exported functions for inclusion in the + environment to avoid name collisions with valid variable names and to + indicate that they are exported functions. + +tt. Fixed a bug that could result in an invalid memory access when processing + a here document delimited by end of file or end of string. + +uu. Fixed a bug that could cause an invalid memory access if a command was run + before initializing the job control framework. + +vv. When in Posix mode, bash prints shell function definitions as Posix + specifies them, without the leading `function' keyword. + +ww. The variable attribute display builtins no longer display variables with + invalid names that were imported from the environment. + +xx. Fixed a bug that could allow `break' or `continue' executed from shell + functions to affect loops running outside of the function. + +yy. Fixed a bug that could cause a restricted shell to attempt to import shell + functions from the environment. + +zz. The shell now allows double-quoted identifiers in arithmetic expressions. + +aaa. Fixed a bug that could allow scalar variables subscripted using [@] in + word expansions to be incorrectly quoted. + +bbb. The shell now makes sure to ignore SIGTSTP/SIGTTIN/SIGTTOU in child + processes if they were ignored at shell startup, even if job control is + in effect. + +ccc. Fixed a bug that could cause $* to be split on spaces when IFS is set to + the empty string. + +ddd. Posix says that expanding $* in a pattern context where the expansion is + double-quoted should not treat $* as if it were double quoted. + +eee. Bash now restores getopts' internal state between calls to getopts even if + a shell function declares a local copy of OPTIND. + +fff. Fixed a bug that could cause `history -r' or `history -n' to read identical + lines from the history file more than once. + +ggg. The commands executed by `bind -x' now redisplay at most the final line + of a multi-line prompt, and those commands may return 124 to indicate that + the entire prompt should be redrawn. + +hhh. Fixed a bug that could cause `mapfile' to create variables with invalid + names. + +iii. The shell only goes into debugging mode when --debugger is supplied if + the debugger initialization file is present. + +jjj. Fixed a bug that disallowed an assignment to (implicit) subscript 0 of an + existing array in a declare command that set the readonly attribute. + +kkk. Fixed a bug that inadvertently allowed assignments to FUNCNAME to disable + its special status. + +lll. Appending to an existing array variable using the compound assignment + syntax (var+=(aaa)) should not affect assignments to existing subscripts + appearing in the compound assignment. + +mmm. Fixed a bug that could cause the shell to crash when a variable with a + null value was passed in the temporary environment and the variable's + attributes are modified using `declare' while performing a redirection. + +nnn. Fixed a bug in printf so that a missing precision specifier after a `.' + is treated as 0. + +ooo. Fixed a bug that attempted to use the internal command timing to time + pipeline components if the pipeline elements are separated by newlines. + +ppp. Fixed a bug that caused `declare -al foo=(ONE TWO THREE)' to not lowercase + the values on assignment. + +qqq. Bash does a better job of determining whether or not files are executable + when running on Windows, since the X_OK flag to access(2) is not supported. + +rrr. Fixed a bug that caused some of the shell's internal traps (e.g., ERR) to + be interrupted (and leave incorrect state) by pending SIGINTs. + +sss. Fixed a bug in the bash interface to history expansion to avoid attempting + expansion if the history expansion character occurs in a command + substitution. + +ttt. Fixed a bug that caused the select command to crash if the REPLY variable + ends up empty (e.g., if it's made readonly) + +uuu. Bash handles backslash-quoting of multibyte characters better when quoting + output that is intended to be reused. + +vvv. System-specific changes for: Windows, Cygwin. + +www. Fixes for upper and lower-casing multibyte characters, some locales have + characters whose upper and lowercase versions have different numbers of + bytes. + +xxx. Fixed a bug that caused the ERR trap in a shell function to have the + wrong value for $LINENO. + +yyy. Fixed a bug that resulted in incorrect quoting of regexps for the =~ + operator when an open brace appears without a close brace. + +zzz. Fixed a bug in the array unset operation that caused it to attempt to + parse embedded single and double quotes. + +aaaa. Fixed a bug that caused $* to not expand with the first character of + $IFS as a separator in a context where word splitting will not take + place. + +bbbb. Fixed two bugs that could cause the shell to dereference a null pointer + while attempting to print an error message from arithmetic expansion. + +cccc. Fixed a bug that resulted in short-circuited evaluation when reading + commands from a string ending in an unquoted backslash, or when sourcing + a file that ends with an unquoted backslash. + +dddd. Fixed a bug that resulted in the no-fork optimization not cleaning up + any FIFOs created by process substitution. + +eeee. If the -T option is not set, allow the source builtin and shell functions + to set a DEBUG trap that persists after the sourced file or function + returns, instead of restoring the old (unset) value unconditionally. + +ffff. Fixed a bug that caused redirections to not be undone on some syntax + errors, e.g., when parsing a command substitution. + +gggg. Bash only adds asynchronous commands to the table of background pids + whose status it remembers, to avoid it growing too large during scripts + that create and reap large numbers of child processes. This means that + `wait' no longer works on synchronous jobs, but $? can be used to get + the exit status in those cases. + +hhhh. Bash now checks whether or not a shell script argument is a directory + before trying to open it; Posix says implementations may allow open(2) + on a directory. + +iiii. Fixed a bug that could cause the shell to set the terminal's process + group to a background process group when running as part of a pipeline. + +jjjj. Made a few changes to strings to avoid possible potential negative effects + caused by malicious translations. + +kkkk. Fixed a bug that caused the `unset' builtin to continue to treat its + arguments as functions after unsetting a function when invoked with no + options. + +llll. Fixed a bug that would not replace empty strings using pattern + substitution even if the pattern matched the empty string. + +mmmm. Fixed a bug with word completion that prevented some characters from + being backslash-quoted (backquote, dollar sign). + +nnnn. Fixed a bug that prevented a command from the history re-executed by the + `fc' builtin from setting verbose mode. + +oooo. Fixed a bug that caused the shell to not enable and disable function + tracing with changes to the `extdebug' shell option. + +pppp. Fixed a bug that caused assignments to nameref variables pointing to + unset variables with attributes but no values to create variables with + incorrect names. + +qqqq. Fixed a bug that caused `unset' on nameref variables (without -n) to + unset the wrong variable under certain circumstances. + +rrrr. Fixed a bug that caused close braces occurring in brace expansions within + command substitutions to incorrectly terminate parameter expansions. + +ssss. Fixed a bug that caused `command -p' to temporarily alter $PATH. + +tttt. Fixed a bug that caused interactive shells compiled without job control + to return incorrect status values for child processes when running a + single command that creates enough children to use the entire PID space. + +uuuu. `esac' should not be recognized as a reserved word when it appears as the + second or later pattern in a case statement pattern list. + +vvvv. Fixed a bug that caused the completion code to read past the end of the + readline line buffer while skipping assignment statements to find the + command name. + +wwww. Fixed a bug that caused case statements within loops contained in a + command substitution to be parsed incorrectly. + +xxxx. Fixed a bug that could cause SIGCHLD handling to be delayed after + running `wait' with no arguments and interrupting it with ^C without + a trap handler installed. + +2. Changes to Readline + +a. A bug that caused vi-mode `.' to be unable to redo `c', `d', and `y' + commands with modifiers was fixed. + +b. Fixed a bug that caused callback mode to dump core when reading a + multiple-key sequence (e.g., arrow keys). + +c. Fixed a bug that caused the redisplay code to erase some of the line when + using horizontal scrolling with incremental search. + +d. Readline's input handler now performs signal processing if read(2) is + interrupted by SIGALRM or SIGVTALRM. + +e. Fixed a problem with revert-all-at-newline freeing freed memory. + +f. Clarified the documentation for the history_quotes_inhibit_expansion + variable to note that it inhibits scanning for the history comment + character and that it only affects double-quoted strings. + +g. Fixed an off-by-one error in the prompt printed when performing searches. + +h. Use pselect(2), if available, to wait for input before calling read(2), so + a SIGWINCH can interrupt it, since it doesn't interrupt read(2). + +i. Some memory leaks caused by signals interrupting filename completion have + been fixed. + +j. Reading EOF twice on a non-empty line causes EOF to be returned, rather + than the partial line. This can cause partial lines to be executed on + SIGHUP, for example. + +k. Fixed a bug concerning deleting multibyte characters from the search + string while performing an incremental search. + +l. Fixed a bug with tilde expanding directory names in filename completion. + +m. Fixed a bug that did not allow binding sequences beginning with a `\'. + +n. Fixed a redisplay bug involving incorrect line wrapping when the prompt + contains a multibyte character in the last screen column. + +o. Fixed a bug that caused history expansion to disregard characters that are + documented to delimit a history event specifier without requiring `:'. + +p. Fixed a bug that could cause reading past the end of a string when reading + the value when binding the set of isearch terminators. + +q. Fixed a bug that caused readline commands that depend on knowing which + key invoked them to misbehave when dispatching key sequences that are + prefixes of other key bindings. + +r. Paren matching now works in vi insert mode. + +3. New Features in Bash + +a. There is now a settable configuration #define that will cause the shell + to exit if the shell is running setuid without the -p option and setuid + to the real uid fails. + +b. Command and process substitutions now turn off the `-v' option when + executing, as other shells seem to do. + +c. The default value for the `checkhash' shell option may now be set at + compile time with a #define. + +d. The `mapfile' builtin now has a -d option to use an arbitrary character + as the record delimiter, and a -t option to strip the delimiter as + supplied with -d. + +e. The maximum number of nested recursive calls to `eval' is now settable in + config-top.h; the default is no limit. + +f. The `-p' option to declare and similar builtins will display attributes for + named variables even when those variables have not been assigned values + (which are technically unset). + +g. The maximum number of nested recursive calls to `source' is now settable + in config-top.h; the default is no limit. + +h. All builtin commands recognize the `--help' option and print a usage + summary. + +i. Bash does not allow function names containing `/' and `=' to be exported. + +j. The `ulimit' builtin has new -k (kqueues) and -P (pseudoterminals) options. + +k. The shell now allows `time ; othercommand' to time null commands. + +l. There is a new `--enable-function-import' configuration option to allow + importing shell functions from the environment; import is enabled by + default. + +m. `printf -v var ""' will now set `var' to the empty string, as if `var=""' + had been executed. + +n. GLOBIGNORE, the pattern substitution word expansion, and programmable + completion match filtering now honor the value of the `nocasematch' option. + +o. There is a new ${parameter@spec} family of operators to transform the + value of `parameter'. + +p. Bash no longer attempts to perform compound assignment if a variable on the + rhs of an assignment statement argument to `declare' has the form of a + compound assignment (e.g., w='(word)' ; declare foo=$w); compound + assignments are accepted if the variable was already declared as an array, + but with a warning. + +q. The declare builtin no longer displays array variables using the compound + assignment syntax with quotes; that will generate warnings when re-used as + input, and isn't necessary. + +r. Executing the rhs of && and || will no longer cause the shell to fork if + it's not necessary. + +s. The `local' builtin takes a new argument: `-', which will cause it to save + the single-letter shell options and restore their previous values at + function return. + +t. `complete' and `compgen' have a new `-o nosort' option, which forces + readline to not sort the completion matches. + +u. Bash now allows waiting for the most recent process substitution, since it + appears as $!. + +v. The `unset' builtin now unsets a scalar variable if it is subscripted with + a `0', analogous to the ${var[0]} expansion. + +w. `set -i' is no longer valid, as in other shells. + +x. BASH_SUBSHELL is now updated for process substitution and group commands + in pipelines, and is available with the same value when running any exit + trap. + +y. Bash now checks $INSIDE_EMACS as well as $EMACS when deciding whether or + not bash is being run in a GNU Emacs shell window. + +z. Bash now treats SIGINT received when running a non-builtin command in a + loop the way it has traditionally treated running a builtin command: + running any trap handler and breaking out of the loop. + +aa. New variable: EXECIGNORE; a colon-separate list of patterns that will + cause matching filenames to be ignored when searching for commands. + +bb. Aliases whose value ends in a shell metacharacter now expand in a way to + allow them to be `pasted' to the next token, which can potentially change + the meaning of a command (e.g., turning `&' into `&&'). + +4. New Features in Readline + +a. The history truncation code now uses the same error recovery mechansim as + the history writing code, and restores the old version of the history file + on error. The error recovery mechanism handles symlinked history files. + +b. There is a new bindable variable, `enable-bracketed-paste', which enables + support for a terminal's bracketed paste mode. + +c. The editing mode indicators can now be strings and are user-settable + (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string' + variables). Mode strings can contain invisible character sequences. + Setting mode strings to null strings restores the defaults. + +d. Prompt expansion adds the mode string to the last line of a multi-line + prompt (one with embedded newlines). + +e. There is a new bindable variable, `colored-completion-prefix', which, if + set, causes the common prefix of a set of possible completions to be + displayed in color. + +f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs- + mode yank-pop. + +g. The redisplay code underwent several efficiency improvements for multibyte + locales. + +h. The insert-char function attempts to batch-insert all pending typeahead + that maps to self-insert, as long as it is coming from the terminal. + +i. rl_callback_sigcleanup: a new application function that can clean up and + unset any state set by readline's callback mode. Intended to be used + after a signal. + +------------------------------------------------------------------------------ This document details the changes between this version, bash-4.3-release, and the previous version, bash-4.3-rc2. @@ -769,7 +1802,7 @@ y. The {x} operators to the [[ command do not consider the current locale when comparing strings; they use ASCII ordering @@ -408,7 +430,7 @@ compat40 set compat41 set - interrupting a command list such as "a ; b ; c" causes the execution - of the entire list to be aborted (in versions before bash-4.1, + of the entire list to be aborted (in versions before bash-4.0, interrupting one command in a list caused the next to be executed) - when in posix mode, single quotes in the `word' portion of a double-quoted parameter expansion define a new quoting context and @@ -417,6 +439,18 @@ compat41 set compat42 set - the replacement string in double-quoted pattern substitution is not run through quote removal, as in previous versions + +compat43 set + - the shell does not print a warning message if an attempt is made to + use a quoted compound assignment as an argument to declare + (declare -a foo='(1 2)') + - word expansion errors are considered non-fatal errors that cause the + current command to fail, even in Posix mode + - when executing a shell function, the loop state (while/until/etc.) is + not reset, so `break' or `continue' in a shell function will break or + continue loops in the calling context. Bash-4.4 and later reset the + loop state to prevent this. + ------------------------------------------------------------------------------- Copying and distribution of this file, with or without modification, diff --git a/CWRU/changelog b/CWRU/changelog index 354720a..f37159d 100644 --- a/CWRU/changelog +++ b/CWRU/changelog @@ -5848,3 +5848,5834 @@ variables.c simple variable assignment would set a variable in the global context instead of a local context. Bug report from Geir Hauge + + 2/26 + ---- +[bash-4.3 released] + + 2/27 + ---- +aclocal.m4 + - broken wcwidth check: fix typo reported by David Michael + + + 2/28 + ---- +support/bashbug.sh + - add ${BUGADDR} to error message printed if sending mail fails + +trap.c + - _run_trap_internal: don't call {save,restore}_pipeline if running + DEBUG trap; run_debug_trap calls them itself. Fixes bug reported + by Moe Tunes + +test.c + - unary_test: fix 'R' case by using find_variable_noref instead of + find_variable + - test_unop: add back missing 'R' case. Fixes bug reported by + NBaH + + 3/2 + --- +jobs.c + - end_job_control: if job control is active, we changed the terminal's + process group, so make sure we restore it. Fixes bug reported by + Eduardo A. Bustamante López + + 3/7 + --- +pcomplete.c + - pcomp_curtxt: new variable, holds the original text to be completed + as passed to the programmable completion code + - pcomp_filename_completion_function: if we are running compgen + (presumably in a shell function completion) and performing readline + completion, check the word being completed. If it's not empty, but + the original word passed to the programmable completion code is an + empty string (""), call a dequoting function if one is available. + This compensates for an assumption in bash-completion. Reported by + Albert Shih + +lib/readline/readline.c + - _rl_dispatch_subseq: when deciding whether or not to set vi mode's + idea of the last command, use whether or not the dispatching keymap + is vi_movement_keymap instead of the key sequence length. The `c', + `d', and `y' commands all take motion commands as `arguments' and + will produce key sequences longer than 1 character. The arrow keys + will end up dispatching out of a different keymap, so the test will + prevent arrow keys from setting the last command (the problem in + bash-4.2). Bug report from Daan van Rossum + +lib/readline/vi_mode.c + - _rl_vi_motion_command: convenience function to test whether a key is + a vi-mode motion command + +lib/readline/rlprivate.h + - _rl_vi_motion_command: extern declaration + +parse.y + - parse_matched_pair: we should not skip processing single quotes in + posix mode if dolbrace_state == DOLBRACE_QUOTE2 (pattern + substitution). Fixes bug reported by David Sines + + + 3/10 + ---- +lib/readline/readline.c + - _rl_dispatch_callback: treat a return value of -1 as the end of + a command dispatch sequence if the current context doesn't + indicate that we're reading a multi-key sequence + ((cxt->flags & KSEQ_SUBSEQ) == 0). Turn off the multikey flag + and free the context chain in this case. Fixes one bug reported + by Felix Yan to bug-readline list + - _rl_dispatch_callback: treat a return value of > 0 the same as 0 + and return from the function, since only values < 0 cause us to + simulate recursion. Rest of fix for bug tracked down by + Anatol Pomozov + + 3/11 + ---- + +execute_cmd.c + - execute_in_subshell: if a longjmp occurs, set result to + EXECUTION_FAILURE only if last_command_exit_value == EXECUTION_SUCCESS; + use value of last_command_exit_value otherwise. Fixes cosmetic + issue reported by Dennis Lambe Jr. + +doc/bash.1 + - shell-kill-word and shell-backward-kill-word should be documented + as unbound by default. Report from Oliver Hartley + + +trap.c + - run_pending_traps: save value of $? before running trap commands in + trap_saved_exit_value, like run_exit_trap + - _run_trap_internal: save value of $? before running trap commands in + trap_saved_exit_value, like run_exit_trap + +builtins/common.c + - get_exitstat: when running `return' in a trap action, and it is not + supplied an argument, use the saved exit status in + trap_saved_exit_value. Fixes Posix problem reported by + Eduardo A. Bustamante López + + 3/13 + ---- +lib/sh/shquote.c + - sh_contains_quotes: new function, returns true if a given string + contains any of the shell quote characters (single quote, double + quote, or backslash) + +externs.h + - sh_contains_quotes: new extern declaration + +pcomplete.c + - pcomp_filename_completion_function: more changes for the benefit of + bash-completion: if the argument is not the same as the original + argument passed to the programmable completion code (pcomp_curtxt), + and we are being run by compgen as part of a completion, dequote the + argument as bash-completion expects. Fix for the complete-word- + with-quoted-special-chars problem with bash-completion + + 3/17 + ---- +execute_cmd.c + - execute_intern_function: when in posix mode, make defining a function + with the same name as a special builtin a fatal error only when the + shell is not interactive. Interactive shells display an error + message and go on. From a discussion with Doug McIlroy + + + 3/18 + ---- +arrayfunc.c + - assign_compound_array_list: when using expand_assignment_string_to_string + to expand the value in a ( [x]=y ) compound assignment, make sure + that we convert 0x0 to "" when expanding [x]= so it doesn't appear as + if the index is unset. Fixes bug reported by Geir Hauge + + +builtins/common.c + - get_exitstat: update fix of 3/11 to allow the DEBUG trap to use the + current value of $? instead of the value it had before the trap + action was run. This is one reason the DEBUG trap exists, and + extended debug mode uses it. Might want to do this only in Posix + mode + +doc/{bash.1,bashref.texi} + - return: add language cribbed from Posix saying what happens when + return is run without an argument from a trap, including the DEBUG + trap exception + + 3/19 + ---- +lib/glob/gmisc.c + - extglob_pattern_p: make sure ?(patlist) is flagged as an extglob + pattern + +lib/glob/glob.c + - extglob_skipname: rewrite to handle patterns that begin but do not + end with an extglob pattern; change test for easy case and loop + through patterns accordingly. Fixes problem with matching filenames + with a leading dot reported by Stephane Chazelas + + - wextglob_skipname: make analogous changes + + 3/20 + ---- +Makefile.in + - pass -DDEBUG down to builds in readline and history directories + +lib/readline/util.c + - _rl_trace and related functions are now only compiled in if DEBUG + is defined + +lib/readline/Makefile.in + - substitute @DEBUG@ and pass -DDEBUG, if necessary, to compilation + in LOCAL_CFLAGS + + 3/21 + ---- +parse.y + - shell_getc: when checking whether or not to reallocate + shell_input_line to add trailing newline, don't try to subtract from + shell_input_line_size. size_t is unsigned, so if its value is less + than 3 (like, say, 2), size-3 is a very large number and the string + will not be reallocated. Use len+3 > size instead of len > size-3. + Fixes bug reported in + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1295467 + + 3/27 + ---- +lib/readline/display.c + - _rl_clean_up_for_exit: don't bother to call _rl_move_vert to whatever + readline thinks the last displayed line is if it's 0. Two reasons: a + minor optimization, and it protects against unwanted moving if this + function is called twice, as it is when ^C is pressed. Fixes bug + reported by Egmont Koblinger + + 3/28 + ---- +bashline.c + - invalid_completion: new function, used to identify attempts to + complete words that are syntax errors + - attempt_shell_completion: if invalid_completion returns true for a + word in a command position, punt on all completions. Fixes cosmetic + issue reported by Uwe Storbeck + - attempt_shell_completion: add clause so that in_command_position + remains set to 1 for an empty word following a command separator like + (, &, or | + +lib/readline/kill.c + - rl_yank, rl_yank_nth_arg_internal: don't return -1 from bindable + functions, return 1 instead + +lib/readline/text.c + - rl_rubout, _rl_rubout_char, rl_delete, rl_change_case, + rl_transpose_chars, rl_transpose_words, _rl_set_mark_at_pos, + rl_exchange_point_and_mark, _rl_insert_next, _rl_char_search, + _rl_char_search_internal: + don't return -1 from bindable functions, return 1 instead + +lib/readline/vi_mode.c + - rl_vi_end_word, rl_vi_rubout, rl_vi_delete, rl_vi_char_search, + rl_vi_match, _rl_vi_set_mark, _rl_vi_goto_mark: + don't return -1 from bindable functions, return 1 instead + +lib/readline/macro.c + - rl_start_kbd_macro, rl_end_kbd_macro: + don't return -1 from bindable functions, return 1 instead + +builtins/setattr.def + - set_var_attribute: honor setting of no_invisible_vars when setting + att_invisible on a variable + - include "../flags.h" for no_invisible_vars + +builtins/declare.def + - declare_internal: honor setting of no_invisible_vars when setting + att_invisible on a variable + - include "../flags.h" for no_invisible_vars + +Makefile.in,builtins/Makefile.in + - make sure declare.o and setattr.o depend on flags.h + +execute_cmd.c + - decpoint: new function, returns locale's decimal point or `.' default + - mkfmt: use decpoint() to get decimal point instead of unconditionally + using `.'. Fixes bug reported by Andrey Tataranovich + in debian bug 741669 + + 4/10 + ---- +lib/readline/rltypedefs.h + - add back old Function/VFunction/etc typedefs, since other packages + (python, samba) use them. Mark as deprecated using gcc and clang + attributes. Report and fix from Max Horn + + 4/14 + ---- +jobs.c + - run_sigchld_trap: unwind-protect value of this_shell_builtin, since + it matters in some cases whether or not we are running `wait' or + `eval'. Fixes bug reported by Eduardo A. Bustamante López + + + 4/18 + ---- +shell.h + - sh_parser_state_t: add `need_here_doc' flags member, since + xparse_dolparen (via parse_command) sets it to 0 + +parse.y + - gather_here_documents: make sure need_here_doc is > 0, since we + don't want to just decrement it forever if it ends up < 0. Partial + fix for bug reported by Jared Yanovich + - {save,restore}_parser_state: save and restore need_here_doc flag. + Rest of fix for bug reported by Jared Yanovich + + 4/19 + ---- +subst.c + - cond_expand_word: since we are not supposed to be performing word + splitting here, set expand_no_split_dollar_star to 1 in addition to + setting W_NOSPLIT2 + - expand_word_internal: if we have a case where we have an unquoted + $@ but we are in a case where we don't want to split (W_NOSPLIT2), + make sure we return a list consisting of a single word with the + arguments separated by spaces and don't do word splitting. Fixes + bug reported by Greg Wooledge from an IRC + discussion + +builtins/hash.def + - print_portable_hash_info: single-quote pathnames and hashed filenames + that contain shell metacharacters. Fixes bug reported by + in debian bash bug #739853 + + 4/20 + ---- +lib/readline/display.c + - When using horizontal scrolling, the redisplay code erases too much + of the line containing successful results, so make sure we only + erase to the end of the line after making sure we move the cursor + to the end. Fixes bug reported by + + 4/23 + ---- +{bashhist,bashline}.c +builtins{bind,help,type}.def +lib/glob/glob.c, lib/intl/{loadmsgcat,localealias}.c,lib/sh/mktime.c + - fixes to memory leaks uncovered by coverity scan + + 4/24 + ---- +{bashhist,subst,redir,assoc,jobs,array,trap}.c +lib/intl/l10flist.c +builtins/complete.def + - fixes to memory leaks and other resource usage problems uncovered by + coverity scan + +redir.c + - do_redirection_internal: if dup2 fails (presumably because of a + resource limit), close the file descriptor we opened before returning + error + + 4/25 + ---- +config-top.h + - DEFAULT_BASHRC: new define with the name of the default shell + startup file + +bashline.c + - bash_directory_completion_matches: don't dequote the directory name. + If rl_completion_found_quote is non-zero, readline will dequote the + filename itself. Fixes bug reported by Clark Wang + + + 4/27 + ---- +subst.c + - parameter_brace_expand_rhs: if parameter_brace_find_indir returns + NULL or "", or if it returns something that is not a valid identifier, + report an error and return &expand_wdesc_error so the error can + propagate up. Fixes bug reported by Andre Holzhey + + + 4/29 + ---- +subst.c + - parameter_brace_substring: don't short-circuit right away if the + value is NULL but we are looking at the positional parameters. Part + of fix for bug reported by Pierre Gaston + - pos_params: if there are no positional parameters, only short-circuit + if we are looking for $1 and above. Rest of fix for bug reported + by Pierre Gaston + +subst.h + - SD_NOPROCSUB: new flag for skip_to_delim, means to not allow any + process subsitutions (should not have overloaded SD_NOSKIPCMD) + +subst.c + - skip_to_delim: honor SD_NOPROCSUB flag + +make_cmd.c + - make_arith_for_expr: set W_NOPROCSUB flag in the created word + - make_arith_for_command: set SD_NOPROCSUB in the flags argument to + skip_to_delim so we don't treat <( or >( as a process substitution + (we won't evaluate them in eval_arith_for_expr anyway). Fixes + bug reported by Pierre Gaston + + 5/1 + --- +lib/glob/gmisc.c + - glob_dirscan: new function, takes a pattern and a directory separator + argument and advances the pattern to the last occurrence of the + separator. Like strrchr, but understands extended glob patterns and + uses glob_patscan to skip over them + +lib/glob/glob.c + - extglob_skipname: if the extended globbing pattern is invalid, don't + skip the name + - glob_filename: if there is a slash in the pattern to be matched, and + extglob is enabled, use glob_dirscan to find the real last occurrence + of `/' to avoid being confused by slashes in extglob patterns. Fix + for bug reported by Pierre Gaston + + 5/6 + --- +variables.c + - make_local_variable: only set the att_invisible attribute if + no_invisible_vars isn't set + - find_variable_for_assignment: new function, intended to be called by + code that eventually wants to assign a value to the variable; will not + skip invisible variables; currently identical to find_variable + - find_variable_no_invisible: new function, finds the first visible + instance of variable with a given name in the variable context chain; + eventually will be used to replace find_variable; separate right now + for testing + +variables.h + - find_variable_for_assignment: extern declaration + - find_variable_no_invisible: extern declaration + + 5/7 + --- +variables.c + - make_local_variable: don't clear `invisible' attribute if we are + returning an existing local variable at the right context. Let the + upper layers do that. Fixes bug reported by Dan Douglas + + + 5/8 + --- +lib/readline/input.c + - rl_getc: call RL_CHECK_SIGNALS if a read(2) is interrupted (-1/EINTR) + by SIGALRM or SIGVTALRM (placeholder for non-keyboard-generated + signals of interest) + +builtins/read.def + - edit_line: call bashline_set_event_hook and + bashline_reset_event_hook around call to readline(), so the right + signal handling happens + - read_builtin: make sure we add an unwind_protect call to + bashline_reset_event_hook. These changes fix bug reported in + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476 + +bashline.c + - bash_event_hook: make sure we clean up the readline state by calling + rl_cleanup_after_signal if sigalrm_seen is non-zero. The read builtin + sets this when it times out + + 5/12 + ---- +doc/{bash.1,bashref.texi} + - clarify language to make it clear that changing attributes of a + nameref variable (e.g., export), actually changes the attributes of + the referenced variable. Fixes omission noted by Jeff Haemer + + +arrayfunc.c + - bind_array_var_internal: make sure ENTRY no longer has invisible + attribute before returning. Fixes bug reported by Geir Hauge + + + 5/22 + ---- +execute_cmd.c + - shell_execve: if execve fails and we return 127 or 126, make sure to + set last_command_exit_value if a call to file_error or report_error + causes the shell to exit. This ensures that the shell exits with + the right value. + + 6/6 + --- +shell.c + - drop_priv_mode: print an error message on setuid() failure, optionally + exit if errno == EAGAIN, as it can be on Linux when RLIMIT_NPROC for + the target user is exceeded. + +config-top.h + - EXIT_ON_SETUID_FAILURE: new settable define, will cause the shell to + exit if setuid fails with errno == EAGAIN + + 6/10 + ---- +parse.y + - time_command_acceptable: fix so time is accepted everywhere the + grammar is looking for a `compound_list'. Fixes bug reported by + Dale Worley + + 6/12 + ---- +subst.c + - clear_fifo_list: new function, clears FDs associated with open pipes + in current FIFO list without closing the file descriptors. Can + possibly be used when shell_execve fails and the shell jumps back + to top_level and we don't want the shell to close the open FIFOs + each time through the read-execute loop. Bug reported by Harald + Koenig + + + 6/16 + ---- +builtins/shopt.def + - compat42: make sure the `compat42' option sets the correct variable + for compatibility level. Fixes bug reported by Ondrej Oprala + + +support/bashbug.sh + - fix typo when echoing $USAGE. Report from Shantanu Kulkarni + + +execute_cmd.c + - shell_execve: before longjmp back to subshell_top_level, clear out the + FIFO fd list by calling clear_fifo_list so the FDs (which we inherited + from our parent) aren't closed every time through the read-eval loop. + Fix for bug reported by Harald Koenig + + 6/18 + ---- +subst.c + - extract_process_subst: add additional argument: xflags, allow callers to + pass flags like extract_command_subst + - extract_process_subst: call xparse_dolparen like command substitution + to avoid problems when parsing commands constructs with embedded open + parens. Fixes bug reported by Tim Friske + +subst.h + - extract_process_subst: modified prototype for extern declaration + + 6/19 + ---- +execute_cmd.c + - execute_pipeline: if running with lastpipe enabled, make sure that we + check whether or not the job id is valid using INVALID_JOB before + calling job_exit_status. the jobs list can get frozen and unfrozen in + the presence of nested pipelines and loops and wait_for can clear a + job table entry. Fixes bug reported by + +jobs.c + - freeze_jobs_list: now returns old value of jobs_list_frozen; unused at + current time + +jobs.h + - freeze_jobs_list: change return value + + 6/20 + ---- +lib/glob/smatch.c + - MEMCHR: single-byte and wide character defines (memchr/wmemchr) + +lib/glob/sm_loop.c + - GMATCH: when the wildcards are the last element of the pattern, make + sure they do not match a string containing a `/' if FNM_PATHNAME is + set in FLAGS + - GMATCH: when recursively calling GMATCH after we see a `*', don't + try to consume the rest of the pattern with `*' if FNM_PATHNAME is + set in FLAGS, just consume up to the next slash and then see whether + or not the rest of the pattern matches. Fixes bug reported by Ian + Kelling + - GMATCH: when processing `*' in the pattern, after skipping consecutive + wildcards, if we hit a literal `/' in the pattern and we're looking + for a pathname, skip characters in the string until we find a `/' + (no slash means the match fails), and try to match the rest of the + pattern against the portion of the string after the next `/'. Picked + up from gnulib/glibc + +pathexp.c + - split_ignorespec: since split_ignorespec gets globbing patterns, + make sure we call skip_to_delim with the SD_GLOB flag so delimiters + that occur within bracket expressions don't delimit the pattern. + Fixes problem with [[:digit:]] in GLOBIGNORE reported by Ian Kelling + + +unwind_prot.c + - unwind_protect_tag_on_stack: new function, returns 1 if unwind-protect + frame corresponding to `tag' argument is on unwind-protect stack + +unwind_prot.h + - unwind_protect_tag_on_stack: extern declaration + + 6/30 + ---- +lib/readline/misc.c + - _rl_revert_all_lines: set entry->data to 0 after assigning it to + rl_undo_list to avoid pointer aliasing problems that would result + in entry->line being freed by an undo. The subsequent free would + be a double free. Report and fix from Jared Yanovich + + +subst.c + - command_substitute: other shells do not appear to inherit the -v + option when reading and executing command substitutions. Reported + by Ondrej Oprala + + 7/1 + --- +config-top.h + - CHECKHASH_DEFAULT: new define that supplies the default value for + check_hashed_filenames (`checkhash' shopt option); still 0 by default + +findcmd.c + - check_hashed_filenames: initialize using CHECKHASH_DEFAULT + +lib/readline/histexpand.c + - history_expand: double quotes can inhibit recognition of the history + comment character if history_quotes_inhibit_expansion is non-zero + +lib/readline/doc/{history.3,hstech.texi} + - history_quotes_inhibit_expansion: expand definition to note that it + inhibits scanning for the history comment character as well; correct + typo to make it clear that it only works on double-quoted strings + +lib/sh/zgetline.c + - add new fourth argument: DELIM, allows delimiter to be something + other than newline (if DELIM != '\n', UNBUFFERED_READ should be + non-zero) + - UNBUFFERED_READ is now fifth argument + - check character against DELIM rather than strictly newline + +externs.h + - zgetline: change function prototype for extern declaration + +builtins/mapfile.def + - mapfile: change calling sequence for zgetline calls + - mapfile_builtin: new -d option: DELIM, like in read builtin + - mapfile_builtin: pass `delim' to mapfile() as new argument; default + to '\n' unless -d option supplied + - mapfile: take new DELIM argument, pass to zgetline + - mapfile: if DELIM != '\n', set unbuffered_read to 1 + +doc/{bash.1,bashref.texi} + - mapfile: document new `-d DELIM' option + + 7/5 + --- +lib/readline/histfile.c + - history_truncate_file: if there is an error writing the truncated + history list back to the history file, use the same strategy as + history_do_write: create a backup file, rename the history file to + the backup file, and restore the original history file from the + backup file name if the write or the close fails. Suggestion from + Chen Gang to bug-readline + +execute_cmd.c + - evalnest, evalnest_max: new variables establishing maximum number of + recursive `eval' calls; current max is 4096 + - execute_builtin: unwind-protect value of evalnest around calls to + eval builtin. Suggested by Oliver Morais + - {initialize_subshell,execute_subshell_builtin_or_function}: reset + evalnest to 0 in a subshell + +builtins/setattr.def + - show_name_attributes: show a variable's attributes even if it's + invisible (don't show any value since it has none). This means that + declare -p var will display VAR's attributes even when var marked + as invisible. Feature request from Peggy Russell + + - show_var_attributes: don't print assignment if array or assoc + attribute is set but variable marked as invisible + +tests/array.right + - special note: changed all declare -a output tests because the shell + will no longer print out values for invisible array variables. This + is a change, but one for correctness: + + declare -a foo='()' + and + declare -a foo + are not equivalent + + 7/22 + ---- +subst.c + - parameter_brace_expand: after calling parameter_brace_expand_indir, + turn off the W_ARRAYIND flag in the word it returns, because there + is no way for it to return the index that should be used, and the + rest of the function assumes that IND is valid if W_ARRAYIND is set. + Fixes bug reported by Corentin Peuvrel + + 8/2 + --- +parse.y + - read_token_word: if we read a character that will end a command + substitution, don't skip over quoted newlines when we read an + additional character to figure out whether it's a two-character + token. This lets the higher layers deal with quoted newlines after + the command substitution. Fixes bug reported by EmanueL Czirai + + + 8/11 + ---- +execute_cmd.c + - execute_pipeline: check whether lastpipe_jid corresponds to a valid + job before calling append_process, for the same reason as fix from + 6/19. Fixes bug reported by + + 8/12 + ---- +lib/sh/unicode.c + - stub_charset: use strncpy instead of strcpy because we are copying + into a local fixed-length buffer. Fixes vulnerability reported by + + +execute_cmd.c + - execute_pipeline: if we don't call append_process, call + wait_for_single_pid to get the status of `lastpid', since that will + check the status of already-reaped processes. Fixes spurious error + message about non-existent process from fix of 8/11 + + 8/15 + ---- +jobs.c + - running_in_background: new variable, keeps track of whether or not we + are running in the background (not perfect yet) + - initialize_job_control: even if we are not turning on job control, + get the terminal pgrp so we can use it later + - {set_job_control,initialize_job_control}: set running_in_background + to 1 if terminal pgrp != shell pgrp + - {stop_pipeline,make_child,wait_for}: if we are running in the + background, don't mess with the terminal's process group; assume that + the parent shell will do that. Fixes bug reported by Greg Wooledge + + +shell.c + - shell_reinitialize: reset running_in_background back to 0 + + 8/24 + ---- +execute_cmd.c + - {execute_connection,execute_command_internal}: make sure that + asynchronous commands always set $? to 0 and are not affected by the + command's exit status being inverted using `!'. Fixes bug reported + by Vincent Lefevre + +lib/readline/display.c + - rl_message: call vsnprintf with full msg_bufsiz, since it counts + one fewer than the buffer length passed as an argument. Bug report + and fix from Dylan Cali + + 8/26 + ---- +builtins/evalstring.c + - evalstring: if CURRENT_TOKEN == yacc_EOF, reset it to newline. This + is instead of calling reset_parser(); that might still be needed. + Fixes bug with eval and a subsequent statement ending with EOF + reported by + +pcomplete.c + - filter_stringlist: when extglob is on, a leading ! in the filter + pattern should be left alone when it introduces a !(pat) pattern; + otherwise it messes up the pattern. Fixes bug reported by David + Korn + + 8/27 + ---- +doc/{bash.1,bashref.texi} + - clarify the behavior of bash when given the -c option, since $0 is + technically not a positional parameter. Bug reported by Stephane + Chazelas + + 8/28 + ---- +lib/readline/history.c + - add_history: use history_max_entries (if history is stifled) or + DEFAULT_HISTORY_INITIAL_SIZE if not (new define, defaults to 502) + to size the initial allocation of the history array. Assumption + is that this will reduce the number of allocations + + 8/29 + ---- +execute_command.c: + - sourcenest, sourcenest_max: new variables used to track level of + sourced files and (maybe) one day catch infinite source recursion + - execute_builtin: if current source level exceeds sourcenest_max, + trigger an error and jump back to the top level + - {initialize_subshell,execute_subshell_builtin_or_function}: reset + sourcenest to 0 in a subshell + + 9/2 + --- +variables.c + - bind_variable: if a nameref expands to an array reference, make + sure that assign_array_element gets called (maybe even + recursively) instead of bind_variable_internal, so invalid variable + names (like arr[0]) don't get created. Fixes bug reported by + + + 9/3 + --- +execute_cmd.c + - evalnest_max,sourcenest_max: initialize from EVALNEST_MAX and + SOURCENEST_MAX, respectively. Feature suggested by + + +config-top.h + - define EVALNEST_MAX and SOURCENEST_MAX to 0 + + 9/6 + --- +bashline.c + - find_cmd_start: fix to (crudely) deal with >| token; even though + skip_to_delim finds `|' as a delimiter, we call it again and use + what the second call finds. Fixes bug reported by Dan Jacobson + + +findcmd.c + - find_in_path_element: if in posix mode, do not expand a literal + tilde in a $PATH element + +doc/bashref.texi + - add change to tilde expansion in $PATH elements to posix mode + description + +builtins/common.h + - ISHELP: new define for builtins that do their own option parsing + and don't use internal_getopt(); checks whether argument is --help + - CHECK_HELPOPT: convenience define to help builtins that do their + own option parsing to check for --help with one line of code + - CASE_HELPOPT: convenience define to help builtins that use + internal_getopt() check for --help with one line of code + +builtins/help.def + - builtin_help: new function, prints out --help output for current + builtin + +builtins/{kill,let,pushd}.def + - add CHECK_HELPOPT to builtins that use ISOPTION; call builtin_help + and return EX_USAGE (kill/let/pushd/popd/dirs) + +builtins/{caller,fg_bg}.def + - use CHECK_HELPOPT to recognize --help, since these builtins perform + checks that can cause them to return before calling no_options + (caller/fg/bg) + +builtins/{exit,return}.def + - use CHECK_HELPOPT to recognize --help before calling get_exitstat() + (return/exit/logout) + +builtins/{break,shift}.def + - use CHECK_HELPOPT to recognize --help before any other checks + (break/continue/shift) + +builtins/bashgetopt.h + - GETOPT_EOF: convenience define + - GETOPT_HELP: new define, to indicate internal_getopt saw --help + +builtins/bashgetopt.c + - internal_getopt: return GETOPT_HELP for --help + +builtins/common.c + - no_options: recognize --help, call builtin_help and return 2 + (builtin/eval/source/./times) + +builtins/command.def + - use CASE_HELPOPT() to handle --help after calling internal_getopt() + (command) + +builtins/{colon,echo,test}.def + - do not recognize --help (:/true/false/echo/test) + + 9/8 + --- +sig.c + - termsig_sighandler: if readline is active now, set the bashline event + hook. Old code just set it for interactive shells. Part of fix for + bug reported by + +bashline.c + - bash_event_hook: call rl_cleanup_after_signal if terminating_signal + is non-zero, since check_signals_and_traps() will cause the shell to + exit if it is and we want to clean up the readline state first. Rest + of fix for bug reported by + + 9/9 + --- +jobs.c + - waitchld: when running the wait builtin in posix mode, with a trap set + on SIGCHLD, use queue_sigchld_trap instead of trap_handler (SIGCHLD), + otherwise you will lose SIGCHLDs when children_exited > 1. Fixes bug + reported by + +builtins/read.def + - read_builtin: if we are changing the tty settings, call + initialize_terminating_signals so we have a chance to catch all + terminating signals and potentially clean up the terminal before + exiting + - read_builtin: tty_modified: new variable, set to 1 if we change the + terminal attributes and have to call ttyrestore() to restore them + - if one of the `reads' returns -1/EINTR due to a terminating signal, + and we have modified the terminal, call ttyrestore before calling + CHECK_TERMSIG + - ttyrestore: set tty_modified to 0 when called + + 9/10 + ---- +builtins/read.def + - termsave: now global to file so other functions can use it + - read_tty_cleanup: if tty_modified is non-zero, call ttycleanup to + restore old terminal settings and turn off tty_modified + +sig.c + - termsig_handler: call read_tty_cleanup if currently executing read + builtin; it does the right thing. Final piece of fix for bug reported + by Jan Rome + + 9/11 + ---- +general.c + - printable_filename: general function to return a printable + representation of a string (presumed to be a filename) + +general.h + - extern declaration for printable_filename + +execute_cmd.c + - execute_disk_command: use printable_filename + +builtins/{bind,cd,enable,hash,source}.def + - use printable_filename as appropriate when printing error messages. + From a suggestion by Vincent Lefevre + +builtins/bind.def + - use CASE_HELPOPT() to handle --help after calling internal_getopt() + (bind) + + 9/12 + ---- +builtins/common.h + - SEVAL_FUNCDEF: new flag for parse_and_execute; it means that we only + accept a single function definition command, as when we are importing + functions from the environment + - SEVAL_ONECMD: new flag for parse_and_execute; for future use + +builtins/evalstring.c + - parse_and_execute: if the SEVAL_FUNCDEF flag is set, disallow anything + but a function definition command + +variables.c + - initialize_shell_variables: don't allow functions with invalid names + to be imported from the environment, even though we still allow them + to be defined + - initialize_shell_variables: when importing function definitions from + the environment, call parse_and_execute with the SEVAL_FUNCDEF flag + to force the command to be just a function definition + +subst.c + - param_expand: when expanding a $name variable expansion, make sure that + the variable is visible and set before following the nameref chain + - param_expand: when expanding a $name variable expansion and following the + nameref chain, make sure the resulting variable is visible and set + before using it + + 9/13 + ---- +variables.c + - initialize_shell_variables: when importing function definitions from + environment, use SEVAL_ONECMD flag for parse_and_execute. Part of + CVE-2014-6271 + +builtins/evalstring.c + - parse_and_execute: if SEVAL_ONECMD flag set, return immediately after + calling execute_command_internal. Final piece for fix for bug + reported by Stephane Chazelas . Part of + CVE-2014-6271 + + 9/24 + ---- +parse.y + - reset_parser: reset eol_ungetc_lookahead to 0 here, since we don't want + shell_getc returning it on the next call. Fixes problem reported by + Tavis Ormandy and Michal Zalewski + . Potentially part of CVE-2014-6271; fix for + CVE-2014-7169 + + 9/25 + ---- +parse.y + - push_heredoc: new function, pushes a here-doc redirection onto + redir_stack handling overflow of redir_stack. Exits on overflow. + Original fix from Florian Weimer . Fix for + CVE-2014-7186 + - change straight assignments to redir_stack to call push_redir + - add one to size of word_lineno stack to avoid off-by-one error + below in read_token_word. Overflow just results in line numbers + being wrong. Fix for CVE-2014-7187 + + 9/27 + ---- +{execute_cmd,trap}.c + - changes to make minimal-config builds work again, mostly missing + #ifdefs for optional features + +builtins/common.c + - builtin_help: dummy version to be included if HELP_BUILTIN not + defined, for minimal-config builds + +variables.c + - initialize_shell_variables: incorporated patches from Florian + Weimer to change the strings bash looks + for when importing shell functions from the environment. It + adds a prefix (BASH_FUNC_) and a suffix (%%) to the name to + mark it as having been created by bash as an exported function. + Fix for remote attacks part of CVE-2014-6271 and CVE-2014-7169 + - mk_env_string: takes new argument, indicating whether we are + constructing a function + - mk_env_string: encodes function names as described above, so + initialize_shell_variables can find them + + 9/28 + ---- +copy_cmd.c + - copy_redirects: before calling savestring on here_doc_eof, make + sure it's not NULL (it could have been the result of a here + document delimited by EOF or EOS). Fixes bug reported by + Michal Zalewski . Fix for CVE-2014-6277 + +make_cmd.c + - make_redirection: initialize here_doc_eof member to NULL. Rest of + fix for CVE-2014-6277 + + 9/29 + ---- +parse.y + - current_input_line_state: return a sh_input_line_state_t containing + the current shell_input_line and its index and size variables + +shell.h + - current_input_line_state: extern declaration + +builtins/evalstring.c + - parse_and_execute: call reset_parser() before returning if + SEVAL_ONECMD set. Fixes bug reported by Michal Zalewski + and designated CVE-2014-6278 + - parse_and_execute: if we parse a function definition when + SEVAL_FUNCDEF is set, but don't consume the entire passed string, + throw an error, reset the parser, and return. Part of fix for + CVE-2014-6278 + - parse_and_execute: if parsing the shell function definition when + SEVAL_FUNCDEF is set transforms the function name (e.g., if it + begins with a newline or begins or ends with whitespace), throw + an error, reset the parser, and return. Fixes bug reported by + Eric Kobrin + + 10/2 + ---- +jobs.c + - bgp_prune: don't do anything if bgpids.npid == 0 or + bgpids.list == NULL. This can happen if something gets run before + the job control framework is initialized. Bug report from + + + 10/3 + ---- +parse.y + - xparse_dolparen: don't set token_to_read to newline after calling + parse_string() and cleaning up when the shell is not interactive. This + makes the parser think it's ok to read new commands even if it's not in + a state where that should be possible. Underlying fix for bug reported + by Michal Zalewski and designated CVE-6278 + - parser_remaining_input: new function, returns the portion of + shell_input_line that hasn't yet been read + - current_input_line_state: removed + +shell.h + - parser_remaining_input: extern declaration + - current_input_line_state: removed + +builtins/evalstring.c + - parse_and_execute: change code that checks whether parse_command has + consumed the entire passed string when SEVAL_FUNCDEF is used to use + parser_remaining_input instead of messing around with (new) + current_input_line_state. Part of fix for CVE-2014-6278 + +variables.c + - initialize_shell_variables: if we don't call parse_and_execute, free + the temporary string, since parse_and_execute won't. Report and fix + from Eric Kobrin + + 10/4 + ---- +print_cmd.c + - print_function_def: when in posix mode, print shell function + definitions as posix specifies them, without the leading + `function' keyword + +general.c + - exportable_function_name: return 1 if the passed string can be + added to the environment as an exported function name. Currently + prohibits function names containing `/' and `=' from being + exported + +general.h + - exportable_function_name: extern declaration + +builtins/setattr.def + - set_or_show_attributes: if exporting a function with export -f, + call exportable_function_name to determine whether the function + should be exported; don't export function if it returns 0 + + 10/7 + ---- +builtins/setattr.def + - set_or_show_attributes: don't show identifiers that are invisible + and imported from the environment, since that combination of + attributes means that the imported variable is not a valid shell + identifier. Report from Stephane Chazelas + + + 10/8 + ---- +shell.c + - shell_initialize: set new variable should_be_restricted, which + says whether or not the shell will be a restricted one based on the + shell name; use in calls to initialize_shell_variables (to inhibit + importing shell functions) and initialize_shell_options (to inhibit + parsing $SHELLOPTS) and initialize_bashopts (to inhibit parsing + $BASHOPTS). Report from + + 10/12 + ----- +execute_cmd.c + - execute_function: unwind-protect loop_level, set loop_level to 0 + when entering a function so break and continue in functions don't + break loops running outside of the function. Fix picked up from + dash via Herbert Xu + + 10/13 + ----- +doc/Makefile.in + - bashref.pdf: create using texi2dvi --pdf rather than postprocessing + the dvi file, so we have PDF bookmarks and links. Fix from + Siep Kroonenberg + + 10/14 + ----- +subst.h + - Q_ARITH: new quoting flag. Semantics are per Posix's spec for + arithmetic expansion: act as if string is quoted, but don't treat + double quotes specially (in this case, they will be removed by quote + removal) + - Q_ARRAYSUB: new quoting flag, indicates we are expanding an indexed + array subscript + +subst.c + - expand_arith_string: if we are not expanding the string, but we saw + a quote with Q_ARITH specified as one of quoting flags, perform + quote removal even if Q_DOUBLE_QUOTES is specified + - param_expand: change calls to expand_arith_string for $[ and $(( + cases to specify Q_ARITH. Now $(( "$x" )) and $(( "x" )) work if x + has a value that evaluates to a valid number, as Posix specifies + - expand_word_internal: add test for quoted&Q_ARITH to the tilde case, + so we continue to perform tilde expansion in arithmetic contexts + - expand_word_internal: if quoted&Q_ARITH, continue processing when we + see a `"', acting as if the double quote isn't present (already + Q_DOUBLE_QUOTED) + +arrayfunc.c + - array_expand_index: pass Q_DOUBLE_QUOTED|Q_ARITH|Q_ARRAYSUB as quoted + argument in call to expand_arith_string. This inhibits word + splitting (Q_DOUBLE_QUOTED) while discarding double quotes (Q_ARITH), + identical to the quote flags passed while expanding $(( )) and $[ ]. + Q_ARRAYSUB reserved for future use. Fixes problem reported by + Stephane Chazelas + + 10/16 + ----- +subst.c + - parameter_brace_expand_word: if the PF_ASSIGNRHS flag is set and we + are expanding what looks like an array subscripted with @ or *, + make sure the variable we're expanding is actually an array before + we add Q_DOUBLE_QUOTES to the flags. If we don't, things like + scalar[@] will remain quoted. Fixes ubuntu bug 1381567 + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1381567 + + 10/17 + ----- +{jobs,nojobs}.c + - get_original_tty_job_signals: get original signal dispostions for + SIGTSTP, SIGTTIN, SIGTTOU before we start manipulating them in + make_child + - default_tty_job_signals: make sure we set SIGTSTP, SIGTTIN, or + SIGTTOU to SIG_IGN if they were ignored at shell startup instead of + unconditionally setting them to SIG_DFL. Fixes bug reported by + idallen@idallen.ca + +jobs.h + - get_original_tty_job_signals: extern declaration + +trap.c + - initialize_traps: add call to get_original_tty_job_signals + + 10/22 + ----- +subst.c + - expand_string_for_rhs: when expanding in this context (rhs of a word + expansion or pattern removal), we don't perform word splitting, so + we don't want to split $* if IFS is empty. Fixes bug reported by + Stephane Chazelas + + 10/23 + ----- +subst.c + - param_expand: when expanding $* in a pattern context where the + expansion is quoted (Q_PATQUOTE), don't quote the expansion -- + the outer quotes don't make the characters in the expansion of + $* special. Posix interp 221. Reported by Stephane Chazelas + + + 10/28 + ----- +lib/readline/bind.c + - enable-bracketed-paste: new bindable variable, enables support for + a terminal's `bracketed paste mode'. Code contributed by + Daniel Colascione + +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - enable-bracketed-paste: add description + +lib/readline/{readline.c,rlprivate.h} + - _rl_enable_bracketed_paste: declarations + - #defines for use by bracketed paste implementation + +lib/readline/rltty.c + - rl_prep_terminal: send BRACK_PASTE_INIT string to terminal if we + are supposed to enable bracketed-paste mode; change terminal_prepped + to indicate we sent that string and need to clean up + - rl_deprep_terminal: if terminal_prepped indicates we sent the + bracketed-paste mode init string to the terminal, send the cleanup + string before restoring the terminal modes + +lib/readline/kill.c + - rl_bracketed_paste_begin: function to read bracketed paste until + BRACK_PASTE_SUFF; discard the suffix, and insert the rest of the + paste as a single (undoable) object. Bound to BRACK_PASTE_PREF + +lib/readline/funmap.c + - bracketed-paste-begin: new bindable command, executes + rl_bracketed_paste_begin + +lib/readline/readline.c + - bind_bracketed_paste_prefix: new function, sets up to recognize + the bracketed paste prefix sequence (BRACK_PASTE_PREF) in emacs + keymap and vi insertion keymap + - readline_initialize_everything: call bind_bracketed_paste_prefix + + 11/1 + ---- +builtins/ulimit.def + - RLIMIT_POSIXLOCKS: now synonym for RLIMIT_LOCKS + - -k: new option: RLIMIT_KQUEUES, max kqueues allocated for this + process + - -P: new option: RLIMIT_NPTS, max number of pseudoterminals available + to this process + +doc/{bash.1,bashref.texi} + - document `ulimit -k' option + - document `ulimit -P' option + +parse.y + - `timespec list_terminator' production: if the list terminator is `;' + set last_read_token to `;' to allow things like `time ; command' to + time null commands and not throw a syntax error. Patch from + Piotr Grzybowski + - `BANG list_terminator' production: do the same thing + +variables.c + - sv_optind: use find_shell_variable and get_variable_value so we can + have the variable's context in the case we need to do something + when we are restoring a previous variable context's value + +builtins/getopt.h + - sh_getopt_state_t: struct to save sh_getopt's internal state so we + can restore it around function calls in the event that we have a + local copy of OPTIND + +builtins/getopt.[ch] + - sh_getopt_{save,restore}_istate: new functions to save and restore + getopt's internal state + - sh_getopt_{alloc,dispose}_istate: new functions to allocate and + deallocate sh_getopt_istate_t objects + +execute_cmd.c + - maybe_restore_getopt_state: restore sh_getopt state after executing + function body iff the funtion declared a local copy of OPTIND + - execute_function: save sh_getopt state before executing function body + - execute_function: note in getopt_state->flags whether or not the + function declared a local copy of OPTIND; used by + maybe_restore_getopt_state + - execute_function: maybe restore sh_getopt state before returning via + call to maybe_restore_getopt_state. Fixes bugs with getopts and + state between calls reported in 2011 by Bernd Eggink + and in 2014 by Oyvind Hvidsten + + +configure.ac + - enable-function-import: new option, controls whether function imports + are included. Enabled by default. Patch from David Galos + + +config.h.in + - FUNCTION_IMPORT: define controlled by enable-function-import above + +variables.c + - initialize_shell_variables: include code to import function + definitions from the environment if FUNCTION_IMPORT is defined + +doc/bashref.texi + - --enable_function-import: document new configuration option + + 11/5 + ---- +lib/readline/history.c + - history_lines_read_from_file: new variable, set by read_history and + read_history_range to the actual number of lines read from the + history file. The value is valid immediately after a call to one + of those functions + - history_lines_written_to_file: new variable, set by write_history, + history_do_write, and history_truncate_file to the actual number of + lines written to the history file. The value is valid immediately + after a call to one of those functions + +variables.c + - sv_histsize: set history_lines_in_file after history_truncate_file() + only if hmax < history_lines_in_file (lines we've already read); a + cosmetic change only + +bashhist.c + - load_history: set history_lines_in_file after read_history() from + history_lines_read_from_file, since read_history reads all of the + lines from the history file even if it's more than $HISTSIZE + - maybe_save_shell_history: after calling write_history(), set + history_lines_in_file to history_lines_written_to_file, since we + can assume that we read everyhing we just wrote + +builtins/history.def + - history_builtin: after calling read_history (history -r), set the + new value of history_lines_in_file, for the same reason as above + - history_builtin: after calling read_history_range (history -n), set + history_lines_in_file from history_lines_read_from_file + + 11/6 + ---- +lib/readline/histfile.c + - history_truncate_file: since we move the old file to a backup copy + before truncating, make sure the new file is owned by the same uid + as the old + - history_do_write: use chown in the same way as history_truncate_file + + 11/12 + ----- +lib/readline/display.c + - expand_prompt: takes a new `flags' argument; only one flag defined + so far: PMT_MULTILINE + - expand_prompt: changed all callers to add new flags argument + - rl_expand_prompt, redraw_prompt: make sure to set PMT_MULTILINE in + FLAGS argument to expand_prompt if expanding parts of a prompt + containing embedded newlines + - expand_prompt: only add mode char to last line of a prompt with + embedded newlines, so mode indicator doesn't get lost and gets + updated properly. Fixes problem reported by Renlin Li + + + 11/13 + ----- + +lib/readline/display.c + - prompt_modestr: changed prompt_modechar to return a string denoting + the editing mode; default strings for emacs and both vi modes are + #defines in this file. prompt_modestr takes an argument in which + it returns the length of the mode string + - expand_prompt: if expanding mode strings in the prompt, get the + mode string to use and add it at the beginning of the prompt string, + before expanding it. This will allow future work allowing the mode + string to contain invisible characters + + 11/15 + ----- +lib/readline/rlprivate.h + - _rl_{emacs,vi_cmd,vi_ins}_mode_str: extern declarations for + variables to hold current values of user-settable mode strings; + variables to hold lengths + +lib/readline/rlconf.h + - defines for default values of the mode strings for each editing mode + and keymap + +lib/readline/display.c + - _rl_{emacs,vi_cmd,vi_ins}_mode_str: new variables to hold values of + user-settable mode strings + - _rl_{emacs,vi_cmd,vi_ins}_modestr_len: new variables to hold lengths + of corresponding mode string variables + - prompt_modestr: return appropriate user-settable mode string + variables + +lib/readline/bind.c + - {emacs,vi-ins,vi-cmd}-mode-string: new user-settable mode string + variables + - sv_{emacs,viins,vicmd}_modestr: variable handling functions for user- + settable mode string variables. Non-null values are run through + rl_translate_keyseq so users can include invisible character + sequences in the mode strings; null values restore the default + - _rl_get_string_variable_value: handle values for new user-settable + mode string variables. Original code contributed by Dylan Cali + + +lib/readline/doc/rluser.texi + - {emacs,vi-ins,vi-cmd}-mode-string: document, including the fact that + you can use \1 and \2 to bracket sequences of non-printing + characters + + 11/16 + ----- +lib/readline/history.c + - add_history: replace loop that copies history list down one item + with call to memmove to take advantage of whatever efficiencies + libc can offer. Won't be any slower than current loop + +lib/readline/display.c + - rl_redraw_prompt_last_line: new function, calls redraw_prompt if + the prompt contains multiple lines; calls rl_forced_update_display + if not + +lib/readline/readline.h + - rl_redraw_prompt_last_line: extern declaration, undocumented in + texinfo manual until I get it a little more work + +bashline.c + - bash_execute_unix_command: instead of unconditionally calling + rl_forced_update_display, call rl_redraw_prompt_last_line if we + cleared the last line before executing the command. This keeps + commands that don't display any other output but just manipulate + the contents of the line buffer from redisplaying the prompt lines + before the last newline multiple times. Fixes bug reported by + Jesper Nygards and Rob Foehl + . This means that commands that display output + will *only* display the final line of the prompt + - bash_execute_unix_command: if the command returns 124, we redraw + the line unconditionally, including all lines of the prompt + + 11/18 + ----- +builtins/mapfile.def + - mapfile_builtin: don't allow a valid array reference through to + mapfile(), since it will just create a shell variable with that name. + Bug and fix from Eduardo A. Bustamante López + + 11/19 + ----- +lib/readline/complete.c + - _rl_colored_completion_prefix: new variable, if non-zero, and color + support is compiled in, and the $LS_COLORS variable exists and + contains color definitions, display any common prefix of a set of + completions in blue when displaying all the possible completions. + Doesn't work with menu-complete, which inserts possible completions + inline + - colored_prefix_start(), colored_prefix_end(): new functions, used to + bracket colored completion prefixes + - fnprint: if prefix_bytes is non-zero, and _rl_colored_completion_prefix + is > 0, display the first PREFIX_BYTES bytes of the word bracketed + by calls to colored_prefix_start and colored_prefix_end + - print_filename: if _rl_colored_completion_prefix is > 0, compute the + length in bytes of the common prefix and pass that to fnprint + +lib/readline/readline.c + - readline_initialize_everything: initialize the colors from $LS_COLORS + if _rl_colored_completion_prefix is non-zero + +lib/readline/colors.c + - _rl_print_prefix_color: new function, changes text color to that + defined for the common prefix of a set of possible completions + (currently cyan, same as directories); currently uses C_PREFIX, + defined in colors.h as C_DIR + +lib/readline/colors.h + - _rl_print_prefix_color: new extern declaration + +lib/readline/bind.c + - colored-completion-prefix: new bindable variable, if set, common + prefix of a set of possible completions is displayed in color. + Feature requested by several, most recently by Richard Neill + (in a slightly different form) and + Duy Nguyen + + 11/20 + ----- +builtins/printf.def + - printf_builtin: allow null (empty) format strings supplied with + -v var to set `var' to the empty string. That is, printf -v var "" + is now the same as var="". Change suggested by Mike Frysinger + + +pathexp.h + - FNMATCH_NOCASEGLOB: macro to decide whether or not to pass + FNM_CASEFOLD flag to strmatch depending on whether glob_ignore_case + is set; analogout to FNMATCH_IGNCASE + +pathexp.c + - glob_name_is_acceptable: use FNMATCH_NOCASEMATCH to determine flags + passed to strmatch; if nocaseglob is used to generate glob matches, + it should be used to generate ignored matches + + 11/21 + ----- +pcomplete.c + - filter_stringlist: the call to strmatch now honors the setting of + nocasematch. Feature request from Ville Skytta + back in 2010 + +doc/bash.1,lib/readline/doc/rluser.texi + - complete -X: document that filtering the list of possible completions + honors the nocasematch option when performing matching + +lib/glob/gmisc.c + - include chartypes.h and strmatch.h for new defines + - match_pattern_{wchar,char}: now take new third FLAGS argument, flags + have same meanings as strmatch(); intent is to handle case + insensitive comparisons under same conditions as strmatch + - FOLD: imported case-folding define from sm_loop.c; wide and single- + byte character versions + - match_pattern_{wchar,char}: use FOLD when comparing characters to + honor FNM_CASEFOLD if set in FLAGS argument + +externs.h + - match_pattern_{wchar,char}: updated extern declarations + +subst.c + - match_{upattern,wpattern}: update strmatch/wcsmatch calls to include + FNMATCH_IGNCASE in flags argument + - match_{upattern,wpattern}: update match_pattern_{char,wchar} calls + to include FNMATCH_IGNCASE in flags argument (consistent with calls + to strmatch). This makes pattern substitution word expansion honor + nocasematch shell option. Feature requested by Davide Baldini + + - match_wpattern: make sure to fold case if necessary when doing simple + matching + +doc/{bash.1,bashref.texi} + - pattern substitution: updated description to include honoring setting + of nocasematch when performing matching + +subst.c + - expand_word_internal: optimize handling of "$@" idiom by calling + list_rest_of_args() and quote_list() directly at the top of the + function instead of going through normal code path + - cached_quoted_dollar_at: WORD_LIST of quoted positional parameters, + used by same code above that optimizes "$@"; if non-null we just + return a copy of the list; if null, we save a copy of the list we + create + - invalidate_cached_quoted_dollar_at: convenience function to allow + other parts of the shell (e.g., remember_args()) to destroy the + cached list of quoted positional parameter when the positional + parameters change + +builtins/common.c + - remember_args: call invalidate_cached_quoted_dollar_at() + +builtins/shift.def + - shift_builtin: call invalidate_cached_quoted_dollar_at after modifying + dollar_vars[] + +builtins/source.def + - maybe_pop_dollar_vars: call invalidate_cached_quoted_dollar_at just + to be safe + + 11/23 + ----- +builtins/evalfile.c + - _evalfile: return -1 if errno == ENOENT and the flags don't include + FEVAL_ENOENTOK. If we print an error message we should return an + error + - force_execute_file: new function, reads and executes commands from + a file but returns an error if file doesn't exist + +builtins/common.h + - force_execute_file: new extern declaration + +shell.c + - main: call start_debugger even if dollar_vars[1] == 0 if the shell + isn't interactive (interactive_shell == 0) + - start_debugger: call force_execute_file instead of maybe_execute_file; + turn off debugging mode if it returns value < 0 + + 11/24 + ----- +hashlib.h + - DEFAULT_HASH_BUCKETS: doubled to 128, cost in memory use is small but + changes traversal order when not sorting results + + 11/25 + ----- +doc/{bash.1,bashref.texi} + - make it clearer, by breaking it out into a separate paragraph, that + referencing an array without a subscript is equivalent to referencing + it with subscript 0 + - add text saying that referencing any variable using a valid subscript + is OK + + 11/28 + ----- + +arrayfunc.c + - bind_array_variable, bind_assoc_variable: allow binding value to a + readonly variable if the ASS_FORCE flag is set in the FLAGS + argument + +subst.h + - ASS_FORCE: new assignment flag; means to allow assignment even if + variable is marked readonly + +builtins/declare.def + - when assigning a value to an array or assoc variable using + something like `declare -r foo=bar' where foo is an existing array + variable, pass the ASS_FORCE to assign_array_var_from_string so + the assignment is allowed. Fixes debian bug 765759 + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=765759 + +builtins/setattr.def + - var_attribute_string: new function to return (as argument) a char + array with attribute flag values for a given variable; returns the + length of the array + +lib/sh/shquote.c + - sh_quote_reusable: function returning a version of its string + argument that is quoted for reuse + +externs.h + - sh_quote_reusable: extern declaration + +builtins/common.h + - MAX_ATTRIBUTES: define used to size arrays for attribute flag + characters + - var_attribute_string: new extern function declaration + +subst.c + - array_remove_pattern: fixed a bug where `var' instead of `v' was + tested for invisible attribute + - get_var_and_type: fill in a valid *VARP if returning VT_VARIABLE + because callers may need to use it + - parameter_brace_transform: family of functions to implement the new + mksh-inspired ${param@spec} transformation word expansions. Some + of the operators transform the (expanded) value of the parameter, + the rest expand to information about the parameter itself + (array_transform, parameter_list_transform, list_transform, + string_transform, pos_params_assignment, array_var_assignment, + string_var_assignment) + - parameter_brace_expand: changes to parse the new `@' word expansion + operator and call parameter_brace_transform appropriately + - parameter_brace_expand: make sure we handle ${#@} as we have before + even in the presence of the new `@' operator + +variables.c + - push_temp_var: make sure to call bind_variable_internal with the + ASS_FORCE flag so we override readonly variables created with + something like `tempvar=foo declare -r foo'. + - bind_variable_internal: honor ASS_FORCE flag to allow binding even + if a variable is readonly + +execute_cmd.c + - struct func_array_state: new state to save state of BASH_LINENO, + BASH_SOURCE, and FUNCNAME during function execution so it can be + restored on a jump to top level + - restore_funcarray_state: new function to restore func_array_state + - execute_function: fill in func_array_state variable, add unwind- + protect to restore it on jump to top level, call explicitly at + end of function if subshell != 0 (may not be necessary, but safe + for now). Fixes bug with local assignments to FUNCNAME reported + by Arfrever Frehtes Taifersar Arahesis + + 11/29 + ----- +arrayfunc.c + - assign_compound_array_list: turn off ASS_APPEND flag when processing + each individual assignment inside the parens in var+=(...). The + outer += should not affect assignments to existing subscripts; + those should be treated like usual assignments unless += supplied + inside the parens. Bug report from Maarten Billemont + , fix from Eduardo A. Bustamante López + + +config.h.in + - HAVE_PSELECT: define if pselect(2) available + +configure.ac + - check for pselect(2), define HAVE_PSELECT if found + +lib/readline/input.c + - rl_getc: use pselect(2) to wait for input ready on readline's + input fd or for a signal to arrive, will handle SIGWINCH (which + does not interrupt read(2)) and thus allow resize to happen without + having to wait to read more input. Only works if pselect available + and returns -1/EINTR on a signal even if the signal was installed + with SA_RESTART. From a suggestion from Egmont Koblinger + + + 12/3 + ---- +variables.c + - flush_temporary_env: new function, disposes all temp variables in + temporary_env hash table + - bind_variable: only try to update a temporary variable's value in the + temporary env if the value argument is not null. Fixes bug reported + by + +variables.h + - flush_temporary_env: new extern declaration + +subst.c + - command_substitute: if running command substitution as part of + expanding a redirection (expanding_redir == 1), flush any temporary + environment we've inherited as part of this command, since we are not + supposed to have access to the temporary environment. Since + expanding_redir only controls access to the temporary environment for + variable lookup and binding, we can turn it off in the subshell + + 12/4 + ---- +builtins/printf.def + - printstr: make sure a missing precision specifier after a `.' is + treated as 0, as printf(3) specifies. Fixes ubuntu bash bug + 1399087 (https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1399087) + + 12/5 + ---- +subst.c + - skip_to_delim: if scanning past process substitution (skipcmd == 1, + noprocsub == 0), use extract_delimited_string instead of + extract_process_subst, which was changed a while back (bash-4.3.23) + to use xparse_dolparen. xparse_dolparen complains if the command + or process substitution is unterminated, since it runs the parser, + which is not what we want here. Command substitution does the same + thing. Fixes bug reported by Daniel Kahn Gillmor + as Debian bash bug 771968 + (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771968) + + 12/6 + ---- +subst.c + - command_substitute: short-circuit without forking on a command string + that consists entirely of s and newlines + +jobs.c + - make_child: changes to allow interrupts through if fork fails and + we are sleeping for `forksleep' seconds + - waitchld: make things a little more resilient if CHILD ends up NULL + + 12/12 + ----- +lib/readline/complete.c + - rl_display_match_list: when calculating common prefix to display in + color, make sure we correctly handle a common prefix with a trailing + `/' as we do when checking whether or not to add an ellipis. + printable_part() doesn't return the whole pathname if it ends in a + slash, to avoid printing null strings, so we have to make sure we + have the entire prefix + +lib/readline/complete.c + - _rl_complete_display_matches_interrupt: new variable, set to 1 by + _rl_complete_sigcleanup to let rl_display_match_list know it has + freed the match list + - display_matches: check for signals during the printing loops with + RL_SIG_RECEIVED(), return immediately if there is a pending signal + (might not want to do this if it's SIGWINCH -- CHECK) + - rl_complete_internal: if _rl_complete_display_matches_interrupt + set after calling display_matches, just null out `matches' since + it's already been freed and call any application-set signal hook + + 12/14 + ----- +parse.y + - time_command_acceptable: if the token before a newline is `|', + return 0, since it's not really valid to time inside a pipeline. + Only handles a single newline but allows things like + echo a | + time cat + to invoke /usr/bin/time, which is probably enough to catch the + stray carriage return. Fixes bug reported by Andre Majorel + + +builtins/declare.def + - declare_internal: don't try to perform compound assignments unless + the WORD_DESC has flags including W_COMPASSIGN (maybe should check + W_ASSIGNMENT as well), avoiding unexpected evaluation if a word + is of the form (word) and is assigned to an array variable like so: + declare -x var=$value. Bug reported by Stephane Chazelas + . Will eventually be contingent on + compatibility level > 43, but not there yet. TENTATIVE + + 12/15 + ----- +lib/sh/Makefile.in + - add missing dependencies for shmatch.o. Pointed out by Sergey + Mikhailov + + 12/16 + ----- +{execute_cmd,subst}.c + - W_ASSIGNINT: remove, not used any more + +execute_cmd.c + - fix_assignment_words: don't look for `-i' option and set W_ASSIGNINT + flag any more; doing things a different way + - shell_expand_word_list: instead of using W_ASSIGNINT flag, since it + doesn't take into account all options that can transform values on + assignment (-l/-u/-c can also), go through option arguments looking + for options that need special handling and add them to the `opts' + array for make_internal_declare to use. Fixes bug with constructs + like `declare -al foo=(UPONE UPTWO UPTHREE)' not being lowercased on + assignment reported by Linda Walsh + + + + 12/18 + ----- +lib/readline/readline.c + - rl_internal_char: when we read EOF on a non-empty line, check for + signals and invoke any readline signal handling and any application- + installed signal hook + + 12/20 + ----- +lib/readline/readline.c + - rl_internal_char: if we read EOF on a non-empty line, set c to + _rl_eof_char the first time through. If we read EOF the next time, + return EOF from readline(). If callbacks are defined, this returns + EOF immediately, since lastc isn't available. Fix for problem + most recently identified by Jiri Kukacka , + it has come up in the past + + 12/21 + ----- +builtins/declare.def + - declare_internal: keep track of whether or not an assignment statement + argument to declare is an array subscript assignment; need to + differentiate assignments from straight declarations (declare a[4]) + which are accepted for backwards compatibility + - assignment statements like declare a[2]=foo are now treated as + straight subscript assignment statements if a already exists as an + array variable + - declare foo='(1 2 3)' is treated as an assignment to foo[0] if foo + exists and is an array, just as it would be if it were an assignment + statement and `declare' was not present. All this from a proposal + by Stephane Chazelas + + 12/22 + ----- +builtins/read.def + - read_tty_modified: function to tell the rest of the shell if the + read builtin has modified the tty + - read_builtin: make sure to initialize terminating signals before + installing a SIGALRM signal handler in case we modify the tty as + well as ask for a timeout; the subsequent call to + initialize_terminating_signals would overwrite the read-builtin- + local SIGALRM handler + +builtins/common.h + - read_tty_modified: new extern declaration + +shell.c + - exit_shell: if read_tty_modified() returns true, call read_tty_cleanup + to undo the terminal modifications. Extension of previous fixes; + fixes bug with read -s reported by Richard W. Marsden + + + + 12/23 + ----- +builtins/setattr.def + - show_var_attributes: call print_array_assignment and print_assoc_assignment + with a `not quoted' flag so the assignment statements are not + surrounded by single quotes. Caused changes to a lot of test output + + 12/29 + ----- +lib/readline/complete.c + - stat_char: Windows doesn't handle X_OK flag to access(2); use file + extensions to determine whether or not a file is executable. Bug + report and fix from Eli Zaretskii + +configure.ac + - changed version to bash-4.4-devel + +lib/readline/readline.h + - changed version to readline-6.4 + + 12/30 + ----- +readline.h + - struct readline_state: fix types of `ignorefunc' and `attemptfunc' + members + +lib/sh/shquote.c,externs.h + - sh_contains_shell_metas, sh_contains_quotes: now take `const char *' + as parameter + +stringlib.c,externs.h + - strcreplace: `text' argument now `const char *' + +pathexp.[ch] + - quote_globbing_chars: `string' argument now `const char *', accompanying + changes to function local variables + +pcomplete.c + - preproc_filterpat: `text' argument now `const char *' + - filter_stringlist: `text' argument now `const char *' + + 12/31 + ----- +builtins/evalstring.c + - should_suppress_fork: new function, broke code that decides whether + to turn on CMD_NO_FORK flag out of parse_and_execute into a separate + function + +execute_cmd.c + - execute_command_internal: AND_AND, OR_OR: call should_suppress_fork + for the RHS of && and ||, make `make' invocations marginally more + efficient + +flags.c + - get_current_flags: returns a bitmap of all single-letter shell + options with a non-zero value meaning option is enabled + - set_current_flags: set current single-letter options from a passed + bitmap, which has presumably been initialized with get_current_flags + +flags.h + - {get,set}_current_flags: new extern declarations + +builtins/declare.def + - declare_internal: if invoked as `local', interpret name argument of + `-' to mean to save (and restore at shell return) single-letter + shell options + +variables.c + - push_func_var: if we encounter `-' as the name of a local variable, + take the value and call set_current_flags on it to restore old + flag settings + +builtins/set.def + - get_current_options: returns a bitmap of all shell options settable + with `set', with a non-zero value meaning option is enabled + - set_current_options: set current shell options from a passed + bitmap, which has presumably been initialized with get_current_options + + + 1/1/2015 + -------- +lib/readline/parens.c + - _rl_blink_matching_paren: initialize to 0 whether or not select(2) is + available. Inconsistency reported by Mark Karpov + + +builtins/declare.def + - declare_internal: use get_current_options instead of + get_current_flags, so `local -' can be generalized + +variables.c + - push_func_var: use set_current_options instead of set_current_flags + so `local -' can be generalized + +doc/{bash.1,bashref.texi} + - document new `local -' feature; originally inspired by Robert Elz + describing feature in NetBSD sh + + 1/3 + --- +lib/readline/{complete,funmap,kill,histfile,util} +lib/readline/readline.h +lib/tilde/tilde.c + - fixes for filename- and evironment-related issues on Windows. Fixes + from Eli Zaretskii + - Windows can paste to the console from the clipboard like Cygwin + - Windows uses $APPDATA as a pseudo-$HOME + +lib/readline/input.c + - rl_getc: use _getch on Windows to avoid being overridden by a getch + ncurses function + - win32_isatty: replace Windows isatty(3) with a function that does + additional checks, sinces Windows isatty returns non-zero for + every character device. From Eli Zaretskii + +lib/readline/display.c + - delete_chars: if compiled with ncurses on Windows, this code can + work, so build it in if NCURSES_VERSION defined + - open_some_spaces: ditto + + 1/6 + --- +doc/{bash.1,bashref.texi} + - minor grammar and typo corrections from TonyMc + + 1/8 + --- +sig.c + - throw_to_top_level: only attempt to run the interrupt trap if SIGINT + is trapped -- minor optimization + - throw_to_top_level: if we are running a trap, call run_trap_cleanup + to turn off the sigmodes flags + +trap.c + - _run_trap_internal: temporarily suppress pending SIGINTs while running + one of the traps the shell handles internally (e.g., ERR). Fixes bug + reported by Keith Thompson + + 1/10 + ---- +bashhist.c + - bash_history_inhibit_expansion: use skip_to_delim with the history + expansion character to see whether or not the instance of the + history expansion character should be skipped because, for instance, + it is in a command substitution. Fixes issue reported by + Zigmund.Ozean@zig-home.localdomain + + 1/14 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: if we are in a multibyte locale, make sure to + use _rl_find_prev_mbchar when trying to delete characters from the + search string, instead of just chopping off the previous byte. + Fixes bug reported by Kyrylo Shpytsya + +lib/readline/complete.c + - rl_filename_completion_function: if we tilde-expand `dirname', make + sure we use the expanded result instead of throwing it away for the + quote-removed `users_dirname', which still has any leading tilde. + Fixes bug reported by Dave Rutherford + +execute_cmd.c + - select_query: if the read builtin doesn't return anything in REPLY, + return NULL (failure). Fixes bug reported by Etherial Raine + + +builtins/read.def + - read_builtin: if REPLY has the readonly or noassign attribute, return + failure + + 1/16 + ---- +redir.c + - redir_open: if open() returns -1/EINTR, check traps as well as + using QUIT to handle signals + + 1/18 + ---- +jobs.c + - wait_for: make sure queue_sigchld is set to 1 before unblocking + SIGCHLD if MUST_UNBLOCK_CHLD is defined + + 1/19 + ---- +pcomplete.h + - new progcomp option: COPT_NOSORT, means to not sort list of possible + completions + +pcomplete.c + - pcomp_set_readline_variables: if COPT_NOSORT set in compspec flags, + set rl_sort_completion_duplicates to 0 + +builtins/complete.def + - _compopt: new option value: -o nosort, sets COPT_NOSORT in compspec + option flags. Provides new -o nosort option for complete and compgen + +bashline.c + - attempt_shell_completion: make sure rl_sort_completion_matches is + set to 1 before completion is attempted; allow a compspec to turn + it off + +lib/readline/kill.c + - rl_vi_yank_pop: new function, vi-mode version of yank-pop. Original + code from Ian Kelling + +lib/readline/funmap.c + - `vi-yank-pop': bindable name mapped to rl_vi_yank_pop + +lib/readline/readline.h + - rl_vi_yank_pop: extern declaration + + 1/21 + ---- +lib/sh/shquote.c + - sh_backslash_quote: change to understand and handle multibyte + characters, using is_basic, COPY_CHAR_P. See + https://bugzilla.redhat.com/show_bug.cgi?id=1184320 for original + report + + 1/23 + ---- +include/posixjmp.h + - use setjmp_sigs instead of redefined setjmp, it fails on Cygwin. + Report from Eric Blake + +builtins/wait.def,shell.c + - use setjmp_sigs instead of setjmp call, since setjmp no longer + redefined to something known + +include/chartypes.h, lib/readline/chardefs.h + - make sure all ctype.h macros are called with unsigned char args, + casting to make sure + +lib/sh/casemod.c + - sh_modcase: don't assume that the upper and lower case versions of a + character are the same width, so don't try to do the conversion in + place: convert and copy the converted characters one or more at a + time to the returned string + - sh_modcase: since upper and lower case versions of same character + may have different widths in some locales, don't shortcut and assume + that we can do single-byte case modification (toupper) with a + single-byte input character (e.g., `i'). Fix for problem reported + by Stephane Chazelas + + 1/31 + ---- +lib/readline/histfile.c + - history_truncate_file, history_do_write: if the first rename(2) + of the history file to the backup file fails, set the backup file + name to NULL to prevent any later attempts to restore the + original. Report from Jonathan Hankins + - history_do_write: don't attempt to back up non-regular files. + Report from Jonathan Hankins + + 2/2 + --- +trap.c + - run_interrupt_trap: now takes an argument indicating whether or not + it was called just before a longjmp to top_level; change callers + - run_interrupt_trap: if running a trap and we are being called before + a longjmp to top_level, call run_trap_cleanup on running trap so + a QUIT call while running a DEBUG trap, for instance, doesn't leave + sigmodes[DEBUG_TRAP] including SIG_INPROGRESS. Fixes bug reported + by Chih-Chieh Chou + +sig.c + - throw_to_top_level: change call to run_interrupt_trap to pass arg 1 + - termsig_handler: change call to run_interrupt_trap + +trap.h + - run_interrupt_trap: update extern prototype declaration + + 2/4 + --- +lib/readline/histfile.c + - histfile_backup, histfile_restore: new functions to back up and restore + history file to `filename-', following (one level of) symlinks through + so we don't rename the symlink itself. From a suggestion by + Jonathan Hankins + +assoc.c + - assoc_to_assign: if an index happens to be `@' or `*', make sure it's + double-quoted. Bug report from Greg Wooledge + + 2/5 + --- +lib/readline/bind.c + - rl_bind_key: if we are rebinding a key that is not bound to a + function or a macro, construct a key sequence and pass it to + rl_bind_keyseq. Make sure that '\' when it is used as a key is + changed to "\\" so it can survive rl_translate_keyseq. Fixes + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776743 + + 2/8 + --- +include/posixjmp.h + - _rl_longjmp, sh_longjmp: new defines, expand to siglongjmp or longjmp + depending on autoconf results, used to avoid redefining longjmp, + remove _OPENNT conditional code. Report from Eric Blake + + +{bashjmp,quit}.h,{execute_cmd,expr,jobs,sig,trap}.c,builtins/{evalstring.c,return.def} + - change calls to longjmp to use sh_longjmp + +lib/readline/util.c + - change calls to longjmp to use _rl_longjmp + + 2/18 + ---- +variables.c + - bind_int_variable: make sure `v' is non-null before making it visible + + 2/19 + ---- +arrayfunc.c + - assign_array_var_from_word_list: after assignment, mark variable as no + longer invisible + - assign_array_var_from_string: after assignment, mark variable as no + longer invisible + +builtins/declare.def + - declare_internal: add warning if an attempt is made to use a quoted + compound assignment as an argument to declare (declare -a foo='( 1 2 )'); + backwards compatible with bash-4.3. Still a tentative change + + 2/20 + ---- +lib/glob/smatch.c + - is_wcclass: check malloc() return value, return -1 if it fails + Report from Tobias Stoeckmann + +lib/sh/shmatch.c + - sh_regmatch: check malloc() return value, handle NULL value if it + fails. Report from Tobias Stoeckmann + + 2/22 + ---- +lib/readline/doc/rltech.texi + - rl_callback_handler_install: note that the handler function should + free the line it receives, as with readline. Suggested by + Ulf Magnusson + - Readline Signal Handling: note that application needs to clean up + readline's terminal state if it wants to handle a signal before + the line handler restores it. Suggested by Ulf Magnusson + + + 2/24 + ---- +lib/readline/histfile.c + - history_do_write,history_truncate_file: if the write fails, make sure + to set history_lines_written_to_file to 0 so we don't lose those + history entries + + 2/27 + ---- +execute_cmd.c + - execute_function: unwind-protect the value of line_number_for_err_trap, + so a function that returns a non-zero value and triggers an ERR trap + has the right value for LINENO. Any simple command in the function + body can change it. Bug report from Paul Donohue + + 3/5 + --- +lib/sh/shquote.c + - sh_backslash_quote: cast `c' to `unsigned char' before using as + index into backslash_table. Report and fix from + alexeyv.90@gmail.com + +arrayfunc.[ch] + - valid_array_reference: added second `flags' argument for future use; + currently unused + +parse.y,{redir,subst,variables,test}.c +builtins/{declare,printf,read,set}.def + - valid_array_reference: changed callers + + 3/7 + --- +lib/readline/signals.c + - _rl_handle_signal: if readline gets a SIGTSTP or SIGTTIN, block + SIGTTOU so a backgrounded readline can reset the terminal settings + appropriately, otherwise the terminal state and readline's idea + of it can get messed up. Original report from Dave Wysochanski + and Dave Anderson + +trap.c + - run_pending_traps: don't allow recursive SIGWINCH trap invocations; + they're wasteful and trying to handle a stream of signals while a + user resizes the terminal can lead to malloc errors trying to save + and restore the_pipeline multiple times. Problem reported most + recently by Martin M. S. Pederson (Fedora bash bug 1197768 + https://bugzilla.redhat.com/show_bug.cgi?id=1197768) + - reset_or_restore_signal_handlers: set pending_traps to 0 for all + signals when forking a child. TENTATIVE fix + +jobs.c + - {save,restore}_pipeline: block SIGCHLD while manipulating the_pipeline + like cleanup_the_pipeline does. XXX - may not be necessary + +lib/readline/display.c + - rl_redisplay: fixed case where multibyte character in the prompt + (e.g., \u03bb) in the last screen column causes problems with line + wrapping because the newline marker is put in the middle of the + multibyte char. Most recently reported on Ubuntu by + + +pathexp.c + - quote_string_for_globbing: if a bracket expression doesn't have a + closing right bracket, rescan it from just after the opening + bracket without treating it as a bracket expression. Bug report + from Stephane Chazelas + + 3/9 + --- +subst.c + - process_substitute: keep the last pipeline created to run a process + substitution in LAST_PROCSUB_CHILD; discard it when another one is + created + +jobs.[ch] + - discard_pipeline: now global, so process_substitute can call it + +jobs.c + - last_procsub_child: new variable, set and modified only by the process + substitution code + - find_pipeline: if the requested pid is in LAST_PROCSUB_CHILD, return + it; analogous to the way this code handles the_pipeline + - waitchld: if we find a child via find_pipeline that is a part of the + last process substitution child, mark that child appropriately. If + the child is dead, add it to the bgp list. This and the previous + change allow waiting for the most recent process substitution (the + one corresponding to $!). Original report from Stephane Chazelas + + + 3/10 + ---- +arrayfunc.c + - unbind_array_element: make sure skipsubscript() doesn't try to parse + embedded quotes in the subscript, since this has already been through + one round of word expansion before calling the unset builtin. (This + function is only called by the unset builtin). Fixes bug reported by + + + 3/17 + ---- +jobs.c + - waitchld: move code that adds the last process substitution pid to + the bgpids array from waitchld (where it can call malloc in a signal + handler context) to cleanup_dead_jobs + + 3/19 + ---- +subst.c + - parameter_brace_expand: if expanding an array in a context where word + splitting will not take place (W_ASSIGNRHS only for now), make sure + to pass the double-quoted flag to chk_atstar so we don't get the + unquoted $* behavior, which will cause unwanted word splitting. + Fixes bug reported by isabella parakiss + +arrayfunc.c + - unbind_array_element: don't assume that caller will check and pass + only array variables; don't allow non-array variables to be unset + using the `@' or `*' subscripts and don't allow any subscripts other + than 0; return -2 in those cases + - unbind_array_element: unset a non-array variable if passed a subscript + of `0' (e.g., `unbind "scalar[0]"'). This is new functionality that + parallels the ${scalar[0]} expansion + +builtins/set.def + - unset_builtin: don't check whether a variable is an array if it's + referenced using array syntax (scalar[0]); pass it to + unbind_array_element anyway and check the result. This means that + `unset scalar' and `unset scalar[0]' are equivalent + + 3/20 + ---- +builtins/set.def + - set_builtin: make `-i' an invalid option, unconditionally for now. + From a bug-bash discussion started by Peng Yu + + 3/21 + ---- +lib/readline/colors.c + - _rl_print_color_indicator: handle dangling symlinks (C_ORPHAN) and + the `target' specifier for links (dereference S_ISLNK if the target + exists). Bug report and fix from andreas@stapelspeicher.org + +{arrayfunc,subst}.c + - add code to save and restore this_command_name in places that set + this_command_name to NULL to prevent error messages from arithmetic + evaluation. Fixes bug reported by brian.carpenter@gmail.com + +builtins/mapfile.def + - do_chop: remove a new DELIM argument from the line, instead of + unconditionally removing newline + - mapfile: if -d delim is supplied and we are breaking fields at DELIM, + remove DELIM if the -t option is supplied by passing DELIM to do_chop(). + Suggested by Geir Hauge + +doc/{bash.1,bashref.texi} + - mapfile: document new -t option behavior, defaults are the same + +builtins/alias.def + - print_alias: if the first character of an alias name is `-', add a + `-- ' after `alias' to avoid option errors when trying to reuse the + output. Bug report and fix on savannah from Pasha Bolokhov + + + 3/22 + ---- +builtins/declare.def + - declare_internal: if creating a variable does not return a valid + variable in VAR, check for null variable before dereferencing it. + This happens with nameref variables referencing variables set to + the empty string. + Fixes bug reported by Arthur200000 + + 3/23 + ---- +doc/{bash.1,bashref.texi} + - INVOCATION: add language to make it clear that non-interactive login + shells execute ~/.bash_logout if they run the `exit' builtin. From a + question from Christoph Anton Mitterer + + 4/6 + --- +subst.c + - process_substitute: increment and decrement subshell_level around + calls to parse_and_execute, as in command substitution, so + $BASH_SUBSHELL gets new values in the subshell. Fixes inconsistency + pointed out by Peng Yu + +doc/{bash.1,bashref.texi} + - read: add clarifying text to note that the -N option does not split + on $IFS, but does retain backslash as an escape character subject + to -r. Report from isabella parakiss + +builtins/declare.def + - declare_internal: unless it's the last statement in a {...} block, + NEXT_VARIABLE must be protected by braces. Bug introduced in patch + from 3/22, reported by Eduardo A. Bustamante López + + + 4/7 + --- +parse.y + - shell_getc: if bash is reading input from a string that ends with an + unquoted backslash, add another backslash instead of a newline, since + the backslash and newline will disappear in normal processing. Fixes + bug with `bash -c 'eval \\; echo y' ' skipping the eval command and + setting incorrect exit status, and `bash -ic 'eval \\; echo y' ' + seeing EOF on empty line and exiting before the echo. Keep track of + backslash state with last_was_backslash; set in char reading loop. + Fixes bug reported by Eduardo A. Bustamante López + + 4/8 + --- +shell.c + - main: check for $INSIDE_EMACS as well as $EMACS when deciding whether + or not bash is being run in a GNU emacs shell window. Don't bother + checking whether $TERM is unset because variable initialization sets + it to `dumb' if unset. Fixes from Paul Eggert + +parse.y + - push_token: new function, rotates current_token through last_read_token, + saving old values like yylex() does, sets current_token to argument + +evalfile.c + - _evalfile: if current_token is yacc_EOF, push a newline as the value + of current_token instead, using push_token(). yacc_EOF can result if + sourced file doesn't end with a newline but does end with an unescaped + backslash. Fixes bug reported by Pedro Gimeno + + +lib/readline/histfile.c + - use PARAMS(x) instead of __P(x). Bug reported by Evan Gates + + + 4/9 + --- +execute_cmd.c + - execute_simple_command: if we haven't already forked, and we have + created FIFOs, turn off the no-fork optimization in the simple + command's flags. Originally reported to savannah by Kuang-che Wu as + https://savannah.gnu.org/support/index.php?108732 + + 4/10 + ---- +trap.c + - trap_if_untrapped: new function, sets a trap on a signal if that + signal is not already trapped + - maybe_set_debug_trap: new function, sets DEBUG trap to command string + argument only if it's not already trapped + +trap.h + - maybe_set_debug_trap: new extern declaration + + +builtins/source.def + - source_builtin: if the -T option isn't set, use maybe_set_debug_trap + in the unwind-protect instead of unconditionally restoring the old + trap string. That means if the sourced file changes the DEBUG trap, + that new trap will persist instead of being undone when the old + value is restored. Fixes bug reported by Scott Bronson + + +builtins/evalstring.c + - parse_string: before we jump to top_level, if we are at the `bottom' + of the parse_and_execute stack (parse_and_execute_level == 0), call + top_level_cleanup() before jumping so the right cleanup happens (e.g., + cleaning up redirections and other state). Fixes bug reported by + Sam Liddicott + + 4/15 + ---- +jobs.c + - delete_job: only add J_ASYNC (and not J_FOREGROUND) jobs to the + bgpids array, since Posix says shells only need to save the status + of async jobs. Report and fix from John Fremlin + + 4/17 + ---- +pcomplib.c + - COMPLETE_HASH_BUCKETS: increase to 256 since bash-completion is + over 300 completions by now + +variables.c + - VARIABLES_HASH_BUCKETS: constant used to size shell variables hash + table instead of relying on hash library default. Used in calls + to hash_create in create_variable_tables(), push_temp_var(), and + push_func_var(). Currently set to 1024 because why not? From a + discussion starting at + https://lists.gnu.org/archive/html/bug-bash/2015-04/msg00089.html + - initialize_shell_variables: if FUNCTION_IMPORT is not defined, the + nested conditional compilation causes syntax errors. Bug and fix + from Eric Blake + +configure.ac + - function-import: fix typo, assign to correct variable. Found as the + result of a report by Eric Blake + +shell.c + - open_shell_script: check whether or not file argument is a + directory before opening; Posix says that implementations may open + a directory with O_RDONLY. Bug report from + Eduardo A. Bustamante López + + 4/19 + ---- +ulimit.def + - fix typo in limits[] declaration of `k' + + 4/20 + ---- +configure.ac + - add template definitions set by AC_USE_SYSTEM_EXTENSIONS from a report + from Andreas Schwab + +variables.c + - FUNCTIONS_HASH_BUCKETS: constant used to size the hash tables used for + shell functions and the text of shell function definitions. Initially + set to 512, even though it's a really rare case that someone has more + than around 150 functions, even with bash-completion + + 4/21 + ---- +shell.c + - main: malloc_set_register: change arg to 0 to disable keeping track of + allocations and frees in table; change to 1 for malloc debugging on + demand. Table is too small to keep effective track of allocations on + a modern system, need to use something like valgrind + + 4/22 + ---- +shell.c + - main: move cmd_init() (initialize word desc and word list object + caches) after startup files are read so the cache doesn't get filled + up with semi-permanent storage for shell functions and variables + +execute_cmd.c + - execute_function: use maybe_set_debug_trap in the same way as source + builtin change from 4/10 to allow functions to reset a DEBUG trap + when set -T not in effect. From a report by Peng Yu + + + 4/23 + ---- +execute_cmd.c + - execute_disk_command: don't overwrite value of subshell_environment + by assigning SUBSHELL_FORK; just OR in SUBSHELL_FORK so something + like SUBSHELL_ASYNC or SUBSHELL_PIPE is preserved + +jobs.c + - wait_for: don't call give_terminal_to if running in a subshell + environment, not just if running_in_background is set; don't want + shell functions waiting for a process to complete in a pipeline to + give the terminal to the wrong process group. Part of fix for bug + reported by Valentin Bajrami + - make_child: child process should not try to give the terminal to the + pipeline_pgrp if running as part of a pipeline (SUBSHELL_PIPE in + subshell_environment); functions in execute_cmd.c don't set that + flag until after make_child returns and the child process is running. + Rest of fix for bug reported by Valentin Bajrami + + + 4/24 + ---- +redir.c + - redirection_error: if the redirection involves {varname}, only use + `varname' in the error message if the error code is < 0 (one of the + internal redirection errors, like ambiguous or bad variable name); + otherwise the issue is probably with the filename and should be treated + as usual. Fixes problem reported by Dr. David Alan Gilbert + + +configure.ac,config.h.in + - sys/ioctl.h: add check in AC_CHECK_HEADERS macro, define HAVE_SYS_IOCTL_H + +lib/readline/{rltty,terminal}.c + - sys/ioctl.h: include unconditionally for ioctl declaration, avoid + issues with `implicit declaration' warnings. Issue originally + raised on gdb list by Chen Gang + + 4/27 + ---- +lib/malloc/table.c + - mem_table: now a circular buffer showing the state of the last + REG_TABLE_SIZE allocations rather than a hash table that quickly + fills up + +builtins/declare.def + - typeset_builtin: add -n to list of supported options. Omission + reported by Valentin Bajrami + +unwind_prot.c + - use object caches instead of malloc/free to allocate and deallocate + unwind-protect elements + - uwp_init: initialize unwind-protect element object cache + +unwind_prot.h + - uwp_init: extern declaration + +shell.c + - main: call uwp_init right after calling cmd_init -- initialize all the + object caches at the same place + +lib/malloc/table.[ch] + - mlocation_table: new table to keep track of allocation locations by + file and line, functions to initialize table, record an allocation, + and dump the table to stderr + - mregister_alloc: call mlocation_register_alloc to record the location + (source file/line) for each allocation to pinpoint malloc hot spots + by number of calls. More detail than gprof + +parse.y + - set_line_mbstate: replace free/xmalloc pair with xrealloc call + - read_token_word: call alloc_word_desc instead of xmalloc so we can take + advantage of the WORD_DESC cache + + 4/28 + ---- +execute_cmd.c + - execute_simple_command: if command execution fails because the command + is a directory, and the `autocd' option is set, add a `--' argument + to the constructed `cd' command to protect against command names with + the same name as options to `cd'. Report and fix from + isabella parakiss + + 4/30 + ---- +jobs.c + - printable_job_status, j_strsignal: change calls to strcpy and sprintf + that write to retcode_name_buffer to use strncpy and snprintf to + avoid buffer overflows caused by malicious translations. Bug and fix + from Trammell Hudson + + 5/1 + --- +strtrans.c + - ansicstr: make sure the buffer is at least 12 bytes to ensure enough + space for any eventual call to u32cesc for one multibyte char + + 5/4 + --- +jobs.c + - wait_for: if an interactive shell is running a loop and waiting for + a non-builtin command to exit, and the command exits due to SIGINT, + act as if the shell received the SIGINT as well and break the loop. + This matches the behavior when the shell is running a builtin command + in a loop, and when running a non-builtin command outside a loop, and + seems more broadly useful than running the trap handler over and over + again. Report originally from Kaz Kylheku + +builtins/set.def + - unset_builtin: use different variables for keeping the state of the + -f and -v options than the loop uses to decide whether or not to + treat a name as a function or a variable. Fixes problem with + unset_function setting `sticking' after you unset a function when + invoked with no options. Bug report from Dreamcat4 + + +shell.c + - open_shell_script: set running_shell_script to 1, set to 0 in every + other case (new variable) + - main: when checking whether or not to call start_debugger, test + running_shell_script instead of dollar_vars[1]. The goal is to not + invoke the debugger for interactive shells but allow it to run for + things like `bash --debugger -i /tmp/script'. Problem reported by + Rocky Bernstein + +lib/readline/histexpand.c + - history_event_delimiter_chars: new (as yet undocumented) variable + containing by default characters that can delimit a history event + specifier without requiring a `:': "^$*%-" as the documentation has + always said. Fixes bug reported by Anders Granlund + + + 5/10 + ---- +lib/glob/gmisc.c + - match_pattern_char, match_pattern_wchar: if passed an empty string, + return a match if the first character of the pattern is `*' + +subst.c + - pat_subst: change to allow empty strings to be replaced as long as + pattern matches empty string. Report and fix from isabella parakiss + + + 5/12 + ---- +lib/sh/strtrans.c + - ansic_wshouldquote: make behavior consistent in the event of an + invalid multibyte sequence: return 1 to the caller so the string + will be $'...' quoted + +builtins/cd.def + - cd_builtin: print the right error message even if printable_filename + changes errno (e.g., EILSEQ) + +lib/sh/shquote.c + - sh_backslash_quote: in multibyte locales, even if is_basic does not + return true, backslash-quote an ASCII character that backslash_table + says should be quoted. Part of fix for bug reported by Igor + Bogomazov + +bashline.c + - directory_exists: new function, dequotes the string argument, removes + any trailing slash, and returns true if the result is a valid + existing filename + - bash_filename_stat_hook,bash_directory_completion_hook: use + directory_exists instead of calling lstat/stat on the quoted + directory name. Rest of fix for bug reported by Igor Bogomazov + + + 5/15 + ---- +aclocal.m4 + - BASH_CHECK_MULTIBYTE: when checking for locale_charset, add $LIBINTL + to $LIBS. If we're using the included lib/intl/libintl.a, it will + include a version of locale_charset + + 5/17 + ---- +lib/readline/bind.c + - sv_isrchterm: make sure we check for v[end] == 0 while in the loop + looking for whitespace. Bug report and fix from Sergio Durigan + Junior + +lib/sh/shmbchar.c + - mbstrlen,mbsmbchar: move calculation of MB_CUR_MAX out of loop; + calculate it once at beginning + +lib/sh/mbscmp.c + - mbscmp: move calculation of MB_CUR_MAX out of loop; calculate it once + at beginning + +lib/sh/mbscasecmp.c + - mbscasecmp: move calculation of MB_CUR_MAX out of loop; calculate it + once at beginning + +lib/sh/shquote.c + - sh_backslash_quote: move calculation of MB_CUR_MAX out of loop; + calculate it once at beginning + +lib/sh/casemod.c + - sh_modcase: move calculation of MB_CUR_MAX out of loop; calculate it + once at beginning + +subst.c + - expand_word_internal: move calculation of MB_CUR_MAX out of loops; + calculate it once at beginning of function (XXX should use + locale_mb_cur_max) + + 5/22 + ---- +lib/readline/rlmbutil.h + - _rl_wcwidth: new function, short-circuits wcwidth calls for ASCII + printable characters, returns 1 for those + - WCWIDTH: call _rl_wcwidth instead of wcwidth + +lib/readline/display.c + - rl_redisplay: move calculation of MB_CUR_MAX out of loop; calculate + it once at beginning. Report and patch from Ole Laursen + + + 5/24 + ---- +lib/readline/text.c + - rl_insert: change to attempt to batch-insert pending typeahead (not + pushed input or input from a macro) that maps to rl_insert. An + attempt to suppress redisplay until readline reads all typeahead -- + pasted input, for instance. Inspired by report from Ole Laursen + . XXX - need to make this a bindable + variable; already controlled by _rl_optimize_typeahead + +lib/readline/rlprivate.h + - _rl_optimize_typeahead: extern declaration + +lib/readline/doc/{hstech.texi,history.3} + - next_history: clarify under what circumstances the history offset is + incremented; suggestion from Glenn Golden + +print_cmd.c + - print_arith_command: should be compiled in if either DPAREN_ARITHMETIC + or ARITH_FOR_COMMAND is defined. Report from Flavio Medeiros + + +flags.c + - change_flag: new variable verbose_flag, set when `v' flag modified; + sets value of echo_input_at_read correspondingly + +flags.h + - verbose_flag: new extern declaration + +shell.c + - long_options: --verbose now sets verbose_flag + - main: set echo_input_at_read from verbose_flag after parsing any + long options + +builtins/fc.def + - fc_builtin: don't unwind-protect echo_input_at_read directly; set it + to 1 before calling fc_execute_file as before, and reset it to value + of global verbose_flag using set_verbose_flag called from an + unwind_protect. Report from isabella parakiss + +builtins/shopt.def + - shopt_set_debug_mode: new function, called when the extdebug shell + option changes. Right now, it sets function_trace_mode when extdebug + is enabled, and turns off when extdebug is disabled. The + documentation has always said that shopt does this. Report from + Peng Yu + + 5/27 + ---- +findcmd.[ch] + - add support for EXECIGNORE shell variable, list of extglob patterns + that prevent matching filenames from being identified as executable + files + +variables.c + - EXECIGNORE: arrange for findcmd.c:setup_exec_ignore to be called when + $EXECIGNORE changes + +variables.h + - sv_execignore: extern declaration + +doc/{bash.1,bashref.texi} + - document EXECIGNORE variable + + 5/28 + ---- +lib/readline/callback.c + - rl_callback_sigcleanup: new function, cleans up and unsets any state + rl_callback_read_char uses. Intended to be used after a signal + +lib/readline/signals.c + - _rl_handle_signal: call rl_callback_sigcleanup on SIGINT. Fixes bug + reported to python group by Martin Panter + +lib/readline/isearch.c + - _rl_isearch_cleanup: now a public function so rl_callback_cleanup can + call it + +lib/readline/search.c + - _rl_nsearch_cleanup: now a public function so rl_callback_cleanup can + call it + +lib/readline/rlprivate.h + - _rl_[in]search_cleanup: extern declarations + +lib/readline/readline.h + - rl_callback_sigcleanup: new extern declaration + +lib/readline/doc/rltech.texi + - rl_callback_sigcleanup: documented + +lib/readline/readline.h + - bump readline version to 7.0 due to addition of rl_callback_sigcleanup + + 5/29 + ---- +builtins/declare.def + - declare_internal: if we are trying to change attributes or value for + a nameref variable whose value points to an unset variable, make + sure we create a new variable whose name is the value of the nameref + variable. That is, + + declare -n foo=bar + unset foo # unsets bar + declare -i foo + + should create a (invisible) variable named `bar' with the integer + attribute. Fixes problem reported by Greg Wooledge + + +builtins/set.def + - unset_builtin: if we find a nameref variable when we look it up with + find_variable (the returned variable has a name different from what + we looked up), make sure we use that new name for the rest of the + function rather than rely on unbind_variable to do the same thing as + find_variable. Fixes problem reported by Greg Wooledge + + - unset_builtin: if we try to unset a nameref variable whose value is + not a set variable, make sure we don't try to unset the nameref + itself, but rather the variable it points to. This ensures that the + following always works as it should + + declare -n foo=bar + unset foo # unsets bar and leaves foo unchanged + +lib/readline/funmap.c + - vi-insertion-mode: make sure it maps to rl_vi_insert_mode, which is + actually what the `i' keybinding in vi_movement_keymap maps to. + Cosmetic fix from isabella parakiss + + 6/2 + --- +general.c + - conf_standard_path: moved get_standard_path here from command.def; made + public function + +general.h + - conf_standard_path: extern declaration + + + 6/3 + --- +parse.y + - parse_matched_pair: make sure that command substitution constructs + within ${...} expansions are parsed as such using parse_comsub, so + the P_FIRSTCLOSE flag doesn't stop parsing if a right brace appears + within the comsub. Report from Christos Zoulas + +findcmd.c + - search_for_command: take two new flags for FLAGS arg: CMDSRCH_STDPATH, + which means use the command -p path, and CMDSRCH_TEMPENV, currently + unused. Existing flag value of 1 now CMDSRCH_HASH + - search_for_command: don't set `path' to NULL if it wasn't found in + the temporary environment; we can use it later + - search_for_command: look for the hashed file if temp_path == 0, not + if we set path back to 0 (or path lookup failed) + - search_for_command: just call find_user_command_in_path with a + pathlist argument that's set depending on the flags passed + - find_in_path: new function, just calls find_user_command_in_path at + this point + - search_for_command: don't put non-existent files into the hash table + +findcmd.h + - CMDSRCH_*: new flags for search_for_command + - find_in_path: extern declaration + +execute_cmd.c + - execute_disk_command: check for CMD_STDPATH and call search_for_command + with CMDSRCH_STDPATH if it's set + +builtins/command.def + - command_builtin: if -p given without -v or -V, set the CMD_STDPATH + flag in the simple command we construct from the rest of the + argument list. This fixes the command -p cmd issue with changing + $PATH for the duration of `cmd's execution reported by + + +builtins/common.h + - CDESC_STDPATH: new flag for describe_command; means to use standard + path for command -pv or -pV + +builtins/command.def + - command_builtin: if -p given with -v or -V, pass the CDESC_STDPATH + flag to describe_command + +builtins/type.def + - describe_command: if given the CDESC_STDPATH flag, use find_in_path + with the conf_standard_path() result. Since `all' will never be on + with this flag, at least not yet, we can allocate and free the path + list. Fixes the bug of a temporary environment value for PATH + preceding a `command -pv' or `command -pV' persisting when the + command finishes and means we use fewer unwind-protects + + 6/4 + --- +Makefile.in (plus other Makefile.ins) + - VPATH: remove `.' from VPATH value. It's not needed any more and it + trips a GNU make 4.1 bug on Cygwin. Report and fix from Eric Blake + + +lib/readline/histfile.c + - history_tempfile: new function, takes history file name as template + and creates a temp file name including the PID + - history_truncate_file, history_do_write: instead of creating backup + and restoring it on failure, use history_tempfile to create a temp + file name, write to it, then rename to original history filename + (handling symlinks using history_restore()). Original report and + patch from Russell Stuart + +doc/{bash.1,bashref.texi} + - ulimit: clarify that -c and -f are in increments of 512 bytes when + in posix mode. Fix from Robin Johnson via + + + 6/9 + --- +execute_cmd.c + - execute_in_subshell: don't call restore_default_signal for the exit + trap, reset_signal_handlers already does the right thing and keeps + the trap string around; no need to kill trap string. Bug report + from Miroslav Koskar + + 6/11 + ---- +nojobs.c + - find_proc_slot: now takes pid as an argument to avoid finding old + procs when pids wrap around + - add_pid: pass pid to find_proc_slot to avoid multiple instances of + the same pid in the list when pids wrap around. Fixes bug reported + by Roy Keene + +execute_cmd.c + - REAP: test for job_control == 0 also to determine whether or not + to call reap_dead_jobs, since shells without job control enabled + don't report on background process status + +doc/bash.1,lib/readline/doc/hsuser.texi + - history: clarify documentation of -a option to note that it will not + append the same line to the history file more than once. Fixes + problem reported by Reuben Thomas + + 6/12 + ---- +execute_cmd.c + - execute_in_subshell: don't bother decrementing subshell_level before + this returns; the caller will just exit. This means that + $BASH_SUBSHELL will have consistent values in the subshell and any + subsequent exit trap. Fixes bug reported by Miroslav Koskar + + - shell_execve: before longjmp to subshell_top_level, call reset_parser + to free up any input line and stack of pushed strings + +parse.y + - mk_alexpansion: if the last character of the alias is a shell + metacharacter, don't add a space to the string following the alias + value, since that will change the meaning of the command. THIS IS + NOT BACKWARDS COMPATIBLE AND MAY REQUIRE REVERTING. Inspired by an + email message from Jilles Tjoelker to austin + group + + 6/13 + ---- +subst.c + - dequote_string: don't turn strings consisting of a single CTLESC + into empty strings; return them unmodified. The idea is that there + is nothing to quote. This means that something like + c=$'\001' + x=$c + results in x containing '\001' when IFS=$'\001'. See if this will + cause problems by adding a debugging statement in the code + + 6/15 + ---- +parse.y + - CHECK_FOR_RESERVED_WORD: don't return ESAC when you read `esac' + after a `|' while in a case pattern list (parser_state & PST_CASEPAT). + This is Posix grammar rule 4 + (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10_02) + + 6/16 + ---- +jobs.c + - wait_for: make sure we queue SIGCHLD signals if a SIGCHLD trap + handler is running (signal_in_progress or IMPOSSIBLE_TRAP_HANDLER), + since we allow recursive trap invocations now + - wait_for: make sure we treat SIGCHLD as trapped if the trap handler + is set to IMPOSSIBLE_TRAP_HANDLER so we don't miss signals during + calls to run_sigchld_trap() + +trap.c + - run_pending_traps: since we allow recursive trap handler invocations, + make sure we set pending_traps[SIGCHLD] to 0 while we mark the + signal handler in progress (SIG_INPROGRESS) and don't reset it to 0 + after run_sigchld_trap returns in case more SIGCHLDs have been + queued while it's running + + 6/22 + ---- +lib/readline/readline.c + - _rl_dispatch_subseq: if we shadowed any function, not just self- + insert, bind that function to the key we shadowed and dispatch on it. + This preserves and dispatches off the original key, not ANYOTHERKEY, + and makes sure we are dispatching from a keymap with the right key + binding. Fixes bug reported by Carlos Pita + + + 6/23 + ---- +bashline.c + - attempt_shell_completion: don't read past the end of rl_line_buffer + while skipping assignment statements before command names. Fix for + bug reported by Hanno Böck + +lib/readline/parens.c + - _rl_enable_paren_matching: make paren matching work in vi insert + mode. Really, this time. Bug report from Carlos Pita + + + 6/29 + ---- +parse.y + - parse_comsub: when starting to parse a word, make sure that we set + lex_rwlen to 0 along with lex_wlen if we are in a position where we + can read a reserved word. Fixes bug reported by Nathan Neulinger + + + 6/30 + ---- +sig.h + - include unconditionally and rely on guards in sig.h to + keep from including it more than once. Irix 6.5 defines SIG_DFL + in other files and defeats the test of SIG_DFL. Fixes bug + reported by Klaus Ziegler + +alias.c + - ALIAS_HASH_BUCKETS: table size increased to 64 + + 7/7 + --- + +{jobs,nojobs}.c + - wait_sigint_cleanup: new function, to be called by longjmp targets + for wait_intr_buf. Performs any necessary cleanup of internal waitchld + state before going back to top level + +jobs.h + - wait_sigint_cleanup: new extern declaration + +builtins/wait.def + - wait_builtin: call wait_sigint_cleanup after longjmp back to + wait_intr_buf on interrupt + +[bash-4.4-alpha frozen] + + 7/7 + --- +bashline.c + - attempt_shell_completion: when skipping assignment statements, don't + skip past rl_point to find the word on which to perform programmable + completion. Fixes bug reported by Hanno Böck + + 7/10 + ---- + +pcomplib.c + - compspec_copy: set the refcount on the copy to 1, since it's a freshly + allocated copy and there are no other pointers to it. Fixes memory + leak from gen_progcomp_completions + +lib/readline/complete.c + - printable_part: if the pathname passed is just `/', just return it + instead of potentially reading before the `/'. Fixes bug reported + by Hanno Böck + + 7/11 + ---- +support/man2html.c + - change calls to malloc to use xmalloc; provide standard xmalloc + definition. Report from Bill Parker + +builtins/wait.def + - wait_intr_flag: set to denote validity of wait_intr_buf as target + for longjmp; reset by WAIT_RETURN macro; should always be 0 when + wait_builtin returns + +quit.h + - CHECK_WAIT_INTR: now also checks wait_intr_flag to ensure valid state + of wait_intr_buf before sh_longjmp + +{jobs,nojobs}.c + - wait_intr_flag: extern declaration for use by CHECK_WAIT_INTR + +sig.c + - wait_intr_flag: set back to 0 every place the shell resets state after + a jump to top_level + - sigint_sighandler: only set wait_signal_received if wait_intr_flag + indicates that the wait builtin has correctly set wait_intr_buf. + Final fix for bug reported by Ondrej Oprala + +subst.c + - parameter_brace_expand: fix so that ${!vvv@} is not interpreted as + introducing a `@' operator, but instead retains its meaning as all + variables whose name begins with vvv. Fixes bug reported by + konsolebox + + 7/14 + ---- +execute_cmd.c + - execute_connection: remove the fork optimization from and AND_AND + and OR_OR cases; it has trouble with `a && b && c', since the `&&' + is left-associative. Putting that code here can result in unwanted + fork optimizations since the `b' will end up as `second' on a + recursive call to execute_command. Bug reported by Mike Frysinger + + +builtins/evalstring.c + - optimize_fork: moved code from execute_connection to here; checks + whether the RHS of a && or || passes the suppress_fork() tests and + turns on the NO_FORK bit if so + - parse_and_execute: if suppress_fork() tests fail, check whether the + command to be executed is a connection and attempt to optimize the + fork for the right side using optimize_fork(). The key is dealing + with the entire command passed to `bash -c' or `eval' + +builtins/common.h + - optimize_fork: new extern declaration + +execute_cmd.c + - execute_command_internal: enable code put in to undo redirections + before exiting the shell due to `set -e' in the case of a shell + function that gets command-not-found or a syntax error. Reported + back in May, 2014 by Mark Ferrell + +bashhist.c + - bash_history_inhibit_expansion: enable change from 1/10 that skips + over history expansion character in command and process + substitution + + 7/15 + ---- +lib/readline/{history,undo}.c + - replace_history_data now _hs_replace_history_data + + 7/16 + ---- +lib/readline/readline.c + - make sure _rl_to_lower doesn't ever get characters that are outside + of its valid range by casting arg to unsigned char + +lib/readline/colors.h + - change completion prefix color (C_PREFIX) to be the same as C_SOCK, + which is less likely to collide with file type colorings (magenta) + +lib/readline/complete.c + - fnprint: now takes an additional argument: the full, expanded pathname + corresponding to the `toprint' argument + - fnprint: don't zero out prefix_bytes if we're not printing the + ellipisis but we still want to use prefix_bytes for displaying + the common prefix in a color + - print_filename: move colored-stats display responsibility into fnprint + - fnprint: change so colored-prefix and colored-stats can cooperate + and display filenames with multiple colors: one for the prefix and + one for the file type. The prefix is displayed in the prefix color + and the remainder of the pathname, if any, is displayed in the color + corresponding to the file type. Report and suggestion from Mike + Frysinger + + 7/17 + ---- +lib/readline/readline.[ch] + - rl_readline_state: now unsigned long, prepare for more than 32 states + + + 7/18 + ---- +lib/readline/history.h + - history_offset: now declared here, was always a global variable + - copy_history_entry: now declared here, part of the public interface + - alloc_history_entry: now declared here, part of the public interface + + 7/20 + ---- +lib/readline/readline.h + - RL_STATE_CHARSEARCH: new state, for vi mode character search. Was + previously handled by simply setting _rl_callback_func + +lib/readline/vi_mode.c + - rl_domove_motion_callback: split into two functions, remaining code + after _rl_dispatch call goes into new function + _rl_vi_domove_motion_cleanup + - rl_vi_char_search: set RL_STATE_CHARSEARCH + - rl_vi_char_search: sets `i2' member of callback data to the key used + to invoke the char search + - _rl_vi_callback_char_search: unset RL_STATE_CHARSEARCH after reading + the character to find + - _rl_vi_domove_motion_cleanup: make sure RL_STATE_VIMOTION is unset in + all cases where this function returns + - _rl_vi_domove_motion_cleanup: use `end' member of vi motion context + as value of rl_end to restore after adding blank at end of line in + rl_domove_motion_callback; avoids need to keep `old_end' and somehow + pass it between the two functions + +lib/readline/rlprivate.h + - _rl_vi_domove_motion_cleanup: new extern declaration + +lib/readline/callback.c + - rl_callback_read_char: handle RL_STATE_CHARSEARCH, including case + where char search is vi motion command for d/c/y/m and RL_STATE_VIMOTION + is set when this is called. Last of set of fixes for bug reported + by Carlos Pita with vi-mode `dty' command + in callback mode + + 7/21 + ---- +subst.c + - command_substitute, process_substitute: add QUIT call in the child + after restoring original signal handlers to catch post-fork SIGINT + or terminating signal + +jobs.c,nojobs.c + - make_child: after forking, clear interrupt_state in child + before restoring signal mask so children get their own set of + interrupts + + 7/22 + ---- +lib/sh/shquote.c + - sh_double_quote: since all uses of the return value from this function + are for display and not subject to subsequent expansion, we don't + need to protect CTLESC and CTLNUL with CTLESC. Bug report and fix + from isabella parakiss + +parse.y + - decode_prompt_string: need to protect literal instances of CTLESC + and CTLNUL with CTLESC, even if they are not coming out of one of + the backslash-expansions + +subst.c + - make_internal_declare: fixed memory leak; make_internal_declare should + free the memory it allocates to construct the word list. From Red + Hat bug 1245233; https://bugzilla.redhat.com/show_bug.cgi?id=1245233 + +lib/readline/readline.c + - _rl_dispatch_subseq: when checking whether an ESC in vi insert mode + should be treated as part of a key sequence or as a single char, + make sure we are getting input from the keyboard before we check + _rl_input_queued(). If we are getting input from a macro, this + causes a needless delay. Report from Carlos Pita + + + 7/23 + ---- +input.c + - save_bash_input: before checking to see whether or not a new fd has a + stale associated buffer, make sure that the new fd is within bounds. + Bug report and fix from Alexey Makhalov + + + 7/24 + ---- +doc/{bash.1,bashref.texi} + - note that the `return' builtin accepts arguments beginning with `-' + without requiring `--' + + 7/27 + ---- +examples/loadables/Makefile.in + - add variables and targets to support `make install'; installs + supported builtins in $(libdir)/bash + + 7/28 + ---- +lib/readline/{readline,rlprivate}.h, lib/readline/display.c + - rearrange some structure members for better alignment and to reduce + padding. Fix from + +tests/run-* + - use BASH_TSTOUT instead of hardcoded /tmp/xx as output file + +trap.[ch] + - maybe_set_error_trap: set a trap for the ERR trap if it is not already + trapped; similar to maybe_set_debug_trap back from 4/10 + +lib/malloc/malloc.c + - internal_free: make sure `ubytes' is initialized if MALLOC_WATCH is + defined and we'll be passing it to _malloc_ckwatch. Report from + Flavio Medeiros + +execute_cmd.c + - execute_function: use maybe_set_error_trap in the same way as + maybe_set_debug_trap. Fixes bug reported by David Waddell + + + 7/29 + ---- +jobs.c + - wait_for: no longer need to call job_signal_status when checking + whether a comsub shell reaped a child that died due to SIGINT; code + now uses child_caught_sigint + + 7/30 + ---- +builtins/exec.def + - exec_builtin: after call to restore_original_signals, need to call + default_tty_job_signals to undo changes done by initialize_job_signals. + Fix for problem reported by Andreas Schwab + +doc/{bash.1,bashref.texi} + - clarify definition of metacharacter to explicitly include newline; + prompted by report from George Gallo + + 8/3 + --- +lib/readline/search.c + - _rl_free_history_entry: should be void, not int. Report from + Dilyan Palauzov + +general.h + - sh_load_func_t, sh_unload_func_t: new function pointer types, used by + enable for load and unload hook functions + +builtins/enable.def + - dyn_load_builtin: attempt to execute a function named + BUILTIN_builtin_load, where BUILTIN is the name of the command being + loaded. If that function returns 0, the load fails + - dyn_unload_builtin: attempt to execute a function named + BUILTIN_builtin_unload, where BUILTIN is the name of the command + being unloaded. It offers a dynamic builtin a way to clean up after + itself. Inspired by suggestion from Piotr Grzybowski + in response to a bug report from isabella + parakiss + + 8/6 + --- +lib/readline/colors.[ch] + - _rl_print_color_indicator: now takes `const char *' argument + +lib/readline/complete.c + - colored_stat_start: now takes `const char *' argument + +lib/malloc/table.h + - ma_table_t: `file' member is now `const char *' + +lib/malloc/table.c + - mlocation_register_alloc: make sure variable assigned to `file' in + ma_table_t is of type `const char *'. Fixes from Dilyan Palauzov + + +lib/termcap/termcap.[ch] + - tputs: should return int instead of void + +lib/readline/readline.h + - RL_STATE_DONE: correct value, avoid collision + +lib/readline/vi_mode.c + - _rl_vi_redoing: now global, added _rl_ prefix to `vi_redoing' + +lib/readline/readline.c + - _rl_subseq_result: call _rl_dispatch_subseq instead of rl_dispatch to + avoid changing _rl_dispatching_keymap + - _rl_subseq_result: in the -2 case, set _rl_dispatching_keymap to the + map passed as an argument. Without this, vi mode doesn't call + rl_vi_set_last when it should + - _rl_dispatch_subseq: if redoing a vi mode command with `.' + (_rl_vi_redoing != 0) in callback mode and we're indirecting into + another keymap that has shadowed the key corresponding to the command + we are redoing, just call _rl_subseq_result immediately: vi redo + doesn't need to read any additional input, and rl_vi_redo assumes + that a single call to rl_dispatch is sufficient. Fixes bug reported + by Carlos Pita + + 8/7 + --- +subst.c + - parameter_brace_expand: if a substitution (parameter expansion) error + occurs, and shell_compatibility_level is <= 43, return expansion error + as in all previous versions. If shell_compatibility_level is > 43, + a posix-mode non-interactive shell will consider this a fatal error. + Problem reported by Christian Neukirchen + +doc/bashref.texi + - documented that word expansion errors cause fatal errors in posix mode + non-interactive shells + + 8/8 + --- +subst.h + - SD_COMPLETE: skip_to_delim being called as part of word completion + - SX_COMPLETE: one of the string_extract functions being called as + part of word completion + +bashline.c + - find_cmd_start,find_cmd_end,find_cmd_name: call skip_to_delim with + SD_COMPLETE flag + +subst.c + - skip_double_quoted: takes new flags argument; changed callers + - skip_double_quoted: if flags argument includes SX_COMPLETE, pass it + to extract_command_subst + - extract_command_subst: if flags&SX_COMPLETE, call + extract_delimited_string instead of xparse_dolparen, since completion + may call this for unterminated command substitutions. Fixes + (imperfectly) bug reported by Ingo Ruhnke + - skip_to_delim: if passed the SD_COMPLETE flag, pass the SX_COMPLETE + flag to skip_double_quoted + - char_is_quoted: pass SX_COMPLETE flag to skip_double_quoted + - unclosed_pair: pass SX_COMPLETE flag to skip_double_quoted + + 8/9 + --- +execute_cmd.c + - time_command: catch longjmps to top_level and print command timing + statistics even after a jump to top_level. Fixes issue reported by + Sam Watkins + + 8/10 + ---- +config-top.h + - OPENLOG_OPTS: if SYSLOG_HISTORY is defined, define to LOG_PID, so + each message is tagged with the pid + +bashhist.h + - bash_syslog_history: the first time it's called, call openlog with + OPENLOG_OPTS and SYSLOG_FACILITY + + 8/11 + ---- +doc/{bash.1,bashref.texi} + - GROUPS,FUNCNAME: change description to note that assignments are + silently ignored, but do not return an error (which would constitute + an assignment error and cause posix mode shells to abort). Problem + pointed out by Grzegorz Bajson + + 8/12 + ---- +subst.c + - parameter_brace_expand_indir: if the value of the indirectly expanded + variable isn't something that the shell would expand if it were inside + ${}, error out right away before calling parameter_brace_expand_word. + Fixes problem reported by isabella parakiss + - parameter_brace_expand: handle returning &expand_wdesc_error or + &expand_wdesc_fatal from parameter_brace_expand_indir in case it does + that someday + + 8/13 + ---- +jobs.c + - {save,restore}_pipeline: saved_pipeline now a linked list of pipelines, + new ones allocated in save_pipeline and freed in restore_pipeline. + This allow multiple nested calls to save_pipeline (e.g., in traps + and then in process substitution). Fix for bug reported by isabella + parakiss + +print_cmd.c + - named_function_string: if printing a function with the same name as a + reserved word, add the `function ' keyword before the name to avoid + parsing problems when trying to reuse it as input. Fix for bug + reported by isabella parakiss + + 8/14 + ---- +lib/readline/text.c + - rl_insert: when optimizing typeahead, make sure we set rl_last_func + ourselves if we set pending input, since the mainline code path + won't set rl_last_func if input is pending. Fixes bug reported by + Hiroo Hayashi + + 8/15 + ---- +builtins/type.def + - describe_command: if using the short description (CDESC_SHORTDESC) in + posix mode, describe posix special builtins as such. Requested by + Stephane Chazelas + +builtins/enable.def + - BASH_LOADABLES_PATH: a colon-separated list of directories where bash + looks for loadable builtins specified as arguments to `enable -f' + +doc/{bash.1,bashref.texi} + - BASH_LOADABLES_PATH: document new shell variable + +configure.ac,Makefile.in,builtins/Makefile.in + - loadablesdir: set in configure, substitute into Makefiles. Reserved + for future use + + 8/18 + ---- +subst.c + - shell_expand_word_list: if make_internal_declare fails, make sure to + propagate that error return back and make the assignment statement + fail. Fixes seg fault reported by Sergey Tselikh + + 8/20 + ---- +builtins/declare.def + - declare_internal: made a slight tweak to the warning message about + quoted compound assignments by printing it only if the array (indexed + or assoc) does not already exist + + 8/21 + ---- +braces.c + - mkseq: call strvec_dispose before throw_to_top_level if we saw SIGINT + to avoid a memory leak + +trap.c + - maybe_set_return_trap: set the RETURN trap to string if it's not + already trapped, in the same way as the debug and error traps + +execute_cmd.c + - execute_function: use maybe_set_return_trap to allow functions to set + return traps that persist across calls even if function tracing is + enabled + +lib/readline/input.c + - rl_gather_tyi: make sure errno reset to 0 after select call, for + ioctl and read + - rl_gather_tyi: if read returns -1/EIO, return -1 + - rl_read_key: if rl_gather_tyi returns -1/EIO, return READERR if in + RL_STATE_READCMD (reading command in readline_internal_char), EOF + if not (like rl_getc). Continue to return '\n' on other errors; + rl_done = 1 in any case. Fix for issue reported by + Lubomir Rintel + +lib/readline/{misc,text,vi_mode}.c + - fix return values from rl_read_key to handle < 0 + + 8/22 + ---- + +parse.y + - parsing_redirection: macro that expands to true if the last read + token (always passed as an argument) is a redirection token that + will leave us reading a word that's the target of the redirection + - command_token_position: make sure that even if the parser state + indicates we are reading a simple command (PST_REDIRLIST), we do + not perform alias expansion on a WORD that is part of a redirection, + using parsing_redirection() to do so. Fixes but reported to Red Hat + by Robert Alm Nilsson + https://bugzilla.redhat.com/show_bug.cgi?id=795795 + +builtins/declare.def + - declare_internal: only print the warning now if the variable is not + already an array or if we are not creating an array with -a or -A, + cuts down the spurious warnings + - declare_internal: even if the rhs of the assignment looks like a + compound array, if we're not assigning to an existing array or we're + not creating an array, make it an array subscript assignment. This + means things like declare a[1]='(foo)' and a[1]='(foo)' behave + identically + +builtins/help.def + - wdispcolumn: change use of displen and add new dispchars variable to + deal with locales where each wide character does not take up one + column position. Fix for bug reported by Mingye (Arthur) Wang + + + 8/23 + ---- +sig.c + - sigint_sighandler: if we get a SIGINT while this_shell_builtin == + wait_builtin, perform the special handling only if wait_intr_flag + is non-zero, don't just use it to set wait_sigint_received. This + makes sure we run bashline_set_event_hook. Fixes bug reported by + isabella parakiss + + 8/25 + ---- +subst.h + - SD_HISTEXP: new flag for skip_to_delim, indicates we are looking for + the history expansion character (special double quote handling) + - skip_to_delim: handle SD_HISTEXP flag, changes double quote handling + to be similar to history library: don't call skip_double_quote, make + sure single quotes aren't special in double quotes, but continue to + skip over $(), ${}, and other similar constructs + + 8/27 + ---- +support/bash.pc.in + - new file, pkgconfig template for bash, installed to support nascent + loadable builtins dev environment + +examples/loadables/Makefile.inc + - new file, example Makefile with correct definitions for loadable + builtin development + +configure.ac + - headersdir: directory where headers get installed to support loadable + builtin development + - examples/loadables/Makefile.inc, support/bash.pc: create + +Makefile.in + - INSTALLED_HEADERS, INSTALLED_BUILTINS_HEADERS, INSTALLED_INCFILES, + CREATED_HEADERS: new variables holding names of include files to + install into $(headersdir) for loadable builtin development + - install-headers,install-headers-dirs: new targets to support + installing headers into $(headersdir) and subdirectories for loadable + builtin development + - uninstall-headers: target to uninistall headers in $(headersdir) + - uninstall: call uninstall-headers whether or not install-headers + was done; add uninstall in examples/loadables + - install: add install in examples/loadables + - clean: add clean in examples/loadables + +examples/loadables/Makefile.in + - install-supported, install-unsupported: new targets, make install + chooses one based on $(SHOBJ_STATUS) + - install-supported: now cds to the top level build directory and + installs the header files + - install-supported: now installs Makefile.inc to $(loadablesdir) as + an example + - uninstall-supported,uninistall-unsupported: uninstall targets, + make uninstall chooses one based on $(SHOBJ_STATUS) + + 8/31 + ---- +lib/glob/Makefile.in + - CPPFLAGS: move after ${INCLUDES} so library-specific include paths + take precedence. This is what the other parts of the shell do. + Report from Poor Yorick + +builtins/read.def + - reset_alarm: cancel alarm before restoring signal handler to avoid + possible race condition. Report and fix from Oleg Popov + + +subst.c + - string_extract_verbatim: if SEPARATORS is "'", don't short-circuit + to string_extract_single_quoted unless the SX_NOCTLESC flag is set. + Callers expect this function to honor CTLESC, even to quote a single + quote. Fixes bug reported by isabella parakiss + and several others + + 9/2 + --- +include/chartypes.h + - TOCTRL: handle '?' by special-casing it to 0x7f. Fixes a problem + with $'\c?' reported by Helmut Karlowski + +redir.c + - write_here_string: don't word-split the here string document. The + bash documentation has always said this doesn't happen, even though + bash has done so for years, and other shells that implement here- + strings don't perform any word splitting. The practical effect is + that sequences of IFS characters are collapsed to spaces. Fixes + bug reported by Clint Hepner + + 9/3 + --- +doc/{bash.1,bashref.texi} + - add \? to the list of backslash escapes expanded by $'...' ANSI-C + quoting. It was expanded but not documented + +lib/readline/util.c + - _rl_audit_tty: updated from Red Hat patch + +lib/readline/readline.c + - HAVE_DECL_AUDIT_USER_TTY: correct #define check + + 9/13 + ---- +shell.c + - read_from_stdin: make sure value set to 1 appropriately if the shell + is reading from standard input, as Posix seems to specify (?) + +lib/readline/kill.c + - _rl_copy_to_kill_ring: don't assume that rl_kill_ring has been + allocated if _rl_last_command_was_kill is non-zero; make sure it's + non-null before indexing into it + + 9/15 + ---- +variables.c + - initialize_shell_variables: cope with a NULL env pointer. Fixes bug + reported by ziyunfei <446240525@qq.com> + + 9/16 + ---- +builtins/exec.def + - exec_builtin: if -c is supplied, pass an empty array instead of a NULL + pointer to shell_execve + +variables.c + - set_pwd: only believe $PWD if it begins with a slash; try to + canonicalize it and set it to physical path if canonicalization fails. + Reported by ziyunfei <446240525@qq.com> + + 9/17 + ---- +subst.c + - do_compound_assignment: make sure to dispose of word list generated + by expand_compound_array_assignment; fixes memory leak reported in + https://bugzilla.redhat.com/show_bug.cgi?id=1264101 + +variables.c + - adjust_shell_level: clamp the value of shell_level at 1000 and reset + there, instead of > 1000, since the itos replacement code doesn't + handle the value 1000. Fixes bug reported by ziyunfei + <446240525@qq.com> + +shell.h,parse.y + - save_parser_state,restore_parser_state: now save and restore + redir_stack, short-circuiting if need_here_doc == 0. If we save a + non-zero value for need_here_doc, we have to make sure there is + something valid for gather_here_documents to work on. Fixes bug + reported by Brian Carpenter + + 9/18 + ---- +array.c + - array_to_assign: use ansic_shouldquote to check whether each element + value contains non-printable characters and use ansic_quote to + generate the value instead of using sh_double_quote unconditionally + +assoc.c + - assoc_to_assign: if either the key or the value of an associative + array element contains non-printable characters (ansic_shouldquote + returns true), use ansic_quote to quote them instead of using double + quotes unconditionally + + 9/19 + ---- +subst.c + - pat_subst: handle REP being NULL. Fixes bug reported by Brian + Carpenter + +builtins/evalstring.c + - parse_string: if we get a longjmp to top_level with DISCARD as the + code (in which case we are going to go on), return -DISCARD to our + caller (always xparse_dolparen) after doing our own cleanup instead + of calling jump_to_top_level + +parse.y + - xparse_dolparen: if parse_string returns < 0, do the appropriate + cleanup and then jump_to_top_level with the negative of the return + value. This allows us to do the appropriate parser cleanup in + case we're not going to exit the shell. Fixes bug reported by Brian + Carpenter + +subst.c + - extract_delimited_string: if a recursive call to one of the extract_ + functions or a call to ADVANCE_CHAR leaves i past the end of the + string, cut the loop off at the end of the string. Fixes bug + reported by Brian Carpenter + + 9/20 + ---- +subst.c + - get_var_and_type: return appropriate values if variable indirection + results in a NULL variable. Fixes bug reported by Brian Carpenter + + +lib/readline/history.c + - history_get_time: handle strtol overflows caused by malicious + modifications to timestamps in the history file. Fixes issue + reported by rens@endoria.net + + 9/21 + ---- +lib/readline/rlconf.h + - ENABLE_AUDIT_TTY_SUPPORT: now undefined (off) by default + + 9/24 + ---- +jobs.c + - waitchld: if we get a SIGINT while waiting for a child to exit, but + the kernel doesn't interrupt the waitpid(2) call, assume the child + caught SIGINT if it exited for some reason other than SIGINT. Fix + suggested by Stephane Chazelas + +input.c + - make_buffered_stream: use B_TEXT in buffered stream flags instead + of (typo) O_TEXT. Report and fix from Eric Blake + + 9/27 + ---- +execute_cmd.c + - shell_execve: call reset_parser before calling initialize_subshell, + which calls delete_all_aliases. reset_parser wants to free the + pushed string list, which has pointers back into the alias table + (use after free) + - execute_simple_command: if we fork for an async command, make sure + the child process increments shell_level before performing any + word expansions, so $BASH_SUBSHELL is incremented. Fixes issue + reported by ziyunfei <446240525@qq.com> + + 10/1 + ---- +builtins/kill.def + - kill_builtin: make -L equivalent to -l for compatibility with other + (Linux) versions of kill + +doc/{bash.1,bashref.texi} + - kill: document new `-L' option + + 10/2 + ---- +[bash-4.4-beta frozen] + + 10/5 + ---- +doc/{bash.1,bashref.texi} + - LC_TIME: document that the shell recognizes it and calls setlocale + when it changes; and that the shell uses it for time formatting + + 10/6 + ---- +subst.c + - skip_single_quoted: now takes an additional `flags' argument, like + skip_double_quoted; changed callers + - skip_single_quoted: now pays attention to SX_COMPLETE flag, allows + backslash to escape single quote, like $'...' allows + - skip_to_delim: added case where we are completing and we are + skipping over a $'...' string to call skip_single_quoted with + SX_COMPLETE flag to allow backslash to quote single quote. Fixes + bug reported by Daniel Colascione + - char_is_quoted: make analogous changes to handle $'...' so we can + accommodate $'ab \' cd' + + 10/11 + ----- +subst.c,bashjmp.h + - no_longjmp_on_fatal_error: now global so other parts of the shell can + use it + +arrayfunc.c + - expand_array_index: if no_longjmp_on_fatal_error is non-zero, don't + longjmp to top_level, just return 0. Fixes bug reported by + isabella parakiss + +subst.c + - CQ_RETURN: restore old value of no_longjmp_on_fatal_error (oldjmp); + make sure all callers (skip_matched_pair, skip_to_delim, + char_is_quoted) save no_longjmp_on_fatal_error to oldjmp before + setting it to 1 + +expr.c + - expr_streval: if longjmping after an unbound variable error, jump + back to expr toplevel (evalbuf) if no_longjmp_on_fatal_error is set + in an interactive shell + +variables.c + - push_func_var: if pushing an array variable, such as when a variable + in the temporary environment is promoted to an array by mapfile when + the shell is in posix mode (so variable assignments preceding special + builtins or shell functions persist in the shell environment after + the builtin returns), make sure to copy the array or hash table so + the variable is duplicated correctly. Fixes seg fault reported by + Linda Walsh + + 10/13 + ----- +variables.c + - initialize_shell_variables: add call to sv_shcompat, so BASH_COMPAT + can be set in the initial environment + +execute_cmd.c + - execute_function: set loop_level to 0 only if shell_compatibility_level + is greater than bash-4.3; this was kind of an incompatible change. + Report from Carlos Pita + +COMPAT,doc/{bash.1,bashref.texi} + - compat43: added loop_level changes to description + + 10/15 + ----- +lib/sh/casemod.c,lib/readline/display.c + - make sure mb_cur_max variable is defined outside of HANDLE_MULTIBYTE + if it's used outside HANDLE_MULTIBYTE. Fixes from Greg Wooledge + + +support/Makefile.in + - bash.pc: remove as part of distclean, not clean. Report from Andreas + Schwab + + 10/17 + ----- +subst.c + - array_var_assignment: make sure to call quote_string or quote_escapes + on the assignment string, so spaces in the assignment survive word + splitting. Fixes bug reported by isabella parakiss + + + 10/20 + ----- +doc/{bash.1,bashref.texi} + - word splitting: make sure that newline is listed as one of the IFS + whitespace characters. Fixes omission reported by ziyunfei + <446240525@qq.com> + +lib/readline/histfile.c + - history_do_write: make sure that we only create and use the tempfile + if the history file exists and is a regular file. Reported several + times, most recent check the result of a report from + + + 10/22 + ----- +jobs.c + - delete_all_jobs: if running_only == 0, we are eventually going to + clear the bgpids list, so don't bother to add pids to it in + delete_job (call with DEL_NOBGPID flag if running_only == 0) + + 10/24 + ----- +jobs.[ch] + - bgpids: new implementation from a patch from John Fremlin + , uses an array for the list of the last CHILD_MAX + terminated background pids, and a separate hash table to search it. + The storage can be freed as a unit, and the size of the hash table + (currently 4096) is independent of the size of the bgpids table + +subst.c + - inherit_errexit: new variable to control whether or not command + substitution inherits the -e (errexit) option. Disabled by default + +general.c + - posix_initialize: set inherit_errexit = 1 when Posix mode is enabled + +builtins/shopt.def + - inherit_errexit: new shell option, tracks value of inherit_errexit, + allows command substitution to inherit the setting of errexit without + posix mode. From a request and patch submitted by Christoph Gysin + + +{version,version2}.c + - use #if HAVE_SNPRINTF instead of #if defined in case configure + decides to #define it to 0. Fixes problem reported by Klaus Ziegler + + +configure.ac + - when checking for sys/resource.h, make sure to include + for the benefit of both old systems that require it and new versions + of autoconf that require a header file to compile to report its + presence. Reported by Klaus Ziegler + + 10/26 + ----- +subst.h + - SD_ARITHEXP: new flag value for skip_to_delim, supports parsing + arithmetic expressions in parameter expansions + +subst.c + - skip_to_delim: handle SD_ARITHEXP flag by skipping parentheses for + subexpressions and allowing ?: expression to not terminate an + arithmetic expression delimited by `:' + - skiparith: just call skip_to_delim with the SD_ARITHEXP option and + the right delimiter string and return the right result. Fixes bug + reported by + +include/shmbchar.h + - strip out everything except what is needed to support is_basic and + similar functions, since the mbchar_t typedef apparently conflicts + with some AIX-specific type definition. Problem reported by + Michael Felt + + 10/27 + ----- +builtins/{set,ulimit}.def + - {set,ulimit}_builtin: make sure that --help is treated the same as + -? and prints a message and returns. Fixes bug reported by ziyunfei + <446240525@qq.com> + +builtins/*.def + - make sure to consistently use builtin_help() instead of mix of that + function and builtin_usage() + + 10/29 + ----- +doc/{bash.1,bashref.texi} + - BASH_CMDS, BASH_ALIASES: note that removing elements from these + array variables is not currently reflected in the command hash + table and alias list, respectively. Reported by isabella parakiss + + + 10/30 + ----- +eval.c + - reader_loop: if PS0 is set in an interactive shell, expand and + display it after reading a (complete) command but before executing + it. This differs from the DEBUG trap because the DEBUG trap is + executed once for each simple command (and some others, like each + time through a for loop). From a patch submitted by Dan Stromberg + + +parse.y + - prompt_again: set ps0_prompt from $PS0 in an interactive shell + +doc/{bash.1,bashref.texi} + - PS0: document new prompt string + + 11/3 + ---- +subst.c + - cond_expand_node: if special > 0, remove quoted nulls from the word + list, since no word splitting takes place. Fixes bug reported by + Corentin Peuvrel + + 11/4 + ---- +doc/{bash.1,builtins.texi} + - inherit_errexit: add to shopt description; modify Posix mode + description + + 11/9 + ---- +lib/readline/util.c + - rl_tilde_expand: fix out-of-bounds read caused when this function + is invoked with rl_point == 0. Bug reported by Hanno Böck + + + 11/11 + ----- +{nojobs,jobs}.c + - get_original_tty_job_signals: force the original signal disposition + for SIGTSTP/SIGTTIN/SIGTTOU to SIG_DFL in interactive shells. This + will force child processes to get SIG_DFL even if the shell is + started with those signals ignored. From a bug report from + Keith Thompson + + 11/13 + ----- +make_cmd.c + - make_function_def: if a function is being defined without a source + file, and the shell has not been initialized, assume that the + function is being imported from the environment and set the + source_file struct member to "environment". Set to "main" if the + shell has been initialized. Fixes bug reported on savannah by + Arno-Can Uestuensoez + https://savannah.gnu.org/support/index.php?108903 + +subst.c + - skip_to_delim: if the shell is in posix mode (posixly_correct != 0) + and performing history expansion ((flags & SD_HISTEXP) != 0), allow + double quotes to quote the history expansion character. TENTATIVE + CHANGE, inspired by + https://savannah.gnu.org/support/index.php?108491 + + 11/14 + ----- +jobs.c + - wait_for: modify change from 4/23 to only give the terminal to + shell_pgrp if not running in the background and subshell_environment + indicates we're not in a pipeline and not an async command. Fixes + bug reported by konsolebox + + 11/16 + ----- +doc/{bash.1,bashref.texi} + - document new posix-mode behavior of not giving ! special meaning + within double quotes, even if histexpand is enabled + + 11/17 + ----- +builtins/evalfile.c + - fc_execute_file: pass FEVAL_BUILTIN flag to _evalfile so it returns + the value of parse_and_execute after executing the commands in the + file. Fixes bug reported by Chris Marusich + + 11/20 + ----- +subst.c + - process_substitute: don't unconditionally set pipeline_pgrp to + shell_pgrp; do that only if pipeline_pgrp == 0 (we haven't forked + yet) or if we know we haven't forked for a command, a pipeline, + or an async command. Fixes bug reported by + + as https://savannah.gnu.org/support/index.php?108593 + + 11/24 + ----- +variables.c + - set_pwd: inherit the value of OLDPWD from the initial environment + if it names a directory. From a report from John Wiersba + + +builtins/set.def + - -T: fix help text to note that the DEBUG and RETURN traps are both + inherited if this is set. Report from Grisha Levin + + +doc/{bash.1,bashref.texi} + - HISTIGNORE,GLOBIGNORE: note that the pattern matching is subject to + the setting of the `extglob' variable. Clarification raised by + Aharon Robbins + +builtins/jobs.def,doc/{bash.1,bashref.texi} + - disown: add text to synopsis making it clear that disown takes a + pid argument. From a report from Matthew Stanfield + + +findcmd.c,doc/{bash.1,bashref.texi} + - EXECIGNORE: change pattern matching to use FNMATCH_EXTFLAG like other + IGNORE variables. From a report from Aharon Robbins + +trap.c + - _run_trap_internal: make sure to catch and use return values supplied + as arguments to `return'; instead of just catching return, make sure + we use return_catch_value as well. Fixes bug reported by + Grisha Levit , affects RETURN, DEBUG, ERROR + traps + + 11/30 + ----- +lib/readline/display.c + - rl_redisplay: fix code that deals with prompts that contain + multibyte characters whose physical length is longer than the screen + width (so the prompt line wraps) to deal with invisible characters + in the prompt and set the inv_lbreaks offsets correctly and set + lpos appropriately + - _rl_move_cursor_relative: always called with either visible line or + invisible line. Decide whether we are being called with the invisible + line (or a portion thereof) as the DATA argument; make sure to account + for invisible characters in the last line of the prompt by offsetting + the desired buffer offset (NEW) by where DATA starts in invisible line + and checking whether that is past the last invisible character in + the prompt + - _rl_move_cursor_relative: do the same for the visible line by using + the visible line lbreaks array instead of _rl_screenwidth, since + that fails in the presence of multibyte characters (buffer offset + vs. physical screen position). These fix bug with prompts with + multibyte characters and invisible characters that are longer than + the screen width reported by Ryo Furue + + 12/1 + ---- +parse.y,make_cmd.c + - here_doc_first_line: new variable, set to non-zero to indicate the + first line of possibly multiple here documents associated with the + current command. Set in parse.y:gather_here_documents() before + reading any here documents, set to 0 after reading the first line + of any here document in make_cmd.c:make_here_document(). + +parse.y + - history_delimiting_chars: if parser_state indicates we are reading + a here document, don't use current_command_line_count to see whether + or not we're on the first line of a here document -- it can be fooled + by multi-line commands (or even backslash-escaped newlines). Use + here_doc_first_line to check that directly. Fixes bug reported by + Geoffrey Allott + +shell.h,parse.y + - save and restore here_doc_first_line as part of the shell's parser + state + +lib/sh/tmpfile.c + - use ANSI-C rand() interface if random() not available. Fixes problem + with linking on (ancient) Solaris 2.4 reported by Klaus Ziegler + + + 12/2 + ---- +aclocal.m4 + - RL_LIB_READLINE_VERSION: if cross-compiling, assume current version + of readline if cross-compiling bash while using an external readline + library. Fix from Barry Davis + +execute_cmd.c + - execute_builtin: save and restore value of builtin_ignoring_errexit + instead of assuming we can set it back to 0 -- the ignore-errexit + cases might be nested + - execute_builtin: after a builtin executes and eval_unwind is set, + set exit_immediately_on_error to 0 if builtin_ignoring_errexit is + set, and back to the value of errexit otherwise, just like the + code that sets -e does. Fixes short-circuiting bug reported by + Marcin Swigon + + 12/5 + ---- +builtins/setattr.def + - set_or_show_attributes: instead of using a fixed string for the + options argument to `declare', which results in export adding the + readonly attribute, build the option string dynamically like in + subst.c:shell_expand_word_list() + - set_or_show_attributes: don't add the -r option to declare if the + attribute passed as an argument doesn't include att_readonly; add + -x if the attribute includes att_exported + - set_or_show_attributes: add the -g option to declare so readonly + and export in functions that go through this code path don't create + local variables. Part of fix for bug reported by ziyunfei + <446240525@qq.com> + +execute_cmd.c + - make_internal_declare: if we have an assignment builtin that isn't + supposed to create local variables (export/readonly), make sure to + add the W_ASSNGLOBAL flag to each assignment statement word. + Part of fix for bug reported by ziyunfei <446240525@qq.com> where + readonly can create local variables when invoked with a compound + array assignment as an argument within a shell function + +subst.c + - make_internal_declare: added third argument: command name. Not used + in any useful way yet + - do_compound_assignment: handle attempted assignments to readonly + variables and print error messages, like bind_variable does and the + callers expect. This means that assignments to readonly array + variables can't go through a code path that allows them to fail + silently + +doc/Makefile.in + - uninstall: run install-info --delete after removing the installed + info file to update the directory file + +execute_cmd.c + - execute_disk_command: since we still (and have always) perform + redirections in child processes, we need to mark that state so + we know that we're in a child process. subshell_performing_redirections + is the new variable; non-zero when executing do_redirections() + +subst.c + - process_substitute: if we are executing process substitution in a + redirection expansion context (expanding_redir == 1), the child + process should not have access to any temporary environment the + parent has. Call flush_tempenv() in the child process to get rid + of it. Fix for bug reported by Clint Hepner + + 12/9 + ---- +jobs.c + - waitchld: if in posix mode and attempting to let SIGCHLD interrupt the + wait builtin, make sure wait_intr_flag is non-zero before trying to + longjmp to wait_intr_buf. Fixes bug reported by Aharon Robbins + + + 12/10 + ----- +lib/readline/display.c + - update_line: if a prompt containing invisible characters changes, + and the change is within the prompt string, we need to redraw the + entire prompt. After that redraw, if the cursor position is after + the first index where the old and new lines differ, we can short- + circuit the update if the line length stays the same + - update_line: if we redraw the entire prompt string because the prompt + contains invisible characters and the first difference is in the + middle of the prompt, we possibly need to adjust our idea of the + first differing character in the old and new lines. We punt and do + a dumb update in this case. Fixes bug with dynamic vi-mode mode + strings containing invisible characters reported by Dylan Cali + + + 12/11 + ----- +lib/readline/display.c + - update_line: if we move up to a new screen line, we need to recompute + the number of invisible characters on the new current line + (visible_wrap_offset). Fixes bug reported to bug-readline by + Per Bothner + - update_line: update code that attempts to compute where we are in + the new line buffer. Fixes `vt100' bug reported to bug-readline by + Per Bothner + + 12/18 + ----- +execute_cmd.c + - execute_function: unwind-protect and restore BASH_ARGC and BASH_ARGV + - restore_funcarray_state: now global + +execute_cmd.h + - make func_array_state type global, add extern function declaration + for restore_funcarray_state + +builtins/evalfile.c + - _evalfile: use restore_funcarray_state and pop_args as unwind-protects + to restore BASH_{SOURCE,LINENO,ARGC,ARGV} and FUNCNAME on interrupts. + Fixes bug reported back on 11/10 by Grisha Levit + + + 12/20 + ----- +lib/readline/isearch.c + - _rl_isearch_dispatch: after removing the only character from the + search string with DEL, leaving the search string empty, don't match + the previous line if we didn't have a match before + + 12/22 + ----- +bashhist.c + - enable_history_list,remember_on_history: initialize to 0 instead of 1 + +shell.c + - init_interactive,init_interactive_script: set enable_history_list and + remember_on_history to 1 (defaults) + + 12/23 + ----- +variables.c + - initialize_shell_variables: don't inherit PS4 from the environment + if the shell is running with euid == 0; just reset it to `+ '. This + is a known potential vulnerability, since PS4 expansion performs + command substitution in the root shell's context before displaying + it. Discussion started by up201407890@alunos.dcc.fc.up.pt + +bashhist.c + - bash_history_reinit: initialize remember_on_history to the value of + enable_history_list (set -o history). Fixes bug reported by + Stephane Chazelas with command-line + option `-o history' not having any effect + + 12/28 + ----- +lib/readline/{history.h,histfile.c} + - history_file_version: new int variable, reserved for future use + - history_multiline_entries: new int variable, can be set by the + calling application to enable reading multi-line history entries + from the history file (currently undocumented) + +lib/readline/history.c + - _hs_append_history_line: new function, append a line passed as an + argument to a specified history entry, used to create multi-line + history entries + +lib/readline/histfile.c + - read_history_range: implement a heuristic that temporarily sets the + history comment character if the first line read from the history + file looks like it has is a timestamp (#[:digit:]) so we can read + timestamps from the history file properly. Originally reported + back in March 2015 by Christoph Anton Mitterer + - read_history_range: make sure history_multiline_entries is non-zero + if the history file looks like it has timestamps + - read_history_range: if we think we have a history file with timestamps + and we read more than one non-timestamp consecutive history lines, + assume they are part of a single multi-line history entry and paste + them together using _hs_append_history_line. Feature most recently + requested by james harvey , also suggested + by Christoph Anton Mitterer + +examples/loadables/setpgid.c + - setpgid: new loadable builtin, originally contributed by Jason + Vas Dias + + 12/29 + ----- +bashhist.c + - bash_history_inhibit_expansion: fix cases where a history expansion + should be skipped because it's in a command or process substitution + but there is another history expansion preceding the substitution + on the command line. Don't let the previous history expansion fool + the function into saying the command substitution history expansion + should be performed + +builtins/evalstring.c + - parse_prologue: always unwind-protect history_expansion_inhibited, + since history expansion can be enabled in non-interactive shells, + and calling eval once in a non-interactive shell inhibits history + expansion forever even if `set -o histexpand' was run before the + eval + +builtins/common.h + - SEVAL_NOHISTEXP: new flag for parse_and_execute/parse_string; means + to not perform history expansion (decouple from SEVAL_NOHIST, which + now means to not remember commands on history); changed all callers + that had SEVAL_NOHIST to have SEVAL_NOHIST|SEVAL_NOHISTEXP + +builtins/evalstring.c + - parse_prologue: instead of calling bash_history_disable, set + remember_on_history to 0 if SEVAL_NOHIST and history_expansion_inhibited + to 1 if SEVAL_NOHISTEXP + + 12/30 + ----- +subst.c + - skip_to_histexp: new function, a stripped-down version of skip_to_delim. + Used to skip to the next unquoted instance of the history expansion + character, handles peculiar quoting and command/process substitution + requirements. Better fix for bug reported by + Zigmund.Ozean@zig-home.localdomain back in January, prompted by report + from Keith Thompson + +bashhist.c + - bash_history_inhibit_expansion: use skip_to_histexp instead of + skip_to_delim + +subst.c + - parameter_brace_expand_rhs: if the rhs of an expansion is "$@" and + IFS is null, we need to separate the (quoted) positional parameters + in the returned word with a space, and mark the word as needing to + be split on spaces (W_SPLITSPACE). Fix for issues reported back in + October 2014 as the result of an austin-group discussion, and just + re-reported by Martijn Dekker + + 1/4/2016 + -------- +execute_cmd.c + - execute_simple_command: if autocd is set, invoke a function named + `cd' if one exists, instead of the shell builtin. Feature requested + by transl8czech@gmail.com + +builtins/mkbuiltins.c + - if a command's short description is the same as its name (e.g., `true'), + don't mark the short doc to be translated. Report and fix from + Benno Schulenberg + + 1/6 + --- +subst.c + - command_substitute,process_substitute: before replacing the file + descriptor underlying stdout (fd 1), make sure to purge any pending + stdio output that hasn't been written successfully, even after a + call to fflush(). Fixes bug reported by cks@cs.toronto.edu + + 1/7 + --- +builtins/{echo,printf}.def + - echo_builtin,printf_builtin: don't use terminate_immediately; use + calls to QUIT in the body of the print loop after writes and flushes. + Fixes problem with running the signal handler and exit trap in a + signal context and other bug reported by cks@cs.toronto.edu + +builtins/common.c + - sh_chkwrite: put in calls to QUIT to catch signals that interrupt + writes + +shell.c + - get_current_user_info: protect endpwent() with #ifdef HAVE_GETPWENT. + Fixes bug reported by pb + + 1/8 + --- +lib/readline/bind.c + - _rl_init_file_error: now a varargs function so it can take format + strings and arguments and pass them to vfprintf + - rl_parse_and_bind: print a warning if we encounter a key binding + string with one or more hyphens but we don't find a valid modifier + (`control', `meta', etc.). Prompted by a report from Andrew Kurn + + - rl_parse_and_bind: improve several existing error messages now that + _rl_init_file_error takes a variable number of arguments + - rl_variable_bind: print error message upon encountering unknown + variable + + 1/10 + ---- +lib/readline/bind.c + - rl_parse_and_bind: if a `bare' keybinding is supplied without any + terminating `:' or whitespace separating it from the command to be + bound, signal an error + + 1/11 + ---- +subst.c + - process_substitute: when compiled without job control (JOB_CONTROL not + defined), make sure we call stop_making_children like we do in the job + control code branch, so already_making_children is reset to 0. This + is what command substitution does. Fixes bug reported by Alastair + Hughes + + 1/12 + ---- +execute_cmd.c + - execute_in_subshell: if a user subshell (`(command)') or other shell + compound command has an input pipe, note for later by setting + stdin_redir. This will inhibit the implicit redirection of standard + input from /dev/null for async commands executed as part of this + subshell. Fixes bug reported by Martin D Kealey + - execute_simple_command: if the shell forks to execute this command + because it has an input pipe, set stdin_redir to inhibit later redirection + from /dev/null for async commands + + 1/13 + ---- +execute_cmd.c + - HASH_BANG_BUFSIZE: use #define for size of buffer used in + READ_SAMPLE_BUF instead of straight constant 80 + - HASH_BANG_BUFSIZ: increase to 128 because Linux allows 128 chars in + exec header. Reported by Ludovic Courtès + +configure.ac + - remove support for purify and purecoverage + - change release level to `rc1' + + 1/15 + ---- +builtins/enable.def + - dyn_load_builtin: fix missing argument to builtin_error if load function + returns an error. Fix from Aharon Robbins + + 1/18 + ---- +builtins/history.def + - histtime: display a better error message for invalid timestamps; use + existing `??' string for empty/missing timestamps or invalid history + entries. Suggestion from Reuben Thomas + + 1/21 + ---- +lib/readline/text.c + - rl_insert: when trying to optimize typeahead, make sure to reset the + key sequence and key sequence length when we read a character that is + not bound to self-insert. Bug report from Geir Hauge + + + 1/25 + ---- +doc/{bash.1,bashref.texi} + - word splitting: add example showing how -d'' is equivalent to -d + after word splitting and null argument removal + + 1/27 + ---- +doc/{bash.1,bashref.texi} + - read: modify description to make it more clear that the line is split + using the same rules as word splitting, and use `delimiters' instead + of `separators', which people read the wrong way + + 2/2 + --- +variables.c + - initialize_shell_variables: allow FUNCNEST to set funcnest_max when + imported from the environment. Inspired by + https://bugzilla.redhat.com/show_bug.cgi?id=1274553 + + 2/11 + ---- +bashhist.c + - bash_history_inhibit_expansion: function should be compiled in only if + BANG_HISTORY is defined. Report from isabella parakiss + + +[bash-4.4-rc1 frozen] + + 2/15 + ---- +lib/readline/text.c + - rl_refresh_line: call rl_redraw_prompt_last_line instead of + rl_forced_update_display to avoid redrawing all lines of a multiline + prompt (overwriting the last line of the multiline prompt in the + process). Report from Hugh Davenport + + 2/18 + ---- +subst.c + - parameter_brace_expand: when processing ${!name[@]}, make sure to + free `name' before returning the list of keys to avoid a memory leak. + Fixes bug reported by Emilio PastorMira + + 2/19 + ---- +trap.c + - free_trap_strings: when freeing the `special' traps (NSIG to BASH_NSIG), + check whether or not the `signal' is trapped, as it would be if the + subshell inherited it (errtrace) and don't free the trap string in that + case. Fixes bug reported by Jan Klötzke + + 2/21 + ---- +lib/sh/netconn.c + - isnetconn: return false if getpeername fails with errno == EBADF. + Bug and fix from Andrew Gregory + +builtins/shopt.def + - parse_bashopts: when reading BASHOPTS from the environment, make + sure to call any set functions associated with a variable, instead + of just setting the value to 1. Report and fix from + Vehlow, Jörg + + 2/22 + ---- +lib/readline/complete.c + - rl_display_match_list: don't bother calling strrchr to check the + return value from printable_part() if rl_filename_completion_desired + is non-zero, since in that case printable_part just returns its + argument. Fixes git completion issue reported by + Dilyan Palauzov + - _rl_colored_completion_prefix: default is now 0, testing is complete + + 2/23 + ---- +variables.c + - assign_hashcmd: if the shell is restricted, reject attempts to add + pathnames containing slashes to the hash table, as the hash builtin + does. Fixes bug reported to savannah by Sylvain Beucler as + https://savannah.gnu.org/support/?108969 + + 2/24 + ---- +subst.c + - NEED_FPURGE_DECL: need it before externs.h included, since fpurge + is now used in this file. Fixes warning reported by Mike + Frysinger + - skip_double_quoted: add missing argument to declaration + +parse.y + - shell_getc: in call to internal_warning, use %lu to print an argument + cast explicitly to unsigned long. Fixes warning reported by Mike + Frysinger + + 2/27 + ---- +parse.y + - decode_prompt_string: quote result of \s expansion in case shell has + been invoked with a pathname like '$(id)'. Inspired by report from + Travis Garrell + - decode_prompt_string: quote result of \h and \H expansions in the + (unlikely) case that the hostname has been changed to something + malicious including a command substitution. From report from + Travis Garrell + +builtins/getopts.def + - getopts_unbind_variable: new static function, just calls unbind_variable + for now. Placeholder for any future work to do something special if + OPTARG is readonly. Based on discussion started by Robert Elz + + +lib/readline/vi_mode.c + - rl_vi_unix_word_rubout: new function, implements ^W as Posix specifies + it for vi mode, using whitespace and punctuation characters as word + boundaries. Prompted by question from Carlos Pita + + +lib/readline/vi_keymap.c + - bind rl_vi_unix_word_rubout to ^W by default in both insert and + command mode + +lib/readline/rltty.c + - _rl_bind_tty_special_chars: if in vi mode, bind the WERASE character + to rl_vi_unix_word_rubout + +lib/readline/funmap.c + - vi-unix-word-rubout is new bindable name for rl_vi_unix_word_rubout + +lib/readline/readline.h + - rl_vi_unix_word_rubout: new extern declaration + + 2/28 + ---- +doc/bash.1 + - document readline blink-matching-paren variable + - document readline completion-display-width variable + - document readline completion-map-case variable + - note that the default value of history-size depends on the value of + the HISTSIZE variable. All from a message from Branden Robinson + + +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - convert-meta: modify the description to note that readline will turn + the default to off if the locale contains eight-bit characters + - input-meta: modify the description to note that readline will turn + the default to on if the locale contains eight-bit characters + - output-meta: modify the description to note that readline will turn + the default to on if the locale contains eight-bit characters. From + a message from Branden Robinson + + 3/6 + --- +examples/loadables/Makefile.in + - install-dev: make installdirs a prerequisite; don't rely on the + install-supported target to create it first. Bug with parallel + install (`make -j 4 install') reported by Chris Staub + + + 3/12 + ---- +lib/readline/display.c: + - rl_clear_visible_line: clear all screen lines occupied by the current + visible readline line. Inspired by report from Lauri Ranta + + +lib/readline/readline.h + - rl_clear_visible_line: extern declaration + +lib/readline/doc/rltech.texi + - rl_clear_visible_line: add documentation + + 3/19 + ---- +findcmd.c + - file_status: add inadvertently-dropped test for EXECIGNORE to the + `other' bits check. The check was in the original patch + - search_for_command: if the file should not be considered executable + because it's in the EXECIGNORE blacklist, don't set file_to_lose_on, + since the attempt to execute the last-ditch path will circumvent the + EXECIGNORE setting. Fixes bug reported by Dennis Williamson + + + 3/28 + ---- +lib/readline/display.c + - rl_redisplay: when computing where the cursor should go (and the + physical cursor position) after displaying the prompt, don't adjust + the cursor position by wadjust if there are no multibyte chars in + the prompt. lpos is already a physical cursor position; _rl_screenwidth + is the physical screen width, and we're not calling _rl_col_width and + don't need to take invisible characters into account again. Fixes + bug reported by Andreas Schwab + + 4/1 + --- +parse.y + - parse_comsub: when we read `esac' followed by a break character, + turn on the LEX_RESWDOK flag because we can now read another case + statement or other compound command. Fixes bug reported by + Christian Franke , original version + of patch from Piotr Grzybowski + - parse_comsub: leave the reserved-word-ok flag set for four-char + reserved words (then/else/elif/done/time) that can be followed by + reserved words; set lex_rwlen to 0 so we know to start reading a + new one + + 4/7 + --- +builtins/{alias,complete,jobs}.def + - {alias,compopt,disown}: add missing `CASE_HELPOPT;' so --help option + prints help longdoc instead of builtin_usage() + + 4/8 + --- +arrayfunc.c + - assign_array_var_from_word_list: use bind_array_var_internal instead + of inline code, so value conversions happen on assignment (case + modification, arithmetic evaluation, etc). Fixes bug reported by + Geir Hauge + + 4/9 + --- +shell.c + - main: change the logic that determines whether or not bash is running + under an emacs terminal emulator so it works with future versions of + emacs, which will change to use only $INSIDE_EMACS. Report and fix + from Paul Eggert + +lib/glob/sm_loop.c + - EXT: if we see ?(pat), we can match 0 or 1 times, so if we don't + match, we should consume the extglob pattern and go on to attempt + to match the rest of the pattern against the string. Fixes bug + reported by Isabella Parakiss + - GMATCH: in case `*', don't short-circuit and match anything if the + * is the last character in the pattern until after we check the + special cases for matching a `.'. Fixes bugs reported back on 3/23 + by Isabella Parakiss + + 4/13 + ---- +bashhist.c + - hc_erasedups: fix memory leak by freeing history entry returned by + remove_history. Bug and fix from Seiichi Ishitsuka + + + 4/19 + ---- +config-top.h + - CD_COMPLAINS: now settable in config-top.h; enables (fatal) error + messages if cd is given multiple directory arguments + + 4/20 + ---- +execute_cmd.c + - coproc_setvars: refuse to create variables with names that are not + valid identifiers. Suggestion from Piotr Grzybowski + + +rltty.c + - rl_tty_set_echoing: interface to set _rl_echoing_p, returning old + value. Inspired by gdb use of _rl_echoing_p when switching + between terminal and curses modes described by Doug Evans + + +bashline.c + - bash_execute_unix_command: use rl_clear_visible_line instead of + erasing current line on the screen, inspired by same report from + 3/12. Still tentative change + +configure.ac + - update release status to rc2, may skip this and go directly to + release + + 4/21 + ---- +arrayfunc.c + - convert_var_to_array: make sure that the newly-converted array + variable is not marked as being an associative array. Fixes bug + reported by Grisha Levit + - convert_var_to_assoc: make sure that the newly-converted associative + array variable is not marked as being an indexed array + + 4/22 + ---- +builtins/evalstring.c + - should_suppress_fork: don't suppress the fork if there are any traps + set, since that requires that we hang around to react to a signal or + collect the command's exit status and run something. Fixes bug + reported by Brian Vandenberg + +histexpand.c + - history_tokenize_word: handle >| as a single token. Fix from + Piotr Grzybowski from a report from + idallen@idallen-fibe.dyndns.org + + 4/24 + ---- +execute_cmd. + - coproc_setvars: don't overwrite readonly variables used as coproc + names. From a report from Grisha Levit + +histexpand.c + - history_tokenize_word: handle strings of digits before redirections + beginning with `<' or `>' as part of the redirection word; handle + strings of digits following `<&' or `>&' as part of the redirection + word. Inspired by patch from Piotr Grzybowski + from a report from idallen@idallen-fibe.dyndns.org + +lib/readline/complete.c + - rl_display_match_list: if the common prefix is longer than any of + the possible matches, set the length of the common prefix to 0 so + the entire match gets printed for each match + - rl_display_match_list: make sure to output at least one space + between each displayed match, even if the displayed length is + longer than our computed max + - fnprint: if the length of the prefix (prefix_bytes) is greater than + or equal to the length of the string to be printed (print_len), make + sure to set the prefix length to 0 so the entire string is printed. + From a report from Grisha Levit + + 4/25 + ---- +subst.c + - command_substitute: update the conditions under which we give the + terminal to pipeline_pgrp with give_terminal_to to the same ones + where wait_for uses to decide whether to give the terminal back to + shell_pgrp. This code exists to undo the work wait_for does; it + has to give the terminal back to pipeline_pgrp only under those + conditions when wait_for gives it back to the shell pgrp. Fix for + bug reported by Paulo Bardes + + 4/26 + ---- +bashline.c + - bash_filename_stat_hook: temporarily disable the `nounset' shell + option around calls to expand_prompt_string so we don't get error + messages during completion. Fixes issue reported by Eric Pruitt + + + 4/27 + ---- +doc/{bash.1,bashref.texi} + - extdebug: clarify that having this option enabled at shell startup + acts identically to --debugger. From a report from Grisha Levit + + +jobs.[ch] + - wait_for_single_pid: now takes additional `int flags' argument + +{jobs,execute_cmd}.c,builtins/wait.def + - wait_for_single_pid: changed callers to add extra argument + +jobs.c + - wait_for_single_pid: if (flags & 1) == 0, don't print the error + message if PID isn't found; changed execute_pipeline call when + lastpipe is set + + 4/28 + ---- +general.c + - bash_tilde_expand: try not setting interrupt_immediately or + terminate_immediately; see what happens with networked password + databases + + 4/29 + ---- +subst.c + - parameter_brace_expand, parameter_brace_expand_rhs: now take an + additional `pflags' argument from its caller so we can pass + state + - parameter_brace_expand_rhs: if expand_string_for_rhs returns a + quoted null, but l_hasdollat is set to 1, meaning we saw a quoted + "$@" of some form, we need to turn off special handling of "$@" + so something like "${@-${@-$@}}" expands to an empty string like + Posix says it should. Fixes bug reported by Grisha Levit + + + 5/1 + --- +variables.c + - bind_variable_internal: if we have a nameref variable with a valid + array reference that is invalid for assignment (e.g., a[*]), and + assign_array_element returns NULL, short-circuit and return NULL. + Fixes bug reported by Grisha Levit + +general.[ch] + - valid_nameref_value: new function, return 1 if passed argument is + a valid variable name argument for a nameref variable: a valid + identifier, a valid array reference, or a valid positional + parameter. Second argument indicates whether the value is to be + used for an assignment; in this case, return an error if the name + consists of all digits + +builtins/declare.def + - declare_internal: disallow values for nameref variables that don't + pass the tests in valid_nameref_value. Part of fix for bug + reported by Grisha Levit + +variables.c + - bind_variable_internal: if trying to assign a value to a nameref + variable, throw an error if valid_nameref_value fails (with a second + argument of 1). More fixes for bug reported by Grisha Levit + + + 5/2 + --- +builtins/declare.def + - declare_internal: don't allow nameref attribute to be applied to an + existing readonly variable; it can be used to circumvent readonly + value. Fix for bug reported by Grisha Levit + +variables.[ch] + - find_variable_last_nameref, find_global_variable_last_nameref: takes + a new flags argument. If flags is non-zero, and we find a nameref + variable that is unset (has no value), return that variable instead + of NULL. + +{variables,execute_cmd,arrayfunc,subst}.c,builtins/{declare,set}.def + - find_variable_last_nameref, find_global_variable_last_nameref: change + callers to add flags argument (initially 0) + + 5/3 + --- +variables.c + - bind_variable_internal: make sure we run the value of a namref + variable through valid_nameref_value before doing the assignment. + This can go away if we stop allowing namerefs to refer to positional + parameters + +execute_cmd.c + - execute_select_command: if bind_variable returns NULL, handle it as + an error, as if attempting assignment to a readonly variable + - execute_for_command: use 1 as second argument to + find_variable_last_nameref, so it will return an invisible nameref + to assign for each variable in the list + - execute_for_command: if the current word in the list is an invalid + identifier and the loop variable is a nameref, handle it as an error, + as if attempting assignment to a readonly variable + + 5/4 + --- +variables.c + - bind_int_variable: add warning if assigning an int to a nameref + variable + - assign_in_env: if assigning a variable in the temporary environment + that is a namref, throw an error if trying to assign an invalid + value + - bind_variable_value: use valid_nameref_value instead of calls to + legal_identifier and valid_array_reference + +execute_cmd.c + - coproc_setvars: if we have a nameref variable as the coproc name, but + it can't be assigned to for some reason, remove the nameref attribute + and issue a warning that we are doing so + - coproc_setvars: don't allow assignment to a nameref variable with an + invalid variable name, using same code as find_or_make_array_variable + +general.c + - valid_nameref_value: disallow values consisting solely of digits, + like the positional parameters + +builtins/declare.def + - declare_internal: don't call valid_nameref_value on the existing value + of a variable that's being converted to a nameref -- that value is + going to be thrown away and we've already checked the new value + - declare_internal: call bind_variable_value with the ASS_NAMEREF flag + if we're assigning to an existing nameref variable (for instance, + `declare -n x ; declare x=42') + + 5/5 + --- +variables.c + - make_local_variable: if we are being asked to create a local copy of + a nameref variable from a prior scope (checked by looking up + using find_variable_noref), use the nameref variable, not the variable + it references (which we find using find_variable). Bug report from + Grisha Levit ; fix by Piotr Grzybowski + + +builtins/declare.def + - declare_internal: if asked to do the same thing as above (difference + is declare -n r=foo in previous case; declare -n r in this one), + don't follow reference var from a previous context. Create a new + local variable (using make_local_variable) and inherit attributes + from previous scope's nameref as above + + 5/6 + --- +builtins/declare.def + - declare_internal: if we are assigning a value to an existing + invisible nameref variable, validate value early so we don't end up + removing the variable after the assignment fails + +builtins/shopt.def + - toggle_shopts: don't call set_bashopts here unless $BASHOPTS exists, + since we don't want to set it up before it gets read from the + environment. Keeping BASHOPTS read-only should keep users from + unsetting it. Fix from Grisha Levit + - shopt_set_debug_mode: make sure error_trace_mode reflects the setting + of extdebug. This one is tentative. Fix from Grisha Levit + + - shopt_set_debug_mode: call set_shellopts after setting error_trace_mode + or function_trace_mode. Fix from Grisha Levit + +shell.c + - start_debugger: make sure that function_trace_mode and error_trace_mode + reflect the value of debugging_mode, so they are both disabled if we + disable debugging mode because we can't find the debugger start file. + Fix from Grisha Levit + - start_debugger: set $SHELLOPTS and $BASHOPTS to the option values are + reflected if we change or set them here. Fix from Grisha Levit + + +builtins/set.def + - reset_shell_options: add reset values for: posix, nolog, pipefail. + Fix from Grisha Levit + +builtins/shopt.def + - reset_shopt_options: add reset values for: autocd, checkjobs, + complete_fullquote, dirspell, failglob, globstar, gnu_errfmt, + huponexit, inherit_errexit, interactive_comments, lastpipe, + no_empty_cmd_completion, progcomp. Fix from Grisha Levit + + - reset_shopt_options: make sure the following options have the right + defaults based on #defines: checkjobs, checkwinsize, direxpand, + extglob, globasciiranges. Fix from Grisha Levit + + +flags.c + - reset_shell_flags: add missing flags, re-initialize history_expansion + based on STRICT_POSIX + + 5/8 + --- +lib/readline/histexpand.c + - history_expand: if any expansion returns 1 from history_expand_internal, + indicating that :p was supplied, make it apply to the entire line + like tcsh and csh. Fixes bug reported by Dean Stanton + + +variables.[ch] + - ifsname: move define to variables.h + +execute_cmd.c + - execute_for_command: check whether or not the word in the for command + is IFS; call setifs every time the variable is assigned a value. + Fixes bug report from Grisha Levit + + 5/16 + ---- +general.c + - valid_nameref_value: explicitly handle name == 0 and *name == 0 right + away to save calls to legal_identifier + +builtins/declare.def + - declare_internal: if trying to set nameref attribute on a variable + with a null value, flag as invalid assignment, just as if running + `declare -n r=""'. Fixes bug report from Grisha Levit + + - declare_internal: when creating a variable with a temporary value + (""), use ASS_FORCE in the assignment flags to bypass name validity + checks on nameref variable names + +variables.c + - bind_variable_internal: don't call valid_nameref_value if we're + forcing assignment with (flags & ASS_FORCE) + +builtins/read.def + - read_builtin: handle bind_variable returning NULL when setting REPLY. + Report and fix from Grisha Levit + +builtins/setattr.def + - set_var_attribute: handle bind_variable returning NULL + +lib/sh/tmpfile.c + - sh_seedrand(): call srandom() to seed the random number generator + - sh_mktmpname, sh_mktmpfd: if we have random(), assume we have + srandom() and seed the random number generator. Still looking for + better value to see random number generator with + +variables.c + - check_unbind_variable: use internal_error instead of builtin_error + +{execute_cmd,variables}.c + - fix some places where bind_variable could return NULL and it was not + checked. Fix from Piotr Grzybowski + + 5/17 + ---- +arrayfunc.c + - convert_var_to_{array,assoc}: make sure to turn off nameref attribute, + since namerefs can't be arrays + +execute_cmd.c + - coproc_setvars: if the coproc name names a nameref, resolve the + nameref and use it as the name of the coproc. Suggested by Grisha + Levit + +subst.c + - command_substitute: don't bother calling QUIT after calling + reset_signal_handlers in the child, kill the child with SIGINT in + case we just reset the signal handler to SIG_DFL and we should just + exit instead of throwing to top level. Fixes bug reported by + Grisha Levit + + 5/18 + ---- +variables.c + - find_variable_nameref_for_create: find a nameref variable whose value + doesn't resolve to an existing variable and see whether or not that + value is appropriate for a new variable to be created + - find_variable_nameref_for_assignment: find a nameref variable whose + value doesn't resolve to an existing variable and see whether or not + that value is appropriate for a new variable to be created. + Difference between _assignment and _create is that _assignment + allows the nameref value to be a subscripted array reference + +builtins/setattr.def + - set_var_attribute: if variable lookup doesn't return anything, check + for a nameref and make sure that any reference value is something we + should be working on here, using find_variable_nameref_for_create(). + If it fails, error out and return, otherwise it's probably a reference + to a variable that hasn't been set yet, so let bind_variable take care + of that. Report from Grisha Levit + +arrayfunc.c + - bind_array_variable: if find_shell_variable returns NULL, check for a + nameref using find_variable_nameref_for_create and create a new array + variable with the value if it returns a valid nameref variable. + Makes `unset var; declare -n ref=var ; ref[0]=foo' work right. + Report from Grisha Levit + + 5/19 + ---- +variables.[ch] + - unbind_variable_noref: unset a variable NAME without following any + nameref chain. If the first instance of the variable with that name + is a nameref, just unset that nameref variable. + +builtins/getopts.def + - getopts_unbind_variable: if OPTARG is going to be unbound, use + unbind_variable_noref to unbind that name even if it is a nameref + variable. Issue raised by Grisha Levit + +execute_cmd.c + - coproc_unsetvars: use unbind_variable_noref in case someone sets the + coproc _PID variable as a nameref pointing to something read-only or + strange. Issue raised by Grisha Levit + +builtins/set.def + - set_ignoreeof: use unbind_variable_noref to unset "IGNOREEOF" and + "ignoreeof" + - set_posix_mode: use unbind_variable_noref to unset "POSIXLY_CORRECT" + +variables.c + - make_vers_array: use unbind_variable_noref to unset "BASH_VERSINFO" + +lib/sh/shmatch.c + - sh_regmatch: use unbind_variable_noref to unset "BASH_REMATCH" + +bashline.c + - bash_execute_unix_command: use check_unbind_variable to unset + READLINE_LINE and READLINE_POINT + +pcomplete.c + - unbind_compfunc_variables: use unbind_variable_noref to unset + COMP_LINE, COMP_POINT, COMP_WORDS, COMP_CWORD, COMP_TYPE, COMP_KEY + - gen_shell_function_matches: use unbind_variable_noref to unset + COMPREPLY + +config-top.h + - USE_MKTEMP/USE_MKSTEMP: define by default to use libc version of + mktemp and mkstemp in lib/sh/tmpfile.c. Recommended by Mike + Frysinger to fix a FreeBSD problem + +configure.ac,config.h.in + - mkstemp: check for mkstemp, define HAVE_MKSTEMP if available + +config-bot.h + - USE_MKSTEMP: #undef if HAVE_MKSTEMP not defined + + 5/22 + ---- +variables.c + - assign_in_env: if appending to a variable's value, make sure we call + make_variable_value with the empty string if expand_assignment_string_to_string + returns NULL, as do_assignment_internal does. Fixes bug with + `str=''; val=foo ; val+=str printenv val' reported by Grisha Levit + + - assign_in_env: if assigning to a nameref variable in the temporary + environment, and the nameref has a valid value for assignment (even + if the target variable is not set), resolve the nameref and create + a variable in the temporary environment named by the nameref's value. + If the nameref variable is invisible or isn't set to a valid value + for assignment, just create a regular temporary variable with the + nameref's name. This provides a degree of ksh93 compatibility. + Suggested by Grisha Levit + - find_variable_nameref_context,find_variable_last_nameref_context: + instead of returning NULL when detecting a loop, return a + distinguished value: &nameref_maxloop_value + - bind_variable: catch nameref_maxloop_value so we can do different + things based on whether or not we get it. Right now we don't do + anything different, but we could + + 5/24 + ---- +lib/readline/display.c + - update_line,_rl_move_cursor_relative: save value of MB_CUR_MAX in a + variable and use it throughout the functions instead of recomputing it + every time (which possibly costs a function call) + + 5/25 + ---- +builtins/declare.def + - declare_internal: only check whether the value being assigned to a + nameref variable is a valid identifier if we're not appending to an + existing value. Suggested by Grisha Levit + - declare_internal: add a couple of more checks on nameref names: + o make sure `declare -n x[3]=y' is an error + o nameref variable self-references now produce a warning when + in function scope + o nameref variable self-references using subscripted arrays + (a=a[0]) now produce warnings at function scope and errors at + global scope + + 5/29 + ---- +builtins/declare.def + - declare_internal: use name of readonly variable when calling sh_readonly + instead of name passed as argument to declare in case we've followed + a nameref chain + - declare_internal: when turning off attributes on a nameref variable + after following the nameref chain and turning them off on the target + variable, don't allow the readonly attribute to be removed. This is + primarily intended to turn off the nameref attribute. Issue pointed + out by Grisha Levit + - declare_internal: if we are attempting to modify an existing global + nameref variable, and the -n option is supplied, operate on the + nameref variable itself, not the variable it references + +doc/{bash.1,bashref.texi} + - change the descriptions of namerefs and declare -n slightly to note + that using the -n option to declare will operate on the nameref + variable itself rather than the variable it references + +variables.c + - bind_variable_internal: if trying to assign to a read-only variable, + print the error message using the variable's name instead of the + name passed to bind_variable in case we followed a nameref + +builtins/declare.def + - declare_internal: when we're creating a (possibly invisible) variable + as part of another operation, assigning NULL, make sure to use + ASS_FORCE to avoid warning messages from any existing nameref + variables we follow + - declare_internal: allow the nameref attribute to be removed from a + readonly nameref variable without a value but do not allow it to be + removed from a readonly nameref variable that has a value, even if it + doesn't reference an existing variable. This distinction is for ksh93 + compatibility. Pointed out by Grisha Levit + + 5/31 + ---- +builtins/declare.def + - declare_internal: if the call to bind_variable_value fails for some + reason, make sure to restore the nameref attribute to flags_on and + flags_off before calling NEXT_VARIABLE + +subst.c + - make_internal_declare: handle += append op + - shell_expand_word_list: when transforming assignment statement + arguments to `declare', make sure to handle += append op to avoid + passing invalid identifiers to declare. Report by Grisha Levit + + + 6/1 + --- +builtins/declare.def + - declare_internal: if a nameref assignment fails, only call delete_var + to delete the variable if we created it in declare_internal in the + first place + +general.c + - check_selfref: new function, checks a NAME against a VALUE for nameref + self-reference + +general.h + - check_selfref: extern declaration + +builtins/declare.def + - declare_internal: call check_selfref to determine whether a given NAME + and VALUE constitute an invalid nameref variable self-reference + +variables.c + - bind_variable_internal: call check_selfref to determine whether a + given NAME and VALUE constitute an invalid nameref variable self- + reference + + 6/2 + --- +parse.y + - clear_shell_input_line: new function, clears contents of shell_input_line + and sets index to 0, but doesn't free it + +externs.h + - clear_shell_input_line: extern declaration + +builtins/evalstring.c + - parse_and_execute: call clear_shell_input_line after setting input to + string to be executed. Fixes problem with command substitution and + multi-line aliases reported by Grisha Levit + +eval.c + - parse_command: only execute PROMPT_COMMAND if the shell is not + currently expanding an alias; use the same tests as parse.y:SHOULD_PROMPT + and parse.y:prompt_again() use to decide whether or not to print a + prompt. Fixes problems with PROMPT_COMMAND and multi-line aliases + reported by Grisha Levit + +builtins/set.def + - unset_builtin: changes to fix three problems reported by Grisha + Levit : + o if -n is supplied, we should not try to unset a function if + a variable isn't found + o unsetting namerefs whose values are array references does + not work + o unset -n n[0], where n is a nameref, would unset the + referenced variable instead of `n' + +redir.c + - redir_varvalue: handle case where nameref var points to subscripted + array reference. Reported by Grisha Levit + +variables.c + - bind_variable_value: make sure to call check_selfref only if aflags + includes ASS_NAMEREF and not ASS_FORCE. Reported by Grisha Levit + + +general.c + - valid_nameref_value: now understands a FLAGS value of 2 to mean that + the name will be used to create a variable, so only legal_identifier + matters + +arrayfunc.c + - find_or_make_array_variable: call valid_nameref_value with FLAGS value + of 2 to indicate we will be creating a variable. Fixes mapfile issue + reported by Grisha Levit + + 6/5 + --- +builtins/declare.def + - declare_internal: only pass ASS_FORCE as part of assignment flags to + assignments concerning arrays + - declare_internal: when at the global scope, if we resolve a nameref + and commit to using the new name, go back to to the beginning of the + loop and use the new name in the checks and variable references. + Make sure we construct the new name as a straight substitution of + the nameref value into the old name, including array subscripts and + rebuilding the correct values for `offset' and `value', since they + are relative to the original value of name. + Fixes several issues with checking use of subscripted array variables + as nameref values + - declare_internal: when calling assign_array_element, make sure to + pass ASS_APPEND if aflags includes it, so things like + declare -a var; var[1]=1; declare var[1]+=4 + append to the value appropriately and var[1] ends up being `14' + +arrayfunc.c + - valid_array_reference: make sure the array reference is properly + terminated after the first subscript; return invalid if there is + anything following the closing `]' + + 6/12 + ---- +variables.c + - bind_variable_internal: if asked to perform an array subscript + assignment on a nameref variable, display a warning and remove the + nameref attribute (as bash-4.3 did). Reported by Dan Douglas + + + 6/14 + ---- +test.c + - posixtest: handle four-argument case where argv[1] == '(' and + argv[4] == ')' by performing two-argument test on $2 and $3. + Reported by Joerg Schilling + + 6/15 + ---- +variables.c + - sv_ignoreeof: make sure ignoreeof is set only if IGNOREEOF is set and + has a value (no `local IGNOREEOF'). Reported by Grisha Levit + + - sv_strict_posix: make sure posixly_correct is set only if + POSIXLY_CORRECT is set and has a value. Reported by Grisha Levit + + + 6/16 + ---- +builtins/declare.def + - declare_internal: analogous to 6/12 change; when performing an array + subscript assignment on a nameref, display a warning, remove the + nameref attribute, and go on + + 6/21 + ---- +execute_cmd.c + - shell_execve: make sure errno is (re)set appropriately before + returning error value on exec format error + + 6/23 + ---- +subst.c + - param_expand: when expanding $* in a context where splitting is not + desired (pflags & PF_ASSIGNRHS), make sure to quote the word and the + included separators. Reported by Dan Douglas + + 6/30 + ---- +configure.ac + - release version is now `beta2' + +execute_cmd.c + - execute_simple_command: even if already_making_children is non-zero, + don't call wait_for if last_made_pid == NO_PID. Indirectly inspired + by report from Nicolas Vivet + + 7/2 + --- +subst.c + - expand_word_internal: when adding an IFS character to the accumulated + string, don't quote it if word expansion is not going to be + performed ((word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0) in the + default case. This was already the case everwhere else, when we did + `goto add_ifs_character;'. Fixes bug reported by Ibrahim M. Ghazal + + +subst.[ch],arrayfunc.c + - string_list_dollar_at: now takes a new third argument, currently + reserved for future use; changed callers and declaration + + 7/7 + --- +[bash-4.4-beta2 frozen] + + 7/9 + --- +bashline.c + - check_redir: make sure that index is > 0 before checking previous + char; fixes out of bounds read reported by Hanno Böck + + + 7/16 + ---- +subst.c + - parameter_brace_expand: if ${array[@]} or ${array[*]} is supplied + with an unset (or empty) array, and -u is enabled, don't make it + an unbound variable error, like $@ or $* when there are no + positional parameters. Based on report from Ian Allen + + +lib/readline/signals.c + - rl_pending_signal(): return the number of any signal readline has + caught but is waiting to handle + +lib/readline/callback.c + - rl_persistent_signal_handlers: new variable, restores readline-6.2 + signal handler semantics: installed at rl_callback_handler_install + time and removed with rl_clear_signals when a complete line has + been read + - _rl_callback_newline: call rl_set_signals if rl_persistent_signal_handlers + is non-zero + - rl_callback_read_char: install signal handlers with rl_set_signals + if rl_persistent_signal_handlers is 0 (the default) + - CALLBACK_READ_RETURN: uninstall signal handlers with rl_clear_signals + only if rl_persistent_signal_handlers is 0 (the default) + +lib/readline/readline.h + - rl_pending_signal: new extern declaration + - rl_persistent_signal_handlers: new extern declaration + + 7/19 + ---- +execute_cmd.c + - execute_while_or_until: make sure we decrement `continuing' the way + we decrement `breaking' if the loop test indicates we will be + breaking out of the loop. That keeps `until continue' from + keeping `continuing' set to 1. Reported by Dan Douglas + + + 7/20 + ---- +trap.c + - run_pending_traps,_run_trap_internal: save and restore temporary_env, + set temporary_env to 0 before trap runs so traps don't inherit a + command's temporary env. Fixes bug with IFS assignment in tempenv + and trap reported by Andriy Martynets + +jobs.c + - run_sigchld_trap: save and restore temporary_env, set temporary_env + to 0 before trap runs so traps don't inherit a command's temporary + env (see above) + + 7/21 + ---- +execute_cmd.c + - execute_function: unwind-protect function_line_number, in case we + are executing a function inside another function. Reported by + Grisha Levit in context of evaled functions + and DEBUG traps + - execute_arith_for_command,execute_arith_command,execute_simple_command, + execute_cond_command: make sure line_number doesn't go < 0 when + adjusting it by function_line_number + + 7/23 + ---- +subst.c,command.h + - move the PF_ constants to command.h so other files can see them, now + that PF_ASSIGNRHS has meaning to string_list_dollar_at + +arrayfunc.h + - AV_ASSIGNRHS: new flag, indicate that ${a[@]} is being expanded on + the RHS of an assignment statement + +arrayfunc.c + - array_value_internal: if AV_ASSIGNRHS passed for ${a[@]}, pass + PF_ASSIGNRHS to string_list_dollar_at to support args separated by + spaces even if $IFS does not have the default value. Reported by + Dan Douglas + +subst.c + - string_list_dollar_at: if FLAGS argument includes PF_ASSIGNRHS, obey + rules for $@ on the RHS of an assignment statement: expand to + postitional parameters separated by spaces no matter what the first + character of $IFS is. Reported by Dan Douglas + - parameter_brace_expand_word: pass AV_ASSIGNRHS as flags value to + array_value if PF_ASSIGNRHS is set and we are expanding an array + variable subscripted by @ or * + - param_expand: pass pflags to string_list_dollar_at in case it contains + PF_ASSIGNRHS + - expand_word_internal: if we have an assignment statement argument to + a declaration builtin (W_ASSIGNARG), turn on W_ASSIGNRHS when we see + the `=' to enable special $@ behavior + - expand_word_internal: if W_ASSIGNARG enabled in word flags, pass that + flag and W_ASSIGNRHS to recursive call to expand_word_internal when + expanding double-quoted string; handles "$@" when IFS is not the + default value and word splitting will not be performed + +subst.c + - expand_word_internal: change case that handles '' (single-quoted + empty string) to only discard it if we will not be performing word + splitting (W_NOSPLIT|W_NOSPLIT2), since we need to add a quoted null + argument if the subsequent characters will cause word splitting. + This is how "" (double-quoted empty string) is handled after a bug + fix back in August 2010. Reported by Grisha Levit + , fix for Posix interp 888 + + 7/27 + ---- +subst.c + - param_expand: change fix from 6/23 (expanding $* in a context where + word splitting is not performed) to make sure that $* expands to + something before trying to quote the string. Bug and fix from + Andreas Schwab + +lib/readline/bind.c + - _rl_get_string_variable_value: fix a cut-and-paste error that caused + the emacs mode string to be displayed for both vi insert and command + mode strings. Report and fix from Steve Jones + + 7/28 + ---- +lib/readline/display.c + - update_line: we can't use PROMPT_ENDING_INDEX unless we're testing + against _rl_last_c_pos; if we are testing buffer indices, we need to + use prompt_last_invisible directly. Fixes mode string redisplay issue + with short prompt strings reported by Steve Jones + + 8/4 + --- +nojobs.c + - without_job_control: new function, resets child state that's + eventually used to decide whether or not to wait_for children + +execute_cmd.c + - initialize_subshell: call without_job_control in both the + JOB_CONTROL and no job control paths so we can reset the state in + subshells that will not cause them to wait_for children + inappropriately. Fixes bug reported by Dan Cross + + 8/5 + --- +configure.ac + - release version is now `rc2' + +bashline.c + - command_word_completion_function: if direxpand is set, make sure to + run hint_text through bash_directory_completion_hook, since + readline will do that and we want to be able to match the results + readline returns. Fixes bug reported by Pat Somaru + + +command.h + - W_COMPLETE: new flag word value + - PF_COMPLETE: new flags value for param_expand + +subst.h + - SX_STRIPDQ: new flag, used for string_extract_double_quoted + +bashline.c + - bash_filename_stat_hook,bash_directory_completion_hook: pass W_COMPLETE + flag to expand_prompt_string + +subst.c + - expand_word_internal: if W_COMPLETE in word->flags, pass PF_COMPLETE + to param_expand + - param_expand: if PF_COMPLETE in pflags, pass SX_COMPLETE to + extract_command_subst. This allows `"$(echo ~/' to perform + completion successfully + - string_extract_double_quoted: turn third argument into a flags arg, + old STRIPDQ is now set if flags&SX_STRIPDQ + - string_extract_double_quoted: changed callers, if third argument was + 1, pass SX_STRIPDQ instead + - expand_word_internal: if W_COMPLETE in word->flags, pass SX_COMPLETE + in flags to string_extract_double_quoted for case '"' + - string_extract_double_quoted: if SX_COMPLETE in flags, pass it to + extract_command_subst + - expand_word_internal: if W_COMPLETE in word->flags, make sure W_COMPLETE + is in temp word passed to recursive call to expand_word_internal to + expand double-quoted string. Fixes bug reported by John Passaro + + + 8/9 + --- +[bash-4.4-rc2 frozen] + + 8/10 + ---- +subst.c + - sub_append_string: use size_t variable to store string length to + avoid integer overflow. Report from Siteshwar Vashisht + + - sub_append_string: `size' argument is now pointer to size_t; changed + istring_index in expand_word_internal to accommodate change + +lib/sh/ufuncs.c + - include "posixselect.h" if HAVE_SELECT is defined, make sure that + fd_set and the rest are defined + + 8/11 + ---- +lib/readline/histexpand.c + - history_tokenize_word: use ISDIGIT instead of isdigit for more + argument checking + - "chardefs.h": include for ISDIGIT define and . Fix from + Mike Frysinger + +lib/sh/eaccess.c,externs.h + - sh_eaccess: first argument now const char * + - sh_stataccess,sh_euidaccess: first argument now const char *, since + sh_stat and sh_eaccess call them. + Fix from Mike Frysinger + +lib/glob/glob.c + - sh_eaccess: change local prototype + +general.[ch] + - all_digits,legal_identifier,valid_nameref_value,importable_function_name, + exportable_function_name,check_binary_file,file_exists,file_isdir, + file_iswdir,same_file,make_absolute,valid_nameref_value: first + argument (always identifier or filename) is now a `const char *'; + some second filename arguments now `const char *'. + Fix from Mike Frysinger + +configure.ac,config.h.in + - uintptr_t: make sure it's defined to an integer type wide enough to + hold a pointer + +lib/sh/tmpfile.c + - sh_seedrand: use `uintptr_t' to cast pointer value to int value, + instead of allowing truncation to take place, since srandom takes + an `unsigned int'. + Fix from Mike Frysinger + +arrayfunc.[ch] + - valid_array_reference,array_variable_name,array_variable_part, + array_value_internal,array_value,get_array_value: first argument + (always variable name) now a `const char *' + Fix from Mike Frysinger + + 8/19 + ---- +print_cmd.c + - xtrace_print_word_list: if (xtflags & 2), don't try to quote the + words in the LIST argument. Intended to be used in places where + the list has not yet been expanded + - xtrace_print_for_command_head: call xtrace_print_word_list with + flags argument of 2. Fixes issue reported by Aharon Robbins + + - xtrace_print_select_command_head: call xtrace_print_word_list with + flags argument of 2 + + 8/21 + ---- +lib/sh/netopen.c + - netopen: fix memory leak by freeing allocated path before error + return. Fix from Dmitry Goncharov + +doc/{bash.1,bashref.texi} + - change conditional commands description to make it clearer that + bash doesn't emulate /dev/fd if the OS provides it + + 8/22 + ---- +braces.c + - expand_amble: free partial and tem on failure to allocate memory + for merged partial+result strvec. Fix from Dmitry Goncharov + + + 8/23 + ---- +jobs.c + - wait_for: don't call get_tty_state when a job finishes if we're + running it as part of programmable completion. We test + rl_readline_state. Fixes bug reported by Jaro Punta + + + 8/24 + ---- +subst.c + - pat_subst: fix memory leak (mstr). Fix from Dmitry Goncharov + + - split_at_delims: fix memory leak (d2). Fix from Dmitry Goncharov + + + 8/26 + ---- +subst.c + - match_upattern,match_wpattern: make sure that a trailing `*' is + not escaped (preceded by an odd number of backslashes) before we + append a `*' when checking whether a pattern matches anywhere in + the string + +lib/readline/{input,signals}.c + - protect instances of SIGQUIT with #ifdef SIGQUIT; apparently + MinGW doesn't define it + - protect instances of SIGHUP with #ifdef SIGHUP; apparently + MinGW doesn't define it. From a report from Simon Sobisch + + +xmalloc.o + - allocerr: only try to find the break and report it if we're using + the bash malloc; there's no guarantee that any other malloc is + using sbrk() + +doc/{bash.1,bashref.texi} + - quote removal: add paragraph mentioning quote removal to beginning + of expansions section, referencing later paragraph. Report from + Michel Lanne + + 8/30 + ---- +lib/readline/input.c + - protect instances of SIGALRM and SIGWINCH with #ifdef; apparently + MinGW doesn't define them. From a report from Simon Sobisch + + +subst.c + - SPECIAL_VAR: make sure name is not the empty string before going on, + empty strings can result in unitialized reads + - CHECK_STRING_OVERRUN: semi-general macro to use in *extract* and + similar functions to to check whether a function called to parse an + embedded construct (like a backquoted command substitution) doesn't + consume the entire string because it's unterminated + - skip_double_quoted: make sure other extraction functions don't + consume the entire string (which they can if the construct is + unterminated) before incrementing the index and going on. Uses + CHECK_STRING_OVERRUN + - extract_dollar_brace_string: check for unterminated embedded + constructs consuming the entire string with CHECK_STRING_OVERRUN ('`') + - skip_matched_pair: use CHECK_STRING_OVERRUN to make sure unterminated + embedded "`", $(, ${ don't cause out-of-bounds reads + +[bash-4.4 frozen] diff --git a/INSTALL b/INSTALL index ebe7ea1..c60d591 100644 --- a/INSTALL +++ b/INSTALL @@ -5,37 +5,37 @@ 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. + 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 + 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 + 2. Type 'make' to compile Bash and build the 'bashbug' bug reporting script. - 3. Optionally, type `make tests' to run the Bash test suite. + 3. Optionally, type 'make tests' to run the Bash test suite. - 4. Type `make install' to install `bash' and `bashbug'. This will + 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 +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. +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' +To find out more about the options and arguments that the 'configure' script understands, type bash-2.04$ ./configure --help @@ -43,379 +43,397 @@ script understands, type 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 +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.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 +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'. +code directory by typing 'make clean'. To also remove the files that +'configure' created (so you can compile Bash for a different kind of +computer), type 'make distclean'. + +Next: Compiling For Multiple Architectures, Prev: Basic Installation, Up: Installing Bash Compilers and Options ===================== -Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' +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: +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: Installation Names, Prev: Compilers and Options, Up: Installing Bash + 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' +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 `..'. +'--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. +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': +'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 +The 'mkclone' script requires Bash, so you must have already built Bash for at least one architecture before you can create build directories for other architectures. +Next: Specifying the System Type, Prev: Compiling For Multiple Architectures, Up: Installing Bash + Installation Names ================== -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'. +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. +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: Sharing Defaults, Prev: Installation Names, Up: Installing Bash 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'). +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. +See the file 'support/config.sub' for the possible values of each field. + +Next: Operation Controls, Prev: Specifying the System Type, Up: Installing Bash Sharing Defaults ================ -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. +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: Optional Features, Prev: Sharing Defaults, Up: Installing Bash Operation Controls ================== -`configure' recognizes the following options to control how it operates. +'configure' recognizes the following options to control how it operates. -`--cache-file=FILE' +'--cache-file=FILE' Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. + './config.cache'. Set FILE to '/dev/null' to disable caching, for + debugging 'configure'. -`--help' - Print a summary of the options to `configure', and exit. +'--help' + Print a summary of the options to 'configure', and exit. -`--quiet' -`--silent' -`-q' +'--quiet' +'--silent' +'-q' Do not print messages saying which checks are being made. -`--srcdir=DIR' +'--srcdir=DIR' Look for the Bash source code in directory DIR. Usually - `configure' can determine that directory automatically. + 'configure' can determine that directory automatically. -`--version' - Print the version of Autoconf used to generate the `configure' +'--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. +'configure' also accepts some other, not widely used, boilerplate +options. 'configure --help' prints the complete list. + +Prev: Operation Controls, Up: Installing Bash Optional Features ================= -The Bash `configure' has a number of `--enable-FEATURE' options, where +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'. +'--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. +Here is a complete list of the '--enable-' and '--with-' options that +the Bash 'configure' recognizes. -`--with-afs' +'--with-afs' Define if you are using the Andrew File System from Transarc. -`--with-bash-malloc' - 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 +'--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 + 'configure' disables this option automatically for a number of systems. -`--with-curses' +'--with-curses' Use the curses library instead of the termcap library. This should be supplied if your system has an inadequate or incomplete termcap database. -`--with-gnu-malloc' - A synonym for `--with-bash-malloc'. +'--with-gnu-malloc' + A synonym for '--with-bash-malloc'. -`--with-installed-readline[=PREFIX]' +'--with-installed-readline[=PREFIX]' Define this to make Bash link with a locally-installed version of - Readline rather than the version in `lib/readline'. This works - only with Readline 5.0 and later versions. If PREFIX is `yes' or - not supplied, `configure' uses the values of the make variables - `includedir' and `libdir', which are subdirectories of `prefix' by + 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 + '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'). + subdirectories of that directory (include files in PREFIX/'include' + and the library in PREFIX/'lib'). -`--with-purify' +'--with-purify' Define this to use the Purify memory allocation checker from Rational Software. -`--enable-minimal-config' +'--enable-minimal-config' This produces a shell with minimal features, close to the historical Bourne shell. -There are several `--enable-' options that alter how Bash is compiled +There are several '--enable-' options that alter how Bash is compiled and linked, rather than changing run-time features. -`--enable-largefile' +'--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. + programs which can access large files. This is enabled by default, + if the operating system provides large file support. -`--enable-profiling' +'--enable-profiling' This builds a Bash binary that produces profiling information to be - processed by `gprof' each time it is executed. + processed by 'gprof' each time it is executed. -`--enable-static-link' - This causes Bash to be linked statically, if `gcc' is being used. +'--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'. +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, +All of the following options except for 'disabled-builtins', +'direxpand-default', and 'xpg-echo-default' are enabled by default, unless the operating system does not provide the necessary support. -`--enable-alias' - Allow alias expansion and include the `alias' and `unalias' +'--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 +'--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' +'--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 +'--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' ). +'--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' +'--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' +'--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' +'--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 +'--enable-cond-command' + Include support for the '[[' conditional command. (*note Conditional Constructs::). -`--enable-cond-regexp' +'--enable-cond-regexp' Include support for matching POSIX regular expressions using the - `=~' binary operator in the `[[' conditional command. (*note + '=~' binary operator in the '[[' conditional command. (*note Conditional Constructs::). -`--enable-coprocesses' - Include support for coprocesses and the `coproc' reserved word +'--enable-coprocesses' + Include support for coprocesses and the 'coproc' reserved word (*note Pipelines::). -`--enable-debugger' +'--enable-debugger' Include support for the bash debugger (distributed separately). -`--enable-direxpand-default' - Cause the `direxpand' shell option (*note The Shopt Builtin::) to +'--enable-direxpand-default' + Cause the 'direxpand' shell option (*note 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 (*note The Directory Stack::). +'--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 +'--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 +'--enable-dparen-arithmetic' + Include support for the '((...))' command (*note Conditional Constructs::). -`--enable-extended-glob' +'--enable-extended-glob' Include support for the extended pattern matching features described above under *note Pattern Matching::. -`--enable-extended-glob-default' +'--enable-extended-glob-default' Set the default value of the EXTGLOB shell option described above under *note The Shopt Builtin:: to be enabled. -`--enable-glob-asciirange-default' - Set the default value of the GLOBASCIIRANGES shell option described - above under *note The Shopt Builtin:: to be enabled. This - controls the behavior of character ranges when used in pattern - matching bracket expressions. +'--enable-function-import' + Include support for importing function definitions exported by + another instance of the shell from the environment. This option is + enabled by default. -`--enable-help-builtin' - Include the `help' builtin, which displays help on shell builtins +'--enable-glob-asciirange-default' + Set the default value of the GLOBASCIIRANGES shell option described + above under *note The Shopt Builtin:: to be enabled. This controls + the behavior of character ranges when used in pattern matching + bracket expressions. + +'--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-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-job-control' + This enables the job control features (*note Job Control::), if the + operating system supports them. -`--enable-multibyte' +'--enable-multibyte' This enables support for multibyte characters if the operating system provides the necessary support. -`--enable-net-redirections' +'--enable-net-redirections' This enables the special handling of filenames of the form - `/dev/tcp/HOST/PORT' and `/dev/udp/HOST/PORT' when used in + '/dev/tcp/HOST/PORT' and '/dev/udp/HOST/PORT' when used in redirections (*note Redirections::). -`--enable-process-substitution' +'--enable-process-substitution' This enables process substitution (*note Process Substitution::) if the operating system provides the necessary support. -`--enable-progcomp' +'--enable-progcomp' Enable the programmable completion facilities (*note Programmable Completion::). If Readline is not enabled, this option has no effect. -`--enable-prompt-string-decoding' +'--enable-prompt-string-decoding' Turn on the interpretation of a number of backslash-escaped - characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt + characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt strings. See *note Controlling the Prompt::, for a complete list of prompt string escape sequences. -`--enable-readline' +'--enable-readline' Include support for command-line editing and history with the Bash version of the Readline library (*note Command Line Editing::). -`--enable-restricted' +'--enable-restricted' Include support for a "restricted shell". If this is enabled, - Bash, when called as `rbash', enters a restricted mode. See *note + 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' compound command, which allows the generation +'--enable-select' + Include the 'select' compound command, which allows the generation of simple menus (*note Conditional Constructs::). -`--enable-separate-helpfiles' - Use external files for the documentation displayed by the `help' +'--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 +'--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. + different languages. You may need to disable this if your compiler + cannot handle very long string literals. -`--enable-strict-posix-default' +'--enable-strict-posix-default' Make Bash POSIX-conformant by default (*note Bash POSIX Mode::). -`--enable-usg-echo-default' - A synonym for `--enable-xpg-echo-default'. +'--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. +'--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. +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. diff --git a/MANIFEST b/MANIFEST index 55c8d1c..a306b6f 100644 --- a/MANIFEST +++ b/MANIFEST @@ -529,6 +529,8 @@ po/ja.po f po/lt.gmo f po/lt.po f po/nl.gmo f +po/nb.po f +po/nb.gmo f po/nl.po f po/pl.gmo f po/pl.po f @@ -581,6 +583,7 @@ doc/texinfo.tex f doc/bashref.texi f doc/version.texi f doc/bashref.info f +doc/bash.info f doc/article.ms f doc/htmlpost.sh f 755 doc/infopost.sh f 755 @@ -607,8 +610,10 @@ doc/bash.pdf f doc/bashref.pdf f doc/rose94.pdf f doc/aosa-bash.pdf f +doc/aosa-bash-full.pdf f # support/Makefile.in f +support/bash.pc.in f support/bashversion.c f support/checkbashisms f 755 support/config.guess f @@ -654,11 +659,14 @@ examples/complete/complete-examples f examples/complete/bashcc-1.0.1.tar.gz f examples/loadables/README f examples/loadables/template.c f +examples/loadables/loadables.h f examples/loadables/Makefile.in f +examples/loadables/Makefile.inc.in f examples/loadables/necho.c f examples/loadables/hello.c f examples/loadables/print.c f examples/loadables/realpath.c f +examples/loadables/setpgid.c f examples/loadables/sleep.c f examples/loadables/strftime.c f examples/loadables/truefalse.c f @@ -704,6 +712,7 @@ examples/functions/basename f examples/functions/csh-compat f #examples/functions/dirfuncs f examples/functions/dirname f +examples/functions/dirstack f #examples/functions/emptydir f examples/functions/exitstat f examples/functions/external f @@ -795,8 +804,10 @@ examples/misc/aliasconv.bash f examples/misc/cshtobash f tests/README f tests/COPYRIGHT f +tests/test-glue-functions f tests/alias.tests f tests/alias1.sub f +tests/alias2.sub f tests/alias.right f tests/appendop.tests f tests/appendop1.sub f @@ -812,6 +823,7 @@ tests/arith3.sub f tests/arith4.sub f tests/arith5.sub f tests/arith6.sub f +tests/arith7.sub f tests/array.tests f tests/array.right f tests/array1.sub f @@ -830,6 +842,11 @@ tests/array13.sub f tests/array14.sub f tests/array15.sub f tests/array16.sub f +tests/array17.sub f +tests/array18.sub f +tests/array19.sub f +tests/array20.sub f +tests/array21.sub f tests/array-at-star f tests/array2.right f tests/assoc.tests f @@ -841,6 +858,11 @@ tests/assoc4.sub f tests/assoc5.sub f tests/assoc6.sub f tests/assoc7.sub f +tests/assoc8.sub f +tests/attr.tests f +tests/attr.right f +tests/attr1.sub f +tests/attr2.sub f tests/braces.tests f tests/braces.right f tests/builtins.tests f @@ -849,6 +871,8 @@ tests/builtins1.sub f tests/builtins2.sub f tests/builtins3.sub f tests/builtins4.sub f +tests/builtins5.sub f +tests/builtins6.sub f tests/source1.sub f tests/source2.sub f tests/source3.sub f @@ -864,6 +888,8 @@ tests/casemod.right f tests/comsub.tests f tests/comsub.right f tests/comsub1.sub f +tests/comsub2.sub f +tests/comsub3.sub f tests/comsub-eof.tests f tests/comsub-eof0.sub f tests/comsub-eof1.sub f @@ -894,6 +920,13 @@ tests/dbg-support2.tests f tests/dbg-support3.sub f tests/dollar-at-star f tests/dollar-at-star1.sub f +tests/dollar-at-star2.sub f +tests/dollar-at-star3.sub f +tests/dollar-at-star4.sub f +tests/dollar-at-star5.sub f +tests/dollar-at-star6.sub f +tests/dollar-at-star7.sub f +tests/dollar-at-star8.sub f tests/dollar-at1.sub f tests/dollar-at2.sub f tests/dollar-at3.sub f @@ -917,6 +950,9 @@ tests/errors.right f tests/errors1.sub f tests/errors2.sub f tests/errors3.sub f +tests/errors4.sub f +tests/errors5.sub f +tests/errors6.sub f tests/execscript f tests/exec.right f tests/exec1.sub f 755 @@ -928,6 +964,10 @@ tests/exec6.sub f tests/exec7.sub f tests/exec8.sub f tests/exec9.sub f +tests/exec10.sub f +tests/exec11.sub f +tests/exec12.sub f +tests/exec13.sub f tests/exp.tests f tests/exp.right f tests/exp1.sub f @@ -936,14 +976,25 @@ tests/exp3.sub f tests/exp4.sub f tests/exp5.sub f tests/exp6.sub f +tests/exp7.sub f +tests/exp8.sub f +tests/exp9.sub f +tests/exportfunc.tests f +tests/exportfunc.right f +tests/exportfunc1.sub f +tests/exportfunc2.sub f +tests/exportfunc3.sub f tests/extglob.tests f tests/extglob.right f tests/extglob1.sub f tests/extglob1a.sub f +tests/extglob2.sub f tests/extglob2.tests f tests/extglob2.right f +tests/extglob3.sub f tests/extglob3.tests f tests/extglob3.right f +tests/extglob4.sub f tests/func.tests f tests/func.right f tests/func1.sub f @@ -959,6 +1010,9 @@ tests/getopts4.sub f tests/getopts5.sub f tests/getopts6.sub f tests/getopts7.sub f +tests/getopts8.sub f +tests/getopts9.sub f +tests/getopts10.sub f tests/glob.tests f tests/glob1.sub f tests/glob.right f @@ -973,7 +1027,12 @@ tests/heredoc2.sub f tests/heredoc3.sub f tests/herestr.tests f tests/herestr.right f +tests/herestr1.sub f tests/histexp.tests f +tests/histexp1.sub f +tests/histexp2.sub f +tests/histexp3.sub f +tests/histexp4.sub f tests/histexp.right f tests/history.tests f tests/history.right f @@ -990,6 +1049,7 @@ tests/input.right f tests/intl.tests f tests/intl1.sub f tests/intl2.sub f +tests/intl3.sub f tests/intl.right f tests/iquote.tests f tests/iquote.right f @@ -1006,10 +1066,12 @@ tests/jobs.right f tests/lastpipe.right f tests/lastpipe.tests f tests/lastpipe1.sub f +tests/lastpipe2.sub f tests/mapfile.data f tests/mapfile.right f tests/mapfile.tests f tests/mapfile1.sub f +tests/mapfile2.sub f tests/more-exp.tests f tests/more-exp.right f tests/nameref.tests f @@ -1021,6 +1083,16 @@ tests/nameref5.sub f tests/nameref6.sub f tests/nameref7.sub f tests/nameref8.sub f +tests/nameref9.sub f +tests/nameref10.sub f +tests/nameref11.sub f +tests/nameref12.sub f +tests/nameref13.sub f +tests/nameref14.sub f +tests/nameref15.sub f +tests/nameref16.sub f +tests/nameref17.sub f +tests/nameref18.sub f tests/nameref.right f tests/new-exp.tests f tests/new-exp1.sub f @@ -1032,11 +1104,13 @@ tests/new-exp6.sub f tests/new-exp7.sub f tests/new-exp8.sub f tests/new-exp9.sub f +tests/new-exp10.sub f tests/new-exp.right f tests/nquote.tests f tests/nquote.right f tests/nquote1.sub f tests/nquote2.sub f +tests/nquote3.sub f tests/nquote1.tests f tests/nquote1.right f tests/nquote2.tests f @@ -1047,6 +1121,9 @@ tests/nquote4.tests f tests/nquote4.right f tests/nquote5.tests f tests/nquote5.right f +tests/parser.tests f +tests/parser.right f +tests/parser1.sub f tests/posix2.tests f tests/posix2.right f tests/posixexp.tests f @@ -1093,6 +1170,8 @@ tests/redir7.sub f tests/redir8.sub f tests/redir9.sub f tests/redir10.sub f +tests/redir11.sub f +tests/redir12.sub f tests/rhs-exp.tests f tests/rhs-exp.right f tests/rhs-exp1.sub f @@ -1107,6 +1186,7 @@ tests/run-arith f tests/run-array f tests/run-array2 f tests/run-assoc f +tests/run-attr f tests/run-braces f tests/run-builtins f tests/run-case f @@ -1124,6 +1204,7 @@ tests/run-dollars f tests/run-errors f tests/run-execscript f tests/run-exp-tests f +tests/run-exportfunc f tests/run-extglob f tests/run-extglob2 f tests/run-extglob3 f @@ -1153,6 +1234,7 @@ tests/run-nquote2 f tests/run-nquote3 f tests/run-nquote4 f tests/run-nquote5 f +tests/run-parser f tests/run-posix2 f tests/run-posixexp f tests/run-posixexp2 f @@ -1220,6 +1302,8 @@ tests/varenv3.sub f tests/varenv4.sub f tests/varenv5.sub f tests/varenv6.sub f +tests/varenv7.sub f +tests/varenv8.sub f tests/version f tests/version.mini f tests/vredir.tests f @@ -1230,6 +1314,7 @@ tests/vredir3.sub f tests/vredir4.sub f tests/vredir5.sub f tests/vredir6.sub f +tests/vredir7.sub f tests/misc/dev-tcp.tests f tests/misc/perf-script f tests/misc/perftest f diff --git a/Makefile.in b/Makefile.in index cf77228..c7b62bc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ -# Makefile for bash-4.3, version 4.11 +# Makefile for bash-4.4, version 4.18 # -# Copyright (C) 1996-2012 Free Software Foundation, Inc. +# Copyright (C) 1996-2015 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -42,6 +42,9 @@ includedir = @includedir@ datadir = @datadir@ localedir = @localedir@ +loadablesdir = @loadablesdir@ +headersdir = @headersdir@ + docdir = @docdir@ mandir = @mandir@ @@ -61,7 +64,7 @@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ top_builddir = @BUILD_DIR@ srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ @SET_MAKE@ CC = @CC@ @@ -86,10 +89,8 @@ TESTSCRIPT = @TESTSCRIPT@ DEBUGGER_START_FILE = @DEBUGGER_START_FILE@ -#If you have purify, and want to use it, uncomment this definition or -# run the make as `make PURIFY=purify' -# or run configure with the --with-purify argument. -PURIFY = @PURIFY@ +#If you have purify, and want to use it, run the make as `make PURIFY=purify' +#PURIFY = @PURIFY@ # Here is a rule for making .o files from .c files that does not # force the type of the machine (like -M_MACHINE) into the flags. @@ -443,6 +444,19 @@ HSOURCES = shell.h flags.h trap.h hashcmd.h hashlib.h jobs.h builtins.h \ SOURCES = $(CSOURCES) $(HSOURCES) $(BUILTIN_DEFS) +# headers in top-level source directory that get installed by install-headers +INSTALLED_HEADERS = shell.h bashjmp.h command.h syntax.h general.h error.h \ + variables.h array.h assoc.h arrayfunc.h quit.h dispose_cmd.h \ + make_cmd.h subst.h sig.h externs.h builtins.h \ + bashtypes.h xmalloc.h config-top.h config-bot.h \ + bashintl.h bashansi.h bashjmp.h alias.h hashlib.h \ + conftypes.h unwind_prot.h jobs.h siglist.h +INSTALLED_BUILTINS_HEADERS = bashgetopt.h common.h getopt.h +INSTALLED_INCFILES = posixstat.h ansi_stdlib.h filecntl.h posixdir.h \ + memalloc.h stdc.h posixjmp.h posixwait.h posixtime.h systimes.h \ + unionwait.h maxpath.h shtty.h typemax.h ocache.h chartypes.h gettext.h \ + posixstat.h shmbchar.h shmbutil.h stat-time.h + # header files chosen based on running of configure SIGNAMES_H = @SIGNAMES_H@ @@ -521,7 +535,7 @@ PO_DIR = $(dot)/po/ SIGNAMES_SUPPORT = $(SUPPORT_SRC)mksignames.c SUPPORT_SRC = $(srcdir)/support/ -SDIR = $(dot)/support/ +SDIR = $(dot)/support TESTS_SUPPORT = recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) xcase$(EXEEXT) CREATED_SUPPORT = signames.h recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) \ @@ -536,17 +550,22 @@ CREATED_MAKEFILES = Makefile builtins/Makefile doc/Makefile \ lib/readline/Makefile lib/glob/Makefile \ lib/sh/Makefile lib/tilde/Makefile lib/malloc/Makefile \ lib/termcap/Makefile examples/loadables/Makefile \ + examples/loadables/Makefile.inc \ examples/loadables/perl/Makefile support/Makefile \ lib/intl/Makefile po/Makefile po/Makefile.in +CREATED_HEADERS = signames.h config.h pathnames.h version.h y.tab.h \ + ${DEFDIR}/builtext.h OTHER_DOCS = $(srcdir)/CHANGES $(srcdir)/COMPAT $(srcdir)/NEWS $(srcdir)/POSIX \ $(srcdir)/RBASH $(srcdir)/README OTHER_INSTALLED_DOCS = CHANGES COMPAT NEWS POSIX RBASH README +LOADABLES_DIR = ${top_builddir}/examples/loadables + # Keep GNU Make from exporting the entire environment for small machines. .NOEXPORT: -.made: $(Program) bashbug +.made: $(Program) bashbug $(SDIR)/man2html$(EXEEXT) @echo "$(Program) last made for a $(Machine) running $(OS)" >.made $(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) @@ -617,12 +636,12 @@ $(LIBDEP): .build $(READLINE_LIBRARY): config.h $(READLINE_SOURCE) @echo making $@ in ${RL_LIBDIR} @( { test "${RL_LIBDIR}" = "${libdir}" && exit 0; } || \ - cd ${RL_LIBDIR} && $(MAKE) $(MFLAGS) libreadline.a) || exit 1 + cd ${RL_LIBDIR} && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} libreadline.a) || exit 1 $(HISTORY_LIBRARY): config.h $(HISTORY_SOURCE) $(READLINE_DEP) @echo making $@ in ${HIST_LIBDIR} @( { test "${HIST_LIBDIR}" = "${libdir}" && exit 0; } || \ - cd ${HIST_LIBDIR} && $(MAKE) $(MFLAGS) libhistory.a) || exit 1 + cd ${HIST_LIBDIR} && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} libhistory.a) || exit 1 $(GLOB_LIBRARY): config.h $(GLOB_SOURCE) @echo making $@ in ${GLOB_LIBDIR} @@ -698,6 +717,9 @@ ${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR)/bashgetopt.c ${DEFDIR}/builtext.h: $(BUILTIN_DEFS) @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) builtext.h ) || exit 1 +$(SDIR)/man2html$(EXEEXT): ${SUPPORT_SRC}/man2html.c + @(cd $(SDIR) && $(MAKE) $(MFLAGS) all ) || exit 1 + # For the justification of the following Makefile rules, see node # `Automatic Remaking' in GNU Autoconf documentation. @@ -734,6 +756,9 @@ $(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/aclocal.m4 $(srcdir)/confi reconfig: force sh $(srcdir)/configure -C +loadables: + cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) all + #newversion: mkversion # $(RM) .build # ./mkversion -dir $(srcdir) -dist @@ -774,12 +799,41 @@ install: .made installdirs infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) -( cd $(DEFDIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + -( cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) install-strip: $(MAKE) $(MFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ prefix=${prefix} exec_prefix=${exec_prefix} \ DESTDIR=$(DESTDIR) install +install-headers-dirs: + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir) + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)/builtins + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(headersdir)/include + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(libdir)/pkgconfig + +install-headers: install-headers-dirs + @for hf in $(INSTALLED_HEADERS) ; do \ + ${INSTALL_DATA} $(srcdir)/"$$hf" $(DESTDIR)$(headersdir)/$$hf; \ + done + @for hf in $(INSTALLED_INCFILES) ; do \ + ${INSTALL_DATA} $(BASHINCDIR)/"$$hf" $(DESTDIR)$(headersdir)/include/$$hf; \ + done + @for hf in $(INSTALLED_BUILTINS_HEADERS) ; do \ + ${INSTALL_DATA} $(BUILTIN_SRCDIR)/"$$hf" $(DESTDIR)$(headersdir)/builtins/$$hf; \ + done + @for hf in $(CREATED_HEADERS) ; do \ + ${INSTALL_DATA} $(BUILD_DIR)/"$$hf" $(DESTDIR)$(headersdir)/$$hf; \ + done + $(INSTALL_DATA) $(SDIR)/bash.pc $(DESTDIR)$(libdir)/pkgconfig/bash.pc + +uninstall-headers: + -( cd $(DESTDIR)$(headersdir) && $(RM) $(INSTALLED_HEADERS) ) + -( cd $(DESTDIR)$(headersdir)/include && $(RM) $(INSTALLED_INCFILES) ) + -( cd $(DESTDIR)$(headersdir)/builtins && $(RM) $(INSTALLED_BUILTINS_HEADERS) ) + -( cd $(DESTDIR)$(headersdir) && $(RM) $(CREATED_HEADERS) ) + -( $(RM) $(DESTDIR)$(libdir)/pkgconfig/bash.pc ) + uninstall: .made $(RM) $(DESTDIR)$(bindir)/$(Program) $(DESTDIR)$(bindir)/bashbug -( cd $(DESTDIR)$(docdir) && ${RM} ${OTHER_INSTALLED_DOCS} ) @@ -788,6 +842,7 @@ uninstall: .made man3dir=$(man3dir) man3ext=$(man3ext) \ infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + -( cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) .PHONY: basic-clean clean realclean maintainer-clean distclean mostlyclean maybe-clean @@ -806,6 +861,7 @@ clean: basic-clean (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ done -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + -( cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) $(RM) $(CREATED_SUPPORT) mostlyclean: basic-clean @@ -816,6 +872,7 @@ mostlyclean: basic-clean (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ done -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + -( cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) distclean: basic-clean maybe-clean ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) @@ -825,6 +882,7 @@ distclean: basic-clean maybe-clean (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ done -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + -( cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) $(RM) $(CREATED_CONFIGURE) tags TAGS $(RM) $(CREATED_SUPPORT) Makefile $(CREATED_MAKEFILES) pathnames.h @@ -839,6 +897,7 @@ maintainer-clean: basic-clean (cd $$libdir && test -f Makefile && $(MAKE) $(MFLAGS) $@) ;\ done -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) + -( cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) $(RM) $(CREATED_CONFIGURE) $(CREATED_MAKEFILES) $(RM) $(CREATED_SUPPORT) Makefile pathnames.h @@ -871,9 +930,11 @@ symlinks: dist: force @echo Bash distributions are created using $(srcdir)/support/mkdist. @echo Here is a sample of the necessary commands: - @echo $(Program) $(srcdir)/support/mkdist -m $(srcdir)/MANIFEST -s $(srcdir) -r ${PACKAGE} $(PACKAGE_VERSION) - @echo tar cf $(PACKAGE)-${PACKAGE_VERSION}.tar ${PACKAGE}-$(PACKAGE_VERSION) - @echo gzip $(PACKAGE)-$(PACKAGE_VERSION).tar + @echo $(Program) $(srcdir)/support/mkdist -m $(srcdir)/MANIFEST -s $(srcdir) -r ${PACKAGE} -t $(PACKAGE_VERSION) + +xdist: force + ( cd $(DOCDIR) && $(MAKE) $(MFLAGS) $@ ) + ( cd po && $(MAKE) $(MFLAGS) $@ ) depend: depends @@ -882,7 +943,7 @@ depends: force #### PRIVATE TARGETS #### hashtest: hashlib.c - $(CC) -DTEST_HASHING $(CCFLAGS) -o $@ $(srcdir)/hashlib.c + $(CC) -DTEST_HASHING $(CCFLAGS) $(TEST_NBUCKETS) -o $@ $(srcdir)/hashlib.c xmalloc.o $(INTL_LIB) ############################ DEPENDENCIES ############################### @@ -937,6 +998,7 @@ execute_cmd.o: ${BASHINCDIR}/memalloc.h ${GRAM_H} flags.h builtins.h jobs.h quit execute_cmd.o: execute_cmd.h findcmd.h redir.h trap.h test.h pathexp.h execute_cmd.o: $(DEFSRC)/common.h ${DEFDIR}/builtext.h ${GLOB_LIBSRC}/strmatch.h execute_cmd.o: ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/chartypes.h +execute_cmd.o: $(DEFSRC)/getopt.h expr.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h expr.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h expr.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h @@ -965,6 +1027,7 @@ hashcmd.o: config.h ${BASHINCDIR}/posixstat.h bashtypes.h bashansi.h ${BASHINCDI hashcmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h hashcmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashcmd.h hashcmd.o: execute_cmd.h findcmd.h ${BASHINCDIR}/stdc.h pathnames.h hashlib.h +hashcmd.o: quit.h sig.h hashlib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h hashlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h hashlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h @@ -993,7 +1056,7 @@ mailcheck.o: execute_cmd.h mailcheck.h make_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashansi.h make_cmd.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h error.h flags.h make_cmd.h make_cmd.o: variables.h arrayfunc.h conftypes.h array.h hashlib.h subst.h input.h externs.h -make_cmd.o: jobs.h quit.h siglist.h syntax.h dispose_cmd.h parser.h +make_cmd.o: jobs.h quit.h sig.h siglist.h syntax.h dispose_cmd.h parser.h make_cmd.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h ${BASHINCDIR}/ocache.h y.tab.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h y.tab.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h @@ -1015,6 +1078,7 @@ print_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h comman print_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h print_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h print_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h +print_cmd.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h print_cmd.o: ${GRAM_H} $(DEFSRC)/common.h redir.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h redir.o: ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h @@ -1143,6 +1207,7 @@ pcomplete.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h pcomplete.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h pcomplete.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h pcomplete.o: externs.h ${BASHINCDIR}/maxpath.h execute_cmd.h +pcomplete.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h pcomplete.o: ${DEFDIR}/builtext.h # library support files @@ -1171,6 +1236,7 @@ bracecomp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h bracecomp.o: array.h hashlib.h alias.h builtins.h bracecomp.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h bracecomp.o: make_cmd.h subst.h sig.h pathnames.h externs.h +bracecomp.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h # library dependencies @@ -1302,7 +1368,7 @@ builtins/command.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/std builtins/declare.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/declare.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/declare.o: $(DEFSRC)/bashgetopt.h pathnames.h +builtins/declare.o: $(DEFSRC)/bashgetopt.h pathnames.h flags.h builtins/echo.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/echo.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h @@ -1377,6 +1443,7 @@ builtins/printf.o: config.h ${BASHINCDIR}/memalloc.h bashjmp.h command.h error.h builtins/printf.o: general.h xmalloc.h quit.h dispose_cmd.h make_cmd.h subst.h builtins/printf.o: externs.h sig.h pathnames.h shell.h syntax.h unwind_prot.h builtins/printf.o: variables.h arrayfunc.h conftypes.h ${BASHINCDIR}/stdc.h $(DEFSRC)/bashgetopt.h +builtins/printf.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h builtins/printf.o: ${BASHINCDIR}/chartypes.h builtins/pushd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h @@ -1385,6 +1452,7 @@ builtins/pushd.o: $(DEFSRC)/common.h pathnames.h builtins/read.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/read.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h +builtins/read.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h builtins/read.o: pathnames.h builtins/return.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/return.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h @@ -1398,7 +1466,7 @@ builtins/setattr.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general. builtins/setattr.o: quit.h $(DEFSRC)/common.h $(DEFSRC)/bashgetopt.h builtins/setattr.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/setattr.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h -builtins/setattr.o: pathnames.h +builtins/setattr.o: pathnames.h flags.h builtins/shift.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h builtins/shift.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h builtins/shift.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h @@ -1452,7 +1520,8 @@ builtins/wait.o: ${BASHINCDIR}/chartypes.h pathnames.h builtins/complete.o: config.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h builtins/complete.o: unwind_prot.h variables.h arrayfunc.h conftypes.h builtins/complete.o: bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h -builtins/complete.o: builtins.h pathnames.h +builtins/complete.o: builtins.h pathnames.h general.h +builtins/complete.o: bashtypes.h ${BASHINCDIR}/chartypes.h xmalloc.h builtins/complete.o: pcomplete.h builtins/complete.o: ${DEFSRC}/common.h ${DEFSRC}/bashgetopt.h builtins/mapfile.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h diff --git a/NEWS b/NEWS index 0cc3c45..931dc84 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,227 @@ +This is a terse description of the new features added to bash-4.4 since +the release of bash-4.3. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. There is now a settable configuration #define that will cause the shell + to exit if the shell is running setuid without the -p option and setuid + to the real uid fails. + +b. Command and process substitutions now turn off the `-v' option when + executing, as other shells seem to do. + +c. The default value for the `checkhash' shell option may now be set at + compile time with a #define. + +d. The `mapfile' builtin now has a -d option to use an arbitrary character + as the record delimiter, and a -t option to strip the delimiter as + supplied with -d. + +e. The maximum number of nested recursive calls to `eval' is now settable in + config-top.h; the default is no limit. + +f. The `-p' option to declare and similar builtins will display attributes for + named variables even when those variables have not been assigned values + (which are technically unset). + +g. The maximum number of nested recursive calls to `source' is now settable + in config-top.h; the default is no limit. + +h. All builtin commands recognize the `--help' option and print a usage + summary. + +i. Bash does not allow function names containing `/' and `=' to be exported. + +j. The `ulimit' builtin has new -k (kqueues) and -P (pseudoterminals) options. + +k. The shell now allows `time ; othercommand' to time null commands. + +l. There is a new `--enable-function-import' configuration option to allow + importing shell functions from the environment; import is enabled by + default. + +m. `printf -v var ""' will now set `var' to the empty string, as if `var=""' + had been executed. + +n. GLOBIGNORE, the pattern substitution word expansion, and programmable + completion match filtering now honor the value of the `nocasematch' option. + +o. There is a new ${parameter@spec} family of operators to transform the + value of `parameter'. + +p. Bash no longer attempts to perform compound assignment if a variable on the + rhs of an assignment statement argument to `declare' has the form of a + compound assignment (e.g., w='(word)' ; declare foo=$w); compound + assignments are accepted if the variable was already declared as an array, + but with a warning. + +q. The declare builtin no longer displays array variables using the compound + assignment syntax with quotes; that will generate warnings when re-used as + input, and isn't necessary. + +r. Executing the rhs of && and || will no longer cause the shell to fork if + it's not necessary. + +s. The `local' builtin takes a new argument: `-', which will cause it to save + and the single-letter shell options and restore their previous values at + function return. + +t. `complete' and `compgen' have a new `-o nosort' option, which forces + readline to not sort the completion matches. + +u. Bash now allows waiting for the most recent process substitution, since it + appears as $!. + +v. The `unset' builtin now unsets a scalar variable if it is subscripted with + a `0', analogous to the ${var[0]} expansion. + +w. `set -i' is no longer valid, as in other shells. + +x. BASH_SUBSHELL is now updated for process substitution and group commands + in pipelines, and is available with the same value when running any exit + trap. + +y. Bash now checks $INSIDE_EMACS as well as $EMACS when deciding whether or + not bash is being run in a GNU Emacs shell window. + +z. Bash now treats SIGINT received when running a non-builtin command in a + loop the way it has traditionally treated running a builtin command: + running any trap handler and breaking out of the loop. + +aa. New variable: EXECIGNORE; a colon-separate list of patterns that will + cause matching filenames to be ignored when searching for commands. + +bb. Aliases whose value ends in a shell metacharacter now expand in a way to + allow them to be `pasted' to the next token, which can potentially change + the meaning of a command (e.g., turning `&' into `&&'). + +cc. `make install' now installs the example loadable builtins and a set of + bash headers to use when developing new loadable builtins. + +dd. `enable -f' now attempts to call functions named BUILTIN_builtin_load when + loading BUILTIN, and BUILTIN_builtin_unload when deleting it. This allows + loadable builtins to run initialization and cleanup code. + +ee. There is a new BASH_LOADABLES_PATH variable containing a list of directories + where the `enable -f' command looks for shared objects containing loadable + builtins. + +ff. The `complete_fullquote' option to `shopt' changes filename completion to + quote all shell metacharacters in filenames and directory names. + +gg. The `kill' builtin now has a `-L' option, equivalent to `-l', for + compatibility with Linux standalone versions of kill. + +hh. BASH_COMPAT and FUNCNEST can be inherited and set from the shell's initial + environment. + +ii. inherit_errexit: a new `shopt' option that, when set, causes command + substitutions to inherit the -e option. By default, those subshells disable + -e. It's enabled as part of turning on posix mode. + +jj. New prompt string: PS0. Expanded and displayed by interactive shells after + reading a complete command but before executing it. + +kk. Interactive shells now behave as if SIGTSTP/SIGTTIN/SIGTTOU are set to + SIG_DFL when the shell is started, so they are set to SIG_DFL in child + processes. + +ll. Posix-mode shells now allow double quotes to quote the history expansion + character. + +mm. OLDPWD can be inherited from the environment if it names a directory. + +nn. Shells running as root no longer inherit PS4 from the environment, closing + a security hole involving PS4 expansion performing command substitution. + +oo. If executing an implicit `cd' when the `autocd' option is set, bash will + now invoke a function named `cd' if one exists before executing the `cd' + builtin. + +pp. Value conversions (arithmetic expansions, case modification, etc.) now + happen when assigning elements of an array using compound assignment. + +qq. There is a new option settable in config-top.h that makes multiple + directory arguments to `cd' a fatal error. + +rr. Bash now uses mktemp() when creating internal temporary files; it produces + a warning at build time on many Linux systems. + +2. New Features in Readline + +a. The history truncation code now uses the same error recovery mechansim as + the history writing code, and restores the old version of the history file + on error. The error recovery mechanism handles symlinked history files. + +b. There is a new bindable variable, `enable-bracketed-paste', which enables + support for a terminal's bracketed paste mode. + +c. The editing mode indicators can now be strings and are user-settable + (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string' + variables). Mode strings can contain invisible character sequences. + Setting mode strings to null strings restores the defaults. + +d. Prompt expansion adds the mode string to the last line of a multi-line + prompt (one with embedded newlines). + +e. There is a new bindable variable, `colored-completion-prefix', which, if + set, causes the common prefix of a set of possible completions to be + displayed in color. + +f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs- + mode yank-pop. + +g. The redisplay code underwent several efficiency improvements for multibyte + locales. + +h. The insert-char function attempts to batch-insert all pending typeahead + that maps to self-insert, as long as it is coming from the terminal. + +i. rl_callback_sigcleanup: a new application function that can clean up and + unset any state set by readline's callback mode. Intended to be used + after a signal. + +j. If an incremental search string has its last character removed with DEL, the + resulting empty search string no longer matches the previous line. + +k. If readline reads a history file that begins with `#' (or the value of + the history comment character) and has enabled history timestamps, the + history entries are assumed to be delimited by timestamps. This allows + multi-line history entries. + +l. Readline now throws an error if it parses a key binding without a + terminating `:' or whitespace. + +m. The default binding for ^W in vi mode now uses word boundaries specified + by Posix (vi-unix-word-rubout is bindable command name). + +n. rl_clear_visible_line: new application-callable function; clears all + screen lines occupied by the current visible readline line. + +o. rl_tty_set_echoing: application-callable function that controls whether + or not readline thinks it is echoing terminal output. + +p. Handle >| and strings of digits preceding and following redirection + specifications as single tokens when tokenizing the line for history + expansion. + +q. Fixed a bug with displaying completions when the prefix display length + is greater than the length of the completions to be displayed. + +r. The :p history modifier now applies to the entire line, so any expansion + specifying :p causes the line to be printed instead of expanded. + +s. New application-callable function: rl_pending_signal(): returns the signal + number of any signal readline has caught but not yet handled. + +t. New application-settable variable: rl_persistent_signal_handlers: if set + to a non-zero value, readline will enable the readline-6.2 signal handler + behavior in callback mode: handlers are installed when + rl_callback_handler_install is called and removed removed when a complete + line has been read. + +------------------------------------------------------------------------------- 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. diff --git a/NOTES b/NOTES index b6b06a4..414e773 100644 --- a/NOTES +++ b/NOTES @@ -1,5 +1,5 @@ -Platform-Specific Configuration and Operation Notes -=================================================== +Platform-Specific Configuration and Operation Notes [somewhat dated] +==================================================================== 1. configure --without-gnu-malloc on: diff --git a/POSIX b/POSIX index fe830f0..84ab6be 100644 --- a/POSIX +++ b/POSIX @@ -1,216 +1,228 @@ 6.11 Bash POSIX Mode ==================== -Starting Bash with the `--posix' command-line option or executing `set +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 +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: +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'. + 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)'. + 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'. + 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. + 4. Alias expansion is always enabled, even in non-interactive shells. 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. + 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 + 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'. + 9. The default history file is '~/.sh_history' (this is the default + value of '$HISTFILE'). - 10. The default history file is `~/.sh_history' (this is the default - value of `$HISTFILE'). + 10. Redirection operators do not perform filename expansion on the + word in the redirection unless the shell is interactive. - 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 + 11. Redirection operators do not perform word splitting on the word in the redirection. - 18. Function names must be valid shell `name's. That is, they may not + 12. 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. - 19. Function names may not be the same as one of the POSIX special + 13. Function names may not be the same as one of the POSIX special builtins. - 20. POSIX special builtins are found before shell functions during + 14. 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 + 15. Literal tildes that appear as the first character in elements of + the 'PATH' variable are not expanded as described above under *note + Tilde Expansion::. + + 16. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and - its completed children. The `TIMEFORMAT' variable controls the + its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 22. When parsing and expanding a ${...} expansion that appears within + 17. 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 `-'. + 18. 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 + 19. The '!' character does not introduce history expansion within a + double-quoted string, even if the 'histexpand' option is enabled. + + 20. If a POSIX special builtin returns an error status, a 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 + 21. 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 exits with an error status if a variable + 22. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. - 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. + 23. 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. + 24. Non-interactive shells exit if FILENAME in '.' FILENAME is not + found. - 29. While variable indirection is available, it may not be applied to - the `#' and `?' special parameters. + 25. Non-interactive shells exit if a syntax error in an arithmetic + expansion results in an invalid expression. - 30. Assignment statements preceding POSIX special builtins persist in + 26. Non-interactive shells exit on word expansion errors. + + 27. Non-interactive shells exit if there is a syntax error in a script + read with the '.' or 'source' builtins, or in a string processed by + the 'eval' builtin. + + 28. Process substitution is not available. + + 29. 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 + 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 + 32. The 'command' builtin does not prevent builtins that take + assignment statements as arguments from expanding them as + assignment statements; when not in POSIX mode, assignment builtins + lose their assignment statement expansion properties when preceded + by 'command'. + + 33. The 'bg' builtin uses the required format to describe each job + placed in the background, which does not include an indication of + whether the job is the current or previous job. + + 34. The output of 'kill -l' prints all the signal names on a single + line, separated by spaces, without the 'SIG' prefix. + + 35. The 'kill' builtin does not accept signal names with a 'SIG' + prefix. + + 36. 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'. + 37. The 'trap' builtin displays signal names without the leading + 'SIG'. - 34. The `trap' builtin doesn't check the first argument for a possible + 38. 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. + 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'. + 39. 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. + 40. Enabling POSIX mode has the effect of setting the + 'inherit_errexit' option, so subshells spawned to execute command + substitutions inherit the value of the '-e' option from the parent + shell. When the 'inherit_errexit' option is not enabled, Bash + clears the '-e' option in such subshells. - 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 + 41. 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 + 42. 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 + 43. 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 + 44. 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 + 45. 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. + system with the '-P' option. - 43. When listing the history, the `fc' builtin does not include an + 46. 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'. + 47. 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'. + 48. 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'. + 49. 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 + 50. 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. + 51. 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. + 52. 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 + 53. 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. + 'read', the trap handler executes and 'read' returns an exit status + greater than 128. + 54. Bash removes an exited background process's status from the list + of such statuses after the 'wait' builtin is used to obtain it. 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. + 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 +the '--enable-strict-posix-default' to 'configure' when building (*note Optional Features::). diff --git a/RBASH b/RBASH index 0e5c10b..9478fc6 100644 --- a/RBASH +++ b/RBASH @@ -1,49 +1,37 @@ 6.10 The Restricted Shell ========================= -If Bash is started with the name `rbash', or the `--restricted' or `-r' +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' +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. - + * 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 `.' + * 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. - + * 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 + * Parsing the value of 'SHELLOPTS' from the shell environment at startup. - - * Redirecting output using the `>', `>|', `<>', `>&', `&>', and `>>' + * 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 + * 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'. + * 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 +Shell Scripts::), 'rbash' turns off any restrictions in the shell spawned to execute the script. diff --git a/README b/README index db09777..ad87aa8 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ Introduction ============ -This is GNU Bash, version 4.3. Bash is the GNU Project's Bourne +This is GNU Bash, version 4.4. Bash is the GNU Project's Bourne Again SHell, a complete implementation of the POSIX shell spec, but also with interactive command line editing, job control on architectures that support it, csh-like features such as history @@ -15,8 +15,8 @@ See the file POSIX for a discussion of how the Bash defaults differ from the POSIX spec and a description of the Bash `posix mode'. There are some user-visible incompatibilities between this version -of Bash and previous widely-distributed versions, bash-4.1 and -bash-4.2. For details, see the file COMPAT. The NEWS file tersely +of Bash and previous widely-distributed versions, bash-4.2 and +bash-4.3. For details, see the file COMPAT. The NEWS file tersely lists features that are new in this release. Bash is free software, distributed under the terms of the [GNU] General diff --git a/aclocal.m4 b/aclocal.m4 index a947272..d3bac07 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1692,6 +1692,8 @@ AC_CHECK_HEADERS(wctype.h) AC_CHECK_HEADERS(wchar.h) AC_CHECK_HEADERS(langinfo.h) +AC_CHECK_HEADERS(mbstr.h) + AC_CHECK_FUNC(mbrlen, AC_DEFINE(HAVE_MBRLEN)) AC_CHECK_FUNC(mbscasecmp, AC_DEFINE(HAVE_MBSCMP)) AC_CHECK_FUNC(mbscmp, AC_DEFINE(HAVE_MBSCMP)) @@ -1784,14 +1786,14 @@ char **v; exit (w == 0); /* exit 0 if wcwidth broken */ } ], -bash_cv_wcwidth_broken=yes, bash_cv_wcwdith_broken=no, bash_cv_wcwidth_broken=no)]) +bash_cv_wcwidth_broken=yes, bash_cv_wcwidth_broken=no, bash_cv_wcwidth_broken=no)]) if test "$bash_cv_wcwidth_broken" = yes; then AC_DEFINE(WCWIDTH_BROKEN, 1, [wcwidth is usually not broken]) fi if test "$am_cv_func_iconv" = yes; then OLDLIBS="$LIBS" - LIBS="$LIBS $LIBICONV" + LIBS="$LIBS $LIBINTL $LIBICONV" AC_CHECK_FUNCS(locale_charset) LIBS="$OLDLIBS" fi @@ -1854,7 +1856,7 @@ main() ], ac_cv_rl_version=`cat conftest.rlv`, ac_cv_rl_version='0.0', -ac_cv_rl_version='4.2')]) +ac_cv_rl_version='6.3')]) CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" diff --git a/alias.c b/alias.c index 7839229..8b3f228 100644 --- a/alias.c +++ b/alias.c @@ -1,7 +1,7 @@ /* alias.c -- Not a full alias, but just the kind that we use in the shell. Csh style alias is somewhere else (`over there, in a box'). */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -42,7 +42,11 @@ # include "pcomplete.h" #endif -#define ALIAS_HASH_BUCKETS 16 /* must be power of two */ +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif + +#define ALIAS_HASH_BUCKETS 64 /* must be power of two */ typedef int sh_alias_map_func_t __P((alias_t *)); diff --git a/array.c b/array.c index 4359a52..6a6db77 100644 --- a/array.c +++ b/array.c @@ -55,6 +55,9 @@ static char *array_to_string_internal __P((ARRAY_ELEMENT *, ARRAY_ELEMENT *, char *, int)); +/* lastref should be moved into the array structure so each array can be + optimized separately */ + static ARRAY *lastarray = 0; static ARRAY_ELEMENT *lastref = 0; @@ -719,7 +722,7 @@ arrayind_t i; SET_LASTREF(a, ae); return(element_value(ae)); } - UNSET_LASTREF(); + UNSET_LASTREF(); /* XXX SET_LASTREF(a, start) ? */ return((char *) NULL); } @@ -834,7 +837,7 @@ int quoted; rsize, rsize); strcpy(result + rlen, t); rlen += reg; - if (quoted && t) + if (quoted) free(t); /* * Add a separator only after non-null elements. @@ -869,7 +872,10 @@ int quoted; for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) { is = inttostr (element_index(ae), indstr, sizeof(indstr)); - valstr = element_value (ae) ? sh_double_quote (element_value(ae)) + valstr = element_value (ae) ? + (ansic_shouldquote (element_value (ae)) ? + ansic_quote (element_value(ae), 0, (int *)0) : + sh_double_quote (element_value (ae))) : (char *)NULL; elen = STRLEN (is) + 8 + STRLEN (valstr); RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize); diff --git a/arrayfunc.c b/arrayfunc.c index c4bae0a..47c595e 100644 --- a/arrayfunc.c +++ b/arrayfunc.c @@ -1,6 +1,6 @@ /* arrayfunc.c -- High-level array functions used by other parts of the shell. */ -/* Copyright (C) 2001-2011 Free Software Foundation, Inc. +/* Copyright (C) 2001-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -33,6 +33,9 @@ #include "pathexp.h" #include "shmbutil.h" +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif #include "builtins/common.h" @@ -45,7 +48,7 @@ static SHELL_VAR *assign_array_element_internal __P((SHELL_VAR *, char *, char * static char *quote_assign __P((const char *)); static void quote_array_assignment_chars __P((WORD_LIST *)); -static char *array_value_internal __P((char *, int, int, int *, arrayind_t *)); +static char *array_value_internal __P((const char *, int, int, int *, arrayind_t *)); /* Standard error message to use when encountering an invalid array subscript */ const char * const bash_badsub_errmsg = N_("bad array subscript"); @@ -84,6 +87,12 @@ convert_var_to_array (var) VSETATTR (var, att_array); VUNSETATTR (var, att_invisible); + /* Make sure it's not marked as an associative array any more */ + VUNSETATTR (var, att_assoc); + + /* Since namerefs can't be array variables, turn off nameref attribute */ + VUNSETATTR (var, att_nameref); + return var; } @@ -115,6 +124,12 @@ convert_var_to_assoc (var) VSETATTR (var, att_assoc); VUNSETATTR (var, att_invisible); + /* Make sure it's not marked as an indexed array any more */ + VUNSETATTR (var, att_array); + + /* Since namerefs can't be array variables, turn off nameref attribute */ + VUNSETATTR (var, att_nameref); + return var; } @@ -201,9 +216,18 @@ bind_array_variable (name, ind, value, flags) entry = find_shell_variable (name); + if (entry == (SHELL_VAR *) 0) + { + /* Is NAME a nameref variable that points to an unset variable? */ + entry = find_variable_nameref_for_create (name, 0); + if (entry == INVALID_NAMEREF_VALUE) + return ((SHELL_VAR *)0); + if (entry && nameref_p (entry)) + entry = make_new_array_variable (nameref_cell (entry)); + } if (entry == (SHELL_VAR *) 0) entry = make_new_array_variable (name); - else if (readonly_p (entry) || noassign_p (entry)) + else if ((readonly_p (entry) && (flags&ASS_FORCE) == 0) || noassign_p (entry)) { if (readonly_p (entry)) err_readonly (name); @@ -237,7 +261,7 @@ bind_assoc_variable (entry, name, key, value, flags) SHELL_VAR *dentry; char *newval; - if (readonly_p (entry) || noassign_p (entry)) + if ((readonly_p (entry) && (flags&ASS_FORCE) == 0) || noassign_p (entry)) { if (readonly_p (entry)) err_readonly (name); @@ -256,7 +280,7 @@ assign_array_element (name, value, flags) { char *sub, *vname; int sublen; - SHELL_VAR *entry; + SHELL_VAR *entry, *nv; vname = array_variable_name (name, &sub, &sublen); @@ -338,9 +362,21 @@ find_or_make_array_variable (name, flags) { /* See if we have a nameref pointing to a variable that hasn't been created yet. */ - var = find_variable_last_nameref (name); + var = find_variable_last_nameref (name, 1); + if (var && nameref_p (var) && invisible_p (var)) + { + internal_warning (_("%s: removing nameref attribute"), name); + VUNSETATTR (var, att_nameref); + } if (var && nameref_p (var)) - var = (flags & 2) ? make_new_assoc_variable (nameref_cell (var)) : make_new_array_variable (nameref_cell (var)); + { + if (valid_nameref_value (nameref_cell (var), 2) == 0) + { + sh_invalidid (nameref_cell (var)); + return ((SHELL_VAR *)NULL); + } + var = (flags & 2) ? make_new_assoc_variable (nameref_cell (var)) : make_new_array_variable (nameref_cell (var)); + } } if (var == 0) @@ -400,10 +436,7 @@ assign_array_var_from_word_list (var, list, flags) i = (flags & ASS_APPEND) ? array_max_index (a) + 1 : 0; for (l = list; l; l = l->next, i++) - if (var->assign_func) - (*var->assign_func) (var, l->word->word, i, 0); - else - array_insert (a, i, l->word->word); + bind_array_var_internal (var, i, 0, l->word->word, flags & ~ASS_APPEND); VUNSETATTR (var, att_invisible); /* no longer invisible */ @@ -476,7 +509,7 @@ assign_compound_array_list (var, nlist, flags) ARRAY *a; HASH_TABLE *h; WORD_LIST *list; - char *w, *val, *nval; + char *w, *val, *nval, *savecmd; int len, iflags, free_val; arrayind_t ind, last_ind; char *akey; @@ -501,7 +534,9 @@ assign_compound_array_list (var, nlist, flags) for (list = nlist; list; list = list->next) { - iflags = flags; + /* Don't allow var+=(values) to make assignments in VALUES append to + existing values by default. */ + iflags = flags & ~ASS_APPEND; w = list->word->word; /* We have a word of the form [ind]=value */ @@ -609,10 +644,12 @@ assign_compound_array_list (var, nlist, flags) free_val = 1; } + savecmd = this_command_name; if (integer_p (var)) this_command_name = (char *)NULL; /* no command name for errors */ bind_array_var_internal (var, ind, akey, val, iflags); last_ind++; + this_command_name = savecmd; if (free_val) free (val); @@ -732,7 +769,7 @@ unbind_array_element (var, sub) char *akey; ARRAY_ELEMENT *ae; - len = skipsubscript (sub, 0, 0); + len = skipsubscript (sub, 0, (var && assoc_p(var))); if (sub[len] != ']' || len == 0) { builtin_error ("%s[%s: %s", var->name, sub, _(bash_badsub_errmsg)); @@ -742,8 +779,13 @@ unbind_array_element (var, sub) if (ALL_ELEMENT_SUB (sub[0]) && sub[1] == 0) { - unbind_variable (var->name); - return (0); + if (array_p (var) || assoc_p (var)) + { + unbind_variable (var->name); /* XXX -- {array,assoc}_flush ? */ + return (0); + } + else + return -2; /* don't allow this to unset scalar variables */ } if (assoc_p (var)) @@ -758,7 +800,7 @@ unbind_array_element (var, sub) assoc_remove (assoc_cell (var), akey); free (akey); } - else + else if (array_p (var)) { ind = array_expand_index (var, sub, len+1); /* negative subscripts to indexed arrays count back from end */ @@ -773,6 +815,19 @@ unbind_array_element (var, sub) if (ae) array_dispose_element (ae); } + else /* array_p (var) == 0 && assoc_p (var) == 0 */ + { + akey = this_command_name; + ind = array_expand_index (var, sub, len+1); + this_command_name = akey; + if (ind == 0) + { + unbind_variable (var->name); + return (0); + } + else + return -2; /* any subscript other than 0 is invalid with scalar variables */ + } return 0; } @@ -825,8 +880,9 @@ print_assoc_assignment (var, quoted) /* Return 1 if NAME is a properly-formed array reference v[sub]. */ int -valid_array_reference (name) - char *name; +valid_array_reference (name, flags) + const char *name; + int flags; { char *t; int r, len; @@ -843,6 +899,8 @@ valid_array_reference (name) len = skipsubscript (t, 0, 0); if (t[len] != ']' || len == 1) return 0; + if (t[len+1] != '\0') + return 0; for (r = 1; r < len; r++) if (whitespace (t[r]) == 0) return 1; @@ -858,22 +916,26 @@ array_expand_index (var, s, len) char *s; int len; { - char *exp, *t; + char *exp, *t, *savecmd; int expok; arrayind_t val; exp = (char *)xmalloc (len); strncpy (exp, s, len - 1); exp[len - 1] = '\0'; - t = expand_arith_string (exp, 0); + t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */ + savecmd = this_command_name; this_command_name = (char *)NULL; val = evalexp (t, &expok); + this_command_name = savecmd; free (t); free (exp); if (expok == 0) { last_command_exit_value = EXECUTION_FAILURE; + if (no_longjmp_on_fatal_error) + return 0; top_level_cleanup (); jump_to_top_level (DISCARD); } @@ -886,7 +948,8 @@ array_expand_index (var, s, len) in *LENP. This returns newly-allocated memory. */ char * array_variable_name (s, subp, lenp) - char *s, **subp; + const char *s; + char **subp; int *lenp; { char *t, *ret; @@ -930,7 +993,8 @@ array_variable_name (s, subp, lenp) If LENP is non-null, the length of the subscript is returned in *LENP. */ SHELL_VAR * array_variable_part (s, subp, lenp) - char *s, **subp; + const char *s; + char **subp; int *lenp; { char *t; @@ -939,14 +1003,10 @@ array_variable_part (s, subp, lenp) t = array_variable_name (s, subp, lenp); if (t == 0) return ((SHELL_VAR *)NULL); - var = find_variable (t); + var = find_variable (t); /* XXX - handle namerefs here? */ free (t); -#if 0 - return (var == 0 || invisible_p (var)) ? (SHELL_VAR *)0 : var; -#else return var; /* now return invisible variables; caller must handle */ -#endif } #define INDEX_ERROR() \ @@ -971,7 +1031,7 @@ array_variable_part (s, subp, lenp) reference is name[@], and 0 otherwise. */ static char * array_value_internal (s, quoted, flags, rtype, indp) - char *s; + const char *s; int quoted, flags, *rtype; arrayind_t *indp; { @@ -1029,7 +1089,8 @@ array_value_internal (s, quoted, flags, rtype, indp) free (temp); } else /* ${name[@]} or unquoted ${name[*]} */ - retval = string_list_dollar_at (l, quoted); /* XXX - leak here */ + /* XXX - bash-4.4/bash-5.0 test AV_ASSIGNRHS and pass PF_ASSIGNRHS */ + retval = string_list_dollar_at (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0); /* XXX - leak here */ dispose_words (l); } @@ -1091,7 +1152,7 @@ array_value_internal (s, quoted, flags, rtype, indp) subscript contained in S, obeying quoting for subscripts * and @. */ char * array_value (s, quoted, flags, rtype, indp) - char *s; + const char *s; int quoted, flags, *rtype; arrayind_t *indp; { @@ -1104,7 +1165,7 @@ array_value (s, quoted, flags, rtype, indp) evaluator in expr.c. */ char * get_array_value (s, flags, rtype, indp) - char *s; + const char *s; int flags, *rtype; arrayind_t *indp; { @@ -1146,7 +1207,7 @@ array_keys (s, quoted) free (temp); } else /* ${!name[@]} or unquoted ${!name[*]} */ - retval = string_list_dollar_at (l, quoted); + retval = string_list_dollar_at (l, quoted, 0); dispose_words (l); return retval; diff --git a/arrayfunc.h b/arrayfunc.h index 26f4879..5ee2759 100644 --- a/arrayfunc.h +++ b/arrayfunc.h @@ -29,6 +29,8 @@ #define AV_ALLOWALL 0x001 #define AV_QUOTED 0x002 #define AV_USEIND 0x004 +#define AV_USEVAL 0x008 /* XXX - should move this */ +#define AV_ASSIGNRHS 0x010 /* no splitting, special case ${a[@]} */ extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *)); extern SHELL_VAR *convert_var_to_assoc __P((SHELL_VAR *)); @@ -57,20 +59,21 @@ extern void print_array_assignment __P((SHELL_VAR *, int)); extern void print_assoc_assignment __P((SHELL_VAR *, int)); extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int)); -extern int valid_array_reference __P((char *)); -extern char *array_value __P((char *, int, int, int *, arrayind_t *)); -extern char *get_array_value __P((char *, int, int *, arrayind_t *)); +extern int valid_array_reference __P((const char *, int)); +extern char *array_value __P((const char *, int, int, int *, arrayind_t *)); +extern char *get_array_value __P((const char *, int, int *, arrayind_t *)); extern char *array_keys __P((char *, int)); -extern char *array_variable_name __P((char *, char **, int *)); -extern SHELL_VAR *array_variable_part __P((char *, char **, int *)); +extern char *array_variable_name __P((const char *, char **, int *)); +extern SHELL_VAR *array_variable_part __P((const char *, char **, int *)); #else #define AV_ALLOWALL 0 #define AV_QUOTED 0 #define AV_USEIND 0 +#define AV_ASSIGNRHS 0 #endif diff --git a/assoc.c b/assoc.c index 7298a1f..84a387c 100644 --- a/assoc.c +++ b/assoc.c @@ -277,7 +277,10 @@ int starsub, quoted; for (i = 1; l && i < start; i++) l = l->next; if (l == 0) - return ((char *)NULL); + { + dispose_words (save); + return ((char *)NULL); + } for (j = 0,h = t = l; l && j < nelem; j++) { t = l; @@ -433,17 +436,19 @@ assoc_to_assign (hash, quoted) for (i = 0; i < hash->nbuckets; i++) for (tlist = hash_items (i, hash); tlist; tlist = tlist->next) { -#if 1 - if (sh_contains_shell_metas (tlist->key)) + if (ansic_shouldquote (tlist->key)) + istr = ansic_quote (tlist->key, 0, (int *)0); + else if (sh_contains_shell_metas (tlist->key)) istr = sh_double_quote (tlist->key); else if (ALL_ELEMENT_SUB (tlist->key[0]) && tlist->key[1] == '\0') istr = sh_double_quote (tlist->key); else istr = tlist->key; -#else - istr = tlist->key; -#endif - vstr = tlist->data ? sh_double_quote ((char *)tlist->data) : (char *)0; + + vstr = tlist->data ? (ansic_shouldquote ((char *)tlist->data) ? + ansic_quote ((char *)tlist->data, 0, (int *)0) : + sh_double_quote ((char *)tlist->data)) + : (char *)0; elen = STRLEN (istr) + 8 + STRLEN (vstr); RESIZE_MALLOCED_BUFFER (ret, rlen, (elen+1), rsize, rsize); diff --git a/bashhist.c b/bashhist.c index d4c62e7..9979f99 100644 --- a/bashhist.c +++ b/bashhist.c @@ -1,6 +1,6 @@ /* bashhist.c -- bash interface to the GNU history library. */ -/* Copyright (C) 1993-2012 Free Software Foundation, Inc. +/* Copyright (C) 1993-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -83,8 +83,8 @@ static struct ignorevar histignore = /* Non-zero means to remember lines typed to the shell on the history list. This is different than the user-controlled behaviour; this becomes zero when we read lines from a file, for example. */ -int remember_on_history = 1; -int enable_history_list = 1; /* value for `set -o history' */ +int remember_on_history = 0; +int enable_history_list = 0; /* value for `set -o history' */ /* The number of lines that Bash has added to this history session. The difference between the number of the top element in the history list @@ -99,6 +99,8 @@ int history_lines_in_file; /* Non-zero means do no history expansion on this line, regardless of what history_expansion says. */ int history_expansion_inhibited; +/* If non-zero, double quotes can quote the history expansion character. */ +int double_quotes_inhibit_history_expansion = 0; #endif /* With the old default, every line was saved in the history individually. @@ -186,7 +188,9 @@ extern int current_command_line_count; extern struct dstack dstack; extern int parser_state; +#if defined (BANG_HISTORY) static int bash_history_inhibit_expansion __P((char *, int)); +#endif #if defined (READLINE) static void re_edit __P((char *)); #endif @@ -197,6 +201,7 @@ static HIST_ENTRY *last_history_entry __P((void)); static char *expand_histignore_pattern __P((char *)); static int history_should_ignore __P((char *)); +#if defined (BANG_HISTORY) /* Is the history expansion starting at string[i] one that should not be expanded? */ static int @@ -204,6 +209,12 @@ bash_history_inhibit_expansion (string, i) char *string; int i; { + int t; + char hx[2]; + + hx[0] = history_expansion_char; + hx[1] = '\0'; + /* The shell uses ! as a pattern negation character in globbing [...] expressions, so let those pass without expansion. */ if (i > 0 && (string[i - 1] == '[') && member (']', string + i + 1)) @@ -220,17 +231,33 @@ bash_history_inhibit_expansion (string, i) else if (extended_glob && i > 1 && string[i+1] == '(' && member (')', string + i + 2)) return (1); #endif + + /* Make sure the history expansion should not be skipped by quoting or + command/process substitution. */ + else if ((t = skip_to_histexp (string, 0, hx, SD_NOJMP|SD_HISTEXP)) > 0) + { + /* Skip instances of history expansion appearing on the line before + this one. */ + while (t < i) + { + t = skip_to_histexp (string, t+1, hx, SD_NOJMP|SD_HISTEXP); + if (t <= 0) + return 0; + } + return (t > i); + } else return (0); } +#endif void bash_initialize_history () { history_quotes_inhibit_expansion = 1; history_search_delimiter_chars = ";&()|<>"; - history_inhibit_expansion_function = bash_history_inhibit_expansion; #if defined (BANG_HISTORY) + history_inhibit_expansion_function = bash_history_inhibit_expansion; sv_histchars ("histchars"); #endif } @@ -241,10 +268,10 @@ bash_history_reinit (interact) { #if defined (BANG_HISTORY) history_expansion = interact != 0; - history_expansion_inhibited = 1; -#endif - remember_on_history = enable_history_list = interact != 0; + history_expansion_inhibited = 1; /* XXX */ history_inhibit_expansion_function = bash_history_inhibit_expansion; +#endif + remember_on_history = enable_history_list; } void @@ -259,11 +286,11 @@ bash_history_disable () void bash_history_enable () { - remember_on_history = 1; + remember_on_history = enable_history_list = 1; #if defined (BANG_HISTORY) history_expansion_inhibited = 0; -#endif history_inhibit_expansion_function = bash_history_inhibit_expansion; +#endif sv_history_control ("HISTCONTROL"); sv_histignore ("HISTIGNORE"); } @@ -290,8 +317,13 @@ load_history () if (hf && *hf && file_exists (hf)) { read_history (hf); + /* We have read all of the lines from the history file, even if we + read more lines than $HISTSIZE. Remember the total number of lines + we read so we don't count the last N lines as new over and over + again. */ + history_lines_in_file = history_lines_read_from_file; using_history (); - history_lines_in_file = where_history (); + /* history_lines_in_file = where_history () + history_base - 1; */ } } @@ -300,6 +332,7 @@ bash_clear_history () { clear_history (); history_lines_this_session = 0; + /* XXX - reset history_lines_read_from_file? */ } /* Delete and free the history list entry at offset I. */ @@ -377,7 +410,7 @@ maybe_append_history (filename) struct stat buf; result = EXECUTION_SUCCESS; - if (history_lines_this_session && (history_lines_this_session <= where_history ())) + if (history_lines_this_session > 0 && (history_lines_this_session <= where_history ())) { /* If the filename was supplied, then create it if necessary. */ if (stat (filename, &buf) == -1 && errno == ENOENT) @@ -391,9 +424,14 @@ maybe_append_history (filename) close (fd); } result = append_history (history_lines_this_session, filename); + /* Pretend we already read these lines from the file because we just + added them */ history_lines_in_file += history_lines_this_session; history_lines_this_session = 0; } + else + history_lines_this_session = 0; /* reset if > where_history() */ + return (result); } @@ -406,7 +444,7 @@ maybe_save_shell_history () char *hf; result = 0; - if (history_lines_this_session) + if (history_lines_this_session > 0) { hf = get_string_value ("HISTFILE"); @@ -433,7 +471,8 @@ maybe_save_shell_history () else { result = write_history (hf); - history_lines_in_file = history_lines_this_session; + history_lines_in_file = history_lines_written_to_file; + /* history_lines_in_file = where_history () + history_base - 1; */ } history_lines_this_session = 0; @@ -532,6 +571,7 @@ pre_process_line (line, print_changes, addit) if (hist_verify && expanded == 1) { re_edit (history_value); + free (history_value); return ((char *)NULL); } # endif @@ -634,7 +674,9 @@ hc_erasedups (line) if (STREQ (temp->line, line)) { r = where_history (); - remove_history (r); + temp = remove_history (r); + if (temp) + free_history_entry (temp); } } using_history (); @@ -706,11 +748,24 @@ check_add_history (line, force) #if defined (SYSLOG_HISTORY) #define SYSLOG_MAXLEN 600 +extern char *shell_name; + +#ifndef OPENLOG_OPTS +#define OPENLOG_OPTS 0 +#endif + void bash_syslog_history (line) const char *line; { char trunc[SYSLOG_MAXLEN]; + static int first = 1; + + if (first) + { + openlog (shell_name, OPENLOG_OPTS, SYSLOG_FACILITY); + first = 0; + } if (strlen(line) < SYSLOG_MAXLEN) syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY: PID=%d UID=%d %s", getpid(), current_user.uid, line); diff --git a/bashjmp.h b/bashjmp.h index c26053d..79152fe 100644 --- a/bashjmp.h +++ b/bashjmp.h @@ -27,7 +27,9 @@ extern procenv_t top_level; extern procenv_t subshell_top_level; extern procenv_t return_catch; /* used by `return' builtin */ -#define SHFUNC_RETURN() longjmp (return_catch, 1) +extern int no_longjmp_on_fatal_error; + +#define SHFUNC_RETURN() sh_longjmp (return_catch, 1) #define COPY_PROCENV(old, save) \ xbcopy ((char *)old, (char *)save, sizeof (procenv_t)); diff --git a/bashline.c b/bashline.c index 8ff1796..f4fe9f1 100644 --- a/bashline.c +++ b/bashline.c @@ -1,6 +1,6 @@ /* bashline.c -- Bash's interface to the readline library. */ -/* Copyright (C) 1987-2013 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -54,6 +54,11 @@ #include "pathexp.h" #include "shmbutil.h" #include "trap.h" +#include "flags.h" + +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif #include "builtins/common.h" @@ -137,6 +142,8 @@ static int executable_completion __P((const char *, int)); static rl_icppfunc_t *save_directory_hook __P((void)); static void restore_directory_hook __P((rl_icppfunc_t)); +static int directory_exists __P((const char *)); + static void cleanup_expansion_error __P((void)); static void maybe_make_readline_line __P((char *)); static void set_up_new_line __P((char *)); @@ -631,6 +638,8 @@ bashline_reset () rl_filename_stat_hook = bash_filename_stat_hook; bashline_reset_event_hook (); + + rl_sort_completion_matches = 1; } /* Contains the line to push into readline. */ @@ -972,9 +981,6 @@ edit_and_execute_command (count, c, editing_mode, edit_command) metaval = rl_variable_value ("input-meta"); metaflag = RL_BOOLEAN_VARIABLE_VALUE (metaval); - /* Now, POSIX.1-2001 and SUSv3 say that the commands executed from the - temporary file should be placed into the history. We don't do that - yet. */ if (rl_deprep_term_function) (*rl_deprep_term_function) (); save_parser_state (&ps); @@ -1273,7 +1279,7 @@ check_redir (ti) /* Handle the two character tokens `>&', `<&', and `>|'. We are not in a command position after one of these. */ this_char = rl_line_buffer[ti]; - prev_char = rl_line_buffer[ti - 1]; + prev_char = (ti > 0) ? rl_line_buffer[ti - 1] : 0; if ((this_char == '&' && (prev_char == '<' || prev_char == '>')) || (this_char == '|' && prev_char == '>')) @@ -1305,15 +1311,26 @@ static int find_cmd_start (start) int start; { - register int s, os; + register int s, os, ns; os = 0; /* Flags == SD_NOJMP only because we want to skip over command substitutions in assignment statements. Have to test whether this affects `standalone' command substitutions as individual words. */ - while (((s = skip_to_delim (rl_line_buffer, os, COMMAND_SEPARATORS, SD_NOJMP/*|SD_NOSKIPCMD*/)) <= start) && + while (((s = skip_to_delim (rl_line_buffer, os, COMMAND_SEPARATORS, SD_NOJMP|SD_COMPLETE/*|SD_NOSKIPCMD*/)) <= start) && rl_line_buffer[s]) - os = s+1; + { + /* Handle >| token crudely; treat as > not | */ + if (rl_line_buffer[s] == '|' && rl_line_buffer[s-1] == '>') + { + ns = skip_to_delim (rl_line_buffer, s+1, COMMAND_SEPARATORS, SD_NOJMP|SD_COMPLETE/*|SD_NOSKIPCMD*/); + if (ns > start || rl_line_buffer[ns] == 0) + return os; + os = ns+1; + continue; + } + os = s+1; + } return os; } @@ -1323,7 +1340,7 @@ find_cmd_end (end) { register int e; - e = skip_to_delim (rl_line_buffer, end, COMMAND_SEPARATORS, SD_NOJMP); + e = skip_to_delim (rl_line_buffer, end, COMMAND_SEPARATORS, SD_NOJMP|SD_COMPLETE); return e; } @@ -1339,7 +1356,7 @@ find_cmd_name (start, sp, ep) ; /* skip until a shell break character */ - e = skip_to_delim (rl_line_buffer, s, "()<>;&| \t\n", SD_NOJMP); + e = skip_to_delim (rl_line_buffer, s, "()<>;&| \t\n", SD_NOJMP|SD_COMPLETE); name = substring (rl_line_buffer, s, e); @@ -1368,6 +1385,34 @@ prog_complete_return (text, matchnum) #endif /* PROGRAMMABLE_COMPLETION */ +/* Try and catch completion attempts that are syntax errors or otherwise + invalid. */ +static int +invalid_completion (text, ind) + const char *text; + int ind; +{ + int pind; + + /* If we don't catch these here, the next clause will */ + if (ind > 0 && rl_line_buffer[ind] == '(' && /*)*/ + member (rl_line_buffer[ind-1], "$<>")) + return 0; + + pind = ind - 1; + while (pind > 0 && whitespace (rl_line_buffer[pind])) + pind--; + /* If we have only whitespace preceding a paren, it's valid */ + if (ind >= 0 && pind <= 0 && rl_line_buffer[ind] == '(') /*)*/ + return 0; + /* Flag the invalid completions, which are mostly syntax errors */ + if (ind > 0 && rl_line_buffer[ind] == '(' && /*)*/ + member (rl_line_buffer[pind], COMMAND_SEPARATORS) == 0) + return 1; + + return 0; +} + /* Do some completion on TEXT. The indices of TEXT in RL_LINE_BUFFER are at START and END. Return an array of matches, or NULL if none. */ static char ** @@ -1390,6 +1435,8 @@ attempt_shell_completion (text, start, end) set_directory_hook (); rl_filename_stat_hook = bash_filename_stat_hook; + rl_sort_completion_matches = 1; /* sort by default */ + /* Determine if this could be a command word. It is if it appears at the start of the line (ignoring preceding whitespace), or if it appears after a character that separates commands. It cannot be a @@ -1436,6 +1483,12 @@ attempt_shell_completion (text, start, end) assignments. */ } + if (in_command_position && invalid_completion (text, ti)) + { + rl_attempted_completion_over = 1; + return ((char **)NULL); + } + /* Check that we haven't incorrectly flagged a closed command substitution as indicating we're in a command position. */ if (in_command_position && ti >= 0 && rl_line_buffer[ti] == '`' && @@ -1525,6 +1578,13 @@ attempt_shell_completion (text, start, end) /* command completion if programmable completion fails */ in_command_position = s == start && STREQ (n, text); /* XXX */ } + /* empty command name following command separator */ + else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0 && + was_assignment == 0 && member (rl_line_buffer[start-1], COMMAND_SEPARATORS)) + { + foundcs = 0; + in_command_position = 1; + } else if (s >= e && n[0] == '\0' && text[0] == '\0' && start > 0) { foundcs = 0; /* empty command name following assignments */ @@ -1586,6 +1646,11 @@ bash_default_completion (text, start, end, qc, compflags) else { matches = rl_completion_matches (text, variable_completion_function); + /* If a single match, see if it expands to a directory name and append + a slash if it does. This requires us to expand the variable name, + so we don't want to display errors if the variable is unset. This + can happen with dynamic variables whose value has never been + requested. */ if (matches && matches[0] && matches[1] == 0) { t = savestring (matches[0]); @@ -1780,7 +1845,9 @@ command_word_completion_function (hint_text, state) if (globpat || absolute_program (hint_text)) { /* Perform tilde expansion on what's passed, so we don't end up - passing filenames with tildes directly to stat(). */ + passing filenames with tildes directly to stat(). The rest of + the shell doesn't do variable expansion on the word following + the tilde, so we don't do it here even if direxpand is set. */ if (*hint_text == '~') { hint = bash_tilde_expand (hint_text, 0); @@ -1794,6 +1861,11 @@ command_word_completion_function (hint_text, state) directory_part = (char *)NULL; } } + else if (dircomplete_expand) + { + hint = savestring (hint_text); + bash_directory_completion_hook (&hint); + } else hint = savestring (hint_text); @@ -3030,6 +3102,30 @@ restore_directory_hook (hookf) rl_directory_rewrite_hook = hookf; } +/* Check whether not the (dequoted) version of DIRNAME, with any trailing slash + removed, exists. */ +static int +directory_exists (dirname) + const char *dirname; +{ + char *new_dirname; + int dirlen, r; + struct stat sb; + + /* First, dequote the directory name */ + new_dirname = bash_dequote_filename ((char *)dirname, rl_completion_quote_character); + dirlen = STRLEN (new_dirname); + if (new_dirname[dirlen - 1] == '/') + new_dirname[dirlen - 1] = '\0'; +#if defined (HAVE_LSTAT) + r = lstat (new_dirname, &sb) == 0; +#else + r = stat (new_dirname, &sb) == 0; +#endif + free (new_dirname); + return (r); +} + /* Expand a filename before the readline completion code passes it to stat(2). The filename will already have had tilde expansion performed. */ static int @@ -3038,6 +3134,7 @@ bash_filename_stat_hook (dirname) { char *local_dirname, *new_dirname, *t; int should_expand_dirname, return_value; + int global_nounset; WORD_LIST *wl; struct stat sb; @@ -3048,17 +3145,18 @@ bash_filename_stat_hook (dirname) else if (t = mbschr (local_dirname, '`')) /* XXX */ should_expand_dirname = '`'; -#if defined (HAVE_LSTAT) - if (should_expand_dirname && lstat (local_dirname, &sb) == 0) -#else - if (should_expand_dirname && stat (local_dirname, &sb) == 0) -#endif + if (should_expand_dirname && directory_exists (local_dirname)) should_expand_dirname = 0; if (should_expand_dirname) { new_dirname = savestring (local_dirname); - wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */ + /* no error messages, and expand_prompt_string doesn't longjmp so we don't + have to worry about restoring this setting. */ + global_nounset = unbound_vars_is_error; + unbound_vars_is_error = 0; + wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE); /* does the right thing */ + unbound_vars_is_error = global_nounset; if (wl) { free (new_dirname); @@ -3116,7 +3214,8 @@ bash_directory_completion_hook (dirname) char **dirname; { char *local_dirname, *new_dirname, *t; - int return_value, should_expand_dirname, nextch, closer; + int return_value, should_expand_dirname, nextch, closer, changed; + size_t local_dirlen; WORD_LIST *wl; struct stat sb; @@ -3145,17 +3244,13 @@ bash_directory_completion_hook (dirname) should_expand_dirname = '`'; } -#if defined (HAVE_LSTAT) - if (should_expand_dirname && lstat (local_dirname, &sb) == 0) -#else - if (should_expand_dirname && stat (local_dirname, &sb) == 0) -#endif + if (should_expand_dirname && directory_exists (local_dirname)) should_expand_dirname = 0; if (should_expand_dirname) { new_dirname = savestring (local_dirname); - wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */ + wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB|W_COMPLETE); /* does the right thing */ if (wl) { *dirname = string_list (wl); @@ -4001,8 +4096,12 @@ bash_execute_unix_command (count, key) ce = rl_get_termcap ("ce"); if (ce) /* clear current line */ { +#if 0 fprintf (rl_outstream, "\r"); tputs (ce, 1, putx); +#else + rl_clear_visible_line (); +#endif fflush (rl_outstream); } else @@ -4040,12 +4139,19 @@ bash_execute_unix_command (count, key) } } - unbind_variable ("READLINE_LINE"); - unbind_variable ("READLINE_POINT"); + check_unbind_variable ("READLINE_LINE"); + check_unbind_variable ("READLINE_POINT"); array_needs_making = 1; /* and restore the readline buffer and display after command execution. */ - rl_forced_update_display (); + /* If we clear the last line of the prompt above, redraw only that last + line. If the command returns 124, we redraw unconditionally as in + previous versions. */ + if (ce && r != 124) + rl_redraw_prompt_last_line (); + else + rl_forced_update_display (); + return 0; } diff --git a/braces.c b/braces.c index 61c1ab1..7f31dd5 100644 --- a/braces.c +++ b/braces.c @@ -38,6 +38,12 @@ #if defined (SHELL) # include "shell.h" +#else +# if defined (TEST) +typedef char *WORD_DESC; +typedef char **WORD_LIST; +#define _(X) X +# endif /* TEST */ #endif /* SHELL */ #include "typemax.h" /* INTMAX_MIN, INTMAX_MAX */ @@ -287,7 +293,9 @@ expand_amble (text, tlen, flags) char *tem; int start, i, c; +#if defined (SHELL) DECLARE_MBSTATE; +#endif result = (char **)NULL; @@ -301,7 +309,7 @@ expand_amble (text, tlen, flags) #else tem = (char *)xmalloc (1 + (i - start)); strncpy (tem, &text[start], (i - start)); - tem[i- start] = '\0'; + tem[i - start] = '\0'; #endif partial = brace_expand (tem); @@ -319,6 +327,8 @@ expand_amble (text, tlen, flags) if (tresult == 0) { internal_error (_("brace expansion: cannot allocate memory for %s"), tem); + free (tem); + strvec_dispose (partial); strvec_dispose (result); result = (char **)NULL; return result; @@ -333,7 +343,11 @@ expand_amble (text, tlen, flags) free (partial); } free (tem); +#if defined (SHELL) ADVANCE_CHAR (text, tlen, i); +#else + i++; +#endif start = i; } return (result); @@ -420,7 +434,12 @@ mkseq (start, end, incr, type, width) do { #if defined (SHELL) - QUIT; /* XXX - memory leak here */ + if (ISINTERRUPT) + { + strvec_dispose (result); + result = (char **)NULL; + } + QUIT; #endif if (type == ST_INT) result[i++] = t = itos (n); @@ -618,7 +637,11 @@ brace_gobbler (text, tlen, indx, satisfy) if (pass_next) { pass_next = 0; +#if defined (SHELL) ADVANCE_CHAR (text, tlen, i); +#else + i++; +#endif continue; } @@ -652,7 +675,11 @@ brace_gobbler (text, tlen, indx, satisfy) if (quoted == '"' && c == '$' && text[i+1] == '(') /*)*/ goto comsub; #endif +#if defined (SHELL) ADVANCE_CHAR (text, tlen, i); +#else + i++; +#endif continue; } @@ -705,7 +732,11 @@ comsub: commas++; #endif +#if defined (SHELL) ADVANCE_CHAR (text, tlen, i); +#else + i++; +#endif } *indx = i; @@ -784,20 +815,29 @@ array_concat (arr1, arr2) #if defined (TEST) #include -fatal_error (format, arg1, arg2) - char *format, *arg1, *arg2; +void * +xmalloc(n) + size_t n; { - report_error (format, arg1, arg2); - exit (1); + return (malloc (n)); } -report_error (format, arg1, arg2) +void * +xrealloc(p, n) + void *p; + size_t n; +{ + return (realloc (p, n)); +} + +int +internal_error (format, arg1, arg2) char *format, *arg1, *arg2; { fprintf (stderr, format, arg1, arg2); fprintf (stderr, "\n"); } - + main () { char example[256]; @@ -821,7 +861,7 @@ main () for (i = 0; result[i]; i++) printf ("%s\n", result[i]); - free_array (result); + strvec_dispose (result); } } diff --git a/builtins.h b/builtins.h index cc0c79c..0cfea18 100644 --- a/builtins.h +++ b/builtins.h @@ -41,6 +41,7 @@ #define SPECIAL_BUILTIN 0x08 /* This is a Posix `special' builtin. */ #define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */ #define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */ +#define LOCALVAR_BUILTIN 0x40 /* This builtin creates local variables */ #define BASE_INDENT 4 diff --git a/builtins/Makefile.in b/builtins/Makefile.in index a2e7911..bbb96c3 100644 --- a/builtins/Makefile.in +++ b/builtins/Makefile.in @@ -1,6 +1,6 @@ # This Makefile for building libbuiltins.a is in -*- text -*- for Emacs. # -# Copyright (C) 1996-2009 Free Software Foundation, Inc. +# Copyright (C) 1996-2015 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 @@ -36,7 +36,7 @@ EXEEXT = @EXEEXT@ prefix = @prefix@ srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ topdir = @top_srcdir@ datarootdir = @datarootdir@ @@ -45,6 +45,8 @@ includedir = @includedir@ datadir = @datadir@ localedir = @localedir@ +loadablesdir = @loadablesdir@ + # Support an alternate destination root directory for package building DESTDIR = @@ -375,31 +377,31 @@ mkbuiltins.o: $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h # def files alias.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h alias.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h -alias.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +alias.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h alias.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/common.h alias.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h alias.o: ../pathnames.h bind.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h -bind.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +bind.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h bind.o: $(topdir)/subst.h $(topdir)/externs.h $(srcdir)/bashgetopt.h bind.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h $(topdir)/bashline.h bind.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h bind.o: ../pathnames.h break.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h break.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -break.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +break.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h break.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h break.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h break.o: ../pathnames.h builtin.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h builtin.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h -builtin.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h +builtin.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h $(topdir)/sig.h builtin.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h builtin.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h builtin.o: $(srcdir)/bashgetopt.h ../pathnames.h caller.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h caller.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(topdir)/dispose_cmd.h -caller.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h +caller.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h caller.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h caller.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h ./builtext.h caller.o: ${BASHINCDIR}/chartypes.h $(topdir)/bashtypes.h ../pathnames.h @@ -408,41 +410,43 @@ cd.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(topdir)/dispose cd.o: $(topdir)/make_cmd.h $(topdir)/subst.h $(topdir)/externs.h cd.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h cd.o: $(srcdir)/common.h $(BASHINCDIR)/maxpath.h ../pathnames.h +cd.o: $(topdir)/sig.h command.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h command.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h command.o: $(topdir)/quit.h $(srcdir)/bashgetopt.h $(BASHINCDIR)/maxpath.h +command.o: $(topdir)/sig.h command.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h command.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h command.o: ../pathnames.h declare.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h declare.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -declare.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +declare.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h declare.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h declare.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -declare.o: $(topdir)/arrayfunc.h $(srcdir)/bashgetopt.h +declare.o: $(topdir)/arrayfunc.h $(srcdir)/bashgetopt.h $(topdir)/flags.h declare.o: ./builtext.h ../pathnames.h echo.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h echo.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h -echo.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +echo.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h echo.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h echo.o: $(BASHINCDIR)/maxpath.h ../pathnames.h enable.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h enable.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h enable.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -enable.o: $(topdir)/subst.h $(topdir)/externs.h +enable.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h enable.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h enable.o: $(BASHINCDIR)/maxpath.h ../pathnames.h enable.o: $(topdir)/pcomplete.h eval.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h eval.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h eval.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -eval.o: $(topdir)/subst.h $(topdir)/externs.h +eval.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h eval.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h eval.o: $(BASHINCDIR)/maxpath.h ../pathnames.h exec.o: $(topdir)/bashtypes.h exec.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h exec.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -exec.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +exec.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h exec.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/flags.h exec.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h exec.o: $(srcdir)/common.h $(topdir)/execute_cmd.h $(BASHINCDIR)/maxpath.h @@ -450,7 +454,7 @@ exec.o: $(topdir)/findcmd.h $(topdir)/jobs.h ../pathnames.h exit.o: $(topdir)/bashtypes.h exit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h exit.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -exit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +exit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h exit.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/jobs.h exit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h exit.o: $(BASHINCDIR)/maxpath.h ./builtext.h ../pathnames.h @@ -459,7 +463,7 @@ fc.o: $(topdir)/builtins.h $(topdir)/command.h $(srcdir)/bashgetopt.h fc.o: $(topdir)/bashhist.h fc.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h fc.o: $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h -fc.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +fc.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h fc.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/shell.h $(topdir)/syntax.h fc.o: $(topdir)/flags.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h fc.o: $(topdir)/bashansi.h $(BASHINCDIR)/ansi_stdlib.h $(BASHINCDIR)/chartypes.h @@ -467,18 +471,18 @@ fc.o: ../pathnames.h fg_bg.o: $(topdir)/bashtypes.h $(srcdir)/bashgetopt.h fg_bg.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h fg_bg.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -fg_bg.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +fg_bg.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h fg_bg.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h fg_bg.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h fg_bg.o: $(topdir)/jobs.h ../pathnames.h getopts.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h getopts.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -getopts.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +getopts.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h getopts.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h getopts.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h getopts.o: ../pathnames.h hash.o: $(topdir)/builtins.h $(topdir)/command.h $(topdir)/quit.h -hash.o: $(topdir)/findcmd.h $(topdir)/hashlib.h +hash.o: $(topdir)/findcmd.h $(topdir)/hashlib.h $(topdir)/sig.h hash.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h hash.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h hash.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h @@ -488,12 +492,12 @@ help.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h help.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h help.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h help.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -help.o: ${srcdir}/common.h ../pathnames.h +help.o: ${srcdir}/common.h $(topdir)/sig.h ../pathnames.h history.o: $(topdir)/bashtypes.h history.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h history.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h history.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -history.o: $(topdir)/subst.h $(topdir)/externs.h +history.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h history.o: ${BASHINCDIR}/filecntl.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h history.o: $(topdir)/variables.h $(topdir)/conftypes.h $(topdir)/bashhist.h $(BASHINCDIR)/maxpath.h history.o: ../pathnames.h @@ -507,16 +511,16 @@ jobs.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/quit.h $(srcdir)/bashg jobs.o: $(BASHINCDIR)/maxpath.h $(topdir)/externs.h $(topdir)/jobs.h jobs.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h jobs.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -jobs.o: ../pathnames.h +jobs.o: $(topdir)/sig.h ../pathnames.h kill.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h kill.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h -kill.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +kill.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h kill.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/trap.h $(topdir)/unwind_prot.h kill.o: $(topdir)/variables.h $(topdir)/conftypes.h $(BASHINCDIR)/maxpath.h kill.o: $(topdir)/jobs.h ../pathnames.h let.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h let.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -let.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +let.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h let.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h let.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h let.o: ../pathnames.h @@ -527,11 +531,12 @@ printf.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h printf.o: ../pathnames.h $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h printf.o: $(topdir)/variables.h $(topdir)/conftypes.h $(BASHINCDIR)/stdc.h $(srcdir)/bashgetopt.h printf.o: $(topdir)/bashtypes.h ${srcdir}/common.h $(BASHINCDIR)/chartypes.h +printf.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h printf.o: ../pathnames.h pushd.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h pushd.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h pushd.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h -pushd.o: $(topdir)/subst.h $(topdir)/externs.h +pushd.o: $(topdir)/subst.h $(topdir)/externs.h $(topdir)/sig.h pushd.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h pushd.o: $(BASHINCDIR)/maxpath.h $(srcdir)/common.h ./builtext.h pushd.o: ../pathnames.h @@ -540,11 +545,12 @@ read.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h read.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h read.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h read.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -read.o: $(BASHINCDIR)/shtty.h +read.o: $(BASHINCDIR)/shtty.h $(topdir)/sig.h +read.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h read.o: $(topdir)/arrayfunc.h ../pathnames.h return.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h return.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -return.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +return.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h return.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h return.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h return.o: ../pathnames.h @@ -552,18 +558,18 @@ set.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h set.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h set.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h set.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -set.o: $(BASHINCDIR)/maxpath.h $(topdir)/error.h +set.o: $(BASHINCDIR)/maxpath.h $(topdir)/error.h $(topdir)/sig.h set.o: $(topdir)/arrayfunc.h ../pathnames.h setattr.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h setattr.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(BASHINCDIR)/maxpath.h setattr.o: $(topdir)/quit.h $(srcdir)/common.h $(srcdir)/bashgetopt.h setattr.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h -setattr.o: $(topdir)/externs.h +setattr.o: $(topdir)/externs.h $(topdir)/flags.h $(topdir)/sig.h setattr.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h setattr.o: $(topdir)/arrayfunc.h ../pathnames.h shift.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h shift.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -shift.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +shift.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h shift.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h shift.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h shift.o: ../pathnames.h @@ -573,53 +579,53 @@ shopt.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h shopt.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h shopt.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h shopt.o: $(srcdir)/common.h $(srcdir)/bashgetopt.h ../pathnames.h -shopt.o: $(topdir)/bashhist.h $(topdir)/bashline.h +shopt.o: $(topdir)/bashhist.h $(topdir)/bashline.h $(topdir)/sig.h source.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h source.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/findcmd.h -source.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +source.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h source.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h source.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h source.o: $(srcdir)/bashgetopt.h $(topdir)/flags.h $(topdir)/trap.h source.o: ../pathnames.h suspend.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h suspend.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -suspend.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +suspend.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h suspend.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h suspend.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h suspend.o: $(topdir)/jobs.h ../pathnames.h test.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h test.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -test.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +test.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h test.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h test.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h test.o: $(topdir)/test.h ../pathnames.h times.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h times.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -times.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +times.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h times.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h times.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h times.o: $(BASHINCDIR)/posixtime.h ../pathnames.h trap.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h trap.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/externs.h -trap.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h +trap.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h $(topdir)/sig.h trap.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h trap.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h trap.o: $(topdir)/findcmd.h ../pathnames.h type.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h type.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -type.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h +type.o: $(topdir)/quit.h $(srcdir)/common.h $(BASHINCDIR)/maxpath.h $(topdir)/sig.h type.o: $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/subst.h type.o: $(topdir)/externs.h $(topdir)/hashcmd.h ../pathnames.h type.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ulimit.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h ulimit.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -ulimit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +ulimit.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h ulimit.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h ulimit.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h ulimit.o: ../pathnames.h umask.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h umask.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -umask.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +umask.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h umask.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h umask.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h umask.o: $(BASHINCDIR)/chartypes.h ../pathnames.h @@ -628,19 +634,21 @@ wait.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h wait.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h wait.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h wait.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h -wait.o: $(topdir)/jobs.h +wait.o: $(topdir)/jobs.h $(topdir)/sig.h wait.o: $(BASHINCDIR)/chartypes.h ../pathnames.h complete.o: ../config.h ../pathnames.h complete.o: ${topdir}/shell.h $(topdir)/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h ${topdir}/sig.h complete.o: ${topdir}/unwind_prot.h ${topdir}/variables.h +complete.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h complete.o: ${topdir}/bashtypes.h ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h -complete.o: ${topdir}/builtins.h +complete.o: ${topdir}/builtins.h ${topdir}/general.h +complete.o: ${topdir}/bashtypes.h ${BASHINCDIR}/chartypes.h ${topdir}/xmalloc.h complete.o: ${topdir}/pcomplete.h complete.o: ${srcdir}/common.h ${srcdir}/bashgetopt.h mapfile.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h mapfile.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h -mapfile.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h +mapfile.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h mapfile.o: $(topdir)/subst.h $(topdir)/externs.h $(BASHINCDIR)/maxpath.h mapfile.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/variables.h $(topdir)/conftypes.h mapfile.o: $(topdir)/arrayfunc.h ../pathnames.h diff --git a/builtins/alias.def b/builtins/alias.def index d760ceb..5080024 100644 --- a/builtins/alias.def +++ b/builtins/alias.def @@ -1,7 +1,7 @@ This file is alias.def, from which is created alias.c It implements the builtins "alias" and "unalias" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -33,7 +33,7 @@ A trailing space in VALUE causes the next word to be checked for alias substitution when the alias is expanded. Options: - -p Print all defined aliases in a reusable format + -p print all defined aliases in a reusable format Exit Status: alias returns true unless a NAME is supplied for which no alias has been @@ -87,6 +87,7 @@ alias_builtin (list) pflag = 1; dflags |= AL_REUSABLE; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -160,7 +161,7 @@ $SHORT_DOC unalias [-a] name [name ...] Remove each NAME from the list of defined aliases. Options: - -a remove all alias definitions. + -a remove all alias definitions Return success unless a NAME is not an existing alias. $END @@ -183,6 +184,7 @@ unalias_builtin (list) case 'a': aflag = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -232,7 +234,7 @@ print_alias (alias, flags) value = sh_single_quote (alias->value); if (flags & AL_REUSABLE) - printf ("alias "); + printf ("alias %s", (alias->name && alias->name[0] == '-') ? "-- " : ""); printf ("%s=%s\n", alias->name, value); free (value); diff --git a/builtins/bashgetopt.c b/builtins/bashgetopt.c index b1b7070..405ced4 100644 --- a/builtins/bashgetopt.c +++ b/builtins/bashgetopt.c @@ -31,6 +31,8 @@ #include "../shell.h" #include "common.h" +#include "bashgetopt.h" + #define ISOPT(s) (((*(s) == '-') || (plus && *(s) == '+')) && (s)[1]) #define NOTOPT(s) (((*(s) != '-') && (!plus || *(s) != '+')) || (s)[1] == '\0') @@ -76,6 +78,10 @@ char *opts; lhead = (WORD_LIST *)NULL; loptend = lcurrent; return(-1); + } else if (ISHELP (lcurrent->word->word)) { + lhead = (WORD_LIST *)NULL; + loptend = lcurrent; + return (GETOPT_HELP); } else if (lcurrent->word->word[0] == '-' && lcurrent->word->word[1] == '-' && lcurrent->word->word[2] == 0) { diff --git a/builtins/bashgetopt.h b/builtins/bashgetopt.h index f2aea26..6637b42 100644 --- a/builtins/bashgetopt.h +++ b/builtins/bashgetopt.h @@ -25,6 +25,9 @@ #include +#define GETOPT_EOF -1 +#define GETOPT_HELP -99 + extern char *list_optarg; extern int list_optopt; diff --git a/builtins/bind.def b/builtins/bind.def index 3a7cc4e..649d73f 100644 --- a/builtins/bind.def +++ b/builtins/bind.def @@ -1,7 +1,7 @@ This file is bind.def, from which is created bind.c. It implements the builtin "bind" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -54,7 +54,7 @@ Options: -f filename Read key bindings from FILENAME. -x keyseq:shell-command Cause SHELL-COMMAND to be executed when KEYSEQ is entered. - -X List key sequences bound with -x and associated commands + -X List key sequences bound with -x and associated commands in a form that can be reused as input. Exit Status: @@ -115,7 +115,7 @@ bind_builtin (list) int return_code; Keymap kmap, saved_keymap; int flags, opt; - char *initfile, *map_name, *fun_name, *unbind_name, *remove_seq, *cmd_seq; + char *initfile, *map_name, *fun_name, *unbind_name, *remove_seq, *cmd_seq, *t; if (no_line_editing) { @@ -129,7 +129,7 @@ bind_builtin (list) kmap = saved_keymap = (Keymap) NULL; flags = 0; - initfile = map_name = fun_name = unbind_name = remove_seq = (char *)NULL; + initfile = map_name = fun_name = unbind_name = remove_seq = cmd_seq = (char *)NULL; return_code = EXECUTION_SUCCESS; if (bash_readline_initialized == 0) @@ -141,7 +141,7 @@ bind_builtin (list) rl_outstream = stdout; reset_internal_getopt (); - while ((opt = internal_getopt (list, "lvpVPsSXf:q:u:m:r:x:")) != EOF) + while ((opt = internal_getopt (list, "lvpVPsSXf:q:u:m:r:x:")) != -1) { switch (opt) { @@ -193,6 +193,7 @@ bind_builtin (list) case 'X': flags |= XXFLAG; break; + CASE_HELPOPT; default: builtin_usage (); BIND_RETURN (EX_USAGE); @@ -248,7 +249,10 @@ bind_builtin (list) { if (rl_read_init_file (initfile) != 0) { - builtin_error (_("%s: cannot read: %s"), initfile, strerror (errno)); + t = printable_filename (initfile, 0); + builtin_error (_("%s: cannot read: %s"), t, strerror (errno)); + if (t != initfile) + free (t); BIND_RETURN (EXECUTION_FAILURE); } } diff --git a/builtins/break.def b/builtins/break.def index 232ac1a..bdc1182 100644 --- a/builtins/break.def +++ b/builtins/break.def @@ -67,6 +67,8 @@ break_builtin (list) { intmax_t newbreak; + CHECK_HELPOPT (list); + if (check_loop_level () == 0) return (EXECUTION_SUCCESS); @@ -107,6 +109,8 @@ continue_builtin (list) { intmax_t newcont; + CHECK_HELPOPT (list); + if (check_loop_level () == 0) return (EXECUTION_SUCCESS); diff --git a/builtins/caller.def b/builtins/caller.def index 965676b..bf5eb96 100644 --- a/builtins/caller.def +++ b/builtins/caller.def @@ -81,6 +81,8 @@ caller_builtin (list) char *funcname_s, *source_s, *lineno_s; intmax_t num; + CHECK_HELPOPT (list); + GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a); GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a); GET_ARRAY_FROM_VAR ("BASH_LINENO", bash_lineno_v, bash_lineno_a); diff --git a/builtins/cd.def b/builtins/cd.def index f66e68c..421e819 100644 --- a/builtins/cd.def +++ b/builtins/cd.def @@ -1,7 +1,7 @@ This file is cd.def, from which is created cd.c. It implements the builtins "cd" and "pwd" in Bash. -Copyright (C) 1987-2013 Free Software Foundation, Inc. +Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -93,16 +93,17 @@ the word is assumed to be a variable name. If that variable has a value, its value is used for DIR. Options: - -L force symbolic links to be followed: resolve symbolic links in - DIR after processing instances of `..' - -P use the physical directory structure without following symbolic - links: resolve symbolic links in DIR before processing instances - of `..' - -e if the -P option is supplied, and the current working directory - cannot be determined successfully, exit with a non-zero status + -L force symbolic links to be followed: resolve symbolic + links in DIR after processing instances of `..' + -P use the physical directory structure without following + symbolic links: resolve symbolic links in DIR before + processing instances of `..' + -e if the -P option is supplied, and the current working + directory cannot be determined successfully, exit with + a non-zero status #if defined (O_XATTR) - -@ on systems that support it, present a file with extended attributes - as a directory containing the file attributes + -@ on systems that support it, present a file with extended + attributes as a directory containing the file attributes #endif The default is to follow symbolic links, as if `-L' were specified. @@ -261,7 +262,7 @@ cd_builtin (list) WORD_LIST *list; { char *dirname, *cdpath, *path, *temp; - int path_index, no_symlinks, opt, lflag; + int path_index, no_symlinks, opt, lflag, e; #if defined (RESTRICTED_SHELL) if (restricted) @@ -297,6 +298,7 @@ cd_builtin (list) xattrflag = 1; break; #endif + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -327,6 +329,13 @@ cd_builtin (list) builtin_error (_("too many arguments")); return (EXECUTION_FAILURE); } +#endif +#if 0 + else if (list->word->word[0] == '\0') + { + builtin_error (_("null directory")); + return (EXECUTION_FAILURE); + } #endif else if (list->word->word[0] == '-' && list->word->word[1] == '\0') { @@ -436,7 +445,11 @@ cd_builtin (list) FREE (temp); } - builtin_error ("%s: %s", dirname, strerror (errno)); + e = errno; + temp = printable_filename (dirname, 0); + builtin_error ("%s: %s", temp, strerror (e)); + if (temp != dirname) + free (temp); return (EXECUTION_FAILURE); } @@ -447,7 +460,7 @@ Print the name of the current working directory. Options: -L print the value of $PWD if it names the current working - directory + directory -P print the physical directory, without any symbolic links By default, `pwd' behaves as if `-L' were specified. @@ -482,6 +495,7 @@ pwd_builtin (list) case 'L': verbatim_pwd = 0; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/builtins/command.def b/builtins/command.def index 1845279..dcb510d 100644 --- a/builtins/command.def +++ b/builtins/command.def @@ -1,7 +1,7 @@ This file is command.def, from which is created command.c. It implements the builtin "command" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -30,10 +30,10 @@ information about the specified COMMANDs. Can be used to invoke commands on disk when a function with the same name exists. Options: - -p use a default value for PATH that is guaranteed to find all of - the standard utilities - -v print a description of COMMAND similar to the `type' builtin - -V print a more verbose description of each COMMAND + -p use a default value for PATH that is guaranteed to find all of + the standard utilities + -v print a description of COMMAND similar to the `type' builtin + -V print a more verbose description of each COMMAND Exit Status: Returns exit status of COMMAND, or failure if COMMAND is not found. @@ -63,7 +63,6 @@ extern size_t confstr __P((int, char *, size_t)); extern int subshell_environment; static void restore_path __P((char *)); -static char *get_standard_path __P((void)); /* Run the commands mentioned in LIST without paying attention to shell functions. */ @@ -82,7 +81,7 @@ command_builtin (list) switch (opt) { case 'p': - use_standard_path = 1; + use_standard_path = CDESC_STDPATH; break; case 'V': verbose = CDESC_SHORTDESC|CDESC_ABSPATH; /* look in common.h for constants */ @@ -90,6 +89,7 @@ command_builtin (list) case 'v': verbose = CDESC_REUSABLE; /* ditto */ break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -108,30 +108,13 @@ command_builtin (list) } #endif - begin_unwind_frame ("command_builtin"); - - if (use_standard_path) - { - old_path = get_string_value ("PATH"); - /* If old_path is NULL, $PATH is unset. If so, we want to make sure - it's unset after this command completes. */ - if (old_path) - old_path = savestring (old_path); - add_unwind_protect ((Function *)restore_path, old_path); - - standard_path = get_standard_path (); - bind_variable ("PATH", standard_path ? standard_path : "", 0); - stupidly_hack_special_variables ("PATH"); - FREE (standard_path); - } - if (verbose) { int found, any_found; for (any_found = 0; list; list = list->next) { - found = describe_command (list->word->word, verbose); + found = describe_command (list->word->word, verbose|use_standard_path); if (found == 0 && verbose != CDESC_REUSABLE) sh_notfound (list->word->word); @@ -139,11 +122,12 @@ command_builtin (list) any_found += found; } - run_unwind_frame ("command_builtin"); return (any_found ? EXECUTION_SUCCESS : EXECUTION_FAILURE); } -#define COMMAND_BUILTIN_FLAGS (CMD_NO_FUNCTIONS | CMD_INHIBIT_EXPANSION | CMD_COMMAND_BUILTIN) + begin_unwind_frame ("command_builtin"); + +#define COMMAND_BUILTIN_FLAGS (CMD_NO_FUNCTIONS | CMD_INHIBIT_EXPANSION | CMD_COMMAND_BUILTIN | (use_standard_path ? CMD_STDPATH : 0)) /* We don't want this to be reparsed (consider command echo 'foo &'), so just make a simple_command structure and call execute_command with it. */ @@ -152,18 +136,7 @@ command_builtin (list) command->value.Simple->redirects = (REDIRECT *)NULL; command->flags |= COMMAND_BUILTIN_FLAGS; command->value.Simple->flags |= COMMAND_BUILTIN_FLAGS; -#if 0 - /* This breaks for things like ( cd /tmp ; command z ababa ; echo next ) - or $(command echo a ; command echo b;) or even - { command echo a; command echo b; } & */ - /* If we're in a subshell, see if we can get away without forking - again, since we've already forked to run this builtin. */ - if (subshell_environment) - { - command->flags |= CMD_NO_FORK; - command->value.Simple->flags |= CMD_NO_FORK; - } -#endif + add_unwind_protect ((char *)dispose_command, command); result = execute_command (command); @@ -188,32 +161,3 @@ restore_path (var) stupidly_hack_special_variables ("PATH"); } - -/* Return a value for PATH that is guaranteed to find all of the standard - utilities. This uses Posix.2 configuration variables, if present. It - uses a value defined in config.h as a last resort. */ -static char * -get_standard_path () -{ -#if defined (_CS_PATH) && defined (HAVE_CONFSTR) - char *p; - size_t len; - - len = (size_t)confstr (_CS_PATH, (char *)NULL, (size_t)0); - if (len > 0) - { - p = (char *)xmalloc (len + 2); - *p = '\0'; - confstr (_CS_PATH, p, len); - return (p); - } - else - return (savestring (STANDARD_UTILS_PATH)); -#else /* !_CS_PATH || !HAVE_CONFSTR */ -# if defined (CS_PATH) - return (savestring (CS_PATH)); -# else - return (savestring (STANDARD_UTILS_PATH)); -# endif /* !CS_PATH */ -#endif /* !_CS_PATH || !HAVE_CONFSTR */ -} diff --git a/builtins/common.c b/builtins/common.c index fb2b38c..b100ebe 100644 --- a/builtins/common.c +++ b/builtins/common.c @@ -1,6 +1,6 @@ /* common.c - utility functions for all builtins */ -/* Copyright (C) 1987-2010 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -70,6 +70,7 @@ extern int errno; extern int indirection_level, subshell_environment; extern int line_number; extern int last_command_exit_value; +extern int trap_saved_exit_value; extern int running_trap; extern int posixly_correct; extern char *this_command_name, *shell_name; @@ -175,9 +176,16 @@ int no_options (list) WORD_LIST *list; { + int opt; + reset_internal_getopt (); - if (internal_getopt (list, "") != -1) + if ((opt = internal_getopt (list, "")) != -1) { + if (opt == GETOPT_HELP) + { + builtin_help (); + return (2); + } builtin_usage (); return (1); } @@ -234,7 +242,7 @@ sh_invalidnum (s) { char *msg; - if (*s == '0' && isdigit (s[1])) + if (*s == '0' && isdigit ((unsigned char)s[1])) msg = _("invalid octal number"); else if (*s == '0' && s[1] == 'x') msg = _("invalid hex number"); @@ -335,7 +343,9 @@ int sh_chkwrite (s) int s; { + QUIT; fflush (stdout); + QUIT; if (ferror (stdout)) { sh_wrerror (); @@ -403,6 +413,8 @@ remember_args (list, destructive) if (destructive) set_dollar_vars_changed (); + + invalidate_cached_quoted_dollar_at (); } static int changed_dollar_vars; @@ -494,7 +506,17 @@ get_exitstat (list) list = list->next; if (list == 0) - return (last_command_exit_value); + { + /* If we're not running the DEBUG trap, the return builtin, when not + given any arguments, uses the value of $? before the trap ran. If + given an argument, return uses it. This means that the trap can't + change $?. The DEBUG trap gets to change $?, though, since that is + part of its reason for existing, and because the extended debug mode + does things with the return value. */ + if (this_shell_builtin == return_builtin && running_trap > 0 && running_trap != DEBUG_TRAP+1) + return (trap_saved_exit_value); + return (last_command_exit_value); + } arg = list->word->word; if (arg == 0 || legal_number (arg, &sval) == 0) @@ -888,3 +910,11 @@ initialize_shell_builtins () qsort (shell_builtins, num_shell_builtins, sizeof (struct builtin), (QSFUNC *)shell_builtin_compare); } + +#if !defined (HELP_BUILTIN) +void +builtin_help () +{ + printf ("%s: %s\n", this_command_name, _("help not available in this version")); +} +#endif diff --git a/builtins/common.h b/builtins/common.h index a1298cb..ed85230 100644 --- a/builtins/common.h +++ b/builtins/common.h @@ -1,6 +1,6 @@ /* common.h -- extern declarations for functions defined in common.c. */ -/* Copyright (C) 1993-2010 Free Software Foundation, Inc. +/* Copyright (C) 1993-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -24,6 +24,21 @@ #include "stdc.h" #define ISOPTION(s, c) (s[0] == '-' && !s[2] && s[1] == c) +#define ISHELP(s) (STREQ ((s), "--help")) + +#define CHECK_HELPOPT(l) \ +do { \ + if ((l) && (l)->word && ISHELP((l)->word->word)) \ + { \ + builtin_help (); \ + return (EX_USAGE); \ + } \ +} while (0) + +#define CASE_HELPOPT \ + case GETOPT_HELP: \ + builtin_help (); \ + return (EX_USAGE) /* Flag values for parse_and_execute () */ #define SEVAL_NONINT 0x001 @@ -35,6 +50,7 @@ #define SEVAL_NOLONGJMP 0x040 #define SEVAL_FUNCDEF 0x080 /* only allow function definitions */ #define SEVAL_ONECMD 0x100 /* only allow a single command */ +#define SEVAL_NOHISTEXP 0x200 /* inhibit history expansion */ /* Flags for describe_command, shared between type.def and command.def */ #define CDESC_ALL 0x001 /* type -a */ @@ -45,6 +61,7 @@ #define CDESC_FORCE_PATH 0x020 /* type -ap or type -P */ #define CDESC_NOFUNCS 0x040 /* type -f */ #define CDESC_ABSPATH 0x080 /* convert to absolute path, no ./ */ +#define CDESC_STDPATH 0x100 /* command -p */ /* Flags for get_job_by_name */ #define JM_PREFIX 0x01 /* prefix of job name */ @@ -59,6 +76,9 @@ #define ARGS_FUNC 0x02 #define ARGS_SETBLTIN 0x04 +/* Maximum number of attribute letters */ +#define MAX_ATTRIBUTES 16 + /* Functions from common.c */ extern void builtin_error __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); extern void builtin_warning __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); @@ -122,6 +142,9 @@ extern void bash_logout __P((void)); /* Functions from getopts.def */ extern void getopts_reset __P((int)); +/* Functions from help.def */ +extern void builtin_help __P((void)); + /* Functions from read.def */ extern void read_tty_cleanup __P((void)); extern int read_tty_modified __P((void)); @@ -138,6 +161,9 @@ extern void initialize_shell_options __P((int)); extern void reset_shell_options __P((void)); +extern char *get_current_options __P((void)); +extern void set_current_options __P((const char *)); + /* Functions from shopt.def */ extern void reset_shopt_options __P((void)); extern char **get_shopt_options __P((void)); @@ -163,6 +189,7 @@ extern int show_var_attributes __P((SHELL_VAR *, int, int)); extern int show_name_attributes __P((char *, int)); extern int show_func_attributes __P((char *, int)); extern void set_var_attribute __P((char *, int, int)); +extern int var_attribute_string __P((SHELL_VAR *, int, char *)); /* Functions from pushd.def */ extern char *get_dirstack_from_string __P((char *)); @@ -175,9 +202,12 @@ extern int parse_and_execute __P((char *, const char *, int)); extern int evalstring __P((char *, const char *, int)); extern void parse_and_execute_cleanup __P((void)); extern int parse_string __P((char *, const char *, int, char **)); +extern int should_suppress_fork __P((COMMAND *)); +extern void optimize_fork __P((COMMAND *)); /* Functions from evalfile.c */ extern int maybe_execute_file __P((const char *, int)); +extern int force_execute_file __P((const char *, int)); extern int source_file __P((const char *, int)); extern int fc_execute_file __P((const char *)); diff --git a/builtins/complete.def b/builtins/complete.def index 8499b7a..6bdf88b 100644 --- a/builtins/complete.def +++ b/builtins/complete.def @@ -1,7 +1,7 @@ This file is complete.def, from which is created complete.c. It implements the builtins "complete", "compgen", and "compopt" in Bash. -Copyright (C) 1999-2011 Free Software Foundation, Inc. +Copyright (C) 1999-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -33,11 +33,11 @@ allows them to be reused as input. Options: -p print existing completion specifications in a reusable format -r remove a completion specification for each NAME, or, if no - NAMEs are supplied, all completion specifications + NAMEs are supplied, all completion specifications -D apply the completions and actions as the default for commands - without any specific completion defined + without any specific completion defined -E apply the completions and actions to "empty" commands -- - completion attempted on a blank line + completion attempted on a blank line When completion is attempted, the actions are applied in the order the uppercase-letter options are listed above. The -D option takes @@ -138,6 +138,7 @@ static const struct _compopt { { "dirnames", COPT_DIRNAMES }, { "filenames",COPT_FILENAMES}, { "noquote", COPT_NOQUOTE }, + { "nosort", COPT_NOSORT }, { "nospace", COPT_NOSPACE }, { "plusdirs", COPT_PLUSDIRS }, { (char *)NULL, 0 }, @@ -170,7 +171,7 @@ find_compopt (name) /* Build the actions and compspec options from the options specified in LIST. ACTP is a pointer to an unsigned long in which to place the bitmap of actions. OPTP is a pointer to an unsigned long in which to place the - btmap of compspec options (arguments to `-o'). PP, if non-null, gets 1 + bitmap of compspec options (arguments to `-o'). PP, if non-null, gets 1 if -p is supplied; RP, if non-null, gets 1 if -r is supplied. If either is null, the corresponding option generates an error. This also sets variables corresponding to options that take arguments as @@ -324,6 +325,7 @@ build_actions (list, flagp, actp, optp) case 'X': Xarg = list_optarg; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -653,7 +655,7 @@ print_cmd_completions (list) $BUILTIN compgen $DEPENDS_ON PROGRAMMABLE_COMPLETION $FUNCTION compgen_builtin -$SHORT_DOC compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word] +$SHORT_DOC compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word] Display possible completions depending on the options. Intended to be used from within a shell function generating possible @@ -790,7 +792,7 @@ compopt_builtin (list) ret = EXECUTION_SUCCESS; reset_internal_getopt (); - while ((opt = internal_getopt (list, "+o:DE")) != EOF) + while ((opt = internal_getopt (list, "+o:DE")) != -1) { opts = (list_opttype == '-') ? &opts_on : &opts_off; @@ -811,6 +813,7 @@ compopt_builtin (list) case 'E': Eflag = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -867,5 +870,8 @@ compopt_builtin (list) pcomp_set_compspec_options (cs, opts_off, 0); } + if (wl) + dispose_words (wl); + return (ret); } diff --git a/builtins/declare.def b/builtins/declare.def index a634e7c..f4819b4 100644 --- a/builtins/declare.def +++ b/builtins/declare.def @@ -1,7 +1,7 @@ This file is declare.def, from which is created declare.c. It implements the builtins "declare" and "local" in Bash. -Copyright (C) 1987-2012 Free Software Foundation, Inc. +Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -31,9 +31,9 @@ display the attributes and values of all variables. Options: -f restrict action or display to function names and definitions -F restrict display to function names only (plus line number and - source file when debugging) + source file when debugging) -g create global variables when used in a shell function; otherwise - ignored + ignored -p display the attributes and value of each NAME Options which set attributes: @@ -62,10 +62,10 @@ $END $BUILTIN typeset $FUNCTION declare_builtin -$SHORT_DOC typeset [-aAfFgilrtux] [-p] name[=value] ... +$SHORT_DOC typeset [-aAfFgilnrtux] [-p] name[=value] ... Set variable values and attributes. -Obsolete. See `help declare'. +A synonym for `declare'. See `help declare'. $END #include @@ -83,6 +83,7 @@ $END #include "../bashintl.h" #include "../shell.h" +#include "../flags.h" #include "common.h" #include "builtext.h" #include "bashgetopt.h" @@ -149,10 +150,12 @@ declare_internal (list, local_var) flags_on = flags_off = any_failed = assign_error = pflag = nodefs = mkglobal = 0; refvar = (SHELL_VAR *)NULL; reset_internal_getopt (); - while ((opt = internal_getopt (list, DECLARE_OPTS)) != EOF) + while ((opt = internal_getopt (list, DECLARE_OPTS)) != -1) { flags = list_opttype == '+' ? &flags_off : &flags_on; + /* If you add options here, see whether or not they need to be added to + the loop in subst.c:shell_expand_word_list() */ switch (opt) { case 'a': @@ -221,6 +224,7 @@ declare_internal (list, local_var) flags_off |= att_capcase|att_lowercase; break; #endif /* CASEMOD_ATTRS */ + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -282,15 +286,28 @@ declare_internal (list, local_var) /* There are arguments left, so we are making variables. */ while (list) /* declare [-aAfFirx] name [name ...] */ { - char *value, *name; - int offset, aflags; + char *value, *name, *oldname; + int offset, aflags, wflags, created_var, namelen; #if defined (ARRAY_VARS) int making_array_special, compound_array_assign, simple_array_assign; + int var_exists, array_exists, creating_array, array_subscript_assignment; #endif name = savestring (list->word->word); + wflags = list->word->flags; offset = assignment (name, 0); aflags = 0; + created_var = 0; + + if (local_var && variable_context && STREQ (name, "-")) + { + var = make_local_variable ("-"); + FREE (value_cell (var)); /* just in case */ + value = get_current_options (); + var_setvalue (var, value); + VSETATTR (var, att_invisible); + NEXT_VARIABLE (); + } if (offset) /* declare [-aAfFirx] name=value */ { @@ -309,8 +326,8 @@ declare_internal (list, local_var) that is specific to nameref variables. */ if (flags_on & att_nameref) { -#if defined (ARRAY_VARIABLES) - if (valid_array_reference (name)) +#if defined (ARRAY_VARS) + if (valid_array_reference (name, 0)) { builtin_error (_("%s: reference variable cannot be an array"), name); assign_error++; @@ -318,22 +335,39 @@ declare_internal (list, local_var) } else #endif - /* disallow self references at global scope */ - if (STREQ (name, value) && variable_context == 0) + /* disallow self references at global scope, warn at function scope */ + if (check_selfref (name, value, 0)) { - builtin_error (_("%s: nameref variable self references not allowed"), name); + if (variable_context == 0) + { + builtin_error (_("%s: nameref variable self references not allowed"), name); + assign_error++; + NEXT_VARIABLE (); + } + else + builtin_warning (_("%s: circular name reference"), name); + } +#if 1 + if (value && *value && (aflags & ASS_APPEND) == 0 && valid_nameref_value (value, 1) == 0) + { + builtin_error (_("`%s': invalid variable name for name reference"), value); assign_error++; NEXT_VARIABLE (); } +#endif } +restart_new_var_name: #if defined (ARRAY_VARS) + var_exists = array_exists = creating_array = 0; compound_array_assign = simple_array_assign = 0; + array_subscript_assignment = 0; subscript_start = (char *)NULL; if (t = strchr (name, '[')) /* ] */ { - /* If offset != 0 we have already validated any array reference */ - if (offset == 0 && valid_array_reference (name) == 0) + /* If offset != 0 we have already validated any array reference + because assignment() calls skipsubscript() */ + if (offset == 0 && valid_array_reference (name, 0) == 0) { sh_invalidid (name); assign_error++; @@ -341,7 +375,8 @@ declare_internal (list, local_var) } subscript_start = t; *t = '\0'; - making_array_special = 1; + making_array_special = 1; /* XXX - should this check offset? */ + array_subscript_assignment = offset != 0; } else making_array_special = 0; @@ -368,6 +403,7 @@ declare_internal (list, local_var) refvar = (SHELL_VAR *)NULL; if (variable_context && mkglobal == 0 && ((flags_on & att_function) == 0)) { + /* check name for validity here? */ #if defined (ARRAY_VARS) if (flags_on & att_assoc) var = make_local_assoc_variable (name); @@ -375,12 +411,41 @@ declare_internal (list, local_var) var = make_local_array_variable (name, making_array_special); else #endif + if (offset == 0 && (flags_on & att_nameref)) + { + /* First look for refvar at current scope */ + refvar = find_variable_last_nameref (name, 1); + var = find_variable (name); + /* VARIABLE_CONTEXT != 0, so we are attempting to create or modify + the attributes for a local variable at the same scope. If we've + used a reference from a previous context to resolve VAR, we + want to throw REFVAR and VAR away and create a new local var. */ + if (refvar && refvar->context != variable_context) + { + refvar = 0; + var = make_local_variable (name); + } + else if (refvar && refvar->context == variable_context) + var = refvar; + /* Maybe we just want to create a new local variable */ + else if (var == 0 || var->context != variable_context) + var = make_local_variable (name); + /* otherwise we have a var at the right context */ + } + else + /* XXX - check name for validity here with valid_nameref_value */ var = make_local_variable (name); /* sets att_invisible for new vars */ if (var == 0) { any_failed++; NEXT_VARIABLE (); } + if (var && nameref_p (var) && readonly_p (var) && nameref_cell (var) && (flags_off & att_nameref)) + { + sh_readonly (name); + any_failed++; + NEXT_VARIABLE (); + } } else var = (SHELL_VAR *)NULL; @@ -444,18 +509,33 @@ declare_internal (list, local_var) NEXT_VARIABLE (); } } - else /* declare -[aAirx] name [name...] */ + else /* declare -[aAinrx] name [name...] */ { /* Non-null if we just created or fetched a local variable. */ +#if 0 + /* This is bash-4.3 code. */ /* Here's what ksh93 seems to do. If we are modifying an existing nameref variable, we don't follow the nameref chain past the last nameref, and we set the nameref variable's value so future references to that variable will return the value of the variable we're assigning right now. */ +#else + /* Here's what ksh93 seems to do as of the 2012 version: if we are + using declare -n to modify the value of an existing nameref + variable, don't follow the nameref chain at all and just search + for a nameref at the current context. If we have a nameref, + modify its value (changing which variable it references). */ +#endif if (var == 0 && (flags_on & att_nameref)) { +#if 0 /* See if we are trying to modify an existing nameref variable */ - var = mkglobal ? find_global_variable_last_nameref (name) : find_variable_last_nameref (name); + var = mkglobal ? find_global_variable_last_nameref (name, 1) : find_variable_last_nameref (name, 1); +#else + /* See if we are trying to modify an existing nameref variable, + but don't follow the nameref chain. */ + var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name); +#endif if (var && nameref_p (var) == 0) var = 0; } @@ -467,41 +547,137 @@ declare_internal (list, local_var) else if (var == 0 && (flags_off & att_nameref)) { /* See if we are trying to modify an existing nameref variable */ - refvar = mkglobal ? find_global_variable_last_nameref (name) : find_variable_last_nameref (name); + refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0); + if (refvar && nameref_p (refvar) == 0) + refvar = 0; + /* If the nameref is readonly but doesn't have a value, ksh93 + allows the nameref attribute to be removed. If it's readonly + and has a value, even if the value doesn't reference an + existing variable, we disallow the modification */ + if (refvar && nameref_cell (refvar) && readonly_p (refvar)) + { + sh_readonly (name); + any_failed++; + NEXT_VARIABLE (); + } + if (refvar) + var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); + } +#if defined (ARRAY_VARS) + /* If we have an array assignment to a nameref, remove the nameref + attribute and go on. */ + else if (var == 0 && offset && array_subscript_assignment) + { + var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name); + if (var && nameref_p (var)) + { + internal_warning (_("%s: removing nameref attribute"), name); + FREE (value_cell (var)); /* XXX - bash-4.3 compat */ + var_setvalue (var, (char *)NULL); + VUNSETATTR (var, att_nameref); + } + } +#endif + + /* See if we are trying to set flags or value for an existing nameref + that points to a non-existent variable: e.g., + declare -n foo=bar + unset foo # unsets bar + declare -i foo + foo=4+4 + declare -p foo */ + if (var == 0 && (flags_on || flags_off || offset)) + { + refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0); if (refvar && nameref_p (refvar) == 0) refvar = 0; if (refvar) var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar)); + if (refvar && var == 0) + { + oldname = name; /* need to free this */ + + namelen = strlen (nameref_cell (refvar)); +#if defined (ARRAY_VARS) + if (subscript_start) + { + *subscript_start = '['; /*]*/ + namelen += strlen (subscript_start); + } +#endif + name = xmalloc (namelen + 2 + strlen (value) + 1); + strcpy (name, nameref_cell (refvar)); +#if defined (ARRAY_VARS) + if (subscript_start) + strcpy (name + strlen (nameref_cell (refvar)), subscript_start); +#endif + /* We are committed to using the new name, so reset */ + if (offset) + { + /* Rebuild assignment and restore offset and value */ + if (aflags & ASS_APPEND) + name[namelen++] = '+'; + name[namelen++] = '='; + if (value && *value) + strcpy (name + namelen, value); + else + name[namelen] = '\0'; + offset = assignment (name, 0); + /* if offset was valid previously, but the substituting + of the nameref value results in an invalid assignment, + throw an invalid identifier error */ + if (offset == 0) + { + free (oldname); + sh_invalidid (name); + assign_error++; + NEXT_VARIABLE (); + } + name[offset] = '\0'; + value = name + namelen; + } + free (oldname); + goto restart_new_var_name; + /* NOTREACHED */ + } } - if (var == 0) var = mkglobal ? find_global_variable (name) : find_variable (name); +#if defined (ARRAY_VARS) + var_exists = var != 0; + array_exists = var && (array_p (var) || assoc_p (var)); + creating_array = flags_on & (att_array|att_assoc); +#endif + if (var == 0) { #if defined (ARRAY_VARS) if (flags_on & att_assoc) { var = make_new_assoc_variable (name); - if (offset == 0) + if (var && offset == 0 && no_invisible_vars == 0) VSETATTR (var, att_invisible); } else if ((flags_on & att_array) || making_array_special) { var = make_new_array_variable (name); - if (offset == 0) + if (var && offset == 0 && no_invisible_vars == 0) VSETATTR (var, att_invisible); } else #endif - - if (offset) - var = mkglobal ? bind_global_variable (name, "", 0) : bind_variable (name, "", 0); - else { - var = mkglobal ? bind_global_variable (name, (char *)NULL, 0) : bind_variable (name, (char *)NULL, 0); - VSETATTR (var, att_invisible); + var = mkglobal ? bind_global_variable (name, (char *)NULL, ASS_FORCE) : bind_variable (name, (char *)NULL, ASS_FORCE); + if (var && offset == 0 && no_invisible_vars == 0) + VSETATTR (var, att_invisible); } + if (var == 0) + { + /* Has to appear in brackets */ + NEXT_VARIABLE (); + } + created_var = 1; } /* Can't take an existing array variable and make it a nameref */ else if ((array_p (var) || assoc_p (var)) && (flags_on & att_nameref)) @@ -510,8 +686,30 @@ declare_internal (list, local_var) assign_error++; NEXT_VARIABLE (); } + else if (nameref_p (var) && (flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0 && offset && valid_nameref_value (value, 1) == 0) + { + builtin_error (_("`%s': invalid variable name for name reference"), value); + any_failed++; + NEXT_VARIABLE (); + } else if (flags_on & att_nameref) { +#if 1 + /* Check of offset is to allow an assignment to a nameref var as + part of the declare word to override existing value */ + if (nameref_p (var) == 0 && var_isset (var) && offset == 0 && valid_nameref_value (value_cell (var), 0) == 0) + { + builtin_error (_("`%s': invalid variable name for name reference"), value_cell (var)); + any_failed++; + NEXT_VARIABLE (); + } +#endif + if (readonly_p (var)) + { + sh_readonly (name); + any_failed++; + NEXT_VARIABLE (); + } /* ksh93 compat: turning on nameref attribute turns off -ilu */ VUNSETATTR (var, att_integer|att_uppercase|att_lowercase|att_capcase); } @@ -519,7 +717,7 @@ declare_internal (list, local_var) /* Cannot use declare +r to turn off readonly attribute. */ if (readonly_p (var) && (flags_off & att_readonly)) { - sh_readonly (name); + sh_readonly (name_cell (var)); any_failed++; NEXT_VARIABLE (); } @@ -535,12 +733,28 @@ declare_internal (list, local_var) } #if defined (ARRAY_VARS) - if ((making_array_special || (flags_on & (att_array|att_assoc)) || array_p (var) || assoc_p (var)) && offset) + /* make declare a[2]=foo as similar to a[2]=foo as possible if + a is already an array or assoc variable. */ + if (array_subscript_assignment && array_exists && creating_array == 0) + simple_array_assign = 1; + else if ((making_array_special || creating_array || array_exists) && offset) { int vlen; vlen = STRLEN (value); - - if (value[0] == '(' && value[vlen-1] == ')') +/*itrace("declare_builtin: name = %s value = %s flags = %d", name, value, wflags);*/ + if (shell_compatibility_level > 43 && (wflags & W_COMPASSIGN) == 0 && + value[0] == '(' && value[vlen-1] == ')') + { + /* The warning is only printed when using compound assignment + to an array variable that doesn't already exist. We use + creating_array to allow things like + declare -a foo$bar='(abc)' to work. */ + if (array_exists == 0 && creating_array == 0) + internal_warning (_("%s: quoted compound array assignment deprecated"), list->word->word); + compound_array_assign = array_exists || creating_array; + simple_array_assign = making_array_special; + } + else if (value[0] == '(' && value[vlen-1] == ')' && (shell_compatibility_level < 44 || (wflags & W_COMPASSIGN))) compound_array_assign = 1; else simple_array_assign = 1; @@ -604,12 +818,13 @@ declare_internal (list, local_var) #if defined (ARRAY_VARS) if (offset && compound_array_assign) - assign_array_var_from_string (var, value, aflags); + assign_array_var_from_string (var, value, aflags|ASS_FORCE); else if (simple_array_assign && subscript_start) { /* declare [-aA] name[N]=value */ *subscript_start = '['; /* ] */ - var = assign_array_element (name, value, 0); /* XXX - not aflags */ + /* XXX - problem here with appending */ + var = assign_array_element (name, value, aflags&ASS_APPEND); /* XXX - not aflags */ *subscript_start = '\0'; if (var == 0) /* some kind of assignment error */ { @@ -623,25 +838,30 @@ declare_internal (list, local_var) { /* let bind_{array,assoc}_variable take care of this. */ if (assoc_p (var)) - bind_assoc_variable (var, name, savestring ("0"), value, aflags); + bind_assoc_variable (var, name, savestring ("0"), value, aflags|ASS_FORCE); else - bind_array_variable (name, 0, value, aflags); + bind_array_variable (name, 0, value, aflags|ASS_FORCE); } else #endif + /* XXX - no ASS_FORCE here */ /* bind_variable_value duplicates the essential internals of bind_variable() */ if (offset) { - if (onref) + if (onref || nameref_p (var)) aflags |= ASS_NAMEREF; v = bind_variable_value (var, value, aflags); - if (v == 0 && onref) + if (v == 0 && (onref || nameref_p (var))) { - sh_invalidid (value); + if (valid_nameref_value (value, 1) == 0) + sh_invalidid (value); assign_error++; /* XXX - unset this variable? or leave it as normal var? */ - delete_var (var->name, mkglobal ? global_variables : shell_variables); + if (created_var) + delete_var (var->name, mkglobal ? global_variables : shell_variables); + flags_on |= onref; /* undo change from above */ + flags_off |= offref; NEXT_VARIABLE (); } } @@ -681,9 +901,16 @@ declare_internal (list, local_var) flags_on |= onref; VUNSETATTR (var, offref); flags_off |= offref; - /* Yuck. ksh93 compatibility */ + /* Yuck. ksh93 compatibility. XXX - need to investigate more but + definitely happens when turning off nameref attribute on nameref + (see comments above). Under no circumstances allow this to turn + off readonly attribute on readonly nameref variable. */ if (refvar) - VUNSETATTR (refvar, flags_off); + { + if (flags_off & att_readonly) + flags_off &= ~att_readonly; + VUNSETATTR (refvar, flags_off); + } stupidly_hack_special_variables (name); diff --git a/builtins/echo.def b/builtins/echo.def index f473826..3f8b5a9 100644 --- a/builtins/echo.def +++ b/builtins/echo.def @@ -1,7 +1,7 @@ This file is echo.def, from which is created echo.c. It implements the builtin "echo" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -59,9 +59,9 @@ Options: \v vertical tab \\ backslash \0nnn the character whose ASCII code is NNN (octal). NNN can be - 0 to 3 octal digits + 0 to 3 octal digits \xHH the eight-bit character whose value is HH (hexadecimal). HH - can be one or two hex digits + can be one or two hex digits Exit Status: Returns success unless a write error occurs. @@ -161,7 +161,6 @@ just_echo: clearerr (stdout); /* clear error before writing and testing success */ - terminate_immediately++; while (list) { i = len = 0; @@ -180,6 +179,7 @@ just_echo: fflush (stdout); /* Fix for bug in SunOS 5.5 printf(3) */ #endif } + QUIT; if (do_v9 && temp) free (temp); list = list->next; @@ -190,11 +190,11 @@ just_echo: } if (list) putchar(' '); + QUIT; } if (display_return) putchar ('\n'); - terminate_immediately--; return (sh_chkwrite (EXECUTION_SUCCESS)); } diff --git a/builtins/enable.def b/builtins/enable.def index 40cbb44..39c3669 100644 --- a/builtins/enable.def +++ b/builtins/enable.def @@ -1,7 +1,7 @@ This file is enable.def, from which is created enable.c. It implements the builtin "enable" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -66,6 +66,7 @@ $END #include "../flags.h" #include "common.h" #include "bashgetopt.h" +#include "findcmd.h" #if defined (PROGRAMMABLE_COMPLETION) # include "../pcomplete.h" @@ -92,6 +93,11 @@ static void delete_builtin __P((struct builtin *)); static int local_dlclose __P((void *)); #endif +#define STRUCT_SUFFIX "_struct" +/* for now */ +#define LOAD_SUFFIX "_builtin_load" +#define UNLOAD_SUFFIX "_builtin_unload" + static void list_some_builtins __P((int)); static int enable_shell_command __P((char *, int)); @@ -145,6 +151,7 @@ enable_builtin (list) builtin_error (_("dynamic loading not available")); return (EX_USAGE); #endif /* HAVE_DLCLOSE */ + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -290,9 +297,11 @@ dyn_load_builtin (list, flags, filename) WORD_LIST *l; void *handle; - int total, size, new, replaced; - char *struct_name, *name; + int total, size, new, replaced, r; + char *struct_name, *name, *funcname; + sh_load_func_t *loadfunc; struct builtin **new_builtins, *b, *new_shell_builtins, *old_builtin; + char *loadables_path, *load_path; if (list == 0) return (EXECUTION_FAILURE); @@ -301,15 +310,39 @@ dyn_load_builtin (list, flags, filename) #define RTLD_LAZY 1 #endif + handle = 0; + if (absolute_program (filename) == 0) + { + loadables_path = get_string_value ("BASH_LOADABLES_PATH"); + if (loadables_path) + { + load_path = find_in_path (filename, loadables_path, FS_NODIRS|FS_EXEC_PREFERRED); + if (load_path) + { #if defined (_AIX) - handle = dlopen (filename, RTLD_NOW|RTLD_GLOBAL); + handle = dlopen (load_path, RTLD_NOW|RTLD_GLOBAL); #else - handle = dlopen (filename, RTLD_LAZY); + handle = dlopen (load_path, RTLD_LAZY); +#endif /* !_AIX */ + free (load_path); + } + } + } + + /* Fall back to current directory for now */ + if (handle == 0) +#if defined (_AIX) + handle = dlopen (filename, RTLD_NOW|RTLD_GLOBAL); +#else + handle = dlopen (filename, RTLD_LAZY); #endif /* !_AIX */ if (handle == 0) { - builtin_error (_("cannot open shared object %s: %s"), filename, dlerror ()); + name = printable_filename (filename, 0); + builtin_error (_("cannot open shared object %s: %s"), name, dlerror ()); + if (name != filename) + free (name); return (EXECUTION_FAILURE); } @@ -327,18 +360,36 @@ dyn_load_builtin (list, flags, filename) size = strlen (name); struct_name = (char *)xmalloc (size + 8); strcpy (struct_name, name); - strcpy (struct_name + size, "_struct"); + strcpy (struct_name + size, STRUCT_SUFFIX); b = (struct builtin *)dlsym (handle, struct_name); if (b == 0) { + name = printable_filename (filename, 0); builtin_error (_("cannot find %s in shared object %s: %s"), - struct_name, filename, dlerror ()); + struct_name, name, dlerror ()); + if (name != filename) + free (name); free (struct_name); continue; } - free (struct_name); + funcname = xrealloc (struct_name, size + sizeof (LOAD_SUFFIX) + 1); + strcpy (funcname, name); + strcpy (funcname + size, LOAD_SUFFIX); + + loadfunc = (sh_load_func_t *)dlsym (handle, funcname); + if (loadfunc) + { + r = (*loadfunc) (name); + if (r == 0) + { + builtin_error (_("load function for %s returns failure (%d): not loaded"), name, r); + free (funcname); + continue; + } + } + free (funcname); b->flags &= ~STATIC_BUILTIN; if (flags & SPECIAL) @@ -446,7 +497,9 @@ dyn_unload_builtin (name) { struct builtin *b; void *handle; - int ref, i; + char *funcname; + sh_unload_func_t *unloadfunc; + int ref, i, size; b = builtin_address_internal (name, 1); if (b == 0) @@ -467,6 +520,17 @@ dyn_unload_builtin (name) ref++; } + /* Call any unload function */ + size = strlen (name); + funcname = xmalloc (size + sizeof (UNLOAD_SUFFIX) + 1); + strcpy (funcname, name); + strcpy (funcname + size, UNLOAD_SUFFIX); + + unloadfunc = (sh_unload_func_t *)dlsym (handle, funcname); + if (unloadfunc) + (*unloadfunc) (name); /* void function */ + free (funcname); + /* Don't remove the shared object unless the reference count of builtins using it drops to zero. */ if (ref == 1 && local_dlclose (handle) != 0) diff --git a/builtins/eval.def b/builtins/eval.def index 5e824c9..a92b538 100644 --- a/builtins/eval.def +++ b/builtins/eval.def @@ -1,7 +1,7 @@ This file is eval.def, from which is created eval.c. It implements the builtin "eval" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/builtins/evalfile.c b/builtins/evalfile.c index 058d99d..316b794 100644 --- a/builtins/evalfile.c +++ b/builtins/evalfile.c @@ -1,6 +1,6 @@ /* evalfile.c - read and evaluate commands from a file or file descriptor */ -/* Copyright (C) 1996-2009 Free Software Foundation, Inc. +/* Copyright (C) 1996-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -43,6 +43,8 @@ #include "../execute_cmd.h" #include "../trap.h" +#include + #if defined (HISTORY) # include "../bashhist.h" #endif @@ -71,6 +73,7 @@ extern int indirection_level, subshell_environment; extern int return_catch_flag, return_catch_value; extern int last_command_exit_value; extern int executing_command_builtin; +extern int current_token; /* parse.y */ /* How many `levels' of sourced files we have. */ int sourcelevel = 0; @@ -91,6 +94,7 @@ _evalfile (filename, flags) #if defined (ARRAY_VARS) SHELL_VAR *funcname_v, *nfv, *bash_source_v, *bash_lineno_v; ARRAY *funcname_a, *bash_source_a, *bash_lineno_a; + struct func_array_state *fa; # if defined (DEBUGGER) SHELL_VAR *bash_argv_v, *bash_argc_v; ARRAY *bash_argv_a, *bash_argc_a; @@ -130,7 +134,7 @@ file_error_and_exit: } return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE - : ((errno == ENOENT) ? 0 : -1)); + : ((errno == ENOENT && (flags & FEVAL_ENOENTOK) != 0) ? 0 : -1)); } errfunc = ((flags & FEVAL_BUILTIN) ? builtin_error : internal_error); @@ -240,6 +244,17 @@ file_error_and_exit: array_push (bash_lineno_a, t); free (t); array_push (funcname_a, "source"); /* not exactly right */ + + fa = (struct func_array_state *)xmalloc (sizeof (struct func_array_state)); + fa->source_a = bash_source_a; + fa->source_v = bash_source_v; + fa->lineno_a = bash_lineno_a; + fa->lineno_v = bash_lineno_v; + fa->funcname_a = funcname_a; + fa->funcname_v = funcname_v; + if (flags & FEVAL_UNWINDPROT) + add_unwind_protect (restore_funcarray_state, fa); + # if defined (DEBUGGER) /* Have to figure out a better way to do this when `source' is supplied arguments */ @@ -248,6 +263,8 @@ file_error_and_exit: array_push (bash_argv_a, (char *)filename); tt[0] = '1'; tt[1] = '\0'; array_push (bash_argc_a, tt); + if (flags & FEVAL_UNWINDPROT) + add_unwind_protect (pop_args, 0); } # endif #endif @@ -277,30 +294,27 @@ file_error_and_exit: { if (flags & FEVAL_NONINT) interactive = old_interactive; +#if defined (ARRAY_VARS) + restore_funcarray_state (fa); +# if defined (DEBUGGER) + if ((flags & FEVAL_NOPUSHARGS) == 0) + { + /* Don't need to call pop_args here until we do something better + when source is passed arguments (see above). */ + array_pop (bash_argc_a); + array_pop (bash_argv_a); + } +# endif +#endif return_catch_flag--; sourcelevel--; COPY_PROCENV (old_return_catch, return_catch); } -#if defined (ARRAY_VARS) - /* These two variables cannot be unset, and cannot be affected by the - sourced file. */ - array_pop (bash_source_a); - array_pop (bash_lineno_a); - - /* FUNCNAME can be unset, and so can potentially be changed by the - sourced file. */ - GET_ARRAY_FROM_VAR ("FUNCNAME", nfv, funcname_a); - if (nfv == funcname_v) - array_pop (funcname_a); -# if defined (DEBUGGER) - if ((flags & FEVAL_NOPUSHARGS) == 0) - { - array_pop (bash_argc_a); - array_pop (bash_argv_a); - } -# endif -#endif + /* If we end up with EOF after sourcing a file, which can happen when the file + doesn't end with a newline, pretend that it did. */ + if (current_token == yacc_EOF) + push_token ('\n'); /* XXX */ return ((flags & FEVAL_BUILTIN) ? result : 1); } @@ -322,6 +336,23 @@ maybe_execute_file (fname, force_noninteractive) return result; } +int +force_execute_file (fname, force_noninteractive) + const char *fname; + int force_noninteractive; +{ + char *filename; + int result, flags; + + filename = bash_tilde_expand (fname, 0); + flags = 0; + if (force_noninteractive) + flags |= FEVAL_NONINT; + result = _evalfile (filename, flags); + free (filename); + return result; +} + #if defined (HISTORY) int fc_execute_file (filename) @@ -330,8 +361,9 @@ fc_execute_file (filename) int flags; /* We want these commands to show up in the history list if - remember_on_history is set. */ - flags = FEVAL_ENOENTOK|FEVAL_HISTORY|FEVAL_REGFILE; + remember_on_history is set. We use FEVAL_BUILTIN to return + the result of parse_and_execute. */ + flags = FEVAL_ENOENTOK|FEVAL_HISTORY|FEVAL_REGFILE|FEVAL_BUILTIN; return (_evalfile (filename, flags)); } #endif /* HISTORY */ diff --git a/builtins/evalstring.c b/builtins/evalstring.c index 0758c43..e221591 100644 --- a/builtins/evalstring.c +++ b/builtins/evalstring.c @@ -1,6 +1,6 @@ /* evalstring.c - evaluate a string as one or more shell commands. */ -/* Copyright (C) 1996-2012 Free Software Foundation, Inc. +/* Copyright (C) 1996-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -96,6 +96,38 @@ restore_lastcom (x) the_printed_command_except_trap = x; } +int +should_suppress_fork (command) + COMMAND *command; +{ + return (startup_state == 2 && parse_and_execute_level == 1 && + running_trap == 0 && + *bash_input.location.string == '\0' && + command->type == cm_simple && +#if 0 + signal_is_trapped (EXIT_TRAP) == 0 && + signal_is_trapped (ERROR_TRAP) == 0 && +#else + any_signals_trapped () < 0 && +#endif + command->redirects == 0 && command->value.Simple->redirects == 0 && + ((command->flags & CMD_TIME_PIPELINE) == 0) && + ((command->flags & CMD_INVERT_RETURN) == 0)); +} + +void +optimize_fork (command) + COMMAND *command; +{ + if (command->type == cm_connection && + (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR) && + should_suppress_fork (command->value.Connection->second)) + { + command->value.Connection->second->flags |= CMD_NO_FORK; + command->value.Connection->second->value.Simple->flags |= CMD_NO_FORK; + } +} + /* How to force parse_and_execute () to clean up after itself. */ void parse_and_execute_cleanup () @@ -141,8 +173,7 @@ parse_prologue (string, flags, tag) else unwind_protect_int (remember_on_history); /* can be used in scripts */ # if defined (BANG_HISTORY) - if (interactive_shell) - unwind_protect_int (history_expansion_inhibited); + unwind_protect_int (history_expansion_inhibited); # endif /* BANG_HISTORY */ #endif /* HISTORY */ @@ -172,6 +203,10 @@ parse_prologue (string, flags, tag) #if defined (HISTORY) if (flags & SEVAL_NOHIST) bash_history_disable (); +# if defined (BANG_HISTORY) + if (flags & SEVAL_NOHISTEXP) + history_expansion_inhibited = 1; +# endif /* BANG_HISTORY */ #endif /* HISTORY */ } @@ -184,6 +219,7 @@ parse_prologue (string, flags, tag) (flags & SEVAL_NOHIST) -> call bash_history_disable () (flags & SEVAL_NOFREE) -> don't free STRING when finished (flags & SEVAL_RESETLINE) -> reset line_number to 1 + (flags & SEVAL_NOHISTEXP) -> history_expansion_inhibited -> 1 */ int @@ -205,8 +241,8 @@ parse_and_execute (string, from_file, flags) #if defined (HAVE_POSIX_SIGNALS) /* If we longjmp and are going to go on, use this to restore signal mask */ - sigemptyset (&pe_sigmask); - sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &pe_sigmask); + sigemptyset ((sigset_t *)&pe_sigmask); + sigprocmask (SIG_BLOCK, (sigset_t *)NULL, (sigset_t *)&pe_sigmask); #endif /* Reset the line number if the caller wants us to. If we don't reset the @@ -226,7 +262,12 @@ parse_and_execute (string, from_file, flags) code = should_jump_to_top_level = 0; last_result = EXECUTION_SUCCESS; + /* We need to reset enough of the token state so we can start fresh. */ + if (current_token == yacc_EOF) + current_token = '\n'; /* reset_parser() ? */ + with_input_from_string (string, from_file); + clear_shell_input_line (); while (*(bash_input.location.string)) { command = (COMMAND *)NULL; @@ -285,7 +326,7 @@ parse_and_execute (string, from_file, flags) dispose_command (command); /* pe_dispose does this */ #endif #if defined (HAVE_POSIX_SIGNALS) - sigprocmask (SIG_SETMASK, &pe_sigmask, (sigset_t *)NULL); + sigprocmask (SIG_SETMASK, (sigset_t *)&pe_sigmask, (sigset_t *)NULL); #endif continue; } @@ -349,22 +390,18 @@ parse_and_execute (string, from_file, flags) * we're not going to run the exit trap AND * we have a simple command without redirections AND * the command is not being timed AND - * the command's return status is not being inverted + * the command's return status is not being inverted AND + * there aren't any traps in effect * THEN * tell the execution code that we don't need to fork */ - if (startup_state == 2 && parse_and_execute_level == 1 && - running_trap == 0 && - *bash_input.location.string == '\0' && - command->type == cm_simple && - signal_is_trapped (EXIT_TRAP) == 0 && - command->redirects == 0 && command->value.Simple->redirects == 0 && - ((command->flags & CMD_TIME_PIPELINE) == 0) && - ((command->flags & CMD_INVERT_RETURN) == 0)) + if (should_suppress_fork (command)) { command->flags |= CMD_NO_FORK; command->value.Simple->flags |= CMD_NO_FORK; } + else if (command->type == cm_connection) + optimize_fork (command); #endif /* ONESHOT */ /* See if this is a candidate for $( gs_optarg = sh_optarg; + ret->gs_optind = sh_optind; + ret->gs_curopt = sh_curopt; + ret->gs_nextchar = nextchar; /* XXX */ + ret->gs_charindex = sh_charindex; + ret->gs_flags = 0; /* XXX for later use */ + + return ret; +} + +void +sh_getopt_restore_istate (state) + sh_getopt_state_t *state; +{ + sh_optarg = state->gs_optarg; + sh_optind = state->gs_optind; + sh_curopt = state->gs_curopt; + nextchar = state->gs_nextchar; /* XXX - probably not usable */ + sh_charindex = state->gs_charindex; + + sh_getopt_dispose_istate (state); +} + #if 0 void sh_getopt_debug_restore_state (argv) diff --git a/builtins/getopt.h b/builtins/getopt.h index 75fdec5..9909618 100644 --- a/builtins/getopt.h +++ b/builtins/getopt.h @@ -60,6 +60,23 @@ extern int sh_optopt; extern int sh_badopt; extern int sh_getopt __P((int, char *const *, const char *)); + +typedef struct sh_getopt_state +{ + char *gs_optarg; + int gs_optind; + int gs_curopt; + char *gs_nextchar; + int gs_charindex; + int gs_flags; +} sh_getopt_state_t; + extern void sh_getopt_restore_state __P((char **)); +extern sh_getopt_state_t *sh_getopt_alloc_istate __P((void)); +extern void sh_getopt_dispose_istate __P((sh_getopt_state_t *)); + +extern sh_getopt_state_t *sh_getopt_save_istate __P((void)); +extern void sh_getopt_restore_istate __P((sh_getopt_state_t *)); + #endif /* _SH_GETOPT_H */ diff --git a/builtins/getopts.def b/builtins/getopts.def index 1d2a68a..590b110 100644 --- a/builtins/getopts.def +++ b/builtins/getopts.def @@ -1,7 +1,7 @@ This file is getopts.def, from which is created getopts.c. It implements the builtin "getopts" in Bash. -Copyright (C) 1987-2004 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -74,6 +74,7 @@ $END #endif #include "../bashansi.h" +#include "../bashintl.h" #include "../shell.h" #include "common.h" @@ -86,6 +87,7 @@ $END extern char *this_command_name; +static int getopts_unbind_variable __P((char *)); static int getopts_bind_variable __P((char *, char *)); static int dogetopts __P((int, char **)); @@ -99,6 +101,17 @@ getopts_reset (newind) sh_badopt = 0; } +static int +getopts_unbind_variable (name) + char *name; +{ +#if 0 + return (unbind_variable (name)); +#else + return (unbind_variable_noref (name)); +#endif +} + static int getopts_bind_variable (name, value) char *name, *value; @@ -253,7 +266,7 @@ dogetopts (argc, argv) if (ret == G_EOF) { - unbind_variable ("OPTARG"); + getopts_unbind_variable ("OPTARG"); getopts_bind_variable (name, "?"); return (EXECUTION_FAILURE); } @@ -270,7 +283,7 @@ dogetopts (argc, argv) bind_variable ("OPTARG", strval, 0); } else - unbind_variable ("OPTARG"); + getopts_unbind_variable ("OPTARG"); return (ret); } @@ -289,7 +302,7 @@ dogetopts (argc, argv) else { ret = getopts_bind_variable (name, "?"); - unbind_variable ("OPTARG"); + getopts_unbind_variable ("OPTARG"); } return (ret); } @@ -316,9 +329,12 @@ getopts_builtin (list) } reset_internal_getopt (); - if (internal_getopt (list, "") != -1) + if ((ret = internal_getopt (list, "")) != -1) { - builtin_usage (); + if (ret == GETOPT_HELP) + builtin_help (); + else + builtin_usage (); return (EX_USAGE); } list = loptend; diff --git a/builtins/hash.def b/builtins/hash.def index 85ef364..bec4b07 100644 --- a/builtins/hash.def +++ b/builtins/hash.def @@ -1,7 +1,7 @@ This file is hash.def, from which is created hash.c. It implements the builtin "hash" in Bash. -Copyright (C) 1987-2013 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -29,15 +29,15 @@ Determine and remember the full pathname of each command NAME. If no arguments are given, information about remembered commands is displayed. Options: - -d forget the remembered location of each NAME - -l display in a format that may be reused as input + -d forget the remembered location of each NAME + -l display in a format that may be reused as input -p pathname use PATHNAME as the full pathname of NAME - -r forget all remembered locations - -t print the remembered location of each NAME, preceding + -r forget all remembered locations + -t print the remembered location of each NAME, preceding each location with the corresponding NAME if multiple NAMEs are given Arguments: - NAME Each NAME is searched for in $PATH and added to the list + NAME Each NAME is searched for in $PATH and added to the list of remembered commands. Exit Status: @@ -115,6 +115,7 @@ hash_builtin (list) case 't': list_targets = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -230,7 +231,15 @@ static int print_portable_hash_info (item) BUCKET_CONTENTS *item; { - printf ("builtin hash -p %s %s\n", pathdata(item)->path, item->key); + char *fp, *fn; + + fp = printable_filename (pathdata(item)->path, 1); + fn = printable_filename (item->key, 1); + printf ("builtin hash -p %s %s\n", fp, fn); + if (fp != pathdata(item)->path) + free (fp); + if (fn != item->key) + free (fn); return 0; } diff --git a/builtins/help.def b/builtins/help.def index 1894f17..95a1a36 100644 --- a/builtins/help.def +++ b/builtins/help.def @@ -1,7 +1,7 @@ This file is help.def, from which is created help.c. It implements the builtin "help" in Bash. -Copyright (C) 1987-2013 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -34,7 +34,7 @@ Options: -d output short description for each topic -m display usage in pseudo-manpage format -s output only a short usage synopsis for each topic matching - PATTERN + PATTERN Arguments: PATTERN Pattern specifiying a help topic @@ -58,6 +58,7 @@ $END #include #include +#include #include "../bashintl.h" @@ -77,6 +78,9 @@ extern int errno; extern const char * const bash_copyright; extern const char * const bash_license; +extern char *this_command_name; +extern struct builtin *current_builtin; + static void show_builtin_command_help __P((void)); static int open_helpfile __P((char *)); static void show_desc __P((char *, int)); @@ -109,6 +113,7 @@ help_builtin (list) case 's': sflag = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -187,6 +192,28 @@ help_builtin (list) return (EXECUTION_SUCCESS); } +void +builtin_help () +{ + int ind; + ptrdiff_t d; + + current_builtin = builtin_address_internal (this_command_name, 0); + if (current_builtin == 0) + return; + + d = current_builtin - shell_builtins; + +#if defined (__STDC__) + ind = (int)d; +#else + ind = (int)d / sizeof (struct builtin); +#endif + + printf ("%s: %s\n", this_command_name, _(shell_builtins[ind].short_doc)); + show_longdoc (ind); +} + static int open_helpfile (name) char *name; @@ -348,7 +375,7 @@ dispcolumn (i, buf, bufsize, width, height) int width, height; { int j; - int displen; + int dispcols; char *helpdoc; /* first column */ @@ -365,9 +392,9 @@ dispcolumn (i, buf, bufsize, width, height) return; } - displen = strlen (buf); + dispcols = strlen (buf); /* two spaces */ - for (j = displen; j < width; j++) + for (j = dispcols; j < width; j++) putc (' ', stdout); /* second column */ @@ -390,7 +417,7 @@ wdispcolumn (i, buf, bufsize, width, height) int width, height; { int j; - int displen; + int dispcols, dispchars; char *helpdoc; wchar_t *wcstr; size_t slen, n; @@ -420,23 +447,29 @@ wdispcolumn (i, buf, bufsize, width, height) if (wcstr[j] == L'\n' || wcstr[j] == L'\t') wcstr[j] = L' '; - displen = wcsnwidth (wcstr+1, slen, width - 2) + 1; /* +1 for ' ' or '*' */ - + /* dispchars == number of characters that will be displayed */ + dispchars = wcsnwidth (wcstr+1, slen, width - 2); + /* dispcols == number of columns required to display DISPCHARS */ + dispcols = wcswidth (wcstr+1, dispchars) + 1; /* +1 for ' ' or '*' */ + wcstr[0] = (shell_builtins[i].flags & BUILTIN_ENABLED) ? L' ' : L'*'; - /* This assumes each wide char takes up one column position when displayed */ - wcstr[width - 2] = L'>'; /* indicate truncation */ - wcstr[width - 1] = L'\0'; + if (dispcols >= width-2) + { + wcstr[dispchars] = L'>'; /* indicate truncation */ + wcstr[dispchars+1] = L'\0'; + } printf ("%ls", wcstr); if (((i << 1) >= num_shell_builtins) || (i+height >= num_shell_builtins)) { printf ("\n"); + free (wcstr); return; } /* at least one space */ - for (j = displen; j < width; j++) + for (j = dispcols; j < width; j++) putc (' ', stdout); /* second column */ @@ -446,6 +479,7 @@ wdispcolumn (i, buf, bufsize, width, height) { /* for now */ printf ("%c%s\n", (shell_builtins[i+height].flags & BUILTIN_ENABLED) ? ' ' : '*', helpdoc); + free (wcstr); return; } @@ -460,13 +494,20 @@ wdispcolumn (i, buf, bufsize, width, height) if (wcstr[j] == L'\n' || wcstr[j] == L'\t') wcstr[j] = L' '; - displen = wcsnwidth (wcstr+1, slen, width - 2); + /* dispchars == number of characters that will be displayed */ + dispchars = wcsnwidth (wcstr+1, slen, width - 2); + dispcols = wcswidth (wcstr+1, dispchars) + 1; /* +1 for ' ' or '*' */ wcstr[0] = (shell_builtins[i+height].flags & BUILTIN_ENABLED) ? L' ' : L'*'; - /* This assumes each wide char takes up one column position when displayed */ - wcstr[width - 3] = L'>'; /* indicate truncation */ - wcstr[width - 2] = L'\0'; + /* The dispchars-1 is there for terminals that behave strangely when you + have \n in the nth column for terminal width n; this is what bash-4.3 + did. */ + if (dispcols >= width - 2) + { + wcstr[dispchars-1] = L'>'; /* indicate truncation */ + wcstr[dispchars] = L'\0'; + } printf ("%ls\n", wcstr); diff --git a/builtins/history.def b/builtins/history.def index 4cf7308..48b59ae 100644 --- a/builtins/history.def +++ b/builtins/history.def @@ -1,7 +1,7 @@ This file is history.def, from which is created history.c. It implements the builtin "history" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -31,23 +31,23 @@ entry with a `*'. An argument of N lists only the last N entries. Options: -c clear the history list by deleting all of the entries - -d offset delete the history entry at offset OFFSET. + -d offset delete the history entry at position OFFSET. -a append history lines from this session to the history file -n read all history lines not already read from the history file + and append them to the history list -r read the history file and append the contents to the history - list + list -w write the current history to the history file - and append them to the history list -p perform history expansion on each ARG and display the result - without storing it in the history list + without storing it in the history list -s append the ARGs to the history list as a single entry If FILENAME is given, it is used as the history file. Otherwise, -if $HISTFILE has a value, that is used, else ~/.bash_history. +if HISTFILE has a value, that is used, else ~/.bash_history. -If the $HISTTIMEFORMAT variable is set and not null, its value is used +If the HISTTIMEFORMAT 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 displayed history entry. No time stamps are printed otherwise. @@ -141,6 +141,7 @@ history_builtin (list) flags |= PFLAG; #endif break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -208,7 +209,11 @@ history_builtin (list) else if (flags & WFLAG) /* Write entire history. */ result = write_history (filename); else if (flags & RFLAG) /* Read entire file. */ - result = read_history (filename); + { + result = read_history (filename); + history_lines_in_file = history_lines_read_from_file; + /* history_lines_in_file = where_history () + history_base - 1; */ + } else if (flags & NFLAG) /* Read `new' history from file. */ { /* Read all of the lines in the file that we haven't already read. */ @@ -219,7 +224,8 @@ history_builtin (list) result = read_history_range (filename, history_lines_in_file, -1); using_history (); - history_lines_in_file = where_history (); + history_lines_in_file = history_lines_read_from_file; + /* history_lines_in_file = where_history () + history_base - 1; */ /* If we're rewriting the history file at shell exit rather than just appending the lines from this session to it, the question is whether @@ -254,6 +260,9 @@ histtime (hlist, histtimefmt) t = history_get_time (hlist); if (t) strftime (timestr, sizeof (timestr), histtimefmt, localtime (&t)); + else if (hlist->timestamp && hlist->timestamp[0]) + snprintf (timestr, sizeof (timestr), _("%s: invalid timestamp"), + (hlist->timestamp[0] == '#') ? hlist->timestamp + 1: hlist->timestamp); else strcpy (timestr, "??"); return timestr; diff --git a/builtins/jobs.def b/builtins/jobs.def index 47da58e..be1a7d8 100644 --- a/builtins/jobs.def +++ b/builtins/jobs.def @@ -1,7 +1,7 @@ This file is jobs.def, from which is created jobs.c. It implements the builtins "jobs" and "disown" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -32,7 +32,7 @@ Without options, the status of all active jobs is displayed. Options: -l lists process IDs in addition to the normal information -n lists only processes that have changed status since the last - notification + notification -p lists process IDs only -r restrict output to running jobs -s restrict output to stopped jobs @@ -118,6 +118,7 @@ jobs_builtin (list) state = JSTATE_STOPPED; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -212,7 +213,7 @@ execute_list_with_replacements (list) $BUILTIN disown $FUNCTION disown_builtin $DEPENDS_ON JOB_CONTROL -$SHORT_DOC disown [-h] [-ar] [jobspec ...] +$SHORT_DOC disown [-h] [-ar] [jobspec ... | pid ...] Remove jobs from current shell. Removes each JOBSPEC argument from the table of active jobs. Without @@ -221,7 +222,7 @@ any JOBSPECs, the shell uses its notion of the current job. Options: -a remove all jobs if JOBSPEC is not supplied -h mark each JOBSPEC so that SIGHUP is not sent to the job if the - shell receives a SIGHUP + shell receives a SIGHUP -r remove only running jobs Exit Status: @@ -252,6 +253,7 @@ disown_builtin (list) case 'r': running_jobs = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/builtins/kill.def b/builtins/kill.def index 2e68f03..f05189d 100644 --- a/builtins/kill.def +++ b/builtins/kill.def @@ -1,7 +1,7 @@ This file is kill.def, from which is created kill.c. It implements the builtin "kill" in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -33,7 +33,8 @@ Options: -s sig SIG is a signal name -n sig SIG is a signal number -l list the signal names; if arguments follow `-l' they are - assumed to be signal numbers for which names should be listed + assumed to be signal numbers for which names should be listed + -L synonym for -l Kill is a shell builtin for two reasons: it allows job IDs to be used instead of process IDs, and allows processes to be killed if the limit @@ -96,6 +97,7 @@ kill_builtin (list) builtin_usage (); return (EX_USAGE); } + CHECK_HELPOPT (list); any_succeeded = listing = saw_signal = 0; sig = SIGTERM; @@ -107,7 +109,7 @@ kill_builtin (list) { word = list->word->word; - if (ISOPTION (word, 'l')) + if (ISOPTION (word, 'l') || ISOPTION (word, 'L')) { listing++; list = list->next; diff --git a/builtins/let.def b/builtins/let.def index 811534e..23e684f 100644 --- a/builtins/let.def +++ b/builtins/let.def @@ -86,6 +86,8 @@ let_builtin (list) intmax_t ret; int expok; + CHECK_HELPOPT (list); + /* Skip over leading `--' argument. */ if (list && list->word && ISOPTION (list->word->word, '-')) list = list->next; diff --git a/builtins/mapfile.def b/builtins/mapfile.def index 2e6a643..0d64f61 100644 --- a/builtins/mapfile.def +++ b/builtins/mapfile.def @@ -2,7 +2,7 @@ This file is mapfile.def, from which is created mapfile.c. It implements the builtin "mapfile" in Bash. Copyright (C) 2005-2006 Rocky Bernstein for Free Software Foundation, Inc. -Copyright (C) 2008-2012 Free Software Foundation, Inc. +Copyright (C) 2008-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -23,7 +23,7 @@ $PRODUCES mapfile.c $BUILTIN mapfile $FUNCTION mapfile_builtin -$SHORT_DOC mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] +$SHORT_DOC mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array] Read lines from the standard input into an indexed array variable. Read lines from the standard input into the indexed array variable ARRAY, or @@ -31,16 +31,18 @@ from file descriptor FD if the -u option is supplied. The variable MAPFILE is the default ARRAY. Options: - -n count Copy at most COUNT lines. If COUNT is 0, all lines are copied. - -O origin Begin assigning to ARRAY at index ORIGIN. The default index is 0. - -s count Discard the first COUNT lines read. - -t Remove a trailing newline from each line read. - -u fd Read lines from file descriptor FD instead of the standard input. - -C callback Evaluate CALLBACK each time QUANTUM lines are read. - -c quantum Specify the number of lines read between each call to CALLBACK. + -d delim Use DELIM to terminate lines, instead of newline + -n count Copy at most COUNT lines. If COUNT is 0, all lines are copied + -O origin Begin assigning to ARRAY at index ORIGIN. The default index is 0 + -s count Discard the first COUNT lines read + -t Remove a trailing DELIM from each line read (default newline) + -u fd Read lines from file descriptor FD instead of the standard input + -C callback Evaluate CALLBACK each time QUANTUM lines are read + -c quantum Specify the number of lines read between each call to + CALLBACK Arguments: - ARRAY Array variable name to use for file data. + ARRAY Array variable name to use for file data If -C is supplied without -c, the default quantum is 5000. When CALLBACK is evaluated, it is supplied the index of the next array @@ -101,6 +103,8 @@ static int run_callback __P((const char *, unsigned int, const char *)); #define MAPF_CLEARARRAY 0x01 #define MAPF_CHOP 0x02 +static int delim; + static int run_callback (callback, curindex, curline) const char *callback; @@ -129,21 +133,23 @@ run_callback (callback, curindex, curline) } static void -do_chop(line) - char * line; +do_chop(line, delim) + char *line; + unsigned char delim; { int length; length = strlen (line); - if (length && line[length-1] == '\n') + if (length && line[length-1] == delim) line[length-1] = '\0'; } static int -mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_name, flags) +mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_name, delim, flags) int fd; long line_count_goal, origin, nskip, callback_quantum; char *callback, *array_name; + int delim; int flags; { char *line; @@ -184,11 +190,14 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n unbuffered_read = 1; #endif + if (delim != '\n') + unbuffered_read = 1; + zreset (); /* Skip any lines at beginning of file? */ for (line_count = 0; line_count < nskip; line_count++) - if (zgetline (fd, &line, &line_length, unbuffered_read) < 0) + if (zgetline (fd, &line, &line_length, delim, unbuffered_read) < 0) break; line = 0; @@ -196,12 +205,12 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n /* Reset the buffer for bash own stream */ for (array_index = origin, line_count = 1; - zgetline (fd, &line, &line_length, unbuffered_read) != -1; + zgetline (fd, &line, &line_length, delim, unbuffered_read) != -1; array_index++) { /* Remove trailing newlines? */ if (flags & MAPF_CHOP) - do_chop (line); + do_chop (line, delim); /* Has a callback been registered and if so is it time to call it? */ if (callback && line_count && (line_count % callback_quantum) == 0) @@ -246,12 +255,16 @@ mapfile_builtin (list) flags = MAPF_CLEARARRAY; callback_quantum = DEFAULT_QUANTUM; callback = 0; + delim = '\n'; reset_internal_getopt (); - while ((opt = internal_getopt (list, "u:n:O:tC:c:s:")) != -1) + while ((opt = internal_getopt (list, "d:u:n:O:tC:c:s:")) != -1) { switch (opt) { + case 'd': + delim = *list_optarg; + break; case 'u': code = legal_number (list_optarg, &intval); if (code == 0 || intval < 0 || intval != (int)intval) @@ -317,6 +330,7 @@ mapfile_builtin (list) else nskip = intval; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -339,13 +353,13 @@ mapfile_builtin (list) else array_name = list->word->word; - if (legal_identifier (array_name) == 0 && valid_array_reference (array_name) == 0) + if (legal_identifier (array_name) == 0) { sh_invalidid (array_name); return (EXECUTION_FAILURE); } - return mapfile (fd, lines, origin, nskip, callback_quantum, callback, array_name, flags); + return mapfile (fd, lines, origin, nskip, callback_quantum, callback, array_name, delim, flags); } #else diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c index 15bb80f..4f51201 100644 --- a/builtins/mkbuiltins.c +++ b/builtins/mkbuiltins.c @@ -1,7 +1,7 @@ /* mkbuiltins.c - Create builtins.c, builtext.h, and builtdoc.c from a single source file called builtins.def. */ -/* Copyright (C) 1987-2011 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -71,7 +71,8 @@ extern char *strcpy (); /* Flag values that builtins can have. */ #define BUILTIN_FLAG_SPECIAL 0x01 #define BUILTIN_FLAG_ASSIGNMENT 0x02 -#define BUILTIN_FLAG_POSIX_BUILTIN 0x04 +#define BUILTIN_FLAG_LOCALVAR 0x04 +#define BUILTIN_FLAG_POSIX_BUILTIN 0x08 #define BASE_INDENT 4 @@ -159,6 +160,11 @@ char *assignment_builtins[] = (char *)NULL }; +char *localvar_builtins[] = +{ + "declare", "local", "typeset", (char *)NULL +}; + /* The builtin commands that are special to the POSIX search order. */ char *posix_builtins[] = { @@ -170,6 +176,7 @@ char *posix_builtins[] = /* Forward declarations. */ static int is_special_builtin (); static int is_assignment_builtin (); +static int is_localvar_builtin (); static int is_posix_builtin (); #if !defined (HAVE_RENAME) @@ -820,6 +827,8 @@ builtin_handler (self, defs, arg) new->flags |= BUILTIN_FLAG_SPECIAL; if (is_assignment_builtin (name)) new->flags |= BUILTIN_FLAG_ASSIGNMENT; + if (is_localvar_builtin (name)) + new->flags |= BUILTIN_FLAG_LOCALVAR; if (is_posix_builtin (name)) new->flags |= BUILTIN_FLAG_POSIX_BUILTIN; @@ -1102,7 +1111,7 @@ char *structfile_header[] = { "/* This file is manufactured by ./mkbuiltins, and should not be", " edited by hand. See the source to mkbuiltins for details. */", "", - "/* Copyright (C) 1987-2012 Free Software Foundation, Inc.", + "/* Copyright (C) 1987-2015 Free Software Foundation, Inc.", "", " This file is part of GNU Bash, the Bourne Again SHell.", "", @@ -1132,6 +1141,8 @@ char *structfile_header[] = { " the list of shell reserved control structures, like `if' and `while'.", " The end of the list is denoted with a NULL name field. */", "", + "/* TRANSLATORS: Please do not translate command names in descriptions */", + "", "#include \"../builtins.h\"", (char *)NULL }; @@ -1239,23 +1250,36 @@ write_builtins (defs, structfile, externfile) else fprintf (structfile, "(sh_builtin_func_t *)0x0, "); - fprintf (structfile, "%s%s%s%s, %s_doc,\n", + fprintf (structfile, "%s%s%s%s%s, %s_doc,\n", "BUILTIN_ENABLED | STATIC_BUILTIN", (builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "", (builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "", + (builtin->flags & BUILTIN_FLAG_LOCALVAR) ? " | LOCALVAR_BUILTIN" : "", (builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "", document_name (builtin)); - if (inhibit_functions) - fprintf - (structfile, " N_(\"%s\"), \"%s\" },\n", - builtin->shortdoc ? builtin->shortdoc : builtin->name, - document_name (builtin)); + /* Don't translate short document summaries that are identical + to command names */ + if (builtin->shortdoc && strcmp (builtin->name, builtin->shortdoc) == 0) + { + if (inhibit_functions) + fprintf (structfile, " \"%s\", \"%s\" },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name, + document_name (builtin)); + else + fprintf (structfile, " \"%s\", (char *)NULL },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name); + } else - fprintf - (structfile, " N_(\"%s\"), (char *)NULL },\n", - builtin->shortdoc ? builtin->shortdoc : builtin->name); - + { + if (inhibit_functions) + fprintf (structfile, " N_(\"%s\"), \"%s\" },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name, + document_name (builtin)); + else + fprintf (structfile, " N_(\"%s\"), (char *)NULL },\n", + builtin->shortdoc ? builtin->shortdoc : builtin->name); + } } if (structfile || separate_helpfiles) @@ -1607,6 +1631,13 @@ is_assignment_builtin (name) return (_find_in_table (name, assignment_builtins)); } +static int +is_localvar_builtin (name) + char *name; +{ + return (_find_in_table (name, localvar_builtins)); +} + static int is_posix_builtin (name) char *name; diff --git a/builtins/printf.def b/builtins/printf.def index 7f29126..d39a6d3 100644 --- a/builtins/printf.def +++ b/builtins/printf.def @@ -1,7 +1,7 @@ This file is printf.def, from which is created printf.c. It implements the builtin "printf" in Bash. -Copyright (C) 1997-2010 Free Software Foundation, Inc. +Copyright (C) 1997-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -40,8 +40,8 @@ printf interprets: %b expand backslash escape sequences in the corresponding argument %q quote the argument in a way that can be reused as shell input - %(fmt)T output the date-time string resulting from using FMT as a format - string for strftime(3) + %(fmt)T output the date-time string resulting from using FMT as a format + string for strftime(3) The format is re-used as necessary to consume all of the arguments. If there are fewer arguments than the format requires, extra format @@ -116,6 +116,7 @@ extern int errno; vbadd (b, 1); \ else \ putchar (c); \ + QUIT; \ } while (0) #define PF(f, func) \ @@ -131,6 +132,7 @@ extern int errno; else \ nw = vflag ? vbprintf (f, func) : printf (f, func); \ tw += nw; \ + QUIT; \ if (ferror (stdout)) \ { \ sh_wrerror (); \ @@ -143,6 +145,7 @@ extern int errno; #define PRETURN(value) \ do \ { \ + QUIT; \ if (vflag) \ { \ bind_printf_variable (vname, vbuf, 0); \ @@ -162,9 +165,9 @@ extern int errno; } \ else if (vbuf) \ vbuf[0] = 0; \ - terminate_immediately--; \ if (ferror (stdout) == 0) \ fflush (stdout); \ + QUIT; \ if (ferror (stdout)) \ { \ sh_wrerror (); \ @@ -255,7 +258,7 @@ printf_builtin (list) case 'v': vname = list_optarg; #if defined (ARRAY_VARS) - if (legal_identifier (vname) || valid_array_reference (vname)) + if (legal_identifier (vname) || valid_array_reference (vname, 0)) #else if (legal_identifier (vname)) #endif @@ -273,6 +276,7 @@ printf_builtin (list) return (EX_USAGE); } break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -286,6 +290,14 @@ printf_builtin (list) return (EX_USAGE); } + /* Allow printf -v var "" to act like var="" */ + if (vflag && list->word->word && list->word->word[0] == '\0') + { + bind_printf_variable (vname, "", 0); + stupidly_hack_special_variables (vname); + return (EXECUTION_SUCCESS); + } + if (list->word->word == 0 || list->word->word[0] == '\0') return (EXECUTION_SUCCESS); @@ -298,8 +310,6 @@ printf_builtin (list) if (format == 0 || *format == 0) return (EXECUTION_SUCCESS); - terminate_immediately++; - /* Basic algorithm is to scan the format string for conversion specifications -- once one is found, find out if the field width or precision is a '*'; if it is, gather up value. Note, @@ -409,6 +419,7 @@ printf_builtin (list) modstart[0] = convch; modstart[1] = '\0'; + QUIT; switch(convch) { case 'c': @@ -759,6 +770,8 @@ printstr (fmt, string, len, fieldwidth, precision) /* Error if precision > INT_MAX here? */ pr = (mpr < 0 || mpr > INT_MAX) ? INT_MAX : mpr; } + else + pr = 0; /* "a null digit string is treated as zero" */ } #if 0 @@ -1045,7 +1058,7 @@ vbprintf (format, va_alist) #ifdef DEBUG if (strlen (vbuf) != vblen) - internal_error ("printf:vbadd: vblen (%d) != strlen (vbuf) (%d)", vblen, (int)strlen (vbuf)); + internal_error ("printf:vbprintf: vblen (%d) != strlen (vbuf) (%d)", vblen, (int)strlen (vbuf)); #endif return (blen); @@ -1255,7 +1268,7 @@ bind_printf_variable (name, value, flags) SHELL_VAR *v; #if defined (ARRAY_VARS) - if (valid_array_reference (name) == 0) + if (valid_array_reference (name, 0) == 0) v = bind_variable (name, value, flags); else v = assign_array_element (name, value, flags); diff --git a/builtins/pushd.def b/builtins/pushd.def index 9c6548f..82653c4 100644 --- a/builtins/pushd.def +++ b/builtins/pushd.def @@ -1,7 +1,7 @@ This file is pushd.def, from which is created pushd.c. It implements the builtins "pushd", "popd", and "dirs" in Bash. -Copyright (C) 1987-2013 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -32,19 +32,19 @@ directory. With no arguments, exchanges the top two directories. Options: -n Suppresses the normal change of directory when adding - directories to the stack, so only the stack is manipulated. + directories to the stack, so only the stack is manipulated. Arguments: +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. + 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. + 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. + new current working directory. The `dirs' builtin displays the directory stack. @@ -64,16 +64,16 @@ the top directory from the stack, and changes to the new top directory. Options: -n Suppresses the normal change of directory when removing - directories from the stack, so only the stack is manipulated. + directories from the stack, so only the stack is manipulated. Arguments: +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. + 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. + shown by `dirs', starting with zero. For example: `popd -0' + removes the last directory, `popd -1' the next to last. The `dirs' builtin displays the directory stack. @@ -95,17 +95,19 @@ back up through the list with the `popd' command. Options: -c clear the directory stack by deleting all of the elements -l do not print tilde-prefixed versions of directories relative - to your home directory + to your home directory -p print the directory stack with one entry per line -v print the directory stack with one entry per line prefixed - with its position in the stack + with its position in the stack Arguments: - +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 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. + -N Displays the Nth entry counting from the right of the list + shown by dirs when invoked without options, starting with + zero. Exit Status: Returns success unless an invalid option is supplied or an error occurs. @@ -178,6 +180,8 @@ pushd_builtin (list) char direction; orig_list = list; + + CHECK_HELPOPT (list); if (list && list->word && ISOPTION (list->word->word, '-')) { list = list->next; @@ -321,6 +325,8 @@ popd_builtin (list) char direction; char *which_word; + CHECK_HELPOPT (list); + which_word = (char *)NULL; for (flags = 0, which = 0, direction = '+'; list; list = list->next) { @@ -402,6 +408,7 @@ dirs_builtin (list) intmax_t i; char *temp, *w; + CHECK_HELPOPT (list); for (flags = vflag = index_flag = 0, desired_index = -1, w = ""; list; list = list->next) { if (ISOPTION (list->word->word, 'l')) diff --git a/builtins/read.def b/builtins/read.def index 56c2301..48fda33 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -1,7 +1,7 @@ This file is read.def, from which is created read.c. It implements the builtin "read" in Bash. -Copyright (C) 1987-2012 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -39,25 +39,27 @@ Options: variable ARRAY, starting at zero -d delim continue until the first character of DELIM is read, rather than newline - -e use Readline to obtain the line in an interactive shell - -i text Use TEXT as the initial text for Readline + -e use Readline to obtain the line in an interactive shell + -i text use TEXT as the initial text for Readline -n nchars return after reading NCHARS characters rather than waiting - for a newline, but honor a delimiter if fewer than NCHARS - characters are read before the delimiter + for a newline, but honor a delimiter if fewer than + NCHARS characters are read before the delimiter -N nchars return only after reading exactly NCHARS characters, unless - EOF is encountered or read times out, ignoring any delimiter + EOF is encountered or read times out, ignoring any + delimiter -p prompt output the string PROMPT without a trailing newline before attempting to read - -r do not allow backslashes to escape any characters - -s do not echo input coming from a terminal - -t timeout time out and return failure if a complete line of input is - not read within TIMEOUT seconds. The value of the TMOUT - variable is the default timeout. TIMEOUT may be a - fractional number. If TIMEOUT is 0, read returns immediately, - without trying to read any data, returning success only if - input is available on the specified file descriptor. The - exit status is greater than 128 if the timeout is exceeded - -u fd read from file descriptor FD instead of the standard input + -r do not allow backslashes to escape any characters + -s do not echo input coming from a terminal + -t timeout time out and return failure if a complete line of + input is not read within TIMEOUT seconds. The value of the + TMOUT variable is the default timeout. TIMEOUT may be a + fractional number. If TIMEOUT is 0, read returns + immediately, without trying to read any data, returning + success only if input is available on the specified + file descriptor. The exit status is greater than 128 + if the timeout is exceeded + -u fd read from file descriptor FD instead of the standard input Exit Status: The return code is zero, unless end-of-file is encountered, read times out @@ -163,8 +165,9 @@ sigalrm (s) static void reset_alarm () { - set_signal_handler (SIGALRM, old_alrm); + /* Cancel alarm before restoring signal handler. */ falarm (0, 0); + set_signal_handler (SIGALRM, old_alrm); } /* Read the value of the shell variables whose names follow. @@ -314,6 +317,7 @@ read_builtin (list) case 'd': delim = *list_optarg; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -333,7 +337,7 @@ read_builtin (list) /* Convenience: check early whether or not the first of possibly several variable names is a valid identifier, and bail early if so. */ #if defined (ARRAY_VARS) - if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word) == 0) + if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, 0) == 0) #else if (list && legal_identifier (list->word->word) == 0) #endif @@ -793,7 +797,10 @@ assign_vars: } else var = bind_variable ("REPLY", input_string, 0); - VUNSETATTR (var, att_invisible); + if (var == 0 || readonly_p (var) || noassign_p (var)) + retval = EXECUTION_FAILURE; + else + VUNSETATTR (var, att_invisible); xfree (input_string); return (retval); @@ -812,7 +819,7 @@ assign_vars: { varname = list->word->word; #if defined (ARRAY_VARS) - if (legal_identifier (varname) == 0 && valid_array_reference (varname) == 0) + if (legal_identifier (varname) == 0 && valid_array_reference (varname, 0) == 0) #else if (legal_identifier (varname) == 0) #endif @@ -860,7 +867,7 @@ assign_vars: /* Now assign the rest of the line to the last variable argument. */ #if defined (ARRAY_VARS) - if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word) == 0) + if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, 0) == 0) #else if (legal_identifier (list->word->word) == 0) #endif @@ -923,7 +930,7 @@ bind_read_variable (name, value) SHELL_VAR *v; #if defined (ARRAY_VARS) - if (valid_array_reference (name) == 0) + if (valid_array_reference (name, 0) == 0) v = bind_variable (name, value, 0); else v = assign_array_element (name, value, 0); diff --git a/builtins/reserved.def b/builtins/reserved.def index 2478f16..7f3c236 100644 --- a/builtins/reserved.def +++ b/builtins/reserved.def @@ -145,7 +145,7 @@ to indices 0 and 1 of an array variable NAME in the executing shell. The default NAME is "COPROC". Exit Status: -Returns the exit status of COMMAND. +The coproc command returns an exit status of 0. $END $BUILTIN function diff --git a/builtins/return.def b/builtins/return.def index e6674df..4d9fef1 100644 --- a/builtins/return.def +++ b/builtins/return.def @@ -1,7 +1,7 @@ This file is return.def, from which is created return.c. It implements the builtin "return" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -60,16 +60,12 @@ int return_builtin (list) WORD_LIST *list; { -#if 0 - if (no_options (list)) - return (EX_USAGE); - list = loptend; /* skip over possible `--' */ -#endif + CHECK_HELPOPT (list); return_catch_value = get_exitstat (list); if (return_catch_flag) - longjmp (return_catch, 1); + sh_longjmp (return_catch, 1); else { builtin_error (_("can only `return' from a function or sourced script")); diff --git a/builtins/set.def b/builtins/set.def index 9fbbca1..8122361 100644 --- a/builtins/set.def +++ b/builtins/set.def @@ -1,7 +1,7 @@ This file is set.def, from which is created set.c. It implements the "set" and "unset" builtins in Bash. -Copyright (C) 1987-2012 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -141,7 +141,7 @@ Options: #endif /* BANG_HISTORY */ -P If set, do not resolve symbolic links when executing commands such as cd which change the current directory. - -T If set, the DEBUG trap is inherited by shell functions. + -T If set, the DEBUG and RETURN traps are inherited by shell functions. -- Assign any remaining arguments to the positional parameters. If there are no remaining arguments, the positional parameters are unset. @@ -179,9 +179,13 @@ static int bash_set_history __P((int, char *)); static const char * const on = "on"; static const char * const off = "off"; +static int previous_option_value; + /* A struct used to match long options for set -o to the corresponding option letter or internal variable. The functions can be called to - dynamically generate values. */ + dynamically generate values. If you add a new variable name here + that doesn't have a corresponding single-character option letter, make + sure to set the value appropriately in reset_shell_options. */ const struct { char *name; int letter; @@ -322,17 +326,52 @@ get_minus_o_opts () return ret; } +char * +get_current_options () +{ + char *temp; + int i; + + temp = (char *)xmalloc (1 + N_O_OPTIONS); + for (i = 0; o_options[i].name; i++) + { + if (o_options[i].letter) + temp[i] = *(find_flag (o_options[i].letter)); + else + temp[i] = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name); + } + temp[i] = '\0'; + return (temp); +} + +void +set_current_options (bitmap) + const char *bitmap; +{ + int i; + + if (bitmap == 0) + return; + for (i = 0; o_options[i].name; i++) + { + if (o_options[i].letter) + change_flag (o_options[i].letter, bitmap[i] ? FLAG_ON : FLAG_OFF); + else + SET_BINARY_O_OPTION_VALUE (i, bitmap[i] ? FLAG_ON : FLAG_OFF, o_options[i].name); + } +} + static int set_ignoreeof (on_or_off, option_name) int on_or_off; char *option_name; { ignoreeof = on_or_off == FLAG_ON; - unbind_variable ("ignoreeof"); + unbind_variable_noref ("ignoreeof"); if (ignoreeof) bind_variable ("IGNOREEOF", "10", 0); else - unbind_variable ("IGNOREEOF"); + unbind_variable_noref ("IGNOREEOF"); sv_ignoreeof ("IGNOREEOF"); return 0; } @@ -344,7 +383,7 @@ set_posix_mode (on_or_off, option_name) { posixly_correct = on_or_off == FLAG_ON; if (posixly_correct == 0) - unbind_variable ("POSIXLY_CORRECT"); + unbind_variable_noref ("POSIXLY_CORRECT"); else bind_variable ("POSIXLY_CORRECT", "y", 0); sv_strict_posix ("POSIXLY_CORRECT"); @@ -425,12 +464,13 @@ set_minus_o_option (on_or_off, option_name) { if (o_options[i].letter == 0) { + previous_option_value = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name); SET_BINARY_O_OPTION_VALUE (i, on_or_off, option_name); return (EXECUTION_SUCCESS); } else { - if (change_flag (o_options[i].letter, on_or_off) == FLAG_ERROR) + if ((previous_option_value = change_flag (o_options[i].letter, on_or_off)) == FLAG_ERROR) { sh_invalidoptname (option_name); return (EXECUTION_FAILURE); @@ -585,10 +625,18 @@ initialize_shell_options (no_shellopts) void reset_shell_options () { + pipefail_opt = 0; + ignoreeof = 0; + +#if defined (STRICT_POSIX) + posixly_correct = 1; +#else + posixly_correct = 0; +#endif #if defined (HISTORY) + dont_save_function_defs = 0; remember_on_history = enable_history_list = 1; #endif - ignoreeof = 0; } /* Set some flags from the word values in the input list. If LIST is empty, @@ -615,6 +663,14 @@ set_builtin (list) { switch (flag_name) { + case 'i': /* don't allow set -i */ + s[0] = list_opttype; + s[1] = 'i'; + s[2] = '\0'; + sh_invalidopt (s); + builtin_usage (); + return (EX_USAGE); + CASE_HELPOPT; case '?': builtin_usage (); return (list_optopt == '?' ? EXECUTION_SUCCESS : EX_USAGE); @@ -733,7 +789,7 @@ Options: -f treat each NAME as a shell function -v treat each NAME as a shell variable -n treat each NAME as a name reference and unset the variable itself - rather than the variable it references + rather than the variable it references Without options, unset first tries to unset a variable, and if that fails, tries to unset a function. @@ -752,7 +808,7 @@ unset_builtin (list) { int unset_function, unset_variable, unset_array, opt, nameref, any_failed; int global_unset_func, global_unset_var; - char *name; + char *name, *tname; unset_function = unset_variable = unset_array = nameref = any_failed = 0; global_unset_func = global_unset_var = 0; @@ -771,6 +827,7 @@ unset_builtin (list) case 'n': nameref = 1; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -802,7 +859,7 @@ unset_builtin (list) #if defined (ARRAY_VARS) unset_array = 0; - if (!unset_function && valid_array_reference (name)) + if (!unset_function && nameref == 0 && valid_array_reference (name, 0)) { t = strchr (name, '['); *t++ = '\0'; @@ -823,7 +880,7 @@ unset_builtin (list) /* Only search for functions here if -f supplied. */ var = unset_function ? find_function (name) - : (nameref ? find_variable_last_nameref (name) : find_variable (name)); + : (nameref ? find_variable_last_nameref (name, 0) : find_variable (name)); /* Some variables (but not functions yet) cannot be unset, period. */ if (var && unset_function == 0 && non_unsettable_p (var)) @@ -832,11 +889,15 @@ unset_builtin (list) NEXT_VARIABLE (); } + /* if we have a nameref we want to use it */ + if (var && unset_function == 0 && nameref == 0 && STREQ (name, name_cell(var)) == 0) + name = name_cell (var); + /* Posix.2 says try variables first, then functions. If we would find a function after unsuccessfully searching for a variable, note that we're acting on a function now as if -f were supplied. The readonly check below takes care of it. */ - if (var == 0 && unset_variable == 0 && unset_function == 0) + if (var == 0 && nameref == 0 && unset_variable == 0 && unset_function == 0) { if (var = find_function (name)) unset_function = 1; @@ -854,29 +915,52 @@ unset_builtin (list) #if defined (ARRAY_VARS) if (var && unset_array) { - if (array_p (var) == 0 && assoc_p (var) == 0) + /* Let unbind_array_element decide what to do with non-array vars */ + tem = unbind_array_element (var, t); + if (tem == -2 && array_p (var) == 0 && assoc_p (var) == 0) { builtin_error (_("%s: not an array variable"), var->name); NEXT_VARIABLE (); } - else - { - tem = unbind_array_element (var, t); - if (tem == -1) - any_failed++; - } + else if (tem < 0) + any_failed++; } else #endif /* ARRAY_VARS */ - tem = unset_function ? unbind_func (name) : (nameref ? unbind_nameref (name) : unbind_variable (name)); + /* If we're trying to unset a nameref variable whose value isn't a set + variable, make sure we still try to unset the nameref's value */ + if (var == 0 && nameref == 0 && unset_function == 0) + { + var = find_variable_last_nameref (name, 0); + if (var && nameref_p (var)) + { +#if defined (ARRAY_VARS) + if (valid_array_reference (nameref_cell (var), 0)) + { + tname = savestring (nameref_cell (var)); + if (var = array_variable_part (tname, &t, 0)) + tem = unbind_array_element (var, t); + free (tname); + } + else +#endif + tem = unbind_variable (nameref_cell (var)); + } + else + tem = unbind_variable (name); + } + else + tem = unset_function ? unbind_func (name) : (nameref ? unbind_nameref (name) : unbind_variable (name)); /* This is what Posix.2 says: ``If neither -f nor -v is specified, the name refers to a variable; if a variable by that name does not exist, a function by that name, if any, shall be unset.'' */ - if (tem == -1 && unset_function == 0 && unset_variable == 0) + if (tem == -1 && nameref == 0 && unset_function == 0 && unset_variable == 0) tem = unbind_func (name); + name = list->word->word; /* reset above for namerefs */ + /* SUSv3, POSIX.1-2001 say: ``Unsetting a variable or function that was not previously set shall not be considered an error.'' */ diff --git a/builtins/setattr.def b/builtins/setattr.def index 3be3189..8f29e11 100644 --- a/builtins/setattr.def +++ b/builtins/setattr.def @@ -1,7 +1,7 @@ This file is setattr.def, from which is created setattr.c. It implements the builtins "export" and "readonly", in Bash. -Copyright (C) 1987-2012 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -34,6 +34,7 @@ $PRODUCES setattr.c #include "../bashintl.h" #include "../shell.h" +#include "../flags.h" #include "common.h" #include "bashgetopt.h" @@ -93,8 +94,8 @@ Options: -a refer to indexed array variables -A refer to associative array variables -f refer to shell functions - -p display a list of all readonly variables or functions, depending on - whether or not the -f option is given + -p display a list of all readonly variables or functions, + depending on whether or not the -f option is given An argument of `--' disables further option processing. @@ -133,6 +134,8 @@ set_or_show_attributes (list, attribute, nodefs) #if defined (ARRAY_VARS) WORD_LIST *nlist, *tlist; WORD_DESC *w; + char optw[8]; + int opti; #endif functions_only = arrays_only = assoc_only = 0; @@ -159,6 +162,7 @@ set_or_show_attributes (list, attribute, nodefs) #endif case 'p': break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -187,6 +191,11 @@ set_or_show_attributes (list, attribute, nodefs) builtin_error (_("%s: not a function"), name); any_failed++; } + else if ((attribute & att_exported) && undo == 0 && exportable_function_name (name) == 0) + { + builtin_error (_("%s: cannot export"), name); + any_failed++; + } else SETVARATTR (var, attribute, undo); @@ -231,8 +240,24 @@ set_or_show_attributes (list, attribute, nodefs) { tlist = list->next; list->next = (WORD_LIST *)NULL; - w = arrays_only ? make_word ("-ra") : make_word ("-rA"); + /* Add -g to avoid readonly/export creating local variables: + only local/declare/typeset create local variables */ + opti = 0; + optw[opti++] = '-'; + optw[opti++] = 'g'; + if (attribute & att_readonly) + optw[opti++] = 'r'; + if (attribute & att_exported) + optw[opti++] = 'x'; + if (arrays_only) + optw[opti++] = 'a'; + else + optw[opti++] = 'A'; + optw[opti] = '\0'; + + w = make_word (optw); nlist = make_word_list (w, list); + opt = declare_builtin (nlist); if (opt != EXECUTION_SUCCESS) assign_error++; @@ -296,6 +321,12 @@ set_or_show_attributes (list, attribute, nodefs) else if (assoc_only && assoc_p (var) == 0) continue; #endif + + /* If we imported a variable that's not a valid identifier, don't + show it in any lists. */ + if ((var->attributes & (att_invisible|att_imported)) == (att_invisible|att_imported)) + continue; + if ((var->attributes & attribute)) { show_var_attributes (var, READONLY_OR_EXPORT, nodefs); @@ -336,18 +367,12 @@ show_all_var_attributes (v, nodefs) return (any_failed == 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE); } -/* Show the attributes for shell variable VAR. If NODEFS is non-zero, - don't show function definitions along with the name. If PATTR is - non-zero, it indicates we're being called from `export' or `readonly'. - In POSIX mode, this prints the name of the calling builtin (`export' - or `readonly') instead of `declare', and doesn't print function defs - when called by `export' or `readonly'. */ int -show_var_attributes (var, pattr, nodefs) +var_attribute_string (var, pattr, flags) SHELL_VAR *var; - int pattr, nodefs; + int pattr; + char *flags; /* filled in with attributes */ { - char flags[16], *x; int i; i = 0; @@ -405,6 +430,24 @@ show_var_attributes (var, pattr, nodefs) } flags[i] = '\0'; + return i; +} + +/* Show the attributes for shell variable VAR. If NODEFS is non-zero, + don't show function definitions along with the name. If PATTR is + non-zero, it indicates we're being called from `export' or `readonly'. + In POSIX mode, this prints the name of the calling builtin (`export' + or `readonly') instead of `declare', and doesn't print function defs + when called by `export' or `readonly'. */ +int +show_var_attributes (var, pattr, nodefs) + SHELL_VAR *var; + int pattr, nodefs; +{ + char flags[MAX_ATTRIBUTES], *x; + int i; + + i = var_attribute_string (var, pattr, flags); /* If we're printing functions with definitions, print the function def first, then the attributes, instead of printing output that can't be @@ -425,10 +468,12 @@ show_var_attributes (var, pattr, nodefs) printf ("%s ", this_command_name); #if defined (ARRAY_VARS) - if (array_p (var)) - print_array_assignment (var, 1); + if (invisible_p (var) && (array_p (var) || assoc_p (var))) + printf ("%s\n", var->name); + else if (array_p (var)) + print_array_assignment (var, 0); else if (assoc_p (var)) - print_assoc_assignment (var, 1); + print_assoc_assignment (var, 0); else #endif /* force `readonly' and `export' to not print out function definitions @@ -461,7 +506,7 @@ show_name_attributes (name, nodefs) var = find_variable_noref (name); #endif - if (var && invisible_p (var) == 0) + if (var /* && invisible_p (var) == 0 */) /* XXX bash-4.4/bash-5.0 */ { show_var_attributes (var, READONLY_OR_EXPORT, nodefs); return (0); @@ -493,8 +538,8 @@ set_var_attribute (name, attribute, undo) char *name; int attribute, undo; { - SHELL_VAR *var, *tv, *v; - char *tvalue; + SHELL_VAR *var, *tv, *v, *refvar; + char *tvalue, *refname; if (undo) var = find_variable (name); @@ -509,6 +554,11 @@ set_var_attribute (name, attribute, undo) tvalue = var_isset (tv) ? savestring (value_cell (tv)) : savestring (""); var = bind_variable (tv->name, tvalue, 0); + if (var == 0) + { + free (tvalue); + return; /* XXX - no error message here */ + } var->attributes |= tv->attributes & ~att_tempvar; /* This avoids an error message when propagating a read-only var later on. */ @@ -533,10 +583,23 @@ set_var_attribute (name, attribute, undo) else { var = find_variable_notempenv (name); + if (var == 0) + { + /* We might have a nameref pointing to something that we can't + resolve to a shell variable. If we do, skip it. We do a little + checking just so we can print an error message. */ + refvar = find_variable_nameref_for_create (name, 0); + if (refvar == INVALID_NAMEREF_VALUE) + return; + /* Otherwise we probably have a nameref pointing to a variable + that hasn't been created yet. bind_variable will take care + of that. */ + } if (var == 0) { var = bind_variable (name, (char *)NULL, 0); - VSETATTR (var, att_invisible); + if (var && no_invisible_vars == 0) + VSETATTR (var, att_invisible); } else if (var->context != 0) VSETATTR (var, att_propagate); diff --git a/builtins/shift.def b/builtins/shift.def index 3213086..589e329 100644 --- a/builtins/shift.def +++ b/builtins/shift.def @@ -61,6 +61,8 @@ shift_builtin (list) register int count; WORD_LIST *temp; + CHECK_HELPOPT (list); + if (get_numeric_arg (list, 0, ×) == 0) return (EXECUTION_FAILURE); @@ -97,5 +99,8 @@ shift_builtin (list) else dollar_vars[9] = (char *)NULL; } + + invalidate_cached_quoted_dollar_at (); + return (EXECUTION_SUCCESS); } diff --git a/builtins/shopt.def b/builtins/shopt.def index f0f9d99..2febb7e 100644 --- a/builtins/shopt.def +++ b/builtins/shopt.def @@ -1,7 +1,7 @@ This file is shopt.def, from which is created shopt.c. It implements the Bash `shopt' builtin. -Copyright (C) 1994-2012 Free Software Foundation, Inc. +Copyright (C) 1994-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -90,6 +90,7 @@ extern int autocd; extern int glob_star; extern int glob_asciirange; extern int lastpipe_opt; +extern int inherit_errexit; #if defined (EXTENDED_GLOB) extern int extended_glob; @@ -131,15 +132,21 @@ static int set_restricted_shell __P((char *, int)); static int shopt_set_complete_direxpand __P((char *, int)); #endif +static int shopt_set_debug_mode __P((char *, int)); + static int shopt_login_shell; static int shopt_compat31; static int shopt_compat32; static int shopt_compat40; static int shopt_compat41; static int shopt_compat42; +static int shopt_compat43; typedef int shopt_set_func_t __P((char *, int)); +/* If you add a new variable name here, make sure to set the default value + appropriately in reset_shopt_options. */ + static struct { char *name; int *value; @@ -161,6 +168,7 @@ static struct { { "compat40", &shopt_compat40, set_compatibility_level }, { "compat41", &shopt_compat41, set_compatibility_level }, { "compat42", &shopt_compat42, set_compatibility_level }, + { "compat43", &shopt_compat43, set_compatibility_level }, #if defined (READLINE) { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, { "direxpand", &dircomplete_expand, shopt_set_complete_direxpand }, @@ -170,7 +178,7 @@ static struct { { "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL }, { "expand_aliases", &expand_aliases, (shopt_set_func_t *)NULL }, #if defined (DEBUGGER) - { "extdebug", &debugging_mode, (shopt_set_func_t *)NULL }, + { "extdebug", &debugging_mode, shopt_set_debug_mode }, #endif #if defined (EXTENDED_GLOB) { "extglob", &extended_glob, (shopt_set_func_t *)NULL }, @@ -180,8 +188,8 @@ static struct { #if defined (READLINE) { "force_fignore", &force_fignore, (shopt_set_func_t *)NULL }, #endif - { "globstar", &glob_star, (shopt_set_func_t *)NULL }, { "globasciiranges", &glob_asciirange, (shopt_set_func_t *)NULL }, + { "globstar", &glob_star, (shopt_set_func_t *)NULL }, { "gnu_errfmt", &gnu_error_format, (shopt_set_func_t *)NULL }, #if defined (HISTORY) { "histappend", &force_append_history, (shopt_set_func_t *)NULL }, @@ -192,6 +200,7 @@ static struct { { "hostcomplete", &perform_hostname_completion, shopt_enable_hostname_completion }, #endif { "huponexit", &hup_on_exit, (shopt_set_func_t *)NULL }, + { "inherit_errexit", &inherit_errexit, (shopt_set_func_t *)NULL }, { "interactive_comments", &interactive_comments, set_shellopts_after_change }, { "lastpipe", &lastpipe_opt, (shopt_set_func_t *)NULL }, #if defined (HISTORY) @@ -267,6 +276,7 @@ shopt_builtin (list) case 'p': flags |= PFLAG; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -297,32 +307,67 @@ shopt_builtin (list) } /* Reset the options managed by `shopt' to the values they would have at - shell startup. */ + shell startup. Variables from shopt_vars. */ void reset_shopt_options () { + autocd = cdable_vars = cdspelling = 0; + check_hashed_filenames = CHECKHASH_DEFAULT; + check_window_size = CHECKWINSIZE_DEFAULT; allow_null_glob_expansion = glob_dot_filenames = 0; - cdable_vars = mail_warning = 0; - no_exit_on_failed_exec = print_shift_error = 0; - check_hashed_filenames = cdspelling = expand_aliases = 0; - + no_exit_on_failed_exec = 0; + expand_aliases = 0; + extended_quote = 1; + fail_glob_expansion = 0; + glob_asciirange = GLOBASCII_DEFAULT; + glob_star = 0; + gnu_error_format = 0; + hup_on_exit = 0; + inherit_errexit = 0; + interactive_comments = 1; + lastpipe_opt = 0; + mail_warning = 0; + glob_ignore_case = match_ignore_case = 0; + print_shift_error = 0; source_uses_path = promptvars = 1; - check_window_size = CHECKWINSIZE_DEFAULT; +#if defined (JOB_CONTROL) + check_jobs_at_exit = 0; +#endif #if defined (EXTENDED_GLOB) - extended_glob = 0; + extended_glob = EXTGLOB_DEFAULT; #endif #if defined (HISTORY) - literal_history = force_append_history = 0; + literal_history = 0; + force_append_history = 0; command_oriented_history = 1; #endif #if defined (READLINE) + complete_fullquote = 1; + force_fignore = 1; hist_verify = history_reediting = 0; perform_hostname_completion = 1; +# if DIRCOMPLETE_EXPAND_DEFAULT + dircomplete_expand = 1; +# else + dircomplete_expand = 0; #endif + dircomplete_spelling = 0; + no_empty_command_completion = 0; +#endif + +#if defined (PROGRAMMABLE_COMPLETION) + prog_completion_enabled = 1; +#endif + +#if defined (DEFAULT_ECHO_TO_XPG) || defined (STRICT_POSIX) + xpg_echo = 1; +#else + xpg_echo = 0; +#endif /* DEFAULT_ECHO_TO_XPG */ shopt_login_shell = login_shell; } @@ -354,6 +399,7 @@ toggle_shopts (mode, list, quiet) { WORD_LIST *l; int ind, rval; + SHELL_VAR *v; for (l = list, rval = EXECUTION_SUCCESS; l; l = l->next) { @@ -371,7 +417,9 @@ toggle_shopts (mode, list, quiet) } } - set_bashopts (); + /* Don't set $BASHOPTS here if it hasn't already been initialized */ + if (v = find_variable ("BASHOPTS")) + set_bashopts (); return (rval); } @@ -516,6 +564,18 @@ set_shellopts_after_change (option_name, mode) return (0); } +static int +shopt_set_debug_mode (option_name, mode) + char *option_name; + int mode; +{ +#if defined (DEBUGGER) + error_trace_mode = function_trace_mode = debugging_mode; + set_shellopts (); +#endif + return (0); +} + static int shopt_enable_hostname_completion (option_name, mode) char *option_name; @@ -537,7 +597,7 @@ set_compatibility_level (option_name, mode) if (mode) { shopt_compat31 = shopt_compat32 = 0; - shopt_compat40 = shopt_compat41 = shopt_compat42 = 0; + shopt_compat40 = shopt_compat41 = shopt_compat42 = shopt_compat43 = 0; ind = find_shopt (option_name); *shopt_vars[ind].value = mode; } @@ -553,6 +613,8 @@ set_compatibility_level (option_name, mode) shell_compatibility_level = 41; else if (shopt_compat42) shell_compatibility_level = 42; + else if (shopt_compat43) + shell_compatibility_level = 43; else shell_compatibility_level = DEFAULT_COMPAT_LEVEL; @@ -564,11 +626,14 @@ set_compatibility_level (option_name, mode) void set_compatibility_opts () { - shopt_compat31 = shopt_compat32 = shopt_compat40 = shopt_compat41 = shopt_compat42 = 0; + shopt_compat31 = shopt_compat32 = 0; + shopt_compat40 = shopt_compat41 = shopt_compat42 = shopt_compat43 = 0; switch (shell_compatibility_level) { case DEFAULT_COMPAT_LEVEL: break; + case 43: + shopt_compat43 = 1; break; case 42: shopt_compat42 = 1; break; case 41: @@ -745,7 +810,11 @@ parse_bashopts (value) { ind = find_shopt (vname); if (ind >= 0) - *shopt_vars[ind].value = 1; + { + *shopt_vars[ind].value = 1; + if (shopt_vars[ind].set_func) + (*shopt_vars[ind].set_func) (shopt_vars[ind].name, 1); + } free (vname); } } diff --git a/builtins/source.def b/builtins/source.def index 71908b8..b3df1f9 100644 --- a/builtins/source.def +++ b/builtins/source.def @@ -1,7 +1,7 @@ This file is source.def, from which is created source.c. It implements the builtins "." and "source" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -108,6 +108,7 @@ maybe_pop_dollar_vars () if (debugging_mode) pop_args (); /* restore BASH_ARGC and BASH_ARGV */ set_dollar_vars_unchanged (); + invalidate_cached_quoted_dollar_at (); /* just invalidate to be safe */ } /* Read and execute commands from the file passed as argument. Guess what. @@ -119,7 +120,7 @@ source_builtin (list) WORD_LIST *list; { int result; - char *filename, *debug_trap; + char *filename, *debug_trap, *x; if (no_options (list)) return (EX_USAGE); @@ -152,7 +153,10 @@ source_builtin (list) { if (source_searches_cwd == 0) { - builtin_error (_("%s: file not found"), list->word->word); + x = printable_filename (list->word->word, 0); + builtin_error (_("%s: file not found"), x); + if (x != list->word->word) + free (x); if (posixly_correct && interactive_shell == 0 && executing_command_builtin == 0) { last_command_exit_value = 1; @@ -185,7 +189,7 @@ source_builtin (list) { debug_trap = savestring (debug_trap); add_unwind_protect (xfree, debug_trap); - add_unwind_protect (set_debug_trap, debug_trap); + add_unwind_protect (maybe_set_debug_trap, debug_trap); restore_default_signal (DEBUG_TRAP); } diff --git a/builtins/suspend.def b/builtins/suspend.def index 8711e68..db28fee 100644 --- a/builtins/suspend.def +++ b/builtins/suspend.def @@ -1,7 +1,7 @@ This file is suspend.def, from which is created suspend.c. It implements the builtin "suspend" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -89,6 +89,7 @@ suspend_builtin (list) case 'f': force++; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/builtins/test.def b/builtins/test.def index f144400..d6c89bf 100644 --- a/builtins/test.def +++ b/builtins/test.def @@ -1,7 +1,7 @@ This file is test.def, from which is created test.c. It implements the builtin "test" in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -83,8 +83,9 @@ String operators: Other operators: -o OPTION True if the shell option OPTION is enabled. - -v VAR True if the shell variable VAR is set - -R VAR True if the shell variable VAR is set and is a name reference. + -v VAR True if the shell variable VAR is set. + -R VAR True if the shell variable VAR is set and is a name + reference. ! EXPR True if expr is false. EXPR1 -a EXPR2 True if both expr1 AND expr2 are true. EXPR1 -o EXPR2 True if either expr1 OR expr2 is true. diff --git a/builtins/trap.def b/builtins/trap.def index 2119f5b..57d9b52 100644 --- a/builtins/trap.def +++ b/builtins/trap.def @@ -1,7 +1,7 @@ This file is trap.def, from which is created trap.c. It implements the builtin "trap" in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -86,7 +86,7 @@ static int display_traps __P((WORD_LIST *)); trap -p [sigspec ...] trap [--] - Set things up so that ARG is executed when SIGNAL(s) N is recieved. + Set things up so that ARG is executed when SIGNAL(s) N is received. If ARG is the empty string, then ignore the SIGNAL(s). If there is no ARG, then set the trap for SIGNAL(s) to its original value. Just plain "trap" means to print out the list of commands associated with @@ -119,6 +119,7 @@ trap_builtin (list) case 'p': display++; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); diff --git a/builtins/type.def b/builtins/type.def index bd9ecfc..3187add 100644 --- a/builtins/type.def +++ b/builtins/type.def @@ -1,7 +1,7 @@ This file is type.def, from which is created type.c. It implements the builtin "type" in Bash. -Copyright (C) 1987-2011 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -30,18 +30,18 @@ command name. Options: -a display all locations containing an executable named NAME; - includes aliases, builtins, and functions, if and only if - the `-p' option is not also used + includes aliases, builtins, and functions, if and only if + the `-p' option is not also used -f suppress shell function lookup -P force a PATH search for each NAME, even if it is an alias, - builtin, or function, and returns the name of the disk file - that would be executed + builtin, or function, and returns the name of the disk file + that would be executed -p returns either the name of the disk file that would be executed, - or nothing if `type -t NAME' would not return `file'. + or nothing if `type -t NAME' would not return `file' -t output a single word which is one of `alias', `keyword', - `function', `builtin', `file' or `', if NAME is an alias, shell - reserved word, shell function, shell builtin, disk file, or not - found, respectively + `function', `builtin', `file' or `', if NAME is an alias, + shell reserved word, shell function, shell builtin, disk file, + or not found, respectively Arguments: NAME Command name to be interpreted. @@ -168,6 +168,7 @@ type_builtin (list) dflags |= (CDESC_PATH_ONLY|CDESC_FORCE_PATH); dflags &= ~(CDESC_TYPE|CDESC_SHORTDESC); break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -204,6 +205,7 @@ type_builtin (list) * CDESC_FORCE_PATH force a path search for type -P * CDESC_NOFUNCS skip function lookup for type -f * CDESC_ABSPATH convert to absolute path, no ./ prefix + * CDESC_STDPATH command -p standard path list * * CDESC_ALL says whether or not to look for all occurrences of COMMAND, or * return after finding it once. @@ -214,7 +216,7 @@ describe_command (command, dflags) int dflags; { int found, i, found_file, f, all; - char *full_path, *x; + char *full_path, *x, *pathlist; SHELL_VAR *func; #if defined (ALIAS) alias_t *alias; @@ -293,7 +295,12 @@ describe_command (command, dflags) if (dflags & CDESC_TYPE) puts ("builtin"); else if (dflags & CDESC_SHORTDESC) - printf (_("%s is a shell builtin\n"), command); + { + if (posixly_correct && find_special_builtin (command) != 0) + printf (_("%s is a special shell builtin\n"), command); + else + printf (_("%s is a shell builtin\n"), command); + } else if (dflags & CDESC_REUSABLE) printf ("%s\n", command); @@ -346,12 +353,17 @@ describe_command (command, dflags) /* Now search through $PATH. */ while (1) { - if (all == 0) + if (dflags & CDESC_STDPATH) /* command -p, all cannot be non-zero */ + { + pathlist = conf_standard_path (); + full_path = find_in_path (command, pathlist, FS_EXEC_PREFERRED|FS_NODIRS); + free (pathlist); + /* Will only go through this once, since all == 0 if STDPATH set */ + } + else if (all == 0) full_path = find_user_command (command); else - full_path = - user_command_matches (command, FS_EXEC_ONLY, found_file); - /* XXX - should that be FS_EXEC_PREFERRED? */ + full_path = user_command_matches (command, FS_EXEC_ONLY, found_file); /* XXX - should that be FS_EXEC_PREFERRED? */ if (full_path == 0) break; @@ -382,7 +394,11 @@ describe_command (command, dflags) } /* If we require a full path and don't have one, make one */ else if ((dflags & CDESC_ABSPATH) && ABSPATH (full_path) == 0) - full_path = sh_makepath ((char *)NULL, full_path, MP_DOCWD|MP_RMDOT); + { + x = sh_makepath ((char *)NULL, full_path, MP_DOCWD|MP_RMDOT); + free (full_path); + full_path = x; + } found_file++; found = 1; diff --git a/builtins/ulimit.def b/builtins/ulimit.def index e551cff..62def4f 100644 --- a/builtins/ulimit.def +++ b/builtins/ulimit.def @@ -1,7 +1,7 @@ This file is ulimit.def, from which is created ulimit.c. It implements the builtin "ulimit" in Bash. -Copyright (C) 1987-2010 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -23,7 +23,7 @@ $PRODUCES ulimit.c $BUILTIN ulimit $FUNCTION ulimit_builtin $DEPENDS_ON !_MINIX -$SHORT_DOC ulimit [-SHabcdefilmnpqrstuvxT] [limit] +$SHORT_DOC ulimit [-SHabcdefiklmnpqrstuvxPT] [limit] Modify shell resource limits. Provides control over the resources available to the shell and processes @@ -39,6 +39,7 @@ Options: -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 + -k the maximum number of kqueues allocated for this process -l the maximum size a process may lock into memory -m the maximum resident set size -n the maximum number of open file descriptors @@ -50,7 +51,8 @@ Options: -u the maximum number of user processes -v the size of virtual memory -x the maximum number of file locks - -T the maximum number of threads + -P the maximum number of pseudoterminals + -T the maximum number of threads Not all options are available on all platforms. @@ -131,11 +133,17 @@ extern int errno; # define print_rlimtype(num, nl) printf ("%ld%s", num, nl ? "\n" : "") #endif +/* Alternate names */ + /* Some systems use RLIMIT_NOFILE, others use RLIMIT_OFILE */ #if defined (HAVE_RESOURCE) && defined (RLIMIT_OFILE) && !defined (RLIMIT_NOFILE) # define RLIMIT_NOFILE RLIMIT_OFILE #endif /* HAVE_RESOURCE && RLIMIT_OFILE && !RLIMIT_NOFILE */ +#if defined (HAVE_RESOURCE) && defined (RLIMIT_POSIXLOCKS) && !defined (RLIMIT_LOCKS) +# define RLIMIT_LOCKS RLIMIT_POSIXLOCKS +#endif /* HAVE_RESOURCE && RLIMIT_POSIXLOCKS && !RLIMIT_LOCKS */ + /* Some systems have these, some do not. */ #ifdef RLIMIT_FSIZE # define RLIMIT_FILESIZE RLIMIT_FSIZE @@ -223,6 +231,9 @@ typedef struct { } RESOURCE_LIMITS; static RESOURCE_LIMITS limits[] = { +#ifdef RLIMIT_NPTS + { 'P', RLIMIT_NPTS, 1, "number of pseudoterminals", (char *)NULL }, +#endif #ifdef RLIMIT_PTHREAD { 'T', RLIMIT_PTHREAD, 1, "number of threads", (char *)NULL }, #endif @@ -242,6 +253,9 @@ static RESOURCE_LIMITS limits[] = { #ifdef RLIMIT_SIGPENDING { 'i', RLIMIT_SIGPENDING, 1, "pending signals", (char *)NULL }, #endif +#ifdef RLIMIT_KQUEUES + { 'k', RLIMIT_KQUEUES, 1, "max kqueues", (char *)NULL }, +#endif #ifdef RLIMIT_MEMLOCK { 'l', RLIMIT_MEMLOCK, 1024, "max locked memory", "kbytes" }, #endif @@ -359,6 +373,7 @@ ulimit_builtin (list) mode |= LIMIT_HARD; break; + CASE_HELPOPT; case '?': builtin_usage (); return (EX_USAGE); diff --git a/builtins/umask.def b/builtins/umask.def index d9aa041..d3138d4 100644 --- a/builtins/umask.def +++ b/builtins/umask.def @@ -1,7 +1,7 @@ This file is umask.def, from which is created umask.c. It implements the builtin "umask" in Bash. -Copyright (C) 1987-2009 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -91,6 +91,7 @@ umask_builtin (list) case 'p': pflag++; break; + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -145,8 +146,12 @@ umask_builtin (list) /* Print the umask in a symbolic form. In the output, a letter is printed if the corresponding bit is clear in the umask. */ static void +#if defined (__STDC__) +print_symbolic_umask (mode_t um) +#else print_symbolic_umask (um) mode_t um; +#endif { char ubits[4], gbits[4], obits[4]; /* u=rwx,g=rwx,o=rwx */ int i; diff --git a/builtins/wait.def b/builtins/wait.def index fe6d53d..974f959 100644 --- a/builtins/wait.def +++ b/builtins/wait.def @@ -1,7 +1,7 @@ This file is wait.def, from which is created wait.c. It implements the builtin "wait" in Bash. -Copyright (C) 1987-2013 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -73,8 +73,10 @@ $END #include "bashgetopt.h" extern int wait_signal_received; +extern int last_command_exit_signal; procenv_t wait_intr_buf; +int wait_intr_flag; /* Wait for the pid in LIST to stop or die. If no arguments are given, then wait for all of the active background processes of the shell and return @@ -86,6 +88,7 @@ procenv_t wait_intr_buf; { \ interrupt_immediately = old_interrupt_immediately;\ wait_signal_received = 0; \ + wait_intr_flag = 0; \ return (s);\ } \ while (0) @@ -110,6 +113,7 @@ wait_builtin (list) nflag = 1; break; #endif + CASE_HELPOPT; default: builtin_usage (); return (EX_USAGE); @@ -130,10 +134,14 @@ wait_builtin (list) We handle SIGINT here; it's the only one that needs to be treated specially (I think), since it's handled specially in {no,}jobs.c. */ - code = setjmp (wait_intr_buf); + wait_intr_flag = 1; + code = setjmp_sigs (wait_intr_buf); + if (code) { + last_command_exit_signal = wait_signal_received; status = 128 + wait_signal_received; + wait_sigint_cleanup (); WAIT_RETURN (status); } @@ -171,7 +179,7 @@ wait_builtin (list) if (legal_number (w, &pid_value) && pid_value == (pid_t)pid_value) { pid = (pid_t)pid_value; - status = wait_for_single_pid (pid); + status = wait_for_single_pid (pid, 1); } else { diff --git a/command.h b/command.h index 6e9d1e4..3da5b77 100644 --- a/command.h +++ b/command.h @@ -1,7 +1,7 @@ /* command.h -- The structures used internally to represent commands, and the extern declarations of the functions used to create them. */ -/* Copyright (C) 1993-2010 Free Software Foundation, Inc. +/* Copyright (C) 1993-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -100,7 +100,15 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #define W_ARRAYIND 0x1000000 /* word is an array index being expanded */ #define W_ASSNGLOBAL 0x2000000 /* word is a global assignment to declare (declare/typeset -g) */ #define W_NOBRACE 0x4000000 /* Don't perform brace expansion */ -#define W_ASSIGNINT 0x8000000 /* word is an integer assignment to declare */ +#define W_COMPLETE 0x8000000 /* word is being expanded for completion */ + +/* Flags for the `pflags' argument to param_expand() and various + parameter_brace_expand_xxx functions; also used for string_list_dollar_at */ +#define PF_NOCOMSUB 0x01 /* Do not perform command substitution */ +#define PF_IGNUNBOUND 0x02 /* ignore unbound vars even if -u set */ +#define PF_NOSPLIT2 0x04 /* same as W_NOSPLIT2 */ +#define PF_ASSIGNRHS 0x08 /* same as W_ASSIGNRHS */ +#define PF_COMPLETE 0x10 /* same as W_COMPLETE, sets SX_COMPLETE */ /* Possible values for subshell_environment */ #define SUBSHELL_ASYNC 0x01 /* subshell caused by `command &' */ @@ -175,6 +183,7 @@ typedef struct element { #define CMD_COMMAND_BUILTIN 0x0800 /* command executed by `command' builtin */ #define CMD_COPROC_SUBSHELL 0x1000 #define CMD_LASTPIPE 0x2000 +#define CMD_STDPATH 0x4000 /* use standard path for command lookup */ /* What a command looks like. */ typedef struct command { diff --git a/config-bot.h b/config-bot.h index 334581a..5563e2a 100644 --- a/config-bot.h +++ b/config-bot.h @@ -94,6 +94,10 @@ # undef COND_REGEXP #endif +#if !HAVE_MKSTEMP +# undef USE_MKSTEMP +#endif + /* If the shell is called by this name, it will become restricted. */ #if defined (RESTRICTED_SHELL) # define RESTRICTED_SHELL_NAME "rbash" diff --git a/config-top.h b/config-top.h index 4f6373c..d89682e 100644 --- a/config-top.h +++ b/config-top.h @@ -27,6 +27,10 @@ error messages about `break' and `continue' out of context. */ #define BREAK_COMPLAINS +/* Define CD_COMPLAINS if you want the non-standard, but sometimes-desired + error messages about multiple directory arguments to `cd'. */ +#define CD_COMPLAINS + /* Define BUFFERED_INPUT if you want the shell to do its own input buffering, rather than using stdio. Do not undefine this; it's required to preserve semantics required by POSIX. */ @@ -79,6 +83,9 @@ reply to the select query is an empty line. */ #define KSH_COMPATIBLE_SELECT +/* Default interactive shell startup file. */ +#define DEFAULT_BASHRC "~/.bashrc" + /* System-wide .bashrc file for interactive shells. */ /* #define SYS_BASHRC "/etc/bash.bashrc" */ @@ -110,6 +117,7 @@ #if defined (SYSLOG_HISTORY) # define SYSLOG_FACILITY LOG_USER # define SYSLOG_LEVEL LOG_INFO +# define OPENLOG_OPTS LOG_PID #endif /* Define if you want to include code in shell.c to support wordexp(3) */ @@ -132,3 +140,23 @@ /* Define to 1 if you want to be able to export indexed arrays to processes using the foo=([0]=one [1]=two) and so on */ /* #define ARRAY_EXPORT 1 */ + +/* Define to 1 if you want the shell to exit if it is running setuid and its + attempt to drop privilege using setuid(getuid()) fails with errno == EAGAIN */ +/* #define EXIT_ON_SETUID_FAILURE 1 */ + +/* Define to 1 if you want the shell to re-check $PATH if a hashed filename + no longer exists. This behavior is the default in Posix mode. */ +#define CHECKHASH_DEFAULT 0 + +/* Define to the maximum level of recursion you want for the eval builtin. + 0 means the limit is not active. */ +#define EVALNEST_MAX 0 + +/* Define to the maximum level of recursion you want for the source/. builtin. + 0 means the limit is not active. */ +#define SOURCENEST_MAX 0 + +/* Define to use libc mktemp/mkstemp instead of replacements in lib/sh/tmpfile.c */ +#define USE_MKTEMP +#define USE_MKSTEMP diff --git a/config.h.in b/config.h.in index 08af2ba..a5ad9e7 100644 --- a/config.h.in +++ b/config.h.in @@ -21,6 +21,17 @@ #ifndef _CONFIG_H_ #define _CONFIG_H_ +/* Template settings for autoconf */ + +#undef __EXTENSIONS__ +#undef _ALL_SOURCE +#undef _GNU_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_1_SOURCE +#undef _POSIX_PTHREAD_SEMANTICS +#undef _TANDEM_SOURCE +#undef _MINIX + /* Configuration feature settings controllable by autoconf. */ /* Define JOB_CONTROL if your operating system supports @@ -173,6 +184,9 @@ /* Define to make the `globasciiranges' shopt option enabled by default. */ #undef GLOBASCII_DEFAULT +/* Define to allow functions to be imported from the environment. */ +#undef FUNCTION_IMPORT + /* Define AFS if you are using Transarc's AFS. */ #undef AFS @@ -201,6 +215,7 @@ #undef HAVE_LONG_DOUBLE #undef PROTOTYPES +#undef __PROTOTYPES #undef __CHAR_UNSIGNED__ @@ -317,6 +332,9 @@ /* Define to `unsigned long' if doesn't define. */ #undef uintmax_t + +/* Define to integer type wide enough to hold a pointer if doesn't define. */ +#undef uintptr_t /* Define to `int' if doesn't define. */ #undef uid_t @@ -543,7 +561,6 @@ #undef UNUSABLE_RT_SIGNALS - /* Presence of system and C library functions. */ /* Define if you have the asprintf function. */ @@ -555,6 +572,9 @@ /* Define if you have the bzero function. */ #undef HAVE_BZERO +/* Define if you have the chown function. */ +#undef HAVE_CHOWN + /* Define if you have the confstr function. */ #undef HAVE_CONFSTR @@ -719,15 +739,24 @@ /* Define if you have the mkfifo function. */ #undef HAVE_MKFIFO +/* Define if you have the mkstemp function. */ +#undef HAVE_MKSTEMP + /* Define if you have the pathconf function. */ #undef HAVE_PATHCONF +/* Define if you have the pselect function. */ +#undef HAVE_PSELECT + /* Define if you have the putenv function. */ #undef HAVE_PUTENV /* Define if you have the raise function. */ #undef HAVE_RAISE +/* Define if you have the random function. */ +#undef HAVE_RANDOM + /* Define if you have the readlink function. */ #undef HAVE_READLINK @@ -926,6 +955,9 @@ /* Define if you have the header file. */ #undef HAVE_LANGINFO_H +/* Define if you have the header file. */ +#undef HAVE_LIBAUDIT_H + /* Define if you have the header file. */ #undef HAVE_LIBINTL_H @@ -935,6 +967,9 @@ /* Define if you have the header file. */ #undef HAVE_LOCALE_H +/* Define if you have the header file. */ +#undef HAVE_MBSTR_H + /* Define if you have the header file. */ #undef HAVE_NDIR_H @@ -983,6 +1018,9 @@ /* Define if you have the header file. */ #undef HAVE_SYS_FILE_H +/* Define if you have the header file. */ +#undef HAVE_SYS_IOCTL_H + /* Define if you have the header file. */ #undef HAVE_SYS_NDIR_H @@ -1059,9 +1097,6 @@ /* Are we running the GNU C library, version 2.1 or later? */ #undef GLIBC21 -/* Define if on MINIX. */ -#undef _MINIX - /* Are we running SVR5 (UnixWare 7)? */ #undef SVR5 diff --git a/configure b/configure index 98bf890..60f86d6 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac for Bash 4.3, version 4.063. +# From configure.ac for Bash 4.4, version 4.082. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bash 4.3-release. +# Generated by GNU Autoconf 2.69 for bash 4.4-release. # # Report bugs to . # @@ -581,8 +581,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='4.3-release' -PACKAGE_STRING='bash 4.3-release' +PACKAGE_VERSION='4.4-release' +PACKAGE_STRING='bash 4.4-release' PACKAGE_BUGREPORT='bug-bash@gnu.org' PACKAGE_URL='' @@ -635,6 +635,8 @@ DEBUG RELSTATUS BASHVERS ARFLAGS +headersdir +loadablesdir BUILD_DIR incdir PROFILE_FLAGS @@ -727,7 +729,6 @@ MALLOC_LIBRARY MALLOC_LIB MALLOC_SRC MALLOC_TARGET -PURIFY TESTSCRIPT CPPFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD @@ -788,8 +789,6 @@ with_bash_malloc with_curses with_gnu_malloc with_installed_readline -with_purecov -with_purify enable_minimal_config enable_alias enable_arith_for_command @@ -809,6 +808,7 @@ enable_disabled_builtins enable_dparen_arithmetic enable_extended_glob enable_extended_glob_default +enable_function_import enable_glob_asciiranges_default enable_help_builtin enable_history @@ -1393,7 +1393,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 4.3-release to adapt to many kinds of systems. +\`configure' configures bash 4.4-release to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1458,7 +1458,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 4.3-release:";; + short | recursive ) echo "Configuration of bash 4.4-release:";; esac cat <<\_ACEOF @@ -1498,6 +1498,9 @@ Optional Features: --enable-extended-glob-default force extended pattern matching to be enabled by default + --enable-function-import + allow bash to import exported function definitions + by default --enable-glob-asciiranges-default force bracket range expressions in pattern matching to use the C locale by default @@ -1546,8 +1549,6 @@ Optional Packages: --with-installed-readline use a version of the readline library that is already installed - --with-purecov configure to postprocess with pure coverage - --with-purify configure to postprocess with purify --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir @@ -1650,7 +1651,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 4.3-release +bash configure 4.4-release generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2359,7 +2360,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 4.3-release, which was +It was created by bash $as_me 4.4-release, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2752,11 +2753,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ac_config_headers="$ac_config_headers config.h" -BASHVERS=4.3 +BASHVERS=4.4 RELSTATUS=release case "$RELSTATUS" in -alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; *) DEBUG= MALLOC_DEBUG= ;; esac @@ -2834,8 +2835,6 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac opt_bash_malloc=yes -opt_purify=no -opt_purecov=no opt_afs=no opt_curses=no opt_with_installed_readline=no @@ -2911,18 +2910,6 @@ if test "${with_installed_readline+set}" = set; then : fi -# Check whether --with-purecov was given. -if test "${with_purecov+set}" = set; then : - withval=$with_purecov; opt_purecov=$withval -fi - - -# Check whether --with-purify was given. -if test "${with_purify+set}" = set; then : - withval=$with_purify; opt_purify=$withval -fi - - if test "$opt_bash_malloc" = yes; then MALLOC_TARGET=malloc MALLOC_SRC=malloc.c @@ -2941,18 +2928,6 @@ else MALLOC_DEP= fi -if test "$opt_purify" = yes; then - PURIFY="purify " - $as_echo "#define DISABLE_MALLOC_WRAPPERS 1" >>confdefs.h - -else - PURIFY= -fi - -if test "$opt_purecov" = yes; then - PURIFY="${PURIFY}purecov" -fi - if test "$opt_afs" = yes; then $as_echo "#define AFS 1" >>confdefs.h @@ -3002,6 +2977,7 @@ opt_casemod_expansions=yes opt_extglob_default=no opt_dircomplete_expand_default=no opt_globascii_default=no +opt_function_import=yes opt_static_link=no opt_profiling=no @@ -3115,6 +3091,11 @@ if test "${enable_extended_glob_default+set}" = set; then : enableval=$enable_extended_glob_default; opt_extglob_default=$enableval fi +# Check whether --enable-function-import was given. +if test "${enable_function_import+set}" = set; then : + enableval=$enable_function_import; opt_function_import=$enableval +fi + # Check whether --enable-glob-asciiranges-default was given. if test "${enable_glob_asciiranges_default+set}" = set; then : enableval=$enable_glob_asciiranges_default; opt_globascii_default=$enableval @@ -3341,6 +3322,10 @@ $as_echo "#define GLOBASCII_DEFAULT 1" >>confdefs.h else $as_echo "#define GLOBASCII_DEFAULT 0" >>confdefs.h +fi +if test $opt_function_import = yes; then +$as_echo "#define FUNCTION_IMPORT 1" >>confdefs.h + fi if test $opt_memscramble = yes; then @@ -3387,6 +3372,12 @@ fi +if test -z "$CFLAGS"; then + AUTO_CFLAGS="-g ${GCC+-O2} ${GCC+-Wno-parentheses}" + AUTO_LDFLAGS="-g ${GCC+-O2}" +else + AUTO_CFLAGS= AUTO_LDFLAGS= +fi echo "" echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}" @@ -4921,16 +4912,15 @@ fi -if test -z "$CFLAGS"; then - AUTO_CFLAGS="-g ${GCC+-O2}" - AUTO_LDFLAGS="-g ${GCC+-O2}" -else - AUTO_CFLAGS= AUTO_LDFLAGS= -fi - CFLAGS=${CFLAGS-"$AUTO_CFLAGS"} # LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX +# turn off paren warnings in gcc +if test "$GCC" = yes # && test -n "$DEBUG" +then + CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security" +fi + if test "$opt_profiling" = "yes"; then PROFILE_FLAGS=-pg case "$host_os" in @@ -5278,7 +5268,7 @@ if ${ac_cv_rl_version+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : - ac_cv_rl_version='4.2' + ac_cv_rl_version='6.3' else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9279,8 +9269,8 @@ fi done -for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h \ - sys/resource.h sys/param.h sys/socket.h sys/stat.h \ +for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ + sys/param.h sys/socket.h sys/stat.h \ sys/time.h sys/times.h sys/types.h sys/wait.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -9320,6 +9310,19 @@ fi +ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" " +#if HAVE_SYS_TIME_H +# include +#endif + +" +if test "x$ac_cv_header_sys_resource_h" = xyes; then : + $as_echo "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h + +fi + + + # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 @@ -9504,6 +9507,101 @@ cat >>confdefs.h <<_ACEOF _ACEOF +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 +$as_echo_n "checking for uid_t in sys/types.h... " >&6; } +if ${ac_cv_type_uid_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "uid_t" >/dev/null 2>&1; then : + ac_cv_type_uid_t=yes +else + ac_cv_type_uid_t=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 +$as_echo "$ac_cv_type_uid_t" >&6; } +if test $ac_cv_type_uid_t = no; then + +$as_echo "#define uid_t int" >>confdefs.h + + +$as_echo "#define gid_t int" >>confdefs.h + +fi + +for ac_header in unistd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_UNISTD_H 1 +_ACEOF + +fi + +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5 +$as_echo_n "checking for working chown... " >&6; } +if ${ac_cv_func_chown_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_chown_works=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +#include + +int +main () +{ + char *f = "conftest.chown"; + struct stat before, after; + + if (creat (f, 0600) < 0) + return 1; + if (stat (f, &before) < 0) + return 1; + if (chown (f, (uid_t) -1, (gid_t) -1) == -1) + return 1; + if (stat (f, &after) < 0) + return 1; + return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_chown_works=yes +else + ac_cv_func_chown_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +rm -f conftest.chown + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5 +$as_echo "$ac_cv_func_chown_works" >&6; } +if test $ac_cv_func_chown_works = yes; then + +$as_echo "#define HAVE_CHOWN 1" >>confdefs.h + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5 @@ -9706,7 +9804,7 @@ fi for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \ getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat readlink sbrk select setdtablesize \ + kill killpg lstat pselect readlink sbrk select setdtablesize \ setitimer tcgetpgrp uname ulimit waitpid do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -9736,7 +9834,7 @@ fi for ac_func in bcopy bzero confstr faccessat fnmatch \ getaddrinfo gethostbyname getservbyname getservent inet_aton \ - imaxdiv memmove pathconf putenv raise regcomp regexec \ + imaxdiv memmove pathconf putenv raise random regcomp regexec \ setenv setlinebuf setlocale setvbuf siginterrupt strchr \ sysconf syslog tcgetattr times ttyname tzset unsetenv do : @@ -9787,6 +9885,17 @@ _ACEOF fi done +for ac_func in mkstemp +do : + ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" +if test "x$ac_cv_func_mkstemp" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MKSTEMP 1 +_ACEOF + +fi +done + ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd" if test "x$ac_cv_func_getcwd" = xyes; then : $as_echo "#define HAVE_GETCWD 1" >>confdefs.h @@ -10041,6 +10150,18 @@ fi +for ac_header in libaudit.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default" +if test "x$ac_cv_header_libaudit_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBAUDIT_H 1 +_ACEOF + +fi + +done + ac_fn_c_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include " if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes; then : @@ -10965,6 +11086,19 @@ fi done +for ac_header in mbstr.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "mbstr.h" "ac_cv_header_mbstr_h" "$ac_includes_default" +if test "x$ac_cv_header_mbstr_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MBSTR_H 1 +_ACEOF + +fi + +done + + ac_fn_c_check_func "$LINENO" "mbrlen" "ac_cv_func_mbrlen" if test "x$ac_cv_func_mbrlen" = xyes; then : $as_echo "#define HAVE_MBRLEN 1" >>confdefs.h @@ -11279,7 +11413,7 @@ _ACEOF if ac_fn_c_try_run "$LINENO"; then : bash_cv_wcwidth_broken=yes else - bash_cv_wcwdith_broken=no + bash_cv_wcwidth_broken=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext @@ -11296,7 +11430,7 @@ fi if test "$am_cv_func_iconv" = yes; then OLDLIBS="$LIBS" - LIBS="$LIBS $LIBICONV" + LIBS="$LIBS $LIBINTL $LIBICONV" for ac_func in locale_charset do : ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset" @@ -11667,36 +11801,6 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if ${ac_cv_type_uid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then : - ac_cv_type_uid_t=yes -else - ac_cv_type_uid_t=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } -if test $ac_cv_type_uid_t = no; then - -$as_echo "#define uid_t int" >>confdefs.h - - -$as_echo "#define gid_t int" >>confdefs.h - -fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5 $as_echo_n "checking type of array argument to getgroups... " >&6; } if ${ac_cv_type_getgroups+:} false; then : @@ -11838,6 +11942,44 @@ _ACEOF fi + + ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default" +if test "x$ac_cv_type_uintptr_t" = xyes; then : + +$as_echo "#define HAVE_UINTPTR_T 1" >>confdefs.h + +else + for ac_type in 'unsigned int' 'unsigned long int' \ + 'unsigned long long int'; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +cat >>confdefs.h <<_ACEOF +#define uintptr_t $ac_type +_ACEOF + + ac_type= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test -z "$ac_type" && break + done +fi + + + ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = xyes; then : @@ -15923,7 +16065,7 @@ solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in - 2.[456789]*|3*) $as_echo "#define PGRP_PIPE 1" >>confdefs.h + 2.[456789]*|[34]*) $as_echo "#define PGRP_PIPE 1" >>confdefs.h ;; esac ;; *qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;; @@ -15938,6 +16080,8 @@ case "${host_os}-${CC}" in aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;; aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;; bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux +bsdi5*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux +hpux11*-gcc*) LOCAL_LDFLAGS="-Wl,-E" ;; # allow dynamic loading esac case "${host_os}" in @@ -16019,6 +16163,16 @@ fi +# directory where we install dynamically loadable builtins +if test -z "$loadablesdir"; then + loadablesdir='${libdir}/bash' +fi + +if test -z "$headersdir"; then + headersdir='$(includedir)/$(PACKAGE_NAME)' +fi + + @@ -16040,7 +16194,7 @@ fi #AC_SUBST(ALLOCA_SOURCE) #AC_SUBST(ALLOCA_OBJECT) -ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/perl/Makefile" +ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/perl/Makefile support/bash.pc" ac_config_commands="$ac_config_commands default" @@ -16551,7 +16705,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bash $as_me 4.3-release, which was +This file was extended by bash $as_me 4.4-release, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16617,7 +16771,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -bash config.status 4.3-release +bash config.status 4.4-release configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -16765,7 +16919,9 @@ do "support/Makefile") CONFIG_FILES="$CONFIG_FILES support/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "examples/loadables/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;; + "examples/loadables/Makefile.inc") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile.inc" ;; "examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;; + "support/bash.pc") CONFIG_FILES="$CONFIG_FILES support/bash.pc" ;; "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; diff --git a/configure.ac b/configure.ac index 97e8e04..ce4e9b6 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,11 @@ dnl -dnl Configure script for bash-4.3 +dnl Configure script for bash-4.4 dnl dnl report bugs to chet@po.cwru.edu dnl dnl Process this file with autoconf to produce a configure script. -# Copyright (C) 1987-2013 Free Software Foundation, Inc. +# Copyright (C) 1987-2016 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify @@ -21,9 +21,9 @@ dnl Process this file with autoconf to produce a configure script. # You should have received a copy of the GNU General Public License # along with this program. If not, see . -AC_REVISION([for Bash 4.3, version 4.063])dnl +AC_REVISION([for Bash 4.4, version 4.082])dnl -define(bashvers, 4.3) +define(bashvers, 4.4) define(relstatus, release) AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) @@ -42,7 +42,7 @@ RELSTATUS=relstatus dnl defaults for debug settings case "$RELSTATUS" in -alp*|bet*|dev*|rc*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; +alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; *) DEBUG= MALLOC_DEBUG= ;; esac @@ -53,8 +53,6 @@ AC_CANONICAL_BUILD dnl configure defaults opt_bash_malloc=yes -opt_purify=no -opt_purecov=no opt_afs=no opt_curses=no opt_with_installed_readline=no @@ -113,8 +111,6 @@ AC_ARG_WITH(bash-malloc, AC_HELP_STRING([--with-bash-malloc], [use the Bash vers AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval) AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval) AC_ARG_WITH(installed-readline, AC_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval) -AC_ARG_WITH(purecov, AC_HELP_STRING([--with-purecov], [configure to postprocess with pure coverage]), opt_purecov=$withval) -AC_ARG_WITH(purify, AC_HELP_STRING([--with-purify], [configure to postprocess with purify]), opt_purify=$withval) if test "$opt_bash_malloc" = yes; then MALLOC_TARGET=malloc @@ -133,17 +129,6 @@ else MALLOC_DEP= fi -if test "$opt_purify" = yes; then - PURIFY="purify " - AC_DEFINE(DISABLE_MALLOC_WRAPPERS) -else - PURIFY= -fi - -if test "$opt_purecov" = yes; then - PURIFY="${PURIFY}purecov" -fi - if test "$opt_afs" = yes; then AC_DEFINE(AFS) fi @@ -193,6 +178,7 @@ opt_casemod_expansions=yes opt_extglob_default=no opt_dircomplete_expand_default=no opt_globascii_default=no +opt_function_import=yes dnl options that affect how bash is compiled and linked opt_static_link=no @@ -234,6 +220,7 @@ AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [a AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval) AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval) AC_ARG_ENABLE(extended-glob-default, AC_HELP_STRING([--enable-extended-glob-default], [force extended pattern matching to be enabled by default]), opt_extglob_default=$enableval) +AC_ARG_ENABLE(function-import, AC_HELP_STRING([--enable-function-import], [allow bash to import exported function definitions by default]), opt_function_import=$enableval) AC_ARG_ENABLE(glob-asciiranges-default, AC_HELP_STRING([--enable-glob-asciiranges-default], [force bracket range expressions in pattern matching to use the C locale by default]), opt_globascii_default=$enableval) AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval) AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval) @@ -357,6 +344,9 @@ AC_DEFINE(GLOBASCII_DEFAULT, 1) else AC_DEFINE(GLOBASCII_DEFAULT, 0) fi +if test $opt_function_import = yes; then +AC_DEFINE(FUNCTION_IMPORT) +fi if test $opt_memscramble = yes; then AC_DEFINE(MEMSCRAMBLE) @@ -386,7 +376,6 @@ fi dnl now substitute in the values generated by arguments AC_SUBST(TESTSCRIPT) -AC_SUBST(PURIFY) AC_SUBST(MALLOC_TARGET) AC_SUBST(MALLOC_SRC) @@ -403,6 +392,14 @@ AC_SUBST(HELPINSTALL) AC_SUBST(HELPFILES_TARGET) AC_SUBST(HELPSTRINGS) +dnl We want these before the checks, so the checks can modify their values. +if test -z "$CFLAGS"; then + AUTO_CFLAGS="-g ${GCC+-O2} ${GCC+-Wno-parentheses}" + AUTO_LDFLAGS="-g ${GCC+-O2}" +else + AUTO_CFLAGS= AUTO_LDFLAGS= +fi + echo "" echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}" echo "" @@ -460,18 +457,16 @@ AC_SUBST(SIGNAMES_O) dnl END changes for cross-building -dnl We want these before the checks, so the checks can modify their values. -if test -z "$CFLAGS"; then - AUTO_CFLAGS="-g ${GCC+-O2}" - AUTO_LDFLAGS="-g ${GCC+-O2}" -else - AUTO_CFLAGS= AUTO_LDFLAGS= -fi - dnl default values CFLAGS=${CFLAGS-"$AUTO_CFLAGS"} # LDFLAGS=${LDFLAGS="$AUTO_LDFLAGS"} # XXX +# turn off paren warnings in gcc +if test "$GCC" = yes # && test -n "$DEBUG" +then + CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security" +fi + dnl handle options that alter how bash is compiled and linked dnl these must come after the test for cc/gcc if test "$opt_profiling" = "yes"; then @@ -706,8 +701,8 @@ AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \ regex.h syslog.h ulimit.h) -AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \ - sys/resource.h sys/param.h sys/socket.h sys/stat.h \ +AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ + sys/param.h sys/socket.h sys/stat.h \ sys/time.h sys/times.h sys/types.h sys/wait.h) AC_CHECK_HEADERS(netinet/in.h arpa/inet.h) @@ -719,8 +714,17 @@ AC_CHECK_HEADER(sys/ptem.h, , ,[[ #endif ]]) +dnl SunOS 4 needs to include before to compile +dnl autoconf complains about presence but inability to compile +AC_CHECK_HEADER(sys/resource.h, AC_DEFINE(HAVE_SYS_RESOURCE_H), [], [[ +#if HAVE_SYS_TIME_H +# include +#endif +]]) + dnl special checks for libc functions AC_FUNC_ALLOCA +AC_FUNC_CHOWN AC_FUNC_GETPGRP AC_FUNC_SETVBUF_REVERSED AC_FUNC_VPRINTF @@ -766,20 +770,21 @@ AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING)) dnl checks for system calls AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \ getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat readlink sbrk select setdtablesize \ + kill killpg lstat pselect readlink sbrk select setdtablesize \ setitimer tcgetpgrp uname ulimit waitpid) AC_REPLACE_FUNCS(rename) dnl checks for c library functions AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \ getaddrinfo gethostbyname getservbyname getservent inet_aton \ - imaxdiv memmove pathconf putenv raise regcomp regexec \ + imaxdiv memmove pathconf putenv raise random regcomp regexec \ setenv setlinebuf setlocale setvbuf siginterrupt strchr \ sysconf syslog tcgetattr times ttyname tzset unsetenv) AC_CHECK_FUNCS(vasprintf asprintf) AC_CHECK_FUNCS(isascii isblank isgraph isprint isspace isxdigit) AC_CHECK_FUNCS(getpwent getpwnam getpwuid) +AC_CHECK_FUNCS(mkstemp) AC_REPLACE_FUNCS(getcwd memset) AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr) AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax) @@ -787,6 +792,7 @@ AC_REPLACE_FUNCS(dprintf) AC_REPLACE_FUNCS(strchrnul) AC_REPLACE_FUNCS(strdup) +AC_CHECK_HEADERS(libaudit.h) AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include ]]) AC_CHECK_DECLS([confstr]) @@ -886,6 +892,8 @@ AC_TYPE_MODE_T AC_TYPE_UID_T AC_TYPE_PID_T AC_TYPE_SIZE_T +AC_TYPE_UINTPTR_T + AC_CHECK_TYPE(ssize_t, int) AC_CHECK_TYPE(time_t, long) @@ -1085,7 +1093,7 @@ solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading case "`uname -r`" in - 2.[[456789]]*|3*) AC_DEFINE(PGRP_PIPE) ;; + 2.[[456789]]*|[[34]]*) AC_DEFINE(PGRP_PIPE) ;; esac ;; *qnx6*) LOCAL_CFLAGS="-Dqnx -Dqnx6" LOCAL_LIBS="-lncurses" ;; *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; @@ -1100,6 +1108,8 @@ case "${host_os}-${CC}" in aix4.2*-*gcc*) LOCAL_LDFLAGS="-Xlinker -bexpall -Xlinker -brtl" ;; aix4.2*) LOCAL_LDFLAGS="-bexpall -brtl" ;; bsdi4*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux +bsdi5*-*gcc*) LOCAL_LDFLAGS="-rdynamic" ;; # allow dynamic loading, like Linux +hpux11*-gcc*) LOCAL_LDFLAGS="-Wl,-E" ;; # allow dynamic loading esac dnl FreeBSD-3.x can have either a.out or ELF @@ -1180,6 +1190,16 @@ AC_SUBST(BUILD_DIR) AC_SUBST(datarootdir) AC_SUBST(localedir) +# directory where we install dynamically loadable builtins +if test -z "$loadablesdir"; then + loadablesdir='${libdir}/bash' +fi +AC_SUBST(loadablesdir) +if test -z "$headersdir"; then + headersdir='$(includedir)/$(PACKAGE_NAME)' +fi +AC_SUBST(headersdir) + AC_SUBST(YACC) AC_SUBST(AR) AC_SUBST(ARFLAGS) @@ -1205,7 +1225,9 @@ AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \ lib/intl/Makefile \ lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \ lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \ - examples/loadables/Makefile examples/loadables/perl/Makefile], + examples/loadables/Makefile examples/loadables/Makefile.inc \ + examples/loadables/perl/Makefile \ + support/bash.pc], [ # Makefile uses this timestamp file to record whether config.h is up to date. echo timestamp > stamp-h diff --git a/doc/FAQ b/doc/FAQ index 1df48d5..87dbb2d 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,4 +1,6 @@ -This is the Bash FAQ, version 4.13, for Bash version 4.3. +This is the Bash FAQ, version 4.14, for Bash version 4.4. + +[THIS FAQ IS NO LONGER MAINTAINED] This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell. Bash is a freely-available command @@ -144,7 +146,7 @@ of Case Western Reserve University. A2) What's the latest version? -The latest version is 4.3, first made available on xx December, 2013. +The latest version is 4.3, first made available on 26 February, 2014. A3) Where can I get it? @@ -2169,11 +2171,17 @@ You may also need Finally, you need to tell readline that you will be inputting and displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash +this. convert-meta says what to do if you read a character with its +eighth bit set. input-meta says whether to permit characters with the +eighth bit at all. output-meta determines how to display characters +with the eighth bit set: if on, they are output directly; if it is off, +such characters are displayed as a meta-prefixed escape sequence. + +These variables can be set in your .inputrc or using the bash `bind' builtin. Here's an example using `bind': bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' + bash$ bind 'set input-meta on' bash$ bind 'set output-meta on' The `set' commands between the single quotes may also be placed diff --git a/doc/Makefile.in b/doc/Makefile.in index 3c67db6..5f0756c 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,6 +1,6 @@ # This Makefile is for the Bash/documentation directory -*- text -*-. # -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2015 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 @@ -31,7 +31,7 @@ RM = rm -f topdir = @top_srcdir@ srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ @@ -79,6 +79,8 @@ 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 +# experimental; uses external texi2dvi for now; this needs pdftex to be present +TEXI2PDF = texi2dvi --pdf TEXINPUTDIR = $(RL_LIBDIR)/doc SET_TEXINPUTS = TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS @@ -90,7 +92,9 @@ PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -s MKDIRS = ${SUPPORT_SRCDIR}/mkdirs # This should be a program that converts troff to an ascii-readable format -NROFF = groff -Tascii +# added the -P -c for benefit of Mac OS X, which insists on adding colors if +# it's not present +NROFF = groff -Tascii -P -c # This should be a program that converts troff to postscript GROFF = groff @@ -146,13 +150,17 @@ BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/fdl.texi $(srcdir)/version.texi ${RM} $@ -${DVIPS} $< -all: ps info dvi text html +#.texi.pdf: +# $(RM) $@ +# -${TEXI2PDF} $< + +all: ps info dvi text html $(MAN2HTML) nodvi: ps info text html everything: all pdf PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps DVIFILES = bashref.dvi bashref.ps -INFOFILES = bashref.info +INFOFILES = bashref.info bash.info MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0 HTMLFILES = bashref.html bash.html PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf @@ -170,17 +178,22 @@ bashref.dvi: $(BASHREF_FILES) $(HSUSER) $(RLUSER) bashref.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER) $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi +# experimental +bashref.pdf: $(BASHREF_FILES) $(HSUSER) $(RLUSER) + ${SET_TEXINPUTS} $(TEXI2PDF) $(srcdir)/bashref.texi || { ${RM} $@ ; exit 1; } + + # can also use: -# $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi +# $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER) - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi + $(MAKEINFO) --html --no-split -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) +bash.html: bash.1 bashbug.ps: bashbug.1 builtins.ps: builtins.1 bash.1 rbash.ps: rbash.1 bash.1 @@ -193,7 +206,9 @@ article.ps: article.ms bashref.ps: bashref.dvi article.pdf: article.ps -bashref.pdf: bashref.dvi +#bashref.pdf: bashref.dvi +# experimental +bashref.pdf: bashref.texi bash.pdf: bash.ps rose94.pdf: rose94.ps @@ -232,7 +247,7 @@ installdirs: $(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(htmldir) ; \ fi -install: info installdirs bash.info +install: info installdirs -$(INSTALL_DATA) $(srcdir)/bash.1 $(DESTDIR)$(man1dir)/bash${man1ext} -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext} -$(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) @@ -259,10 +274,20 @@ install_builtins: installdirs install_everything: install install_builtins +install-html: html + -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)$(man1dir)/bash_builtins${man1ext} $(RM) $(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 --delete --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/bash.info; \ + else true; fi -( cd $(DESTDIR)$(docdir) && $(RM) $(OTHER_INSTALLED_DOCS) ) -if test -n "$(htmldir)" ; then \ $(RM) $(DESTDIR)$(htmldir)/bash.html ; \ @@ -313,4 +338,4 @@ rbash: bashref.texi cmp -s RBASH ../RBASH || mv RBASH ../RBASH $(RM) RBASH -xdist: pdf inst posix rbash +xdist: everything inst posix rbash diff --git a/doc/aosa-bash-full.pdf b/doc/aosa-bash-full.pdf new file mode 100644 index 0000000000000000000000000000000000000000..01815492cc39e4c92cfecf6b0128f03542c34be6 GIT binary patch literal 393895 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 *B?8x6U)IuDf+^kSTI}~a|7^X{RAQls_ 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%0AQRB_L3>AXkcB%AnQjHE}A~N|qR!?Hj6gVo2 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

acK2j1vM`k-!%cMrWPWQnHF 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

t#LjeI_ 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

I(G<`;WSlMQteZ|h!? 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

COPYRIGHT

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

DESCRIPTION

@@ -67,7 +67,7 @@ can be configured to be POSIX-conformant by default.  

OPTIONS

-All of the single-character shell options documented in the +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 @@ -88,9 +88,14 @@ option is present, then commands are read from the first non-option argument If there are arguments after the command_string, -they are assigned to the positional parameters, starting with -$0. +the first argument is assigned to +$0 +and any remaining arguments are assigned to the positional parameters. +The assignment to +$0 + +sets the name of the shell, which is used in warning and error messages.
-i
@@ -292,7 +297,7 @@ below).
--verbose
-Equivalent to -v. +Equivalent to -v.
--version

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 ssppaaccee ttaabb + || && ;; (( )) << >> ssppaaccee ttaabb nneewwlliinnee 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 @@ -301,7 +306,7 @@ SSHHEELLLL GGRRAAMMMMAARR 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 + AND and OR lists are sequences of one or more pipelines separated by the &&&& and |||| control operators, respectively. AND and OR lists are executed with left associativity. An AND list has the form @@ -314,7 +319,6 @@ SSHHEELLLL GGRRAAMMMMAARR _c_o_m_m_a_n_d_1 |||| _c_o_m_m_a_n_d_2 - _c_o_m_m_a_n_d_2 is executed if and only if _c_o_m_m_a_n_d_1 returns 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. @@ -365,7 +369,7 @@ SSHHEELLLL GGRRAAMMMMAARR of the operator is considered a pattern and matched according to the rules described below under PPaatttteerrnn MMaattcchhiinngg, as if the eexxtt-- gglloobb shell option were enabled. The == operator is equivalent to - ====. If the shell option nnooccaasseemmaattcchh is enabled, the match is + ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (====) or does not match (!!==) the pattern, and 1 otherwise. Any part of the pat- @@ -378,7 +382,7 @@ SSHHEELLLL GGRRAAMMMMAARR 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 + expression's return value is 2. If the nnooccaasseemmaattcchh shell option is enabled, the match is performed without regard to the case of alphabetic characters. Any part of the pattern may be quoted to force the quoted portion to be matched as a string. Bracket @@ -452,21 +456,21 @@ SSHHEELLLL GGRRAAMMMMAARR 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. + sion, arithmetic expansion, command substitution, process sub- + stitution and quote removal. Each _p_a_t_t_e_r_n examined is expanded + using tilde expansion, parameter and variable expansion, arith- + metic expansion, command substitution, and process substitution. + If the nnooccaasseemmaattcchh shell option is enabled, the match is per- + formed without regard to the case of alphabetic characters. + When a match is found, the corresponding _l_i_s_t is executed. If + the ;;;; operator is used, no subsequent matches are attempted + after the first pattern match. Using ;;&& in place of ;;;; causes + execution to continue with the _l_i_s_t associated with the next set + of patterns. Using ;;;;&& in place of ;;;; causes the shell to test + the next pattern list in the statement, if any, and execute any + associated _l_i_s_t on a successful match. The exit status is zero + if no pattern matches. Otherwise, it is the exit status of the + last command executed in _l_i_s_t. 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 @@ -482,7 +486,7 @@ SSHHEELLLL GGRRAAMMMMAARR 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 + 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- @@ -532,7 +536,9 @@ SSHHEELLLL GGRRAAMMMMAARR parentheses are optional. The _b_o_d_y of the function is the com- pound command _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d (see CCoommppoouunndd CCoommmmaannddss above). That command is usually a _l_i_s_t of commands between { and }, but - may be any command listed under CCoommppoouunndd CCoommmmaannddss above. _c_o_m_- + may be any command listed under CCoommppoouunndd CCoommmmaannddss above, with + one exception: If the ffuunnccttiioonn reserved word is used, but the + parentheses are not supplied, the braces are required. _c_o_m_- _p_o_u_n_d_-_c_o_m_m_a_n_d is executed whenever _n_a_m_e is specified as the name of a simple command. When in _p_o_s_i_x _m_o_d_e, _n_a_m_e may not be the name of one of the POSIX _s_p_e_c_i_a_l _b_u_i_l_t_i_n_s. Any redirections @@ -580,13 +586,15 @@ QQUUOOTTIINNGG 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. + when history expansion is enabled, !!. When the shell is in _p_o_s_i_x _m_o_d_e, + the !! has no special meaning within double quotes, even when history + expansion is enabled. The characters $$ and `` retain their special + meaning within double quotes. The backslash retains its special mean- + ing only when followed by one of the following characters: $$, ``, "", \\, + or <>. A double quote may be quoted within double quotes by + preceding it with a backslash. If enabled, history expansion will be + performed unless an !! appearing in double quotes is escaped using a + backslash. The backslash preceding the !! is not removed. The special parameters ** and @@ have special meaning when in double quotes (see PPAARRAAMMEETTEERRSS below). @@ -607,6 +615,7 @@ QQUUOOTTIINNGG \\\\ backslash \\'' single quote \\"" double quote + \\?? question mark \\_n_n_n the eight-bit character whose value is the octal value _n_n_n (one to three digits) \\xx_H_H the eight-bit character whose value is the hexadecimal @@ -631,61 +640,66 @@ PPAARRAAMMEETTEERRSS 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). + ddeeccllaarree builtin command (see ddeeccllaarree below in SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS). A parameter is set if it has been assigned a value. The null string is - a valid value. Once a variable is set, it may be unset only by using + a valid value. Once a variable is set, it may be unset only by using the uunnsseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A _v_a_r_i_a_b_l_e may be assigned to by a statement of the form _n_a_m_e=[_v_a_l_u_e] - If _v_a_l_u_e is not given, the variable is assigned the null string. All - _v_a_l_u_e_s undergo tilde expansion, parameter and variable expansion, com- - mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN-- + If _v_a_l_u_e is not given, the variable is assigned the null string. All + _v_a_l_u_e_s undergo tilde expansion, parameter and variable expansion, com- + mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN-- SSIIOONN below). If the variable has its iinntteeggeerr attribute set, then _v_a_l_u_e is evaluated as an arithmetic expression even if the $((...)) expansion - is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting is not - performed, with the exception of ""$$@@"" as explained below under SSppeecciiaall - PPaarraammeetteerrss. Pathname expansion is not performed. Assignment state- - ments may also appear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett, - eexxppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands. 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. + is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting is not + performed, with the exception of ""$$@@"" as explained below under SSppeecciiaall + PPaarraammeetteerrss. Pathname expansion is not performed. Assignment state- + ments may also appear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett, + eexxppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands (_d_e_c_l_a_r_a_t_i_o_n commands). + When in _p_o_s_i_x _m_o_d_e, these builtins may appear in a command after one or + more instances of the ccoommmmaanndd builtin and retain these assignment + 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. + or add to the variable's previous value. This includes arguments to + builtin commands such as ddeeccllaarree that accept assignment statements + (_d_e_c_l_a_r_a_t_i_o_n commands). When += is applied to a variable for which the + _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated as an arithmetic + expression and added to the variable's current value, which is also + evaluated. When += is applied to an array variable using compound + 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 + the nameref variable is referenced, assigned to, unset, or has its + attributes modified (other than using or changing the _n_a_m_e_r_e_f attribute + itself), the operation is actually performed on the variable specified + by the nameref variable's value. A nameref is commonly used within + shell functions to refer to a variable whose name is passed as an argu- + ment to the function. For instance, if a variable name is passed to a + shell function as its first argument, running declare -n ref=$1 - inside the function creates a nameref variable rreeff whose value is the + inside the function creates a nameref variable rreeff whose value is the variable name passed as the first argument. References and assignments - to rreeff 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 + to rreeff, and changes to its attributes, are treated as references, + assignments, and attribute modifications to the variable whose name was + passed as $$11. If the control variable in a ffoorr loop has the nameref + attribute, the list of words can be a list of shell variables, and a + name reference will be established for each word in the list, in turn, + when the loop is executed. Array variables cannot be given the nnaammeerreeff + attribute. However, nameref variables can reference array variables and subscripted array variables. Namerefs can be unset using the --nn option to the uunnsseett builtin. Otherwise, if uunnsseett is executed with the name of a nameref variable as an argument, the variable referenced by @@ -715,66 +729,68 @@ PPAARRAAMMEETTEERRSS variable. That is, "$$**" is equivalent to "$$11_c$$22_c......", where _c is the first character of the value of the IIFFSS variable. If IIFFSS is unset, the parameters are separated by spaces. If IIFFSS is - null, the parameters are joined without intervening separators. - @@ Expands to the positional parameters, starting from one. When + 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 + "$$22" ... If the double-quoted expansion occurs within a word, + the expansion of the first parameter is joined with the begin- + ning part of the original word, and the expansion of the last + parameter is joined with the last part of the original word. + When there are no positional parameters, "$$@@" and $$@@ expand to nothing (i.e., they are removed). ## Expands to the number of positional parameters in decimal. - ?? Expands to the exit status of the most recently executed fore- + ?? Expands to the exit status of the most recently executed fore- ground pipeline. - -- Expands to the current option flags as specified upon invoca- - tion, by the sseett builtin command, or those set by the shell + -- Expands to the current option flags as specified upon invoca- + tion, by the sseett builtin command, or those set by the shell itself (such as the --ii option). - $$ Expands to the process ID of the shell. In a () subshell, it - expands to the process ID of the current shell, not the sub- + $$ Expands to the process ID of the shell. In a () subshell, it + expands to the process ID of the current shell, not the sub- shell. - !! Expands to the process ID of the job most recently placed into - the background, whether executed as an asynchronous command or + !! Expands to the process ID of the job most recently placed into + the background, whether executed as an asynchronous command or using the bbgg builtin (see JJOOBB CCOONNTTRROOLL below). - 00 Expands to the name of the shell or shell script. This is set + 00 Expands to the name of the shell or shell script. This is set at shell initialization. If bbaasshh is invoked with a file of com- - mands, $$00 is set to the name of that file. If bbaasshh is started - with the --cc option, then $$00 is set to the first argument after - the string to be executed, if one is present. Otherwise, it is - set to the filename used to invoke bbaasshh, as given by argument + mands, $$00 is set to the name of that file. If bbaasshh is started + with the --cc option, then $$00 is set to the first argument after + the string to be executed, if one is present. Otherwise, it is + set to the filename used to invoke bbaasshh, as given by argument zero. - __ At shell startup, set to the absolute pathname used to invoke - the shell or shell script being executed as passed in the envi- - ronment or argument list. Subsequently, expands to the last - argument to the previous command, after expansion. Also set to - the full pathname used to invoke each command executed and + __ At shell startup, set to the absolute pathname used to invoke + the shell or shell script being executed as passed in the envi- + ronment or argument list. Subsequently, expands to the last + argument to the previous command, after expansion. Also set to + the full pathname used to invoke each command executed and placed in the environment exported to that command. When check- - ing mail, this parameter holds the name of the mail file cur- + ing mail, this parameter holds the name of the mail file cur- rently being checked. SShheellll VVaarriiaabblleess The following variables are set by the shell: - BBAASSHH Expands to the full filename used to invoke this instance of + BBAASSHH Expands to the full filename used to invoke this instance of bbaasshh. BBAASSHHOOPPTTSS - A colon-separated list of enabled shell options. Each word in - the list is a valid argument for the --ss option to the sshhoopptt + A colon-separated list of enabled shell options. Each word in + the list is a valid argument for the --ss option to the sshhoopptt builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options - appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If - this variable is in the environment when bbaasshh starts up, each - shell option in the list will be enabled before reading any + appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If + this variable is in the environment when bbaasshh starts up, each + shell option in the list will be enabled before reading any startup files. This variable is read-only. BBAASSHHPPIIDD - Expands to the process ID of the current bbaasshh process. This - differs from $$$$ under certain circumstances, such as subshells + 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. + An associative array variable whose members correspond to the + internal list of aliases as maintained by the aalliiaass builtin. + Elements added to this array appear in the alias list; however, + unsetting array elements currently does not cause aliases to be + removed from the alias list. If BBAASSHH__AALLIIAASSEESS is unset, it loses + its special properties, even if it is subsequently reset. BBAASSHH__AARRGGCC An array variable whose values are the number of parameters in each frame of the current bbaasshh execution call stack. The number @@ -797,8 +813,10 @@ PPAARRAAMMEETTEERRSS 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. + however, unsetting array elements currently does not cause com- + mand names to be removed from the hash table. If BBAASSHH__CCMMDDSS is + unset, it loses its special properties, even if it is subse- + quently reset. BBAASSHH__CCOOMMMMAANNDD The command currently being executed or about to be executed, unless the shell is executing a command as the result of a trap, @@ -813,6 +831,10 @@ PPAARRAAMMEETTEERRSS ($${{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__LLOOAADDAABBLLEESS__PPAATTHH + A colon-separated list of directories in which the shell looks + for dynamically loadable builtins specified by the eennaabbllee com- + mand. BBAASSHH__RREEMMAATTCCHH An array variable whose members are assigned by the ==~~ binary operator to the [[[[ conditional command. The element with index @@ -834,8 +856,8 @@ PPAARRAAMMEETTEERRSS 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[[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). @@ -853,17 +875,15 @@ PPAARRAAMMEETTEERRSS 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). + shell functions and external commands invoked by the program- + mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__PPOOIINNTT - The index of the current cursor position relative to the begin- - ning of the current command. If the current cursor position is + The index of the current cursor position relative to the begin- + ning of the current command. If the current cursor position is at the end of the current command, the value of this variable is - equal to $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in - shell functions and external commands invoked by the pro- - grammable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn - below). + equal to $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in + shell functions and external commands invoked by the program- + mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__TTYYPPEE Set to an integer value corresponding to the type of completion attempted that caused a completion function to be called: _T_A_B, @@ -871,99 +891,98 @@ PPAARRAAMMEETTEERRSS 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). + shell functions and external commands invoked by the program- + mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__WWOORRDDBBRREEAAKKSS - The set of characters that the rreeaaddlliinnee library treats as word - separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS - is unset, it loses its special properties, even if it is subse- + The set of characters that the rreeaaddlliinnee library treats as word + separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS + is unset, it loses its special properties, even if it is subse- quently reset. CCOOMMPP__WWOORRDDSS - An array variable (see AArrrraayyss below) consisting of the individ- - ual words in the current command line. The line is split into - words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as + An array variable (see AArrrraayyss below) consisting of the individ- + ual words in the current command line. The line is split into + words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as described above. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see + tions invoked by the programmable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file - descriptors for output from and input to an unnamed coprocess + CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file + descriptors for output from and input to an unnamed coprocess (see CCoopprroocceesssseess above). DDIIRRSSTTAACCKK An array variable (see AArrrraayyss below) containing the current con- - tents of the directory stack. Directories appear in the stack - in the order they are displayed by the ddiirrss builtin. Assigning + tents of the directory stack. Directories appear in the stack + in the order they are displayed by the ddiirrss builtin. Assigning to members of this array variable may be used to modify directo- - ries already in the stack, but the ppuusshhdd and ppooppdd builtins must + ries already in the stack, but the ppuusshhdd and ppooppdd builtins must be used to add and remove directories. Assignment to this vari- - able will not change the current directory. If DDIIRRSSTTAACCKK is - unset, it loses its special properties, even if it is subse- + able will not change the current directory. If DDIIRRSSTTAACCKK is + unset, it loses its special properties, even if it is subse- quently reset. - EEUUIIDD Expands to the effective user ID of the current user, initial- + EEUUIIDD Expands to the effective user ID of the current user, initial- ized at shell startup. This variable is readonly. FFUUNNCCNNAAMMEE - An array variable containing the names of all shell functions + An array variable containing the names of all shell functions currently in the execution call stack. The element with index 0 is the name of any currently-executing shell function. The bot- - tom-most element (the one with the highest index) is "main". - This variable exists only when a shell function is executing. - Assignments to FFUUNNCCNNAAMMEE have no effect and return an error sta- - tus. If FFUUNNCCNNAAMMEE is unset, it loses its special properties, - even if it is subsequently reset. + tom-most element (the one with the highest index) is "main". + This variable exists only when a shell function is executing. + Assignments to FFUUNNCCNNAAMMEE have no effect. If FFUUNNCCNNAAMMEE is unset, + it loses its special properties, even if it is subsequently + reset. - This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. - Each element of FFUUNNCCNNAAMMEE has corresponding elements in - BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For - instance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file - $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The + This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. + Each element of FFUUNNCCNNAAMMEE has corresponding elements in + BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For + instance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file + $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The ccaalllleerr builtin displays the current call stack using this infor- mation. - GGRROOUUPPSS An array variable containing the list of groups of which the - 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. + GGRROOUUPPSS An array variable containing the list of groups of which the + current user is a member. Assignments to GGRROOUUPPSS have no effect. + If GGRROOUUPPSS is unset, it loses its special properties, even if it + is subsequently reset. HHIISSTTCCMMDD The history number, or index in the history list, of the current - command. If HHIISSTTCCMMDD is unset, it loses its special properties, + command. If HHIISSTTCCMMDD is unset, it loses its special properties, even if it is subsequently reset. HHOOSSTTNNAAMMEE Automatically set to the name of the current host. HHOOSSTTTTYYPPEE - Automatically set to a string that uniquely describes the type - of machine on which bbaasshh is executing. The default is system- + Automatically set to a string that uniquely describes the type + of machine on which bbaasshh is executing. The default is system- dependent. - LLIINNEENNOO Each time this parameter is referenced, the shell substitutes a - decimal number representing the current sequential line number - (starting with 1) within a script or function. When not in a - script or function, the value substituted is not guaranteed to + LLIINNEENNOO Each time this parameter is referenced, the shell substitutes a + decimal number representing the current sequential line number + (starting with 1) within a script or function. When not in a + script or function, the value substituted is not guaranteed to be meaningful. If LLIINNEENNOO is unset, it loses its special proper- ties, even if it is subsequently reset. MMAACCHHTTYYPPEE - Automatically set to a string that fully describes the system - type on which bbaasshh is executing, in the standard GNU _c_p_u_-_c_o_m_- + Automatically set to a string that fully describes the system + type on which bbaasshh is executing, in the standard GNU _c_p_u_-_c_o_m_- _p_a_n_y_-_s_y_s_t_e_m format. The default is system-dependent. MMAAPPFFIILLEE - An array variable (see AArrrraayyss below) created to hold the text + An array variable (see AArrrraayyss below) created to hold the text read by the mmaappffiillee builtin when no variable name is supplied. OOLLDDPPWWDD The previous working directory as set by the ccdd command. - OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss + OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss + OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOSSTTYYPPEE Automatically set to a string that describes the operating sys- - tem on which bbaasshh is executing. The default is system-depen- + OOSSTTYYPPEE Automatically set to a string that describes the operating sys- + tem on which bbaasshh is executing. The default is system-depen- dent. PPIIPPEESSTTAATTUUSS - An array variable (see AArrrraayyss below) containing a list of exit - status values from the processes in the most-recently-executed + An array variable (see AArrrraayyss below) containing a list of exit + status values from the processes in the most-recently-executed foreground pipeline (which may contain only a single command). - PPPPIIDD The process ID of the shell's parent. This variable is read- + PPPPIIDD The process ID of the shell's parent. This variable is read- only. PPWWDD The current working directory as set by the ccdd command. RRAANNDDOOMM Each time this parameter is referenced, a random integer between 0 and 32767 is generated. The sequence of random numbers may be initialized by assigning a value to RRAANNDDOOMM. If RRAANNDDOOMM is unset, - it loses its special properties, even if it is subsequently + it loses its special properties, even if it is subsequently reset. RREEAADDLLIINNEE__LLIINNEE The contents of the rreeaaddlliinnee line buffer, for use with "bind -x" @@ -971,86 +990,97 @@ PPAARRAAMMEETTEERRSS RREEAADDLLIINNEE__PPOOIINNTT The position of the insertion point in the rreeaaddlliinnee line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when + RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when no arguments are supplied. SSEECCOONNDDSS - Each time this parameter is referenced, the number of seconds - since shell invocation is returned. If a value is assigned to - SSEECCOONNDDSS, the value returned upon subsequent references is the - number of seconds since the assignment plus the value assigned. + Each time this parameter is referenced, the number of seconds + since shell invocation is returned. If a value is assigned to + SSEECCOONNDDSS, the value returned upon subsequent references is the + number of seconds since the assignment plus the value assigned. If SSEECCOONNDDSS is unset, it loses its special properties, even if it is subsequently reset. SSHHEELLLLOOPPTTSS - A colon-separated list of enabled shell options. Each word in - the list is a valid argument for the --oo option to the sseett + A colon-separated list of enabled shell options. Each word in + the list is a valid argument for the --oo option to the sseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options - appearing in SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If - this variable is in the environment when bbaasshh starts up, each - shell option in the list will be enabled before reading any + appearing in SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If + this variable is in the environment when bbaasshh starts up, each + shell option in the list will be enabled before reading any startup files. This variable is read-only. SSHHLLVVLL Incremented by one each time an instance of bbaasshh is started. UUIIDD Expands to the user ID of the current user, initialized at shell startup. This variable is readonly. - The following variables are used by the shell. In some cases, bbaasshh + The following variables are used by the shell. In some cases, bbaasshh assigns a default value to a variable; these cases are noted below. BBAASSHH__CCOOMMPPAATT - The value is used to set the shell's compatibility level. See - the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN - CCOOMMMMAANNDDSS for a description of the various compatibility levels - and their effects. The value may be a decimal number (e.g., - 4.2) or an integer (e.g., 42) corresponding to the desired com- - patibility level. If BBAASSHH__CCOOMMPPAATT is unset or set to the empty - string, the compatibility level is set to the default for the - current version. If BBAASSHH__CCOOMMPPAATT is set to a value that is not + The value is used to set the shell's compatibility level. See + the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN + CCOOMMMMAANNDDSS for a description of the various compatibility levels + and their effects. The value may be a decimal number (e.g., + 4.2) or an integer (e.g., 42) corresponding to the desired com- + patibility level. If BBAASSHH__CCOOMMPPAATT is unset or set to the empty + string, the compatibility level is set to the default for the + current version. If BBAASSHH__CCOOMMPPAATT is set to a value that is not one of the valid compatibility levels, the shell prints an error - message and sets the compatibility level to the default for the - current version. The valid compatibility levels correspond to - the compatibility options accepted by the sshhoopptt builtin + message and sets the compatibility level to the default for the + current version. The valid compatibility levels correspond to + the compatibility options accepted by the sshhoopptt builtin described below (for example, ccoommppaatt4422 means that 4.2 and 42 are valid values). The current version is also a valid value. BBAASSHH__EENNVV - If this parameter is set when bbaasshh is executing a shell script, - its value is interpreted as a filename containing commands to + If this parameter is set when bbaasshh is executing a shell script, + its value is interpreted as a filename containing commands to initialize the shell, as in _~_/_._b_a_s_h_r_c. The value of BBAASSHH__EENNVV is - subjected to parameter expansion, command substitution, and - arithmetic expansion before being interpreted as a filename. + subjected to parameter expansion, command substitution, and + arithmetic expansion before being interpreted as a filename. PPAATTHH is not used to search for the resultant filename. BBAASSHH__XXTTRRAACCEEFFDD - If set to an integer corresponding to a valid file descriptor, - bbaasshh will write the trace output generated when _s_e_t _-_x is - enabled to that file descriptor. The file descriptor is closed - when BBAASSHH__XXTTRRAACCEEFFDD is unset or assigned a new value. Unsetting - BBAASSHH__XXTTRRAACCEEFFDD or assigning it the empty string causes the trace - output to be sent to the standard error. Note that setting + If set to an integer corresponding to a valid file descriptor, + bbaasshh will write the trace output generated when _s_e_t _-_x is + enabled to that file descriptor. The file descriptor is closed + when BBAASSHH__XXTTRRAACCEEFFDD is unset or assigned a new value. Unsetting + BBAASSHH__XXTTRRAACCEEFFDD or assigning it the empty string causes the trace + output to be sent to the standard error. Note that setting BBAASSHH__XXTTRRAACCEEFFDD to 2 (the standard error file descriptor) and then unsetting it will result in the standard error being closed. - CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated - list of directories in which the shell looks for destination - directories specified by the ccdd command. A sample value is + CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated + list of directories in which the shell looks for destination + directories specified by the ccdd command. A sample value is ".:~:/usr". CCHHIILLDD__MMAAXX - Set the number of exited child status values for the shell to - remember. Bash will not allow this value to be decreased below - a POSIX-mandated minimum, and there is a maximum value (cur- - rently 8192) that this may not exceed. The minimum value is + Set the number of exited child status values for the shell to + remember. Bash will not allow this value to be decreased below + a POSIX-mandated minimum, and there is a maximum value (cur- + rently 8192) that this may not exceed. The minimum value is system-dependent. CCOOLLUUMMNNSS - Used by the sseelleecctt compound command to determine the terminal - width when printing selection lists. Automatically set if the - cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon + Used by the sseelleecctt compound command to determine the terminal + width when printing selection lists. Automatically set if the + cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon receipt of a SSIIGGWWIINNCCHH. CCOOMMPPRREEPPLLYY An array variable from which bbaasshh reads the possible completions - generated by a shell function invoked by the programmable com- - pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each + generated by a shell function invoked by the programmable com- + pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each array element contains one possible completion. - EEMMAACCSS If bbaasshh finds this variable in the environment when the shell - starts with value "t", it assumes that the shell is running in + EEMMAACCSS If bbaasshh finds this variable in the environment when the shell + starts with value "t", it assumes that the shell is running in an Emacs shell buffer and disables line editing. - EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in POSIX + EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in POSIX mode. + EEXXEECCIIGGNNOORREE + A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg) + defining the list of filenames to be ignored by command search + using PPAATTHH. Files whose full pathnames match one of these pat- + terns are not considered executable files for the purposes of + completion and command execution via PPAATTHH lookup. This does not + affect the behavior of the [[, tteesstt, and [[[[ commands. Full path- + names in the command hash table are not subject to EEXXEECCIIGGNNOORREE. + Use this variable to ignore shared library files that have the + executable bit set, but are not executable files. The pattern + matching honors the setting of the eexxttgglloobb shell option. FFCCEEDDIITT The default editor for the ffcc builtin command. FFIIGGNNOORREE A colon-separated list of suffixes to ignore when performing @@ -1106,69 +1136,73 @@ PPAARRAAMMEETTEERRSS 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. + history regardless of the value of HHIISSTTIIGGNNOORREE. The pattern + matching honors the setting of the eexxttgglloobb shell option. HHIISSTTSSIIZZEE - The number of commands to remember in the command history (see - HHIISSTTOORRYY below). If the value is 0, commands are not saved in + The number of commands to remember in the command history (see + HHIISSTTOORRYY below). If the value is 0, commands are not saved in the history list. Numeric values less than zero result in every - command being saved on the history list (there is no limit). - The shell sets the default value to 500 after reading any + command being saved on the history list (there is no limit). + The shell sets the default value to 500 after reading any startup files. HHIISSTTTTIIMMEEFFOORRMMAATT - If this variable is set and not null, its value is used as a + If this variable is set and not null, its value is used as a format string for _s_t_r_f_t_i_m_e(3) to print the time stamp associated - with each history entry displayed by the hhiissttoorryy builtin. If - this variable is set, time stamps are written to the history - file so they may be preserved across shell sessions. This uses - the history comment character to distinguish timestamps from + with each history entry displayed by the hhiissttoorryy builtin. If + this variable is set, time stamps are written to the history + file so they may be preserved across shell sessions. This uses + the history comment character to distinguish timestamps from other history lines. HHOOMMEE The home directory of the current user; the default argument for the ccdd builtin command. The value of this variable is also used when performing tilde expansion. HHOOSSTTFFIILLEE - Contains the name of a file in the same format as _/_e_t_c_/_h_o_s_t_s + Contains the name of a file in the same format as _/_e_t_c_/_h_o_s_t_s that should be read when the shell needs to complete a hostname. - The list of possible hostname completions may be changed while - the shell is running; the next time hostname completion is - attempted after the value is changed, bbaasshh adds the contents of - the new file to the existing list. If HHOOSSTTFFIILLEE is set, but has - no value, or does not name a readable file, bbaasshh attempts to - read _/_e_t_c_/_h_o_s_t_s to obtain the list of possible hostname comple- + The list of possible hostname completions may be changed while + the shell is running; the next time hostname completion is + attempted after the value is changed, bbaasshh adds the contents of + the new file to the existing list. If HHOOSSTTFFIILLEE is set, but has + no value, or does not name a readable file, bbaasshh attempts to + read _/_e_t_c_/_h_o_s_t_s to obtain the list of possible hostname comple- tions. When HHOOSSTTFFIILLEE is unset, the hostname list is cleared. - IIFFSS The _I_n_t_e_r_n_a_l _F_i_e_l_d _S_e_p_a_r_a_t_o_r that is used for word splitting - after expansion and to split lines into words with the rreeaadd + IIFFSS The _I_n_t_e_r_n_a_l _F_i_e_l_d _S_e_p_a_r_a_t_o_r that is used for word splitting + after expansion and to split lines into words with the rreeaadd builtin command. The default value is ``''. IIGGNNOORREEEEOOFF Controls the action of an interactive shell on receipt of an EEOOFF character as the sole input. If set, the value is the number of - consecutive EEOOFF characters which must be typed as the first - characters on an input line before bbaasshh exits. If the variable - exists but does not have a numeric value, or has no value, the - default value is 10. If it does not exist, EEOOFF signifies the + consecutive EEOOFF characters which must be typed as the first + characters on an input line before bbaasshh exits. If the variable + exists but does not have a numeric value, or has no value, the + default value is 10. If it does not exist, EEOOFF signifies the end of input to the shell. IINNPPUUTTRRCC - The filename for the rreeaaddlliinnee startup file, overriding the + The filename for the rreeaaddlliinnee startup file, overriding the default of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE below). - LLAANNGG Used to determine the locale category for any category not + LLAANNGG Used to determine the locale category for any category not specifically selected with a variable starting with LLCC__. - LLCC__AALLLL This variable overrides the value of LLAANNGG and any other LLCC__ + LLCC__AALLLL This variable overrides the value of LLAANNGG and any other LLCC__ variable specifying a locale category. LLCC__CCOOLLLLAATTEE - This variable determines the collation order used when sorting - the results of pathname expansion, and determines the behavior - of range expressions, equivalence classes, and collating + This variable determines the collation order used when sorting + the results of pathname expansion, and determines the behavior + of range expressions, equivalence classes, and collating sequences within pathname expansion and pattern matching. LLCC__CCTTYYPPEE - This variable determines the interpretation of characters and - the behavior of character classes within pathname expansion and + This variable determines the interpretation of characters and + the behavior of character classes within pathname expansion and pattern matching. LLCC__MMEESSSSAAGGEESS - This variable determines the locale used to translate double- + This variable determines the locale used to translate double- quoted strings preceded by a $$. LLCC__NNUUMMEERRIICC - This variable determines the locale category used for number + This variable determines the locale category used for number formatting. + LLCC__TTIIMMEE + This variable determines the locale category used for data and + time formatting. LLIINNEESS Used by the sseelleecctt compound command to determine the column length for printing selection lists. Automatically set if the cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon @@ -1186,14 +1220,15 @@ PPAARRAAMMEETTEERRSS MMAAIILLPPAATTHH A colon-separated list of filenames to be checked for mail. The message to be printed when mail arrives in a particular file may - be specified by separating the filename from the message with a - `?'. When used in the text of the message, $$__ expands to the + be specified by separating the filename from the message with a + `?'. When used in the text of the message, $$__ expands to the name of the current mailfile. Example: MMAAIILLPPAATTHH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"' - BBaasshh 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). + BBaasshh can be configured to supply a default value for this vari- + able (there is no value by default), but the location of the + user mail files that it uses is system dependent (e.g., + /var/mail/$$UUSSEERR). OOPPTTEERRRR If set to the value 1, bbaasshh displays error messages generated by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). OOPPTTEERRRR is initialized to 1 each time the shell is invoked or a @@ -1204,7 +1239,7 @@ PPAARRAAMMEETTEERRSS 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 + 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 @@ -1220,6 +1255,9 @@ PPAARRAAMMEETTEERRSS 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. + PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and displayed by interactive shells after reading a command and + before the command is executed. PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) and used as the primary prompt string. The default value is ``\\ss--\\vv\\$$ ''. @@ -1310,9 +1348,9 @@ PPAARRAAMMEETTEERRSS 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. + arithmetic expressions) and are zero-based; associative arrays are ref- + erenced using arbitrary strings. Unless otherwise noted, indexed array + indices must be non-negative integers. An indexed array is created automatically if any variable is assigned 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 @@ -1324,48 +1362,51 @@ PPAARRAAMMEETTEERRSS Associative arrays are created using ddeeccllaarree --AA _n_a_m_e. Attributes may be specified for an array variable using the ddeeccllaarree and - rreeaaddoonnllyy builtins. Each attribute applies to all members of an array. + rreeaaddoonnllyy builtins. Each attribute applies to all members of an array. - Arrays are assigned to using compound assignments of the form - _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the form [_s_u_b_- - _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but + Arrays are assigned to using compound assignments of the form + _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the form [_s_u_b_- + _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but _s_t_r_i_n_g. When assigning to indexed arrays, if the optional brackets and - subscript are supplied, that index is assigned to; otherwise the index - of the element assigned is the last index assigned to by the statement + subscript are supplied, that index is assigned to; otherwise the index + of the element assigned is the last index assigned to by the statement plus one. Indexing starts at zero. When assigning to an associative array, the subscript is required. - This syntax is also accepted by the ddeeccllaarree builtin. Individual array - elements may be assigned to using the _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e syntax - introduced above. When assigning to an indexed array, if _n_a_m_e is sub- - scripted by a negative number, that number is interpreted as relative - to one greater than the maximum index of _n_a_m_e, so negative indices + This syntax is also accepted by the ddeeccllaarree builtin. Individual array + elements may be assigned to using the _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e syntax + introduced above. When assigning to an indexed array, if _n_a_m_e is sub- + scripted by a negative number, that number is interpreted as relative + to one greater than the maximum index of _n_a_m_e, so negative indices count back from the end of the array, and an index of -1 references the last element. - Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. + Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. The braces are required to avoid conflicts with pathname expansion. If - _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These - subscripts differ only when the word appears within double quotes. If + _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These + subscripts differ only when the word appears within double quotes. If the word is double-quoted, ${_n_a_m_e[*]} expands to a single word with the - value of each array member separated by the first character of the IIFFSS + value of each array member separated by the first character of the IIFFSS special variable, and ${_n_a_m_e[@]} expands each element of _n_a_m_e to a sep- - arate word. When there are no array members, ${_n_a_m_e[@]} expands to - nothing. If the double-quoted expansion occurs within a word, the - expansion of the first parameter is joined with the beginning part of - the original word, and the expansion of the last parameter is joined - with the last part of the original word. This is analogous to the - expansion of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss - above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_- - _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele- - ments in the array. 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. + arate word. When there are no array members, ${_n_a_m_e[@]} expands to + nothing. If the double-quoted expansion occurs within a word, the + expansion of the first parameter is joined with the beginning part of + the original word, and the expansion of the last parameter is joined + with the last part of the original word. This is analogous to the + expansion of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss + above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_- + _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele- + ments in the array. If the _s_u_b_s_c_r_i_p_t used to reference an element of + an indexed array evaluates to a number less than zero, it is inter- + preted as relative to one greater than the maximum index of the array, + so negative indices count back from the end of the array, and an index + of -1 references the last element. + + Referencing an array variable without a subscript is equivalent to ref- + erencing the array with a subscript of 0. Any reference to a variable + using a valid subscript is legal, and bbaasshh will create an array if nec- + essary. An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. @@ -1405,6 +1446,10 @@ EEXXPPAANNSSIIOONN tilde, parameter, variable, and arithmetic expansion and command sub- stitution. + After these expansions are performed, quote characters present in the + original word are removed unless they have been quoted themselves + (_q_u_o_t_e _r_e_m_o_v_a_l). + Only brace expansion, word splitting, and pathname expansion can change the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the expansions @@ -1517,15 +1562,17 @@ EEXXPPAANNSSIIOONN 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. + If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), and + _p_a_r_a_m_e_t_e_r is not a _n_a_m_e_r_e_f, it introduces a level of variable indirec- + tion. BBaasshh uses the value of the variable formed from the rest of + _p_a_r_a_m_e_t_e_r as the name of the variable; this variable is then expanded + and that value is used in the rest of the substitution, rather than the + value of _p_a_r_a_m_e_t_e_r itself. This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. If + _p_a_r_a_m_e_t_e_r is a nameref, this expands to the name of the variable refer- + enced by _p_a_r_a_m_e_t_e_r instead of performing the complete indirect expan- + sion. The exceptions to this are the expansions of ${!!_p_r_e_f_i_x**} and + ${!!_n_a_m_e[_@]} described below. The exclamation point must immediately + follow the left brace in order to introduce indirection. In each of the cases below, _w_o_r_d is subject to tilde expansion, parame- ter expansion, command substitution, and arithmetic expansion. @@ -1661,12 +1708,14 @@ EEXXPPAANNSSIIOONN 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. + lowing _p_a_t_t_e_r_n may be omitted. If the nnooccaasseemmaattcchh shell option + is enabled, the match is performed without regard to the case of + alphabetic characters. If _p_a_r_a_m_e_t_e_r is @@ or **, the substitution + operation is applied to each positional parameter in turn, and + the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is an array + variable subscripted with @@ or **, the substitution operation is + applied to each member of the array in turn, and the expansion + is the resultant list. ${_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} @@ -1691,6 +1740,35 @@ EEXXPPAANNSSIIOONN to each member of the array in turn, and the expansion is the resultant list. + ${_p_a_r_a_m_e_t_e_r@@_o_p_e_r_a_t_o_r} + PPaarraammeetteerr ttrraannssffoorrmmaattiioonn. The expansion is either a transforma- + tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r + itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a + single letter: + + QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + quoted in a format that can be reused as input. + EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + with backslash escape sequences expanded as with the + $$''......'' quoting mechansim. + PP The expansion is a string that is the result of expanding + the value of _p_a_r_a_m_e_t_e_r as if it were a prompt string (see + PPRROOMMPPTTIINNGG below). + AA The expansion is a string in the form of an assignment + statement or ddeeccllaarree command that, if evaluated, will + recreate _p_a_r_a_m_e_t_e_r with its attributes and value. + aa The expansion is a string consisting of flag values rep- + resenting _p_a_r_a_m_e_t_e_r's attributes. + + If _p_a_r_a_m_e_t_e_r is @@ or **, the operation is applied to each posi- + tional parameter in turn, and the expansion is the resultant + list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or + **, the case modification operation is applied to each member of + the array in turn, and the expansion is the resultant list. + + The result of the expansion is subject to word splitting and + pathname expansion as described below. + 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: @@ -1699,51 +1777,53 @@ EEXXPPAANNSSIIOONN 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)). + BBaasshh performs the expansion by executing _c_o_m_m_a_n_d in a subshell environ- + ment and replacing the command substitution with the standard output of + the command, with any trailing newlines deleted. Embedded newlines are + not deleted, but they may be removed during word splitting. The com- + mand substitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but + faster $$((<< _f_i_l_e)). - When the old-style backquote form of substitution is used, backslash - retains its literal meaning except when followed by $$, ``, or \\. The + When the old-style backquote form of substitution is used, backslash + retains its literal meaning except when followed by $$, ``, or \\. The first backquote not preceded by a backslash terminates the command sub- - stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the + stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the parentheses make up the command; none are treated specially. Command substitutions may be nested. To nest when using the backquoted form, escape the inner backquotes with backslashes. - If the substitution appears within double quotes, word splitting and + If the substitution appears within double quotes, word splitting and pathname expansion are not performed on the results. AArriitthhmmeettiicc EExxppaannssiioonn - Arithmetic expansion allows the evaluation of an arithmetic expression - and the substitution of the result. The format for arithmetic expan- + Arithmetic expansion allows the evaluation of an arithmetic expression + and the substitution of the result. The format for arithmetic expan- sion is: $$((((_e_x_p_r_e_s_s_i_o_n)))) - The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a - double quote inside the parentheses is not treated specially. All + The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a + double quote inside the parentheses is not treated specially. All tokens in the expression undergo parameter and variable expansion, com- - mand substitution, and quote removal. The result is treated as the - arithmetic expression to be evaluated. Arithmetic expansions may be + mand substitution, and quote removal. The result is treated as the + arithmetic expression to be evaluated. Arithmetic expansions may be nested. - The evaluation is performed according to the rules listed below under + The evaluation is performed according to the rules listed below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If _e_x_p_r_e_s_s_i_o_n is invalid, bbaasshh prints a message indicating failure and no substitution occurs. PPrroocceessss SSuubbssttiittuuttiioonn - _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n 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. + _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred + to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The + process _l_i_s_t is run asynchronously, and its input or output appears as + a filename. This filename is passed as an argument to the current com- + mand as the result of the expansion. If the >>((_l_i_s_t)) form is used, + writing to the file will provide input for _l_i_s_t. If the <<((_l_i_s_t)) form + is used, the file passed as an argument should be read to obtain the + output of _l_i_s_t. Process substitution is supported on systems that sup- + port named pipes (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files. When available, process substitution is performed simultaneously with parameter and variable expansion, command substitution, and arithmetic @@ -1761,18 +1841,22 @@ EEXXPPAANNSSIIOONN 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 charac- - ter). 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. + than the default, then sequences of the whitespace characters ssppaaccee, + ttaabb, and nneewwlliinnee are ignored at the beginning and end of the word, as + long as the whitespace character is in the value of IIFFSS (an IIFFSS white- + space character). Any character in IIFFSS that is not IIFFSS whitespace, + along with any adjacent IIFFSS whitespace characters, delimits a field. A + sequence of IIFFSS whitespace characters is also treated as a delimiter. + 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. + Explicit null arguments ("""" or '''') are retained and passed to commands + as empty strings. Unquoted implicit null arguments, resulting from the + expansion of parameters that have no values, are removed. If a parame- + ter with no value is expanded within double quotes, a null argument + results and is retained and passed to a command as an empty string. + When a quoted null argument appears as part of a word whose expansion + is non-null, the null argument is removed. That is, the word -d'' + becomes -d after word splitting and null argument removal. Note that if no expansion occurs, no splitting is performed. @@ -1799,68 +1883,71 @@ EEXXPPAANNSSIIOONN 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. + list of matches. If the nnooccaasseegglloobb option is set, the matching against + the patterns in GGLLOOBBIIGGNNOORREE is performed without regard to case. The + filenames ````..'''' and ````....'''' are always ignored when GGLLOOBBIIGGNNOORREE is set + and not null. However, setting GGLLOOBBIIGGNNOORREE to a non-null value has the + effect of enabling the ddoottgglloobb shell option, so all other filenames + beginning with a ````..'''' will match. To get the old behavior of ignor- + ing filenames beginning with a ````..'''', make ````..**'''' one of the patterns + in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when GGLLOOBBIIGGNNOORREE is + unset. The pattern matching honors the setting of the eexxttgglloobb shell + option. PPaatttteerrnn MMaattcchhiinngg Any character that appears in a pattern, other than the special pattern - characters described below, matches itself. The NUL character may not - occur in a pattern. A backslash escapes the following character; the - escaping backslash is discarded when matching. The special pattern + characters described below, matches itself. The NUL character may not + occur in a pattern. A backslash escapes the following character; the + escaping backslash is discarded when matching. The special pattern characters must be quoted if they are to be matched literally. The special pattern characters have the following meanings: - ** Matches any string, including the null string. When the - 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- + ** 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 + [[......]] 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 + 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 + 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 + Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using the syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of the following classes defined in the POSIX standard: - aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt + aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt ppuunncctt ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt A character class matches any character belonging to that class. The wwoorrdd character class matches letters, digits, and the character _. - Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified + 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 + 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 + 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: @@ -1878,37 +1965,37 @@ EEXXPPAANNSSIIOONN QQuuoottee RReemmoovvaall After the preceding expansions, all unquoted occurrences of the charac- - ters \\, '', and "" that did not result from one of the above expansions + ters \\, '', and "" that did not result from one of the above expansions are removed. RREEDDIIRREECCTTIIOONN - Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d - using a special notation interpreted by the shell. Redirection allows - commands' file handles to be duplicated, opened, closed, made to refer + Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d + using a special notation interpreted by the shell. 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- + writes to. Redirection may also be used to modify file handles in the + current shell execution environment. The following redirection opera- tors may precede or appear anywhere within a _s_i_m_p_l_e _c_o_m_m_a_n_d or may fol- - low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear, + low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear, from left to right. - Each redirection that may be preceded by a file descriptor number may + Each redirection that may be preceded by a file descriptor number may instead be preceded by a word of the form {_v_a_r_n_a_m_e}. In this case, for each redirection operator except >&- and <&-, the shell will allocate a - file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e. - If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines + 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 + 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 + 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 @@ -1926,10 +2013,13 @@ RREEDDIIRREECCTTIIOONN 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: + tions, as described in the following table. If the operating system on + which bbaasshh is running provides these special files, bash will use them; + otherwise it will emulate them internally with the behavior described + below. //ddeevv//ffdd//_f_d - If _f_d is a valid integer, file descriptor _f_d is dupli- + If _f_d is a valid integer, file descriptor _f_d is dupli- cated. //ddeevv//ssttddiinn File descriptor 0 is duplicated. @@ -1939,22 +2029,22 @@ RREEDDIIRREECCTTIIOONN File descriptor 2 is duplicated. //ddeevv//ttccpp//_h_o_s_t//_p_o_r_t If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts + is an integer port number or service name, bbaasshh attempts to open 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 + 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- + Redirections using file descriptors greater than 9 should be used with + care, as they may conflict with file descriptors the shell uses inter- nally. RReeddiirreeccttiinngg IInnppuutt Redirection of input causes the file whose name results from the expan- - sion of _w_o_r_d to be opened for reading on file descriptor _n, or the + sion of _w_o_r_d to be opened for reading on file descriptor _n, or the standard input (file descriptor 0) if _n is not specified. The general format for redirecting input is: @@ -1962,40 +2052,39 @@ RREEDDIIRREECCTTIIOONN [_n]<<_w_o_r_d RReeddiirreeccttiinngg OOuuttppuutt - Redirection of output causes the file whose name results from the + Redirection of output causes the file whose name results from the expansion of _w_o_r_d to be opened for writing on file descriptor _n, or the standard output (file descriptor 1) if _n is not specified. If the file - does not exist it is created; if it does exist it is truncated to zero + does not exist it is created; if it does exist it is truncated to zero size. The general format for redirecting output is: [_n]>>_w_o_r_d - If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett - builtin has been enabled, the redirection will fail if the file whose - name results from the expansion of _w_o_r_d exists and is a regular file. + If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett + builtin has been enabled, the redirection will fail if the file whose + name results from the expansion of _w_o_r_d exists and is a regular file. If the redirection operator is >>||, or the redirection operator is >> and the nnoocclloobbbbeerr option to the sseett builtin command is not enabled, the re- direction is attempted even if the file named by _w_o_r_d exists. AAppppeennddiinngg RReeddiirreecctteedd OOuuttppuutt - Redirection of output in this fashion causes the file whose name - results from the expansion of _w_o_r_d to be opened for appending on file - descriptor _n, or the standard output (file descriptor 1) if _n is not + Redirection of output in this fashion causes the file whose name + results from the expansion of _w_o_r_d to be opened for appending on file + descriptor _n, or the standard output (file descriptor 1) if _n is not specified. If the file does not exist it is created. The general format for appending output is: [_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 + This construct allows both the standard output (file descriptor 1) and + the standard error output (file descriptor 2) to be redirected to the file whose name is the expansion of _w_o_r_d. - There are two formats for redirecting standard output and standard + There are two formats for redirecting standard output and standard error: &&>>_w_o_r_d @@ -2007,13 +2096,13 @@ RREEDDIIRREECCTTIIOONN >>_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 + 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 + 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: @@ -2027,22 +2116,23 @@ RREEDDIIRREECCTTIIOONN (see DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss below). HHeerree DDooccuummeennttss - This type of redirection instructs the shell to read input from the + This type of redirection instructs the shell to read input from the current source until a line containing only _d_e_l_i_m_i_t_e_r (with no trailing - blanks) is seen. All of the lines read up to that point are then used - as the standard input for a command. + blanks) is seen. All of the lines read up to that point are then used + as the standard input (or file descriptor _n if _n is specified) for a + command. The format of here-documents is: - <<<<[--]_w_o_r_d + [_n]<<<<[--]_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, or pathname expansion is performed on _w_o_r_d. If any part of + _w_o_r_d is 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 ``. @@ -2055,13 +2145,14 @@ RREEDDIIRREECCTTIIOONN HHeerree SSttrriinnggss A variant of here documents, the format is: - <<<<<<_w_o_r_d + [_n]<<<<<<_w_o_r_d The _w_o_r_d undergoes brace expansion, tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not per- - formed. The result is supplied as a single string to the command on - its standard input. + formed. The result is supplied as a single string, with a newline + appended, to the command on its standard input (or file descriptor _n if + _n is specified). DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss The redirection operator @@ -2069,22 +2160,22 @@ RREEDDIIRREECCTTIIOONN [_n]<<&&_w_o_r_d is used to duplicate input file descriptors. If _w_o_r_d expands to one or - more digits, the file descriptor denoted by _n is made to be a copy of - that file descriptor. If the digits in _w_o_r_d do not specify a file - descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- - ates to --, file descriptor _n is closed. If _n is not specified, the + more digits, the file descriptor denoted by _n is made to be a copy of + that file descriptor. If the digits in _w_o_r_d do not specify a file + descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- + ates to --, file descriptor _n is closed. If _n is not specified, the standard input (file descriptor 0) is used. The operator [_n]>>&&_w_o_r_d - is used similarly to duplicate output file descriptors. If _n is not - specified, the standard output (file descriptor 1) is used. If the - digits in _w_o_r_d do not specify a file descriptor open for output, a re- - direction error occurs. If _w_o_r_d evaluates to --, file descriptor _n is - closed. As a special case, if _n is omitted, and _w_o_r_d does not expand - to one or more digits or --, the standard output and standard error are + is used similarly to duplicate output file descriptors. If _n is not + specified, the standard output (file descriptor 1) is used. If the + digits in _w_o_r_d do not specify a file descriptor open for output, a re- + direction error occurs. If _w_o_r_d evaluates to --, file descriptor _n is + closed. As a special case, if _n is omitted, and _w_o_r_d does not expand + to one or more digits or --, the standard output and standard error are redirected as described previously. MMoovviinngg FFiillee DDeessccrriippttoorrss @@ -2092,7 +2183,7 @@ RREEDDIIRREECCTTIIOONN [_n]<<&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard input (file descriptor 0) if _n is not specified. _d_i_g_i_t is closed after being duplicated to _n. @@ -2100,7 +2191,7 @@ RREEDDIIRREECCTTIIOONN [_n]>>&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard output (file descriptor 1) if _n is not specified. OOppeenniinngg FFiillee DDeessccrriippttoorrss ffoorr RReeaaddiinngg aanndd WWrriittiinngg @@ -2108,118 +2199,118 @@ RREEDDIIRREECCTTIIOONN [_n]<<>>_w_o_r_d - causes the file whose name is the expansion of _w_o_r_d to be opened for - both reading and writing on file descriptor _n, or on file descriptor 0 + causes the file whose name is the expansion of _w_o_r_d to be opened for + both reading and writing on file descriptor _n, or on file descriptor 0 if _n is not specified. If the file does not exist, it is created. AALLIIAASSEESS - _A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as - the first word of a simple command. The shell maintains a list of - aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin - commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each - simple command, if unquoted, is checked to see if it has an alias. If - so, that word is replaced by the text of the alias. The characters //, - $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters + _A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as + the first word of a simple command. The shell maintains a list of + aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin + commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each + simple command, if unquoted, is checked to see if it has an alias. If + so, that word is replaced by the text of the alias. The characters //, + $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters listed above may not appear in an alias name. The replacement text may - contain any valid shell input, including shell metacharacters. The - first word of the replacement text is tested for aliases, but a word - that is identical to an alias being expanded is not expanded a second - time. This means that one may alias llss to llss --FF, for instance, and - bbaasshh does not try to recursively expand the replacement text. If the - last character of the alias value is a _b_l_a_n_k, then the next command + contain any valid shell input, including shell metacharacters. The + first word of the replacement text is tested for aliases, but a word + that is identical to an alias being expanded is not expanded a second + time. This means that one may alias llss to llss --FF, for instance, and + bbaasshh does not try to recursively expand the replacement text. If the + last character of the alias value is a _b_l_a_n_k, then the next command word following the alias is also checked for alias expansion. Aliases are created and listed with the aalliiaass command, and removed with the uunnaalliiaass command. - There is no mechanism for using arguments in the replacement text. If - arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS + There is no mechanism for using arguments in the replacement text. If + arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS below). - Aliases are not expanded when the shell is not interactive, unless the - eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of + Aliases are not expanded when the shell is not interactive, unless the + eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - The rules concerning the definition and use of aliases are somewhat - confusing. BBaasshh always reads at least one complete line of input - before executing any of the commands on that line. Aliases are - expanded when a command is read, not when it is executed. Therefore, - an alias definition appearing on the same line as another command does - not take effect until the next line of input is read. The commands + The rules concerning the definition and use of aliases are somewhat + confusing. BBaasshh always reads at least one complete line of input + before executing any of the commands on that line. Aliases are + expanded when a command is read, not when it is executed. Therefore, + an alias definition appearing on the same line as another command does + not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new - alias. This behavior is also an issue when functions are executed. - Aliases are expanded when a function definition is read, not when the - function is executed, because a function definition is itself a com- - 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. + alias. This behavior is also an issue when functions are executed. + Aliases are expanded when a function definition is read, not when the + function is executed, because a function definition is itself a com- + mand. As a consequence, aliases defined in a function are not avail- + able until after that function is executed. To be safe, always put + alias definitions on a separate line, and do not use aalliiaass in compound + commands. For almost every purpose, aliases are superseded by shell functions. FFUUNNCCTTIIOONNSS - A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, - stores a series of commands for later execution. When the name of a - shell function is used as a simple command name, the list of commands + A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, + stores a series of commands for later execution. When the name of a + shell function is used as a simple command name, the list of commands associated with that function name is executed. Functions are executed - in the context of the current shell; no new process is created to - interpret them (contrast this with the execution of a shell script). - When a function is executed, the arguments to the function become the + in the context of the current shell; no new process is created to + interpret them (contrast this with the execution of a shell script). + When a function is executed, the arguments to the function become the positional parameters during its execution. The special parameter ## is - updated to reflect the change. Special parameter 00 is unchanged. The - first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func- + updated to reflect the change. Special parameter 00 is unchanged. The + first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func- tion while the function is executing. - All other aspects of the shell execution environment are identical - between a function and its caller with these exceptions: the DDEEBBUUGG and - RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been - given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin - below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett - builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN - traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell + All other aspects of the shell execution environment are identical + between a function and its caller with these exceptions: the DDEEBBUUGG and + RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been + given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin + below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett + builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN + traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell option has been enabled. - Variables local to the function may be declared with the llooccaall builtin + Variables local to the function may be declared with the llooccaall builtin command. Ordinarily, variables and their values are shared between the function and its caller. - The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, - defines a maximum function nesting level. Function invocations that + The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, + defines a maximum function nesting level. Function invocations that exceed the limit cause the entire command to abort. - If the builtin command rreettuurrnn is executed in a function, the function - completes and execution resumes with the next command after the func- - tion call. Any command associated with the RREETTUURRNN trap is executed + If the builtin command rreettuurrnn is executed in a function, the function + completes and execution resumes with the next command after the func- + tion call. Any command associated with the RREETTUURRNN trap is executed before execution resumes. When a function completes, the values of the - positional parameters and the special parameter ## are restored to the + positional parameters and the special parameter ## are restored to the values they had prior to the function's execution. - Function names and definitions may be listed with the --ff option to the + Function names and definitions may be listed with the --ff option to the ddeeccllaarree or ttyyppeesseett builtin commands. The --FF option to ddeeccllaarree or ttyyppee-- - sseett will list the function names only (and optionally the source file - and line number, if the eexxttddeebbuugg shell option is enabled). Functions - may be exported so that subshells automatically have them defined with - the --ff option to the eexxppoorrtt builtin. A function definition may be - deleted using the --ff option to the uunnsseett builtin. Note that shell + sseett will list the function names only (and optionally the source file + and line number, if the eexxttddeebbuugg shell option is enabled). Functions + may be exported so that subshells automatically have them defined with + the --ff option to the eexxppoorrtt builtin. A function definition may be + deleted using the --ff option to the uunnsseett builtin. Note that shell functions and variables with the same name may result in multiple iden- - tically-named entries in the environment passed to the shell's chil- + tically-named entries in the environment passed to the shell's chil- dren. Care should be taken in cases where this may cause a problem. Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit - the depth of the function call stack and restrict the number of func- - tion invocations. By default, no limit is imposed on the number of + the depth of the function call stack and restrict the number of func- + tion invocations. By default, no limit is imposed on the number of recursive calls. AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN - The shell allows arithmetic expressions to be evaluated, under certain - circumstances (see the lleett and ddeeccllaarree builtin commands and AArriitthhmmeettiicc - EExxppaannssiioonn). Evaluation is done in fixed-width integers with no check - for overflow, though division by 0 is trapped and flagged as an error. - The operators and their precedence, associativity, and values are the - same as in the C language. The following list of operators is grouped - into levels of equal-precedence operators. The levels are listed in - order of decreasing precedence. + The shell allows arithmetic expressions to be evaluated, under certain + circumstances (see the lleett and ddeeccllaarree builtin commands, the (((( com- + pound command, and AArriitthhmmeettiicc EExxppaannssiioonn). Evaluation is done in fixed- + width integers with no check for overflow, though division by 0 is + trapped and flagged as an error. The operators and their precedence, + associativity, and values are the same as in the C language. The fol- + lowing list of operators is grouped into levels of equal-precedence + operators. The levels are listed in order of decreasing precedence. _i_d++++ _i_d---- variable post-increment and post-decrement @@ -2246,40 +2337,43 @@ AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN _e_x_p_r_1 ,, _e_x_p_r_2 comma - Shell variables are allowed as operands; parameter expansion is per- + Shell variables are allowed as operands; parameter expansion is per- formed before the expression is evaluated. Within an expression, shell - variables may also be referenced by name without using the parameter - expansion syntax. A shell variable that is null or unset evaluates to + variables may also be referenced by name without using the parameter + expansion syntax. A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax. - The value of a variable is evaluated as an arithmetic expression when - it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r + The value of a variable is evaluated as an arithmetic expression when + it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r attribute using ddeeccllaarree --ii is assigned a value. A null value evaluates - to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on + to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on to be used in an expression. Constants with a leading 0 are interpreted as octal numbers. A leading - 0x or 0X denotes hexadecimal. Otherwise, numbers take the form - [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64 - representing the arithmetic base, and _n is a number in that base. If - _b_a_s_e_# is omitted, then base 10 is used. When specifying _n, the digits - greater< than 9 are represented by the lowercase letters, the uppercase + 0x or 0X denotes hexadecimal. Otherwise, numbers take the form + [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64 + representing the arithmetic base, and _n is a number in that base. If + _b_a_s_e_# is omitted, then base 10 is used. When specifying _n, the digits + greater than 9 are represented by the lowercase letters, the uppercase letters, @, and _, in that order. If _b_a_s_e is less than or equal to 36, - lowercase and uppercase letters may be used interchangeably to repre- + lowercase and uppercase letters may be used interchangeably to repre- sent numbers between 10 and 35. - Operators are evaluated in order of precedence. Sub-expressions in - parentheses are evaluated first and may override the precedence rules + Operators are evaluated in order of precedence. Sub-expressions in + parentheses are evaluated first and may override the precedence rules above. CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS - Conditional expressions are used by the [[[[ compound command and the - tteesstt and [[ builtin commands to test file attributes and perform string - and arithmetic comparisons. Expressions are formed from the following - unary or binary primaries. 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. + Conditional expressions are used by the [[[[ compound command and the + tteesstt and [[ builtin commands to test file attributes and perform string + and arithmetic comparisons. Expressions are formed from the following + unary or binary primaries. BBaasshh handles several filenames specially + when they are used in expressions. If the operating system on which + bbaasshh is running provides these special files, bash will use them; oth- + erwise it will emulate them internally with this behavior: If any _f_i_l_e + argument to one of the primaries is of the form _/_d_e_v_/_f_d_/_n, then file + descriptor _n is checked. If the _f_i_l_e argument to one of the primaries + is one of _/_d_e_v_/_s_t_d_i_n, _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, + 1, or 2, respectively, is checked. Unless otherwise specified, primaries that operate on files follow sym- bolic links and operate on the target of the link, rather than the link @@ -2395,83 +2489,83 @@ SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN 4. The text after the == in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic - expansion, and quote removal before being assigned to the vari- + expansion, and quote removal before being assigned to the vari- able. If no command name results, the variable assignments affect the current - shell environment. Otherwise, the variables are added to the environ- - ment of the executed command and do not affect the current shell envi- - ronment. If any of the assignments attempts to assign a value to a - readonly variable, an error occurs, and the command exits with a non- + shell environment. Otherwise, the variables are added to the environ- + ment of the executed command and do not affect the current shell envi- + ronment. If any of the assignments attempts to assign a value to a + readonly variable, an error occurs, and the command exits with a non- zero status. - If no command name results, redirections are performed, but do not - affect the current shell environment. A redirection error causes the + If no command name results, redirections are performed, but do not + affect the current shell environment. A redirection error causes the command to exit with a non-zero status. - If there is a command name left after expansion, execution proceeds as - described below. Otherwise, the command exits. If one of the expan- - sions contained a command substitution, the exit status of the command - is the exit status of the last command substitution performed. If + If there is a command name left after expansion, execution proceeds as + described below. Otherwise, the command exits. If one of the expan- + sions contained a command substitution, the exit status of the command + is the exit status of the last command substitution performed. If there were no command substitutions, the command exits with a status of zero. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN - After a command has been split into words, if it results in a simple - command and an optional list of arguments, the following actions are + After a command has been split into words, if it results in a simple + command and an optional list of arguments, the following actions are taken. - If the command name contains no slashes, the shell attempts to locate - it. If there exists a shell function by that name, that function is - invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a - function, the shell searches for it in the list of shell builtins. If + If the command name contains no slashes, the shell attempts to locate + it. If there exists a shell function by that name, that function is + invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a + function, the shell searches for it in the list of shell builtins. If a match is found, that builtin is invoked. - If the name is neither a shell function nor a builtin, and contains no - slashes, bbaasshh searches each element of the PPAATTHH for a directory con- - taining an executable file by that name. BBaasshh uses a hash table to - remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is - performed only if the command is not found in the hash table. If the + If the name is neither a shell function nor a builtin, and contains no + slashes, bbaasshh searches each element of the PPAATTHH for a directory con- + taining an executable file by that name. BBaasshh uses a hash table to + remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is + performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named ccoommmmaanndd__nnoott__ffoouunndd__hhaannddllee. If that function exists, it is invoked - with the original command and the original command's arguments as its - arguments, and the function's exit status becomes the exit status of - the shell. If that function is not defined, the shell prints an error + with the original command and the original command's arguments as its + arguments, and the function's exit status becomes the exit status of + the shell. If that function is not defined, the shell prints an error message and returns an exit status of 127. - If the search is successful, or if the command name contains one or + If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate execu- tion environment. Argument 0 is set to the name given, and the remain- ing arguments to the command are set to the arguments given, if any. - If this execution fails because the file is not in executable format, - and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a - file containing shell commands. A subshell is spawned to execute it. - This subshell reinitializes itself, so that the effect is as if a new - shell had been invoked to handle the script, with the exception that - the locations of commands remembered by the parent (see hhaasshh below + If this execution fails because the file is not in executable format, + and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a + file containing shell commands. A subshell is spawned to execute it. + This subshell reinitializes itself, so that the effect is as if a new + shell had been invoked to handle the script, with the exception that + the locations of commands remembered by the parent (see hhaasshh below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are retained by the child. - If the program is a file beginning with ##!!, the remainder of the first - line specifies an interpreter for the program. The shell executes the + If the program is a file beginning with ##!!, the remainder of the first + line specifies an interpreter for the program. The shell executes the specified interpreter on operating systems that do not handle this exe- cutable format themselves. The arguments to the interpreter consist of - a single optional argument following the interpreter name on the first - line of the program, followed by the name of the program, followed by + a single optional argument following the interpreter name on the first + line of the program, followed by the name of the program, followed by the command arguments, if any. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT - The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of the follow- + The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of the follow- ing: - +o open files inherited by the shell at invocation, as modified by + +o open files inherited by the shell at invocation, as modified by redirections supplied to the eexxeecc builtin - +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or + +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or inherited by the shell at invocation - +o the file creation mode mask as set by uummaasskk or inherited from + +o the file creation mode mask as set by uummaasskk or inherited from the shell's parent +o current traps set by ttrraapp @@ -2479,111 +2573,112 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN +o shell parameters that are set by variable assignment or with sseett or inherited from the shell's parent in the environment - +o shell functions defined during execution or inherited from the + +o shell functions defined during execution or inherited from the shell's parent in the environment - +o options enabled at invocation (either by default or with com- + +o options enabled at invocation (either by default or with com- mand-line arguments) or by sseett +o options enabled by sshhoopptt +o shell aliases defined with aalliiaass - +o various process IDs, including those of background jobs, the + +o various process IDs, including those of background jobs, the value of $$$$, and the value of PPPPIIDD - When a simple command other than a builtin or shell function is to be - executed, it is invoked in a separate execution environment that con- - sists of the following. Unless otherwise noted, the values are inher- + When a simple command other than a builtin or shell function is to be + executed, it is invoked in a separate execution environment that con- + sists of the following. Unless otherwise noted, the values are inher- ited from the shell. - +o the shell's open files, plus any modifications and additions + +o the shell's open files, plus any modifications and additions specified by redirections to the command +o the current working directory +o the file creation mode mask - +o shell variables and functions marked for export, along with + +o shell variables and functions marked for export, along with variables exported for the command, passed in the environment +o traps caught by the shell are reset to the values inherited from the shell's parent, and traps ignored by the shell are ignored - A command invoked in this separate environment cannot affect the + A command invoked in this separate environment cannot affect the shell's execution environment. - Command substitution, commands grouped with parentheses, and asynchro- + Command substitution, commands grouped with parentheses, and asynchro- nous commands are invoked in a subshell environment that is a duplicate - of the shell environment, except that traps caught by the shell are + of the shell environment, except that traps caught by the shell are reset to the values that the shell inherited from its parent at invoca- tion. Builtin commands that are invoked as part of a pipeline are also executed in a subshell environment. Changes made to the subshell envi- ronment cannot affect the shell's execution environment. Subshells spawned to execute command substitutions inherit the value of - the --ee option from the parent shell. When not in _p_o_s_i_x mode, bbaasshh + the --ee option from the parent shell. When not in _p_o_s_i_x mode, bbaasshh clears the --ee option in such subshells. - If a command is followed by a && and job control is not active, the - default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. - Otherwise, the invoked command inherits the file descriptors of the + If a command is followed by a && and job control is not active, the + default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. + Otherwise, the invoked command inherits the file descriptors of the calling shell as modified by redirections. EENNVVIIRROONNMMEENNTT - When a program is invoked it is given an array of strings called the + When a program is invoked it is given an array of strings called the _e_n_v_i_r_o_n_m_e_n_t. This is a list of _n_a_m_e-_v_a_l_u_e pairs, of the form _n_a_m_e=_v_a_l_u_e. - The shell provides several ways to manipulate the environment. On + The shell provides several ways to manipulate the environment. On invocation, the shell scans its own environment and creates a parameter - for each name found, automatically marking it for _e_x_p_o_r_t to child pro- - cesses. Executed commands inherit the environment. The eexxppoorrtt and - ddeeccllaarree --xx commands allow parameters and functions to be added to and + for each name found, automatically marking it for _e_x_p_o_r_t to child pro- + cesses. Executed commands inherit the environment. The eexxppoorrtt and + ddeeccllaarree --xx commands allow parameters and functions to be added to and deleted from the environment. If the value of a parameter in the envi- - ronment is modified, the new value becomes part of the environment, - replacing the old. The environment inherited by any executed command - consists of the shell's initial environment, whose values may be modi- - fied in the shell, less any pairs removed by the uunnsseett command, plus + ronment is modified, the new value becomes part of the environment, + replacing the old. The environment inherited by any executed command + consists of the shell's initial environment, whose values may be modi- + fied in the shell, less any pairs removed by the uunnsseett command, plus any additions via the eexxppoorrtt and ddeeccllaarree --xx commands. - The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented - temporarily by prefixing it with parameter assignments, as described + The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented + temporarily by prefixing it with parameter assignments, as described above in PPAARRAAMMEETTEERRSS. These assignment statements affect only the envi- ronment seen by that command. - If the --kk option is set (see the sseett builtin command below), then _a_l_l - parameter assignments are placed in the environment for a command, not + If the --kk option is set (see the sseett builtin command below), then _a_l_l + parameter assignments are placed in the environment for a command, not just those that precede the command name. - When bbaasshh invokes an external command, the variable __ is set to the + 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 + The exit status of an executed command is the value returned by the _w_a_i_t_p_i_d system call or equivalent function. Exit statuses fall between - 0 and 255, though, as explained below, the shell may use values above + 0 and 255, though, as explained below, the shell may use values above 125 specially. Exit statuses from shell builtins and compound commands - are also limited to this range. Under certain circumstances, the shell + are also limited to this range. Under certain circumstances, the shell will use special values to indicate specific failure modes. For the shell's purposes, a command which exits with a zero exit status - has succeeded. An exit status of zero indicates success. A non-zero - exit status indicates failure. When a command terminates on a fatal + has succeeded. An exit status of zero indicates success. A non-zero + exit status indicates failure. When a command terminates on a fatal signal _N, bbaasshh uses the value of 128+_N as the exit status. - If a command is not found, the child process created to execute it - returns a status of 127. If a command is found but is not executable, + If a command is not found, the child process created to execute it + returns a status of 127. If a command is found but is not executable, the return status is 126. If a command fails because of an error during expansion or redirection, the exit status is greater than zero. - Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and - non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins - return an exit status of 2 to indicate incorrect usage. + 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, generally + invalid options or missing arguments. 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 @@ -2706,15 +2801,16 @@ JJOOBB CCOONNTTRROOLL 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 + needs more input to complete a command. BBaasshh displays PPSS00 after it + reads a command but before executing it. BBaasshh allows these prompt + strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows: \\aa an ASCII bell character (07) - \\dd the date in "Weekday Month Date" format (e.g., "Tue May + \\dd the date in "Weekday Month Date" format (e.g., "Tue May 26") \\DD{{_f_o_r_m_a_t}} - the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is - inserted into the prompt string; an empty _f_o_r_m_a_t results + the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is + inserted into the prompt string; an empty _f_o_r_m_a_t results in a locale-specific time representation. The braces are required \\ee an ASCII escape character (033) @@ -2724,7 +2820,7 @@ PPRROOMMPPTTIINNGG \\ll the basename of the shell's terminal device name \\nn newline \\rr carriage return - \\ss the name of the shell, the basename of $$00 (the portion + \\ss the name of the shell, the basename of $$00 (the portion following the final slash) \\tt the current time in 24-hour HH:MM:SS format \\TT the current time in 12-hour HH:MM:SS format @@ -2810,19 +2906,19 @@ RREEAADDLLIINNEE M-Control-u: universal-argument or C-Meta-u: universal-argument - into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_- + into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_- _s_a_l_-_a_r_g_u_m_e_n_t. - The following symbolic character names are recognized: _R_U_B_O_U_T, _D_E_L, + The following symbolic character names are recognized: _R_U_B_O_U_T, _D_E_L, _E_S_C, _L_F_D, _N_E_W_L_I_N_E, _R_E_T, _R_E_T_U_R_N, _S_P_C, _S_P_A_C_E, and _T_A_B. - In addition to command names, readline allows keys to be bound to a + In addition to command names, readline allows keys to be bound to a string that is inserted when the key is pressed (a _m_a_c_r_o). RReeaaddlliinnee KKeeyy BBiinnddiinnggss - The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple. - All that is required is the name of the command or the text of a macro - and a key sequence to which it should be bound. The name may be speci- + The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple. + All that is required is the name of the command or the text of a macro + and a key sequence to which it should be bound. The name may be speci- fied in one of two ways: as a symbolic key name, possibly with _M_e_t_a_- or _C_o_n_t_r_o_l_- prefixes, or as a key sequence. @@ -2833,15 +2929,15 @@ RREEAADDLLIINNEE Meta-Rubout: backward-kill-word Control-o: "> output" - In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt, - _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to - run the macro expressed on the right hand side (that is, to insert the + In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt, + _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to + run the macro expressed on the right hand side (that is, to insert the text ``> output'' into the line). - In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs - from kkeeyynnaammee above in that strings denoting an entire key sequence may - be specified by placing the sequence within double quotes. Some GNU - Emacs style key escapes can be used, as in the following example, but + In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs + from kkeeyynnaammee above in that strings denoting an entire key sequence may + be specified by placing the sequence within double quotes. Some GNU + Emacs style key escapes can be used, as in the following example, but the symbolic character names are not recognized. "\C-u": universal-argument @@ -2849,7 +2945,7 @@ RREEAADDLLIINNEE "\e[11~": "Function Key 1" In this example, _C_-_u is again bound to the function uunniivveerrssaall--aarrgguummeenntt. - _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is + _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is bound to insert the text ``Function Key 1''. The full set of GNU Emacs style escape sequences is @@ -2860,7 +2956,7 @@ RREEAADDLLIINNEE \\"" literal " \\'' literal ' - In addition to the GNU Emacs style escape sequences, a second set of + In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available: \\aa alert (bell) \\bb backspace @@ -2870,20 +2966,20 @@ RREEAADDLLIINNEE \\rr carriage return \\tt horizontal tab \\vv vertical tab - \\_n_n_n the eight-bit character whose value is the octal value + \\_n_n_n the eight-bit character whose value is the octal value _n_n_n (one to three digits) - \\xx_H_H the eight-bit character whose value is the hexadecimal + \\xx_H_H the eight-bit character whose value is the hexadecimal value _H_H (one or two hex digits) When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a func- - tion name. In the macro body, the backslash escapes described above - are expanded. Backslash will quote any other character in the macro + tion name. In the macro body, the backslash escapes described above + are expanded. Backslash will quote any other character in the macro text, including " and '. - BBaasshh allows the current readline key bindings to be displayed or modi- - fied with the bbiinndd builtin command. The editing mode may be switched - during interactive use by using the --oo option to the sseett builtin com- + BBaasshh allows the current readline key bindings to be displayed or modi- + fied with the bbiinndd builtin command. The editing mode may be switched + during interactive use by using the --oo option to the sseett builtin com- mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). RReeaaddlliinnee VVaarriiaabblleess @@ -2893,85 +2989,114 @@ RREEAADDLLIINNEE sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e - Except where noted, readline variables can take the values OOnn or OOffff - (without regard to case). Unrecognized variable names are ignored. - When a variable value is read, empty or null values, "on" (case-insen- + Except where noted, readline variables can take the values OOnn or OOffff + (without regard to case). Unrecognized variable names are ignored. + When a variable value is read, empty or null values, "on" (case-insen- sitive), and "1" are equivalent to OOnn. All other values are equivalent to OOffff. The variables and their default values are: bbeellll--ssttyyllee ((aauuddiibbllee)) - Controls what happens when readline wants to ring the terminal + Controls what happens when readline wants to ring the terminal bell. If set to nnoonnee, readline never rings the bell. If set to - vviissiibbllee, readline uses a visible bell if one is available. If + vviissiibbllee, readline uses a visible bell if one is available. If set to aauuddiibbllee, readline attempts to ring the terminal's bell. bbiinndd--ttttyy--ssppeecciiaall--cchhaarrss ((OOnn)) - If set to OOnn, readline attempts to bind the control characters + If set to OOnn, readline attempts to bind the control characters treated specially by the kernel's terminal driver to their read- line equivalents. + bblliinnkk--mmaattcchhiinngg--ppaarreenn ((OOffff)) + If set to OOnn, readline attempts to briefly move the cursor to an + opening parenthesis when a closing parenthesis is inserted. + ccoolloorreedd--ccoommpplleettiioonn--pprreeffiixx ((OOffff)) + If set to OOnn, when listing completions, readline displays the + common prefix of the set of possible completions using a differ- + ent color. The color definitions are taken from the value of + the LLSS__CCOOLLOORRSS environment variable. ccoolloorreedd--ssttaattss ((OOffff)) - If set to OOnn, readline displays possible completions using dif- - ferent colors to indicate their file type. The color defini- - tions are taken from the value of the LLSS__CCOOLLOORRSS environment + If set to OOnn, readline displays possible completions using dif- + ferent colors to indicate their file type. The color defini- + tions are taken from the value of the LLSS__CCOOLLOORRSS environment variable. ccoommmmeenntt--bbeeggiinn ((````##'''')) - The string that is inserted when the readline iinnsseerrtt--ccoommmmeenntt + The string that is inserted when the readline iinnsseerrtt--ccoommmmeenntt command is executed. This command is bound to MM--## in emacs mode and to ## in vi command mode. + ccoommpplleettiioonn--ddiissppllaayy--wwiiddtthh ((--11)) + The number of screen columns used to display possible matches + when performing completion. The value is ignored if it is less + than 0 or greater than the terminal screen width. A value of 0 + will cause matches to be displayed one per line. The default + value is -1. ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff)) If set to OOnn, readline performs filename matching and completion in a case-insensitive fashion. + ccoommpplleettiioonn--mmaapp--ccaassee ((OOffff)) + If set to OOnn, and ccoommpplleettiioonn--iiggnnoorree--ccaassee is enabled, readline + treats hyphens (_-) and underscores (__) as equivalent when per- + forming case-insensitive filename matching and completion. ccoommpplleettiioonn--pprreeffiixx--ddiissppllaayy--lleennggtthh ((00)) - The length in characters of the common prefix of a list of pos- - sible completions that is displayed without modification. When - set to a value greater than zero, common prefixes longer than - this value are replaced with an ellipsis when displaying possi- + The length in characters of the common prefix of a list of pos- + sible completions that is displayed without modification. When + set to a value greater than zero, common prefixes longer than + this value are replaced with an ellipsis when displaying possi- ble completions. ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000)) - This determines when the user is queried about viewing the num- - ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- - ttiioonnss command. It may be set to any integer value greater than - or equal to zero. If the number of possible completions is + This determines when the user is queried about viewing the num- + ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- + ttiioonnss command. It may be set to any integer value greater than + or equal to zero. If the number of possible completions is greater than or equal to the value of this variable, the user is - asked whether or not he wishes to view them; otherwise they are + asked whether or not he wishes to view them; otherwise they are simply listed on the terminal. ccoonnvveerrtt--mmeettaa ((OOnn)) - If set to OOnn, readline will convert characters with the eighth + If set to OOnn, readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and - prefixing an escape character (in effect, using escape as the - _m_e_t_a _p_r_e_f_i_x). + prefixing an escape character (in effect, using escape as the + _m_e_t_a _p_r_e_f_i_x). The default is _O_n, but readline will set it to + _O_f_f if the locale contains eight-bit characters. ddiissaabbllee--ccoommpplleettiioonn ((OOffff)) If set to OOnn, readline will inhibit word completion. Completion characters will be inserted into the line as if they had been 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. + 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. + eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOffff)) + When set to OOnn, readline will configure the terminal in a way + that will enable it to insert each paste into the editing buffer + as a single string of characters, instead of treating each char- + acter as if it had been read from the keyboard. This can pre- + vent pasted characters from being interpreted as editing com- + mands. eennaabbllee--kkeeyyppaadd ((OOffff)) When set to OOnn, readline will try to enable the application key- - pad when it is called. Some systems need this to enable the + pad when it is called. Some systems need this to enable the arrow keys. eennaabbllee--mmeettaa--kkeeyy ((OOnn)) - When set to OOnn, readline will try to enable any meta modifier - key the terminal claims to support when it is called. On many + When set to OOnn, readline will try to enable any meta modifier + key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. eexxppaanndd--ttiillddee ((OOffff)) - If set to OOnn, tilde expansion is performed when readline + If set to OOnn, tilde expansion is performed when readline attempts word completion. hhiissttoorryy--pprreesseerrvvee--ppooiinntt ((OOffff)) - If set to OOnn, the history code attempts to place point at the - same location on each history line retrieved with pprreevviioouuss--hhiiss-- + If set to OOnn, the history code attempts to place point at the + same location on each history line retrieved with pprreevviioouuss--hhiiss-- ttoorryy or nneexxtt--hhiissttoorryy. - hhiissttoorryy--ssiizzee ((00)) - Set the maximum number of history entries saved in the history - list. If set to zero, any existing history entries are deleted + hhiissttoorryy--ssiizzee ((uunnsseett)) + 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. + the number of history entries is not limited. By default, the + number of history entries is set to the value of the HHIISSTTSSIIZZEE + shell variable. If an attempt is made to set _h_i_s_t_o_r_y_-_s_i_z_e to a + non-numeric value, the maximum number of history entries will be + set to 500. 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 @@ -2979,9 +3104,11 @@ RREEAADDLLIINNEE 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), + will not strip the eighth 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. + mmeettaa--ffllaagg is a synonym for this variable. The default is _O_f_f, + but readline will set it to _O_n if the locale contains eight-bit + characters. iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[CC--JJ'''')) The string of characters that should terminate an incremental search without subsequently executing the character as a com- @@ -2993,6 +3120,14 @@ RREEAADDLLIINNEE _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the value of eeddiittiinngg--mmooddee also affects the default keymap. + eemmaaccss--mmooddee--ssttrriinngg ((@@)) + This string is displayed immediately before the last line of the + primary prompt when emacs editing mode is active. The value is + expanded like a key binding, so the standard set of meta- and + control prefixes and backslash escape sequences is available. + Use the \1 and \2 escapes to begin and end sequences of non- + printing characters, which can be used to embed a terminal con- + trol sequence into the mode string. kkeeyysseeqq--ttiimmeeoouutt ((550000)) Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when reading an ambiguous key sequence (one that can form a complete @@ -3026,80 +3161,98 @@ RREEAADDLLIINNEE 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. + The default is _O_f_f, but readline will set it to _O_n if the locale + contains eight-bit characters. ppaaggee--ccoommpplleettiioonnss ((OOnn)) - If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- + If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- play a screenful of possible completions at a time. pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff)) - If set to OOnn, readline will display completions with matches - sorted horizontally in alphabetical order, rather than down the + If set to OOnn, readline will display completions with matches + sorted horizontally in alphabetical order, rather than down the screen. rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff)) - If set to OOnn, readline will undo all changes to history lines + If set to OOnn, readline will undo all changes to history lines before returning when aacccceepptt--lliinnee is executed. By default, his- - tory lines may be modified and retain individual undo lists + tory lines may be modified and retain individual undo lists across calls to rreeaaddlliinnee. sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff)) - This alters the default behavior of the completion functions. + This alters the default behavior of the completion functions. If set to OOnn, words which have more than one possible completion - cause the matches to be listed immediately instead of ringing + cause the matches to be listed immediately instead of ringing the bell. sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff)) - This alters the default behavior of the completion functions in + This alters the default behavior of the completion functions in a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to OOnn, words - which have more than one possible completion without any possi- - ble partial completion (the possible completions don't share a - common prefix) cause the matches to be listed immediately + 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 + 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 + If set to OOnn, this alters the default completion behavior when + inserting a single match into the line. It's only active when + performing completion in the middle of a word. If enabled, + readline does not insert characters from the completion that + match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. + vvii--ccmmdd--mmooddee--ssttrriinngg ((((ccmmdd)))) + This string is displayed immediately before the last line of the + primary prompt when vi editing mode is active and in command + mode. The value is expanded like a key binding, so the standard + set of meta- and control prefixes and backslash escape sequences + is available. Use the \1 and \2 escapes to begin and end + sequences of non-printing characters, which can be used to embed + a terminal control sequence into the mode string. + vvii--iinnss--mmooddee--ssttrriinngg ((((iinnss)))) + This string is displayed immediately before the last line of the + primary prompt when vi editing mode is active and in insertion + mode. The value is expanded like a key binding, so the standard + set of meta- and control prefixes and backslash escape sequences + is available. Use the \1 and \2 escapes to begin and end + sequences of non-printing characters, which can be used to embed + a terminal control sequence into the mode string. vviissiibbllee--ssttaattss ((OOffff)) - If set to OOnn, a character denoting a file's type as reported by - _s_t_a_t(2) is appended to the filename when listing possible com- + If set to OOnn, a character denoting a file's type as reported by + _s_t_a_t(2) is appended to the filename when listing possible com- pletions. RReeaaddlliinnee CCoonnddiittiioonnaall CCoonnssttrruuccttss - Readline implements a facility similar in spirit to the conditional - compilation features of the C preprocessor which allows key bindings - and variable settings to be performed as the result of tests. There + Readline implements a facility similar in spirit to the conditional + compilation features of the C preprocessor which allows key bindings + and variable settings to be performed as the result of tests. There are four parser directives used. - $$iiff The $$iiff construct allows bindings to be made based on the edit- - ing mode, the terminal being used, or the application using - readline. The text of the test extends to the end of the line; + $$iiff The $$iiff construct allows bindings to be made based on the edit- + ing mode, the terminal being used, or the application using + readline. The text of the test extends to the end of the line; no characters are required to isolate it. - mmooddee The mmooddee== form of the $$iiff directive is used to test - whether readline is in emacs or vi mode. This may be - used in conjunction with the sseett kkeeyymmaapp command, for - instance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and - _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in + mmooddee The mmooddee== form of the $$iiff directive is used to test + whether readline is in emacs or vi mode. This may be + used in conjunction with the sseett kkeeyymmaapp command, for + instance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and + _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in emacs mode. - tteerrmm The tteerrmm== form may be used to include terminal-specific + tteerrmm The tteerrmm== form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the terminal's function keys. The word on the right side - of the == is tested against the both full name of the ter- - minal and the portion of the terminal name before the - first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, + of the == is tested against both the full name of the ter- + minal and the portion of the terminal name before the + first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, for instance. aapppplliiccaattiioonn The aapppplliiccaattiioonn construct is used to include application- specific settings. Each program using the readline - library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization + library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization file can test for a particular value. This could be used - to bind key sequences to functions useful for a specific - program. For instance, the following command adds a key - sequence that quotes the current or previous word in + 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 @@ -3114,51 +3267,51 @@ RREEAADDLLIINNEE test fails. $$iinncclluuddee - This directive takes a single filename as an argument and reads - commands and bindings from that file. For example, the follow- + This directive takes a single filename as an argument and reads + commands and bindings from that file. For example, the follow- ing directive would read _/_e_t_c_/_i_n_p_u_t_r_c: $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c SSeeaarrcchhiinngg - Readline provides commands for searching through the command history + Readline provides commands for searching through the command history (see HHIISSTTOORRYY below) for lines containing a specified string. There are two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_t_a_l. - Incremental searches begin before the user has finished typing the - search string. As each character of the search string is typed, read- + Incremental searches begin before the user has finished typing the + search string. As each character of the search string is typed, read- line displays the next entry from the history matching the string typed - so far. An incremental search requires only as many characters as - needed to find the desired history entry. The characters present in - the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an + so far. An incremental search requires only as many characters as + needed to find the desired history entry. The characters present in + the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an incremental search. If that variable has not been assigned a value the - Escape and Control-J characters will terminate an incremental search. - Control-G will abort an incremental search and restore the original - line. When the search is terminated, the history entry containing the + Escape and Control-J characters will terminate an incremental search. + Control-G will abort an incremental search and restore the original + line. When the search is terminated, the history entry containing the search string becomes the current line. - To find other matching entries in the history list, type Control-S or - Control-R as appropriate. This will search backward or forward in the - history for the next entry matching the search string typed so far. - Any other key sequence bound to a readline command will terminate the - search and execute that command. For instance, a _n_e_w_l_i_n_e will termi- + To find other matching entries in the history list, type Control-S or + Control-R as appropriate. This will search backward or forward in the + history for the next entry matching the search string typed so far. + Any other key sequence bound to a readline command will terminate the + search and execute that command. For instance, a _n_e_w_l_i_n_e will termi- nate the search and accept the line, thereby executing the command from the history list. Readline remembers the last incremental search string. If two Control- - Rs are typed without any intervening characters defining a new search + Rs are typed without any intervening characters defining a new search string, any remembered search string is used. - Non-incremental searches read the entire search string before starting - to search for matching history lines. The search string may be typed + Non-incremental searches read the entire search string before starting + to search for matching history lines. The search string may be typed by the user or be part of the contents of the current line. RReeaaddlliinnee CCoommmmaanndd NNaammeess - The following is a list of the names of the commands and the default + The following is a list of the names of the commands and the default key sequences to which they are bound. Command names without an accom- panying key sequence are unbound by default. In the following descrip- - tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to - a cursor position saved by the sseett--mmaarrkk command. The text between the + tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to + a cursor position saved by the sseett--mmaarrkk command. The text between the point and mark is referred to as the _r_e_g_i_o_n. CCoommmmaannddss ffoorr MMoovviinngg @@ -3174,17 +3327,17 @@ RREEAADDLLIINNEE Move forward to the end of the next word. Words are composed of alphanumeric characters (letters and digits). bbaacckkwwaarrdd--wwoorrdd ((MM--bb)) - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are composed of alphanumeric characters (letters and digits). sshheellll--ffoorrwwaarrdd--wwoorrdd - Move forward to the end of the next word. Words are delimited + Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. sshheellll--bbaacckkwwaarrdd--wwoorrdd - Move back to the start of the current or previous word. Words + Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. cclleeaarr--ssccrreeeenn ((CC--ll)) - Clear the screen leaving the current line at the top of the - screen. With an argument, refresh the current line without + Clear the screen leaving the current line at the top of the + screen. With an argument, refresh the current line without clearing the screen. rreeddrraaww--ccuurrrreenntt--lliinnee Refresh the current line. @@ -3192,67 +3345,67 @@ RREEAADDLLIINNEE CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn)) Accept the line regardless of where the cursor is. If this line - is non-empty, add it to the history list according to the state - of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history + is non-empty, add it to the history list according to the state + of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history line, then restore the history line to its original state. pprreevviioouuss--hhiissttoorryy ((CC--pp)) Fetch the previous command from the history list, moving back in the list. nneexxtt--hhiissttoorryy ((CC--nn)) - Fetch the next command from the history list, moving forward in + Fetch the next command from the history list, moving forward in the list. bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<)) Move to the first line in the history. eenndd--ooff--hhiissttoorryy ((MM-->>)) - Move to the end of the input history, i.e., the line currently + Move to the end of the input history, i.e., the line currently being entered. rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr)) - Search backward starting at the current line and moving `up' - through the history as necessary. This is an incremental + Search backward starting at the current line and moving `up' + through the history as necessary. This is an incremental search. ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss)) - Search forward starting at the current line and moving `down' - through the history as necessary. This is an incremental + Search forward starting at the current line and moving `down' + through the history as necessary. This is an incremental search. nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp)) Search backward through the history starting at the current line - using a non-incremental search for a string supplied by the + using a non-incremental search for a string supplied by the user. nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn)) - Search forward through the history using a non-incremental + Search forward through the history using a non-incremental search for a string supplied by the user. hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd - Search forward through the history for the string of characters - between the start of the current line and the point. This is a + Search forward through the history for the string of characters + between the start of the current line and the point. This is a non-incremental search. hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd Search backward through the history for the string of characters - between the start of the current line and the point. This is a + between the start of the current line and the point. This is a non-incremental search. yyaannkk--nntthh--aarrgg ((MM--CC--yy)) - Insert the first argument to the previous command (usually the + Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument _n, - insert the _nth word from the previous command (the words in the - previous command begin with word 0). A negative argument + insert the _nth word from the previous command (the words in the + previous command begin with word 0). A negative argument inserts the _nth word from the end of the previous command. Once - the argument _n is computed, the argument is extracted as if the + the argument _n is computed, the argument is extracted as if the "!_n" history expansion had been specified. yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__)) - Insert the last argument to the previous command (the last word + 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 + 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 + 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 word, as if the "!$" history expansion had been specified. sshheellll--eexxppaanndd--lliinnee ((MM--CC--ee)) Expand the line as the shell does. This performs alias and his- tory expansion as well as all of the shell word expansions. See - HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. + HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. hhiissttoorryy--eexxppaanndd--lliinnee ((MM--^^)) Perform history expansion on the current line. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. @@ -3347,11 +3500,11 @@ RREEAADDLLIINNEE 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)) + sshheellll--kkiillll--wwoorrdd Kill from point to the end of the current word, or if between words, to the end of the next word. Word boundaries are the same as those used by sshheellll--ffoorrwwaarrdd--wwoorrdd. - sshheellll--bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt)) + sshheellll--bbaacckkwwaarrdd--kkiillll--wwoorrdd Kill the word behind point. Word boundaries are the same as those used by sshheellll--bbaacckkwwaarrdd--wwoorrdd. uunniixx--wwoorrdd--rruubboouutt ((CC--ww)) @@ -3390,7 +3543,7 @@ RREEAADDLLIINNEE 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 + neither a digit nor minus sign, the argument count for the next command is multiplied by four. The argument count is initially one, so executing this function the first time makes the argu- ment count four, a second time makes the argument count sixteen, @@ -3502,84 +3655,84 @@ RREEAADDLLIINNEE uunnddoo ((CC--__,, CC--xx CC--uu)) Incremental undo, separately remembered for each line. rreevveerrtt--lliinnee ((MM--rr)) - Undo all changes made to this line. This is like executing the - uunnddoo command enough times to return the line to its initial + Undo all changes made to this line. This is like executing the + uunnddoo command enough times to return the line to its initial state. ttiillddee--eexxppaanndd ((MM--&&)) Perform tilde expansion on the current word. sseett--mmaarrkk ((CC--@@,, MM--<>)) - Set the mark to the point. If a numeric argument is supplied, + Set the mark to the point. If a numeric argument is supplied, the mark is set to that position. eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx)) - Swap the point with the mark. The current cursor position is - set to the saved position, and the old cursor position is saved + Swap the point with the mark. The current cursor position is + set to the saved position, and the old cursor position is saved as the mark. cchhaarraacctteerr--sseeaarrcchh ((CC--]])) A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous occur- + that character. A negative count searches for previous occur- rences. cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]])) - A character is read and point is moved to the previous occur- - rence of that character. A negative count searches for subse- + A character is read and point is moved to the previous occur- + rence of that character. A negative count searches for subse- quent occurrences. sskkiipp--ccssii--sseeqquueennccee - Read enough characters to consume a multi-key sequence such as - those defined for keys like Home and End. Such sequences begin + Read enough characters to consume a multi-key sequence such as + those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this - sequence is bound to "\[", keys producing such sequences will - have no effect unless explicitly bound to a readline command, - instead of inserting stray characters into the editing buffer. + sequence is bound to "\[", keys producing such sequences will + have no effect unless explicitly bound to a readline command, + instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. iinnsseerrtt--ccoommmmeenntt ((MM--##)) - Without a numeric argument, the value of the readline ccoomm-- - mmeenntt--bbeeggiinn variable is inserted at the beginning of the current + Without a numeric argument, the value of the readline ccoomm-- + mmeenntt--bbeeggiinn variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a - toggle: if the characters at the beginning of the line do not - match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- + toggle: if the characters at the beginning of the line do not + match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- wise the characters in ccoommmmeenntt--bbeeggiinn are deleted from the begin- - ning of the line. In either case, the line is accepted as if a - newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn - causes this command to make the current line a shell comment. - If a numeric argument causes the comment character to be + ning of the line. In either case, the line is accepted as if a + newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn + causes this command to make the current line a shell comment. + If a numeric argument causes the comment character to be removed, the line will be executed by the shell. gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg)) - The word before point is treated as a pattern for pathname - expansion, with an asterisk implicitly appended. This pattern - is used to generate a list of matching filenames for possible + The word before point is treated as a pattern for pathname + expansion, with an asterisk implicitly appended. This pattern + is used to generate a list of matching 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 + 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 + The list of expansions that would have been generated by + gglloobb--eexxppaanndd--wwoorrdd is displayed, and the line is redrawn. If a + numeric argument is supplied, an asterisk is appended before pathname expansion. dduummpp--ffuunnccttiioonnss - Print all of the functions and their key bindings to the read- + Print all of the functions and their key bindings to the read- line output stream. If a numeric argument is supplied, the out- - put is formatted in such a way that it can be made part of an + put is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. dduummpp--vvaarriiaabblleess Print all of the settable readline variables and their values to - the readline output stream. If a numeric argument is supplied, - the output is formatted in such a way that it can be made part + the readline output stream. If a numeric argument is supplied, + the output is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. dduummpp--mmaaccrrooss - Print all of the readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the + Print all of the readline key sequences bound to macros and the + strings they output. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an _i_n_p_u_t_r_c file. ddiissppllaayy--sshheellll--vveerrssiioonn ((CC--xx CC--vv)) - Display version information about the current instance of bbaasshh. + Display version information about the current instance of bbaasshh. PPrrooggrraammmmaabbllee CCoommpplleettiioonn When word completion is attempted for an argument to a command for which a completion specification (a _c_o_m_p_s_p_e_c) has been defined using - the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the pro- - grammable completion facilities are invoked. + the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the program- + mable 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), @@ -3646,7 +3799,9 @@ RREEAADDLLIINNEE 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. + ing the pattern will be removed. If the nnooccaasseemmaattcchh shell option is + enabled, the match is performed without regard to the case of alpha- + betic characters. 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 @@ -3776,7 +3931,9 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN 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. + expansion character, but the history expansion character is also + treated as quoted if it immediately precedes the closing double quote + in a double-quoted string. Several characters inhibit history expansion if found immediately fol- lowing the history expansion character, even if it is unquoted: space, @@ -3842,17 +3999,17 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN expand to the zeroth word if there is only one word in the line. %% The word matched by the most recent `?_s_t_r_i_n_g?' search. _x--_y A range of words; `-_y' abbreviates `0-_y'. - ** All of the words but the zeroth. This is a synonym for `_1_-_$'. - It is not an error to use ** if there is just one word in the + ** All of the words but the zeroth. This is a synonym for `_1_-_$'. + It is not an error to use ** if there is just one word in the event; the empty string is returned in that case. xx** Abbreviates _x_-_$. xx-- Abbreviates _x_-_$ like xx**, but omits the last word. - If a word designator is supplied without an event specification, the + If a word designator is supplied without an event specification, the previous command is used as the event. MMooddiiffiieerrss - After the optional word designator, there may appear a sequence of one + After the optional word designator, there may appear a sequence of one or more of the following modifiers, each preceded by a `:'. hh Remove a trailing filename component, leaving only the head. @@ -3885,38 +4042,44 @@ 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. + and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- + ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning + with -- without requiring ----. Other builtins that accept arguments but + are not specified as accepting options interpret arguments beginning + with -- as invalid options and require ---- to prevent this interpreta- + tion. :: [_a_r_g_u_m_e_n_t_s] - No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s - and performing any specified redirections. A zero exit code is - returned. + No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s + and performing any specified redirections. The return status is + zero. .. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - Read and execute commands from _f_i_l_e_n_a_m_e in the current shell - environment and return the exit status of the last command exe- - cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, - filenames in PPAATTHH are used to find the directory containing + Read and execute commands from _f_i_l_e_n_a_m_e in the current shell + environment and return the exit status of the last command exe- + cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, + filenames in PPAATTHH are used to find the directory containing _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable. - When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is - searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option - to the sshhoopptt builtin command is turned off, the PPAATTHH is not - searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- - tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the - positional parameters are unchanged. 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 + When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is + searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option + to the sshhoopptt builtin command is turned off, the PPAATTHH is not + searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- + tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the + positional parameters are unchanged. If the --TT option is + enabled, ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any + DDEEBBUUGG trap string is saved and restored around the call to + ssoouurrccee, and ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If + --TT is not set, and the sourced file changes the DDEEBBUUGG trap, the + new value is retained when ssoouurrccee completes. The return status + is the status of the last command exited within the script (0 if + no commands are executed), and false if _f_i_l_e_n_a_m_e is not found or cannot be read. aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] AAlliiaass with no arguments or with the --pp option prints the list of aliases in the form aalliiaass _n_a_m_e=_v_a_l_u_e on standard output. When arguments are supplied, an alias is defined for each _n_a_m_e whose - _v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes the next word + _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 @@ -3936,7 +4099,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d Display current rreeaaddlliinnee key and function bindings, bind a key sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee variable. Each non-option argument is a command as it would @@ -3947,18 +4110,19 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e + is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_- + _d_a_r_d. --ll List the names of all rreeaaddlliinnee functions. - --pp Display rreeaaddlliinnee function names and bindings in such a + --pp Display rreeaaddlliinnee function names and bindings in such a way that they can be re-read. --PP List current rreeaaddlliinnee function names and bindings. - --ss Display rreeaaddlliinnee key sequences bound to macros and the - strings they output in such a way that they can be re- + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the + --SS Display rreeaaddlliinnee key sequences bound to macros and the strings they output. - --vv Display rreeaaddlliinnee variable names and values in such a way + --vv Display rreeaaddlliinnee variable names and values in such a way that they can be re-read. --VV List current rreeaaddlliinnee variable names and values. --ff _f_i_l_e_n_a_m_e @@ -3970,110 +4134,110 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr _k_e_y_s_e_q Remove any current binding for _k_e_y_s_e_q. --xx _k_e_y_s_e_q::_s_h_e_l_l_-_c_o_m_m_a_n_d - Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is - entered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets - the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- - lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the + Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is + entered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets + the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- + lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the current location of the insertion point. If the executed - command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- - LLIINNEE__PPOOIINNTT, those new values will be reflected in the + command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- + LLIINNEE__PPOOIINNTT, those new values will be reflected in the editing state. - --XX List all key sequences bound to shell commands and the - associated commands in a format that can be reused as + --XX List all key sequences bound to shell commands and the + associated commands in a format that can be reused as input. - The return value is 0 unless an unrecognized option is given or + The return value is 0 unless an unrecognized option is given or an error occurred. bbrreeaakk [_n] - Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is - specified, break _n levels. _n must be >= 1. If _n is greater - than the number of enclosing loops, all enclosing loops are - exited. The return value is 0 unless _n is not greater than or + Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is + specified, break _n levels. _n must be >= 1. If _n is greater + than the number of enclosing loops, all enclosing loops are + exited. The return value is 0 unless _n is not greater than or equal to 1. bbuuiillttiinn _s_h_e_l_l_-_b_u_i_l_t_i_n [_a_r_g_u_m_e_n_t_s] - Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and + Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and return its exit status. This is useful when defining a function - whose name is the same as a shell builtin, retaining the func- + whose name is the same as a shell builtin, retaining the func- tionality of the builtin within the function. The ccdd builtin is - commonly redefined this way. The return status is false if + commonly redefined this way. The return status is false if _s_h_e_l_l_-_b_u_i_l_t_i_n is not a shell builtin command. ccaalllleerr [_e_x_p_r] Returns the context of any active subroutine call (a shell func- tion or a script executed with the .. or ssoouurrccee builtins). With- out _e_x_p_r, ccaalllleerr displays the line number and source filename of - the current subroutine call. If a non-negative integer is sup- + the current subroutine call. If a non-negative integer is sup- plied as _e_x_p_r, ccaalllleerr displays the line number, subroutine name, - and source file corresponding to that position in the current - execution call stack. This extra information may be used, for - example, to print a stack trace. The current frame is frame 0. - The return value is 0 unless the shell is not executing a sub- - routine call or _e_x_p_r does not correspond to a valid position in + and source file corresponding to that position in the current + execution call stack. This extra information may be used, for + example, to print a stack trace. The current frame is frame 0. + The return value is 0 unless the shell is not executing a sub- + routine call or _e_x_p_r does not correspond to a valid position in the call stack. ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r] - Change the current directory to _d_i_r. if _d_i_r is not supplied, - the value of the HHOOMMEE shell variable is the default. Any addi- + Change the current directory to _d_i_r. if _d_i_r is not supplied, + the value of the HHOOMMEE shell variable is the default. Any addi- tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH - defines the search path for the directory containing _d_i_r: each - directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative - directory names in CCDDPPAATTHH are separated by a colon (:). A null - directory name in CCDDPPAATTHH is the same as the current directory, + defines the search path for the directory containing _d_i_r: each + directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative + directory names in CCDDPPAATTHH are separated by a colon (:). A null + directory name in CCDDPPAATTHH is the same as the current directory, i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not - used. The --PP option causes ccdd to use the physical directory - structure by resolving symbolic links while traversing _d_i_r and + used. The --PP option causes ccdd to use the physical directory + structure by resolving symbolic links while traversing _d_i_r and before processing instances of _._. in _d_i_r (see also the --PP option to the sseett builtin command); the --LL option forces symbolic links - to be followed by resolving the link after processing instances + to be followed by resolving the link after processing instances of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing - the immediately previous pathname component from _d_i_r, back to a - slash or the beginning of _d_i_r. If the --ee option is supplied - with --PP, and the current working directory cannot be success- - fully determined after a successful directory change, ccdd will - return an unsuccessful status. On systems that support it, the - --@@ option presents the extended attributes associated with a - file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD + the immediately previous pathname component from _d_i_r, back to a + slash or the beginning of _d_i_r. If the --ee option is supplied + with --PP, and the current working directory cannot be success- + fully determined after a successful directory change, ccdd will + return an unsuccessful status. On systems that support it, the + --@@ option presents the extended attributes associated with a + file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD before the directory change is attempted. If a non-empty direc- - tory name from CCDDPPAATTHH is used, or if -- is the first argument, + tory name from CCDDPPAATTHH is used, or if -- is the first argument, and the directory change is successful, the absolute pathname of - the new working directory is written to the standard output. - The return value is true if the directory was successfully + the new working directory is written to the standard output. + The return value is true if the directory was successfully changed; false otherwise. ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] - Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function - lookup. Only builtin commands or commands found in the PPAATTHH are - executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is - performed using a default value for PPAATTHH that is guaranteed to - find all of the standard utilities. If either the --VV or --vv + Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function + lookup. Only builtin commands or commands found in the PPAATTHH are + executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is + performed using a default value for PPAATTHH that is guaranteed to + find all of the standard utilities. If either the --VV or --vv option is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv - option causes a single word indicating the command or filename + option causes a single word indicating the command or filename used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a - more verbose description. If the --VV or --vv option is supplied, - the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If + more verbose description. If the --VV or --vv option is supplied, + the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If neither option is supplied and an error occurred or _c_o_m_m_a_n_d can- - not be found, the exit status is 127. Otherwise, the exit sta- + not be found, the exit status is 127. Otherwise, the exit sta- tus of the ccoommmmaanndd builtin is the exit status of _c_o_m_m_a_n_d. ccoommppggeenn [_o_p_t_i_o_n] [_w_o_r_d] - Generate possible completion matches for _w_o_r_d according to the - _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee - builtin with the exception of --pp and --rr, and write the matches - to the standard output. When using the --FF or --CC options, the - various shell variables set by the programmable completion + Generate possible completion matches for _w_o_r_d according to the + _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee + builtin with the exception of --pp and --rr, and write the matches + to the standard output. When using the --FF or --CC options, the + various shell variables set by the programmable completion facilities, while available, will not have useful values. - The matches will be generated in the same way as if the 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 matches will be generated in the same way as if the program- + mable completion code had generated them directly from a comple- + tion specification with the same flags. If _w_o_r_d is specified, + only those completions matching _w_o_r_d will be displayed. - The return value is true unless an invalid option is supplied, + The return value is true unless an invalid option is supplied, or no matches were generated. - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- _p_a_t] [--WW _w_o_r_d_l_i_s_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] _n_a_m_e [_n_a_m_e _._._.] ccoommpplleettee --pprr [--DDEE] [_n_a_m_e ...] @@ -4091,8 +4255,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS attempted on a blank line. The process of applying these completion specifications when - word completion is attempted is described above under PPrroo-- - ggrraammmmaabbllee CCoommpplleettiioonn. + word completion is attempted is described above under PPrrooggrraamm-- + mmaabbllee CCoommpplleettiioonn. Other options, if specified, have the following meanings. The arguments to the --GG, --WW, and --XX options (and, if necessary, the @@ -4120,22 +4284,24 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + nnoossoorrtt Tell readline not to sort the list of possible + completions alphabetically. + nnoossppaaccee Tell readline not to append a space (the + default) to words completed at the end of the line. pplluussddiirrss - After any matches defined by the compspec are - generated, directory name completion is - attempted and any matches are added to the + After any matches defined by the compspec are + generated, directory name completion is + attempted and any matches are added to the results of the other actions. --AA _a_c_t_i_o_n - The _a_c_t_i_o_n may be one of the following to generate a + The _a_c_t_i_o_n may be one of the following to generate a list of possible completions: aalliiaass Alias names. May also be specified as --aa. aarrrraayyvvaarr Array variable names. bbiinnddiinngg RReeaaddlliinnee key binding names. - bbuuiillttiinn Names of shell builtin commands. May also be + bbuuiillttiinn Names of shell builtin commands. May also be specified as --bb. ccoommmmaanndd Command names. May also be specified as --cc. ddiirreeccttoorryy @@ -4143,7 +4309,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ddiissaabblleedd Names of disabled shell builtins. eennaabblleedd Names of enabled shell builtins. - eexxppoorrtt Names of exported shell variables. May also be + eexxppoorrtt Names of exported shell variables. May also be specified as --ee. ffiillee File names. May also be specified as --ff. ffuunnccttiioonn @@ -4152,11 +4318,11 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS hheellppttooppiicc Help topics as accepted by the hheellpp builtin. hhoossttnnaammee - Hostnames, as taken from the file specified by + Hostnames, as taken from the file specified by the HHOOSSTTFFIILLEE shell variable. - jjoobb Job names, if job control is active. May also + jjoobb Job names, if job control is active. May also be specified as --jj. - kkeeyywwoorrdd Shell reserved words. May also be specified as + kkeeyywwoorrdd Shell reserved words. May also be specified as --kk. rruunnnniinngg Names of running jobs, if job control is active. sseerrvviiccee Service names. May also be specified as --ss. @@ -4171,40 +4337,40 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Names of all shell variables. May also be spec- ified as --vv. --CC _c_o_m_m_a_n_d - _c_o_m_m_a_n_d is executed in a subshell environment, and its + _c_o_m_m_a_n_d is executed in a subshell environment, and its output is used as the possible completions. --FF _f_u_n_c_t_i_o_n - The shell function _f_u_n_c_t_i_o_n is executed in the current - shell environment. When the function is executed, the - first argument ($$11) is the name of the command whose - arguments are being completed, the second argument ($$22) + The shell function _f_u_n_c_t_i_o_n is executed in the current + shell environment. When the function is executed, the + first argument ($$11) is the name of the command whose + arguments are being completed, the second argument ($$22) is the word being completed, and the third argument ($$33) - is the word preceding the word being completed on the - current command line. When it finishes, the possible - completions are retrieved from the value of the CCOOMMPPRREE-- + is the word preceding the word being completed on the + current command line. When it finishes, the possible + completions are retrieved from the value of the CCOOMMPPRREE-- PPLLYY array variable. --GG _g_l_o_b_p_a_t - The pathname expansion pattern _g_l_o_b_p_a_t is expanded to + The pathname expansion pattern _g_l_o_b_p_a_t is expanded to generate the possible completions. --PP _p_r_e_f_i_x - _p_r_e_f_i_x is added at the beginning of each possible com- + _p_r_e_f_i_x is added at the beginning of each possible com- pletion after all other options have been applied. --SS _s_u_f_f_i_x _s_u_f_f_i_x is appended to each possible completion after all other options have been applied. --WW _w_o_r_d_l_i_s_t - The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS - special variable as delimiters, and each resultant word - is expanded. The possible completions are the members - of the resultant list which match the word being com- + The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS + special variable as delimiters, and each resultant word + is expanded. The possible completions are the members + of the resultant list which match the word being com- pleted. --XX _f_i_l_t_e_r_p_a_t - _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. + _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. It is applied to the list of possible completions gener- - ated by the preceding options and arguments, and each - completion matching _f_i_l_t_e_r_p_a_t is removed from the list. - A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this - case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. + 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- @@ -4252,12 +4418,12 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS inhibits the display of function definitions; only the function name and attributes are printed. If the eexxttddeebbuugg shell option is enabled using sshhoopptt, the source file name and line number - where the function is defined are displayed as well. The --FF - option implies --ff. The --gg option forces variables to be created - or modified at the global scope, even when ddeeccllaarree is executed - in a shell 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: + where each _n_a_m_e is defined are displayed as well. The --FF option + implies --ff. The --gg option forces variables to be created or + modified at the global scope, even when ddeeccllaarree is executed in a + shell function. It is ignored in all other cases. The follow- + ing options can be used to restrict output to variables with the + specified attribute or to give variables attributes: --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss above). --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss @@ -4271,11 +4437,11 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + defined by the value of _n_a_m_e. All references, assign- + ments, and attribute modifications to _n_a_m_e, except those + using or changing the --nn attribute itself, are performed + on the variable referenced by _n_a_m_e's value. The nameref + attribute cannot be applied to array variables. --rr Make _n_a_m_es readonly. These names cannot then be assigned values by subsequent assignment statements or unset. --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions @@ -4312,10 +4478,11 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + entries from the list. The current directory is always the + first directory in the stack. --cc Clears the directory stack by deleting all of the entries. - --ll Produces a listing using full pathnames; the default + --ll Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory. --pp Print the directory stack with one entry per line. --vv Print the directory stack with one entry per line, pre- @@ -4330,7 +4497,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 ...] + ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] Without options, remove each _j_o_b_s_p_e_c from the table of active jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option @@ -4414,101 +4581,101 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS returns failure. An interactive shell returns failure if the file cannot be executed. If _c_o_m_m_a_n_d is not specified, any redi- rections take effect in the current shell, and the return status - is 0. If there is a redirection error, the return status is 1. + is 0. If there is a redirection error, the return status is 1. eexxiitt [_n] - Cause the shell to exit with a status of _n. If _n is omitted, + Cause the shell to exit with a status of _n. If _n is omitted, the exit status is that of the last command executed. A trap on EEXXIITT is executed before the shell terminates. eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ... eexxppoorrtt --pp - The supplied _n_a_m_e_s are marked for automatic export to the envi- - ronment of subsequently executed commands. If the --ff option is - given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or - if the --pp option is supplied, a list of names of all exported - variables is printed. The --nn option causes the export property + The supplied _n_a_m_e_s are marked for automatic export to the envi- + ronment of subsequently executed commands. If the --ff option is + given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or + if the --pp option is supplied, a list of names of all exported + variables is printed. The --nn option causes the export property to be removed from each _n_a_m_e. If a variable name is followed by =_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns an exit status of 0 unless an invalid option is encountered, one - of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- + of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- plied with a _n_a_m_e that is not a function. ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] - The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t - from the history list and displays or edits and re-executes - them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate - the last command beginning with that string) or as a number (an - index into the history list, where a negative number is used as - an offset from the current command number). If _l_a_s_t is not - specified it is set to the current command for listing (so that - ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- - wise. If _f_i_r_s_t is not specified it is set to the previous com- + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t + from the history list and displays or edits and re-executes + them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate + the last command beginning with that string) or as a number (an + index into the history list, where a negative number is used as + an offset from the current command number). If _l_a_s_t is not + specified it is set to the current command for listing (so that + ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- + wise. If _f_i_r_s_t is not specified it is set to the previous com- mand for editing and -16 for listing. - The --nn option suppresses the command numbers when listing. The - --rr option reverses the order of the commands. If the --ll option - is given, the commands are listed on standard output. Other- - wise, the editor given by _e_n_a_m_e is invoked on a file containing - those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT - variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. - If neither variable is set, _v_i is used. When editing is com- + The --nn option suppresses the command numbers when listing. The + --rr option reverses the order of the commands. If the --ll option + is given, the commands are listed on standard output. Other- + wise, the editor given by _e_n_a_m_e is invoked on a file containing + those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT + variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. + If neither variable is set, _v_i is used. When editing is com- plete, the edited commands are echoed and executed. - In the second form, _c_o_m_m_a_n_d is re-executed after each instance - of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is intepreted the same as - _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', - so that typing ``r cc'' runs the last command beginning with + In the second form, _c_o_m_m_a_n_d is re-executed after each instance + of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is 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 + If the first form is used, the return value is 0 unless an + invalid option is encountered or _f_i_r_s_t or _l_a_s_t specify history + lines out of range. If the --ee option is supplied, the return value is the value of the last command executed or failure if an error occurs with the temporary file of commands. If the second - form is used, the return status is that of the command re-exe- - cuted, unless _c_m_d does not specify a valid history line, in + form is used, the return status is that of the command re-exe- + cuted, unless _c_m_d does not specify a valid history line, in which case ffcc returns failure. ffgg [_j_o_b_s_p_e_c] - Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. + Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. If _j_o_b_s_p_e_c is not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b - is used. The return value is that of the command placed into - the foreground, or failure if run when job control is disabled + is used. The return value is that of the command placed into + the foreground, or failure if run when job control is disabled or, when run with job control enabled, if _j_o_b_s_p_e_c does not spec- - ify a valid job or _j_o_b_s_p_e_c specifies a job that was started + ify a valid job or _j_o_b_s_p_e_c specifies a job that was started without job control. ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g_s] - ggeettooppttss is used by shell procedures to parse positional parame- - ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- - nized; if a character is followed by a colon, the option is - expected to have an argument, which should be separated from it - by white space. The colon and question mark characters may not - be used as option characters. Each time it is invoked, ggeettooppttss - places the next option in the shell variable _n_a_m_e, initializing + ggeettooppttss is used by shell procedures to parse positional parame- + ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- + nized; if a character is followed by a colon, the option is + expected to have an argument, which should be separated from it + by white space. The colon and question mark characters may not + be used as option characters. Each time it is invoked, ggeettooppttss + places the next option in the shell variable _n_a_m_e, initializing _n_a_m_e if it does not exist, and the index of the next argument to be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to - 1 each time the shell or a shell script is invoked. When an - option requires an argument, ggeettooppttss places that argument into - the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- - cally; it must be manually reset between multiple calls to + 1 each time the shell or a shell script is invoked. When an + option requires an argument, ggeettooppttss places that argument into + the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- + cally; it must be manually reset between multiple calls to ggeettooppttss within the same shell invocation if a new set of parame- ters is to be used. - When the end of options is encountered, ggeettooppttss exits with a - return value greater than zero. OOPPTTIINNDD is set to the index of + When the end of options is encountered, ggeettooppttss exits with a + return value greater than zero. OOPPTTIINNDD is set to the index of the first non-option argument, and _n_a_m_e is set to ?. - ggeettooppttss normally parses the positional parameters, but if more + ggeettooppttss normally parses the positional parameters, but if more arguments are given in _a_r_g_s, ggeettooppttss parses those instead. - ggeettooppttss can report errors in two ways. If the first character - of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In - normal operation, diagnostic messages are printed when invalid - options or missing option arguments are encountered. If the - variable OOPPTTEERRRR is set to 0, no error messages will be dis- + ggeettooppttss can report errors in two ways. If the first character + of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In + normal operation, diagnostic messages are printed when invalid + options or missing option arguments are encountered. If the + variable OOPPTTEERRRR is set to 0, no error messages will be dis- played, even if the first character of _o_p_t_s_t_r_i_n_g is not a colon. If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if @@ -4574,33 +4741,34 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --cc Clear the history list by deleting all the entries. --dd _o_f_f_s_e_t Delete the history entry at position _o_f_f_s_e_t. - --aa Append the ``new'' history lines (history lines entered - since the beginning of the current bbaasshh session) to the + --aa Append the ``new'' history lines to the history file. + These are history lines entered since the beginning of + the current bbaasshh session, but not already appended to the history file. - --nn Read the history lines not already read from the history - file into the current history list. These are lines - appended to the history file since the beginning of the + --nn Read the history lines not already read from the history + file into the current history list. These are lines + appended to the history file since the beginning of the current bbaasshh session. - --rr Read the contents of the history file and append them to + --rr Read the contents of the history file and append them to the current history list. --ww Write the current history list to the history file, over- writing the history file's contents. - --pp Perform history substitution on the following _a_r_g_s and - display the result on the standard output. Does not - store the results in the history list. Each _a_r_g must be + --pp Perform history substitution on the following _a_r_g_s and + display the result on the standard output. Does not + store the results in the history list. Each _a_r_g must be quoted to disable normal history expansion. - --ss Store the _a_r_g_s in the history list as a single entry. - The last command in the history list is removed before + --ss Store the _a_r_g_s in the history list as a single entry. + The last command in the history list is removed before the _a_r_g_s are added. - If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa- - tion associated with each history entry is written to the his- - tory file, marked with the history comment character. When the - history file is read, lines beginning with the history comment - character followed immediately by a digit are interpreted as - 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- + If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa- + tion associated with each history entry is written to the his- + tory file, marked with the history comment character. When the + history file is read, lines beginning with the history comment + character followed immediately by a digit are interpreted as + timestamps for the following history entry. The return value is + 0 unless an invalid option is encountered, an error occurs while + reading or writing the history file, an invalid _o_f_f_s_e_t is sup- plied as an argument to --dd, or the history expansion supplied as an argument to --pp fails. @@ -4609,8 +4777,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS The first form lists the active jobs. The options have the fol- lowing meanings: --ll List process IDs in addition to the normal information. - --nn Display information only about jobs that have changed - status since the user was last notified of their status. + --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. @@ -4625,7 +4793,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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] + kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or @@ -4635,72 +4803,80 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + status of a process terminated by a signal. The --LL option is + equivalent to --ll. kkiillll returns true if at least one signal was + successfully sent, or false if an error occurs or an invalid + option is encountered. lleett _a_r_g [_a_r_g ...] Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- - MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett + MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett returns 1; 0 is returned otherwise. - llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ...] - For each argument, a local variable named _n_a_m_e is created, and - assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted + 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. + variable _n_a_m_e to have a visible scope restricted to that func- + tion and its children. If _n_a_m_e is -, the set of shell options + is made local to the function in which llooccaall is invoked: shell + options changed using the sseett builtin inside the function are + restored to their original values when the function returns. + With no operands, llooccaall writes a list of local variables to the + standard output. It is an error to use llooccaall when not within a + function. The return status is 0 unless llooccaall is used outside a + function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly + 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 + mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] + rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] + Read lines from the standard input into the indexed array vari- + able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- + plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if supplied, have the following meanings: + --dd The first character of _d_e_l_i_m is used to terminate each + input line, rather than newline. --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are 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- + --tt Remove a trailing _d_e_l_i_m (default newline) from each line + read. + --uu Read lines from file descriptor _f_d instead of the stan- dard input. - --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The + --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The --cc option specifies _q_u_a_n_t_u_m. - --cc Specify the number of lines read between each call to + --cc Specify the number of lines read between each call to _c_a_l_l_b_a_c_k. - If --CC is specified without --cc, the default quantum is 5000. + If --CC is specified without --cc, the default quantum is 5000. When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next array element to be assigned and the line to be assigned to that - element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after + element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after the line is read but before the array element is assigned. - If not supplied with an explicit origin, mmaappffiillee will clear + If not supplied with an explicit origin, mmaappffiillee will clear _a_r_r_a_y before assigning to it. - mmaappffiillee returns successfully unless an invalid option or option - argument is supplied, _a_r_r_a_y is invalid or unassignable, or if + mmaappffiillee returns successfully unless an invalid option or option + argument is supplied, _a_r_r_a_y is invalid or unassignable, or if _a_r_r_a_y is not an indexed array. ppooppdd [-nn] [+_n] [-_n] - Removes entries from the directory stack. With no arguments, - removes the top directory from the stack, and performs a ccdd to + Removes entries from the directory stack. With no arguments, + removes the top directory from the stack, and performs a ccdd to the new top directory. Arguments, if supplied, have the follow- ing meanings: - --nn Suppresses the normal change of directory when removing - directories from the stack, so that only the stack is + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is manipulated. - ++_n Removes the _nth entry counting from the left of the list - shown by ddiirrss, starting with zero. For example: ``popd + ++_n Removes the _nth entry counting from the left of the list + shown by ddiirrss, starting with zero. For example: ``popd +0'' removes the first directory, ``popd +1'' the second. --_n Removes the _nth entry counting from the right of the list shown by ddiirrss, starting with zero. For example: ``popd @@ -4727,83 +4903,83 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. + %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can be reused as shell input. %%((_d_a_t_e_f_m_t))TT - causes pprriinnttff to output the date-time string resulting - from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). + causes pprriinnttff to output the date-time string resulting + from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). The corresponding _a_r_g_u_m_e_n_t is an integer representing the - number of seconds since the epoch. Two special argument - values may be used: -1 represents the current time, and - -2 represents the time the shell was invoked. If no - argument is specified, conversion behaves as if -1 had - been given. This is an exception to the usual pprriinnttff + number of seconds since the epoch. Two special argument + values may be used: -1 represents the current time, and + -2 represents the time the shell was invoked. If no + argument is specified, conversion behaves as if -1 had + been given. This is an exception to the usual pprriinnttff behavior. - Arguments to non-string format specifiers are treated as C con- + Arguments to non-string format specifiers are treated as C con- stants, except that a leading plus or minus sign is allowed, and - if the leading character is a single or double quote, the value + if the leading character is a single or double quote, the value is the ASCII value of the following character. - The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- + The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- _m_e_n_t_s. If the _f_o_r_m_a_t requires more _a_r_g_u_m_e_n_t_s than are supplied, - the extra format specifications behave as if a zero value or - null string, as appropriate, had been supplied. The return + the extra format specifications behave as if a zero value or + null string, as appropriate, had been supplied. The return value is zero on success, non-zero on failure. ppuusshhdd [--nn] [+_n] [-_n] ppuusshhdd [--nn] [_d_i_r] - Adds a directory to the top of the directory stack, or rotates - the stack, making the new top of the stack the current working - directory. With no arguments, 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 + Adds a directory to the top of the directory stack, or rotates + the stack, making the new top of the stack the current working + directory. With no arguments, ppuusshhdd exchanges the top two + directories and returns 0, unless the directory stack is empty. + Arguments, if supplied, have the following meanings: + --nn Suppresses the normal change of directory when rotating + or adding directories to the stack, so that only the + 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 + --_n Rotates the stack so that the _nth directory (counting + from the right of the list shown by ddiirrss, starting with zero) is at the top. _d_i_r Adds _d_i_r to the directory stack at the top, making it the - new current working directory as if it had been supplied + new current working directory as if it had been supplied as the argument to the ccdd builtin. If the ppuusshhdd command is successful, a ddiirrss is performed as well. - If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r - fails. With the second form, ppuusshhdd returns 0 unless the direc- - tory stack is empty, a non-existent directory stack element is - specified, or the directory change to the specified new current + If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r + fails. With the second form, ppuusshhdd returns 0 unless the direc- + tory stack is empty, a non-existent directory stack element is + specified, or the directory change to the specified new current directory fails. ppwwdd [--LLPP] - Print the absolute pathname of the current working directory. + Print the absolute pathname of the current working directory. The pathname printed contains no symbolic links if the --PP option is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command - is enabled. If the --LL option is used, the pathname printed may - contain symbolic links. The return status is 0 unless an error - occurs while reading the name of the current directory or an + is enabled. If the --LL option is used, the pathname printed may + contain symbolic links. The return status is 0 unless an error + occurs while reading the name of the current directory or an invalid option is supplied. rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] One line is read from the standard input, or from the file - descriptor _f_d supplied as an argument to the --uu option, and the + descriptor _f_d supplied as an argument to the --uu option, split + into words as described above under WWoorrdd SSpplliittttiinngg, and the first word is assigned to the first _n_a_m_e, the second word to the - second _n_a_m_e, and so on, 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 using the same rules the shell uses - for expansion (described above under WWoorrdd SSpplliittttiinngg). The back- - slash 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: + second _n_a_m_e, and so on. If there are more words than names, the + remaining words and their intervening delimiters are assigned to + the last _n_a_m_e. If there are fewer words read from the input + stream than names, the remaining names are assigned empty val- + ues. The characters in IIFFSS are used to split the line into + words using the same rules the shell uses for expansion + (described above under WWoorrdd SSpplliittttiinngg). The backslash character + (\\) may be used to remove any special meaning for the next char- + acter read and for line continuation. Options, if supplied, + have the following meanings: --aa _a_n_a_m_e The words are assigned to sequential indices of the array variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any @@ -4821,7 +4997,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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- + waiting for a complete line of input, but honors a delim- iter if fewer than _n_c_h_a_r_s characters are read before the delimiter. --NN _n_c_h_a_r_s @@ -4830,61 +5006,69 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + are read. The result is not split on the characters in + IIFFSS; the intent is that the variable is assigned exactly + the characters read (with the exception of backslash; see + the --rr option below). --pp _p_r_o_m_p_t Display _p_r_o_m_p_t on standard error, without a trailing new- line, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. --rr Backslash does not act as an escape character. The back- - slash is considered to be part of the line. In particu- - lar, a backslash-newline pair may not be used as a line + slash is considered to be part of the line. In particu- + lar, a backslash-newline pair may not be used as a line continuation. --ss Silent mode. If input is coming from a terminal, charac- ters are not echoed. --tt _t_i_m_e_o_u_t - Cause rreeaadd to time out and return failure if a complete - line of input (or a specified number of characters) is - not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- - mal number with a fractional portion following the deci- - mal point. This option is only effective if rreeaadd is - reading input from a terminal, pipe, or other special - file; it has no effect when reading from regular files. + Cause rreeaadd to time out and return failure if a complete + line of input (or a specified number of characters) is + not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- + mal number with a fractional portion following the deci- + mal point. This option is only effective if rreeaadd is + reading input from a terminal, pipe, or other special + file; it has no effect when reading from regular files. If rreeaadd times out, rreeaadd saves any partial input read into - the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd - returns immediately, without trying to read any data. - The exit status is 0 if input is available on the speci- - fied file descriptor, non-zero otherwise. The exit sta- + the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd + returns immediately, without trying to read any data. + The exit status is 0 if input is available on the speci- + fied file descriptor, non-zero otherwise. The exit sta- tus is greater than 128 if the timeout is exceeded. --uu _f_d Read input from file descriptor _f_d. If no _n_a_m_e_s are supplied, the line read is assigned to the vari- - able RREEPPLLYY. The 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. + able RREEPPLLYY. The exit status is zero, unless end-of-file is + encountered, rreeaadd times out (in which case the status is greater + than 128), a variable assignment error (such as assigning to a + readonly variable) occurs, or an invalid file descriptor is sup- + plied as the argument to --uu. rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] - The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s - may not be changed by subsequent assignment. If the --ff option - is supplied, the functions corresponding to the _n_a_m_e_s are so - marked. The --aa option restricts the variables to indexed - arrays; the --AA option restricts the variables to associative - arrays. If both options are supplied, --AA takes precedence. If - no _n_a_m_e arguments are given, or if the --pp option is supplied, a + The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s + may not be changed by subsequent assignment. If the --ff option + is supplied, the functions corresponding to the _n_a_m_e_s are so + marked. The --aa option restricts the variables to indexed + arrays; the --AA option restricts the variables to associative + arrays. If both options are supplied, --AA takes precedence. If + no _n_a_m_e arguments are given, or if the --pp option is supplied, a list of all readonly names is printed. The other options may be - used to restrict the output to a subset of the set of readonly - names. The --pp option causes output to be displayed in a format - that may be reused as input. If a variable name is followed by - =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return - status is 0 unless an invalid option is encountered, one of the + used to restrict the output to a subset of the set of readonly + names. The --pp option causes output to be displayed in a format + that may be reused as input. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return + status is 0 unless an invalid option is encountered, one of the _n_a_m_e_s is not a valid shell variable name, or --ff is supplied with a _n_a_m_e that is not a function. rreettuurrnn [_n] - Causes a function to stop executing and return the value speci- - fied by _n to its caller. If _n is omitted, the return status is - that of the last command executed in the function body. If + Causes a function to stop executing and return the value speci- + fied by _n to its caller. If _n is omitted, the return status is + that of the last command executed in the function body. If + rreettuurrnn is executed by a trap handler, the last command used to + determine the status is the last command executed before the + trap handler. if rreettuurrnn is executed during a DDEEBBUUGG trap, the + last command used to determine the status is the last command + executed by the trap handler before rreettuurrnn was invoked. If rreettuurrnn is used outside a function, but during execution of a script by the .. (ssoouurrccee) command, it causes the shell to stop executing that script and return either _n or the exit status of @@ -4908,26 +5092,26 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + --aa Each variable or function that is created or modified is + given the export attribute and marked for export to the + environment of subsequent commands. --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 + (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status. + The shell does not exit if the command that fails is + part of the command list immediately following a wwhhiillee + or uunnttiill keyword, part of the test following the iiff or + eelliiff reserved words, part of any command executed in a + &&&& or |||| list except the command following the final &&&& + or ||||, any command in a pipeline but the last, or if the + command's return value is being inverted with !!. If a + compound command other than a subshell returns a non- + zero status because a command failed while --ee was being + ignored, the shell does not exit. A trap on EERRRR, if + set, is executed before the shell exits. This option applies to the shell environment and each subshell envi- ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT above), and may cause subshells to exit before executing @@ -5165,138 +5349,158 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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). + (see previous item) and the effect of interrupting a + command list. Bash versions 3.2 and earlier continue + with the next command in the list after one terminates + due to an interrupt. ccoommppaatt4400 If set, bbaasshh changes its behavior to that of version 4.0 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see description of ccoommppaatt3311) and the effect of inter- - rupting a command list. Bash versions 4.0 and later - interrupt the list as if the shell received the inter- - rupt; previous versions continue with the next command + with respect to locale-specific string comparison when + using the [[[[ conditional command's << and >> operators + (see description of ccoommppaatt3311) and the effect of inter- + rupting a command list. Bash versions 4.0 and later + interrupt the list as if the shell received the inter- + rupt; previous versions continue with the next command in the list. ccoommppaatt4411 - If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote - in a double-quoted parameter expansion as a special - character. The single quotes must match (an even num- - ber) and the characters between the single quotes are - considered quoted. This is the behavior of posix mode - through version 4.1. The default bash behavior remains + If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote + in a double-quoted parameter expansion as a special + character. The single quotes must match (an even num- + ber) and the characters between the single quotes are + considered quoted. This is the behavior of posix mode + through version 4.1. The default bash behavior remains as in previous versions. ccoommppaatt4422 - If set, bbaasshh does not process the replacement string in - the pattern substitution word expansion using quote + If set, bbaasshh does not process the replacement string in + the pattern substitution word expansion using quote removal. + ccoommppaatt4433 + If set, bbaasshh does not print a warning message if an + attempt is made to use a quoted compound array assign- + ment as an argument to ddeeccllaarree, makes word expansion + errors non-fatal errors that cause the current command + to fail (the default behavior is to make them fatal + errors that cause the shell to exit), and does not reset + the loop state when a shell function is executed (this + allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect + loops in the caller's context). ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that - expand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that + expand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in versions through 4.2. ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the readline editing - buffer. If not set, bbaasshh attempts to preserve what the + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in the results of pathname expansion. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under + If set, aliases are expanded as described above under AALLIIAASSEESS. This option is enabled by default for interac- tive shells. eexxttddeebbuugg - If set, behavior intended for use by debuggers is - enabled: + If set at shell invocation, arrange to execute the + debugger profile before the shell starts, identical to + the ----ddeebbuuggggeerr option. If set after invocation, behav- + ior intended for use by debuggers is enabled: 11.. The --FF option to the ddeeccllaarree builtin displays the source file name and line number corresponding to each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and + 22.. If the command run by the DDEEBBUUGG trap returns a + non-zero value, the next command is skipped and not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), a call to - rreettuurrnn is simulated. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), the shell + simulates a call to rreettuurrnn. + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described in their descriptions above. - 55.. Function tracing is enabled: command substitu- + 55.. Function tracing is enabled: command substitu- tion, shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps. - 66.. Error tracing is enabled: command substitution, - shell functions, and subshells invoked with (( + 66.. Error tracing is enabled: command substitution, + shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the EERRRR trap. eexxttgglloobb If set, the extended pattern matching features described above under PPaatthhnnaammee EExxppaannssiioonn are enabled. eexxttqquuoottee - If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed - within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double quotes. This option is enabled by default. ffaaiillgglloobb - If set, patterns which fail to match filenames during + If set, patterns which fail to match filenames during pathname expansion result in an expansion error. ffoorrccee__ffiiggnnoorree - If set, the suffixes specified by the FFIIGGNNOORREE shell - variable cause words to be ignored when performing word + If set, the suffixes specified by the FFIIGGNNOORREE shell + variable cause words to be ignored when performing word completion even if the ignored words are the only possi- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a - description of FFIIGGNNOORREE. This option is enabled by + description of FFIIGGNNOORREE. This option is enabled by default. gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- parisons. That is, the current locale's collating - sequence is not taken into account, so bb will not col- - late between AA and BB, and upper-case and lower-case + sequence is not taken into account, so bb will not col- + late between AA and BB, and upper-case and lower-case ASCII characters will collate together. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, only directories and subdirectories match. ggnnuu__eerrrrffmmtt If set, shell error messages are written in the standard GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named - by the value of the HHIISSTTFFIILLEE variable when the shell + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell exits, rather than overwriting the file. hhiissttrreeeeddiitt - If set, and rreeaaddlliinnee is being used, a user is given the + If set, and rreeaaddlliinnee is being used, a user is given the opportunity to re-edit a failed history substitution. hhiissttvveerriiffyy - If set, and rreeaaddlliinnee is being used, the results of his- - tory substitution are not immediately passed to the - shell parser. Instead, the resulting line is loaded + If set, and rreeaaddlliinnee is being used, the results of his- + tory substitution are not immediately passed to the + shell parser. Instead, the resulting line is loaded into the rreeaaddlliinnee editing buffer, allowing further modi- fication. hhoossttccoommpplleettee If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE + perform hostname completion when a word containing a @@ + is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE above). This is enabled by default. hhuuppoonneexxiitt If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- active login shell exits. + iinnhheerriitt__eerrrreexxiitt + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + enabled. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word and all remaining characters on that line to be ignored @@ -5329,7 +5533,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS nnooccaasseemmaattcchh If set, bbaasshh matches patterns in a case-insensitive fashion when performing matching while executing ccaassee or - [[[[ conditional commands. + [[[[ conditional commands, when performing pattern substi- + tution word expansions, or when filtering possible com- + pletions as part of programmable completion. nnuullllgglloobb If set, bbaasshh allows patterns which match no files (see PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, @@ -5462,7 +5668,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to the following conditions. The EERRRR trap is not executed if the @@ -5501,7 +5707,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS 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]] + uulliimmiitt [--HHSSaabbccddeeffiikkllmmnnppqqrrssttuuvvxxPPTT [_l_i_m_i_t]] Provides control over the resources available to the shell and to processes started by it, on systems that allow such control. The --HH and --SS options specify that the hard or soft limit is set @@ -5525,6 +5731,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --ff The maximum size of files written by the shell and its children --ii The maximum number of pending signals + --kk The maximum number of kqueues that may be allocated --ll The maximum size that may be locked into memory --mm The maximum resident set size (many systems do not honor this limit) @@ -5540,46 +5747,48 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --vv The maximum amount of virtual memory available to the shell and, on some systems, to its children --xx The maximum number of file locks + --PP The maximum number of pseudoterminals --TT The maximum number of threads If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the new value of the specified resource. If no option is given, then --ff is assumed. Values are in 1024-byte increments, except for --tt, which is in seconds; --pp, which is in units of 512-byte - blocks; 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. + blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values; + and, when in Posix mode, --cc and --ff, which are in 512-byte incre- + ments. The return status is 0 unless an invalid option or argu- + ment is supplied, or an error occurs while setting a new limit. uummaasskk [--pp] [--SS] [_m_o_d_e] The user file-creation mask is set to _m_o_d_e. If _m_o_d_e begins with - a digit, it is interpreted as an octal number; otherwise it is - interpreted as a symbolic mode mask similar to that accepted by - _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is - printed. The --SS option causes the mask to be printed in sym- - bolic form; the default output is an octal number. If the --pp + a digit, it is interpreted as an octal number; otherwise it is + interpreted as a symbolic mode mask similar to that accepted by + _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is + printed. The --SS option causes the mask to be printed in sym- + bolic form; the default output is an octal number. If the --pp option is supplied, and _m_o_d_e is omitted, the output is in a form that may be reused as input. The return status is 0 if the mode - was successfully changed or if no _m_o_d_e argument was supplied, + was successfully changed or if no _m_o_d_e argument was supplied, and false otherwise. uunnaalliiaass [-aa] [_n_a_m_e ...] - Remove each _n_a_m_e from the list of defined aliases. If --aa is - supplied, all alias definitions are removed. The return value + Remove each _n_a_m_e from the list of defined aliases. If --aa is + supplied, all alias definitions are removed. The return value is true unless a supplied _n_a_m_e is not a defined alias. uunnsseett [-ffvv] [-nn] [_n_a_m_e ...] - For each _n_a_m_e, remove the corresponding variable or function. + For each _n_a_m_e, remove the corresponding variable or function. If the --vv option is given, each _n_a_m_e refers to a shell variable, - and that variable is removed. Read-only variables may not be - unset. If --ff is specified, each _n_a_m_e refers to a shell func- - tion, and the function definition is removed. If the --nn option - is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, - _n_a_m_e will be unset rather than the variable it references. --nn - has no effect if the --ff option is supplied. If no options are - supplied, each _n_a_m_e refers to a variable; if there is no vari- - able by that name, any function with that name is unset. Each - unset variable or function is removed from the environment - passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- + and that variable is removed. Read-only variables may not be + unset. If --ff is specified, each _n_a_m_e refers to a shell func- + tion, and the function definition is removed. If the --nn option + is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, + _n_a_m_e will be unset rather than the variable it references. --nn + has no effect if the --ff option is supplied. If no options are + supplied, each _n_a_m_e refers to a variable; if there is no vari- + able by that name, any function with that name is unset. Each + unset variable or function is removed from the environment + passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- DDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they lose their special properties, even if they are sub- sequently reset. The exit status is true unless a _n_a_m_e is read- @@ -5588,19 +5797,19 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS wwaaiitt [--nn] [_n _._._.] Wait for each specified child process and return its termination status. Each _n may be a process ID or a job specification; if a - job spec is given, all processes in that job's pipeline are - waited for. If _n is not given, all currently active child pro- + 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 + 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 + 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 @@ -5665,7 +5874,7 @@ FFIILLEESS _~_/_._b_a_s_h_r_c The individual per-interactive-shell startup file _~_/_._b_a_s_h___l_o_g_o_u_t - The individual login shell cleanup file, executed when a login + The individual login shell cleanup file, executed when a login shell exits _~_/_._i_n_p_u_t_r_c Individual _r_e_a_d_l_i_n_e initialization file @@ -5679,14 +5888,14 @@ AAUUTTHHOORRSS BBUUGG RREEPPOORRTTSS If you find a bug in bbaasshh,, you should report it. But first, you should - make sure that it really is a bug, and that it appears in the latest - version of bbaasshh. The latest version is always available from + make sure that it really is a bug, and that it appears in the latest + version of bbaasshh. The latest version is always available from _f_t_p_:_/_/_f_t_p_._g_n_u_._o_r_g_/_p_u_b_/_g_n_u_/_b_a_s_h_/. - Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g - command to submit a bug report. If you have a fix, you are encouraged - to mail that as well! Suggestions and `philosophical' bug reports may - be mailed to _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup + Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g + command to submit a bug report. If you have a fix, you are encouraged + to mail that as well! Suggestions and `philosophical' bug reports may + be mailed to _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup ggnnuu..bbaasshh..bbuugg. ALL bug reports should include: @@ -5697,7 +5906,7 @@ BBUUGG RREEPPOORRTTSS A description of the bug behaviour A short script or `recipe' which exercises the bug - _b_a_s_h_b_u_g inserts the first three items automatically into the template + _b_a_s_h_b_u_g inserts the first three items automatically into the template it provides for filing a bug report. Comments and bug reports concerning this manual page should be directed @@ -5714,10 +5923,10 @@ BBUUGGSS Shell builtin commands and functions are not stoppable/restartable. Compound commands and command sequences of the form `a ; b ; c' are not - handled gracefully when process suspension is attempted. When a - process is stopped, the shell immediately executes the next command in - the sequence. It suffices to place the sequence of commands between - parentheses to force it into a subshell, which may be stopped as a + handled gracefully when process suspension is attempted. When a + process is stopped, the shell immediately executes the next command in + the sequence. It suffices to place the sequence of commands between + parentheses to force it into a subshell, which may be stopped as a unit. Array variables may not (yet) be exported. @@ -5726,4 +5935,4 @@ BBUUGGSS -GNU Bash 4.3 2014 February 2 BASH(1) +GNU Bash 4.4 2016 August 26 BASH(1) diff --git a/doc/bash.1 b/doc/bash.1 index ec41462..9a7a384 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -5,12 +5,12 @@ .\" Case Western Reserve University .\" chet.ramey@case.edu .\" -.\" Last Change: Sun Feb 2 16:21:40 EST 2014 +.\" Last Change: Fri Aug 26 09:45:10 EDT 2016 .\" .\" bash_builtins, strip all but Built-Ins section .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY -.TH BASH 1 "2014 February 2" "GNU Bash 4.3" +.TH BASH 1 "2016 August 26" "GNU Bash 4.4" .\" .\" There's some problem with having a `@' .\" in a tagged paragraph with the BSD man macros. @@ -50,8 +50,8 @@ bash \- GNU Bourne-Again SHell [options] [command_string | file] .SH COPYRIGHT -.if n Bash is Copyright (C) 1989-2013 by the Free Software Foundation, Inc. -.if t Bash is Copyright \(co 1989-2013 by the Free Software Foundation, Inc. +.if n Bash is Copyright (C) 1989-2016 by the Free Software Foundation, Inc. +.if t Bash is Copyright \(co 1989-2016 by the Free Software Foundation, Inc. .SH DESCRIPTION .B Bash is an \fBsh\fR-compatible command language interpreter that @@ -67,7 +67,7 @@ Shell and Utilities portion of the IEEE POSIX specification .B Bash can be configured to be POSIX-conformant by default. .SH OPTIONS -All of the single-character shell options documented in the +All of the single-character shell options documented in the description of the \fBset\fR builtin command can be used as options when the shell is invoked. In addition, \fBbash\fR @@ -82,8 +82,12 @@ option is present, then commands are read from the first non-option argument .IR command_string . If there are arguments after the .IR command_string , -they are assigned to the positional parameters, starting with -.BR $0 . +the first argument is assigned to +.B $0 +and any remaining arguments are assigned to the positional parameters. +The assignment to +.B $0 +sets the name of the shell, which is used in warning and error messages. .TP .B \-i If the @@ -235,7 +239,7 @@ The shell becomes restricted (see below). .TP .B \-\-verbose -Equivalent to \fB\-v\fP. +Equivalent to \fB\-v\fP. .TP .B \-\-version Show version information for this instance of @@ -251,7 +255,7 @@ option has been supplied, the first argument is assumed to be the name of a file containing shell commands. If .B bash -is invoked in this fashion, +is invoked in this fashion, .B $0 is set to the name of the file, and the positional parameters are set to the remaining arguments. @@ -268,11 +272,12 @@ for the script. .SH INVOCATION A \fIlogin shell\fP is one whose first character of argument zero is a .BR \- , -or one started with the +or one started with the .B \-\-login option. .PP An \fIinteractive\fP shell is one started without non-option arguments +(unless \fB\-s\fP is specified) and without the .B \-c option @@ -319,7 +324,8 @@ The .B \-\-noprofile option may be used when the shell is started to inhibit this behavior. .PP -When a login shell exits, +When an interactive login shell exits, +or a non-interactive login shell executes the \fBexit\fP builtin command, .B bash reads and executes commands from the file \fI~/.bash_logout\fP, if it exists. @@ -450,7 +456,7 @@ The following definitions are used throughout the rest of this document. .PD 0 .TP -.B blank +.B blank A space or tab. .TP .B word @@ -459,7 +465,7 @@ Also known as a .BR token . .TP .B name -A +A .I word consisting only of alphanumeric characters and underscores, and beginning with an alphabetic character or an underscore. Also @@ -471,8 +477,8 @@ A character that, when unquoted, separates words. One of the following: .br .RS .PP -.if t \fB| & ; ( ) < > space tab\fP -.if n \fB| & ; ( ) < > space tab\fP +.if t \fB| & ; ( ) < > space tab newline\fP +.if n \fB| & ; ( ) < > space tab newline\fP .RE .PP .TP @@ -481,8 +487,8 @@ A \fItoken\fP that performs a control function. It is one of the following symbols: .RS .PP -.if t \fB|| & && ; ;; ( ) | |& \fP -.if n \fB|| & && ; ;; ( ) | |& \fP +.if t \fB|| & && ; ;; ;& ;;& ( ) | |& \fP +.if n \fB|| & && ; ;; ;& ;;& ( ) | |& \fP .RE .PD .SH "RESERVED WORDS" @@ -491,8 +497,8 @@ The following words are recognized as reserved when unquoted and either the first word of a simple command (see .SM .B SHELL GRAMMAR -below) or the third word of a -.B case +below) or the third word of a +.B case or .B for command: @@ -622,7 +628,7 @@ 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. .PP -AND and OR lists are sequences of one of more pipelines separated by the +AND and OR lists are sequences of one or more pipelines separated by the \fB&&\fP and \fB||\fP control operators, respectively. AND and OR lists are executed with left associativity. An AND list has the form @@ -712,9 +718,9 @@ right of the operator is considered a pattern and matched according to the rules described below under \fBPattern Matching\fP, as if the \fBextglob\fP shell option were enabled. The \fB=\fP operator is equivalent to \fB==\fP. -If the shell option +If the .B nocasematch -is enabled, the match is performed without regard to the case +shell option is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (\fB==\fP) or does not match (\fB!=\fP) the pattern, and 1 otherwise. @@ -725,14 +731,14 @@ to be matched as a string. An additional binary operator, \fB=~\fP, is available, with the same precedence as \fB==\fP and \fB!=\fP. When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in \fIregex\fP(3)). +an extended regular expression and matched accordingly (as in \fIregex\fP(3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional expression's return value is 2. -If the shell option +If the .B nocasematch -is enabled, the match is performed without regard to the case +shell option is enabled, the match is performed without regard to the case of alphabetic characters. Any part of the pattern may be quoted to force the quoted portion to be matched as a string. @@ -860,14 +866,14 @@ as for pathname expansion (see .B Pathname Expansion below). The \fIword\fP is expanded using tilde -expansion, parameter and variable expansion, arithmetic substitution, +expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution and quote removal. Each \fIpattern\fP examined is expanded using tilde -expansion, parameter and variable expansion, arithmetic substitution, +expansion, parameter and variable expansion, arithmetic expansion, command substitution, and process substitution. -If the shell option +If the .B nocasematch -is enabled, the match is performed without regard to the case +shell option is enabled, the match is performed without regard to the case of alphabetic characters. When a match is found, the corresponding \fIlist\fP is executed. If the \fB;;\fP operator is used, no subsequent matches are attempted after @@ -885,7 +891,7 @@ last command executed in \fIlist\fP. [ \fBelif\fP \fIlist\fP; \fBthen\fP \fIlist\fP; ] ... \ [ \fBelse\fP \fIlist\fP; ] \fBfi\fP The -.B if +.B if .I list is executed. If its exit status is zero, the \fBthen\fP \fIlist\fP is executed. Otherwise, each \fBelif\fP @@ -903,7 +909,7 @@ last command executed, or zero if no condition tested true. The \fBwhile\fP command continuously executes the list \fIlist-2\fP as long as the last command in the list \fIlist-1\fP returns an exit status of zero. The \fBuntil\fP command is identical -to the \fBwhile\fP command, except that the test is negated; +to the \fBwhile\fP command, except that the test is negated: .I list-2 is executed as long as the last command in .I list-1 @@ -973,10 +979,12 @@ This defines a function named \fIname\fP. The reserved word \fBfunction\fP is optional. If the \fBfunction\fP reserved word is supplied, the parentheses are optional. The \fIbody\fP of the function is the compound command -.I compound\-command +.I compound\-command (see \fBCompound Commands\fP above). That command is usually a \fIlist\fP of commands between { and }, but -may be any command listed under \fBCompound Commands\fP above. +may be any command listed under \fBCompound Commands\fP above, +with one exception: If the \fBfunction\fP reserved word is used, but the +parentheses are not supplied, the braces are required. \fIcompound\-command\fP is executed whenever \fIname\fP is specified as the name of a simple command. When in \fIposix mode\fP, \fIname\fP may not be the name of one of the @@ -1011,7 +1019,7 @@ option enabled does not allow comments. The option is on by default in interactive shells. .SH QUOTING \fIQuoting\fP is used to remove the special meaning of certain -characters or words to the shell. Quoting can be used to +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. @@ -1053,6 +1061,8 @@ of all characters within the quotes, with the exception of .BR \e , and, when history expansion is enabled, .BR ! . +When the shell is in \fIposix mode\fP, the \fB!\fP has no special meaning +within double quotes, even when history expansion is enabled. The characters .B $ and @@ -1102,19 +1112,19 @@ backspace .TP .B \eE an escape character -.TP +.TP .B \ef form feed -.TP +.TP .B \en new line -.TP +.TP .B \er carriage return .TP .B \et horizontal tab -.TP +.TP .B \ev vertical tab .TP @@ -1126,7 +1136,10 @@ single quote .TP .B \e\(dq double quote -.TP +.TP +.B \e? +question mark +.TP .B \e\fInnn\fP the eight-bit character whose value is the octal value \fInnn\fP (one to three digits) @@ -1224,7 +1237,7 @@ Assignment statements may also appear as arguments to the .BR readonly , and .B local -builtin commands. +builtin commands (\fIdeclaration\fP commands). When in \fIposix mode\fP, these builtins may appear in a command after one or more instances of the \fBcommand\fP builtin and retain these assignment statement properties. @@ -1232,6 +1245,8 @@ assignment statement properties. In the context where an assignment statement is assigning a value to a shell variable or array index, the += operator can be used to append to or add to the variable's previous value. +This includes arguments to builtin commands such as \fBdeclare\fP that +accept assignment statements (\fIdeclaration\fP commands). When += is applied to a variable for which the \fIinteger\fP attribute has been set, \fIvalue\fP is evaluated as an arithmetic expression and added to the variable's current value, which is also evaluated. @@ -1250,9 +1265,11 @@ A variable can be assigned the \fInameref\fP attribute using the (see the descriptions of \fBdeclare\fP and \fBlocal\fP below) to create a \fInameref\fP, 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. +Whenever the nameref variable is referenced, assigned to, unset, or has +its attributes modified (other than using or changing the \fInameref\fP +attribute itself), the +operation is actually performed on the variable specified by the nameref +variable's value. A nameref is commonly used within shell functions to refer to a variable whose name is passed as an argument to the function. For instance, if a variable name is passed to a shell function as its first @@ -1265,13 +1282,14 @@ argument, running .sp .5 inside the function creates a nameref variable \fBref\fP whose value is the variable name passed as the first argument. -References and assignments to \fBref\fP are treated as references and -assignments to the variable whose name was passed as \fB$1\fP. +References and assignments to \fBref\fP, and changes to its attributes, +are treated as references, assignments, and attribute modifications +to the variable whose name was passed as \fB$1\fP. If the control variable in a \fBfor\fP 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 \fB\-n\fP attribute. +Array variables cannot be given the \fBnameref\fP attribute. However, nameref variables can reference array variables and subscripted array variables. Namerefs can be unset using the \fB\-n\fP option to the \fBunset\fP builtin. @@ -1311,8 +1329,7 @@ expands to a separate word. In contexts where it is performed, those words are subject to further word splitting and pathname expansion. When the expansion occurs within double quotes, it expands to a single word -with the value of each parameter separated by the first character -of the +with the value of each parameter separated by the first character of the .SM .B IFS special variable. That is, "\fB$*\fP" is equivalent @@ -1339,7 +1356,7 @@ 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, "\fB$@\fP" and +When there are no positional parameters, "\fB$@\fP" and .B $@ expand to nothing (i.e., they are removed). .TP @@ -1440,8 +1457,13 @@ that do not require \fBbash\fP to be re-initialized. .B BASH_ALIASES An associative array variable whose members correspond to the internal list of aliases as maintained by the \fBalias\fP builtin. -Elements added to this array appear in the alias list; unsetting array -elements cause aliases to be removed from the alias list. +Elements added to this array appear in the alias list; however, +unsetting array elements currently does not cause aliases to be removed +from the alias list. +If +.B BASH_ALIASES +is unset, it loses its special properties, even if it is +subsequently reset. .TP .B BASH_ARGC An array variable whose values are the number of parameters in each @@ -1482,8 +1504,13 @@ builtin below) .B BASH_CMDS An associative array variable whose members correspond to the internal hash table of commands as maintained by the \fBhash\fP builtin. -Elements added to this array appear in the hash table; unsetting array -elements cause commands to be removed from the hash table. +Elements added to this array appear in the hash table; however, +unsetting array elements currently does not cause command names to be removed +from the hash table. +If +.B BASH_CMDS +is unset, it loses its special properties, even if it is +subsequently reset. .TP .B BASH_COMMAND The command currently being executed or about to be executed, unless the @@ -1509,6 +1536,12 @@ Use .B LINENO to obtain the current line number. .TP +.B BASH_LOADABLES_PATH +A colon-separated list of directories in which the shell looks for +dynamically loadable builtins specified by the +.B enable +command. +.TP .B BASH_REMATCH An array variable whose members are assigned by the \fB=~\fP binary operator to the \fB[[\fP conditional command. @@ -1670,7 +1703,7 @@ This variable exists only when a shell function is executing. Assignments to .SM .B FUNCNAME -have no effect and return an error status. +have no effect. If .SM .B FUNCNAME @@ -1690,10 +1723,10 @@ information. .B GROUPS An array variable containing the list of groups of which the current user is a member. -Assignments to +Assignments to .SM .B GROUPS -have no effect and return an error status. +have no effect. If .SM .B GROUPS @@ -1828,7 +1861,7 @@ builtin command when no arguments are supplied. .B SECONDS Each time this parameter is referenced, the number of seconds since shell invocation is returned. If a -value is assigned to +value is assigned to .SM .BR SECONDS , the value returned upon subsequent @@ -1980,6 +2013,21 @@ Similar to .BR BASH_ENV ; used when the shell is invoked in POSIX mode. .TP +.B EXECIGNORE +A colon-separated list of shell patterns (see \fBPattern Matching\fP) +defining the list of filenames to be ignored by command search using +\fBPATH\fP. +Files whose full pathnames match one of these patterns are not considered +executable files for the purposes of completion and command execution +via \fBPATH\fP lookup. +This does not affect the behavior of the \fB[\fP, \fBtest\fP, and \fB[[\fP +commands. +Full pathnames in the command hash table are not subject to \fBEXECIGNORE\fP. +Use this variable to ignore shared library files that have the executable +bit set, but are not executable files. +The pattern matching honors the setting of the \fBextglob\fP shell +option. +.TP .B FCEDIT The default editor for the .B fc @@ -2021,7 +2069,7 @@ If the list of values includes lines which begin with a .B space character are not saved in the history list. -A value of +A value of .I ignoredups causes lines matching the previous history entry to not be saved. A value of @@ -2080,6 +2128,8 @@ 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 .SM .BR HISTIGNORE . +The pattern matching honors the setting of the \fBextglob\fP shell +option. .TP .B HISTSIZE The number of commands to remember in the command history (see @@ -2195,6 +2245,10 @@ strings preceded by a \fB$\fP. .B LC_NUMERIC This variable determines the locale category used for number formatting. .TP +.B LC_TIME +This variable determines the locale category used for data and time +formatting. +.TP .B LINES Used by the \fBselect\fP compound command to determine the column length for printing selection lists. @@ -2223,18 +2277,20 @@ 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. .TP .B MAILPATH -A colon-separated list of filenames to be checked for mail. +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, \fB$_\fP expands to the name of -the current mailfile. +the current mailfile. Example: .RS .PP \fBMAILPATH\fP=\(aq/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has mail!"\(aq .PP .B Bash -supplies a default value for this variable, but the location of the user +can be configured to supply +a default value for this variable (there is no value by default), +but the location of the user mail files that it uses is system dependent (e.g., /var/mail/\fB$USER\fP). .RE .TP @@ -2269,8 +2325,10 @@ The default path is system-dependent, and is set by the administrator who installs .BR bash . A common value is +.na .if t \f(CW/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin\fP. .if n ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''. +.ad .TP .B POSIXLY_CORRECT If this variable is in the environment when \fBbash\fP starts, the shell @@ -2294,6 +2352,13 @@ trailing directory components to retain when expanding the \fB\ew\fP and .B PROMPTING below). Characters removed are replaced with an ellipsis. .TP +.B PS0 +The value of this parameter is expanded (see +.SM +.B PROMPTING +below) and displayed by interactive shells after reading a command +and before the command is executed. +.TP .B PS1 The value of this parameter is expanded (see .SM @@ -2460,7 +2525,7 @@ 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 +expressions) and are zero-based; associative arrays are referenced using arbitrary strings. Unless otherwise noted, indexed array indices must be non-negative integers. .PP @@ -2533,16 +2598,20 @@ of the special parameters \fB*\fP and \fB@\fP (see above). ${#\fIname\fP[\fIsubscript\fP]} expands to the length of ${\fIname\fP[\fIsubscript\fP]}. If \fIsubscript\fP is \fB*\fP or \fB@\fP, 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 .I subscript used to reference an element of an indexed array -evaluates to a number less than zero, it is +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. .PP +Referencing an array variable without a subscript is equivalent to +referencing the array with a subscript of 0. +Any reference to a variable using a valid subscript is legal, and +.B bash +will create an array if necessary. +.PP An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. .PP @@ -2573,7 +2642,7 @@ builtins each accept a option to specify an indexed array and a .B \-A option to specify an associative array. -If both options are supplied, +If both options are supplied, .B \-A takes precedence. The @@ -2612,6 +2681,10 @@ This is performed at the same time as tilde, parameter, variable, and arithmetic expansion and command substitution. .PP +After these expansions are performed, quote characters present in the +original word are removed unless they have been quoted themselves +(\fIquote removal\fP). +.PP Only brace expansion, word splitting, and pathname expansion can change the number of words of the expansion; other expansions expand a single word to a single word. @@ -2708,7 +2781,7 @@ If strict compatibility with is desired, start .B bash with the -.B +B +.B +B option or disable brace expansion with the .B +B option to the @@ -2802,12 +2875,16 @@ The \fIparameter\fP is a shell parameter as described above .PD .PP If the first character of \fIparameter\fP is an exclamation point (\fB!\fP), +and \fIparameter\fP is not a \fInameref\fP, it introduces a level of variable indirection. \fBBash\fP uses the value of the variable formed from the rest of \fIparameter\fP as the name of the variable; this variable is then expanded and that value is used in the rest of the substitution, rather than the value of \fIparameter\fP itself. This is known as \fIindirect expansion\fP. +If \fIparameter\fP is a nameref, this expands to the name of the +variable referenced by \fIparameter\fP instead of performing the +complete indirect expansion. The exceptions to this are the expansions of ${\fB!\fP\fIprefix\fP\fB*\fP} and ${\fB!\fP\fIname\fP[\fI@\fP]} described below. The exclamation point must immediately follow the left brace in order to @@ -2914,7 +2991,7 @@ zero. Substring expansion applied to an associative array produces undefined results. .sp 1 -Substring indexing is zero-based unless the positional parameters +Substring indexing is zero-based unless the positional parameters are used, in which case the indexing starts at 1 by default. If \fIoffset\fP is 0, and the positional parameters are used, \fB$0\fP is prefixed to the list. @@ -2953,7 +3030,7 @@ If .I parameter is .B * -or +or .BR @ , the value substituted is the number of positional parameters. If @@ -2976,7 +3053,7 @@ ${\fIparameter\fP\fB#\fP\fIword\fP} ${\fIparameter\fP\fB##\fP\fIword\fP} .PD \fBRemove matching prefix pattern\fP. -The +The .I word is expanded to produce a pattern just as in pathname expansion. If the pattern matches the beginning of @@ -3048,6 +3125,10 @@ If \fIpattern\fP begins with \fB%\fP, it must match at the end of the expanded value of \fIparameter\fP. If \fIstring\fP is null, matches of \fIpattern\fP are deleted and the \fB/\fP following \fIpattern\fP may be omitted. +If the +.B nocasematch +shell option is enabled, the match is performed without regard to the case +of alphabetic characters. If .I parameter is @@ -3105,6 +3186,58 @@ or .BR * , the case modification operation is applied to each member of the array in turn, and the expansion is the resultant list. +.TP +${\fIparameter\fP\fB@\fP\fIoperator\fP} +\fBParameter transformation\fP. +The expansion is either a transformation of the value of \fIparameter\fP +or information about \fIparameter\fP itself, depending on the value of +\fIoperator\fP. Each \fIoperator\fP is a single letter: +.sp 1 +.RS +.PD 0 +.TP +.B Q +The expansion is a string that is the value of \fIparameter\fP quoted in a +format that can be reused as input. +.TP +.B E +The expansion is a string that is the value of \fIparameter\fP with backslash +escape sequences expanded as with the \fB$'...'\fP quoting mechansim. +.TP +.B P +The expansion is a string that is the result of expanding the value of +\fIparameter\fP as if it were a prompt string (see \fBPROMPTING\fP below). +.TP +.B A +The expansion is a string in the form of +an assignment statement or \fBdeclare\fP command that, if +evaluated, will recreate \fIparameter\fP with its attributes and value. +.TP +.B a +The expansion is a string consisting of flag values representing +\fIparameter\fP's attributes. +.PD +.PP +If +.I parameter +is +.B @ +or +.BR * , +the operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If +.I parameter +is an array variable subscripted with +.B @ +or +.BR * , +the case modification operation is applied to each member of the +array in turn, and the expansion is the resultant list. +.sp 1 +The result of the expansion is subject to word splitting and pathname +expansion as described below. +.RE .SS Command Substitution .PP \fICommand substitution\fP allows the output of a command to replace @@ -3119,8 +3252,8 @@ or .RE .PP .B Bash -performs the expansion by executing \fIcommand\fP and -replacing the command substitution with the standard output of the +performs the expansion by executing \fIcommand\fP in a subshell environment +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. @@ -3171,22 +3304,26 @@ is invalid, prints a message indicating failure and no substitution occurs. .SS Process Substitution .PP -\fIProcess substitution\fP is supported on systems that support named -pipes (\fIFIFOs\fP) or the \fB/dev/fd\fP method of naming open files. +\fIProcess substitution\fP allows a process's input or output to be +referred to using a filename. It takes the form of \fB<(\fP\fIlist\^\fP\fB)\fP or \fB>(\fP\fIlist\^\fP\fB)\fP. -The process \fIlist\fP is run with its input or output connected to a -\fIFIFO\fP or some file in \fB/dev/fd\fP. The name of this file is +The process \fIlist\fP is run asynchronously, and its input or output +appears as a filename. +This filename is passed as an argument to the current command as the result of the -expansion. If the \fB>(\fP\fIlist\^\fP\fB)\fP form is used, writing to +expansion. +If the \fB>(\fP\fIlist\^\fP\fB)\fP form is used, writing to the file will provide input for \fIlist\fP. If the \fB<(\fP\fIlist\^\fP\fB)\fP form is used, the file passed as an argument should be read to obtain the output of \fIlist\fP. +Process substitution is supported on systems that support named +pipes (\fIFIFOs\fP) or the \fB/dev/fd\fP method of naming open files. .PP When available, process substitution is performed -simultaneously with parameter and variable expansion, +simultaneously with parameter and variable expansion, command substitution, and arithmetic expansion. .SS Word Splitting @@ -3227,9 +3364,10 @@ If .B IFS has a value other than the default, then sequences of the whitespace characters -.B space +.BR space , +.BR tab , and -.B tab +.B newline are ignored at the beginning and end of the word, as long as the whitespace character is in the value of @@ -3258,11 +3396,18 @@ If the value of .B IFS is null, no word splitting occurs. .PP -Explicit null arguments (\^\f3"\^"\fP or \^\f3\(aq\^\(aq\fP\^) are retained. +Explicit null arguments (\^\f3"\^"\fP or \^\f3\(aq\^\(aq\fP\^) are retained +and passed to commands as empty strings. Unquoted implicit null arguments, resulting from the expansion of parameters that have no values, are removed. If a parameter with no value is expanded within double quotes, a -null argument results and is retained. +null argument results and is retained +and passed to a command as an empty string. +When a quoted null argument appears as part of a word whose expansion is +non-null, the null argument is removed. +That is, the word +\f(CW\-d\(aq\^\(aq\fP becomes \f(CW\-d\fP after word splitting and +null argument removal. .PP Note that if no expansion occurs, no splitting is performed. @@ -3291,7 +3436,7 @@ If no matching filenames are found, and the shell option .B nullglob is not enabled, the word is left unchanged. -If the +If the .B nullglob option is set, and no matches are found, the word is removed. @@ -3340,6 +3485,10 @@ is set, each matching filename that also matches one of the patterns in .SM .B GLOBIGNORE is removed from the list of matches. +If the \fBnocaseglob\fP option is set, the matching against the patterns in +.SM +.B GLOBIGNORE +is performed without regard to case. The filenames .B ``.'' and @@ -3368,6 +3517,8 @@ option is disabled when .SM .B GLOBIGNORE is unset. +The pattern matching honors the setting of the \fBextglob\fP shell +option. .PP \fBPattern Matching\fP .PP @@ -3427,7 +3578,7 @@ shell variable to or enable the .B globasciiranges shell option. -A +A .B \- may be matched by including it as the first or last character in the set. @@ -3458,7 +3609,7 @@ The \fBword\fP character class matches letters, digits, and the character _. .if n .sp 1 Within .B [ -and +and .BR ] , an \fIequivalence class\fP can be specified using the syntax \fB[=\fP\fIc\fP\fB=]\fP, which matches all characters with the @@ -3469,7 +3620,7 @@ the character \fIc\fP. .if n .sp 1 Within .B [ -and +and .BR ] , the syntax \fB[.\fP\fIsymbol\fP\fB.]\fP matches the collating symbol \fIsymbol\fP. @@ -3557,14 +3708,14 @@ If it expands to more than one word, .B bash reports an error. .PP -Note that the order of redirections is significant. For example, +Note that the order of redirections is significant. For example, the command .RS .PP ls \fB>\fP dirlist 2\fB>&\fP1 .RE .PP -directs both standard output and standard error to the file +directs both standard output and standard error to the file .IR dirlist , while the command .RS @@ -3579,7 +3730,10 @@ before the standard output was redirected to .IR dirlist . .PP \fBBash\fP handles several filenames specially when they are used in -redirections, as described in the following table: +redirections, as described in the following table. +If the operating system on which \fBbash\fP is running provides these +special files, bash will use them; otherwise it will emulate them +internally with the behavior described below. .RS .PP .PD 0 @@ -3745,13 +3899,13 @@ current source until a line containing only (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. +input (or file descriptor \fIn\fP if \fIn\fP is specified) for a command. .PP The format of here-documents is: .RS .PP .nf -\fB<<\fP[\fB\-\fP]\fIword\fP +[\fIn\fP]\fB<<\fP[\fB\-\fP]\fIword\fP \fIhere-document\fP \fIdelimiter\fP .fi @@ -3760,9 +3914,9 @@ The format of here-documents is: No parameter and variable expansion, command substitution, arithmetic expansion, or pathname expansion is performed on .IR word . -If any characters in +If any part of .I word -are quoted, the +is quoted, the .I delimiter is the result of quote removal on .IR word , @@ -3793,7 +3947,7 @@ A variant of here documents, the format is: .RS .PP .nf -\fB<<<\fP\fIword\fP +[\fIn\fP]\fB<<<\fP\fIword\fP .fi .RE .PP @@ -3801,8 +3955,9 @@ The \fIword\fP 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. +The result is supplied as a single string, with a newline appended, +to the command on its +standard input (or file descriptor \fIn\fP if \fIn\fP is specified). .SS "Duplicating File Descriptors" .PP The redirection operator @@ -3961,7 +4116,7 @@ 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 +is itself a 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 @@ -3995,7 +4150,7 @@ is executing. .PP All other aspects of the shell execution environment are identical between a function and its caller -with these exceptions: the +with these exceptions: the .SM .B DEBUG and @@ -4079,7 +4234,7 @@ By default, no limit is imposed on the number of recursive calls. .SH "ARITHMETIC EVALUATION" The shell allows arithmetic expressions to be evaluated, under certain circumstances (see the \fBlet\fP and \fBdeclare\fP builtin -commands and \fBArithmetic Expansion\fP). +commands, the \fB((\fP compound command, and \fBArithmetic Expansion\fP). 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 @@ -4165,7 +4320,7 @@ is a decimal number between 2 and 64 representing the arithmetic base, and \fIn\fP is a number in that base. If \fIbase#\fP is omitted, then base 10 is used. When specifying \fIn\fP, -the digits greater< than 9 are represented by the lowercase letters, +the digits greater than 9 are represented by the lowercase letters, the uppercase letters, @, and _, in that order. If \fIbase\fP is less than or equal to 36, lowercase and uppercase letters may be used interchangeably to represent numbers between 10 @@ -4179,6 +4334,11 @@ Conditional expressions are used by the \fB[[\fP compound command and the \fBtest\fP and \fB[\fP builtin commands to test file attributes and perform string and arithmetic comparisons. Expressions are formed from the following unary or binary primaries. +\fBBash\fP handles several filenames specially when they are used in +expressions. +If the operating system on which \fBbash\fP is running provides these +special files, bash will use them; otherwise it will emulate them +internally with this behavior: If any \fIfile\fP argument to one of the primaries is of the form \fI/dev/fd/n\fP, then file descriptor \fIn\fP is checked. If the \fIfile\fP argument to one of the primaries is one of @@ -4444,7 +4604,7 @@ 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 +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 @@ -4503,7 +4663,7 @@ traps caught by the shell are reset to the values inherited from the shell's parent, and traps ignored by the shell are ignored .PP A command invoked in this separate environment cannot affect the -shell's execution environment. +shell's execution environment. .PP Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a @@ -4526,7 +4686,7 @@ shell as modified by redirections. When a program is invoked it is given an array of strings called the .IR environment . -This is a list of +This is a list of \fIname\fP\-\fIvalue\fP pairs, of the form .IR "name\fR=\fPvalue" . .PP @@ -4563,7 +4723,7 @@ parameter assignments, as described above in These assignment statements affect only the environment seen by that command. .PP -If the +If the .B \-k option is set (see the .B set @@ -4584,11 +4744,11 @@ The exit status of an executed command is the value returned by the \fIwaitpid\fP 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 +compound commands are also limited to this range. Under certain circumstances, the shell will use special values to indicate specific failure modes. .PP -For the shell's purposes, a command which exits with a +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 \fIN\fP, \fBbash\fP uses @@ -4603,8 +4763,9 @@ the exit status is greater than zero. .PP Shell builtin commands return a status of 0 (\fItrue\fP) if successful, and non-zero (\fIfalse\fP) if an error occurs -while they execute. -All builtins return an exit status of 2 to indicate incorrect usage. +while they execute. +All builtins return an exit status of 2 to indicate incorrect usage, +generally invalid options or missing arguments. .PP \fBBash\fP itself returns the exit status of the last command executed, unless a syntax error occurs, in which case it exits @@ -4668,12 +4829,12 @@ to ensure that they receive the .BR SIGHUP . To prevent the shell from sending the signal to a particular job, it should be removed from the -jobs table with the +jobs table with the .B disown builtin (see .SM .B "SHELL BUILTIN COMMANDS" -below) or marked +below) or marked to not receive .SM .B SIGHUP @@ -4685,14 +4846,14 @@ If the shell option has been set with .BR shopt , .B bash -sends a +sends a .SM .B SIGHUP to all jobs when an interactive login shell exits. .PP If \fBbash\fP 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. +the command completes. When \fBbash\fP is waiting for an asynchronous command via the \fBwait\fP builtin, the reception of a signal for which a trap has been set will cause the \fBwait\fP builtin to return immediately with an exit status @@ -4746,7 +4907,7 @@ user so specifies with \f(CWstty tostop\fP, write to the terminal. Background processes which attempt to read from (write to when \f(CWstty tostop\fP is in effect) the -terminal are sent a +terminal are sent a .SM .B SIGTTIN (SIGTTOU) signal by the kernel's terminal driver, @@ -4763,7 +4924,7 @@ Typing the character (typically .BR ^Z , Control-Z) while a process is running -causes that process to be stopped and returns control to +causes that process to be stopped and returns control to .BR bash . Typing the .I "delayed suspend" @@ -4813,7 +4974,7 @@ refer to the shell's notion of the .IR "current job" , which is the last job stopped while it was in the foreground or started in the background. -The +The .I "previous job" may be referenced using .BR %\- . @@ -4844,7 +5005,7 @@ Normally, .B 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 +any other output. If the .B \-b option to the .B set @@ -4865,12 +5026,12 @@ warning message, and, if the \fBcheckjobs\fP option is enabled, lists the jobs and their statuses. The .B jobs -command may then be used to inspect their status. +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. .SH PROMPTING -When executing interactively, +When executing interactively, .B bash displays the primary prompt .SM @@ -4880,6 +5041,10 @@ when it is ready to read a command, and the secondary prompt .B PS2 when it needs more input to complete a command. .B Bash +displays +.B PS0 +after it reads a command but before executing it. +.B Bash allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows: .RS @@ -5034,10 +5199,10 @@ builtin. .PP In this section, the Emacs-style notation is used to denote keystrokes. Control keys are denoted by C\-\fIkey\fR, e.g., C\-n -means Control\-N. Similarly, +means Control\-N. Similarly, .I meta keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X. (On keyboards -without a +without a .I meta key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key then the @@ -5055,7 +5220,7 @@ 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., \fBkill\-line\fP) causes that command to act in a -backward direction. +backward direction. Commands whose behavior with arguments deviates from this are noted below. .PP @@ -5063,7 +5228,7 @@ When a command is described as \fIkilling\fP text, the text deleted is saved for possible future retrieval (\fIyanking\fP). The killed text is saved in a \fIkill ring\fP. Consecutive kills cause the text to be -accumulated into one unit, which can be yanked all at once. +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. .SS "Readline Initialization" @@ -5086,7 +5251,7 @@ Lines beginning with a \fB$\fP indicate conditional constructs. Other lines denote key bindings and variable settings. .PP The default key-bindings may be changed with an -.I inputrc +.I inputrc file. Other programs that use this library may add their own commands and bindings. @@ -5100,7 +5265,7 @@ or .RS C\-Meta\-u: universal\-argument .RE -into the +into the .I inputrc would make M\-C\-u execute the readline command .IR universal\-argument . @@ -5126,7 +5291,7 @@ The syntax for controlling key bindings in the .I 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: +it should be bound. The name may be specified in one of two ways: as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP prefixes, or as a key sequence. .PP @@ -5182,7 +5347,7 @@ is again bound to the function .I "C\-x C\-r" is bound to the function .BR re\-read\-init\-file , -and +and .I "ESC [ 1 1 ~" is bound to insert the text .if t \f(CWFunction Key 1\fP. @@ -5306,9 +5471,19 @@ If set to \fBOn\fP, readline attempts to bind the control characters treated specially by the kernel's terminal driver to their readline equivalents. .TP +.B blink\-matching\-paren (Off) +If set to \fBOn\fP, readline attempts to briefly move the cursor to an +opening parenthesis when a closing parenthesis is inserted. +.TP +.B colored\-completion\-prefix (Off) +If set to \fBOn\fP, when listing completions, readline displays the +common prefix of the set of possible completions using a different color. +The color definitions are taken from the value of the \fBLS_COLORS\fP +environment variable. +.TP .B colored\-stats (Off) If set to \fBOn\fP, readline displays possible completions using different -colors to indicate their file type. +colors to indicate their file type. The color definitions are taken from the value of the \fBLS_COLORS\fP environment variable. .TP @@ -5322,10 +5497,23 @@ in emacs mode and to .B # in vi command mode. .TP +.B completion\-display\-width (-1) +The number of screen columns used to display possible matches +when performing completion. +The value is ignored if it is less than 0 or greater than the terminal +screen width. +A value of 0 will cause matches to be displayed one per line. +The default value is -1. +.TP .B completion\-ignore\-case (Off) If set to \fBOn\fP, readline performs filename matching and completion in a case\-insensitive fashion. .TP +.B completion\-map\-case (Off) +If set to \fBOn\fP, and \fBcompletion\-ignore\-case\fP is enabled, readline +treats hyphens (\fI\-\fP) and underscores (\fI_\fP) as equivalent when +performing case\-insensitive filename matching and completion. +.TP .B 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 @@ -5347,12 +5535,19 @@ If set to \fBOn\fP, 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 \fImeta prefix\fP). +The default is \fIOn\fP, but readline will set it to \fIOff\fP if the +locale contains eight-bit characters. .TP .B disable\-completion (Off) If set to \fBOn\fP, readline will inhibit word completion. Completion characters will be inserted into the line as if they had been mapped to \fBself-insert\fP. .TP +.B echo\-control\-characters (On) +When set to \fBOn\fP, on operating systems that indicate they support it, +readline echoes a character corresponding to a signal generated from the +keyboard. +.TP .B editing\-mode (emacs) Controls whether readline begins with a set of key bindings similar to \fIEmacs\fP or \fIvi\fP. @@ -5362,10 +5557,12 @@ can be set to either or .BR vi . .TP -.B echo\-control\-characters (On) -When set to \fBOn\fP, on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the -keyboard. +.B enable\-bracketed\-paste (Off) +When set to \fBOn\fP, readline will configure the terminal in a way +that will enable it to insert each paste into the editing buffer as a +single string of characters, instead of treating each character as if +it had been read from the keyboard. This can prevent pasted characters +from being interpreted as editing commands. .TP .B enable\-keypad (Off) When set to \fBOn\fP, readline will try to enable the application @@ -5386,13 +5583,16 @@ If set to \fBOn\fP, the history code attempts to place point at the same location on each history line retrieved with \fBprevious-history\fP or \fBnext-history\fP. .TP -.B history\-size (0) +.B history\-size (unset) 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. +By default, the number of history entries is set to the value of the +\fBHISTSIZE\fP shell variable. +If an attempt is made to set \fIhistory\-size\fP to a non-numeric value, +the maximum number of history entries will be set to 500. .TP .B horizontal\-scroll\-mode (Off) When set to \fBOn\fP, makes readline use a single line for display, @@ -5401,10 +5601,12 @@ becomes longer than the screen width rather than wrapping to a new line. .TP .B input\-meta (Off) If set to \fBOn\fP, readline will enable eight-bit input (that is, -it will not strip the high bit from the characters it reads), +it will not strip the eighth bit from the characters it reads), regardless of what the terminal claims it can support. The name .B meta\-flag is a synonym for this variable. +The default is \fIOff\fP, but readline will set it to \fIOn\fP if the +locale contains eight-bit characters. .TP .B isearch\-terminators (``C\-[C\-J'') The string of characters that should terminate an incremental @@ -5424,6 +5626,15 @@ the value of .B editing\-mode also affects the default keymap. .TP +.B emacs\-mode\-string (@) +This string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \e1 and \e2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +.TP .B keyseq\-timeout (500) Specifies the duration \fIreadline\fP will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using @@ -5452,7 +5663,7 @@ have a slash appended (subject to the value of .TP .B match\-hidden\-files (On) This variable, when set to \fBOn\fP, causes readline to match files whose -names begin with a `.' (hidden files) when performing filename +names begin with a `.' (hidden files) when performing filename completion. If set to \fBOff\fP, the leading `.' must be supplied by the user in the filename to be completed. @@ -5466,6 +5677,8 @@ the list. If set to \fBOn\fP, readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. +The default is \fIOff\fP, but readline will set it to \fIOn\fP if the +locale contains eight-bit characters. .TP .B page\-completions (On) If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager @@ -5474,9 +5687,9 @@ to display a screenful of possible completions at a time. .B print\-completions\-horizontally (Off) If set to \fBOn\fP, readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. -.TP +.TP .B revert\-all\-at\-newline (Off) -If set to \fBOn\fP, readline will undo all changes to history lines +If set to \fBOn\fP, readline will undo all changes to history lines before returning when \fBaccept\-line\fP is executed. By default, history lines may be modified and retain individual undo lists across calls to \fBreadline\fP. @@ -5511,6 +5724,26 @@ 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. .TP +.B vi\-cmd\-mode\-string ((cmd)) +This string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in command mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \e1 and \e2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +.TP +.B vi\-ins\-mode\-string ((ins)) +This string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in insertion mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \e1 and \e2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +.TP .B visible\-stats (Off) If set to \fBOn\fP, a character denoting a file's type as reported by \fIstat\fP(2) is appended to the filename when listing possible @@ -5523,7 +5756,7 @@ 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. .IP \fB$if\fP -The +The .B $if construct allows bindings to be made based on the editing mode, the terminal being used, or the application using @@ -5542,7 +5775,7 @@ The \fBterm=\fP 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 .B = -is tested against the both full name of the terminal and the portion +is tested against both the full name of the terminal and the portion of the terminal name before the first \fB\-\fP. This allows .I sun to match both @@ -5854,7 +6087,7 @@ Negative arguments have no effect. 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. +the last two words on the line. .TP .B upcase\-word (M\-u) Uppercase the current (or following) word. With a negative argument, @@ -5874,7 +6107,7 @@ switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only \fBemacs\fP mode; \fBvi\fP mode does overwrite differently. Each call to \fIreadline()\fP starts in insert mode. -In overwrite mode, characters bound to \fBself\-insert\fP replace +In overwrite mode, characters bound to \fBself\-insert\fP replace the text at point rather than pushing the text to the right. Characters bound to \fBbackward\-delete\-char\fP replace the character before point with a space. By default, this command is unbound. @@ -5897,7 +6130,7 @@ The killed text is saved on the kill-ring. .B kill\-whole\-line Kill all characters on the current line, no matter where point is. .TP -.B kill\-word (M\-d) +.B 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 \fBforward\-word\fP. @@ -5906,12 +6139,12 @@ Word boundaries are the same as those used by \fBforward\-word\fP. Kill the word behind point. Word boundaries are the same as those used by \fBbackward\-word\fP. .TP -.B shell\-kill\-word (M\-d) +.B 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 those used by \fBshell\-forward\-word\fP. .TP -.B shell\-backward\-kill\-word (M\-Rubout) +.B shell\-backward\-kill\-word Kill the word behind point. Word boundaries are the same as those used by \fBshell\-backward\-word\fP. .TP @@ -5966,7 +6199,7 @@ If the command is followed by digits, executing .B 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 +character that is neither a digit nor minus sign, the argument count for the next command is multiplied by four. The argument count is initially one, so executing this function the first time makes the argument count four, a second time makes the @@ -6161,10 +6394,10 @@ but usually bound to ESC\-[. Without a numeric argument, the value of the readline .B 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 +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 \fBcomment\-begin\fP, the value is inserted, otherwise -the characters in \fBcomment\-begin\fP are deleted from the beginning of +the characters in \fBcomment\-begin\fP 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 @@ -6275,7 +6508,7 @@ 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 +as described above under .SM .BR EXPANSION . The results are split using the rules described above under @@ -6297,7 +6530,7 @@ and .B COMP_TYPE variables are assigned values as described above under \fBShell Variables\fP. -If a shell function is being invoked, the +If a shell function is being invoked, the .SM .B COMP_WORDS and @@ -6337,6 +6570,10 @@ is removed before attempting a match. Any completion that matches the pattern will be removed from the list. A leading \fB!\fP negates the pattern; in this case any completion not matching the pattern will be removed. +If the +.B nocasematch +shell option is enabled, the match is performed without regard to the case +of alphabetic characters. .PP Finally, any prefix and suffix specified with the \fB\-P\fP and \fB\-S\fP options are added to each member of the completion list, and the result is @@ -6365,7 +6602,7 @@ generate no matches. .PP 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 +to completed names which are symbolic links to directories, subject to the value of the \fBmark\-directories\fP readline variable, regardless of the setting of the \fBmark-symlinked\-directories\fP readline variable. .PP @@ -6562,7 +6799,9 @@ quotes are considered one word. History expansions are introduced by the appearance of the history expansion character, which is \^\fB!\fP\^ by default. Only backslash (\^\fB\e\fP\^) and single quotes can quote -the history expansion character. +the history expansion character, but the history expansion character is +also treated as quoted if it immediately precedes the closing double quote +in a double-quoted string. .PP Several characters inhibit history expansion if found immediately following the history expansion character, even if it is unquoted: @@ -6669,7 +6908,7 @@ The entire command line typed so far. .SS Word Designators .PP Word designators are used to select desired words from the event. -A +A .B : separates the event specification from the word designator. It may be omitted if the word designator begins with a @@ -6808,7 +7047,8 @@ accepts to signify the end of the options. The \fB:\fP, \fBtrue\fP, \fBfalse\fP, and \fBtest\fP builtins do not accept options and do not treat \fB\-\-\fP specially. -The \fBexit\fP, \fBlogout\fP, \fBbreak\fP, \fBcontinue\fP, \fBlet\fP, +The \fBexit\fP, \fBlogout\fP, \fBreturn\fP, +\fBbreak\fP, \fBcontinue\fP, \fBlet\fP, and \fBshift\fP builtins accept and process arguments beginning with \fB\-\fP without requiring \fB\-\-\fP. Other builtins that accept arguments but are not specified as accepting @@ -6822,7 +7062,8 @@ require \fB\-\-\fP to prevent this interpretation. No effect; the command does nothing beyond expanding .I arguments and performing any specified -redirections. A zero exit code is returned. +redirections. +The return status is zero. .TP \fB .\| \fP \fIfilename\fP [\fIarguments\fP] .PD 0 @@ -6861,6 +7102,12 @@ is not searched. If any \fIarguments\fP are supplied, they become the positional parameters when \fIfilename\fP is executed. Otherwise the positional parameters are unchanged. +If the \fB\-T\fP option is enabled, \fBsource\fP inherits any trap on +\fBDEBUG\fP; if it is not, any \fBDEBUG\fP trap string is saved and +restored around the call to \fBsource\fP, and \fBsource\fP unsets the +\fBDEBUG\fP trap while it executes. +If \fB\-T\fP is not set, and the sourced file changes +the \fBDEBUG\fP trap, the new value is retained when \fBsource\fP completes. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if .I filename @@ -6873,7 +7120,7 @@ option prints the list of aliases in the form \fBalias\fP \fIname\fP=\fIvalue\fP on standard output. When arguments are supplied, an alias is defined for each \fIname\fP whose \fIvalue\fP is given. -A trailing space in \fIvalue\fP causes the next word to be +A trailing space in \fIvalue\fP causes the next word to be checked for alias substitution when the alias is expanded. For each \fIname\fP in the argument list for which no \fIvalue\fP is supplied, the name and value of the alias is printed. @@ -6904,7 +7151,7 @@ or was started without job control. .TP \fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP .TP -\fBbind\fP \fIreadline\-command\fP +\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIreadline\-command\fP .PD Display current .B readline @@ -6931,7 +7178,8 @@ names are \fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi, vi\-move, vi\-command\fP, and .IR vi\-insert . -\fIvi\fP is equivalent to \fIvi\-command\fP; \fIemacs\fP is +\fIvi\fP is equivalent to \fIvi\-command\fP (\fIvi\-move\fP is also +a synonym); \fIemacs\fP is equivalent to \fIemacs\-standard\fP. .TP .B \-l @@ -7030,7 +7278,7 @@ Returns the context of any active subroutine call (a shell function or a script executed with the \fB.\fP or \fBsource\fP builtins). Without \fIexpr\fP, \fBcaller\fP displays the line number and source filename of the current subroutine call. -If a non-negative integer is supplied as \fIexpr\fP, \fBcaller\fP +If a non-negative integer is supplied as \fIexpr\fP, \fBcaller\fP 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 @@ -7067,7 +7315,7 @@ begins with a slash (/), then .SM .B CDPATH -is not used. The +is not used. The .B \-P option causes \fBcd\fP to use the physical directory structure by resolving symbolic links while traversing \fIdir\fP and @@ -7112,8 +7360,8 @@ Run .I command with .I args -suppressing the normal shell function lookup. Only builtin -commands or commands found in the +suppressing the normal shell function lookup. +Only builtin commands or commands found in the .SM .B PATH are executed. If the @@ -7231,12 +7479,15 @@ Intended to be used with shell functions. Tell readline not to quote the completed words if they are filenames (quoting filenames is the default). .TP 8 +.B nosort +Tell readline not to sort the list of possible completions alphabetically. +.TP 8 .B nospace Tell readline not to append a space (the default) to words completed at the end of the line. .TP 8 .B plusdirs -After any matches defined by the compspec are generated, +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. .RE @@ -7442,8 +7693,8 @@ The option inhibits the display of function definitions; only the function name and attributes are printed. If the \fBextdebug\fP shell option is enabled using \fBshopt\fP, -the source file name and line number where the function is defined -are displayed as well. The +the source file name and line number where each \fIname\fP +is defined are displayed as well. The .B \-F option implies .BR \-f . @@ -7486,10 +7737,11 @@ The upper-case attribute is disabled. Give each \fIname\fP the \fInameref\fP attribute, making it a name reference to another variable. That other variable is defined by the value of \fIname\fP. -All references and assignments to \fIname\fP, except for changing the +All references, assignments, and attribute modifications +to \fIname\fP, except those using or changing the \fB\-n\fP attribute itself, are performed on the variable referenced by \fIname\fP's value. -The \fB\-n\fP attribute cannot be applied to array variables. +The nameref attribute cannot be applied to array variables. .TP .B \-r Make \fIname\fPs readonly. These names cannot then be assigned values @@ -7547,11 +7799,12 @@ or an attempt is made to display a non-existent function with \fB\-f\fP. 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 +Directories are added to the list with the .B pushd command; the .B popd command removes entries from the list. +The current directory is always the first directory in the stack. .RS .PD 0 .TP @@ -7587,7 +7840,7 @@ invalid option is supplied or \fIn\fP indexes beyond the end of the directory stack. .RE .TP -\fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ...] +\fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIjobspec\fP ... | \fIpid\fP ... ] Without options, remove each .I jobspec from the table of active jobs. @@ -7746,7 +7999,7 @@ become the arguments to \fIcommand\fP. If the .B \-l option is supplied, -the shell places a dash at the beginning of the zeroth argument passed to +the shell places a dash at the beginning of the zeroth argument passed to .IR command . This is what .IR login (1) @@ -7792,10 +8045,9 @@ is executed before the shell terminates. The supplied .I names are marked for automatic export to the environment of -subsequently executed commands. If the +subsequently executed commands. If the .B \-f -option is given, -the +option is given, the .I names refer to functions. If no @@ -7835,7 +8087,7 @@ and 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 +command number). If .I last is not specified it is set to the current command for listing (so that @@ -7992,7 +8244,7 @@ If the variable .SM .B OPTERR is set to 0, no error messages will be displayed, even if the first -character of +character of .I optstring is not a colon. .sp 1 @@ -8036,7 +8288,7 @@ error occurs. .TP \fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIfilename\fP] [\fB\-dt\fP] [\fIname\fP] Each time \fBhash\fP is invoked, -the full pathname of the command +the full pathname of the command .I name is determined by searching the directories in @@ -8109,7 +8361,7 @@ The return status is 0 unless no command matches .PD With no options, display the command history list with line numbers. Lines listed -with a +with a .B * have been modified. An argument of .I n @@ -8139,8 +8391,9 @@ Clear the history list by deleting all the entries. Delete the history entry at position \fIoffset\fP. .TP .B \-a -Append the ``new'' history lines (history lines entered since the -beginning of the current \fBbash\fP session) to the history file. +Append the ``new'' history lines to the history file. +These are history lines entered since the beginning of the current +\fBbash\fP session, but not already appended to the history file. .TP .B \-n Read the history lines not already read from the history @@ -8179,7 +8432,7 @@ 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. +as timestamps for the following history entry. The return value is 0 unless an invalid option is encountered, an error occurs while reading or writing the history file, an invalid \fIoffset\fP is supplied as an argument to \fB\-d\fP, or the @@ -8243,7 +8496,7 @@ returning its exit status. \fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ... .PD 0 .TP -\fBkill\fP \fB\-l\fP [\fIsigspec\fP | \fIexit_status\fP] +\fBkill\fP \fB\-l\fP|\fB\-L\fP [\fIsigspec\fP | \fIexit_status\fP] .PD Send the signal named by .I sigspec @@ -8280,6 +8533,9 @@ The \fIexit_status\fP argument to .B \-l is a number specifying either a signal number or the exit status of a process terminated by a signal. +The +.B \-L +option is equivalent to \fB\-l\fP. .B kill returns true if at least one signal was successfully sent, or false if an error occurs or an invalid option is encountered. @@ -8297,9 +8553,9 @@ evaluates to 0, .B let returns 1; 0 is returned otherwise. .TP -\fBlocal\fP [\fIoption\fP] [\fIname\fP[=\fIvalue\fP] ...] +\fBlocal\fP [\fIoption\fP] [\fIname\fP[=\fIvalue\fP] ... | \- ] For each argument, a local variable named -.I name +.I name is created, and assigned .IR value . The \fIoption\fP can be any of the options accepted by \fBdeclare\fP. @@ -8308,6 +8564,10 @@ When is used within a function, it causes the variable .I name to have a visible scope restricted to that function and its children. +If \fIname\fP is \-, the set of shell options is made local to the function +in which \fBlocal\fP is invoked: shell options changed using the +\fBset\fP builtin inside the function are restored to their original values +when the function returns. With no operands, .B local writes a list of local variables to the standard output. It is @@ -8323,16 +8583,16 @@ is supplied, or .B logout Exit a login shell. .TP -\fBmapfile\fP [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP] +\fBmapfile\fP [\fB\-d\fP \fIdelim\fP] [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP] .PD 0 .TP -\fBreadarray\fP [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP] +\fBreadarray\fP [\fB\-d\fP \fIdelim\fP] [\fB\-n\fP \fIcount\fP] [\fB\-O\fP \fIorigin\fP] [\fB\-s\fP \fIcount\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIcallback\fP] [\fB\-c\fP \fIquantum\fP] [\fIarray\fP] .PD Read lines from the standard input into the indexed array variable .IR array , -or from file descriptor +or from file descriptor .IR fd -if the +if the .B \-u option is supplied. The variable @@ -8343,6 +8603,10 @@ Options, if supplied, have the following meanings: .RS .PD 0 .TP +.B \-d +The first character of \fIdelim\fP is used to terminate each input line, +rather than newline. +.TP .B \-n Copy at most .I count @@ -8359,7 +8623,7 @@ The default index is 0. Discard the first \fIcount\fP lines read. .TP .B \-t -Remove a trailing newline from each line read. +Remove a trailing \fIdelim\fP (default newline) from each line read. .TP .B \-u Read lines from file descriptor \fIfd\fP instead of the standard input. @@ -8377,13 +8641,13 @@ Specify the number of lines read between each call to .PP If .B \-C -is specified without +is specified without .BR \-c , the default quantum is 5000. When \fIcallback\fP 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. -\fIcallback\fP is evaluated after the line is read but before the +\fIcallback\fP is evaluated after the line is read but before the array element is assigned. .PP If not supplied with an explicit origin, \fBmapfile\fP will clear \fIarray\fP @@ -8434,7 +8698,7 @@ the next to last. .PP If the .B popd -command is successful, a +command is successful, a .B dirs is performed as well, and the return status is 0. .B popd @@ -8462,9 +8726,8 @@ In addition to the standard \fIprintf\fP(1) format specifications, .B %b causes \fBprintf\fP to expand backslash escape sequences in the corresponding -\fIargument\fP (except that \fB\ec\fP terminates output, backslashes in -\fB\e\(aq\fP, \fB\e"\fP, and \fB\e?\fP are not removed, and octal escapes -beginning with \fB\e0\fP may contain up to four digits). +\fIargument\fP +in the same way as \fBecho \-e\fP. .TP .B %q causes \fBprintf\fP to output the corresponding @@ -8500,15 +8763,15 @@ The return value is zero on success, non-zero on failure. .PD Adds a directory to the top of the directory stack, or rotates the stack, making the new top of the stack the current working -directory. With no arguments, exchanges the top two directories +directory. With no arguments, \fBpushd\fP exchanges the top two directories and returns 0, unless the directory stack is empty. Arguments, if supplied, have the following meanings: .RS .PD 0 .TP .B \-n -Suppresses the normal change of directory when adding directories -to the stack, so that only the stack is manipulated. +Suppresses the normal change of directory when rotating or +adding directories to the stack, so that only the stack is manipulated. .TP \fB+\fP\fIn\fP Rotates the stack so that the \fIn\fPth directory @@ -8533,7 +8796,7 @@ to the \fBcd\fP builtin. .PP If the .B pushd -command is successful, a +command is successful, a .B dirs is performed as well. If the first form is used, @@ -8552,7 +8815,7 @@ fails. Print the absolute pathname of the current working directory. The pathname printed contains no symbolic links if the .B \-P -option is supplied or the +option is supplied or the .B \-o physical option to the .B set @@ -8566,17 +8829,20 @@ invalid option is supplied. .TP \fBread\fP [\fB\-ers\fP] [\fB\-a\fP \fIaname\fP] [\fB\-d\fP \fIdelim\fP] [\fB\-i\fP \fItext\fP] [\fB\-n\fP \fInchars\fP] [\fB\-N\fP \fInchars\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-u\fP \fIfd\fP] [\fIname\fP ...] One line is read from the standard input, or from the file descriptor -\fIfd\fP supplied as an argument to the \fB\-u\fP option, and the first word +\fIfd\fP supplied as an argument to the \fB\-u\fP option, +split into words as described above under \fBWord Splitting\fP, +and the first word is assigned to the first .IR name , the second word to the second .IR name , -and so on, with leftover words and their intervening separators assigned -to the last +and so on. +If there are more words than names, the remaining words and their +intervening delimiters are assigned to the last .IR name . If there are fewer words read from the input stream than names, the remaining names are assigned empty values. -The characters in +The characters in .SM .B IFS are used to split the line into words using the same rules the shell @@ -8619,7 +8885,7 @@ buffer before editing begins. .TP .B \-n \fInchars\fP \fBread\fP returns after reading \fInchars\fP characters rather than -waiting for a complete line of input, but honor a delimiter if fewer +waiting for a complete line of input, but honors a delimiter if fewer than \fInchars\fP characters are read before the delimiter. .TP .B \-N \fInchars\fP @@ -8629,6 +8895,9 @@ than waiting for a complete line of input, unless EOF is encountered or Delimiter characters encountered in the input are not treated specially and do not cause \fBread\fP to return until \fInchars\fP characters are read. +The result is not split on the characters in \fBIFS\fP; the intent is +that the variable is assigned exactly the characters read +(with the exception of backslash; see the \fB\-r\fP option below). .TP .B \-p \fIprompt\fP Display \fIprompt\fP on standard error, without a @@ -8670,8 +8939,8 @@ If no are supplied, the line read is assigned to the variable .SM .BR REPLY . -The return code is zero, unless end-of-file is encountered, \fBread\fP -times out (in which case the return code is greater than 128), +The exit status is zero, unless end-of-file is encountered, \fBread\fP +times out (in which case the status 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 \fB\-u\fP. .RE @@ -8721,13 +8990,19 @@ that is not a function. Causes a function to stop executing and return the value specified by .I n to its caller. -If +If .I n is omitted, the return status is that of the last command -executed in the function body. If +executed in the function body. +If \fBreturn\fP is executed by a trap handler, the last command used to +determine the status is the last command executed before the trap handler. +if \fBreturn\fP is executed during a \fBDEBUG\fP trap, the last command +used to determine the status is the last command executed by the trap +handler before \fBreturn\fP was invoked. +If .B return is used outside a function, -but during execution of a script by the +but during execution of a script by the .B . (\fBsource\fP) command, it causes the shell to stop executing that script and return either @@ -8757,7 +9032,7 @@ In \fIposix\fP 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 +as values for the positional parameters and are assigned, in order, to .BR $1 , .BR $2 , .B ... @@ -8767,8 +9042,9 @@ Options, if specified, have the following meanings: .PD 0 .TP 8 .B \-a -Automatically mark variables and functions which are modified or -created for export to the environment of subsequent commands. +Each variable or function that is created or modified is given the +export attribute and marked for export to the environment of +subsequent commands. .TP 8 .B \-b Report the status of terminated background jobs @@ -8783,13 +9059,13 @@ or a \fIcompound command\fP (see .SM .B SHELL GRAMMAR -above), exits with a non-zero status. +above), exits with a non-zero status. The shell does not exit if the command that fails is part of the command list immediately following a .B while or .B until -keyword, +keyword, part of the test following the .B if or @@ -8827,7 +9103,7 @@ call completes. .TP 8 .B \-f Disable pathname expansion. -.TP 8 +.TP 8 .B \-h Remember the location of commands as they are looked up for execution. This is enabled by default. @@ -8849,9 +9125,9 @@ When a background job completes, the shell prints a line containing its exit status. .TP 8 .B \-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. +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. .TP 8 .B \-o \fIoption\-name\fP The \fIoption\-name\fP can be one of the following: @@ -9057,7 +9333,7 @@ does not overwrite an existing file with the .BR >& , and .B <> -redirection operators. This may be overridden when +redirection operators. This may be overridden when creating output files by using the redirection operator .B >| instead of @@ -9129,7 +9405,7 @@ If .I n is 0, no parameters are changed. If -.I n +.I n is not given, it is assumed to be 1. If .I n @@ -9269,7 +9545,10 @@ If set, .B bash changes its behavior to that of version 3.2 with respect to locale-specific string comparison when using the \fB[[\fP -conditional command's \fB<\fP and \fB>\fP operators (see previous item). +conditional command's \fB<\fP and \fB>\fP operators (see previous item) +and the effect of interrupting a command list. +Bash versions 3.2 and earlier continue with the next command in the list +after one terminates due to an interrupt. .TP 8 .B compat40 If set, @@ -9297,6 +9576,18 @@ If set, does not process the replacement string in the pattern substitution word expansion using quote removal. .TP 8 +.B compat43 +If set, +.B bash +does not print a warning message if an attempt is made to use a quoted compound +array assignment as an argument to \fBdeclare\fP, +makes word expansion errors +non-fatal errors that cause the current command to fail (the default behavior is +to make them fatal errors that cause the shell to exit), +and does not reset the +loop state when a shell function is executed (this allows \fBbreak\fP or +\fBcontinue\fP in a shell function to affect loops in the caller's context). +.TP 8 .B complete_fullquote If set, .B bash @@ -9333,7 +9624,7 @@ attempts spelling correction on directory names during word completion if the directory name initially supplied does not exist. .TP 8 .B dotglob -If set, +If set, .B bash includes filenames beginning with a `.' in the results of pathname expansion. @@ -9353,7 +9644,9 @@ If set, aliases are expanded as described above under This option is enabled by default for interactive shells. .TP 8 .B extdebug -If set, behavior intended for use by debuggers is enabled: +If set at shell invocation, arrange to execute the debugger profile +before the shell starts, identical to the \fB\-\-debugger\fP option. +If set after invocation, behavior intended for use by debuggers is enabled: .RS .TP .B 1. @@ -9368,8 +9661,8 @@ next command is skipped and not executed. .B 3. If the command run by the \fBDEBUG\fP trap returns a value of 2, and the shell is executing in a subroutine (a shell function or a shell script -executed by the \fB.\fP or \fBsource\fP builtins), a call to -\fBreturn\fP is simulated. +executed by the \fB.\fP or \fBsource\fP builtins), the shell simulates +a call to \fBreturn\fP. .TP .B 4. .SM @@ -9380,12 +9673,12 @@ and are updated as described in their descriptions above. .TP .B 5. -Function tracing is enabled: command substitution, shell functions, and +Function tracing is enabled: command substitution, shell functions, and subshells invoked with \fB(\fP \fIcommand\fP \fB)\fP inherit the \fBDEBUG\fP and \fBRETURN\fP traps. .TP .B 6. -Error tracing is enabled: command substitution, shell functions, and +Error tracing is enabled: command substitution, shell functions, and subshells invoked with \fB(\fP \fIcommand\fP \fB)\fP inherit the \fBERR\fP trap. .RE @@ -9456,7 +9749,7 @@ is being used, a user is given the opportunity to re-edit a failed history substitution. .TP 8 .B histverify -If set, and +If set, and .B readline is being used, the results of history substitution are not immediately passed to the shell parser. Instead, the resulting line is loaded into @@ -9480,6 +9773,11 @@ If set, \fBbash\fP will send .B SIGHUP to all jobs when an interactive login shell exits. .TP 8 +.B inherit_errexit +If set, command substitution inherits the value of the \fBerrexit\fP option, +instead of unsetting it in the subshell environment. +This option is enabled when \fIposix mode\fP is enabled. +.TP 8 .B interactive_comments If set, allow a word beginning with .B # @@ -9507,7 +9805,7 @@ above). The value may not be changed. .TP 8 .B mailwarn -If set, and a file that \fBbash\fP is checking for mail has been +If set, and a file that \fBbash\fP is checking for mail has been accessed since the last time it was checked, the message ``The mail in \fImailfile\fP has been read'' is displayed. .TP 8 @@ -9534,7 +9832,9 @@ above). If set, .B bash matches patterns in a case\-insensitive fashion when performing matching -while executing \fBcase\fP or \fB[[\fP conditional commands. +while executing \fBcase\fP or \fB[[\fP conditional commands, +when performing pattern substitution word expansions, +or when filtering possible completions as part of programmable completion. .TP 8 .B nullglob If set, @@ -9676,7 +9976,7 @@ under the result of the expression is the result of the binary test using the first and third arguments as operands. The \fB\-a\fP and \fB\-o\fP operators are considered binary operators -when there are three arguments. +when there are three arguments. If the first argument is \fB!\fP, the value is the negation of the two-argument test using the second and third arguments. If the first argument is exactly \fB(\fP and the third argument is @@ -9687,7 +9987,7 @@ Otherwise, the expression is false. 4 arguments If the first argument is \fB!\fP, the result is the negation of the three-argument expression composed of the remaining arguments. -Otherwise, the expression is parsed and evaluated according to +Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above. .TP 5 or more arguments @@ -9718,7 +10018,7 @@ is absent (and there is a single \fIsigspec\fP) or each specified signal is reset to its original disposition (the value it had upon entrance to the shell). -If +If .I arg is the null string the signal specified by each .I sigspec @@ -9790,9 +10090,9 @@ is .BR ERR , the command .I arg -is executed whenever a +is executed whenever a pipeline (which may consist of a single simple -command), a list, or a compound command returns a +command), a list, or a compound command returns a non\-zero exit status, subject to the following conditions. The @@ -9803,7 +10103,7 @@ command is part of the command list immediately following a .B while or .B until -keyword, +keyword, part of the test in an .I if statement, part of a command executed in a @@ -9828,7 +10128,7 @@ is invalid; otherwise returns true. .TP \fBtype\fP [\fB\-aftpP\fP] \fIname\fP [\fIname\fP ...] -With no options, +With no options, indicate how each .I name would be interpreted if used as a command name. @@ -9842,7 +10142,7 @@ prints a string which is one of .IR function , .IR builtin , or -.I file +.I file if .I name is an alias, shell reserved word, function, builtin, or disk file, @@ -9879,18 +10179,18 @@ If a command is hashed, and .B \-P print the hashed value, which is not necessarily the file that appears -first in +first in .SM .BR PATH . If the .B \-a -option is used, +option is used, .B type prints all of the places that contain -an executable named +an executable named .IR name . This includes aliases and functions, -if and only if the +if and only if the .B \-p option is not also used. The table of hashed commands is not consulted @@ -9903,7 +10203,7 @@ option suppresses shell function lookup, as with the \fBcommand\fP builtin. returns true if all of the arguments are found, false if any are not found. .TP -\fBulimit\fP [\fB\-HSTabcdefilmnpqrstuvx\fP [\fIlimit\fP]] +\fBulimit\fP [\fB\-HSabcdefiklmnpqrstuvxPT\fP [\fIlimit\fP]] Provides control over the resources available to the shell and to processes started by it, on systems that allow such control. The \fB\-H\fP and \fB\-S\fP options specify that the hard or soft limit is @@ -9952,6 +10252,9 @@ The maximum size of files written by the shell and its children .B \-i The maximum number of pending signals .TP +.B \-k +The maximum number of kqueues that may be allocated +.TP .B \-l The maximum size that may be locked into memory .TP @@ -9987,6 +10290,9 @@ some systems, to its children .B \-x The maximum number of file locks .TP +.B \-P +The maximum number of pseudoterminals +.TP .B \-T The maximum number of threads .PD @@ -10004,19 +10310,25 @@ is assumed. Values are in 1024-byte increments, except for which is in seconds; .BR \-p , which is in units of 512-byte blocks; -and +.BR \-P , .BR \-T , .BR \-b , +.BR \-k , .BR \-n , and .BR \-u , -which are unscaled values. +which are unscaled values; +and, when in Posix mode, +.B \-c +and +.BR \-f , +which are in 512-byte increments. The return status is 0 unless an invalid option or argument is supplied, or an error occurs while setting a new limit. .RE .TP \fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP] -The user file-creation mask is set to +The user file-creation mask is set to .IR mode . If .I mode @@ -10303,7 +10615,7 @@ this manual page should be directed to .PP It's too big and too slow. .PP -There are some subtle differences between +There are some subtle differences between .B bash and traditional versions of .BR sh , diff --git a/doc/bash.html b/doc/bash.html index bba7db6..983284e 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@ -
BASH(1)2014 February 2BASH(1) +BASH(1)2016 August 26BASH(1)

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

@@ -316,7 +321,7 @@ be the name of a file containing shell commands. If bash -is invoked in this fashion, +is invoked in this fashion, $0 is set to the name of the file, and the positional parameters @@ -339,13 +344,14 @@ for the script. A login shell is one whose first character of argument zero is a -, -or one started with the +or one started with the --login option.

An interactive shell is one started without non-option arguments +(unless -s is specified) and without the -c @@ -408,7 +414,8 @@ The option may be used when the shell is started to inhibit this behavior.

-When a login shell exits, +When an interactive login shell exits, +or a non-interactive login shell executes the exit builtin command, bash reads and executes commands from the file ~/.bash_logout, if it @@ -584,7 +591,7 @@ The following definitions are used throughout the rest of this document.

-
blank +
blank
A space or tab. @@ -598,7 +605,7 @@ Also known as a
name
-A +A word consisting only of alphanumeric characters and underscores, and @@ -615,7 +622,7 @@ A character that, when unquoted, separates words. One of the following:

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

@@ -631,7 +638,7 @@ symbols:

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

@@ -646,8 +653,8 @@ the first word of a simple command (see SHELL GRAMMAR -below) or the third word of a -case +below) or the third word of a +case or for @@ -831,7 +838,7 @@ 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 and OR lists are sequences of one or more pipelines separated by the && and || control operators, respectively. AND and OR lists are executed with left associativity. An AND list has the form @@ -936,10 +943,10 @@ right of the operator is considered a pattern and matched according to the rules described below under Pattern Matching, as if the extglob shell option were enabled. The = operator is equivalent to ==. -If the shell option +If the nocasematch -is enabled, the match is performed without regard to the case +shell option is enabled, the match is performed without regard to the case of alphabetic characters. The return value is 0 if the string matches (==) or does not match (!=) the pattern, and 1 otherwise. @@ -951,15 +958,15 @@ 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)). +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 +If the nocasematch -is enabled, the match is performed without regard to the case +shell option is enabled, the match is performed without regard to the case of alphabetic characters. Any part of the pattern may be quoted to force the quoted portion to be matched as a string. @@ -1109,15 +1116,15 @@ as for pathname expansion (see below). The word is expanded using tilde -expansion, parameter and variable expansion, arithmetic substitution, +expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution and quote removal. Each pattern examined is expanded using tilde -expansion, parameter and variable expansion, arithmetic substitution, +expansion, parameter and variable expansion, arithmetic expansion, command substitution, and process substitution. -If the shell option +If the nocasematch -is enabled, the match is performed without regard to the case +shell option 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 @@ -1132,7 +1139,7 @@ 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 +if list @@ -1150,7 +1157,7 @@ last command executed, or zero if no condition tested true. 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; +to the while command, except that the test is negated: list-2 is executed as long as the last command in @@ -1237,11 +1244,13 @@ 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 +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. +may be any command listed under Compound Commands above, +with one exception: If the function reserved word is used, but the +parentheses are not supplied, the braces are required. 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 @@ -1289,7 +1298,7 @@ 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 +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. @@ -1345,6 +1354,8 @@ of all characters within the quotes, with the exception of and, when history expansion is enabled, !. +When the shell is in posix mode, the ! has no special meaning +within double quotes, even when history expansion is enabled. The characters $ @@ -1444,6 +1455,10 @@ single quote
double quote +
\? + +
+question mark
\nnn
@@ -1581,7 +1596,7 @@ Assignment statements may also appear as arguments to the and local -builtin commands. +builtin commands (declaration 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. @@ -1590,6 +1605,8 @@ assignment statement properties. In the context where an assignment statement is assigning a value to a shell variable or array index, the += operator can be used to append to or add to the variable's previous value. +This includes arguments to builtin commands such as declare that +accept assignment statements (declaration commands). When += is applied to a variable for which the integer attribute has been set, value is evaluated as an arithmetic expression and added to the variable's current value, which is also evaluated. @@ -1610,9 +1627,11 @@ A variable can be assigned the nameref attribute using the (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. +Whenever the nameref variable is referenced, assigned to, unset, or has +its attributes modified (other than using or changing the nameref +attribute itself), the +operation is actually performed on the variable specified by the nameref +variable's value. A nameref is commonly used within shell functions to refer to a variable whose name is passed as an argument to the function. For instance, if a variable name is passed to a shell function as its first @@ -1626,13 +1645,14 @@ argument, running

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. +References and assignments to ref, and changes to its attributes, +are treated as references, assignments, and attribute modifications +to the variable whose name was passed as $1. 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. +Array variables cannot be given the nameref attribute. However, nameref variables can reference array variables and subscripted array variables. Namerefs can be unset using the -n option to the unset builtin. @@ -1685,8 +1705,7 @@ expands to a separate word. In contexts where it is performed, those words are subject to further word splitting and pathname expansion. When the expansion occurs within double quotes, it expands to a single word -with the value of each parameter separated by the first character -of the +with the value of each parameter separated by the first character of the IFS @@ -1719,7 +1738,7 @@ 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 +When there are no positional parameters, "$@" and $@ expand to nothing (i.e., they are removed). @@ -1854,8 +1873,14 @@ that do not require bash to be re-initialized.

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. +Elements added to this array appear in the alias list; however, +unsetting array elements currently does not cause aliases to be removed +from the alias list. +If +BASH_ALIASES + +is unset, it loses its special properties, even if it is +subsequently reset.
BASH_ARGC
@@ -1907,8 +1932,14 @@ builtin below)
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. +Elements added to this array appear in the hash table; however, +unsetting array elements currently does not cause command names to be removed +from the hash table. +If +BASH_CMDS + +is unset, it loses its special properties, even if it is +subsequently reset.
BASH_COMMAND
@@ -1938,6 +1969,14 @@ Use to obtain the current line number. +
BASH_LOADABLES_PATH + +
+A colon-separated list of directories in which the shell looks for +dynamically loadable builtins specified by the +enable + +command.
BASH_REMATCH
@@ -2136,7 +2175,7 @@ Assignments to FUNCNAME -have no effect and return an error status. +have no effect. If FUNCNAME @@ -2159,11 +2198,11 @@ information.
An array variable containing the list of groups of which the current user is a member. -Assignments to +Assignments to GROUPS -have no effect and return an error status. +have no effect. If GROUPS @@ -2336,7 +2375,7 @@ builtin command when no arguments are supplied.
Each time this parameter is referenced, the number of seconds since shell invocation is returned. If a -value is assigned to +value is assigned to SECONDS, @@ -2524,6 +2563,22 @@ Similar to used when the shell is invoked in POSIX mode. +
EXECIGNORE + +
+A colon-separated list of shell patterns (see Pattern Matching) +defining the list of filenames to be ignored by command search using +PATH. +Files whose full pathnames match one of these patterns are not considered +executable files for the purposes of completion and command execution +via PATH lookup. +This does not affect the behavior of the [, test, and [[ +commands. +Full pathnames in the command hash table are not subject to EXECIGNORE. +Use this variable to ignore shared library files that have the executable +bit set, but are not executable files. +The pattern matching honors the setting of the extglob shell +option.
FCEDIT
@@ -2577,7 +2632,7 @@ lines which begin with a space character are not saved in the history list. -A value of +A value of ignoredups causes lines matching the previous history entry to not be saved. @@ -2648,6 +2703,8 @@ not tested, and are added to the history regardless of the value of HISTIGNORE. +The pattern matching honors the setting of the extglob shell +option.
HISTSIZE
@@ -2794,6 +2851,11 @@ strings preceded by a $.
This variable determines the locale category used for number formatting. +
LC_TIME + +
+This variable determines the locale category used for data and time +formatting.
LINES
@@ -2832,11 +2894,11 @@ greater than or equal to zero, the shell disables mail checking.
MAILPATH
-A colon-separated list of filenames to be checked for mail. +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. +the current mailfile. Example:

@@ -2846,7 +2908,9 @@ Example: Bash -supplies a default value for this variable, but the location of the user +can be configured to supply +a default value for this variable (there is no value by default), +but the location of the user mail files that it uses is system dependent (e.g., /var/mail/$USER).

@@ -2891,8 +2955,10 @@ 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
@@ -2920,6 +2986,15 @@ trailing directory components to retain when expanding the \w and below). Characters removed are replaced with an ellipsis. +
PS0 + +
+The value of this parameter is expanded (see +PROMPTING + + +below) and displayed by interactive shells after reading a command +and before the command is executed.
PS1
@@ -3128,7 +3203,7 @@ 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 +expressions) and are zero-based; associative arrays are referenced using arbitrary strings. Unless otherwise noted, indexed array indices must be non-negative integers.

@@ -3219,18 +3294,24 @@ of the special parameters * and @ (see 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 +evaluates to a number less than zero, it is interpreted as relative to one greater than the maximum index of the array, so negative indices count back from the end of the array, and an index of -1 references the last element.

+Referencing an array variable without a subscript is equivalent to +referencing the array with a subscript of 0. +Any reference to a variable using a valid subscript is legal, and +bash + +will create an array if necessary. +

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

@@ -3270,7 +3351,7 @@ option to specify an indexed array and a -A option to specify an associative array. -If both options are supplied, +If both options are supplied, -A takes precedence. @@ -3326,6 +3407,11 @@ same time as tilde, parameter, variable, and arithmetic expansion and command substitution.

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

+ 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. @@ -3447,7 +3533,7 @@ is desired, start bash with the -+B ++B option or disable brace expansion with the +B @@ -3570,12 +3656,16 @@ The parameter is a shell parameter as described above

If the first character of parameter is an exclamation point (!), +and parameter is not a nameref, it introduces a level of variable indirection. Bash uses the value of the variable formed from the rest of parameter as the name of the variable; this variable is then expanded and that value is used in the rest of the substitution, rather than the value of parameter itself. This is known as indirect expansion. +If parameter is a nameref, this expands to the name of the +variable referenced by parameter instead of performing the +complete indirect expansion. The exceptions to this are the expansions of ${!prefix*} and ${!name[@]} described below. The exclamation point must immediately follow the left brace in order to @@ -3691,7 +3781,7 @@ zero. Substring expansion applied to an associative array produces undefined results.

-Substring indexing is zero-based unless the positional parameters +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. @@ -3728,7 +3818,7 @@ If is * -or +or @, the value substituted is the number of positional parameters. @@ -3754,7 +3844,7 @@ array, and an index of -1 references the last element.

${parameter##word}
Remove matching prefix pattern. -The +The word is expanded to produce a pattern just as in pathname @@ -3840,6 +3930,11 @@ If pattern begins with %, it must match at the end of the expanded value of parameter. If string is null, matches of pattern are deleted and the / following pattern may be omitted. +If the +nocasematch + +shell option is enabled, the match is performed without regard to the case +of alphabetic characters. If parameter @@ -3905,6 +4000,72 @@ or the case modification operation is applied to each member of the array in turn, and the expansion is the resultant list. +
${parameter@operator}
+Parameter transformation. +The expansion is either a transformation of the value of parameter +or information about parameter itself, depending on the value of +operator. Each operator is a single letter: +

+

+ +
+
Q + +
+The expansion is a string that is the value of parameter quoted in a +format that can be reused as input. +
E + +
+The expansion is a string that is the value of parameter with backslash +escape sequences expanded as with the $'...' quoting mechansim. +
P + +
+The expansion is a string that is the result of expanding the value of +parameter as if it were a prompt string (see PROMPTING below). +
A + +
+The expansion is a string in the form of +an assignment statement or declare command that, if +evaluated, will recreate parameter with its attributes and value. +
a + +
+The expansion is a string consisting of flag values representing +parameter's attributes. + +
+

+ +If +parameter + +is +@ + +or +*, + +the 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. +

+The result of the expansion is subject to word splitting and pathname +expansion as described below. +

+
 

Command Substitution

@@ -3928,8 +4089,8 @@ or Bash -performs the expansion by executing command and -replacing the command substitution with the standard output of the +performs the expansion by executing command in a subshell environment +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. @@ -4000,23 +4161,27 @@ prints a message indicating failure and no substitution occurs.

-Process substitution is supported on systems that support named -pipes (FIFOs) or the /dev/fd method of naming open files. +Process substitution allows a process's input or output to be +referred to using a filename. 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 +The process list is run asynchronously, and its input or output +appears as a filename. +This filename is passed as an argument to the current command as the result of the -expansion. If the >(list) form is used, writing to +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. +Process substitution is supported on systems that support named +pipes (FIFOs) or the /dev/fd method of naming open files.

When available, process substitution is performed -simultaneously with parameter and variable expansion, +simultaneously with parameter and variable expansion, command substitution, and arithmetic expansion.   @@ -4070,10 +4235,12 @@ If has a value other than the default, then sequences of the whitespace characters -space +space, + +tab, and -tab +newline are ignored at the beginning and end of the word, as long as the whitespace character is in the @@ -4111,11 +4278,18 @@ If the value of is null, no word splitting occurs.

-Explicit null arguments ("" or aqaq) are retained. +Explicit null arguments ("" or aqaq) are retained +and passed to commands as empty strings. Unquoted implicit null arguments, resulting from the expansion of parameters that have no values, are removed. If a parameter with no value is expanded within double quotes, a -null argument results and is retained. +null argument results and is retained +and passed to a command as an empty string. +When a quoted null argument appears as part of a word whose expansion is +non-null, the null argument is removed. +That is, the word +-daqaq becomes -d after word splitting and +null argument removal.

Note that if no expansion occurs, no splitting @@ -4156,7 +4330,7 @@ and the shell option nullglob is not enabled, the word is left unchanged. -If the +If the nullglob option is set, and no matches are found, @@ -4222,6 +4396,11 @@ is set, each matching filename that also matches one of the patterns in is removed from the list of matches. +If the nocaseglob option is set, the matching against the patterns in +GLOBIGNORE + + +is performed without regard to case. The filenames ``.'' @@ -4261,6 +4440,8 @@ option is disabled when is unset. +The pattern matching honors the setting of the extglob shell +option.

Pattern Matching @@ -4338,7 +4519,7 @@ or enable the globasciiranges shell option. -A +A - may be matched by including it as the first or last character @@ -4382,7 +4563,7 @@ The word character class matches letters, digits, and the character _. Within [ -and +and ], an equivalence class can be specified using the syntax @@ -4397,7 +4578,7 @@ the character c. Within [ -and +and ], the syntax [.symbol.] matches the collating symbol @@ -4503,7 +4684,7 @@ If it expands to more than one word, reports an error.

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

@@ -4513,7 +4694,7 @@ ls > dirlist 2>&1

-directs both standard output and standard error to the file +directs both standard output and standard error to the file dirlist, while the command @@ -4535,7 +4716,10 @@ before the standard output was redirected to

Bash handles several filenames specially when they are used in -redirections, as described in the following table: +redirections, as described in the following table. +If the operating system on which bash is running provides these +special files, bash will use them; otherwise it will emulate them +internally with the behavior described below.

@@ -4775,7 +4959,7 @@ current source until a line containing only (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. +input (or file descriptor n if n is specified) for a command.

The format of here-documents is: @@ -4783,7 +4967,7 @@ The format of here-documents is:

-<<[-]word
+[n]<<[-]word
         here-document
 delimiter
 
@@ -4796,10 +4980,10 @@ No parameter and variable expansion, command substitution, arithmetic expansion, or pathname expansion is performed on word. -If any characters in +If any part of word -are quoted, the +is quoted, the delimiter is the result of quote removal on @@ -4843,7 +5027,7 @@ A variant of here documents, the format is:

-<<<word
+[n]<<<word
 
@@ -4854,8 +5038,9 @@ 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. +The result is supplied as a single string, with a newline appended, +to the command on its +standard input (or file descriptor n if n is specified).  

Duplicating File Descriptors

@@ -5076,7 +5261,7 @@ 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 +is itself a 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 @@ -5118,7 +5303,7 @@ is executing. All other aspects of the shell execution environment are identical between a function and its caller -with these exceptions: the +with these exceptions: the DEBUG @@ -5227,7 +5412,7 @@ By default, no limit is imposed on the number of recursive calls. The shell allows arithmetic expressions to be evaluated, under certain circumstances (see the let and declare builtin -commands and Arithmetic Expansion). +commands, the (( compound command, 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 @@ -5336,7 +5521,7 @@ 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 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 @@ -5353,6 +5538,11 @@ 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. +Bash handles several filenames specially when they are used in +expressions. +If the operating system on which bash is running provides these +special files, bash will use them; otherwise it will emulate them +internally with this behavior: 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 @@ -5679,7 +5869,7 @@ 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 +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 @@ -5747,7 +5937,7 @@ 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. +shell's execution environment.

Command substitution, commands grouped with parentheses, @@ -5776,7 +5966,7 @@ When a program is invoked it is given an array of strings called the environment. -This is a list of +This is a list of name-value pairs, of the form name=value. @@ -5825,7 +6015,7 @@ These assignment statements affect only the environment seen by that command.

-If the +If the -k option is set (see the @@ -5855,12 +6045,12 @@ 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 +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 +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 @@ -5878,8 +6068,9 @@ 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. +while they execute. +All builtins return an exit status of 2 to indicate incorrect usage, +generally invalid options or missing arguments.

Bash itself returns the exit status of the last command @@ -5964,14 +6155,14 @@ to ensure that they receive the To prevent the shell from sending the signal to a particular job, it should be removed from the -jobs table with the +jobs table with the disown builtin (see SHELL BUILTIN COMMANDS -below) or marked +below) or marked to not receive SIGHUP @@ -5989,7 +6180,7 @@ shell option has been set with bash -sends a +sends a SIGHUP @@ -5998,7 +6189,7 @@ 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. +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 @@ -6070,7 +6261,7 @@ 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 +terminal are sent a SIGTTIN (SIGTTOU) @@ -6093,7 +6284,7 @@ character (typically ^Z, Control-Z) while a process is running -causes that process to be stopped and returns control to +causes that process to be stopped and returns control to bash. Typing the @@ -6163,7 +6354,7 @@ refer to the shell's notion of the which is the last job stopped while it was in the foreground or started in the background. -The +The previous job may be referenced using @@ -6204,7 +6395,7 @@ Normally, 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 +any other output. If the -b option to the @@ -6232,14 +6423,14 @@ jobs and their statuses. The jobs -command may then be used to inspect their status. +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, +When executing interactively, bash displays the primary prompt @@ -6253,6 +6444,12 @@ when it is ready to read a command, and the secondary prompt when it needs more input to complete a command. Bash +displays +PS0 + +after it reads a command but before executing it. +Bash + allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:
@@ -6460,11 +6657,11 @@ builtin. 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, +means Control-N. Similarly, meta keys are denoted by M-key, so M-x means Meta-X. (On keyboards -without a +without a meta key, M-x means ESC x, i.e., press the Escape key @@ -6487,7 +6684,7 @@ 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. +backward direction. Commands whose behavior with arguments deviates from this are noted below.

@@ -6496,7 +6693,7 @@ 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. +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.   @@ -6525,7 +6722,7 @@ Other lines denote key bindings and variable settings.

The default key-bindings may be changed with an -inputrc +inputrc file. Other programs that use this library may add their own commands @@ -6544,7 +6741,7 @@ or C-Meta-u: universal-argument

-into the +into the inputrc would make M-C-u execute the readline command @@ -6588,7 +6785,7 @@ The syntax for controlling key bindings in the 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: +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.

@@ -6666,7 +6863,7 @@ is again bound to the function is bound to the function re-read-init-file, -and +and ESC [ 1 1 ~ is bound to insert the text @@ -6832,11 +7029,23 @@ If set to audible, readline attempts to ring the terminal's bell. If set to On, readline attempts to bind the control characters treated specially by the kernel's terminal driver to their readline equivalents. +

blink-matching-paren (Off) + +
+If set to On, readline attempts to briefly move the cursor to an +opening parenthesis when a closing parenthesis is inserted. +
colored-completion-prefix (Off) + +
+If set to On, when listing completions, readline displays the +common prefix of the set of possible completions using a different color. +The color definitions are taken from the value of the LS_COLORS +environment variable.
colored-stats (Off)
If set to On, readline displays possible completions using different -colors to indicate their file type. +colors to indicate their file type. The color definitions are taken from the value of the LS_COLORS environment variable.
comment-begin (``#'') @@ -6853,11 +7062,26 @@ in emacs mode and to # in vi command mode. +
completion-display-width (-1) + +
+The number of screen columns used to display possible matches +when performing completion. +The value is ignored if it is less than 0 or greater than the terminal +screen width. +A value of 0 will cause matches to be displayed one per line. +The default value is -1.
completion-ignore-case (Off)
If set to On, readline performs filename matching and completion in a case-insensitive fashion. +
completion-map-case (Off) + +
+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 (0)
@@ -6883,12 +7107,20 @@ 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). +The default is On, but readline will set it to Off if the +locale contains eight-bit characters.
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. +
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.
editing-mode (emacs)
@@ -6902,12 +7134,14 @@ can be set to either or vi. -
echo-control-characters (On) +
enable-bracketed-paste (Off)
-When set to On, on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the -keyboard. +When set to On, readline will configure the terminal in a way +that will enable it to insert each paste into the editing buffer as a +single string of characters, instead of treating each character as if +it had been read from the keyboard. This can prevent pasted characters +from being interpreted as editing commands.
enable-keypad (Off)
@@ -6931,7 +7165,7 @@ attempts word completion. 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) +
history-size (unset)
Set the maximum number of history entries saved in the history list. @@ -6939,7 +7173,10 @@ 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. +By default, the number of history entries is set to the value of the +HISTSIZE shell variable. +If an attempt is made to set history-size to a non-numeric value, +the maximum number of history entries will be set to 500.
horizontal-scroll-mode (Off)
@@ -6950,11 +7187,13 @@ becomes longer than the screen width rather than wrapping to a new line.
If set to On, readline will enable eight-bit input (that is, -it will not strip the high bit from the characters it reads), +it will not strip the eighth 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. +The default is Off, but readline will set it to On if the +locale contains eight-bit characters.
isearch-terminators (``C-[C-J'')
@@ -6978,6 +7217,16 @@ the value of editing-mode also affects the default keymap. +
emacs-mode-string (@) + +
+This string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \1 and \2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string.
keyseq-timeout (500)
@@ -7012,7 +7261,7 @@ have a slash appended (subject to the value of
This variable, when set to On, causes readline to match files whose -names begin with a `.' (hidden files) when performing filename +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. @@ -7028,6 +7277,8 @@ the list. If set to On, readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape sequence. +The default is Off, but readline will set it to On if the +locale contains eight-bit characters.
page-completions (On)
@@ -7041,7 +7292,7 @@ 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 +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. @@ -7081,6 +7332,28 @@ 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. +
vi-cmd-mode-string ((cmd)) + +
+This string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in command mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \1 and \2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +
vi-ins-mode-string ((ins)) + +
+This string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in insertion mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the \1 and \2 escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string.
visible-stats (Off)
@@ -7100,7 +7373,7 @@ bindings and variable settings to be performed as the result of tests. There are four parser directives used.
$if
-The +The $if construct allows bindings to be made based on the @@ -7122,7 +7395,7 @@ 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 +is tested against both the full name of the terminal and the portion of the terminal name before the first -. This allows sun @@ -7518,7 +7791,7 @@ Negative arguments have no effect. 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. +the last two words on the line.
upcase-word (M-u)
@@ -7542,7 +7815,7 @@ 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 +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. @@ -7573,7 +7846,7 @@ The killed text is saved on the kill-ring.
Kill all characters on the current line, no matter where point is. -
kill-word (M-d) +
kill-word (M-d)
Kill from point to the end of the current word, or if between @@ -7584,13 +7857,13 @@ Word boundaries are the same as those used by forward-word.
Kill the word behind point. Word boundaries are the same as those used by backward-word. -
shell-kill-word (M-d) +
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 those used by shell-forward-word. -
shell-backward-kill-word (M-Rubout) +
shell-backward-kill-word
Kill the word behind point. @@ -7666,7 +7939,7 @@ If the command is followed by digits, executing 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 +character that is neither a digit nor minus sign, the argument count for the next command is multiplied by four. The argument count is initially one, so executing this function the first time makes the argument count four, a second time makes the @@ -7920,10 +8193,10 @@ 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 +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 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 @@ -8059,7 +8332,7 @@ 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 +as described above under EXPANSION. @@ -8087,7 +8360,7 @@ and variables are assigned values as described above under Shell Variables. -If a shell function is being invoked, the +If a shell function is being invoked, the COMP_WORDS @@ -8133,6 +8406,11 @@ 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. +If the +nocasematch + +shell option is enabled, the match is performed without regard to the case +of alphabetic characters.

Finally, any prefix and suffix specified with the -P and -S @@ -8166,7 +8444,7 @@ 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 +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.

@@ -8414,7 +8692,9 @@ 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. +the history expansion character, but the history expansion character is +also treated as quoted if it immediately precedes the closing double quote +in a double-quoted string.

Several characters inhibit history expansion if found immediately @@ -8563,7 +8843,7 @@ The entire command line typed so far.

Word designators are used to select desired words from the event. -A +A : separates the event specification from the word designator. @@ -8757,7 +9037,8 @@ 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, +The exit, logout, return, +break, continue, let, and shift builtins accept and process arguments beginning with - without requiring --. Other builtins that accept arguments but are not specified as accepting @@ -8772,7 +9053,8 @@ No effect; the command does nothing beyond expanding arguments and performing any specified -redirections. A zero exit code is returned. +redirections. +The return status is zero.

. filename [arguments]
source filename [arguments]
@@ -8819,6 +9101,12 @@ is not searched. If any arguments are supplied, they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. +If the -T option is enabled, source inherits any trap on +DEBUG; if it is not, any DEBUG trap string is saved and +restored around the call to source, and source unsets the +DEBUG trap while it executes. +If -T is not set, and the sourced file changes +the DEBUG trap, the new value is retained when source completes. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if filename @@ -8832,7 +9120,7 @@ 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 +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. @@ -8860,7 +9148,7 @@ or was started without job control.
bind [-m keymap] -f filename
bind [-m keymap] -x keyseq:shell-command
bind [-m keymap] keyseq:function-name
-
bind readline-command
+
bind [-m keymap] keyseq:readline-command
Display current readline @@ -8896,7 +9184,8 @@ names are vi-move, vi-command, and vi-insert. -vi is equivalent to vi-command; emacs is +vi is equivalent to vi-command (vi-move is also +a synonym); emacs is equivalent to emacs-standard.
-l @@ -9020,7 +9309,7 @@ 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 +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 @@ -9064,7 +9353,7 @@ then CDPATH -is not used. The +is not used. The -P option causes cd to use the physical directory structure @@ -9119,8 +9408,8 @@ Run with args -suppressing the normal shell function lookup. Only builtin -commands or commands found in the +suppressing the normal shell function lookup. +Only builtin commands or commands found in the PATH @@ -9259,6 +9548,10 @@ Intended to be used with shell functions.
Tell readline not to quote the completed words if they are filenames (quoting filenames is the default). +
nosort + +
+Tell readline not to sort the list of possible completions alphabetically.
nospace
@@ -9267,7 +9560,7 @@ the end of the line.
plusdirs
-After any matches defined by the compspec are generated, +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.
@@ -9506,8 +9799,8 @@ The 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 +the source file name and line number where each name +is defined are displayed as well. The -F option implies @@ -9563,10 +9856,11 @@ The upper-case attribute is disabled. 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 +All references, assignments, and attribute modifications +to name, except those using or changing the -n attribute itself, are performed on the variable referenced by name's value. -The -n attribute cannot be applied to array variables. +The nameref attribute cannot be applied to array variables.
-r
@@ -9636,13 +9930,14 @@ or an attempt is made to display a non-existent function with -f. 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 +Directories are added to the list with the pushd command; the popd command removes entries from the list. +The current directory is always the first directory in the stack.
@@ -9685,7 +9980,7 @@ invalid option is supplied or n indexes beyond the end of the directory stack.
-
disown [-ar] [-h] [jobspec ...]
+
disown [-ar] [-h] [jobspec ... | pid ... ]
Without options, remove each jobspec @@ -9885,7 +10180,7 @@ If the -l option is supplied, -the shell places a dash at the beginning of the zeroth argument passed to +the shell places a dash at the beginning of the zeroth argument passed to command. This is what @@ -9942,11 +10237,10 @@ The supplied names are marked for automatic export to the environment of -subsequently executed commands. If the +subsequently executed commands. If the -f -option is given, -the +option is given, the names refer to functions. @@ -9995,7 +10289,7 @@ and 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 +command number). If last is not specified it is set to @@ -10191,7 +10485,7 @@ If the variable is set to 0, no error messages will be displayed, even if the first -character of +character of optstring is not a colon. @@ -10247,7 +10541,7 @@ 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 +the full pathname of the command name is determined by searching @@ -10333,7 +10627,7 @@ The return status is 0 unless no command matches With no options, display the command history list with line numbers. Lines listed -with a +with a * have been modified. An argument of @@ -10370,8 +10664,9 @@ 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. +Append the ``new'' history lines to the history file. +These are history lines entered since the beginning of the current +bash session, but not already appended to the history file.
-n
@@ -10420,7 +10715,7 @@ 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. +as timestamps for the following history entry. The return value is 0 unless an invalid option is encountered, an error occurs while reading or writing the history file, an invalid offset is supplied as an argument to -d, or the @@ -10500,7 +10795,7 @@ returning its exit status.
kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
-
kill -l [sigspec | exit_status]
+
kill -l|-L [sigspec | exit_status]
Send the signal named by sigspec @@ -10550,6 +10845,10 @@ The exit_status argument to is a number specifying either a signal number or the exit status of a process terminated by a signal. +The +-L + +option is equivalent to -l. kill returns true if at least one signal was successfully sent, or false @@ -10570,9 +10869,9 @@ evaluates to 0, let returns 1; 0 is returned otherwise. -
local [option] [name[=value] ...]
+
local [option] [name[=value] ... | - ]
For each argument, a local variable named -name +name is created, and assigned value. @@ -10585,6 +10884,10 @@ is used within a function, it causes the variable name to have a visible scope restricted to that function and its children. +If name is -, the set of shell options is made local to the function +in which local is invoked: shell options changed using the +set builtin inside the function are restored to their original values +when the function returns. With no operands, local @@ -10604,17 +10907,17 @@ is supplied, or
Exit a login shell. -
mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
+
mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
-
readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
+
readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
Read lines from the standard input into the indexed array variable array, -or from file descriptor +or from file descriptor fd -if the +if the -u option is supplied. @@ -10627,6 +10930,11 @@ Options, if supplied, have the following meanings:
+
-d + +
+The first character of delim is used to terminate each input line, +rather than newline.
-n
@@ -10651,7 +10959,7 @@ Discard the first count lines read.
-t
-Remove a trailing newline from each line read. +Remove a trailing delim (default newline) from each line read.
-u
@@ -10678,14 +10986,14 @@ Specify the number of lines read between each call to If -C -is specified without +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 +callback is evaluated after the line is read but before the array element is assigned.

@@ -10744,7 +11052,7 @@ the next to last. If the popd -command is successful, a +command is successful, a dirs is performed as well, and the return status is 0. @@ -10776,9 +11084,8 @@ In addition to the standard printf(1) format specifications,

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). +argument +in the same way as echo -e.
%q
@@ -10818,7 +11125,7 @@ The return value is zero on success, non-zero on failure. Adds a directory to the top of the directory stack, or rotates the stack, making the new top of the stack the current working -directory. With no arguments, exchanges the top two directories +directory. With no arguments, pushd exchanges the top two directories and returns 0, unless the directory stack is empty. Arguments, if supplied, have the following meanings:
@@ -10827,8 +11134,8 @@ 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. +Suppresses the normal change of directory when rotating or +adding directories to the stack, so that only the stack is manipulated.
+n
Rotates the stack so that the nth directory (counting from the left of the list shown by @@ -10858,7 +11165,7 @@ to the cd builtin. If the pushd -command is successful, a +command is successful, a dirs is performed as well. @@ -10882,7 +11189,7 @@ Print the absolute pathname of the current working directory. The pathname printed contains no symbolic links if the -P -option is supplied or the +option is supplied or the -o physical option to the @@ -10898,20 +11205,23 @@ 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 +fd supplied as an argument to the -u option, +split into words as described above under Word Splitting, +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 +and so on. +If there are more words than names, the remaining words and their +intervening delimiters are 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 characters in IFS @@ -10966,7 +11276,7 @@ buffer before editing begins.
read returns after reading nchars characters rather than -waiting for a complete line of input, but honor a delimiter if fewer +waiting for a complete line of input, but honors a delimiter if fewer than nchars characters are read before the delimiter.
-N nchars @@ -10977,6 +11287,9 @@ than waiting for a complete line of input, unless EOF is encountered or Delimiter characters encountered in the input are not treated specially and do not cause read to return until nchars characters are read. +The result is not split on the characters in IFS; the intent is +that the variable is assigned exactly the characters read +(with the exception of backslash; see the -r option below).
-p prompt
@@ -11027,8 +11340,8 @@ 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), +The exit status is zero, unless end-of-file is encountered, read +times out (in which case the status 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.
@@ -11089,15 +11402,21 @@ Causes a function to stop executing and return the value specified by n to its caller. -If +If n is omitted, the return status is that of the last command -executed in the function body. If +executed in the function body. +If return is executed by a trap handler, the last command used to +determine the status is the last command executed before the trap handler. +if return is executed during a DEBUG trap, the last command +used to determine the status is the last command executed by the trap +handler before return was invoked. +If return is used outside a function, -but during execution of a script by the +but during execution of a script by the . (source) command, it causes the shell to stop executing @@ -11128,7 +11447,7 @@ 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 +as values for the positional parameters and are assigned, in order, to $1, $2, @@ -11144,8 +11463,9 @@ 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. +Each variable or function that is created or modified is given the +export attribute and marked for export to the environment of +subsequent commands.
-b
@@ -11163,7 +11483,7 @@ or a compound command SHELL GRAMMAR -above), exits with a non-zero status. +above), exits with a non-zero status. The shell does not exit if the command that fails is part of the command list immediately following a while @@ -11171,7 +11491,7 @@ command that fails is part of the command list immediately following a or until -keyword, +keyword, part of the test following the if @@ -11244,9 +11564,9 @@ 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. +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
@@ -11530,7 +11850,7 @@ does not overwrite an existing file with the and <> -redirection operators. This may be overridden when +redirection operators. This may be overridden when creating output files by using the redirection operator >| @@ -11623,7 +11943,7 @@ If is 0, no parameters are changed. If -n +n is not given, it is assumed to be 1. If @@ -11805,7 +12125,10 @@ If set, 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). +conditional command's < and > operators (see previous item) +and the effect of interrupting a command list. +Bash versions 3.2 and earlier continue with the next command in the list +after one terminates due to an interrupt.
compat40
@@ -11838,6 +12161,20 @@ If set, does not process the replacement string in the pattern substitution word expansion using quote removal. +
compat43 + +
+If set, +bash + +does not print a warning message if an attempt is made to use a quoted compound +array assignment as an argument to declare, +makes word expansion errors +non-fatal errors that cause the current command to fail (the default behavior is +to make them fatal errors that cause the shell to exit), +and does not reset the +loop state when a shell function is executed (this allows break or +continue in a shell function to affect loops in the caller's context).
complete_fullquote
@@ -11884,7 +12221,7 @@ if the directory name initially supplied does not exist.
dotglob
-If set, +If set, bash includes filenames beginning with a `.' in the results of pathname @@ -11911,7 +12248,9 @@ This option is enabled by default for interactive shells.
extdebug
-If set, behavior intended for use by debuggers is enabled: +If set at shell invocation, arrange to execute the debugger profile +before the shell starts, identical to the --debugger option. +If set after invocation, behavior intended for use by debuggers is enabled:
1. @@ -11930,8 +12269,8 @@ next command is skipped and not executed.
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. +executed by the . or source builtins), the shell simulates +a call to return.
4.
@@ -11946,13 +12285,13 @@ are updated as described in their descriptions above.
5.
-Function tracing is enabled: command substitution, shell functions, and +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 +Error tracing is enabled: command substitution, shell functions, and subshells invoked with ( command ) inherit the ERR trap.
@@ -12041,7 +12380,7 @@ failed history substitution.
histverify
-If set, and +If set, and readline is being used, the results of history substitution are not immediately @@ -12071,6 +12410,12 @@ If set, bash will send to all jobs when an interactive login shell exits. +
inherit_errexit + +
+If set, command substitution inherits the value of the errexit option, +instead of unsetting it in the subshell environment. +This option is enabled when posix mode is enabled.
interactive_comments
@@ -12108,7 +12453,7 @@ The value may not be changed.
mailwarn
-If set, and a file that bash is checking for mail has been +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 @@ -12144,7 +12489,9 @@ If set, bash matches patterns in a case-insensitive fashion when performing matching -while executing case or [[ conditional commands. +while executing case or [[ conditional commands, +when performing pattern substitution word expansions, +or when filtering possible completions as part of programmable completion.
nullglob
@@ -12311,7 +12658,7 @@ under 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. +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 @@ -12321,7 +12668,7 @@ 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 +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 @@ -12359,7 +12706,7 @@ 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 +If arg is the null string the signal specified by each @@ -12456,9 +12803,9 @@ is the command arg -is executed whenever a +is executed whenever a pipeline (which may consist of a single simple -command), a list, or a compound command returns a +command), a list, or a compound command returns a non-zero exit status, subject to the following conditions. The @@ -12472,7 +12819,7 @@ command is part of the command list immediately following a or until -keyword, +keyword, part of the test in an if @@ -12503,7 +12850,7 @@ is invalid; otherwise returns true.
type [-aftpP] name [name ...]
-With no options, +With no options, indicate how each name @@ -12524,7 +12871,7 @@ prints a string which is one of builtin, or -file +file if name @@ -12573,22 +12920,22 @@ and -P print the hashed value, which is not necessarily the file that appears -first in +first in PATH. If the -a -option is used, +option is used, type prints all of the places that contain -an executable named +an executable named name. This includes aliases and functions, -if and only if the +if and only if the -p option is not also used. @@ -12604,7 +12951,7 @@ option suppresses shell function lookup, as with the command builtin. returns true if all of the arguments are found, false if any are not found. -
ulimit [-HSTabcdefilmnpqrstuvx [limit]]
+
ulimit [-HSabcdefiklmnpqrstuvxPT [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 @@ -12665,6 +13012,10 @@ The maximum size of files written by the shell and its children
The maximum number of pending signals +
-k + +
+The maximum number of kqueues that may be allocated
-l
@@ -12711,6 +13062,10 @@ some systems, to its children
The maximum number of file locks +
-P + +
+The maximum number of pseudoterminals
-T
@@ -12737,23 +13092,33 @@ which is in seconds; -p, which is in units of 512-byte blocks; -and +-P, + -T, -b, +-k, + -n, and -u, -which are unscaled values. +which are unscaled values; +and, when in Posix mode, +-c + +and +-f, + +which are in 512-byte increments. The return status is 0 unless an invalid option or argument is supplied, or an error occurs while setting a new limit.
umask [-p] [-S] [mode]
-The user file-creation mask is set to +The user file-creation mask is set to mode. If @@ -13126,7 +13491,7 @@ this manual page should be directed to It's too big and too slow.

-There are some subtle differences between +There are some subtle differences between bash and traditional versions of @@ -13164,7 +13529,7 @@ There may be only one active coprocess at a time.


-
GNU Bash 4.32014 February 2BASH(1) +GNU Bash 4.42016 August 26BASH(1)

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

This document was created by man2html from bash.1.
-Time: 24 February 2014 08:28:34 EST +Time: 31 August 2016 10:24:30 EDT diff --git a/doc/bash.info b/doc/bash.info new file mode 100644 index 0000000..fac6786 --- /dev/null +++ b/doc/bash.info @@ -0,0 +1,11484 @@ +This is bash.info, produced by makeinfo version 6.1 from +bashref.texi. + +This text is a brief description of the features that are present in the +Bash shell (version 4.4, 7 September 2016). + + This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash +Reference Manual', for 'Bash', Version 4.4. + + Copyright (C) 1988-2016 Free Software Foundation, Inc. + + 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". +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.4, 7 September 2016). The Bash home page is +. + + This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash +Reference Manual', for 'Bash', Version 4.4. + + 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. + +* 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, 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 'space', 'tab', 'newline', 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, '!'. When the shell is in +POSIX mode (*note Bash POSIX Mode::), the '!' has no special meaning +within double quotes, even 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' +'\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 +'\?' + question mark +'\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. + + +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. +* GNU Parallel:: Running commands in parallel. + + +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 one or more 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 error, in addition to its +standard output, is connected to COMMAND2's standard input through the +pipe; it is shorthand for '2>&1 |'. This implicit redirection of the +standard error to the standard output is performed after any +redirections specified by the command. + + 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 (*note 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. *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. + + When the shell is in POSIX mode (*note 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 (*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. + + 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. + + +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 COMMANDS 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 'nocasematch' shell + option (see the description of 'shopt' in *note The Shopt + Builtin::) is enabled, the match is performed without regard to the + case of alphabetic characters. The '|' is used to separate + multiple patterns, and the ')' operator terminates a pattern list. + A list of patterns and an associated command-list is known as a + CLAUSE. + + Each clause must be terminated with ';;', ';&', or ';;&'. The WORD + undergoes tilde expansion, parameter expansion, command + substitution, arithmetic expansion, and quote removal before + matching is attempted. Each PATTERN undergoes tilde expansion, + parameter expansion, command substitution, and arithmetic + expansion. + + 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 (*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 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 *note Pattern Matching::, as if the + 'extglob' shell option were enabled. The '=' operator is identical + to '=='. If the 'nocasematch' shell option (see the description of + 'shopt' in *note The Shopt Builtin::) is enabled, the match is + performed without regard to the case of alphabetic characters. The + 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 'nocasematch' shell option (see the + description of 'shopt' in *note The Shopt Builtin::) is enabled, + the match is performed without regard to the case of alphabetic + characters. Any part of the pattern may be quoted to force the + quoted portion to be matched as a string. Bracket expressions in + regular expressions must be treated carefully, since normal quoting + characters lose their meanings between brackets. If the pattern is + stored in a shell variable, quoting the variable expansion forces + the entire pattern to be matched as a string. Substrings matched + by parenthesized subexpressions within the regular expression are + saved in the array variable 'BASH_REMATCH'. The element of + 'BASH_REMATCH' with index 0 is the portion of the string matching + the entire regular expression. The element of 'BASH_REMATCH' with + index N is the portion of the string matching the Nth parenthesized + subexpression. + + For example, the following will match a line (stored in the shell + variable LINE) if there is a sequence of characters in the value + 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. + + +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, Next: GNU Parallel, 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 coprocess is executed, the shell creates an array variable +(*note Arrays::) named 'NAME' in the context of the executing shell. +The standard output of COMMAND is connected via a pipe to a file +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 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. + + +File: bash.info, Node: GNU Parallel, Prev: Coprocesses, Up: Shell Commands + +3.2.6 GNU Parallel +------------------ + +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. 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 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. 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 listed one per line): + while IFS= read -r x; do + do-something1 "$x" "config-$x" + do-something2 < "$x" + done < file | process-output + +with a more compact syntax reminiscent of lambdas: + cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output + + Parallel provides a built-in mechanism to remove filename extensions, +which lends itself to batch file transformations or renaming: + ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}" +This will recompress all files in the current directory with names +ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. +(We use 'ls' for brevity here; using 'find' as above is more robust in +the face of filenames containing unexpected characters.) Parallel can +take arguments from the command line; the above can also be written as + + parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz + + If a command generates output, you may want to preserve the input +order in the output. For instance, the following command + { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute +will display as output the traceroute invocation that finishes first. +Adding the '-k' option + { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute +will ensure that the output of 'traceroute foss.org.my' is displayed +first. + + Finally, Parallel can be used to run a sequence of shell commands in +parallel, similar to 'cat file | bash'. It is not uncommon to take a +list of filenames, create a series of shell commands to operate on them, +and feed that list of 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: 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: + 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 (*note Compound Commands::). That command is +usually a LIST enclosed between { and }, but may be any compound command +listed above, with one exception: If the 'function' reserved word is +used, but the parentheses are not supplied, the braces are required. +COMPOUND-COMMAND is executed whenever NAME is specified as the name of a +command. When the shell is in POSIX mode (*note Bash POSIX Mode::), +NAME may not be the same as one of the special builtins (*note Special +Builtins::). 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. + + 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 (*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. 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. + + +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 (DECLARATION commands). When in POSIX mode +(*note Bash POSIX Mode::), these builtins may appear in a command after +one or more instances of the 'command' builtin and retain these +assignment statement properties. + + In the context where an assignment statement is assigning a value to +a shell variable or array index (*note Arrays::), the '+=' operator can +be used to append to or add to the variable's previous value. This +includes arguments to builtin commands such as 'declare' that accept +assignment statements (DECLARATION commands). When '+=' is applied to a +variable for which the INTEGER attribute has been set, VALUE is +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. + + A variable can be assigned the NAMEREF attribute using the '-n' +option to the 'declare' or 'local' builtin commands (*note Bash +Builtins::) to create a NAMEREF, or a reference to another variable. +This allows variables to be manipulated indirectly. Whenever the +nameref variable is referenced, assigned to, unset, or has its +attributes modified (other than using or changing the nameref attribute +itself), the operation is actually performed on the variable specified +by the nameref variable's value. A nameref is commonly used within +shell functions to refer to a variable whose name is passed as an +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, and changes to its attributes, are treated as references, +assignments, and attribute modifications 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 nameref attribute. +However, nameref variables can reference array variables and subscripted +array variables. Namerefs can be unset using the '-n' option to the +'unset' builtin (*note 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. + + +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 is not within double quotes, each positional + parameter expands to a separate word. In contexts where it is + performed, those words are subject to further word splitting and + pathname expansion. When the expansion occurs within double + quotes, it expands to a single word with the value of each + parameter separated by the first character of the '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 job most recently placed + into the background, whether executed as an asynchronous command or + using the 'bg' builtin (*note Job Control Builtins::). + +'0' + ($0) Expands to the name of the shell or shell script. This is set + at shell initialization. If Bash is invoked with a file of + commands (*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 and variable expansion, 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 +tilde, parameter, variable, and arithmetic expansion and command +substitution. + + After these expansions are performed, quote characters present in the +original word are removed unless they have been quoted themselves (QUOTE +REMOVAL). + + 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 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}} + + +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 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' + + +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 PARAMETER is a shell parameter as +described above (*note Shell Parameters::) or an array reference (*note +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 (!), and +PARAMETER is not a NAMEREF, it introduces a level of variable +indirection. Bash uses the value of the variable formed from the rest +of PARAMETER as the name of the variable; this variable is then expanded +and that value is used in the rest of the substitution, rather than the +value of PARAMETER itself. This is known as 'indirect expansion'. If +PARAMETER is a nameref, this expands to the name of the variable +referenced by PARAMETER instead of performing the complete indirect +expansion. The exceptions to this are the expansions of ${!PREFIX*} and +${!NAME[@]} described below. The exclamation point must immediately +follow the left brace in order to introduce indirection. + + In each of the cases below, WORD is subject to tilde expansion, +parameter expansion, command substitution, and arithmetic expansion. + + 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 (*note 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: + + $ 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: + + $ 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: + + $ 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 (*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 the + 'nocasematch' shell option (see the description of 'shopt' in *note + The Shopt Builtin::) is enabled, the match is performed without + regard to the case of alphabetic characters. If PARAMETER is '@' + or '*', the substitution operation is applied to each positional + parameter in turn, and the expansion is the resultant list. If + PARAMETER is an array variable subscripted with '@' or '*', the + substitution operation is applied to each member of the array in + turn, and the expansion is the resultant list. + +'${PARAMETER^PATTERN}' +'${PARAMETER^^PATTERN}' +'${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. + +'${PARAMETER@OPERATOR}' + The expansion is either a transformation of the value of PARAMETER + or information about PARAMETER itself, depending on the value of + OPERATOR. Each OPERATOR is a single letter: + + 'Q' + The expansion is a string that is the value of PARAMETER + quoted in a format that can be reused as input. + 'E' + The expansion is a string that is the value of PARAMETER with + backslash escape sequences expanded as with the '$'...'' + quoting mechansim. + 'P' + The expansion is a string that is the result of expanding the + value of PARAMETER as if it were a prompt string (*note + Controlling the Prompt::). + 'A' + The expansion is a string in the form of an assignment + statement or 'declare' command that, if evaluated, will + recreate PARAMETER with its attributes and value. + 'a' + The expansion is a string consisting of flag values + representing PARAMETER's attributes. + + If PARAMETER is '@' or '*', the 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 operation is applied to each member of the array in turn, + and the expansion is the resultant list. + + The result of the expansion is subject to word splitting and + pathname expansion as described below. + + +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 in a subshell +environment 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 and variable expansion, +command substitution, and quote removal. The result is treated as the +arithmetic expression to be evaluated. Arithmetic expansions may be +nested. + + The evaluation is performed according to the rules listed below +(*note Shell Arithmetic::). If the expression is invalid, Bash prints a +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 allows a process's input or output to be referred +to using a filename. It takes the form of + <(LIST) +or + >(LIST) +The process LIST is run asynchronously, and its input or output appears +as a filename. This filename 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. Process substitution is supported on systems that +support named pipes (FIFOs) or the '/dev/fd' method of naming open +files. + + 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 using these characters as +field terminators. 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', 'tab', and 'newline' 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 and passed to +commands as empty strings. Unquoted implicit null arguments, resulting +from the expansion of parameters that have no values, are removed. If a +parameter with no value is expanded within double quotes, a null +argument results and is retained and passed to a command as an empty +string. When a quoted null argument appears as part of a word whose +expansion is non-null, the null argument is removed. That is, the word +'-d''' becomes '-d' after word splitting and null argument removal. + + Note that if no expansion occurs, no splitting is performed. + + +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 filenames +matching the pattern (*note 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 *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. If the 'nocaseglob' option is set, +the matching against the patterns in 'GLOBIGNORE' is performed without +regard to case. The filenames '.' and '..' are always ignored when +'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 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. + + +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 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. If the operating +system on which Bash is running provides these special files, bash will +use them; otherwise it will emulate them internally with the behavior +described below. + +'/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. + +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 + 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. + +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). + +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 (or file descriptor N if N is specified) for a +command. + + The format of here-documents is: + [N]<<[-]WORD + HERE-DOCUMENT + DELIMITER + + No parameter and variable expansion, command substitution, arithmetic +expansion, or filename expansion is performed on WORD. If any part of +WORD is 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. + +3.6.7 Here Strings +------------------ + +A variant of here documents, the format is: + [N]<<< WORD + + The WORD undergoes brace expansion, tilde expansion, parameter and +variable expansion, command substitution, arithmetic expansion, and +quote removal. Pathname expansion and word splitting are not performed. +The result is supplied as a single string, with a newline appended, to +the command on its standard input (or file descriptor N if N is +specified). + +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. + +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 pathname 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, generally invalid options or missing +arguments. + + +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', 'return', 'break', +'continue', 'let', and 'shift' builtins accept and process arguments +beginning with '-' without requiring '--'. Other builtins that accept +arguments but are not specified as accepting options interpret arguments +beginning with '-' as invalid options and require '--' to prevent this +interpretation. + + +File: bash.info, Node: Bourne Shell Builtins, Next: Bash Builtins, Up: Shell Builtin Commands + +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. If the '-T' option is enabled, 'source' + inherits any trap on 'DEBUG'; if it is not, any 'DEBUG' trap string + is saved and restored around the call to 'source', and 'source' + unsets the 'DEBUG' trap while it executes. If '-T' is not set, and + the sourced file changes the 'DEBUG' trap, the new value is + retained when 'source' completes. The return status is the exit + status of the last command executed, or zero if no commands are + executed. If FILENAME is not found, or cannot be read, the return + status is non-zero. This builtin is equivalent to 'source'. + +'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. + + On systems that support it, the '-@' option presents the extended + attributes associated with a file as a directory. + + 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. If 'return' + is executed by a trap handler, the last command used to determine + the status is the last command executed before the trap handler. + if 'return' is executed during a 'DEBUG' trap, the last command + used to determine the status is the last command executed by the + trap handler before 'return' was invoked. 'return' may also be + used to terminate execution of a script being executed with the '.' + ('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 expression 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 *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. 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 (*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 + The following conditions are applied in the order listed. 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. + + 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 (*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 + 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 + removed. If the '-f' option is given, the NAMEs refer to shell + functions, and the function definition is removed. If the '-n' + option is supplied, and NAME is a variable with the NAMEREF + 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. + + +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] [-lpsvPSVX] + bind [-m KEYMAP] [-q FUNCTION] [-u FUNCTION] [-r KEYSEQ] + bind [-m KEYMAP] -f FILENAME + bind [-m KEYMAP] -x KEYSEQ:SHELL-COMMAND + bind [-m KEYMAP] KEYSEQ:FUNCTION-NAME + bind [-m KEYMAP] KEYSEQ:READLINE-COMMAND + + 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' ('vi-move' is also a synonym); '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, + other than '-f' and '-F', 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 each NAME 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 (*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. + + '-n' + Give each NAME the NAMEREF attribute, making it a name + reference to another variable. That other variable is defined + by the value of NAME. All references, assignments, and + attribute modifications to NAME, except for those using or + changing the '-n' attribute itself, are performed on the + variable referenced by NAME's value. The nameref 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. + + When using '-a' or '-A' and the compound assignment syntax to + create array variables, additional attributes do not take effect + until subsequent assignments. + + 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 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 (*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. If NAME is '-', the set of shell options is made + local to the function in which 'local' is invoked: shell options + changed using the 'set' builtin inside the function are restored to + their original values when the function returns. 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 [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] + [-C CALLBACK] [-c QUANTUM] [ARRAY] + + Read lines from the standard input into the indexed array variable + ARRAY, or from file descriptor FD if the '-u' option is supplied. + The variable 'MAPFILE' is the default ARRAY. Options, if supplied, + have the following meanings: + + '-d' + The first character of DELIM is used to terminate each input + line, rather than newline. + '-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 DELIM (default 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 in the same way as 'echo -e' (*note + Bash Builtins::). + '%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, split + into words as described above in *note Word Splitting::, and the + first word is assigned to the first NAME, the second word to the + second NAME, and so on. If there are more words than names, the + remaining words and their intervening delimiters are 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 using the same rules the shell uses for expansion + (described above in *note Word Splitting::). 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 + exit status is zero, unless end-of-file is encountered, 'read' + times out (in which case the status 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 (*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, but honors 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. The + result is not split on the characters in 'IFS'; the intent is + that the variable is assigned exactly the characters read + (with the exception of backslash; see the '-r' option below). + + '-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 [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] + [-C CALLBACK] [-c QUANTUM] [ARRAY] + + Read lines from the standard input into the indexed array variable + ARRAY, or from file descriptor FD if the '-u' option is supplied. + + 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, 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 [-HSabcdefiklmnpqrstuvxPT] [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. + + '-k' + The maximum number of kqueues that may be allocated. + + '-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. + + '-P' + The maximum number of pseudoterminals. + + '-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; '-P', '-T', + '-b', '-k', '-n' and '-u', which are unscaled values; and, when in + POSIX Mode (*note Bash POSIX Mode::), '-c' and '-f', which are in + 512-byte increments. + + 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-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' + Each variable or function that is created or modified is given + the export attribute and marked for export to the environment + of subsequent commands. + + '-b' + 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 list (*note Lists::), or a compound command (*note 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 (*note 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 (*note 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 (*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 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. + + +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 settings controlling optional shell behavior. + The settings can be either those listed below, or, if the '-o' + option is used, those available with the '-o' option to the 'set' + builtin command (*note The Set Builtin::). With no options, or + with the '-p' option, a list of all settable options is displayed, + with an indication of whether or not each is set. The '-p' option + causes output to be displayed in a form that may be reused as + input. Other options have the following meanings: + + '-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, '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 (*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 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) and the effect of interrupting a command list. Bash + versions 3.2 and earlier continue with the next command in the + list after one terminates due to an interrupt. + + '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. + + 'compat43' + If set, Bash does not print a warning message if an attempt is + made to use a quoted compound array assignment as an argument + to 'declare', makes word expansion errors non-fatal errors + that cause the current command to fail (the default behavior + is to make them fatal errors that cause the shell to exit), + and does not reset the loop state when a shell function is + executed (this allows 'break' or 'continue' in a shell + function to affect loops in the caller's context). + + '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, + *note Aliases::. This option is enabled by default for + interactive shells. + + 'extdebug' + If set at shell invocation, arrange to execute the debugger + profile before the shell starts, identical to the '--debugger' + option. If set after invocation, behavior intended for use by + debuggers is enabled: + + 1. The '-F' option to the 'declare' builtin (*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), the shell simulates a call to + 'return'. + + 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 'ERR' 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. + + 'globasciiranges' + If set, range expressions used in pattern matching bracket + expressions (*note 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 (*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::). + + 'inherit_errexit' + If set, command substitution inherits the value of the + 'errexit' option, instead of unsetting it in the subshell + environment. This option is enabled when POSIX mode is + enabled. + + 'interactive_comments' + 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 + (*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, when performing pattern substitution + word expansions, or when filtering possible completions as + part of programmable completion. + + '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 Controlling the + 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 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\$ '. *Note + 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 '> '. + + +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; however, unsetting array elements + currently does not cause aliases to be removed from the alias list. + If 'BASH_ALIASES' is unset, it loses its special properties, even + if it is subsequently reset. + +'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; however, unsetting array elements + currently does not cause command names to be removed from the hash + table. If 'BASH_CMDS' is unset, it loses its special properties, + even if it is subsequently reset. + +'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. *Note + 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. *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 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_LOADABLES_PATH' + A colon-separated list of directories in which the shell looks for + dynamically loadable builtins specified by the 'enable' command. + +'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 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 (*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. + +'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 (*note 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 (*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::). 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 (*note 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 + (*note Bash POSIX Mode::). + +'EUID' + The numeric effective user id of the current user. This variable + is readonly. + +'EXECIGNORE' + A colon-separated list of shell patterns (*note Pattern Matching::) + defining the list of filenames to be ignored by command search + using 'PATH'. Files whose full pathnames match one of these + patterns are not considered executable files for the purposes of + completion and command execution via 'PATH' lookup. This does not + affect the behavior of the '[', 'test', and '[[' commands. Full + pathnames in the command hash table are not subject to + 'EXECIGNORE'. Use this variable to ignore shared library files + that have the executable bit set, but are not executable files. + The pattern matching honors the setting of the 'extglob' shell + option. + +'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. 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. The pattern + matching honors the setting of the 'extglob' shell option. + +'GROUPS' + An array variable containing the list of groups of which the + current user is a member. Assignments to 'GROUPS' have no effect. + 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, 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'. The pattern matching honors the setting of the + 'extglob' shell option. + + '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 (*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. + +'LC_TIME' + This variable determines the locale category used for data and time + 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 (*note 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 (*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 Controlling the + Prompt::). Characters removed are replaced with an ellipsis. + +'PS0' + The value of this parameter is expanded like PS1 and displayed by + interactive shells after reading a command and before the command + is executed. + +'PS3' + 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. + +'READLINE_LINE' + The contents of the Readline line buffer, for use with 'bind -x' + (*note Bash Builtins::). + +'READLINE_POINT' + The position of the insertion point in the Readline line buffer, + for use with 'bind -x' (*note Bash Builtins::). + +'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 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. + + +File: bash.info, Node: Bash Features, Next: Job Control, Prev: Shell Variables, Up: Top + +6 Bash Features +*************** + +This chapter 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. +* Controlling the Prompt:: Customizing the various prompt strings. +* 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 ...] + + All of the single-character options used with the 'set' builtin +(*note 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 *note 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 (*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' + Read and execute commands from the first non-option argument + COMMAND_STRING, then exit. If there are arguments after the + COMMAND_STRING, the first argument is assigned to '$0' and any + remaining arguments are assigned to the positional parameters. The + assignment to '$0' sets the name of the shell, which is used in + warning and error messages. + +'-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 filenames 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 an interactive login shell exits, or a non-interactive login +shell executes the 'exit' builtin command, 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 neither 'rshd' nor 'sshd' generally invoke +the shell with those options or allow them to be specified. + +Invoked with unequal effective and real UID/GIDs +................................................ + +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. Bash displays 'PS0' + after it reads a command but before executing it. + + 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 a shell with history enabled 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. Bash handles several filenames specially +when they are used in expressions. If the operating system on which +Bash is running provides these special files, Bash will use them; +otherwise it will emulate them internally with this behavior: 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 + (*note 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 (*note + 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. + + +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 using the '((' compound command, the 'let' +builtin, or the '-i' option to the 'declare' builtin. + + 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. + + +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 BLANK, then the next command word following the alias is also +checked for alias expansion. + + Aliases are created and listed with the 'alias' command, and removed +with the 'unalias' command. + + There is no mechanism for using arguments in the replacement text, as +in 'csh'. If arguments are needed, a shell function should be used +(*note Shell Functions::). + + 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 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. 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. 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. + + Referencing an array variable without a subscript is equivalent to +referencing with a subscript of 0. Any reference to a variable using a +valid subscript is legal, and 'bash' will create an array if necessary. + + An array variable is considered set if a subscript has been assigned +a value. The null string is a valid value. + + It is possible to obtain the keys (indices) of an array as well as +the values. ${!NAME[@]} and ${!NAME[*]} expand to the indices assigned +in array variable NAME. The treatment when in double quotes is similar +to the expansion of the special parameters '@' and '*' within double +quotes. + + The 'unset' builtin is used to destroy arrays. 'unset +NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT. +Negative subscripts to indexed arrays are interpreted as described +above. Care must be taken to avoid unwanted side effects caused by +filename expansion. 'unset NAME', where NAME is an array, removes the +entire array. A subscript of '*' or '@' also removes the entire array. + + 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. + + +File: bash.info, Node: The Directory Stack, Next: Controlling the 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 +current directory is always the "top" 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 [-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. The current directory is always + the first directory in the stack. + + '-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] + + 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 and makes the new top the current directory. + + '-n' + Suppresses the normal change of directory when rotating or + 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 DIR be the top of the stack, making it the new current + directory as if it had been supplied as an argument to the + 'cd' builtin. + + +File: bash.info, Node: Controlling the 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 '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 (*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: Controlling the 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. Alias expansion is always enabled, even in non-interactive shells. + + 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. Redirection operators do not perform filename expansion on the + word in the redirection unless the shell is interactive. + + 11. Redirection operators do not perform word splitting on the word in + the redirection. + + 12. Function names must be valid shell 'name's. That is, they may not + contain characters other than letters, digits, and underscores, and + may not start with a digit. Declaring a function with an invalid + name causes a fatal syntax error in non-interactive shells. + + 13. Function names may not be the same as one of the POSIX special + builtins. + + 14. POSIX special builtins are found before shell functions during + command lookup. + + 15. When printing shell function definitions (e.g., by 'type'), Bash + does not print the 'function' keyword. + + 16. Literal tildes that appear as the first character in elements of + the 'PATH' variable are not expanded as described above under *note + Tilde Expansion::. + + 17. The 'time' reserved word may be used by itself as a command. When + used in this way, it displays timing statistics for the shell and + its completed children. The 'TIMEFORMAT' variable controls the + format of the timing information. + + 18. When parsing and expanding a ${...} expansion that appears within + double quotes, single quotes are no longer special and cannot be + used to quote a closing brace or other special character, unless + the operator is one of those defined to perform pattern removal. + In this case, they do not have to appear as matched pairs. + + 19. The parser does not recognize 'time' as a reserved word if the + next token begins with a '-'. + + 20. The '!' character does not introduce history expansion within a + double-quoted string, even if the 'histexpand' option is enabled. + + 21. If a POSIX special builtin returns an error status, a + non-interactive shell exits. The fatal errors are those listed in + the POSIX standard, and include things like passing incorrect + options, redirection errors, variable assignment errors for + assignments preceding the command name, and so on. + + 22. A non-interactive shell exits with an error status if a variable + assignment error occurs when no command name follows the assignment + statements. A variable assignment error occurs, for example, when + trying to assign a value to a readonly variable. + + 23. A non-interactive shell exits with an error status if a variable + assignment error occurs in an assignment statement preceding a + special builtin, but not with any other simple command. + + 24. A non-interactive shell exits with an error status if the + iteration variable in a 'for' statement or the selection variable + in a 'select' statement is a readonly variable. + + 25. Non-interactive shells exit if FILENAME in '.' FILENAME is not + found. + + 26. Non-interactive shells exit if a syntax error in an arithmetic + expansion results in an invalid expression. + + 27. Non-interactive shells exit if a parameter expansion error occurs. + + 28. Non-interactive shells exit if there is a syntax error in a script + read with the '.' or 'source' builtins, or in a string processed by + the 'eval' builtin. + + 29. Process substitution is not available. + + 30. While variable indirection is available, it may not be applied to + the '#' and '?' special parameters. + + 31. When expanding the '*' special parameter in a pattern context + where the expansion is double-quoted does not treat the '$*' as if + it were double-quoted. + + 32. Assignment statements preceding POSIX special builtins persist in + the shell environment after the builtin completes. + + 33. Assignment statements preceding shell function calls persist in + the shell environment after the function returns, as if a POSIX + special builtin command had been executed. + + 34. The 'command' builtin does not prevent builtins that take + assignment statements as arguments from expanding them as + assignment statements; when not in POSIX mode, assignment builtins + lose their assignment statement expansion properties when preceded + by 'command'. + + 35. The 'bg' builtin uses the required format to describe each job + placed in the background, which does not include an indication of + whether the job is the current or previous job. + + 36. The output of 'kill -l' prints all the signal names on a single + line, separated by spaces, without the 'SIG' prefix. + + 37. The 'kill' builtin does not accept signal names with a 'SIG' + prefix. + + 38. The 'export' and 'readonly' builtin commands display their output + in the format required by POSIX. + + 39. The 'trap' builtin displays signal names without the leading + 'SIG'. + + 40. The 'trap' builtin doesn't check the first argument for a possible + signal specification and revert the signal handling to the original + disposition if it is, unless that argument consists solely of + digits and is a valid signal number. If users want to reset the + handler for a given signal to the original disposition, they should + use '-' as the first argument. + + 41. The '.' and 'source' builtins do not search the current directory + for the filename argument if it is not found by searching 'PATH'. + + 42. Enabling POSIX mode has the effect of setting the + 'inherit_errexit' option, so subshells spawned to execute command + substitutions inherit the value of the '-e' option from the parent + shell. When the 'inherit_errexit' option is not enabled, Bash + clears the '-e' option in such subshells. + + 43. When the 'alias' builtin displays alias definitions, it does not + display them with a leading 'alias ' unless the '-p' option is + supplied. + + 44. When the 'set' builtin is invoked without options, it does not + display shell function names and definitions. + + 45. When the 'set' builtin is invoked without options, it displays + variable values without quotes, unless they contain shell + metacharacters, even if the result contains nonprinting characters. + + 46. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + constructed from '$PWD' and the directory name supplied as an + argument does not refer to an existing directory, 'cd' will fail + instead of falling back to PHYSICAL mode. + + 47. The 'pwd' builtin verifies that the value it prints is the same as + the current directory, even if it is not asked to check the file + system with the '-P' option. + + 48. When listing the history, the 'fc' builtin does not include an + indication of whether or not a history entry has been modified. + + 49. The default editor used by 'fc' is 'ed'. + + 50. The 'type' and 'command' builtins will not report a non-executable + file as having been found, though the shell will attempt to execute + such a file if it is the only so-named file found in '$PATH'. + + 51. The 'vi' editing mode will invoke the 'vi' editor directly when + the 'v' command is run, instead of checking '$VISUAL' and + '$EDITOR'. + + 52. When the 'xpg_echo' option is enabled, Bash does not attempt to + interpret any arguments to 'echo' as options. Each argument is + displayed, after escape characters are converted. + + 53. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + and '-f' options. + + 54. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + interrupt the 'wait' builtin and cause it to return immediately. + The trap command is run once for each child that exits. + + 55. The 'read' builtin may be interrupted by a signal for which a trap + has been set. If Bash receives a trapped signal while executing + 'read', the trap handler executes and 'read' returns an exit status + greater than 128. + + 56. Bash removes an exited background process's status from the list + of such statuses after the 'wait' builtin is used to obtain it. + + There is other POSIX behavior that Bash does not implement by default +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' + 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|-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 '-L' option is equivalent to + '-l'. 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 [-n] [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 ... | PID ... ] + + 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 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. + +'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. +* A Programmable Completion Example:: An example shell function for + generating possible completions. + + +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' (the default), Readline attempts to bind the + control characters treated specially by the kernel's terminal + driver to their Readline equivalents. + + 'blink-matching-paren' + If set to 'on', Readline attempts to briefly move the cursor + to an opening parenthesis when a closing parenthesis is + inserted. The default is 'off'. + + 'colored-completion-prefix' + If set to 'on', when listing completions, Readline displays + the common prefix of the set of possible completions using a + different color. The color definitions are taken from the + value of the 'LS_COLORS' environment variable. The default is + 'off'. + + '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 character, converting them + to a meta-prefixed key sequence. The default value is 'on', + but will be set to 'off' if the locale is one that contains + eight-bit characters. + + 'disable-completion' + If set to 'On', Readline will inhibit word completion. + Completion characters will be inserted into the line as if + they had been mapped to 'self-insert'. The default is 'off'. + + 'echo-control-characters' + When set to 'on', on operating systems that indicate they + support it, readline echoes a character corresponding to a + signal generated from the keyboard. The default is 'on'. + + 'editing-mode' + The 'editing-mode' variable controls which default set of key + bindings is used. By default, Readline starts up in Emacs + editing mode, where the keystrokes are most similar to Emacs. + This variable can be set to either 'emacs' or 'vi'. + + 'emacs-mode-string' + This string is displayed immediately before the last line of + the primary prompt when emacs editing mode is active. The + value is expanded like a key binding, so the standard set of + meta- and control prefixes and backslash escape sequences is + available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '@'. + + 'enable-bracketed-paste' + When set to 'On', Readline will configure the terminal in a + way that will enable it to insert each paste into the editing + buffer as a single string of characters, instead of treating + each character as if it had been read from the keyboard. This + can prevent pasted characters from being interpreted as + editing commands. The default is 'off'. + + '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. If an + attempt is made to set HISTORY-SIZE to a non-numeric value, + the maximum number of history entries will be set to 500. + + 'horizontal-scroll-mode' + This variable can be set to either 'on' or 'off'. Setting it + 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', but Readline will set it to 'on' if + the locale contains eight-bit characters. 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' ('vi-move' is also a synonym); '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. Readline uses this value + to determine whether or not input is available on the current + input source ('rl_instream' by default). 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', but Readline will set it to + 'on' if the locale contains eight-bit characters. + + '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 mode strings are user-settable. 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'. + + 'vi-cmd-mode-string' + This string is displayed immediately before the last line of + the primary prompt when vi editing mode is active and in + command mode. The value is expanded like a key binding, so + the standard set of meta- and control prefixes and backslash + escape sequences is available. Use the '\1' and '\2' escapes + to begin and end sequences of non-printing characters, which + can be used to embed a terminal control sequence into the mode + string. The default is '(cmd)'. + + 'vi-ins-mode-string' + This string is displayed immediately before the last line of + the primary prompt when vi editing mode is active and in + insertion mode. The value is expanded like a key binding, so + the standard set of meta- and control prefixes and backslash + escape sequences is available. Use the '\1' and '\2' escapes + to begin and end sequences of non-printing characters, which + can be used to embed a terminal control sequence into the mode + string. The default is '(ins)'. + + '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 system-wide 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 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. The search string may match + anywhere in a history line. + +'non-incremental-forward-search-history (M-n)' + Search forward starting at the current line and moving 'down' + through the history as necessary using a non-incremental search for + a string supplied by the user. The search string may match + anywhere in a history line. + +'history-search-forward ()' + 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. + + +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 +-------------------------------- + +'end-of-file (usually C-d)' + The character indicating end-of-file as set, for example, by + 'stty'. If this character is read when there are no characters on + the line, and point is at the beginning of the line, Readline + interprets it as the end of input and returns EOF. + +'delete-char (C-d)' + Delete the character at point. If this function is bound to the + same character as the tty EOF character, as 'C-d' commonly is, see + above for the effects. + +'backward-delete-char (Rubout)' + 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. + +'bracketed-paste-begin ()' + This function is intended to be bound to the "bracketed paste" + escape sequence sent by some terminals, and such a binding is + assigned by default. It allows Readline to insert the pasted text + as a single unit without treating each character as if it had been + read from the keyboard. The characters are inserted as if each one + was bound to 'self-insert') instead of executing any editing + commands. + +'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 from the cursor to the beginning of the current 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'. + +'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'. + + +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 nor minus sign, the argument count for the next command is + multiplied by four. The argument count is initially one, so + executing this function the first time makes the 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. 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 , 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. + +'print-last-kbd-macro ()' + Print the last keboard macro defined in a format suitable for the + INPUTRC file. + + +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 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 ($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 (*note 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. If the 'nocasematch' shell option +(see the description of 'shopt' in *note The Shopt Builtin::) is +enabled, the match is performed without regard to the case of alphabetic +characters. + + 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 -o bashdefault -o default + + +File: bash.info, Node: Programmable Completion Builtins, Next: A Programmable Completion Example, Prev: Programmable Completion, Up: Command Line Editing + +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 (*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'. + + 'noquote' + Tell Readline not to quote the completed words if they + are filenames (quoting filenames is the default). + + 'nosort' + Tell Readline not to sort the list of possible + completions alphabetically. + + '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'. + + '-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 (*note 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. + + +File: bash.info, Node: A Programmable Completion Example, Prev: Programmable Completion Builtins, Up: Command Line Editing + +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 (*note Tilde +Expansion::), searching directories in $CDPATH, which is described above +(*note Bourne Shell Builtins::), and basic support for the 'cdable_vars' +shell option (*note 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 +(*note 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 . 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. + + +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 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 (*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 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 following history entry. + + 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] + + 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 (*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 to the history file. These are + history lines entered since the beginning of the current Bash + session, but not already appended to the history file. + + '-n' + 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. + + +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 is performed immediately after a complete line is +read, before the shell breaks it into words. + + 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, but the history +expansion character is also treated as quoted if it immediately precedes +the closing double quote in a double-quoted string. + + Several shell options settable with the 'shopt' builtin (*note Bash +Builtins::) may be used to tailor the behavior of history expansion. If +the 'histverify' shell option is enabled, and Readline is being used, +history substitutions are not immediately passed to the shell parser. +Instead, the expanded line is reloaded into the Readline editing buffer +for further modification. If Readline is being used, and the +'histreedit' shell option is enabled, a failed history expansion will be +reloaded into the Readline editing buffer for correction. The '-p' +option to the 'history' builtin command may be used to see what a +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. 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. + + +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.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'. + + +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', +'direxpand-default', and 'xpg-echo-default' are enabled by default, +unless the operating system does not provide the necessary support. + +'--enable-alias' + Allow alias expansion and include the 'alias' and 'unalias' + builtins (*note Aliases::). + +'--enable-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-direxpand-default' + Cause the 'direxpand' shell option (*note 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 (*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-function-import' + Include support for importing function definitions exported by + another instance of the shell from the environment. This option is + enabled by default. + +'--enable-glob-asciirange-default' + Set the default value of the GLOBASCIIRANGES shell option described + above under *note The Shopt Builtin:: to be enabled. This controls + the behavior of character ranges when used in pattern matching + bracket expressions. + +'--enable-help-builtin' + Include the 'help' builtin, which displays help on shell builtins + 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 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 (*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' compound command, which allows the generation + of simple menus (*note Conditional Constructs::). + +'--enable-separate-helpfiles' + Use external files for the documentation displayed by the 'help' + builtin instead of storing the text internally. + +'--enable-single-help-strings' + Store the text displayed by the 'help' builtin as a single string + for each help topic. This aids in translating the text to + 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 +. + + 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. + + * 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 (*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 Controlling the 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. + + + 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 + . + + 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 17) +* :: Bourne Shell Builtins. + (line 11) +* [: Bourne Shell Builtins. + (line 268) +* alias: Bash Builtins. (line 11) +* bg: Job Control Builtins. + (line 7) +* bind: Bash Builtins. (line 21) +* break: Bourne Shell Builtins. + (line 36) +* builtin: Bash Builtins. (line 102) +* caller: Bash Builtins. (line 111) +* cd: Bourne Shell Builtins. + (line 44) +* command: Bash Builtins. (line 128) +* compgen: Programmable Completion Builtins. + (line 12) +* complete: Programmable Completion Builtins. + (line 30) +* compopt: Programmable Completion Builtins. + (line 229) +* continue: Bourne Shell Builtins. + (line 85) +* declare: Bash Builtins. (line 148) +* dirs: Directory Stack Builtins. + (line 7) +* disown: Job Control Builtins. + (line 89) +* echo: Bash Builtins. (line 245) +* enable: Bash Builtins. (line 294) +* eval: Bourne Shell Builtins. + (line 94) +* exec: Bourne Shell Builtins. + (line 102) +* exit: Bourne Shell Builtins. + (line 119) +* export: Bourne Shell Builtins. + (line 126) +* fc: Bash History Builtins. + (line 10) +* fg: Job Control Builtins. + (line 17) +* getopts: Bourne Shell Builtins. + (line 142) +* hash: Bourne Shell Builtins. + (line 185) +* help: Bash Builtins. (line 323) +* history: Bash History Builtins. + (line 40) +* jobs: Job Control Builtins. + (line 27) +* kill: Job Control Builtins. + (line 58) +* let: Bash Builtins. (line 342) +* local: Bash Builtins. (line 350) +* logout: Bash Builtins. (line 364) +* mapfile: Bash Builtins. (line 369) +* popd: Directory Stack Builtins. + (line 35) +* printf: Bash Builtins. (line 414) +* pushd: Directory Stack Builtins. + (line 53) +* pwd: Bourne Shell Builtins. + (line 205) +* read: Bash Builtins. (line 458) +* readarray: Bash Builtins. (line 550) +* readonly: Bourne Shell Builtins. + (line 215) +* return: Bourne Shell Builtins. + (line 234) +* set: The Set Builtin. (line 11) +* shift: Bourne Shell Builtins. + (line 255) +* shopt: The Shopt Builtin. (line 9) +* source: Bash Builtins. (line 559) +* suspend: Job Control Builtins. + (line 101) +* test: Bourne Shell Builtins. + (line 268) +* times: Bourne Shell Builtins. + (line 343) +* trap: Bourne Shell Builtins. + (line 349) +* type: Bash Builtins. (line 564) +* typeset: Bash Builtins. (line 596) +* ulimit: Bash Builtins. (line 602) +* umask: Bourne Shell Builtins. + (line 398) +* unalias: Bash Builtins. (line 701) +* unset: Bourne Shell Builtins. + (line 416) +* wait: Job Control Builtins. + (line 76) + + +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 121) +* ]]: Conditional Constructs. + (line 121) +* {: Command Grouping. (line 21) +* }: Command Grouping. (line 21) +* 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 32) +* function: Shell Functions. (line 13) +* if: Conditional Constructs. + (line 7) +* in: Conditional Constructs. + (line 28) +* select: Conditional Constructs. + (line 79) +* then: Conditional Constructs. + (line 7) +* time: Pipelines. (line 9) +* until: Looping Constructs. (line 12) +* while: Looping Constructs. (line 22) + + +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 50) +* #: Special Parameters. (line 33) +* $: Special Parameters. (line 45) +* $!: Special Parameters. (line 51) +* $#: Special Parameters. (line 34) +* $$: Special Parameters. (line 46) +* $*: Special Parameters. (line 10) +* $-: Special Parameters. (line 41) +* $0: Special Parameters. (line 56) +* $?: Special Parameters. (line 37) +* $@: Special Parameters. (line 23) +* $_: Special Parameters. (line 65) +* *: Special Parameters. (line 9) +* -: Special Parameters. (line 40) +* 0: Special Parameters. (line 55) +* ?: Special Parameters. (line 36) +* @: Special Parameters. (line 22) +* _: Special Parameters. (line 64) +* auto_resume: Job Control Variables. + (line 6) +* BASH: Bash Variables. (line 13) +* BASHOPTS: Bash Variables. (line 16) +* BASHPID: Bash Variables. (line 25) +* BASH_ALIASES: Bash Variables. (line 30) +* BASH_ARGC: Bash Variables. (line 39) +* BASH_ARGV: Bash Variables. (line 49) +* BASH_CMDS: Bash Variables. (line 59) +* BASH_COMMAND: Bash Variables. (line 68) +* BASH_COMPAT: Bash Variables. (line 73) +* BASH_ENV: Bash Variables. (line 88) +* BASH_EXECUTION_STRING: Bash Variables. (line 94) +* BASH_LINENO: Bash Variables. (line 97) +* BASH_LOADABLES_PATH: Bash Variables. (line 105) +* BASH_REMATCH: Bash Variables. (line 109) +* BASH_SOURCE: Bash Variables. (line 117) +* BASH_SUBSHELL: Bash Variables. (line 124) +* BASH_VERSINFO: Bash Variables. (line 129) +* BASH_VERSION: Bash Variables. (line 152) +* BASH_XTRACEFD: Bash Variables. (line 155) +* bell-style: Readline Init File Syntax. + (line 38) +* bind-tty-special-chars: Readline Init File Syntax. + (line 45) +* blink-matching-paren: Readline Init File Syntax. + (line 50) +* CDPATH: Bourne Shell Variables. + (line 9) +* CHILD_MAX: Bash Variables. (line 166) +* colored-completion-prefix: Readline Init File Syntax. + (line 55) +* colored-stats: Readline Init File Syntax. + (line 62) +* COLUMNS: Bash Variables. (line 173) +* comment-begin: Readline Init File Syntax. + (line 68) +* completion-display-width: Readline Init File Syntax. + (line 73) +* completion-ignore-case: Readline Init File Syntax. + (line 80) +* completion-map-case: Readline Init File Syntax. + (line 85) +* completion-prefix-display-length: Readline Init File Syntax. + (line 91) +* completion-query-items: Readline Init File Syntax. + (line 98) +* COMPREPLY: Bash Variables. (line 225) +* COMP_CWORD: Bash Variables. (line 179) +* COMP_KEY: Bash Variables. (line 208) +* COMP_LINE: Bash Variables. (line 185) +* COMP_POINT: Bash Variables. (line 190) +* COMP_TYPE: Bash Variables. (line 198) +* COMP_WORDBREAKS: Bash Variables. (line 212) +* COMP_WORDS: Bash Variables. (line 218) +* convert-meta: Readline Init File Syntax. + (line 108) +* COPROC: Bash Variables. (line 231) +* DIRSTACK: Bash Variables. (line 235) +* disable-completion: Readline Init File Syntax. + (line 116) +* echo-control-characters: Readline Init File Syntax. + (line 121) +* editing-mode: Readline Init File Syntax. + (line 126) +* EMACS: Bash Variables. (line 245) +* emacs-mode-string: Readline Init File Syntax. + (line 132) +* enable-bracketed-paste: Readline Init File Syntax. + (line 142) +* enable-keypad: Readline Init File Syntax. + (line 150) +* ENV: Bash Variables. (line 250) +* EUID: Bash Variables. (line 254) +* EXECIGNORE: Bash Variables. (line 258) +* expand-tilde: Readline Init File Syntax. + (line 161) +* FCEDIT: Bash Variables. (line 271) +* FIGNORE: Bash Variables. (line 275) +* FUNCNAME: Bash Variables. (line 281) +* FUNCNEST: Bash Variables. (line 298) +* GLOBIGNORE: Bash Variables. (line 303) +* GROUPS: Bash Variables. (line 310) +* histchars: Bash Variables. (line 316) +* HISTCMD: Bash Variables. (line 331) +* HISTCONTROL: Bash Variables. (line 336) +* HISTFILE: Bash Variables. (line 352) +* HISTFILESIZE: Bash Variables. (line 356) +* HISTIGNORE: Bash Variables. (line 367) +* history-preserve-point: Readline Init File Syntax. + (line 165) +* history-size: Readline Init File Syntax. + (line 171) +* HISTSIZE: Bash Variables. (line 387) +* HISTTIMEFORMAT: Bash Variables. (line 394) +* HOME: Bourne Shell Variables. + (line 13) +* horizontal-scroll-mode: Readline Init File Syntax. + (line 180) +* HOSTFILE: Bash Variables. (line 402) +* HOSTNAME: Bash Variables. (line 413) +* HOSTTYPE: Bash Variables. (line 416) +* IFS: Bourne Shell Variables. + (line 18) +* IGNOREEOF: Bash Variables. (line 419) +* input-meta: Readline Init File Syntax. + (line 187) +* INPUTRC: Bash Variables. (line 429) +* isearch-terminators: Readline Init File Syntax. + (line 195) +* keymap: Readline Init File Syntax. + (line 202) +* LANG: Bash Variables. (line 433) +* LC_ALL: Bash Variables. (line 437) +* LC_COLLATE: Bash Variables. (line 441) +* LC_CTYPE: Bash Variables. (line 448) +* LC_MESSAGES: Locale Translation. (line 11) +* LC_MESSAGES <1>: Bash Variables. (line 453) +* LC_NUMERIC: Bash Variables. (line 457) +* LC_TIME: Bash Variables. (line 461) +* LINENO: Bash Variables. (line 465) +* LINES: Bash Variables. (line 469) +* MACHTYPE: Bash Variables. (line 475) +* MAIL: Bourne Shell Variables. + (line 22) +* MAILCHECK: Bash Variables. (line 479) +* MAILPATH: Bourne Shell Variables. + (line 27) +* MAPFILE: Bash Variables. (line 487) +* mark-modified-lines: Readline Init File Syntax. + (line 232) +* mark-symlinked-directories: Readline Init File Syntax. + (line 237) +* match-hidden-files: Readline Init File Syntax. + (line 242) +* menu-complete-display-prefix: Readline Init File Syntax. + (line 249) +* meta-flag: Readline Init File Syntax. + (line 187) +* OLDPWD: Bash Variables. (line 491) +* OPTARG: Bourne Shell Variables. + (line 34) +* OPTERR: Bash Variables. (line 494) +* OPTIND: Bourne Shell Variables. + (line 38) +* OSTYPE: Bash Variables. (line 498) +* output-meta: Readline Init File Syntax. + (line 254) +* page-completions: Readline Init File Syntax. + (line 260) +* PATH: Bourne Shell Variables. + (line 42) +* PIPESTATUS: Bash Variables. (line 501) +* POSIXLY_CORRECT: Bash Variables. (line 506) +* PPID: Bash Variables. (line 515) +* PROMPT_COMMAND: Bash Variables. (line 519) +* PROMPT_DIRTRIM: Bash Variables. (line 523) +* PS0: Bash Variables. (line 529) +* PS1: Bourne Shell Variables. + (line 48) +* PS2: Bourne Shell Variables. + (line 53) +* PS3: Bash Variables. (line 534) +* PS4: Bash Variables. (line 539) +* PWD: Bash Variables. (line 545) +* RANDOM: Bash Variables. (line 548) +* READLINE_LINE: Bash Variables. (line 553) +* READLINE_POINT: Bash Variables. (line 557) +* REPLY: Bash Variables. (line 561) +* revert-all-at-newline: Readline Init File Syntax. + (line 270) +* SECONDS: Bash Variables. (line 564) +* SHELL: Bash Variables. (line 570) +* SHELLOPTS: Bash Variables. (line 575) +* SHLVL: Bash Variables. (line 584) +* show-all-if-ambiguous: Readline Init File Syntax. + (line 276) +* show-all-if-unmodified: Readline Init File Syntax. + (line 282) +* show-mode-in-prompt: Readline Init File Syntax. + (line 291) +* skip-completed-text: Readline Init File Syntax. + (line 297) +* TEXTDOMAIN: Locale Translation. (line 11) +* TEXTDOMAINDIR: Locale Translation. (line 11) +* TIMEFORMAT: Bash Variables. (line 589) +* TMOUT: Bash Variables. (line 627) +* TMPDIR: Bash Variables. (line 639) +* UID: Bash Variables. (line 643) +* vi-cmd-mode-string: Readline Init File Syntax. + (line 310) +* vi-ins-mode-string: Readline Init File Syntax. + (line 320) +* visible-stats: Readline Init File Syntax. + (line 330) + + +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) +* alias-expand-line (): Miscellaneous Commands. + (line 124) +* backward-char (C-b): Commands For Moving. (line 15) +* backward-delete-char (Rubout): Commands For Text. (line 17) +* backward-kill-line (C-x Rubout): Commands For Killing. + (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) +* bracketed-paste-begin (): Commands For Text. (line 33) +* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) +* capitalize-word (M-c): Commands For Text. (line 61) +* character-search (C-]): Miscellaneous Commands. + (line 41) +* character-search-backward (M-C-]): Miscellaneous Commands. + (line 46) +* clear-screen (C-l): Commands For Moving. (line 34) +* complete (): Commands For Completion. + (line 6) +* complete-command (M-!): Commands For Completion. + (line 80) +* complete-filename (M-/): Commands For Completion. + (line 49) +* complete-hostname (M-@): Commands For Completion. + (line 72) +* complete-into-braces (M-{): Commands For Completion. + (line 100) +* complete-username (M-~): Commands For Completion. + (line 56) +* complete-variable (M-$): Commands For Completion. + (line 64) +* 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) +* dabbrev-expand (): Commands For Completion. + (line 95) +* delete-char (C-d): Commands For Text. (line 12) +* delete-char-or-list (): Commands For Completion. + (line 43) +* delete-horizontal-space (): Commands For Killing. + (line 46) +* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) +* display-shell-version (C-x C-v): Miscellaneous Commands. + (line 109) +* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. + (line 14) +* downcase-word (M-l): Commands For Text. (line 57) +* dump-functions (): Miscellaneous Commands. + (line 73) +* dump-macros (): Miscellaneous Commands. + (line 85) +* dump-variables (): Miscellaneous Commands. + (line 79) +* dynamic-complete-history (M-): Commands For Completion. + (line 90) +* edit-and-execute-command (C-xC-e): Miscellaneous Commands. + (line 138) +* end-kbd-macro (C-x )): Keyboard Macros. (line 9) +* end-of-file (usually C-d): Commands For Text. (line 6) +* end-of-history (M->): Commands For History. + (line 23) +* end-of-line (C-e): Commands For Moving. (line 9) +* exchange-point-and-mark (C-x C-x): Miscellaneous Commands. + (line 36) +* forward-backward-delete-char (): Commands For Text. (line 21) +* forward-char (C-f): Commands For Moving. (line 12) +* forward-search-history (C-s): Commands For History. + (line 31) +* forward-word (M-f): Commands For Moving. (line 18) +* glob-complete-word (M-g): Miscellaneous Commands. + (line 91) +* glob-expand-word (C-x *): Miscellaneous Commands. + (line 97) +* glob-list-expansions (C-x g): Miscellaneous Commands. + (line 103) +* history-and-alias-expand-line (): Miscellaneous Commands. + (line 127) +* history-expand-line (M-^): Miscellaneous Commands. + (line 117) +* history-search-backward (): Commands For History. + (line 53) +* history-search-forward (): Commands For History. + (line 47) +* history-substr-search-backward (): Commands For History. + (line 65) +* history-substr-search-forward (): Commands For History. + (line 59) +* insert-comment (M-#): Miscellaneous Commands. + (line 60) +* insert-completions (M-*): Commands For Completion. + (line 22) +* insert-last-argument (M-. or M-_): Miscellaneous Commands. + (line 130) +* 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) +* magic-space (): Miscellaneous Commands. + (line 120) +* menu-complete (): Commands For Completion. + (line 26) +* menu-complete-backward (): Commands For Completion. + (line 38) +* 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 35) +* operate-and-get-next (C-o): Miscellaneous Commands. + (line 133) +* overwrite-mode (): Commands For Text. (line 65) +* possible-command-completions (C-x !): Commands For Completion. + (line 86) +* possible-completions (M-?): Commands For Completion. + (line 15) +* possible-filename-completions (C-x /): Commands For Completion. + (line 52) +* possible-hostname-completions (C-x @): Commands For Completion. + (line 76) +* possible-username-completions (C-x ~): Commands For Completion. + (line 60) +* possible-variable-completions (C-x $): Commands For Completion. + (line 68) +* prefix-meta (): Miscellaneous Commands. + (line 18) +* previous-history (C-p): Commands For History. + (line 13) +* print-last-kbd-macro (): Keyboard Macros. (line 17) +* quoted-insert (C-q or C-v): Commands For Text. (line 26) +* re-read-init-file (C-x C-r): Miscellaneous Commands. + (line 6) +* redraw-current-line (): Commands For Moving. (line 38) +* 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 30) +* set-mark (C-@): Miscellaneous Commands. + (line 32) +* shell-backward-kill-word (): Commands For Killing. + (line 33) +* shell-backward-word (): Commands For Moving. (line 30) +* shell-expand-line (M-C-e): Miscellaneous Commands. + (line 112) +* shell-forward-word (): Commands For Moving. (line 26) +* shell-kill-word (): Commands For Killing. + (line 28) +* skip-csi-sequence (): Miscellaneous Commands. + (line 51) +* start-kbd-macro (C-x (): Keyboard Macros. (line 6) +* tilde-expand (M-&): Miscellaneous Commands. + (line 29) +* transpose-chars (C-t): Commands For Text. (line 42) +* transpose-words (M-t): Commands For Text. (line 48) +* undo (C-_ or C-x C-u): Miscellaneous Commands. + (line 22) +* 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 53) +* yank (C-y): Commands For Killing. + (line 68) +* yank-last-arg (M-. or M-_): Commands For History. + (line 80) +* yank-nth-arg (M-C-y): Commands For History. + (line 71) +* 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: Definitions. (line 26) +* exit status <1>: Exit Status. (line 6) +* 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 8) +* history expansion: History Interaction. (line 6) +* history list: Bash History Facilities. + (line 6) +* History, how to use: A Programmable Completion Example. + (line 114) +* 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: Invoking Bash. (line 128) +* interactive shell <1>: Interactive Shells. (line 6) +* internationalization: Locale Translation. (line 6) +* job: Definitions. (line 38) +* job control: Definitions. (line 42) +* job control <1>: Job Control Basics. (line 6) +* kill ring: Readline Killing Commands. + (line 18) +* killing text: Readline Killing Commands. + (line 6) +* localization: Locale Translation. (line 6) +* login shell: Invoking Bash. (line 125) +* 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: Controlling the Prompt. + (line 6) +* quoting: Quoting. (line 6) +* quoting, ANSI: ANSI-C Quoting. (line 6) +* Readline, how to use: Job Control Variables. + (line 23) +* 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: Definitions. (line 82) +* special builtin <1>: Special Builtins. (line 6) +* 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: Top897 +Node: Introduction2817 +Node: What is Bash?3033 +Node: What is a shell?4147 +Node: Definitions6685 +Node: Basic Shell Features9636 +Node: Shell Syntax10855 +Node: Shell Operation11881 +Node: Quoting13174 +Node: Escape Character14474 +Node: Single Quotes14959 +Node: Double Quotes15307 +Node: ANSI-C Quoting16585 +Node: Locale Translation17838 +Node: Comments18734 +Node: Shell Commands19352 +Node: Simple Commands20224 +Node: Pipelines20855 +Node: Lists23598 +Node: Compound Commands25327 +Node: Looping Constructs26330 +Node: Conditional Constructs28793 +Node: Command Grouping39715 +Node: Coprocesses41194 +Node: GNU Parallel43026 +Node: Shell Functions46999 +Node: Shell Parameters52205 +Node: Positional Parameters56618 +Node: Special Parameters57518 +Node: Shell Expansions60855 +Node: Brace Expansion62949 +Node: Tilde Expansion65730 +Node: Shell Parameter Expansion68078 +Node: Command Substitution82210 +Node: Arithmetic Expansion83565 +Node: Process Substitution84497 +Node: Word Splitting85617 +Node: Filename Expansion87561 +Node: Pattern Matching89845 +Node: Quote Removal93543 +Node: Redirections93838 +Node: Executing Commands103258 +Node: Simple Command Expansion103928 +Node: Command Search and Execution105858 +Node: Command Execution Environment108194 +Node: Environment111178 +Node: Exit Status112837 +Node: Signals114507 +Node: Shell Scripts116474 +Node: Shell Builtin Commands118989 +Node: Bourne Shell Builtins121023 +Node: Bash Builtins141623 +Node: Modifying Shell Behavior170268 +Node: The Set Builtin170613 +Node: The Shopt Builtin181026 +Node: Special Builtins196825 +Node: Shell Variables197804 +Node: Bourne Shell Variables198241 +Node: Bash Variables200272 +Node: Bash Features228652 +Node: Invoking Bash229551 +Node: Bash Startup Files235500 +Node: Interactive Shells240603 +Node: What is an Interactive Shell?241013 +Node: Is this Shell Interactive?241662 +Node: Interactive Shell Behavior242477 +Node: Bash Conditional Expressions245852 +Node: Shell Arithmetic250092 +Node: Aliases252909 +Node: Arrays255457 +Node: The Directory Stack260541 +Node: Directory Stack Builtins261325 +Node: Controlling the Prompt264293 +Node: The Restricted Shell267039 +Node: Bash POSIX Mode268864 +Node: Job Control279215 +Node: Job Control Basics279675 +Node: Job Control Builtins284394 +Node: Job Control Variables288924 +Node: Command Line Editing290080 +Node: Introduction and Notation291751 +Node: Readline Interaction293374 +Node: Readline Bare Essentials294565 +Node: Readline Movement Commands296348 +Node: Readline Killing Commands297308 +Node: Readline Arguments299226 +Node: Searching300270 +Node: Readline Init File302456 +Node: Readline Init File Syntax303603 +Node: Conditional Init Constructs323790 +Node: Sample Init File326315 +Node: Bindable Readline Commands329432 +Node: Commands For Moving330636 +Node: Commands For History331779 +Node: Commands For Text336068 +Node: Commands For Killing339457 +Node: Numeric Arguments341938 +Node: Commands For Completion343077 +Node: Keyboard Macros347268 +Node: Miscellaneous Commands347955 +Node: Readline vi Mode353759 +Node: Programmable Completion354666 +Node: Programmable Completion Builtins362127 +Node: A Programmable Completion Example372013 +Node: Using History Interactively377265 +Node: Bash History Facilities377949 +Node: Bash History Builtins380950 +Node: History Interaction384947 +Node: Event Designators387911 +Node: Word Designators389130 +Node: Modifiers390767 +Node: Installing Bash392169 +Node: Basic Installation393306 +Node: Compilers and Options395997 +Node: Compiling For Multiple Architectures396738 +Node: Installation Names398401 +Node: Specifying the System Type399219 +Node: Sharing Defaults399935 +Node: Operation Controls400608 +Node: Optional Features401566 +Node: Reporting Bugs411823 +Node: Major Differences From The Bourne Shell413017 +Node: GNU Free Documentation License429869 +Node: Indexes455046 +Node: Builtin Index455500 +Node: Reserved Word Index462327 +Node: Variable Index464775 +Node: Function Index480234 +Node: Concept Index493391 + +End Tag Table diff --git a/doc/bash.pdf b/doc/bash.pdf index fbc1fde7ac49b5a18dbaa8a5272fbf725b47e592..2f64c6f5bf965fd3325dc73e6b86fc67c0c2bb83 100644 GIT binary patch literal 363392 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

J3n0VAeziqkAA{ki71??^ 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 ^l2Fy#m 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 cIru!} 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 diff --git a/doc/bash.ps b/doc/bash.ps index 27ff580..35da9d0 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,13 +1,13 @@ %!PS-Adobe-3.0 -%%Creator: groff version 1.19.2 -%%CreationDate: Tue Feb 11 10:59:21 2014 +%%Creator: groff version 1.22.3 +%%CreationDate: Wed Aug 31 10:23:59 2016 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Courier %%+ font Symbol -%%DocumentSuppliedResources: procset grops 1.19 2 -%%Pages: 75 +%%DocumentSuppliedResources: procset grops 1.22 3 +%%Pages: 78 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -16,7 +16,7 @@ %%PageMedia: Default %%EndDefaults %%BeginProlog -%%BeginResource: procset grops 1.19 2 +%%BeginResource: procset grops 1.22 3 %!PS-Adobe-3.0 Resource-ProcSet /setpacking where{ pop @@ -74,6 +74,7 @@ exch pop add exch pop /level0 save def 1 setlinecap 1 setlinejoin +DEFS/BPhook known{DEFS begin BPhook end}if 72 RES div dup scale LS{ 90 rotate @@ -139,7 +140,10 @@ pop findfont dup maxlength 1 index/FontName known not{1 add}if dict begin { -1 index/FID ne{def}{pop pop}ifelse +1 index/FID ne +2 index/UniqueID ne +and +{def}{pop pop}ifelse }forall /Encoding exch def dup/FontName exch def @@ -177,8 +181,10 @@ newpath userdict begin /showpage{}def /setpagedevice{}def +mark }bind def /PEND{ +cleartomark countdictstack CNT sub{end}repeat level1 restore }bind def @@ -233,14 +239,15 @@ def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron %%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 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 +/Times-Bold@0 SF -.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-2016 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 @@ -250,526 +257,538 @@ Q/F2 10/Times-Bold@0 SF(bash)108 124.8 Q F0 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 +(OPTIONS)72 240 Q F0 .766(All of the single-character shell options doc\ +umented in the description of the)108 252 R F2(set)3.266 E F0 -.2(bu) +3.266 G .766(iltin command can be).2 F 1.284 +(used as options when the shell is in)108 264 R -.2(vo)-.4 G -.1(ke).2 G +3.785(d. In).1 F(addition,)3.785 E F2(bash)3.785 E F0 1.285 (interprets the follo)3.785 F 1.285(wing options when it is)-.25 F(in) 108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2108 292.8 Q F0 .881 -(If the)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 +(If the)158 292.8 R F23.381 E F0 .881(option is present, then com\ +mands are read from the \214rst non-option ar)3.381 F(gument)-.18 E F3 +(com-)3.38 E(mand_string)158 304.8 Q F0 5.743(.I).22 G 3.243(ft)-5.743 G +.743(here are ar)-3.243 F .743(guments after the)-.18 F F3 +(command_string)3.243 E F0 3.243(,t).22 G .744(he \214rst ar)-3.243 F +.744(gument is assigned)-.18 F(to)158 316.8 Q F2($0)2.919 E F0 .419 +(and an)2.919 F 2.919(yr)-.15 G .419(emaining ar)-2.919 F .418 +(guments are assigned to the positional parameters.)-.18 F .418 +(The assignment)5.418 F(to)158 328.8 Q F2($0)2.5 E F0 +(sets the name of the shell, which is used in w)2.5 E +(arning and error messages.)-.1 E F2108 340.8 Q F0(If the)158 +340.8 Q F22.5 E F0(option is present, the shell is)2.5 E F3(inter) +2.5 E(active)-.15 E F0(.).18 E F2108 352.8 Q F0(Mak)158 352.8 Q(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 F2108 364.8 Q F0(If the)158 364.8 Q 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 +E F2108 376.8 Q F0 .602(If the)158 376.8 R 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 +(guments remain after option processing, then commands)-.18 F .617 +(are read from the standard input.)158 388.8 R .617(This option allo) +5.617 F .616(ws the positional parameters to be set when)-.25 F(in)158 +400.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H(hell.) +.15 E F2108 412.8 Q F0 3.183(Al)158 412.8 S .683 +(ist of all double-quoted strings preceded by)-3.183 F F2($)3.184 E F0 +.684(is printed on the standard output.)3.184 F .684(These are)5.684 F .458(the strings that are subject to language translation when the curr\ -ent locale is not)158 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 +ent locale is not)158 424.8 R F2(C)2.958 E F0(or)2.958 E F2(POSIX)2.958 +E F0(.)A(This implies the)158 436.8 Q F22.5 E F0 (option; no commands will be e)2.5 E -.15(xe)-.15 G(cuted.).15 E F2 -([\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 +([\255+]O [)108 448.8 Q F3(shopt_option)A F2(])A F3(shopt_option)158 +460.8 Q F0 1.097(is one of the shell options accepted by the)3.596 F F2 +(shopt)3.597 E F0 -.2(bu)3.597 G 1.097(iltin \(see).2 F F4 1.097 +(SHELL B)3.597 F(UIL)-.09 E(TIN)-.828 E(COMMANDS)158 472.8 Q F0(belo) +3.003 E 3.253(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 +(alue of that option;)-.25 F F2(+O)3.252 E F0(unsets)3.252 E 2.624 +(it. If)158 484.8 R F3(shopt_option)2.624 E F0 .124 +(is not supplied, the names and v)2.624 F .125 +(alues of the shell options accepted by)-.25 F F2(shopt)2.625 E F0 .506 +(are printed on the standard output.)158 496.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 .505 (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 +(format that may be reused as input.)158 508.8 Q F2108 520.8 Q F0 +(A)158 520.8 Q F23.363 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 +3.363 F(An)5.864 E 3.364(ya)-.15 G -.18(rg)-3.364 G .864(uments after) +.18 F(the)158 532.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 +.25 E F22.5 E F0(.)A F2(Bash)108 549.6 Q F0 .304 +(also interprets a number of multi-character options.)2.804 F .303 (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) +(before the single-character options to be recognized.)108 561.6 Q F2 +108 578.4 Q(ugger)-.2 E F0 .474(Arrange for the deb)144 +590.4 R .474(ugger pro\214le to be e)-.2 F -.15(xe)-.15 G .475 +(cuted before the shell starts.).15 F -.45(Tu)5.475 G .475(rns on e).45 +F .475(xtended deb)-.15 F(ug-)-.2 E +(ging mode \(see the description of the)144 602.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 +.2 E(w\).)-.25 E F2(\255\255dump\255po\255strings)108 614.4 Q F0(Equi) +144 626.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.3)72 768 Q -(2014 February 2)141.79 E(1)195.95 E 0 Cg EP +(\255\255dump\255strings)108 638.4 Q F0(Equi)144 650.4 Q -.25(va)-.25 G +(lent to).25 E F22.5 E F0(.)A F2(\255\255help)108 662.4 Q F0 +(Display a usage message on standard output and e)144 662.4 Q +(xit successfully)-.15 E(.)-.65 E F2108 674.4 Q F3 +(\214le)2.5 E F2108 686.4 Q(c\214le)-.18 E F3(\214le)2.5 E F0 +(Ex)144 698.4 Q 1.599(ecute commands from)-.15 F F3(\214le)6.009 E F0 +1.598(instead of the standard personal initialization \214le)4.279 F F3 +(~/.bashr)3.598 E(c)-.37 E F0 1.598(if the)4.408 F(shell is interacti) +144 710.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E +(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(1)197.055 E 0 Cg EP %%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 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(\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 +2.517(yo)-.15 G 2.517(ft)-2.517 G .018 (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 +(o\214le)-.45 E F0(,).18 E F2(~/.bash_lo)2.698 E(gin)-.1 E F0 2.698(,o) +.24 G(r)-2.698 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 +2.697(da).1 G(s)-2.697 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 +-.25 E F1108 194.4 Q(c)-.18 E F0 1.228(Do not read and e)144 +194.4 R -.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 +G(s)-2.5 E F1(sh)2.5 E F0(.)A F1(\255\255posix)108 223.2 Q F0 1.783 (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 .333(match the standard \()144 -247.2 R F2 .333(posix mode)B F0 2.833(\). See)B F3 .333(SEE ALSO)2.833 F -F0(belo)2.583 E 2.833(wf)-.25 G .332 +(fers from the POSIX standard to)-.25 F .332(match the standard \()144 +247.2 R F2 .332(posix mode)B F0 2.832(\). See)B F3 .333(SEE ALSO)2.833 F +F0(belo)2.583 E 2.833(wf)-.25 G .333 (or a reference to a document that details)-2.833 F(ho)144 259.2 Q 2.5 (wp)-.25 G(osix mode af)-2.5 E(fects bash')-.25 E 2.5(sb)-.55 G(eha)-2.5 E(vior)-.2 E(.)-.55 E F1108 276 Q(estricted)-.18 E F0 (The shell becomes restricted \(see)144 288 Q F3(RESTRICTED SHELL)2.5 E F0(belo)2.25 E(w\).)-.25 E F1108 304.8 Q(erbose)-.1 E F0(Equi) -144 316.8 Q -.25(va)-.25 G(lent to).25 E F15 E F0(.)A F1 +144 316.8 Q -.25(va)-.25 G(lent to).25 E F12.5 E F0(.)A F1 108 333.6 Q(ersion)-.1 E F0(Sho)144 345.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 362.4 Q F0 .016(If ar)108 374.4 R +10.95/Times-Bold@0 SF(ARGUMENTS)72 362.4 Q F0 .017(If ar)108 374.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 386.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 .041(his f)-2.541 F(ashion,)-.1 E +.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 398.4 Q F0 .936(is set to the name of the \214le, and the pos\ -itional parameters are set to the remaining ar)3.435 F(guments.)-.18 E -F1(Bash)5.936 E F0 .234(reads and e)108 410.4 R -.15(xe)-.15 G .234 +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 410.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 .233 -(xit status of the last com-)-.15 F .348(mand e)108 422.4 R -.15(xe)-.15 -G .348(cuted in the script.).15 F .348(If no commands are e)5.348 F -.15 -(xe)-.15 G .348(cuted, the e).15 F .349(xit status is 0.)-.15 F .349 -(An attempt is \214rst made to)5.349 F .254 -(open the \214le in the current directory)108 434.4 R 2.754(,a)-.65 G -.253 +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 422.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 434.4 R 2.753(,a)-.65 G +.254 (nd, if no \214le is found, then the shell searches the directories in) --2.754 F F3 -.666(PA)2.753 G(TH)-.189 E F0(for the script.)108 446.4 Q +-2.753 F F3 -.666(PA)2.754 G(TH)-.189 E F0(for the script.)108 446.4 Q F4(INV)72 463.2 Q(OCA)-.493 E(TION)-1.04 E F0(A)108 475.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 492 Q F2(inter)2.814 E(active)-.15 E F0 .314 -(shell is one started without non-option ar)2.814 F .315 -(guments and without the)-.18 F F12.815 E F0 .315 -(option whose standard)2.815 F 1.5 -(input and error are both connected to terminals \(as determined by)108 -504 R F2(isatty)4 E F0 1.5(\(3\)\), or one started with the).32 F F1 -4 E F0(option.)108 516 Q F3(PS1)5.289 E F0 .289(is set and)2.539 F -F1<24ad>2.789 E F0(includes)2.789 E F1(i)2.789 E F0(if)2.789 E F1(bash) -2.789 E F0 .289(is interacti)2.789 F -.15(ve)-.25 G 2.789(,a).15 G(llo) --2.789 E .29(wing a shell script or a startup \214le to test this)-.25 F -(state.)108 528 Q .033(The follo)108 544.8 R .033 -(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 .032 -(xist b)-.15 F .032(ut cannot be)-.2 F(read,)108 556.8 Q F1(bash)2.599 E -F0 .099(reports an error)2.599 F 5.099(.T)-.55 G .099(ildes are e)-5.449 -F .099(xpanded in \214lenames as described belo)-.15 F 2.6(wu)-.25 G -(nder)-2.6 E F1 -.18(Ti)2.6 G .1(lde Expansion).18 F F0(in)2.6 E(the)108 -568.8 Q F3(EXP)2.5 E(ANSION)-.666 E F0(section.)2.25 E(When)108 585.6 Q -F1(bash)2.896 E F0 .396(is in)2.896 F -.2(vo)-.4 G -.1(ke).2 G 2.896(da) -.1 G 2.896(sa)-2.896 G 2.896(ni)-2.896 G(nteracti)-2.896 E .696 -.15 -(ve l)-.25 H .396(ogin shell, or as a non-interacti).15 F .695 -.15 -(ve s)-.25 H .395(hell with the).15 F F1(\255\255login)2.895 E F0 .395 -(option, it)2.895 F 1.333(\214rst reads and e)108 597.6 R -.15(xe)-.15 G -1.333(cutes commands from the \214le).15 F F2(/etc/pr)3.833 E(o\214le) --.45 E F0 3.834(,i)C 3.834(ft)-3.834 G 1.334(hat \214le e)-3.834 F 3.834 -(xists. After)-.15 F 1.334(reading that \214le, it)3.834 F .249 -(looks for)108 609.6 R F2(~/.bash_pr)2.749 E(o\214le)-.45 E F0(,)A F2 -(~/.bash_lo)2.749 E(gin)-.1 E F0 2.749(,a)C(nd)-2.749 E F2(~/.pr)2.749 E -(o\214le)-.45 E F0 2.749(,i)C 2.749(nt)-2.749 G .249(hat order)-2.749 F -2.748(,a)-.4 G .248(nd reads and e)-2.748 F -.15(xe)-.15 G .248 -(cutes commands from).15 F .796(the \214rst one that e)108 621.6 R .796 +108 492 Q F2(inter)2.734 E(active)-.15 E F0 .234 +(shell is one started without non-option ar)2.734 F .234 +(guments \(unless)-.18 F F12.734 E F0 .233 +(is speci\214ed\) and without the)2.734 F F12.733 E F0 .509(optio\ +n whose standard input and error are both connected to terminals \(as d\ +etermined by)108 504 R F2(isatty)3.01 E F0 .51(\(3\)\), or one).32 F +.946(started with the)108 516 R F13.445 E F0(option.)3.445 E F3 +(PS1)5.945 E F0 .945(is set and)3.195 F F1<24ad>3.445 E F0(includes) +3.445 E F1(i)3.445 E F0(if)3.445 E F1(bash)3.445 E F0 .945(is interacti) +3.445 F -.15(ve)-.25 G 3.445(,a).15 G(llo)-3.445 E .945 +(wing a shell script or a)-.25 F(startup \214le to test this state.)108 +528 Q .032(The follo)108 544.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 556.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 568.8 Q F3(EXP)2.5 E(ANSION)-.666 E F0(section.)2.25 E(When)108 +585.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 597.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 609.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 621.6 R .797 (xists and is readable.)-.15 F(The)5.796 E F1(\255\255nopr)3.296 E -(o\214le)-.18 E F0 .797(option may be used when the shell is started to) -3.296 F(inhibit this beha)108 633.6 Q(vior)-.2 E(.)-.55 E -(When a login shell e)108 650.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.698(When an interacti)108 667.2 R 1.998 -.15(ve s)-.25 -H 1.698(hell that is not a login shell is started,).15 F F1(bash)4.197 E -F0 1.697(reads and e)4.197 F -.15(xe)-.15 G 1.697(cutes commands from) -.15 F F2(~/.bashr)108 679.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G -.035(hat \214le e)-2.535 F 2.535(xists. This)-.15 F .036 +(o\214le)-.18 E F0 .796(option may be used when the shell is started to) +3.296 F(inhibit this beha)108 633.6 Q(vior)-.2 E(.)-.55 E 1.104 +(When an interacti)108 650.4 R 1.404 -.15(ve l)-.25 H 1.104 +(ogin shell e).15 F 1.104(xits, or a non-interacti)-.15 F 1.404 -.15 +(ve l)-.25 H 1.104(ogin shell e).15 F -.15(xe)-.15 G 1.104(cutes the).15 +F F1(exit)3.604 E F0 -.2(bu)3.604 G 1.104(iltin command,).2 F F1(bash) +108 662.4 Q 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.698 +(When an interacti)108 679.2 R 1.998 -.15(ve s)-.25 H 1.698 +(hell that is not a login shell is started,).15 F F1(bash)4.197 E F0 +1.697(reads and e)4.197 F -.15(xe)-.15 G 1.697(cutes commands from).15 F +F2(~/.bashr)108 691.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035 +(hat \214le e)-2.535 F 2.535(xists. This)-.15 F .036 (may be inhibited by using the)2.535 F F12.536 E(c)-.18 E F0 2.536(option. The)2.536 F F12.536 E(c\214le)-.18 E F2(\214le) -2.536 E F0 .036(option will)2.536 F(force)108 691.2 Q F1(bash)2.5 E F0 +2.536 E F0 .036(option will)2.536 F(force)108 703.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 708 +2.5 E F0(instead of)2.5 E F2(~/.bashr)2.5 E(c)-.37 E F0(.)A(When)108 720 Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15(ve)-.25 G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806 (un a shell script, for e)-5.306 F 2.805(xample, it looks for the v)-.15 -F(ariable)-.25 E F3 -.27(BA)108 720 S(SH_ENV).27 E F0 1.01(in the en) -3.26 F 1.01(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.011(xpanded v)-.15 F -1.011(alue as the)-.25 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E -(2)195.95 E 0 Cg EP +F(ariable)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(2) +197.055 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(name of a \214le to read and e)108 84 Q -.15(xe)-.15 G(cute.).15 -E/F1 10/Times-Bold@0 SF(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/F2 10/Courier@0 SF -(if [ \255n "$BASH_ENV" ]; then . "$BASH_ENV"; fi)144 102 Q F0 -.2(bu) -108 120 S 2.5(tt).2 G(he v)-2.5 E(alue of the)-.25 E/F3 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 136.8 Q -F1(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 F1(sh)3.417 E F0 3.417(,i)C 3.417(tt) +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 +SF -.27(BA)108 84 S(SH_ENV).27 E F0 1.01(in the en)3.26 F 1.01 +(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.011(xpanded v)-.15 F +1.011(alue as the)-.25 F(name of a \214le to read and e)108 96 Q -.15 +(xe)-.15 G(cute.).15 E/F2 10/Times-Bold@0 SF(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/F3 10/Courier@0 +SF(if [ \255n "$BASH_ENV" ]; then . "$BASH_ENV"; fi)144 114 Q F0 -.2(bu) +108 132 S 2.5(tt).2 G(he v)-2.5 E(alue of the)-.25 E F1 -.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 148.8 Q +F2(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 F2(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 F1(sh)3.417 E F0(as) +(vior of historical v)-.2 F .917(ersions of)-.15 F F2(sh)3.417 E F0(as) 3.417 E .145 (closely as possible, while conforming to the POSIX standard as well.) -108 148.8 R .145(When in)5.145 F -.2(vo)-.4 G -.1(ke).2 G 2.645(da).1 G +108 160.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.264(shell, or a non-interacti)108 160.8 R 1.564 -.15 -(ve s)-.25 H 1.264(hell with the).15 F F1(\255\255login)3.764 E F0 1.264 +-.25 H(ogin).15 E 1.264(shell, or a non-interacti)108 172.8 R 1.564 -.15 +(ve s)-.25 H 1.264(hell with the).15 F F2(\255\255login)3.764 E F0 1.264 (option, it \214rst attempts to read and e)3.764 F -.15(xe)-.15 G 1.263 -(cute commands).15 F(from)108 172.8 Q/F4 10/Times-Italic@0 SF(/etc/pr) +(cute commands).15 F(from)108 184.8 Q/F4 10/Times-Italic@0 SF(/etc/pr) 4.142 E(o\214le)-.45 E F0(and)3.172 E F4(~/.pr)2.992 E(o\214le)-.45 E F0 2.992(,i).18 G 2.992(nt)-2.992 G .492(hat order)-2.992 F 5.492(.T)-.55 G -(he)-5.492 E F1(\255\255nopr)2.992 E(o\214le)-.18 E F0 .493 +(he)-5.492 E F2(\255\255nopr)2.992 E(o\214le)-.18 E F0 .493 (option may be used to inhibit this beha)2.993 F(vior)-.2 E(.)-.55 E -.418(When in)108 184.8 R -.2(vo)-.4 G -.1(ke).2 G 2.918(da).1 G 2.918 +.418(When in)108 196.8 R -.2(vo)-.4 G -.1(ke).2 G 2.918(da).1 G 2.918 (sa)-2.918 G 2.918(ni)-2.918 G(nteracti)-2.918 E .718 -.15(ve s)-.25 H -.418(hell with the name).15 F F1(sh)2.918 E F0(,)A F1(bash)2.918 E F0 -.418(looks for the v)2.918 F(ariable)-.25 E F3(ENV)2.918 E/F5 9 +.418(hell with the name).15 F F2(sh)2.918 E F0(,)A F2(bash)2.918 E F0 +.418(looks for the v)2.918 F(ariable)-.25 E F1(ENV)2.918 E/F5 9 /Times-Roman@0 SF(,)A F0 -.15(ex)2.667 G .417(pands its v).15 F(alue) --.25 E .171(if it is de\214ned, and uses the e)108 196.8 R .171 +-.25 E .171(if it is de\214ned, and uses the e)108 208.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.671(as)2.671 G .171(hell in) --2.671 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E(as)108 208.8 Q F1(sh)3.081 E F0 +-2.671 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E(as)108 220.8 Q F2(sh)3.081 E F0 .581(does not attempt to read and e)3.081 F -.15(xe)-.15 G .581 (cute commands from an).15 F 3.08(yo)-.15 G .58 -(ther startup \214les, the)-3.08 F F13.08 E(c\214le)-.18 E F0 -.58(option has)3.08 F .182(no ef)108 220.8 R 2.682(fect. A)-.25 F +(ther startup \214les, the)-3.08 F F23.08 E(c\214le)-.18 E F0 +.58(option has)3.08 F .182(no ef)108 232.8 R 2.682(fect. A)-.25 F (non-interacti)2.682 E .482 -.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 F1(sh)2.682 E +-.4 G -.1(ke).2 G 2.682(dw).1 G .182(ith the name)-2.682 F F2(sh)2.682 E F0 .182(does not attempt to read an)2.682 F 2.683(yo)-.15 G .183 -(ther startup \214les.)-2.683 F(When in)108 232.8 Q -.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(bash)2.5 E F0(enters)2.5 +(ther startup \214les.)-2.683 F(When in)108 244.8 Q -.2(vo)-.4 G -.1(ke) +.2 G 2.5(da).1 G(s)-2.5 E F2(sh)2.5 E F0(,)A F2(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 249.6 Q F1(bash)2.727 E F0 .226(is started in)2.727 F F4 -(posix)3.976 E F0 .226(mode, as with the)3.256 F F1(\255\255posix)2.726 +(When)108 261.6 Q F2(bash)2.727 E F0 .226(is started in)2.727 F F4 +(posix)3.976 E F0 .226(mode, as with the)3.256 F F2(\255\255posix)2.726 E F0 .226(command line option, it follo)2.726 F .226(ws the POSIX stan-) --.25 F .341(dard for startup \214les.)108 261.6 R .341 +-.25 F .341(dard for startup \214les.)108 273.6 R .341 (In this mode, interacti)5.341 F .641 -.15(ve s)-.25 H .341(hells e).15 -F .341(xpand the)-.15 F F3(ENV)2.841 E F0 -.25(va)2.591 G .342 -(riable and commands are read and).25 F -.15(exe)108 273.6 S +F .341(xpand the)-.15 F F1(ENV)2.841 E F0 -.25(va)2.591 G .342 +(riable and commands are read and).25 F -.15(exe)108 285.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 F1(Bash)108 290.4 +(alue. No)-.25 F(other startup \214les are read.)2.5 E F2(Bash)108 302.4 Q F0 .224(attempts to determine when it is being run with its standard \ input connected to a netw)2.724 F .223(ork connection,)-.1 F .025 -(as when e)108 302.4 R -.15(xe)-.15 G .025 +(as when e)108 314.4 R -.15(xe)-.15 G .025 (cuted by the remote shell daemon, usually).15 F F4 -.1(rs)2.525 G(hd).1 E F0 2.525(,o)C 2.525(rt)-2.525 G .025(he secure shell daemon)-2.525 F -F4(sshd)2.525 E F0 5.025(.I)C(f)-5.025 E F1(bash)2.525 E F0(deter)2.525 -E(-)-.2 E .134(mines it is being run in this f)108 314.4 R .134 +F4(sshd)2.525 E F0 5.025(.I)C(f)-5.025 E F2(bash)2.525 E F0(deter)2.525 +E(-)-.2 E .134(mines it is being run in this f)108 326.4 R .134 (ashion, it reads and e)-.1 F -.15(xe)-.15 G .133(cutes commands from) .15 F F4(~/.bashr)2.633 E(c)-.37 E F0 2.633(,i)C 2.633(ft)-2.633 G .133 (hat \214le e)-2.633 F .133(xists and is)-.15 F 2.869(readable. It)108 -326.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 F1(sh)2.869 E F0 5.369(.T)C(he)-5.369 E F1 +338.4 R .369(will not do this if in)2.869 F -.2(vo)-.4 G -.1(ke).2 G +2.869(da).1 G(s)-2.869 E F2(sh)2.869 E F0 5.369(.T)C(he)-5.369 E F2 2.869 E(c)-.18 E F0 .369 (option may be used to inhibit this beha)2.869 F(vior)-.2 E 2.869(,a)-.4 -G(nd)-2.869 E(the)108 338.4 Q F12.919 E(c\214le)-.18 E F0 .419 +G(nd)-2.869 E(the)108 350.4 Q F22.919 E(c\214le)-.18 E F0 .419 (option may be used to force another \214le to be read, b)2.919 F .419 (ut neither)-.2 F F4 -.1(rs)2.919 G(hd).1 E F0(nor)2.919 E F4(sshd)2.919 E F0 .418(generally in)2.919 F -.2(vo)-.4 G -.1(ke).2 G -(the shell with those options or allo)108 350.4 Q 2.5(wt)-.25 G +(the shell with those options or allo)108 362.4 Q 2.5(wt)-.25 G (hem to be speci\214ed.)-2.5 E 1.207 -(If the shell is started with the ef)108 367.2 R(fecti)-.25 E 1.507 -.15 +(If the shell is started with the ef)108 379.2 R(fecti)-.25 E 1.507 -.15 (ve u)-.25 H 1.208 (ser \(group\) id not equal to the real user \(group\) id, and the).15 F -F13.708 E F0 .536(option is not supplied, no startup \214les are \ -read, shell functions are not inherited from the en)108 379.2 R .535 -(vironment, the)-.4 F F3(SHELLOPTS)108 391.2 Q F5(,)A F3 -.27(BA)2.959 G -(SHOPTS).27 E F5(,)A F3(CDP)2.959 E -.855(AT)-.666 G(H).855 E F5(,)A F0 -(and)2.959 E F3(GLOBIGNORE)3.209 E F0 -.25(va)2.959 G .709 +F23.708 E F0 .536(option is not supplied, no startup \214les are \ +read, shell functions are not inherited from the en)108 391.2 R .535 +(vironment, the)-.4 F F1(SHELLOPTS)108 403.2 Q F5(,)A F1 -.27(BA)2.959 G +(SHOPTS).27 E F5(,)A F1(CDP)2.959 E -.855(AT)-.666 G(H).855 E F5(,)A F0 +(and)2.959 E F1(GLOBIGNORE)3.209 E F0 -.25(va)2.959 G .709 (riables, if the).25 F 3.209(ya)-.15 G .71(ppear in the en)-3.209 F .71 -(vironment, are)-.4 F .905(ignored, and the ef)108 403.2 R(fecti)-.25 E +(vironment, are)-.4 F .905(ignored, and the ef)108 415.2 R(fecti)-.25 E 1.205 -.15(ve u)-.25 H .904(ser id is set to the real user id.).15 F -.904(If the)5.904 F F13.404 E F0 .904(option is supplied at in) -3.404 F -.2(vo)-.4 G .904(cation, the).2 F(startup beha)108 415.2 Q +.904(If the)5.904 F F23.404 E F0 .904(option is supplied at in) +3.404 F -.2(vo)-.4 G .904(cation, the).2 F(startup beha)108 427.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 432 Q F0(The follo)108 444 Q +72 444 Q F0(The follo)108 456 Q (wing de\214nitions are used throughout the rest of this document.)-.25 -E F1(blank)108 456 Q F0 2.5(As)11.54 G(pace or tab)-2.5 E(.)-.4 E F1 -.1 -(wo)108 468 S(rd).1 E F0 2.5(As)13.88 G +E F2(blank)108 468 Q F0 2.5(As)144 468 S(pace or tab)-2.5 E(.)-.4 E F2 +-.1(wo)108 480 S(rd).1 E F0 2.5(As)144 480 S (equence of characters considered as a single unit by the shell.)-2.5 E -(Also kno)5 E(wn as a)-.25 E F1(tok)2.5 E(en)-.1 E F0(.)A F1(name)108 -480 Q F0(A)12.67 E F4(wor)3.005 E(d)-.37 E F0 .165 +(Also kno)5 E(wn as a)-.25 E F2(tok)2.5 E(en)-.1 E F0(.)A F2(name)108 +492 Q F0(A)144 492 Q F4(wor)3.005 E(d)-.37 E F0 .165 (consisting only of alphanumeric characters and underscores, and be) 3.435 F .166(ginning with an alpha-)-.15 F -(betic character or an underscore.)144 492 Q(Also referred to as an)5 E -F1(identi\214er)2.5 E F0(.)A F1(metacharacter)108 504 Q F0 2.5(Ac)144 -516 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 F1 5(|&;\(\)<>s)144 528 S 2.5 -(pace tab)-5 F(contr)108 540 Q(ol operator)-.18 E F0(A)144 552 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 F1 2.5 -(|| & && ; ;; \( \) | |&)144 564 R()10 E F6(RESER)72 580.8 Q -(VED W)-.602 E(ORDS)-.11 E F4 .307(Reserved wor)108 592.8 R(ds)-.37 E F0 -.307(are w)2.807 F .307(ords that ha)-.1 F .607 -.15(ve a s)-.2 H .306 -(pecial meaning to the shell.).15 F .306(The follo)5.306 F .306(wing w) --.25 F .306(ords are recognized as)-.1 F(reserv)108 604.8 Q .227 -(ed when unquoted and either the \214rst w)-.15 F .227 -(ord of a simple command \(see)-.1 F F3 .227(SHELL GRAMMAR)2.727 F F0 -(belo)2.477 E .227(w\) or)-.25 F(the third w)108 616.8 Q(ord of a)-.1 E -F1(case)2.5 E F0(or)2.5 E F1 -.25(fo)2.5 G(r).25 E F0(command:)2.5 E F1 -11.295(!c)144 633.6 S 8.795(ase copr)-11.295 F 8.795 +(betic character or an underscore.)144 504 Q(Also referred to as an)5 E +F2(identi\214er)2.5 E F0(.)A F2(metacharacter)108 516 Q F0 2.5(Ac)144 +528 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 F2 5(|&;\(\)<>s)144 540 S 2.5 +(pace tab newline)-5 F(contr)108 552 Q(ol operator)-.18 E F0(A)144 564 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 F2 2.5 +(|| & && ; ;; ;& ;;& \( \) | |&)144 576 R()10 E F6(RESER)72 +592.8 Q(VED W)-.602 E(ORDS)-.11 E F4 .307(Reserved wor)108 604.8 R(ds) +-.37 E F0 .307(are w)2.807 F .307(ords that ha)-.1 F .607 -.15(ve a s) +-.2 H .306(pecial meaning to the shell.).15 F .306(The follo)5.306 F +.306(wing w)-.25 F .306(ords are recognized as)-.1 F(reserv)108 616.8 Q +.227(ed when unquoted and either the \214rst w)-.15 F .227 +(ord of a simple command \(see)-.1 F F1 .227(SHELL GRAMMAR)2.727 F F0 +(belo)2.477 E .227(w\) or)-.25 F(the third w)108 628.8 Q(ord of a)-.1 E +F2(case)2.5 E F0(or)2.5 E F2 -.25(fo)2.5 G(r).25 E F0(command:)2.5 E F2 +11.295(!c)144 645.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 -645.6 R F6(SHELL GRAMMAR)72 662.4 Q F1(Simple Commands)87 674.4 Q F0(A) -108 686.4 Q F4 .388(simple command)2.888 F F0 .388 +657.6 R F6(SHELL GRAMMAR)72 674.4 Q F2(Simple Commands)87 686.4 Q F0(A) +108 698.4 Q F4 .388(simple command)2.888 F F0 .388 (is a sequence of optional v)2.888 F .389(ariable assignments follo)-.25 -F .389(wed by)-.25 F F1(blank)2.889 E F0 .389(-separated w)B .389 -(ords and)-.1 F .816(redirections, and terminated by a)108 698.4 R F4 +F .389(wed by)-.25 F F2(blank)2.889 E F0 .389(-separated w)B .389 +(ords and)-.1 F .816(redirections, and terminated by a)108 710.4 R F4 (contr)3.316 E .815(ol oper)-.45 F(ator)-.15 E F0 5.815(.T)C .815 (he \214rst w)-5.815 F .815(ord speci\214es the command to be e)-.1 F --.15(xe)-.15 G(cuted,).15 E(and is passed as ar)108 710.4 Q +-.15(xe)-.15 G(cuted,).15 E(and is passed as ar)108 722.4 Q (gument zero.)-.18 E(The remaining w)5 E(ords are passed as ar)-.1 E (guments to the in)-.18 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dc).1 G(ommand.) --2.5 E .175(The return v)108 727.2 R .175(alue of a)-.25 F F4 .175 -(simple command)2.675 F F0 .175(is its e)2.675 F .175 -(xit status, or 128+)-.15 F F4(n)A F0 .176 -(if the command is terminated by signal)3.508 F F4(n)2.676 E F0(.).24 E -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(3)195.95 E 0 Cg EP +-2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(3)197.055 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 .243 -(The standard output of)108 141.6 R F2(command)2.943 E F0 .244 -(is connected via a pipe to the standard input of)3.513 F F2(command2) -2.744 E F0 5.244(.T).02 G .244(his connec-)-5.244 F .643 -(tion is performed before an)108 153.6 R 3.143(yr)-.15 G .642 -(edirections speci\214ed by the command \(see)-3.143 F/F4 9/Times-Bold@0 -SF(REDIRECTION)3.142 E F0(belo)2.892 E 3.142(w\). If)-.25 F F1(|&)3.142 -E F0(is)3.142 E(used,)108 165.6 Q F2(command)3.647 E F0 2.247 -.55('s s) +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The return v)108 +84 Q(alue of a)-.25 E/F1 10/Times-Italic@0 SF(simple command)2.5 E F0 +(is its e)2.5 E(xit status, or 128+)-.15 E F1(n)A F0 +(if the command is terminated by signal)3.333 E F1(n)2.5 E F0(.).24 E/F2 +10/Times-Bold@0 SF(Pipelines)87 100.8 Q F0(A)108 112.8 Q F1(pipeline) +2.996 E F0 .496(is a sequence of one or more commands separated by one \ +of the control operators)2.996 F F2(|)2.996 E F0(or)2.996 E F2(|&)2.996 +E F0 5.496(.T)C(he)-5.496 E(format for a pipeline is:)108 124.8 Q([)144 +141.6 Q F2(time)A F0([)2.5 E F2A F0(]] [ ! ])A F1(command)2.5 E F0 +2.5([[)2.5 G F2(|)-2.5 E/F3 10/Symbol SFA F2(|&)A F0(])A F1 +(command2)2.5 E F0(... ])2.5 E .244(The standard output of)108 158.4 R +F1(command)2.944 E F0 .243 +(is connected via a pipe to the standard input of)3.514 F F1(command2) +2.743 E F0 5.243(.T).02 G .243(his connec-)-5.243 F .642 +(tion is performed before an)108 170.4 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 F2(|&)3.143 +E F0(is)3.143 E(used,)108 182.4 Q F1(command)3.648 E F0 2.248 -.55('s s) D 1.147(tandard error).55 F 3.647(,i)-.4 G 3.647(na)-3.647 G 1.147 -(ddition to its standard output, is connected to)-3.647 F F2(command2) -3.648 E F0 2.248 -.55('s s)D(tandard).55 E .028 -(input through the pipe; it is shorthand for)108 177.6 R F1 .028(2>&1 |) +(ddition to its standard output, is connected to)-3.647 F F1(command2) +3.647 E F0 2.247 -.55('s s)D(tandard).55 E .028 +(input through the pipe; it is shorthand for)108 194.4 R F2 .028(2>&1 |) 2.528 F F0 5.028(.T)C .028 (his implicit redirection of the standard error to the stan-)-5.028 F -(dard output is performed after an)108 189.6 Q 2.5(yr)-.15 G +(dard output is performed after an)108 206.4 Q 2.5(yr)-.15 G (edirections speci\214ed by the command.)-2.5 E .48 -(The return status of a pipeline is the e)108 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.687 E F0 .187 -(is enabled, the pipeline')2.687 F 2.687(sr)-.55 G .186 -(eturn status is the v)-2.687 F .186 -(alue of the last \(rightmost\) command to e)-.25 F .186(xit with a)-.15 -F .61(non-zero status, or zero if all commands e)108 230.4 R .611 -(xit successfully)-.15 F 5.611(.I)-.65 G 3.111(ft)-5.611 G .611 -(he reserv)-3.111 F .611(ed w)-.15 F(ord)-.1 E F1(!)3.111 E F0 .611 -(precedes a pipeline, the)5.611 F -.15(ex)108 242.4 S .55 +(The return status of a pipeline is the e)108 223.2 R .48 +(xit status of the last command, unless the)-.15 F F2(pipefail)2.98 E F0 +.48(option is enabled.)2.98 F(If)108 235.2 Q F2(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 247.2 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 F2(!)3.11 E F0 .61 +(precedes a pipeline, the)5.61 F -.15(ex)108 259.2 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 .298(If the)108 271.2 R F1(time)2.799 E F0(reserv) +271.2 Q(alue.)-.25 E .299(If the)108 288 R F2(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 -.14(cution are reported when the pipeline terminates.).15 F(The)5.139 E -F12.639 E F0 .139(option changes the output format to that spec-) -2.639 F .302(i\214ed by POSIX.)108 295.2 R .303(When the shell is in) -5.302 F F2 .303(posix mode)2.803 F F0 2.803(,i)C 2.803(td)-2.803 G .303 -(oes not recognize)-2.803 F F1(time)2.803 E F0 .303(as a reserv)2.803 F -.303(ed w)-.15 F .303(ord if the ne)-.1 F(xt)-.15 E(tok)108 307.2 Q .736 +ell as user and system time consumed by its)-.1 F -.15(exe)108 300 S +.139(cution are reported when the pipeline terminates.).15 F(The)5.139 E +F22.639 E F0 .14(option changes the output format to that spec-) +2.639 F .303(i\214ed by POSIX.)108 312 R .303(When the shell is in)5.303 +F F1 .303(posix mode)2.803 F F0 2.803(,i)C 2.803(td)-2.803 G .303 +(oes not recognize)-2.803 F F2(time)2.803 E F0 .303(as a reserv)2.803 F +.303(ed w)-.15 F .302(ord if the ne)-.1 F(xt)-.15 E(tok)108 324 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.235 -(wt)-.25 G(he)-3.235 E 2.225 -(timing information should be displayed; see the description of)108 -319.2 R F4(TIMEFORMA)4.726 E(T)-.855 E F0(under)4.476 E F1 2.226 -(Shell V)4.726 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.073 +(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 336 +R F4(TIMEFORMA)4.725 E(T)-.855 E F0(under)4.475 E F2 2.225(Shell V)4.725 +F(ariables)-.92 E F0(belo)108 348 Q -.65(w.)-.25 G .85 +(When the shell is in)108 364.8 R F1 .85(posix mode)3.35 F F0(,)A F2 +(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.074 E F4(TIMEFORMA)3.574 E(T)-.855 E F0 -.25(va)3.324 G -1.074(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.85 E F0 .35(is a sequence of one or \ -more pipelines separated by one of the operators)2.85 F F1(;)2.849 E F0 -(,)A F1(&)2.849 E F0(,)A F1(&&)2.849 E F0 2.849(,o)C(r)-2.849 E F1(||) -2.849 E F0 2.849(,a)C .349(nd option-)-2.849 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 .96 -(Of these list operators,)108 446.4 R F1(&&)3.46 E F0(and)3.46 E F1(||) -3.46 E F0(ha)3.46 E 1.26 -.15(ve e)-.2 H .961(qual precedence, follo).15 -F .961(wed by)-.25 F F1(;)3.461 E F0(and)3.461 E F1(&)3.461 E F0 3.461 -(,w)C .961(hich ha)-3.461 F 1.261 -.15(ve e)-.2 H .961(qual prece-).15 F -(dence.)108 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.528 E(kgr)-.2 E(ound)-.45 E F0 -(in)2.528 E 2.875(as)108 504 S 2.875(ubshell. The)-2.875 F .375 -(shell does not w)2.875 F .375 -(ait for the command to \214nish, and the return status is 0.)-.1 F .376 -(Commands sepa-)5.376 F .849(rated by a)108 516 R F1(;)3.349 E F0 .849 -(are e)3.349 F -.15(xe)-.15 G .848(cuted sequentially; the shell w).15 F -.848(aits for each command to terminate in turn.)-.1 F .848(The return) -5.848 F(status is the e)108 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.437 E F0(and) -3.437 E F1(||)3.437 E F0 .937(control operators,)3.437 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 .729(is e)3.249 F -.15(xe)-.15 G .729(cuted if and only if).15 F F2 +376.8 R(The)6.073 E F4(TIMEFORMA)3.573 E(T)-.855 E F0 -.25(va)3.323 G +1.073(riable may be).25 F +(used to specify the format of the time information.)108 388.8 Q +(Each command in a pipeline is e)108 405.6 Q -.15(xe)-.15 G +(cuted as a separate process \(i.e., in a subshell\).).15 E F2(Lists)87 +422.4 Q F0(A)108 434.4 Q F1(list)2.849 E F0 .349(is a sequence of one o\ +r more pipelines separated by one of the operators)2.849 F F2(;)2.85 E +F0(,)A F2(&)2.85 E F0(,)A F2(&&)2.85 E F0 2.85(,o)C(r)-2.85 E F2(||)2.85 +E F0 2.85(,a)C .35(nd option-)-2.85 F(ally terminated by one of)108 +446.4 Q F2(;)2.5 E F0(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2() +2.5 E F0(.)A .961(Of these list operators,)108 463.2 R F2(&&)3.461 E F0 +(and)3.461 E F2(||)3.461 E F0(ha)3.461 E 1.261 -.15(ve e)-.2 H .961 +(qual precedence, follo).15 F .96(wed by)-.25 F F2(;)3.46 E F0(and)3.46 +E F2(&)3.46 E F0 3.46(,w)C .96(hich ha)-3.46 F 1.26 -.15(ve e)-.2 H .96 +(qual prece-).15 F(dence.)108 475.2 Q 2.5(As)108 492 S +(equence of one or more ne)-2.5 E(wlines may appear in a)-.25 E F1(list) +2.5 E F0(instead of a semicolon to delimit commands.)2.5 E .029 +(If a command is terminated by the control operator)108 508.8 R F2(&) +2.529 E F0 2.529(,t)C .029(he shell e)-2.529 F -.15(xe)-.15 G .029 +(cutes the command in the).15 F F1(bac)2.529 E(kgr)-.2 E(ound)-.45 E F0 +(in)2.529 E 2.876(as)108 520.8 S 2.876(ubshell. The)-2.876 F .376 +(shell does not w)2.876 F .375 +(ait for the command to \214nish, and the return status is 0.)-.1 F .375 +(Commands sepa-)5.375 F .848(rated by a)108 532.8 R F2(;)3.348 E F0 .848 +(are e)3.348 F -.15(xe)-.15 G .848(cuted sequentially; the shell w).15 F +.849(aits for each command to terminate in turn.)-.1 F .849(The return) +5.849 F(status is the e)108 544.8 Q(xit status of the last command e) +-.15 E -.15(xe)-.15 G(cuted.).15 E .937(AND and OR lists are sequences \ +of one or more pipelines separated by the)108 561.6 R F2(&&)3.436 E F0 +(and)3.436 E F2(||)3.436 E F0 .936(control operators,)3.436 F(respecti) +108 573.6 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 +E -.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G +2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 590.4 Q F2(&&) +2.5 E F1(command2)2.5 E(command2)108.2 607.2 Q F0(is e)2.52 E -.15(xe) +-.15 G(cuted if, and only if,).15 E F1(command1)2.7 E F0(returns an e) +2.5 E(xit status of zero.)-.15 E(An OR list has the form)108 624 Q F1 +(command1)144 640.8 Q F2(||)2.5 E F1(command2)2.5 E(command2)108.2 657.6 +Q F0 .728(is e)3.248 F -.15(xe)-.15 G .729(cuted if and only if).15 F F1 (command1)3.429 E F0 .729(returns a non-zero e)3.229 F .729(xit status.) --.15 F .728(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.053(compound command)3.553 F F0 1.053(is one of the follo)3.553 F -3.553(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 -1.054(in a command')3.554 F 3.554(sd)-.55 G 1.054(escription may be) --3.554 F 1.027(separated from the rest of the command by one or more ne) -108 698.4 R 1.026(wlines, and may be follo)-.25 F 1.026(wed by a ne)-.25 -F 1.026(wline in)-.25 F(place of a semicolon.)108 710.4 Q(GNU Bash 4.3) -72 768 Q(2014 February 2)141.79 E(4)195.95 E 0 Cg EP +-.15 F .729(The return status of AND)5.729 F(and OR lists is the e)108 +669.6 Q(xit status of the last command e)-.15 E -.15(xe)-.15 G +(cuted in the list.).15 E F2(Compound Commands)87 686.4 Q F0(A)108 698.4 +Q F1 1.054(compound command)3.554 F F0 1.054(is one of the follo)3.554 F +3.553(wing. In)-.25 F 1.053(most cases a)3.553 F F1(list)3.553 E F0 +1.053(in a command')3.553 F 3.553(sd)-.55 G 1.053(escription may be) +-3.553 F 1.026(separated from the rest of the command by one or more ne) +108 710.4 R 1.026(wlines, and may be follo)-.25 F 1.027(wed by a ne)-.25 +F 1.027(wline in)-.25 F(place of a semicolon.)108 722.4 Q(GNU Bash 4.4) +72 768 Q(2016 August 26)142.895 E(4)197.055 E 0 Cg EP %%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.511 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.262 E(w\).)-.25 -E -1.11(Va)144 96 S 1.064(riable assignments and b)1.11 F 1.064 -(uiltin commands that af)-.2 F 1.064(fect the shell')-.25 F 3.564(se) --.55 G -.4(nv)-3.564 G 1.064(ironment do not remain in).4 F(ef)144 108 Q +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(\()108 84 Q/F1 10 +/Times-Italic@0 SF(list)A F0(\))A F1(list)144 84 Q F0 .011(is e)2.512 F +-.15(xe)-.15 G .011(cuted in a subshell en).15 F .011(vironment \(see) +-.4 F/F2 9/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT) +-.27 E F0(belo)2.261 E(w\).)-.25 E -1.11(Va)144 96 S 1.063 +(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 .401(is simply e)2.901 F -.15(xe)-.15 G -.401(cuted in the current shell en).15 F(vironment.)-.4 E F1(list)5.401 -E F0 .402(must be terminated with a ne)2.901 F .402(wline or)-.25 F -3.215(semicolon. This)144 136.8 R .715(is kno)3.215 F .715(wn as a)-.25 -F F1(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715 -(he return status is the e)-5.715 F .714(xit status of)-.15 F F1(list) -3.214 E F0 5.714(.N)C(ote)-5.714 E .219(that unlik)144 148.8 R 2.719(et) --.1 G .219(he metacharacters)-2.719 F/F3 10/Times-Bold@0 SF(\()2.719 E -F0(and)2.719 E F3(\))2.719 E F0(,)A F3({)2.719 E F0(and)2.719 E F3(}) -2.719 E F0(are)2.719 E F1 -.37(re)2.72 G .22(served wor).37 F(ds)-.37 E -F0 .22(and must occur where a reserv)2.72 F(ed)-.15 E -.1(wo)144 160.8 S -.257(rd is permitted to be recognized.).1 F .257(Since the)5.257 F 2.757 -(yd)-.15 G 2.756(on)-2.757 G .256(ot cause a w)-2.756 F .256 -(ord break, the)-.1 F 2.756(ym)-.15 G .256(ust be separated)-2.756 F +F0 2.5(;})C F1(list)144 124.8 Q F0 .402(is simply e)2.902 F -.15(xe)-.15 +G .401(cuted in the current shell en).15 F(vironment.)-.4 E F1(list) +5.401 E F0 .401(must be terminated with a ne)2.901 F .401(wline or)-.25 +F 3.214(semicolon. This)144 136.8 R .714(is kno)3.214 F .714(wn as a) +-.25 F F1(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715 +(he return status is the e)-5.715 F .715(xit status of)-.15 F F1(list) +3.215 E F0 5.715(.N)C(ote)-5.715 E .22(that unlik)144 148.8 R 2.72(et) +-.1 G .22(he metacharacters)-2.72 F/F3 10/Times-Bold@0 SF(\()2.72 E F0 +(and)2.72 E F3(\))2.72 E F0(,)A F3({)2.72 E F0(and)2.72 E F3(})2.719 E +F0(are)2.719 E F1 -.37(re)2.719 G .219(served wor).37 F(ds)-.37 E F0 +.219(and must occur where a reserv)2.719 F(ed)-.15 E -.1(wo)144 160.8 S +.256(rd is permitted to be recognized.).1 F .256(Since the)5.256 F 2.756 +(yd)-.15 G 2.756(on)-2.756 G .257(ot cause a w)-2.756 F .257 +(ord break, the)-.1 F 2.757(ym)-.15 G .257(ust be separated)-2.757 F (from)144 172.8 Q F1(list)2.5 E F0 (by whitespace or another shell metacharacter)2.5 E(.)-.55 E(\(\()108 189.6 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144 201.6 Q F1 --.2(ex)2.551 G(pr).2 E(ession)-.37 E F0 .051(is e)2.551 F -.25(va)-.25 G -.051(luated according to the rules described belo).25 F 2.552(wu)-.25 G -(nder)-2.552 E F2 .052(ARITHMETIC EV)2.552 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.911 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 +-.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.299 +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.3(luation of the conditional e).25 F(xpression)-.15 E F1 -.2(ex)3.8 G -(pr).2 E(ession)-.37 E F0(.)A 2.274 +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.773(wu)-.25 G(nder)-4.773 E F2(CONDITION)4.773 E 2.273(AL EXPRES-)-.18 -F(SIONS)144 278.4 Q F4(.)A F0 -.8(Wo)5.632 G 1.133 +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.633 E F0(and)144 290.4 Q F3(]])2.964 E F0 2.964(;t)C .464 -(ilde e)-2.964 F .464(xpansion, parameter and v)-.15 F .464(ariable e) --.25 F .463(xpansion, arithmetic e)-.15 F .463 +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.581 E F0 +(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 .503(When the)144 -350.4 R F3(==)3.003 E F0(and)3.002 E F3(!=)3.002 E F0 .502(operators ar\ +(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 .81(tern and matched according to the rules described belo)144 362.4 R 3.31(wu)-.25 G(nder)-3.31 E F3 -.1(Pa)3.31 G(tter).1 E 3.31(nM) -.15 G(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he) --3.31 E F3(ext-)3.31 E(glob)144 374.4 Q F0 1.007 -(shell option were enabled.)3.507 F(The)6.007 E F3(=)3.507 E F0 1.007 -(operator is equi)3.507 F -.25(va)-.25 G 1.007(lent to).25 F F3(==)3.507 -E F0 6.007(.I)C 3.507(ft)-6.007 G 1.007(he shell option)-3.507 F F3 -(nocase-)3.506 E(match)144 386.4 Q F0 .198 -(is enabled, the match is performed without re)2.698 F -.05(ga)-.15 G -.198(rd to the case of alphabetic characters.).05 F(The)5.198 E 1.068 +-3.31 E F3(ext-)3.31 E(glob)144 374.4 Q F0 1.389 +(shell option were enabled.)3.889 F(The)6.389 E F3(=)3.889 E F0 1.389 +(operator is equi)3.889 F -.25(va)-.25 G 1.389(lent to).25 F F3(==)3.89 +E F0 6.39(.I)C 3.89(ft)-6.39 G(he)-3.89 E F3(nocasematch)3.89 E F0 +(shell)3.89 E .272(option is enabled, the match is performed without re) +144 386.4 R -.05(ga)-.15 G .271 +(rd to the case of alphabetic characters.).05 F(The)5.271 E 1.067 (return v)144 398.4 R 1.068(alue is 0 if the string matches \()-.25 F F3 (==)A F0 3.568(\)o)C 3.568(rd)-3.568 G 1.068(oes not match \()-3.568 F -F3(!=)A F0 3.568(\)t)C 1.067(he pattern, and 1 otherwise.)-3.568 F(An) +F3(!=)A F0 3.568(\)t)C 1.068(he pattern, and 1 otherwise.)-3.568 F(An) 144 410.4 Q 2.5(yp)-.15 G(art of the pattern may be quoted to force the\ quoted portion to be matched as a string.)-2.5 E .243 (An additional binary operator)144 428.4 R(,)-.4 E F3(=~)2.743 E F0 @@ -777,44 +796,44 @@ F3(!=)A F0 3.568(\)t)C 1.067(he pattern, and 1 otherwise.)-3.568 F(An) (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.953(xtended re)-.15 F 1.953(gular e)-.15 F 1.953 +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.346 -(otherwise. If)144 464.4 R .846(the re)3.346 F .846(gular e)-.15 F .845 +(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.345(sr)-.55 G(eturn)-3.345 E -.25(va)144 476.4 S -.666(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 .667(rd to).05 F .593(the case of alphabetic characters.) -144 488.4 R(An)5.593 E 3.093(yp)-.15 G .592 -(art of the pattern may be quoted to force the quoted por)-3.093 F(-)-.2 +(xpression')-.15 E 3.346(sr)-.55 G(eturn)-3.346 E -.25(va)144 476.4 S +.667(lue is 2.).25 F .667(If the)5.667 F F3(nocasematch)3.167 E F0 .667 +(shell option is enabled, the match is performed without re)3.167 F -.05 +(ga)-.15 G .666(rd to).05 F .592(the case of alphabetic characters.)144 +488.4 R(An)5.592 E 3.092(yp)-.15 G .593 +(art of the pattern may be quoted to force the quoted por)-3.092 F(-)-.2 E 1.016(tion to be matched as a string.)144 500.4 R(Brack)6.016 E 1.016 (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.436(,s)-.65 -G 1.936 -(ince normal quoting characters lose their meanings between brack)-4.436 -F 4.435(ets. If)-.1 F 1.935(the pattern is)4.435 F .264 -(stored in a shell v)144 524.4 R .264(ariable, quoting the v)-.25 F .264 -(ariable e)-.25 F .265 -(xpansion forces the entire pattern to be matched as)-.15 F 3.774(as)144 -536.4 S 3.774(tring. Substrings)-3.774 F 1.274 -(matched by parenthesized sube)3.774 F 1.273(xpressions within the re) --.15 F 1.273(gular e)-.15 F 1.273(xpression are)-.15 F(sa)144 548.4 Q --.15(ve)-.2 G 3.096(di).15 G 3.097(nt)-3.096 G .597(he array v)-3.097 F +(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(x0i)-.15 G(s)-3.097 E .049 +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 .049(element of)2.549 F F2 --.27(BA)2.549 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 .785 -(Expressions may be combined using the follo)144 590.4 R .786 +(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 .523(Returns the v)180 632.4 R .522(alue of)-.25 F F1 -.2(ex) +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) @@ -826,145 +845,146 @@ F0 .597(with inde)2.847 F 3.097(x0i)-.15 G(s)-3.097 E .049 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.3)72 768 Q -(2014 February 2)141.79 E(5)195.95 E 0 Cg EP +.2 E(ession2)-.37 E F0(is true.)2.52 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(5)197.055 E 0 Cg EP %%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.64 E F0(and)3.64 E F1(||) -3.64 E F0 1.14(operators do not e)3.64 F -.25(va)-.25 G(luate).25 E/F2 -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.141(alue of)-.25 F F2 -.2(ex)3.641 G(pr).2 E -(ession1)-.37 E F0 1.141(is suf)3.641 F 1.141(\214cient to)-.25 F +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The)144 84 Q/F1 10 +/Times-Bold@0 SF(&&)3.641 E F0(and)3.641 E F1(||)3.641 E F0 1.141 +(operators do not e)3.641 F -.25(va)-.25 G(luate).25 E/F2 10 +/Times-Italic@0 SF -.2(ex)3.641 G(pr).2 E(ession2)-.37 E F0 1.141 +(if the v)3.641 F 1.14(alue of)-.25 F F2 -.2(ex)3.64 G(pr).2 E(ession1) +-.37 E F0 1.14(is suf)3.64 F 1.14(\214cient to)-.25 F (determine the return v)144 96 Q(alue of the entire conditional e)-.25 E (xpression.)-.15 E F1 -.25(fo)108 112.8 S(r).25 E F2(name)2.5 E F0 2.5 ([[)2.5 G F1(in)A F0([)2.5 E F2(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5 -(]];])2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 .424 -(The list of w)144 124.8 R .424(ords follo)-.1 F(wing)-.25 E F1(in)2.924 -E F0 .423(is e)2.924 F .423(xpanded, generating a list of items.)-.15 F -.423(The v)5.423 F(ariable)-.25 E F2(name)2.923 E F0 .423(is set to) -2.923 F .653(each element of this list in turn, and)144 136.8 R F2(list) +(]];])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 .649(command e) -144 148.8 R -.15(xe)-.15 G(cutes).15 E F2(list)3.149 E F0 .648 +(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.148 G(RAMETERS).666 E F0(belo)2.898 E(w\).) --.25 E .153(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.654 -(cutes. If).15 F .154(the e)2.654 F .154(xpansion of the items)-.15 F +/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.236(First, the arithmetic e) -144 201.6 R(xpression)-.15 E F2 -.2(ex)3.736 G(pr1).2 E F0 1.235(is e) -3.736 F -.25(va)-.25 G 1.235 -(luated according to the rules described belo).25 F 3.735(wu)-.25 G -(nder)-3.735 E F3 .561(ARITHMETIC EV)144 213.6 R(ALU)-1.215 E -.855(AT) --.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .561(The arithmetic e) -5.061 F(xpression)-.15 E F2 -.2(ex)3.061 G(pr2).2 E F0 .562(is then e) -3.062 F -.25(va)-.25 G .562(luated repeatedly until).25 F .592(it e)144 -225.6 R -.25(va)-.25 G .592(luates to zero.).25 F .592(Each time)5.592 F +(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 .591(is e) -3.092 F -.15(xe)-.15 G .591(cuted and the arith-).15 F .228(metic e)144 -237.6 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F +(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .592(is e) +3.092 F -.15(xe)-.15 G .592(cuted and the arith-).15 F .229(metic e)144 +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.729(te)-2.729 G -.25(va)-2.979 G -.229(luates to 1.).25 F .228(The return v)144 249.6 R .228 -(alue is the e)-.25 F .228(xit status of the last command in)-.15 F F2 -(list)2.728 E F0 .227(that is e)2.728 F -.15(xe)-.15 G .227(cuted, or f) -.15 F .227(alse if an)-.1 F 2.727(yo)-.15 G 2.727(ft)-2.727 G(he)-2.727 +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 -.432(The list of w)144 290.4 R .432(ords follo)-.1 F(wing)-.25 E F1(in) -2.932 E F0 .432(is e)2.932 F .432(xpanded, generating a list of items.) --.15 F .433(The set of e)5.433 F .433(xpanded w)-.15 F(ords)-.1 E .843 +.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 .842 -(is omitted, the posi-)3.342 F .201(tional parameters are printed \(see) +-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 .214(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.214 -F 1.537(played w)144 338.4 R 1.537(ords, then the v)-.1 F 1.537(alue of) --.25 F F2(name)4.397 E F0 1.537(is set to that w)4.217 F 4.037(ord. If) --.1 F 1.538(the line is empty)4.038 F 4.038(,t)-.65 G 1.538(he w)-4.038 -F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 350.4 R 2.566 -(ain. If)-.05 F .065(EOF is read, the command completes.)2.566 F(An) -5.065 E 2.565(yo)-.15 G .065(ther v)-2.565 F .065(alue read causes)-.25 -F F2(name)144 362.4 Q F0 .972(to be set to null.)3.652 F .972 -(The line read is sa)5.972 F -.15(ve)-.2 G 3.473(di).15 G 3.473(nt) --3.473 G .973(he v)-3.473 F(ariable)-.25 E F3(REPL)3.473 E(Y)-.828 E F4 -(.)A F0(The)5.473 E F2(list)3.563 E F0 .973(is e)4.153 F -.15(xe)-.15 G -.973(cuted after).15 F .072(each selection until a)144 374.4 R F1(br) +2.451 F .213(line read from the standard input.)144 326.4 R .213 +(If the line consists of a number corresponding to one of the dis-)5.213 +F 1.538(played w)144 338.4 R 1.538(ords, then the v)-.1 F 1.538(alue of) +-.25 F F2(name)4.398 E F0 1.537(is set to that w)4.218 F 4.037(ord. If) +-.1 F 1.537(the line is empty)4.037 F 4.037(,t)-.65 G 1.537(he w)-4.037 +F 1.537(ords and)-.1 F .065(prompt are displayed ag)144 350.4 R 2.565 +(ain. If)-.05 F .065(EOF is read, the command completes.)2.565 F(An) +5.066 E 2.566(yo)-.15 G .066(ther v)-2.566 F .066(alue read causes)-.25 +F F2(name)144.36 362.4 Q F0 .954(to be set to null.)3.634 F .954 +(The line read is sa)5.954 F -.15(ve)-.2 G 3.453(di).15 G 3.453(nt) +-3.453 G .953(he v)-3.453 F(ariable)-.25 E F3(REPL)3.453 E(Y)-.828 E F4 +(.)A F0(The)5.453 E F2(list)3.543 E F0 .953(is e)4.133 F -.15(xe)-.15 G +.953(cuted after).15 F .071(each selection until a)144 374.4 R F1(br) 2.571 E(eak)-.18 E F0 .071(command is e)2.571 F -.15(xe)-.15 G 2.571 (cuted. The).15 F -.15(ex)2.571 G .071(it status of).15 F F1(select) -2.571 E F0 .071(is the e)2.571 F .071(xit status of the)-.15 F +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.264 E F0 .764 -(command \214rst e)3.264 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 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 .765(in turn, using the)3.264 F .596 +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 .595(thname Expansion).1 F F0(belo)3.095 E -3.095(w\). The)-.25 F F2(wor)3.095 E(d)-.37 E F0(is)3.095 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 +-.15 F F1 -.1(Pa)3.095 G .596(thname Expansion).1 F F0(belo)3.096 E +3.096(w\). The)-.25 F F2(wor)3.096 E(d)-.37 E F0(is)3.096 E -.15(ex)144 +439.2 S 1.72(panded using tilde e).15 F 1.72(xpansion, parameter and v) +-.15 F 1.72(ariable e)-.25 F 1.72(xpansion, arithmetic e)-.15 F 1.72 +(xpansion, com-)-.15 F 1.268 (mand substitution, process substitution and quote remo)144 451.2 R -.25 (va)-.15 G 3.768(l. Each).25 F F2(pattern)3.768 E F0 -.15(ex)3.768 G -1.268(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.517 -(tution, and process substitution.)144 475.2 R 1.517 -(If the shell option)6.517 F F1(nocasematch)4.016 E F0 1.516 -(is enabled, the match is per)4.016 F(-)-.2 E 1.346(formed without re) -144 487.2 R -.05(ga)-.15 G 1.346 -(rd to the case of alphabetic characters.).05 F 1.347 -(When a match is found, the corre-)6.347 F(sponding)144 499.2 Q F2(list) -2.777 E F0 .277(is e)2.777 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 -.848(\214rst pattern match.)144 511.2 R(Using)5.848 E F1(;&)3.348 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.349 E F0 -(associated)3.349 E .078(with the ne)144 523.2 R .078 -(xt set of patterns.)-.15 F(Using)5.078 E F1(;;&)2.578 E F0 .078 -(in place of)2.578 F F1(;;)2.578 E F0 .077 -(causes the shell to test the ne)2.578 F .077(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(;[)C F1(elif)A F2 -(list)2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E -F1(else)2.5 E F2(list)2.5 E F0 2.5(;])C F1<8c>A F0(The)144 576 Q F1(if) -2.978 E F2(list)3.068 E F0 .478(is e)3.658 F -.15(xe)-.15 G 2.978 +1.269(amined is e).15 F(xpanded)-.15 E .203(using tilde e)144 463.2 R +.203(xpansion, parameter and v)-.15 F .203(ariable e)-.25 F .203 +(xpansion, arithmetic e)-.15 F .203(xpansion, command substitu-)-.15 F +.232(tion, and process substitution.)144 475.2 R .233(If the)5.233 F F1 +(nocasematch)2.733 E F0 .233 +(shell option is enabled, the match is performed)2.733 F .234 +(without re)144 487.2 R -.05(ga)-.15 G .234 +(rd to the case of alphabetic characters.).05 F .234 +(When a match is found, the corresponding)5.234 F F2(list)2.734 E F0 +.625(is e)144 499.2 R -.15(xe)-.15 G 3.125(cuted. If).15 F(the)3.125 E +F1(;;)3.125 E F0 .625(operator is used, no subsequent matches are attem\ +pted after the \214rst pattern)3.125 F 2.932(match. Using)144 511.2 R F1 +(;&)2.932 E F0 .432(in place of)2.932 F F1(;;)2.932 E F0 .432(causes e) +2.932 F -.15(xe)-.15 G .432(cution to continue with the).15 F F2(list) +2.932 E F0 .431(associated with the ne)2.931 F(xt)-.15 E .866 +(set of patterns.)144 523.2 R(Using)5.866 E F1(;;&)3.366 E F0 .866 +(in place of)3.366 F F1(;;)3.366 E F0 .866 +(causes the shell to test the ne)3.366 F .866 +(xt pattern list in the state-)-.15 F .878(ment, if an)144 535.2 R 2.178 +-.65(y, a)-.15 H .878(nd e).65 F -.15(xe)-.15 G .878(cute an).15 F 3.378 +(ya)-.15 G(ssociated)-3.378 E F2(list)3.378 E F0 .878 +(on a successful match.)3.378 F .878(The e)5.878 F .877 +(xit status is zero if no)-.15 F(pattern matches.)144 547.2 Q +(Otherwise, it is the e)5 E(xit status of the last command e)-.15 E -.15 +(xe)-.15 G(cuted in).15 E F2(list)2.5 E F0(.)A F1(if)108 564 Q F2(list) +2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;[)C F1(elif)A F2(list) +2.5 E F0(;)A F1(then)2.5 E F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F1 +(else)2.5 E F2(list)2.5 E F0 2.5(;])C F1<8c>A F0(The)144 576 Q F1(if) +2.977 E F2(list)3.067 E F0 .478(is e)3.658 F -.15(xe)-.15 G 2.978 (cuted. If).15 F .478(its e)2.978 F .478(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0 .478(is e)2.978 F -.15(xe)-.15 G -2.978(cuted. Otherwise,).15 F(each)2.978 E F1(elif)2.977 E F2(list)2.977 -E F0 1.087(is e)144 588 R -.15(xe)-.15 G 1.087 +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.088(is e)3.588 F -.15(xe)-.15 G 1.088(cuted and the).15 F -.104(command completes.)144 600 R .103(Otherwise, the)5.104 F F1(else) +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 .103(xit sta-)-.15 F(tus of the last command e)144 612 Q -.15(xe) +-.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 @@ -974,89 +994,90 @@ 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 .599(that the test is ne)144 676.8 R --.05(ga)-.15 G(ted;).05 E F2(list-2)3.189 E F0 .599(is e)3.119 F -.15 -(xe)-.15 G .6(cuted as long as the last command in).15 F F2(list-1)3.19 -E F0 .6(returns a non-zero)3.1 F -.15(ex)144 688.8 S .205(it status.).15 -F .205(The e)5.205 F .205(xit status of the)-.15 F F1(while)2.705 E F0 -(and)2.705 E F1(until)2.704 E F0 .204(commands is the e)2.704 F .204 +(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.3)72 768 Q(2014 February 2) -141.79 E(6)195.95 E 0 Cg EP +-.1 E -.15(xe)-.15 G(cuted.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26) +142.895 E(6)197.055 E 0 Cg EP %%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.712 E(ocess)-.45 E F0 1.212 -(is a shell command preceded by the)3.712 F F1(copr)3.713 E(oc)-.18 E F0 -(reserv)3.713 E 1.213(ed w)-.15 F 3.713(ord. A)-.1 F 1.213 -(coprocess is e)3.713 F -.15(xe)-.15 G 1.213(cuted asyn-).15 F .575(chr\ -onously in a subshell, as if the command had been terminated with the) -108 108 R F1(&)3.074 E F0 .574(control operator)3.074 F 3.074(,w)-.4 G -.574(ith a tw)-3.074 F(o-)-.1 E -.1(wa)108 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 .708(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.209 E(OC)-.3 E F0(.)A F2 -.27(NA)5.709 G(ME).27 E F0 .64 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Copr)87 84 Q(ocesses)-.18 E F0(A)108 96 Q/F2 10/Times-Italic@0 SF +(copr)3.713 E(ocess)-.45 E F0 1.213(is a shell command preceded by the) +3.713 F F1(copr)3.712 E(oc)-.18 E F0(reserv)3.712 E 1.212(ed w)-.15 F +3.712(ord. A)-.1 F 1.212(coprocess is e)3.712 F -.15(xe)-.15 G 1.212 +(cuted asyn-).15 F .574(chronously in a subshell, as if the command had\ + been terminated with the)108 108 R F1(&)3.075 E F0 .575 +(control operator)3.075 F 3.075(,w)-.4 G .575(ith a tw)-3.075 F(o-)-.1 E +-.1(wa)108 120 S 2.5(yp).1 G(ipe established between the e)-2.5 E -.15 +(xe)-.15 G(cuting shell and the coprocess.).15 E +(The format for a coprocess is:)108 136.8 Q F1(copr)144 153.6 Q(oc)-.18 +E F0([)2.5 E F2 -.27(NA)C(ME).27 E F0(])A F2(command)2.5 E F0([)2.5 E F2 +-.37(re)C(dir).37 E(ections)-.37 E F0(])A .709 +(This creates a coprocess named)108 170.4 R F2 -.27(NA)3.208 G(ME).27 E +F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 .708 +(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR)3.208 +E(OC)-.3 E F0(.)A F2 -.27(NA)5.708 G(ME).27 E F0 .64 (must not be supplied if)108 182.4 R F2(command)3.14 E F0 .64(is a)3.14 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.671 E 1.171(w\) named)-.25 F F2 -.27(NA) -3.671 G(ME).27 E F0 1.171(in the conte)3.671 F 1.171(xt of the e)-.15 F --.15(xe)-.15 G 1.171(cuting shell.).15 F 1.17(The standard output of) -6.17 F F2(command)3.87 E F0(is)4.44 E 2.029 +(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.857([0]. The)B 1.357(standard input of) -3.857 F F2(command)4.057 E F0 1.356 -(is connected via a pipe to a \214le descriptor in the e)4.627 F -.15 +(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.604(yr)-.15 G .104 -(edirections spec-)-2.604 F 1.272(i\214ed by the command \(see)108 254.4 +(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.271(guments to)-.18 F .515 +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.637(subshells. The)108 278.4 R 1.137(process ID of the shell spa)3.637 +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.136(ilable as the v).25 F 1.136(alue of the)-.25 F +.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 .336(command al)2.836 F -.1(wa)-.1 -G .336(ys returns success.).1 F +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.698(As)108 348 S .198 -(hell function is an object that is called lik)-2.698 F 2.698(eas)-.1 G -.198(imple command and e)-2.698 F -.15(xe)-.15 G .197 +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.402(This de\214nes a function named)144 +.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.403(If the)6.402 F F1(function)3.903 E F0(reserv)144 412.8 Q .162 +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) @@ -1064,7851 +1085,8257 @@ Q F0(\(\))2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C 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.67 E F0 1.67(is e)4.17 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.753(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 .252(special b) -2.753 F(uiltins)-.2 E F0(.)A(An)144 472.8 Q 3.241(yr)-.15 G .741 -(edirections \(see)-3.241 F F3(REDIRECTION)3.241 E F0(belo)2.991 E .742 -(w\) speci\214ed when a function is de\214ned are performed)-.25 F .171 -(when the function is e)144 484.8 R -.15(xe)-.15 G 2.671(cuted. The).15 -F -.15(ex)2.671 G .17 -(it status of a function de\214nition is zero unless a syntax error).15 -F .704(occurs or a readonly function with the same name already e)144 -496.8 R 3.205(xists. When)-.15 F -.15(exe)3.205 G .705(cuted, the e).15 -F .705(xit status)-.15 F 1.822(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.821(.\()-.65 G(See)-6.821 E F3(FUNCTIONS) -4.321 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 .952(iltin is enabled \(see).2 F F3 .952(SHELL B) -3.452 F(UIL)-.09 E .952(TIN COMMANDS)-.828 F F0(belo)3.202 E .952 -(w\), a w)-.25 F .952(ord be)-.1 F .952(ginning with)-.15 F F1(#)3.451 E -F0 .951(causes that w)3.451 F(ord)-.1 E .604 -(and all remaining characters on that line to be ignored.)108 573.6 R +(Compound Commands)2.544 F F0(abo)144 448.8 Q -.15(ve)-.15 G 2.902(,w) +.15 G .402(ith one e)-2.902 F .402(xception: If the)-.15 F F1(function) +2.901 E F0(reserv)2.901 E .401(ed w)-.15 F .401(ord is used, b)-.1 F +.401(ut the parentheses are not sup-)-.2 F .047 +(plied, the braces are required.)144 460.8 R F2(compound\255command) +5.047 E F0 .047(is e)2.547 F -.15(xe)-.15 G .047(cuted whene).15 F -.15 +(ve)-.25 G(r).15 E F2(name)2.547 E F0 .047(is speci\214ed as the)2.547 F +1.68(name of a simple command.)144 472.8 R 1.68(When in)6.68 F F2 1.68 +(posix mode)4.18 F F0(,)A F2(name)4.179 E F0 1.679 +(may not be the name of one of the)4.179 F(POSIX)144 484.8 Q F2 .014 +(special b)2.513 F(uiltins)-.2 E F0 5.014(.A)C .314 -.15(ny r)-5.014 H +.014(edirections \(see).15 F F3(REDIRECTION)2.514 E F0(belo)2.264 E .014 +(w\) speci\214ed when a function is)-.25 F 1.12 +(de\214ned are performed when the function is e)144 496.8 R -.15(xe)-.15 +G 3.619(cuted. The).15 F -.15(ex)3.619 G 1.119 +(it status of a function de\214nition is).15 F .217(zero unless a synta\ +x error occurs or a readonly function with the same name already e)144 +508.8 R 2.717(xists. When)-.15 F -.15(exe)144 520.8 S .546(cuted, the e) +.15 F .546(xit status of a function is the e)-.15 F .545 +(xit status of the last command e)-.15 F -.15(xe)-.15 G .545 +(cuted in the body).15 F(.)-.65 E(\(See)144 532.8 Q F3(FUNCTIONS)2.5 E +F0(belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95/Times-Bold@0 SF +(COMMENTS)72 549.6 Q F0 .982(In a non-interacti)108 561.6 R 1.282 -.15 +(ve s)-.25 H .982(hell, or an interacti).15 F 1.282 -.15(ve s)-.25 H +.982(hell in which the).15 F F1(interacti)3.482 E -.1(ve)-.1 G +(_comments).1 E F0 .982(option to the)3.482 F F1(shopt)3.482 E F0 -.2 +(bu)108 573.6 S .952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F +(UIL)-.09 E .952(TIN COMMANDS)-.828 F F0(belo)3.202 E .952(w\), a w)-.25 +F .952(ord be)-.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951 +(causes that w)3.451 F(ord)-.1 E .604 +(and all remaining characters on that line to be ignored.)108 585.6 R .605(An interacti)5.605 F .905 -.15(ve s)-.25 H .605(hell without the) -.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 585.6 Q F0 +.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 597.6 Q F0 1.337(option enabled does not allo)3.837 F 3.837(wc)-.25 G 3.836 (omments. The)-3.837 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(interacti)108 -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 .477(is used to remo)2.977 F +609.6 Q .3 -.15(ve s)-.25 H(hells.).15 E F4 -.11(QU)72 626.4 S -.438(OT) +.11 G(ING).438 E F2(Quoting)108 638.4 Q F0 .477(is used to remo)2.977 F .777 -.15(ve t)-.15 H .477 (he special meaning of certain characters or w).15 F .477 (ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185 (used to disable special treatment for special characters, to pre)108 -638.4 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184 -(ords from being recognized as)-.1 F(such, and to pre)108 650.4 Q -.15 +650.4 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184 +(ords from being recognized as)-.1 F(such, and to pre)108 662.4 Q -.15 (ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108 -667.2 R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 +679.2 R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 (listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E F3(DEFINITIONS) 2.788 E F0 .288(has special meaning to the shell and must be)2.538 F -(quoted if it is to represent itself.)108 679.2 Q 1.345 -(When the command history e)108 696 R 1.344(xpansion f)-.15 F 1.344 +(quoted if it is to represent itself.)108 691.2 Q 1.345 +(When the command history e)108 708 R 1.344(xpansion f)-.15 F 1.344 (acilities are being used \(see)-.1 F F3(HIST)3.844 E(OR)-.162 E 3.594 (YE)-.315 G(XP)-3.594 E(ANSION)-.666 E F0(belo)3.594 E 1.344(w\), the) --.25 F F2(history e)108 708 Q(xpansion)-.2 E F0(character)2.5 E 2.5(,u) +-.25 F F2(history e)108 720 Q(xpansion)-.2 E F0(character)2.5 E 2.5(,u) -.4 G(sually)-2.5 E F1(!)2.5 E F0 2.5(,m)C(ust be quoted to pre)-2.5 E --.15(ve)-.25 G(nt history e).15 E(xpansion.)-.15 E -(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.3)72 768 Q -(2014 February 2)141.79 E(7)195.95 E 0 Cg EP +-.15(ve)-.25 G(nt history e).15 E(xpansion.)-.15 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(7)197.055 E 0 Cg EP %%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.974(An)108 84 S .474(on-quoted backslash \()-2.974 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 .475(xt character that)-.15 F(follo) -108 96 Q 1.554(ws, with the e)-.25 F 1.553(xception of . If)-.25 F(a)4.053 E F1(\\)4.053 E F0(. If)-.25 F(a)4.053 E F2(\\) +4.053 E F0( pair appears, and the backslash is not itself)-.25 F 1.122 -(quoted, the)108 108 R F1(\\)3.622 E F0( is treated as a line continuation \(that is, it is remo)-.25 F -.15(ve)-.15 G 3.622(df).15 G 1.123(rom the input stream and)-3.622 F -(ef)108 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 +(ef)108 136.8 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295 +(Enclosing characters in single quotes preserv)108 153.6 R .295 (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) +(gle quote may not occur between single quotes, e)108 165.6 Q -.15(ve) -.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033 -(Enclosing characters in double quotes preserv)108 165.6 R .034 +(Enclosing characters in double quotes preserv)108 182.4 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 .828(ception of).15 F F1($)3.328 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 -.827(retain their special)3.328 F .074(meaning within double quotes.)108 -189.6 R .074(The backslash retains its special meaning only when follo) -5.074 F .075(wed by one of the)-.25 F(follo)108 201.6 Q .205 -(wing characters:)-.25 F F1($)2.705 E F0(,)A F1<92>2.705 E F0(,)A F1(") -3.538 E F0(,).833 E F1(\\)2.705 E F0 2.705(,o)C(r)-2.705 E F1() -2.705 E F0 5.205(.A)C .204 -(double quote may be quoted within double quotes by pre-)-2.5 F .081 -(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.582 E F0 -.082(appearing in double)5.082 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 +194.4 S .108(ception of).15 F F2($)2.608 E F0(,)A F2<92>2.608 E F0(,)A +F2(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107 +(xpansion is enabled,)-.15 F F2(!)2.607 E F0 5.107(.W)C .107 +(hen the shell is in)-5.107 F F1 .107(posix mode)2.607 F F0 2.607(,t)C +(he)-2.607 E F2(!)2.607 E F0 .107(has no)2.607 F 1.397 +(special meaning within double quotes, e)108 206.4 R -.15(ve)-.25 G +3.897(nw).15 G 1.397(hen history e)-3.897 F 1.397(xpansion is enabled.) +-.15 F 1.398(The characters)6.398 F F2($)3.898 E F0(and)3.898 E F2<92> +3.898 E F0 .045(retain their special meaning within double quotes.)108 +218.4 R .044(The backslash retains its special meaning only when fol-) +5.045 F(lo)108 230.4 Q .601(wed by one of the follo)-.25 F .602 +(wing characters:)-.25 F F2($)3.102 E F0(,)A F2<92>3.102 E F0(,)A F2(") +3.935 E F0(,).833 E F2(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F2() +3.102 E F0 5.602(.A)C .602(double quote may be quoted within)-2.5 F .131 +(double quotes by preceding it with a backslash.)108 242.4 R .131 +(If enabled, history e)5.131 F .13(xpansion will be performed unless an) +-.15 F F2(!)2.63 E F0 +(appearing in double quotes is escaped using a backslash.)108 254.4 Q +(The backslash preceding the)5 E F2(!)2.5 E F0(is not remo)5 E -.15(ve) +-.15 G(d.).15 E(The special parameters)108 271.2 Q F2(*)2.5 E F0(and)2.5 +E F2(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H (pecial meaning when in double quotes \(see).15 E/F3 9/Times-Bold@0 SF --.666(PA)2.5 G(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 -259.2 S .212(rds of the form).8 F F1($)2.712 E F0<08>A F2(string)A F0 -2.712<0861>C .211(re treated specially)-2.712 F 5.211(.T)-.65 G .211 -(he w)-5.211 F .211(ord e)-.1 F .211(xpands to)-.15 F F2(string)2.711 E -F0 2.711(,w)C .211(ith backslash-escaped char)-2.711 F(-)-.2 E .604 -(acters replaced as speci\214ed by the ANSI C standard.)108 271.2 R .605 +-.666(PA)2.5 G(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 288 +S .211(rds of the form).8 F F2($)2.711 E F0<08>A F1(string)A F0 2.711 +<0861>C .211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w) +-5.211 F .211(ord e)-.1 F .212(xpands to)-.15 F F1(string)2.712 E F0 +2.712(,w)C .212(ith backslash-escaped char)-2.712 F(-)-.2 E .605 +(acters replaced as speci\214ed by the ANSI C standard.)108 300 R .604 (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.507 -(the Unicode \(ISO/IEC 10646\) character whose v)180 475.2 R 1.506 -(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.006 E F0(\(one to four he)180 487.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 499.2 Q F2(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 511.2 R .547 -(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.048 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 .495 -(to the current locale.)108 580.8 R .495(If the current locale is)5.495 -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 .496(If the string is trans-)5.496 -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.593 E(ameter)-.15 E F0 .843(is an entity that stores v)4.073 F -3.343(alues. It)-.25 F .843(can be a)3.343 F F2(name)3.342 E F0 3.342 -(,an).18 G(umber)-3.342 E 3.342(,o)-.4 G 3.342(ro)-3.342 G .842 -(ne of the special characters)-3.342 F .822(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 .369(and zero or more)2.869 -F F2(attrib)2.869 E(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369 -(utes are assigned using the)-.2 F F1(declar)2.868 E(e)-.18 E F0 -.2(bu) -2.868 G .368(iltin command \(see).2 F F1(declar)2.868 E(e)-.18 E F0 -(belo)108 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.754(Ap)108 674.4 -S .254(arameter is set if it has been assigned a v)-2.754 F 2.754 -(alue. The)-.25 F .254(null string is a v)2.754 F .255(alid v)-.25 F -2.755(alue. Once)-.25 F 2.755(av)2.755 G .255(ariable is set, it)-3.005 -F(may be unset only by using the)108 686.4 Q F1(unset)2.5 E F0 -.2(bu) +108 312 Q(ws:)-.25 E F2(\\a)144 324 Q F0(alert \(bell\))180 324 Q F2 +(\\b)144 336 Q F0(backspace)180 336 Q F2(\\e)144 348 Q(\\E)144 360 Q F0 +(an escape character)180 360 Q F2(\\f)144 372 Q F0(form feed)180 372 Q +F2(\\n)144 384 Q F0(ne)180 384 Q 2.5(wl)-.25 G(ine)-2.5 E F2(\\r)144 396 +Q F0(carriage return)180 396 Q F2(\\t)144 408 Q F0(horizontal tab)180 +408 Q F2(\\v)144 420 Q F0 -.15(ve)180 420 S(rtical tab).15 E F2(\\\\)144 +432 Q F0(backslash)180 432 Q F2<5c08>144 444 Q F0(single quote)180 444 Q +F2(\\")144 456 Q F0(double quote)180 456 Q F2(\\?)144 468 Q F0 +(question mark)180 468 Q F2(\\)144 480 Q F1(nnn)A F0 +(the eight-bit character whose v)180 480 Q(alue is the octal v)-.25 E +(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144 +492 Q F1(HH)A F0(the eight-bit character whose v)180 492 Q +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0 +(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F2 +(\\u)144 504 Q F1(HHHH)A F0 1.506 +(the Unicode \(ISO/IEC 10646\) character whose v)180 516 R 1.507 +(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F1(HHHH) +4.007 E F0(\(one to four he)180 528 Q 2.5(xd)-.15 G(igits\))-2.5 E F2 +(\\U)144 540 Q F1(HHHHHHHH)A F0 .548 +(the Unicode \(ISO/IEC 10646\) character whose v)180 552 R .547 +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F1(HHHHH-) +3.047 E(HHH)180 564 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) +-2.5 E F2(\\c)144 576 Q F1(x)A F0 2.5(ac)180 576 S(ontrol-)-2.5 E F1(x)A +F0(character)2.5 E(The e)108 592.8 Q(xpanded result is single-quoted, a\ +s if the dollar sign had not been present.)-.15 E 2.64(Ad)108 609.6 S +.14(ouble-quoted string preceded by a dollar sign \()-2.64 F F2($)A F0 +(")A F1(string)A F0 .14 +("\) will cause the string to be translated according)B .496 +(to the current locale.)108 621.6 R .495(If the current locale is)5.496 +F F2(C)2.995 E F0(or)2.995 E F2(POSIX)2.995 E F0 2.995(,t)C .495 +(he dollar sign is ignored.)-2.995 F .495(If the string is trans-)5.495 +F(lated and replaced, the replacement is double-quoted.)108 633.6 Q/F4 +10.95/Times-Bold@0 SF -.81(PA)72 650.4 S(RAMETERS).81 E F0(A)108 662.4 Q +F1(par)4.592 E(ameter)-.15 E F0 .842(is an entity that stores v)4.072 F +3.342(alues. It)-.25 F .842(can be a)3.342 F F1(name)3.343 E F0 3.343 +(,an).18 G(umber)-3.343 E 3.343(,o)-.4 G 3.343(ro)-3.343 G .843 +(ne of the special characters)-3.343 F .823(listed belo)108 674.4 R +3.323(wu)-.25 G(nder)-3.323 E F2 .823(Special P)3.323 F(arameters)-.1 E +F0 5.823(.A)C F1(variable)-2.21 E F0 .823(is a parameter denoted by a) +3.503 F F1(name)3.323 E F0 5.823(.A).18 G -.25(va)-2.5 G .823 +(riable has a).25 F F1(value)108 686.4 Q F0 .368(and zero or more)2.868 +F F1(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369 +(utes are assigned using the)-.2 F F2(declar)2.869 E(e)-.18 E F0 -.2(bu) +2.869 G .369(iltin command \(see).2 F F2(declar)2.869 E(e)-.18 E F0 +(belo)108 698.4 Q 2.5(wi)-.25 G(n)-2.5 E F3(SHELL B)2.5 E(UIL)-.09 E +(TIN COMMANDS)-.828 E/F5 9/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 715.2 +S .255(arameter is set if it has been assigned a v)-2.755 F 2.754 +(alue. The)-.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F +2.754(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 +F(may be unset only by using the)108 727.2 Q F2(unset)2.5 E F0 -.2(bu) 2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) --.828 E F0(belo)2.25 E(w\).)-.25 E(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.3)72 768 Q(2014 February 2)141.79 E -(8)195.95 E 0 Cg EP +-.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26) +142.895 E(8)197.055 E 0 Cg EP %%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.023 E F0 .233 -(is not gi)2.913 F -.15(ve)-.25 G .233(n, the v).15 F .232 -(ariable is assigned the null string.)-.25 F(All)5.232 E F1(values)3.022 -E F0(under)3.002 E .232(go tilde e)-.18 F .232(xpansion, parameter)-.15 -F .515(and v)108 96 R .515(ariable e)-.25 F .515 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(A)108 84 Q/F1 10 +/Times-Italic@0 SF(variable)2.79 E F0 +(may be assigned to by a statement of the form)2.68 E F1(name)144 100.8 +Q F0(=[)A F1(value)A F0(])A(If)108 117.6 Q F1(value)3.022 E F0 .232 +(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 129.6 R .515(ariable e)-.25 F .515 (xpansion, command substitution, arithmetic e)-.15 F .515 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 3.015(l\().25 G(see) --3.015 E/F2 9/Times-Bold@0 SF(EXP)3.015 E(ANSION)-.666 E F0(belo)108 108 -Q 2.699(w\). If)-.25 F .199(the v)2.699 F .199(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 .198 -(luated as an arithmetic e).25 F .198(xpression e)-.15 F -.15(ve)-.25 G -(n).15 E .901(if the $\(\(...\)\) e)108 120 R .901 +-3.015 E/F2 9/Times-Bold@0 SF(EXP)3.015 E(ANSION)-.666 E F0(belo)108 +141.6 Q 2.698(w\). If)-.25 F .198(the v)2.698 F .198(ariable has its) +-.25 F/F3 10/Times-Bold@0 SF(integer)2.698 E F0(attrib)2.698 E .198 +(ute set, then)-.2 F F1(value)2.988 E F0 .198(is e)2.878 F -.25(va)-.25 +G .199(luated as an arithmetic e).25 F .199(xpression e)-.15 F -.15(ve) +-.25 G(n).15 E .902(if the $\(\(...\)\) e)108 153.6 R .902 (xpansion is not used \(see)-.15 F F3 .901(Arithmetic Expansion)3.401 F -F0(belo)3.401 E 3.402(w\). W)-.25 F .902 -(ord splitting is not performed,)-.8 F 1.179(with the e)108 132 R 1.179 -(xception of)-.15 F F3("$@")3.679 E F0 1.179(as e)3.679 F 1.179 -(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F3 1.178(Special P) -3.678 F(arameters)-.1 E F0 6.178(.P)C 1.178(athname e)-6.328 F 1.178 -(xpansion is not)-.15 F 3.648(performed. Assignment)108 144 R 1.148 -(statements may also appear as ar)3.648 F 1.149(guments to the)-.18 F F3 -(alias)3.649 E F0(,)A F3(declar)3.649 E(e)-.18 E F0(,)A F3(typeset)3.649 -E F0(,)A F3(export)3.649 E F0(,)A F3 -.18(re)108 156 S(adonly).18 E F0 -2.63(,a)C(nd)-2.63 E F3(local)2.63 E F0 -.2(bu)2.63 G .13 -(iltin commands.).2 F .13(When in)5.13 F F1 .129(posix mode)2.629 F F0 -2.629(,t)C .129(hese b)-2.629 F .129 -(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 .376 -(In the conte)108 184.8 R .376 +F0(belo)3.401 E 3.401(w\). W)-.25 F .901 +(ord splitting is not performed,)-.8 F 1.178(with the e)108 165.6 R +1.178(xception of)-.15 F F3("$@")3.678 E F0 1.178(as e)3.678 F 1.179 +(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F3 1.179(Special P) +3.679 F(arameters)-.1 E F0 6.179(.P)C 1.179(athname e)-6.329 F 1.179 +(xpansion is not)-.15 F 3.649(performed. Assignment)108 177.6 R 1.149 +(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F3 +(alias)3.648 E F0(,)A F3(declar)3.648 E(e)-.18 E F0(,)A F3(typeset)3.648 +E F0(,)A F3(export)3.648 E F0(,)A F3 -.18(re)108 189.6 S(adonly).18 E F0 +3.288(,a)C(nd)-3.288 E F3(local)3.288 E F0 -.2(bu)3.288 G .788 +(iltin commands \().2 F F1(declar)A(ation)-.15 E F0 3.288 +(commands\). When)3.288 F(in)3.289 E F1 .789(posix mode)3.289 F F0 3.289 +(,t)C .789(hese b)-3.289 F .789(uiltins may)-.2 F 1.496 +(appear in a command after one or more instances of the)108 201.6 R F3 +(command)3.996 E F0 -.2(bu)3.996 G 1.496 +(iltin and retain these assignment).2 F(statement properties.)108 213.6 +Q .376(In the conte)108 230.4 R .376 (xt where an assignment statement is assigning a v)-.15 F .376 (alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377 -(x, the +=)-.15 F .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 .36 -(for which the)108 208.8 R F1(inte)2.86 E -.1(ge)-.4 G(r).1 E F0(attrib) -2.86 E .36(ute has been set,)-.2 F F1(value)2.86 E F0 .361(is e)2.861 F --.25(va)-.25 G .361(luated as an arithmetic e).25 F .361 -(xpression and added to the)-.15 F -.25(va)108 220.8 S(riable').25 E -2.889(sc)-.55 G .389(urrent v)-2.889 F .389(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 .388(ariable using compound)-.25 F -.185(assignment \(see)108 232.8 R F3(Arrays)2.685 E F0(belo)2.685 E .185 -(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.686(wv) --.25 G .186(alues are)-2.936 F 1.385(appended to the array be)108 244.8 -R 1.384(ginning at one greater than the array')-.15 F 3.884(sm)-.55 G -1.384(aximum inde)-3.884 F 3.884(x\()-.15 G 1.384(for inde)-3.884 F -.15 -(xe)-.15 G 3.884(da).15 G 1.384(rrays\) or)-3.884 F .122 -(added as additional k)108 256.8 R -.15(ey)-.1 G.15 E .122 -(alue pairs in an associati)-.25 F .423 -.15(ve a)-.25 H(rray).15 E -5.123(.W)-.65 G .123(hen applied to a string-v)-5.123 F .123(alued v) --.25 F(ariable,)-.25 E F1(value)2.623 E F0(is e)108 268.8 Q +(x, the +=)-.15 F 1.631 +(operator can be used to append to or add to the v)108 242.4 R(ariable') +-.25 E 4.13(sp)-.55 G(re)-4.13 E 1.63(vious v)-.25 F 4.13(alue. This) +-.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 254.4 S +.163(iltin commands such as).2 F F3(declar)2.664 E(e)-.18 E F0 .164 +(that accept assignment statements \()2.664 F F1(declar)A(ation)-.15 E +F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .252 +(applied to a v)108 266.4 R .252(ariable for which the)-.25 F F1(inte) +2.752 E -.1(ge)-.4 G(r).1 E F0(attrib)2.752 E .252(ute has been set,)-.2 +F F1(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251 +(luated as an arithmetic e).25 F(xpres-)-.15 E .05 +(sion and added to the v)108 278.4 R(ariable')-.25 E 2.55(sc)-.55 G .05 +(urrent v)-2.55 F .05(alue, which is also e)-.25 F -.25(va)-.25 G 2.55 +(luated. When).25 F .05(+= is applied to an array v)2.55 F(ari-)-.25 E +.459(able using compound assignment \(see)108 290.4 R F3(Arrays)2.959 E +F0(belo)2.959 E .459(w\), the v)-.25 F(ariable')-.25 E 2.959(sv)-.55 G +.459(alue is not unset \(as it is when using)-3.209 F .265(=\), and ne) +108 302.4 R 2.765(wv)-.25 G .265(alues are appended to the array be) +-3.015 F .265(ginning at one greater than the array')-.15 F 2.765(sm) +-.55 G .265(aximum inde)-2.765 F 2.765(x\()-.15 G(for)-2.765 E(inde)108 +314.4 Q -.15(xe)-.15 G 3.402(da).15 G .902 +(rrays\) or added as additional k)-3.402 F -.15(ey)-.1 G.15 E .901 +(alue pairs in an associati)-.25 F 1.201 -.15(ve a)-.25 H(rray).15 E +5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 326.4 +S(lued v).25 E(ariable,)-.25 E F1(value)2.5 E F0(is e)2.5 E (xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G -(alue.)-2.75 E 3.383(Av)108 285.6 S .883(ariable can be assigned the) --3.633 F F1(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 +(alue.)-2.75 E 3.382(Av)108 343.2 S .882(ariable can be assigned the) +-3.632 F F1(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 (ute using the)-.2 F F33.382 E F0 .882(option to the)3.382 F F3 -(declar)3.382 E(e)-.18 E F0(or)3.382 E F3(local)3.382 E F0 -.2(bu)3.382 -G .882(iltin com-).2 F .315(mands \(see the descriptions of)108 297.6 R -F3(declar)2.815 E(e)-.18 E F0(and)2.815 E F3(local)2.815 E F0(belo)2.815 -E .316(w\) to create a)-.25 F F1(namer)2.816 E(ef)-.37 E F0 2.816(,o)C -2.816(rar)-2.816 G .316(eference to another v)-2.816 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.522 -(sv)-.55 G 2.522(alue. A)-2.772 F .819 -(nameref is commonly used within shell functions to refer to a v)108 -333.6 R .818(ariable whose name is passed as an ar)-.25 F(gu-)-.18 E -.131(ment to the function.)108 345.6 R -.15(Fo)5.131 G 2.631(ri).15 G -.131(nstance, if a v)-2.631 F .132 -(ariable name is passed to a shell function as its \214rst ar)-.25 F -.132(gument, run-)-.18 F(ning)108 357.6 Q/F4 10/Courier@0 SF -(declare -n ref=$1)144 375.6 Q F0 .303 -(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 .302(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 .275(name w)108 417.6 R .275(as passed as)-.1 F F3 -($1)2.775 E F0 5.275(.I)C 2.775(ft)-5.275 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 .274(ute, the list of w)-.2 F .274 -(ords can)-.1 F .354(be a list of shell v)108 429.6 R .354 -(ariables, and a name reference will be established for each w)-.25 F -.355(ord in the list, in turn, when)-.1 F .086(the loop is e)108 441.6 R --.15(xe)-.15 G 2.586(cuted. Array).15 F -.25(va)2.586 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.585 E 2.585(ute. Ho)-.2 F(we)-.25 E -.15(ve) --.25 G .885 -.4(r, n).15 H .085(ameref v).4 F .085(ariables can ref-) --.25 F .883(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 .884 -(option to the)3.383 F F3(unset)108 465.6 Q F0 -.2(bu)2.558 G 2.558 -(iltin. Otherwise,).2 F(if)2.558 E F3(unset)2.558 E F0 .058(is e)2.558 F --.15(xe)-.15 G .058(cuted with the name of a nameref v).15 F .057 -(ariable as an ar)-.25 F .057(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 .705(positional par)4.455 F(ameter)-.15 E F0 .706(is a param\ -eter denoted by one or more digits, other than the single digit 0.)3.935 -F(Posi-)5.706 E .445(tional parameters are assigned from the shell')108 -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 .444(d, and may be reassigned using).1 F(the) -108 530.4 Q F3(set)3.333 E F0 -.2(bu)3.333 G .833(iltin command.).2 F -.834(Positional parameters may not be assigned to with assignment state\ -ments.)5.833 F(The)5.834 E .334(positional parameters are temporarily r\ -eplaced when a shell function is e)108 542.4 R -.15(xe)-.15 G .333 -(cuted \(see).15 F F2(FUNCTIONS)2.833 E F0(belo)2.583 E(w\).)-.25 E -1.403(When a positional parameter consisting of more than a single digi\ -t is e)108 559.2 R 1.404(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.675 -(The shell treats se)108 600 R -.15(ve)-.25 G 1.675 -(ral parameters specially).15 F 6.675(.T)-.65 G 1.674 +(declar)3.382 E(e)-.18 E F0(or)3.383 E F3(local)3.383 E F0 -.2(bu)3.383 +G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 355.2 R +F3(declar)2.816 E(e)-.18 E F0(and)2.816 E F3(local)2.816 E F0(belo)2.816 +E .316(w\) to create a)-.25 F F1(namer)2.815 E(ef)-.37 E F0 2.815(,o)C +2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 4.04 +(able. This)108 367.2 R(allo)4.04 E 1.54(ws v)-.25 F 1.54 +(ariables to be manipulated indirectly)-.25 F 6.54(.W)-.65 G(hene)-6.54 +E -.15(ve)-.25 G 4.04(rt).15 G 1.54(he nameref v)-4.04 F 1.54 +(ariable is referenced,)-.25 F .54 +(assigned to, unset, or has its attrib)108 379.2 R .54 +(utes modi\214ed \(other than using or changing the)-.2 F F1(namer)3.04 +E(ef)-.37 E F0(attrib)3.04 E .54(ute itself\),)-.2 F .352 +(the operation is actually performed on the v)108 391.2 R .352 +(ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 2.852(sv) +-.55 G 2.852(alue. A)-3.102 F .352(nameref is)2.852 F .972 +(commonly used within shell functions to refer to a v)108 403.2 R .971 +(ariable whose name is passed as an ar)-.25 F .971(gument to the)-.18 F +2.5(function. F)108 415.2 R(or instance, if a v)-.15 E +(ariable name is passed to a shell function as its \214rst ar)-.25 E +(gument, running)-.18 E/F4 10/Courier@0 SF(declare -n ref=$1)144 433.2 Q +F0 .302(inside the function creates a nameref v)108 451.2 R(ariable)-.25 +E F3 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v) +-.25 F .303(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E +3.592(ment. References)108 463.2 R 1.092(and assignments to)3.592 F F3 +-.18(re)3.592 G(f).18 E F0 3.592(,a)C 1.092(nd changes to its attrib) +-3.592 F 1.092(utes, are treated as references, assign-)-.2 F .143 +(ments, and attrib)108 475.2 R .144(ute modi\214cations to the v)-.2 F +.144(ariable whose name w)-.25 F .144(as passed as)-.1 F F3($1)2.644 E +F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144 +(ariable in a)-.25 F F3 -.25(fo)108 487.2 S(r).25 E F0 .868 +(loop has the nameref attrib)3.368 F .868(ute, the list of w)-.2 F .867 +(ords can be a list of shell v)-.1 F .867 +(ariables, and a name reference)-.25 F .509 +(will be established for each w)108 499.2 R .509 +(ord in the list, in turn, when the loop is e)-.1 F -.15(xe)-.15 G 3.009 +(cuted. Array).15 F -.25(va)3.009 G .509(riables cannot be).25 F(gi)108 +511.2 Q -.15(ve)-.25 G 4.193(nt).15 G(he)-4.193 E F3(namer)4.193 E(ef) +-.18 E F0(attrib)4.193 E 4.193(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G +2.493 -.4(r, n).15 H 1.693(ameref v).4 F 1.692 +(ariables can reference array v)-.25 F 1.692(ariables and subscripted) +-.25 F .101(array v)108 523.2 R 2.601(ariables. Namerefs)-.25 F .101 +(can be unset using the)2.601 F F32.602 E F0 .102(option to the) +2.602 F F3(unset)2.602 E F0 -.2(bu)2.602 G 2.602(iltin. Otherwise,).2 F +(if)2.602 E F3(unset)2.602 E F0 .102(is e)2.602 F -.15(xe)-.15 G(-).15 E +.443(cuted with the name of a nameref v)108 535.2 R .442 +(ariable as an ar)-.25 F .442(gument, the v)-.18 F .442 +(ariable referenced by the nameref v)-.25 F(ariable)-.25 E +(will be unset.)108 547.2 Q F3 -.2(Po)87 564 S(sitional P).2 E +(arameters)-.1 E F0(A)108 576 Q F1 .705(positional par)4.455 F(ameter) +-.15 E F0 .706(is a parameter denoted by one or more digits, other than\ + the single digit 0.)3.935 F(Posi-)5.706 E .445 +(tional parameters are assigned from the shell')108 588 R 2.944(sa)-.55 +G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1(ke) +.2 G .444(d, and may be reassigned using).1 F(the)108 600 Q F3(set)3.333 +E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional parameters\ + may not be assigned to with assignment statements.)5.833 F(The)5.834 E +(positional parameters are temporarily replaced when a shell function i\ +s e)108 612 Q -.15(xe)-.15 G(cuted \(see).15 E F2(FUNCTIONS)2.5 E F0 +(belo)2.25 E(w\).)-.25 E 1.404(When a positional parameter consisting o\ +f more than a single digit is e)108 628.8 R 1.403 +(xpanded, it must be enclosed in)-.15 F(braces \(see)108 640.8 Q F2(EXP) +2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F3(Special P)87 657.6 Q +(arameters)-.1 E F0 1.674(The shell treats se)108 669.6 R -.15(ve)-.25 G +1.674(ral parameters specially).15 F 6.675(.T)-.65 G 1.675 (hese parameters may only be referenced; assignment to)-6.675 F -(them is not allo)108 612 Q(wed.)-.25 E F3(*)108 624 Q F0 .223 -(Expands to the positional parameters, starting from one.)31 F .224 -(When the e)5.224 F .224(xpansion is not within double)-.15 F .663 -(quotes, each positional parameter e)144 636 R .662 +(them is not allo)108 681.6 Q(wed.)-.25 E F3(*)108 693.6 Q F0 .224 +(Expands to the positional parameters, starting from one.)144 693.6 R +.223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662 +(quotes, each positional parameter e)144 705.6 R .662 (xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662 -(xts where it is performed,)-.15 F 1.081(those w)144 648 R 1.081 -(ords are subject to further w)-.1 F 1.082(ord splitting and pathname e) --.1 F 3.582(xpansion. When)-.15 F 1.082(the e)3.582 F(xpansion)-.15 E -.915(occurs within double quotes, it e)144 660 R .914 -(xpands to a single w)-.15 F .914(ord with the v)-.1 F .914 -(alue of each parameter sepa-)-.25 F .89 -(rated by the \214rst character of the)144 672 R F2(IFS)3.39 E F0 .89 -(special v)3.14 F 3.39(ariable. That)-.25 F .891(is, ")3.391 F F3($*)A -F0 3.391("i)C 3.391(se)-3.391 G(qui)-3.391 E -.25(va)-.25 G .891 -(lent to ").25 F F3($1)A F1(c)A F3($2)A F1(c)A F3(...)A F0(",)A(where) -144 684 Q F1(c)3.533 E F0 .832(is the \214rst character of the v)3.643 F -.832(alue of the)-.25 F F2(IFS)3.332 E F0 -.25(va)3.082 G 3.332 -(riable. If).25 F F2(IFS)3.332 E F0 .832(is unset, the parameters are) -3.082 F(separated by spaces.)144 696 Q(If)5 E F2(IFS)2.5 E F0 -(is null, the parameters are joined without interv)2.25 E -(ening separators.)-.15 E F3(@)108 708 Q F0 .605 -(Expands to the positional parameters, starting from one.)26.7 F .606 -(When the e)5.605 F .606(xpansion occurs within dou-)-.15 F .114 -(ble quotes, each parameter e)144 720 R .114(xpands to a separate w)-.15 -F 2.614(ord. That)-.1 F .113(is, ")2.613 F F3($@)A F0 2.613("i)C 2.613 -(se)-2.613 G(qui)-2.613 E -.25(va)-.25 G .113(lent to ").25 F F3($1)A F0 -2.613("")C F3($2)-2.613 E F0 2.613(".)C(..)-2.613 E(GNU Bash 4.3)72 768 -Q(2014 February 2)141.79 E(9)195.95 E 0 Cg EP +(xts where it is performed,)-.15 F 1.082(those w)144 717.6 R 1.082 +(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e) +-.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E +2.548(occurs within double quotes, it e)144 729.6 R 2.549 +(xpands to a single w)-.15 F 2.549(ord with the v)-.1 F 2.549 +(alue of each parameter)-.25 F(GNU Bash 4.4)72 768 Q(2016 August 26) +142.895 E(9)197.055 E 0 Cg EP %%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 .134(If the double-quoted e)144 84 R .134 -(xpansion occurs within a w)-.15 F .135(ord, the e)-.1 F .135 -(xpansion of the \214rst parameter is joined)-.15 F .151(with the be)144 -96 R .151(ginning part of the original w)-.15 F .151(ord, and the e)-.1 -F .15(xpansion of the last parameter is joined with)-.15 F .337 -(the last part of the original w)144 108 R 2.837(ord. When)-.1 F .338 -(there are no positional parameters, ")2.837 F/F1 10/Times-Bold@0 SF($@) -A F0 2.838("a)C(nd)-2.838 E F1($@)2.838 E F0 -.15(ex)2.838 G(pand).15 E -(to nothing \(i.e., the)144 120 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15(ve) --.15 G(d\).).15 E F1(#)108 132 Q F0 -(Expands to the number of positional parameters in decimal.)31 E F1(?) -108 144 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 -156 Q F0 .882 -(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.381 E F0 -.2(bu)3.381 G .881 -(iltin command, or).2 F(those set by the shell itself \(such as the)144 -168 Q F12.5 E F0(option\).)2.5 E F1($)108 180 Q F0 .214 -(Expands to the process ID of the shell.)31 F .214 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 3.068 +(separated by the \214rst character of the)144 84 R/F1 9/Times-Bold@0 SF +(IFS)5.568 E F0 3.068(special v)5.318 F 5.568(ariable. That)-.25 F 3.067 +(is, ")5.568 F/F2 10/Times-Bold@0 SF($*)A F0 5.567("i)C 5.567(se)-5.567 +G(qui)-5.567 E -.25(va)-.25 G 3.067(lent to).25 F(")144 96 Q F2($1)A/F3 +10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0 1.519(", where)B F3 +(c)4.219 E F0 1.519(is the \214rst character of the v)4.329 F 1.52 +(alue of the)-.25 F F1(IFS)4.02 E F0 -.25(va)3.77 G 4.02(riable. If).25 +F F1(IFS)4.02 E F0 1.52(is unset, the)3.77 F .833 +(parameters are separated by spaces.)144 108 R(If)5.833 E F1(IFS)3.333 E +F0 .832(is null, the parameters are joined without interv)3.083 F(ening) +-.15 E(separators.)144 120 Q F2(@)108 132 Q F0 .605 +(Expands to the positional parameters, starting from one.)144 132 R .606 +(When the e)5.605 F .606(xpansion occurs within dou-)-.15 F .114 +(ble quotes, each parameter e)144 144 R .114(xpands to a separate w)-.15 +F 2.614(ord. That)-.1 F .113(is, ")2.613 F F2($@)A F0 2.613("i)C 2.613 +(se)-2.613 G(qui)-2.613 E -.25(va)-.25 G .113(lent to ").25 F F2($1)A F0 +2.613("")C F2($2)-2.613 E F0 2.613(".)C(..)-2.613 E .134 +(If the double-quoted e)144 156 R .134(xpansion occurs within a w)-.15 F +.135(ord, the e)-.1 F .135(xpansion of the \214rst parameter is joined) +-.15 F .151(with the be)144 168 R .151(ginning part of the original w) +-.15 F .151(ord, and the e)-.1 F .15 +(xpansion of the last parameter is joined with)-.15 F .337 +(the last part of the original w)144 180 R 2.837(ord. When)-.1 F .338 +(there are no positional parameters, ")2.837 F F2($@)A F0 2.838("a)C(nd) +-2.838 E F2($@)2.838 E F0 -.15(ex)2.838 G(pand).15 E +(to nothing \(i.e., the)144 192 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15(ve) +-.15 G(d\).).15 E F2(#)108 204 Q F0 +(Expands to the number of positional parameters in decimal.)144 204 Q F2 +(?)108 216 Q F0(Expands to the e)144 216 Q +(xit status of the most recently e)-.15 E -.15(xe)-.15 G(cuted fore).15 +E(ground pipeline.)-.15 E F2108 228 Q F0 .882 +(Expands to the current option \215ags as speci\214ed upon in)144 228 R +-.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.381 E F0 -.2(bu)3.381 G +.881(iltin command, or).2 F(those set by the shell itself \(such as the) +144 240 Q F22.5 E F0(option\).)2.5 E F2($)108 252 Q F0 .214 +(Expands to the process ID of the shell.)144 252 R .214 (In a \(\) subshell, it e)5.214 F .214 (xpands to the process ID of the current)-.15 F -(shell, not the subshell.)144 192 Q F1(!)108 204 Q F0 .499(Expands to t\ +(shell, not the subshell.)144 264 Q F2(!)108 276 Q F0 .499(Expands to t\ he process ID of the job most recently placed into the background, whet\ -her e)32.67 F -.15(xe)-.15 G(cuted).15 E -(as an asynchronous command or using the)144 216 Q F1(bg)2.5 E F0 -.2 -(bu)2.5 G(iltin \(see).2 E/F2 9/Times-Bold@0 SF(JOB CONTR)2.5 E(OL)-.27 -E F0(belo)2.25 E(w\).)-.25 E F1(0)108 228 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 240 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 252 R F1($0)2.869 E F0 .369(is set to the \214rst ar) +her e)144 276 R -.15(xe)-.15 G(cuted).15 E +(as an asynchronous command or using the)144 288 Q F2(bg)2.5 E F0 -.2 +(bu)2.5 G(iltin \(see).2 E F1(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E +(w\).)-.25 E F2(0)108 300 Q F0 1.691 +(Expands to the name of the shell or shell script.)144 300 R 1.692 +(This is set at shell initialization.)6.692 F(If)6.692 E F2(bash)4.192 E +F0(is)4.192 E(in)144 312 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578 +(ith a \214le of commands,)-3.078 F F2($0)3.078 E F0 .578 +(is set to the name of that \214le.)3.078 F(If)5.577 E F2(bash)3.077 E +F0 .577(is started with the)3.077 F F23.077 E F0 .368 +(option, then)144 324 R F2($0)2.869 E F0 .369(is set to the \214rst ar) 2.869 F .369(gument after the string to be e)-.18 F -.15(xe)-.15 G .369 (cuted, if one is present.).15 F(Other)5.369 E(-)-.2 E -(wise, it is set to the \214lename used to in)144 264 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 276 -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 288 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 300 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 312 S -1.6(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 +(wise, it is set to the \214lename used to in)144 336 Q -.2(vo)-.4 G -.1 +(ke).2 G F2(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 H +2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F2(_)108 348 +Q F0 .055(At shell startup, set to the absolute pathname used to in)144 +348 R -.2(vo)-.4 G .255 -.1(ke t).2 H .054 +(he shell or shell script being e).1 F -.15(xe)-.15 G(cuted).15 E .691 +(as passed in the en)144 360 R .691(vironment or ar)-.4 F .691 +(gument list.)-.18 F(Subsequently)5.691 E 3.191(,e)-.65 G .692 +(xpands to the last ar)-3.341 F .692(gument to the)-.18 F(pre)144 372 Q +.571(vious command, after e)-.25 F 3.071(xpansion. Also)-.15 F .571 +(set to the full pathname used to in)3.071 F -.2(vo)-.4 G .77 -.1(ke e) +.2 H .57(ach command).1 F -.15(exe)144 384 S 1.6 +(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 (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 -324 Q(ed.)-.1 E F1(Shell V)87 340.8 Q(ariables)-.92 E F0(The follo)108 -352.8 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F1 -.3(BA) -108 369.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 381.6 S(SHOPTS).3 E F0 2.549(Ac)144 393.6 S .049 +396 Q(ed.)-.1 E F2(Shell V)87 412.8 Q(ariables)-.92 E F0(The follo)108 +424.8 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA) +108 441.6 S(SH).3 E F0(Expands to the full \214lename used to in)144 +441.6 Q -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E +F0(.)A F2 -.3(BA)108 453.6 S(SHOPTS).3 E F0 2.549(Ac)144 465.6 S .049 (olon-separated list of enabled shell options.)-2.549 F .049(Each w) 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 405.6 -R F1(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F2 +(gument for the)-.18 F F22.548 E F0 1.398(option to the)144 477.6 +R F2(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F1 1.398(SHELL B)3.898 F(UIL)-.09 E 1.398(TIN COMMANDS)-.828 F F0(belo) 3.648 E 3.898(w\). The)-.25 F(options)3.898 E .477(appearing in)144 -417.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 429.6 Q F1(bash) -3.141 E F0 .642(starts up, each shell option in the list will be enable\ -d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142 -F(This v)144 441.6 Q(ariable is read-only)-.25 E(.)-.65 E F1 -.3(BA)108 -453.6 S(SHPID).3 E F0 .188(Expands to the process ID of the current)144 -465.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 477.6 Q F1(bash)2.5 -E F0(to be re-initialized.)2.5 E F1 -.3(BA)108 489.6 S(SH_ALIASES).3 E -F0 1.195(An associati)144 501.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v) +489.6 R F1 -.27(BA)2.977 G(SHOPTS).27 E F0 .477(are those reported as) +2.727 F F3(on)3.207 E F0(by)3.217 E F2(shopt)2.977 E F0 5.476(.I)C 2.976 +(ft)-5.476 G .476(his v)-2.976 F .476(ariable is in the en)-.25 F +(vironment)-.4 E(when)144 501.6 Q F2(bash)3.141 E F0 .642(starts up, ea\ +ch shell option in the list will be enabled before reading an)3.141 F +3.142(ys)-.15 G .642(tartup \214les.)-3.142 F(This v)144 513.6 Q +(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 525.6 S(SHPID).3 E +F0 .188(Expands to the process ID of the current)144 537.6 R F2(bash) +2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F +F2($$)2.687 E F0 .187(under certain circum-)2.687 F +(stances, such as subshells that do not require)144 549.6 Q F2(bash)2.5 +E F0(to be re-initialized.)2.5 E F2 -.3(BA)108 561.6 S(SH_ALIASES).3 E +F0 1.195(An associati)144 573.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v) .15 F 1.195(ariable whose members correspond to the internal list of al\ -iases as main-)-.25 F .025(tained by the)144 513.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 525.6 Q -.15(ve)-.15 G 2.5 -(df).15 G(rom the alias list.)-2.5 E F1 -.3(BA)108 537.6 S(SH_ARGC).3 E -F0 .934(An array v)144 549.6 R .934(ariable whose v)-.25 F .934 +iases as main-)-.25 F .16(tained by the)144 585.6 R F2(alias)2.66 E F0 +-.2(bu)2.66 G 2.66(iltin. Elements).2 F .16 +(added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15 +(ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503 +(array elements currently does not cause aliases to be remo)144 597.6 R +-.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If) +9.503 E F2 -.3(BA)144 609.6 S(SH_ALIASES).3 E F0 +(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 +(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) +-2.5 E F2 -.3(BA)108 621.6 S(SH_ARGC).3 E F0 .935(An array v)144 633.6 R +.935(ariable whose v)-.25 F .934 (alues are the number of parameters in each frame of the current)-.25 F -F1(bash)3.435 E F0 -.15(exe)144 561.6 S .535(cution call stack.).15 F +F2(bash)3.434 E F0 -.15(exe)144 645.6 S .535(cution call stack.).15 F .535(The number of parameters to the current subroutine \(shell functio\ -n or script)5.535 F -.15(exe)144 573.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 -585.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 597.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 609.6 S(SH_ARGV).3 E F0 .979(An array v)144 -621.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 633.6 R -1.424(call is at the bottom.)144 645.6 R 1.424(When a subroutine is e) +n or script)5.535 F -.15(exe)144 657.6 S .142(cuted with).15 F F2(.) +2.642 E F0(or)2.642 E F2(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa) +-2.642 G 2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141 +(When a subroutine is e)5.141 F -.15(xe)-.15 G .141 +(cuted, the number of).15 F 2.63(parameters passed is pushed onto)144 +669.6 R F1 -.27(BA)5.13 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0 +2.63(The shell sets)7.13 F F1 -.27(BA)5.131 G(SH_ARGC).27 E F0 2.631 +(only when in)4.881 F -.15(ex)144 681.6 S(tended deb).15 E +(ugging mode \(see the description of the)-.2 E F2(extdeb)2.5 E(ug)-.2 E +F0(option to the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E +(w\))-.25 E F2 -.3(BA)108 693.6 S(SH_ARGV).3 E F0 .98(An array v)144 +705.6 R .979(ariable containing all of the parameters in the current) +-.25 F F2(bash)3.479 E F0 -.15(exe)3.479 G .979(cution call stack.).15 F +(The)5.979 E .275(\214nal parameter of the last subroutine call is at t\ +he top of the stack; the \214rst parameter of the initial)144 717.6 R +1.424(call is at the bottom.)144 729.6 R 1.424(When a subroutine is e) 6.424 F -.15(xe)-.15 G 1.424 -(cuted, the parameters supplied are pushed onto).15 F F2 -.27(BA)144 -657.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 669.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 681.6 S(SH_CMDS).3 E -F0 .667(An associati)144 693.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 705.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 717.6 Q -.15(ve)-.15 G 2.5 -(df).15 G(rom the hash table.)-2.5 E(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(10)190.95 E 0 Cg EP +(cuted, the parameters supplied are pushed onto).15 F(GNU Bash 4.4)72 +768 Q(2016 August 26)142.895 E(10)192.055 E 0 Cg EP %%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_COMMAND).3 E F0 1.242 -(The command currently being e)144 96 R -.15(xe)-.15 G 1.243 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 +SF -.27(BA)144 84 S(SH_ARGV).27 E/F2 9/Times-Roman@0 SF(.)A F0 2.197 +(The shell sets)6.697 F F1 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197 +(only when in e)4.447 F 2.197(xtended deb)-.15 F 2.197 +(ugging mode \(see the)-.2 F(description of the)144 96 Q/F3 10 +/Times-Bold@0 SF(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F3(shopt) +2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E(w\))-.25 E F3 -.3(BA)108 108 S +(SH_CMDS).3 E F0 .668(An associati)144 120 R .968 -.15(ve a)-.25 H .668 +(rray v).15 F .668(ariable whose members correspond to the internal has\ +h table of commands)-.25 F .195(as maintained by the)144 132 R F3(hash) +2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196 +(added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15 +(ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\ +t cause command names to be remo)144 144 R -.15(ve)-.15 G 3.352(df).15 G +.852(rom the hash)-3.352 F 2.5(table. If)144 156 R F3 -.3(BA)2.5 G +(SH_CMDS).3 E F0(is unset, it loses its special properties, e)2.5 E -.15 +(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G +(ubsequently reset.)-2.5 E F3 -.3(BA)108 168 S(SH_COMMAND).3 E F0 1.242 +(The command currently being e)144 180 R -.15(xe)-.15 G 1.243 (cuted or about to be e).15 F -.15(xe)-.15 G 1.243 (cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F (command as the result of a trap, in which case it is the command e)144 -108 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 -120 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 132 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 144 S(SH_LINENO).3 E F0 .693 -(An array v)144 156 R .692(ariable whose members are the line numbers i\ -n source \214les where each corresponding)-.25 F .969(member of)144 168 -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 180 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 192 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 +192 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F3 -.3(BA)108 +204 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 216 Q +(gument to the)-.18 E F32.5 E F0(in)2.5 E -.2(vo)-.4 G +(cation option.).2 E F3 -.3(BA)108 228 S(SH_LINENO).3 E F0 .693 +(An array v)144 240 R .692(ariable whose members are the line numbers i\ +n source \214les where each corresponding)-.25 F .969(member of)144 252 +R F1(FUNCN)3.469 E(AME)-.18 E F0 -.1(wa)3.219 G 3.469(si).1 G -1.9 -.4 +(nv o)-3.469 H -.1(ke).4 G(d.).1 E F3(${B)5.969 E(ASH_LINENO[)-.3 E/F4 +10/Times-Italic@0 SF($i)A F3(]})A F0 .97 +(is the line number in the source)3.469 F 14.672(\214le \()144 264 R F3 +(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F3(]})A F0 17.172(\)w)C(here)-17.172 +E F3(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F3(]})A F0 -.1(wa)17.172 G +17.171(sc).1 G 14.671(alled \(or)-17.171 F F3(${B)144 276 Q(ASH_LINENO[) +-.3 E F4($i-1)A F3(]})A F0 .115 +(if referenced within another shell function\).)2.615 F(Use)5.115 E F1 (LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144 -204 Q(.)-.55 E F1 -.3(BA)108 216 S(SH_REMA).3 E(TCH)-.95 E F0 .006 -(An array v)144 228 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 240 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 252 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 264 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E -F1 -.3(BA)108 276 S(SH_SOURCE).3 E F0 .125(An array v)144 288 R .125(ar\ +288 Q(.)-.55 E F3 -.3(BA)108 300 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E +-.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 312 S 1.57(olon-separated list of\ + directories in which the shell looks for dynamically loadable b)-4.07 F +(uiltins)-.2 E(speci\214ed by the)144 324 Q F3(enable)2.5 E F0(command.) +2.5 E F3 -.3(BA)108 336 S(SH_REMA).3 E(TCH)-.95 E F0 .005(An array v)144 +348 R .005(ariable whose members are assigned by the)-.25 F F3(=~)2.506 +E F0 .006(binary operator to the)2.506 F F3([[)2.506 E F0 .006 +(conditional com-)2.506 F 2.507(mand. The)144 360 R .007 +(element with inde)2.507 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 +(he portion of the string matching the entire re)-2.507 F .006(gular e) +-.15 F(xpression.)-.15 E .997(The element with inde)144 372 R(x)-.15 E +F4(n)3.497 E F0 .997(is the portion of the string matching the)3.497 F +F4(n)3.498 E F0 .998(th parenthesized sube)B(xpres-)-.15 E 2.5 +(sion. This)144 384 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E +F3 -.3(BA)108 396 S(SH_SOURCE).3 E F0 .126(An array v)144 408 R .125(ar\ iable whose members are the source \214lenames where the corresponding \ -shell function)-.25 F .781(names in the)144 300 R F2(FUNCN)3.28 E(AME) +shell function)-.25 F .78(names in the)144 420 R F1(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 312 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 324 S(SH_SUBSHELL).3 E F0 -.296(Incremented by one within each subshell or subshell en)144 336 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 348 Q 2.5(vironment. The)-.4 F(initial v) -2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 360 S(SH_VERSINFO).3 E F0 2.645 -(Ar)144 372 S .145(eadonly array v)-2.645 F .144 +(The shell function)5.78 F F3(${FUNCN)3.281 E(AME[)-.2 E F4($i)A F3(]})A +F0(is)3.281 E(de\214ned in the \214le)144 432 Q F3(${B)2.5 E +(ASH_SOURCE[)-.3 E F4($i)A F3(]})A F0(and called from)2.5 E F3(${B)2.5 E +(ASH_SOURCE[)-.3 E F4($i+1)A F3(]})A F0(.)A F3 -.3(BA)108 444 S +(SH_SUBSHELL).3 E F0 .296 +(Incremented by one within each subshell or subshell en)144 456 R .296 +(vironment when the shell be)-.4 F .296(gins e)-.15 F -.15(xe)-.15 G +(cuting).15 E(in that en)144 468 Q 2.5(vironment. The)-.4 F(initial v) +2.5 E(alue is 0.)-.25 E F3 -.3(BA)108 480 S(SH_VERSINFO).3 E F0 2.644 +(Ar)144 492 S .144(eadonly array v)-2.644 F .144 (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 384 S -(lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 -(BA)144 402 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 414 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 426 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 438 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 450 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 462 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 474 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 486 Q -(ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 -498 Q(ORD)-.1 E F0 .396(An inde)144 510 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 522 R -.25(va)-.2 G 1.181 +(ersion information for this instance of)-.15 F F3(bash)2.645 E F0 5.145 +(.T)C(he)-5.145 E -.25(va)144 504 S +(lues assigned to the array members are as follo).25 E(ws:)-.25 E F3 -.3 +(BA)144 522 S(SH_VERSINFO[).3 E F0(0)A F3(])A F0(The major v)264 522 Q +(ersion number \(the)-.15 E F4 -.37(re)2.5 G(lease).37 E F0(\).)A F3 -.3 +(BA)144 534 S(SH_VERSINFO[).3 E F0(1)A F3(])A F0(The minor v)264 534 Q +(ersion number \(the)-.15 E F4(ver)2.5 E(sion)-.1 E F0(\).)A F3 -.3(BA) +144 546 S(SH_VERSINFO[).3 E F0(2)A F3(])A F0(The patch le)264 546 Q -.15 +(ve)-.25 G(l.).15 E F3 -.3(BA)144 558 S(SH_VERSINFO[).3 E F0(3)A F3(])A +F0(The b)264 558 Q(uild v)-.2 E(ersion.)-.15 E F3 -.3(BA)144 570 S +(SH_VERSINFO[).3 E F0(4)A F3(])A F0(The release status \(e.g.,)264 570 Q +F4(beta1)2.5 E F0(\).)A F3 -.3(BA)144 582 S(SH_VERSINFO[).3 E F0(5)A F3 +(])A F0(The v)264 582 Q(alue of)-.25 E F1(MA)2.5 E(CHTYPE)-.495 E F2(.)A +F3 -.3(BA)108 594 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 606 Q +(ersion of this instance of)-.15 E F3(bash)2.5 E F0(.)A F3(COMP_CW)108 +618 Q(ORD)-.1 E F0 .397(An inde)144 630 R 2.897(xi)-.15 G(nto)-2.897 E +F3(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 +(ord containing the current cursor position.)-.1 F .396(This v)5.396 F +(ari-)-.25 E 1.18(able is a)144 642 R -.25(va)-.2 G 1.181 (ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 -(db).1 G 3.681(yt)-3.681 G 1.18(he programmable completion f)-3.681 F -1.18(acilities \(see)-.1 F F1(Pr)144 534 Q(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 546 Q F0(The k)144 558 Q .3 +(db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F +1.181(acilities \(see)-.1 F F3(Pr)144 654 Q(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F3(COMP_KEY)108 666 Q F0(The k)144 678 Q .3 -.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 -.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 -H(he current completion function.).1 E F1(COMP_LINE)108 570 Q F0 1.207 -(The current command line.)144 582 R 1.208(This v)6.208 F 1.208 +H(he current completion function.).1 E F3(COMP_LINE)108 690 Q F0 1.208 +(The current command line.)144 702 R 1.208(This v)6.208 F 1.208 (ariable is a)-.25 F -.25(va)-.2 G 1.208 -(ilable only in shell functions and e).25 F 1.208(xternal com-)-.15 F -2.849(mands in)144 594 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 +(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F +2.848(mands in)144 714 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 (yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 -(acilities \(see)-.1 F F1(Pr)5.349 E 2.848(ogrammable Completion)-.18 F -F0(belo)144 606 Q(w\).)-.25 E F1(COMP_POINT)108 618 Q F0 .666(The inde) -144 630 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 -642 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 654 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 666 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 -678 Q F0 .042(Set to an inte)144 690 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 702 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 714 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 726 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(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(11)190.95 E 0 Cg EP +(acilities \(see)-.1 F F3(Pr)5.349 E 2.849(ogrammable Completion)-.18 F +F0(belo)144 726 Q(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26) +142.895 E(11)192.055 E 0 Cg EP %%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 -.15(ex)144 84 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 10 -/Times-Bold@0 SF(Pr)5.428 E(ogrammable)-.18 E(Completion)144 96 Q F0 -(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 108 Q(ORDBREAKS)-.1 E F0 1.335 -(The set of characters that the)144 120 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 132 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 144 Q F1(COMP_W)108 156 Q(ORDS)-.1 E -F0 .653(An array v)144 168 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 180 R +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(COMP_POINT)108 84 Q F0 .667(The inde)144 96 R 3.167(xo)-.15 G 3.167 +(ft)-3.167 G .666(he current cursor position relati)-3.167 F .966 -.15 +(ve t)-.25 H 3.166(ot).15 G .666(he be)-3.166 F .666 +(ginning of the current command.)-.15 F .666(If the)5.666 F .534 +(current cursor position is at the end of the current command, the v)144 +108 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 120 Q F0 7.006(.T)C 2.006(his v)-7.006 F 2.006 +(ariable is a)-.25 F -.25(va)-.2 G 2.005 +(ilable only in shell functions and e).25 F 2.005(xternal commands)-.15 +F(in)144 132 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +(he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E +(ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108 +144 Q F0 .041(Set to an inte)144 156 R .041(ger v)-.15 F .041(alue corr\ +esponding to the type of completion attempted that caused a completion) +-.25 F .338(function to be called:)144 168 R/F2 10/Times-Italic@0 SF -.5 +(TA)2.837 G(B).5 E F0 2.837(,f)C .337(or normal completion,)-2.837 F F2 +(?)2.837 E F0 2.837(,f)C .337(or listing completions after successi) +-2.837 F .637 -.15(ve t)-.25 H(abs,).15 E F2(!)144 180 Q F0 4.091(,f)C +1.591(or listing alternati)-4.091 F -.15(ve)-.25 G 4.092(so).15 G 4.092 +(np)-4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@) +4.092 E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w) +-4.092 F 1.592(ord is not)-.1 F 1.553(unmodi\214ed, or)144 192 R F2(%) +4.053 E F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v) +6.552 F 1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552 +(ilable only in shell functions and).25 F -.15(ex)144 204 S 2.928 +(ternal commands in).15 F -.2(vo)-.4 G -.1(ke).2 G 5.429(db).1 G 5.429 +(yt)-5.429 G 2.929(he programmable completion f)-5.429 F 2.929 +(acilities \(see)-.1 F F1(Pr)5.429 E(ogrammable)-.18 E(Completion)144 +216 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 228 Q(ORDBREAKS)-.1 E F0 +1.336(The set of characters that the)144 240 R F1 -.18(re)3.836 G +(adline).18 E F0 1.336(library treats as w)3.836 F 1.335 +(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If) +144 252 R/F3 9/Times-Bold@0 SF(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626 +(is unset, it loses its special properties, e)2.875 F -.15(ve)-.25 G +3.126(ni).15 G 3.126(fi)-3.126 G 3.126(ti)-3.126 G 3.126(ss)-3.126 G +(ubse-)-3.126 E(quently reset.)144 264 Q F1(COMP_W)108 276 Q(ORDS)-.1 E +F0 .654(An array v)144 288 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E +F0(belo)3.154 E .654(w\) consisting of the indi)-.25 F .653(vidual w) +-.25 F .653(ords in the current command)-.1 F 4.332(line. The)144 300 R 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 -192 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 204 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 216 Q(OC)-.3 E F0 .169(An array v) -144 228 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E +G(adline).18 E F0 -.1(wo)4.332 G 1.832(uld split it, using).1 F F3 +(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.083 E .832(described abo)144 +312 R -.15(ve)-.15 G 5.832(.T).15 G .832(his v)-5.832 F .832 +(ariable is a)-.25 F -.25(va)-.2 G .831 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.331 +(db).1 G 3.331(yt)-3.331 G .831(he programmable)-3.331 F(completion f) +144 324 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 336 Q(OC)-.3 E F0 .168(An array v) +144 348 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E .169 (w\) created to hold the \214le descriptors for output from and input) --.25 F(to an unnamed coprocess \(see)144 240 Q F1(Copr)2.5 E(ocesses) --.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 252 Q -.55(AC) --.9 G(K).55 E F0 2.26(An array v)144 264 R 2.26(ariable \(see)-.25 F F1 +-.25 F(to an unnamed coprocess \(see)144 360 Q F1(Copr)2.5 E(ocesses) +-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 372 Q -.55(AC) +-.9 G(K).55 E F0 2.26(An array v)144 384 R 2.26(ariable \(see)-.25 F F1 (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 276 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 288 R 1.432 +1.094(Directories appear in the stack in the order the)144 396 R 3.594 +(ya)-.15 G 1.095(re displayed by the)-3.594 F F1(dirs)3.595 E F0 -.2(bu) +3.595 G 3.595(iltin. Assigning).2 F(to)3.595 E 1.432 +(members of this array v)144 408 R 1.432 (ariable may be used to modify directories already in the stack, b)-.25 -F 1.432(ut the)-.2 F F1(pushd)144 300 Q F0(and)2.746 E F1(popd)2.746 E +F 1.431(ut the)-.2 F F1(pushd)144 420 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 312 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 324 Q F1(EUID)108 336 -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 348 Q(.)-.65 E F1(FUNCN)108 360 Q(AME) --.2 E F0 .478(An array v)144 372 R .479 +F(ariable)-.25 E .351(will not change the current directory)144 432 R +5.35(.I)-.65 G(f)-5.35 E F3(DIRST)2.85 E -.495(AC)-.81 G(K).495 E F0 .35 +(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.85 +(ni).15 G(f)-2.85 E(it is subsequently reset.)144 444 Q F1(EUID)108 456 +Q F0 1.103(Expands to the ef)144 456 R(fecti)-.25 E 1.403 -.15(ve u)-.25 +H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103 +(nitialized at shell startup.)-3.603 F 1.104(This v)6.103 F 1.104 +(ariable is)-.25 F(readonly)144 468 Q(.)-.65 E F1(FUNCN)108 480 Q(AME) +-.2 E F0 .479(An array v)144 492 R .479 (ariable 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 384 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 396 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 408 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 420 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 438 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 -450 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 462 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 474 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 -486 Q F1(GR)108 498 Q(OUPS)-.3 E F0 1.228(An array v)144 510 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 522 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 534 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 546 -Q F0 .355(The history number)144 558 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 570 Q -.15(ve)-.25 G 2.5(ni).15 G +-.25 F -.15(xe)-.15 G .478(cution call stack.).15 F .276 +(The element with inde)144 504 R 2.776(x0i)-.15 G 2.776(st)-2.776 G .276 +(he name of an)-2.776 F 2.777(yc)-.15 G(urrently-e)-2.777 E -.15(xe)-.15 +G .277(cuting shell function.).15 F .277(The bottom-most)5.277 F .385 +(element \(the one with the highest inde)144 516 R .384(x\) is)-.15 F/F4 +10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .384 +(ariable e)-.25 F .384(xists only when a shell func-)-.15 F .075 +(tion is e)144 528 R -.15(xe)-.15 G 2.575(cuting. Assignments).15 F(to) +2.575 E F3(FUNCN)2.575 E(AME)-.18 E F0(ha)2.325 E .376 -.15(ve n)-.2 H +2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.576 E +(AME)-.18 E F0 .076(is unset, it loses its)2.326 F +(special properties, e)144 540 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 +G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .111(This v)144 +558 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) +.3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 E F0 5.111(.E)C .111 +(ach element of)-5.111 F F1(FUNC-)2.61 E -.2(NA)144 570 S(ME).2 E F0 +1.404(has corresponding elements in)3.904 F F1 -.3(BA)3.904 G(SH_LINENO) +.3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E F0 1.404 +(to describe the)3.904 F .012(call stack.)144 582 R -.15(Fo)5.012 G +2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F2($i)A +F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G .012(alled from the \214le) +-2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.183 +(at line number)144 594 R F1(${B)3.683 E(ASH_LINENO[)-.3 E F2($i)A F1 +(]})A F0 6.183(.T)C(he)-6.183 E F1(caller)3.683 E F0 -.2(bu)3.683 G +1.184(iltin displays the current call stack using).2 F +(this information.)144 606 Q F1(GR)108 618 Q(OUPS)-.3 E F0 1.229 +(An array v)144 630 R 1.228(ariable containing the list of groups of wh\ +ich the current user is a member)-.25 F 6.228(.A)-.55 G(ssign-)-6.228 E +.571(ments to)144 642 R F3(GR)3.071 E(OUPS)-.27 E F0(ha)2.822 E .872 +-.15(ve n)-.2 H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F3 +(GR)3.072 E(OUPS)-.27 E F0 .572 +(is unset, it loses its special properties, e)2.822 F -.15(ve)-.25 G +3.072(ni).15 G 3.072(fi)-3.072 G 3.072(ti)-3.072 G(s)-3.072 E +(subsequently reset.)144 654 Q F1(HISTCMD)108 666 Q F0 .356 +(The history number)144 678 R 2.856(,o)-.4 G 2.856(ri)-2.856 G(nde) +-2.856 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 +(he history list, of the current command.)-2.856 F(If)5.356 E F3 +(HISTCMD)2.855 E F0 .355(is unset, it)2.605 F +(loses its special properties, e)144 690 Q -.15(ve)-.25 G 2.5(ni).15 G 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 582 Q(AME)-.2 E F0 -(Automatically set to the name of the current host.)144 594 Q F1 -(HOSTTYPE)108 606 Q F0 .223(Automatically set to a string that uniquely\ - describes the type of machine on which)144 618 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 630 R(def) -2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 642 Q F0 1.408(Each\ - time this parameter is referenced, the shell substitutes a decimal num\ -ber representing the)144 654 R .078(current sequential line number \(st\ -arting with 1\) within a script or function.)144 666 R .078 -(When not in a script or)5.078 F .306(function, the v)144 678 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 690 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 702 Q -(CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\ -es the system type on which)144 714 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 726 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.3)72 768 Q(2014 February 2) -141.79 E(12)190.95 E 0 Cg EP +(HOSTN)108 702 Q(AME)-.2 E F0 +(Automatically set to the name of the current host.)144 714 Q +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(12)192.055 E 0 Cg EP %%Page: 13 13 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 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 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(HOSTTYPE)108 84 Q F0 .222(Automatically set to a string that uniquel\ +y describes the type of machine on which)144 96 R F1(bash)2.723 E F0 +.223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 108 R(def) +2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 120 Q F0 1.408(Each\ + time this parameter is referenced, the shell substitutes a decimal num\ +ber representing the)144 132 R .078(current sequential line number \(st\ +arting with 1\) within a script or function.)144 144 R .079 +(When not in a script or)5.078 F .307(function, the v)144 156 R .307 +(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E +/F2 9/Times-Bold@0 SF(LINENO)2.806 E F0 .306(is unset, it loses its) +2.556 F(special properties, e)144 168 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5 +(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA) +108 180 Q(CHTYPE)-.55 E F0 .898(Automatically set to a string that full\ +y describes the system type on which)144 192 R F1(bash)3.398 E F0 .899 +(is e)3.398 F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 +204 Q/F3 10/Times-Italic@0 SF(cpu-company-system)2.5 E F0 2.5 +(format. The)2.5 F(def)2.5 E(ault is system-dependent.)-.1 E F1(MAPFILE) +108 216 Q F0 .294(An array v)144 228 R .294(ariable \(see)-.25 F F1 +(Arrays)2.794 E F0(belo)2.794 E .294(w\) created to hold the te)-.25 F +.293(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293 +(iltin when no).2 F -.25(va)144 240 S(riable name is supplied.).25 E F1 +(OLDPWD)108 252 Q F0(The pre)144 264 Q(vious w)-.25 E (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) +(OPT)108 276 Q(ARG)-.9 E F0 1.626(The v)144 288 R 1.627 +(alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F +F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F2 +(SHELL)4.127 E -.09(BU)144 300 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(OPTIND)108 312 Q F0 1.652(The inde)144 324 R 4.152 +(xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 F 1.652(xt ar)-.15 F +1.652(gument to be processed by the)-.18 F F1(getopts)4.151 E F0 -.2(bu) +4.151 G 1.651(iltin command \(see).2 F F2(SHELL)4.151 E -.09(BU)144 336 +S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108 +348 Q F0 .329(Automatically set to a string that describes the operatin\ +g system on which)144 360 R F1(bash)2.83 E F0 .33(is e)2.83 F -.15(xe) +-.15 G 2.83(cuting. The).15 F(def)144 372 Q(ault is system-dependent.) +-.1 E F1(PIPEST)108 384 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 +396 R .61(ariable \(see)-.25 F F1(Arrays)3.11 E F0(belo)3.11 E .61 +(w\) containing a list of e)-.25 F .61(xit status v)-.15 F .61 +(alues from the processes in)-.25 F(the most-recently-e)144 408 Q -.15 +(xe)-.15 G(cuted fore).15 E +(ground pipeline \(which may contain only a single command\).)-.15 E F1 +(PPID)108 420 Q F0(The process ID of the shell')144 420 Q 2.5(sp)-.55 G +2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E +F1(PWD)108 432 Q F0(The current w)144 432 Q +(orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 +(RANDOM)108 444 Q F0 .565 +(Each time this parameter is referenced, a random inte)144 456 R .566 +(ger between 0 and 32767 is generated.)-.15 F(The)5.566 E .01 +(sequence of random numbers may be initialized by assigning a v)144 468 +R .01(alue to)-.25 F F2(RANDOM)2.51 E/F4 9/Times-Roman@0 SF(.)A F0(If) 4.51 E F2(RANDOM)2.51 E F0(is)2.26 E -(unset, it loses its special properties, e)144 348 Q -.15(ve)-.25 G 2.5 +(unset, it loses its special properties, e)144 480 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 +-2.5 E F1(READLINE_LINE)108 492 Q F0 1.546(The contents of the)144 504 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 +-.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F5 10/Courier@0 SF +1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.547(SHELL B)4.047 F(UIL)-.09 +E 1.547(TIN COM-)-.828 F(MANDS)144 516 Q F0(belo)2.25 E(w\).)-.25 E F1 +(READLINE_POINT)108 528 Q F0 .314 +(The position of the insertion point in the)144 540 R F1 -.18(re)2.813 G (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 +.313(or use with)-2.813 F F5 .313(bind -x)2.813 F F0(\(see)2.813 E F2 +(SHELL)2.813 E -.09(BU)144 552 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(REPL)108 564 Q(Y)-.92 E F0 +(Set to the line of input read by the)144 576 Q F1 -.18(re)2.5 G(ad).18 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) +-.18 E F1(SECONDS)108 588 Q F0 .795(Each time this parameter is referen\ +ced, the number of seconds since shell in)144 600 R -.2(vo)-.4 G .795 +(cation is returned.).2 F .713(If a v)144 612 R .712 +(alue is assigned to)-.25 F F2(SECONDS)3.212 E F4(,)A F0 .712(the v) 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) +F .407(of seconds since the assignment plus the v)144 624 R .408 +(alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .408 +(is unset, it loses its special)2.658 F(properties, e)144 636 Q -.15(ve) -.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) +(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 648 Q F0 3.263(Ac)144 660 S +.763(olon-separated list of enabled shell options.)-3.263 F .763(Each w) 5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763 -(gument for the)-.18 F F1144 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.193(The v)144 669.6 R 1.193(alue is used to set the shell')-.25 F -3.693(sc)-.55 G 1.192(ompatibility le)-3.693 F -.15(ve)-.25 G 3.692 -(l. See).15 F 1.192(the description of the)3.692 F F1(shopt)3.692 E F0 --.2(bu)3.692 G(iltin).2 E(belo)144 681.6 Q 2.871(wu)-.25 G(nder)-2.871 E -F1 .371(SHELL B)2.871 F(UIL)-.1 E .371(TIN COMMANDS)-.92 F F0 .372 -(for a description of the v)2.872 F .372(arious compatibility le)-.25 F -(v-)-.25 E .361(els and their ef)144 693.6 R 2.861(fects. The)-.25 F --.25(va)2.861 G .361 -(lue may be a decimal number \(e.g., 4.2\) or an inte).25 F .36 -(ger \(e.g., 42\) corre-)-.15 F 1.75 -(sponding to the desired compatibility le)144 705.6 R -.15(ve)-.25 G -4.251(l. If).15 F F1 -.3(BA)4.251 G(SH_COMP).3 E -.95(AT)-.74 G F0 1.751 -(is unset or set to the empty)5.201 F .578(string, the compatibility le) -144 717.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578 -(et to the def)-3.078 F .578(ault for the current v)-.1 F 3.078 -(ersion. If)-.15 F F1 -.3(BA)3.078 G(SH_COMP).3 E -.95(AT)-.74 G F0(is) -4.028 E .248(set to a v)144 729.6 R .248(alue that is not one of the v) --.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .249 -(ls, the shell prints an error message and).15 F(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(13)190.95 E 0 Cg EP +(gument for the)-.18 F F1144 672 Q F0 1.173(option to the)3.673 F +F1(set)3.673 E F0 -.2(bu)3.673 G 1.173(iltin command \(see).2 F F2 1.174 +(SHELL B)3.674 F(UIL)-.09 E 1.174(TIN COMMANDS)-.828 F F0(belo)3.424 E +3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 684 R F2 +(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F F3(on)2.749 E F0 +(by)2.759 E F1 .019(set \255o)2.519 F F0 5.019(.I)C 2.519(ft)-5.019 G +.019(his v)-2.519 F .019(ariable is in the en)-.25 F(vironment)-.4 E +(when)144 696 Q F1(bash)3.141 E F0 .642(starts up, each shell option in\ + the list will be enabled before reading an)3.141 F 3.142(ys)-.15 G .642 +(tartup \214les.)-3.142 F(This v)144 708 Q(ariable is read-only)-.25 E +(.)-.65 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(13)192.055 E 0 +Cg EP %%Page: 14 14 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 1.12(sets the compatibility le)144 84 R -.15(ve)-.25 G 3.62(lt) -.15 G 3.619(ot)-3.62 G 1.119(he def)-3.619 F 1.119 -(ault for the current v)-.1 F 3.619(ersion. The)-.15 F -.25(va)3.619 G -1.119(lid compatibility le).25 F -.15(ve)-.25 G(ls).15 E .575 -(correspond to the compatibility options accepted by the)144 96 R/F1 10 -/Times-Bold@0 SF(shopt)3.075 E F0 -.2(bu)3.076 G .576 -(iltin described belo).2 F 3.076(w\()-.25 G .576(for e)-3.076 F(xam-) --.15 E(ple,)144 108 Q F1(compat42)2.5 E F0(means that 4.2 and 42 are v) -2.5 E(alid v)-.25 E 2.5(alues\). The)-.25 F(current v)2.5 E -(ersion is also a v)-.15 E(alid v)-.25 E(alue.)-.25 E F1 -.3(BA)108 120 -S(SH_ENV).3 E F0 .506(If this parameter is set when)144 132 R F1(bash) -3.006 E F0 .506(is e)3.006 F -.15(xe)-.15 G .505 -(cuting a shell script, its v).15 F .505 -(alue is interpreted as a \214lename)-.25 F .354 -(containing commands to initialize the shell, as in)144 144 R/F2 10 -/Times-Italic@0 SF(~/.bashr)2.855 E(c)-.37 E F0 5.355(.T).31 G .355 -(he v)-5.355 F .355(alue of)-.25 F/F3 9/Times-Bold@0 SF -.27(BA)2.855 G -(SH_ENV).27 E F0 .355(is subjected)2.605 F .525(to parameter e)144 156 R -.525(xpansion, command substitution, and arithmetic e)-.15 F .525 -(xpansion before being interpreted)-.15 F(as a \214lename.)144 168 Q F3 --.666(PA)5 G(TH)-.189 E F0 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(SHL)108 84 Q(VL)-.92 E F0 +(Incremented by one each time an instance of)144 96 Q F1(bash)2.5 E F0 +(is started.)2.5 E F1(UID)108 108 Q F0 +(Expands to the user ID of the current user)144 108 Q 2.5(,i)-.4 G +(nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25 +E(.)-.65 E .994(The follo)108 124.8 R .994(wing v)-.25 F .994 +(ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1 +(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .993 +(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 136.8 +Q -.65(w.)-.25 G F1 -.3(BA)108 153.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 +1.192(The v)144 165.6 R 1.192(alue is used to set the shell')-.25 F +3.692(sc)-.55 G 1.193(ompatibility le)-3.692 F -.15(ve)-.25 G 3.693 +(l. See).15 F 1.193(the description of the)3.693 F F1(shopt)3.693 E F0 +-.2(bu)3.693 G(iltin).2 E(belo)144 177.6 Q 2.872(wu)-.25 G(nder)-2.872 E +F1 .372(SHELL B)2.872 F(UIL)-.1 E .372(TIN COMMANDS)-.92 F F0 .372 +(for a description of the v)2.872 F .371(arious compatibility le)-.25 F +(v-)-.25 E .36(els and their ef)144 189.6 R 2.86(fects. The)-.25 F -.25 +(va)2.86 G .361(lue may be a decimal number \(e.g., 4.2\) or an inte).25 +F .361(ger \(e.g., 42\) corre-)-.15 F 1.751 +(sponding to the desired compatibility le)144 201.6 R -.15(ve)-.25 G +4.251(l. If).15 F F1 -.3(BA)4.251 G(SH_COMP).3 E -.95(AT)-.74 G F0 1.75 +(is unset or set to the empty)5.201 F .578(string, the compatibility le) +144 213.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578 +(et to the def)-3.078 F .578(ault for the current v)-.1 F 3.078 +(ersion. If)-.15 F F1 -.3(BA)3.078 G(SH_COMP).3 E -.95(AT)-.74 G F0(is) +4.028 E .249(set to a v)144 225.6 R .249(alue that is not one of the v) +-.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .248 +(ls, the shell prints an error message and).15 F 1.119 +(sets the compatibility le)144 237.6 R -.15(ve)-.25 G 3.619(lt).15 G +3.619(ot)-3.619 G 1.119(he def)-3.619 F 1.119(ault for the current v)-.1 +F 3.62(ersion. The)-.15 F -.25(va)3.62 G 1.12(lid compatibility le).25 F +-.15(ve)-.25 G(ls).15 E .576 +(correspond to the compatibility options accepted by the)144 249.6 R F1 +(shopt)3.075 E F0 -.2(bu)3.075 G .575(iltin described belo).2 F 3.075 +(w\()-.25 G .575(for e)-3.075 F(xam-)-.15 E(ple,)144 261.6 Q F1 +(compat42)2.5 E F0(means that 4.2 and 42 are v)2.5 E(alid v)-.25 E 2.5 +(alues\). The)-.25 F(current v)2.5 E(ersion is also a v)-.15 E(alid v) +-.25 E(alue.)-.25 E F1 -.3(BA)108 273.6 S(SH_ENV).3 E F0 .505 +(If this parameter is set when)144 285.6 R F1(bash)3.005 E F0 .505(is e) +3.005 F -.15(xe)-.15 G .506(cuting a shell script, its v).15 F .506 +(alue is interpreted as a \214lename)-.25 F .355 +(containing commands to initialize the shell, as in)144 297.6 R/F2 10 +/Times-Italic@0 SF(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354 +(he v)-5.354 F .354(alue of)-.25 F/F3 9/Times-Bold@0 SF -.27(BA)2.854 G +(SH_ENV).27 E F0 .354(is subjected)2.604 F .525(to parameter e)144 309.6 +R .525(xpansion, command substitution, and arithmetic e)-.15 F .525 +(xpansion before being interpreted)-.15 F(as a \214lename.)144 321.6 Q +F3 -.666(PA)5 G(TH)-.189 E F0 (is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA) -108 180 S(SH_XTRA).3 E(CEFD)-.55 E F0 .48(If set to an inte)144 192 R -.48(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 F -(,)-.4 E F1(bash)2.981 E F0 .481(will write the trace output gener)2.981 -F(-)-.2 E 3.114(ated when)144 204 R/F4 10/Courier@0 SF 3.114(set -x) +108 333.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 345.6 +R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 +F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F +(-)-.2 E 3.114(ated when)144 357.6 R/F4 10/Courier@0 SF 3.114(set -x) 5.614 F F0 3.114(is enabled to that \214le descriptor)5.614 F 8.114(.T) -.55 G 3.114(he \214le descriptor is closed when)-8.114 F F3 -.27(BA)144 -216 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 -228 R 7.53(.N)-.55 G 2.53(ote that setting)-7.53 F F3 -.27(BA)144 240 S -(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error \214le des\ -criptor\) and then unsetting it will result in the)2.99 F -(standard error being closed.)144 252 Q F1(CDP)108 264 Q -.95(AT)-.74 G -(H).95 E F0 1.248(The search path for the)144 276 R F1(cd)3.748 E F0 -3.748(command. This)3.748 F 1.247 -(is a colon-separated list of directories in which the)3.748 F 3.795 -(shell looks for destination directories speci\214ed by the)144 288 R F1 -(cd)6.295 E F0 6.296(command. A)6.296 F 3.796(sample v)6.296 F 3.796 -(alue is)-.25 F F4(".:~:/usr")144 300 Q F0(.)A F1(CHILD_MAX)108 312 Q F0 -.997(Set the number of e)144 324 R .997(xited child status v)-.15 F .997 -(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997 -(ash will not allo)-5.997 F 3.497(wt)-.25 G(his)-3.497 E -.25(va)144 336 -S 1.077(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077 -(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.078 -(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 348 Q +369.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne) +2.388 F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F3 -.27(BA)2.638 +G(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the \ +empty string causes the trace output to be sent to the standard error) +144 381.6 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F3 -.27(BA) +144 393.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error\ + \214le descriptor\) and then unsetting it will result in the)2.991 F +(standard error being closed.)144 405.6 Q F1(CDP)108 417.6 Q -.95(AT) +-.74 G(H).95 E F0 1.247(The search path for the)144 429.6 R F1(cd)3.747 +E F0 3.747(command. This)3.747 F 1.248 +(is a colon-separated list of directories in which the)3.747 F 3.796 +(shell looks for destination directories speci\214ed by the)144 441.6 R +F1(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795 +(alue is)-.25 F F4(".:~:/usr")144 453.6 Q F0(.)A F1(CHILD_MAX)108 465.6 +Q F0 .997(Set the number of e)144 477.6 R .997(xited child status v)-.15 +F .997(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997 +(ash will not allo)-5.997 F 3.498(wt)-.25 G(his)-3.498 E -.25(va)144 +489.6 S 1.078(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077 +(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.077 +(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 501.6 Q 2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E -F1(COLUMNS)108 360 Q F0 .829(Used by the)144 372 R F1(select)3.329 E F0 -.828(compound command to determine the terminal width when printing sel\ -ection)3.329 F 4.506(lists. Automatically)144 384 R 2.006(set if the) -4.506 F F1(checkwinsize)4.506 E F0 2.007 -(option is enabled or in an interacti)4.506 F 2.307 -.15(ve s)-.25 H -2.007(hell upon).15 F(receipt of a)144 396 Q F3(SIGWINCH)2.5 E/F5 9 -/Times-Roman@0 SF(.)A F1(COMPREPL)108 408 Q(Y)-.92 E F0 .848(An array v) -144 420 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 432 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 -444 Q F1(EMA)108 456 Q(CS)-.55 E F0(If)144 468 Q F1(bash)2.536 E F0 .036 -(\214nds this v)2.536 F .036(ariable in the en)-.25 F .036 -(vironment when the shell starts with v)-.4 F(alue)-.25 E F4(t)2.535 E -F0 2.535(,i)C 2.535(ta)-2.535 G .035(ssumes that the)-2.535 F -(shell is running in an Emacs shell b)144 480 Q(uf)-.2 E -(fer and disables line editing.)-.25 E F1(ENV)108 492 Q F0(Similar to) -14.89 E F3 -.27(BA)2.5 G(SH_ENV).27 E F5(;)A F0 +F1(COLUMNS)108 513.6 Q F0 .828(Used by the)144 525.6 R F1(select)3.328 E +F0 .829(compound command to determine the terminal width when printing \ +selection)3.328 F 4.507(lists. Automatically)144 537.6 R 2.007 +(set if the)4.507 F F1(checkwinsize)4.507 E F0 2.006 +(option is enabled or in an interacti)4.507 F 2.306 -.15(ve s)-.25 H +2.006(hell upon).15 F(receipt of a)144 549.6 Q F3(SIGWINCH)2.5 E/F5 9 +/Times-Roman@0 SF(.)A F1(COMPREPL)108 561.6 Q(Y)-.92 E F0 .847 +(An array v)144 573.6 R .848(ariable from which)-.25 F F1(bash)3.348 E +F0 .848(reads the possible completions generated by a shell function) +3.348 F(in)144 585.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt) +-2.785 G .285(he programmable completion f)-2.785 F .285(acility \(see) +-.1 F F1(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E +2.785(w\). Each)-.25 F(array element contains one possible completion.) +144 597.6 Q F1(EMA)108 609.6 Q(CS)-.55 E F0(If)144 621.6 Q F1(bash)2.535 +E F0 .035(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036 +(vironment when the shell starts with v)-.4 F(alue)-.25 E F4(t)2.536 E +F0 2.536(,i)C 2.536(ta)-2.536 G .036(ssumes that the)-2.536 F +(shell is running in an Emacs shell b)144 633.6 Q(uf)-.2 E +(fer and disables line editing.)-.25 E F1(ENV)108 645.6 Q F0(Similar to) +144 645.6 Q F3 -.27(BA)2.5 G(SH_ENV).27 E F5(;)A F0 (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 504 Q F0(The def)144 516 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 528 Q F0 2.598(Ac)144 540 S .098 -(olon-separated list of suf)-2.598 F<8c78>-.25 E .098 -(es to ignore when performing \214lename completion \(see)-.15 F F3 -(READLINE)2.599 E F0(belo)144 552 Q 2.705(w\). A)-.25 F .205 -(\214lename whose suf)2.705 F .205(\214x matches one of the entries in) --.25 F F3(FIGNORE)2.705 E F0 .205(is e)2.455 F .204 -(xcluded from the list)-.15 F(of matched \214lenames.)144 564 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 -576 Q F0 1.78(If set to a numeric v)144 588 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 600 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 -612 Q F0 3.118(Ac)144 624 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.131(sion. If)144 636 R 3.132<618c>3.131 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 648 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 660 Q(OL)-.3 E F0 -2.654(Ac)144 672 S .153(olon-separated list of v)-2.654 F .153 -(alues controlling ho)-.25 F 2.653(wc)-.25 G .153(ommands are sa)-2.653 -F -.15(ve)-.2 G 2.653(do).15 G 2.653(nt)-2.653 G .153(he history list.) --2.653 F .153(If the list)5.153 F .49(of v)144 684 R .49(alues includes) --.25 F F2(ignor)2.99 E(espace)-.37 E F0 2.99(,l).18 G .49(ines which be) --2.99 F .491(gin with a)-.15 F F1(space)2.991 E F0 .491 -(character are not sa)2.991 F -.15(ve)-.2 G 2.991(di).15 G 2.991(nt) --2.991 G .491(he his-)-2.991 F .558(tory list.)144 696 R 3.058(Av)5.558 -G .558(alue of)-3.308 F F2(ignor)3.068 E(edups)-.37 E F0 .558 -(causes lines matching the pre)3.328 F .557 -(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.958 -(Av)144 708 S .458(alue of)-3.208 F F2(ignor)2.968 E(eboth)-.37 E F0 -.458(is shorthand for)3.238 F F2(ignor)2.959 E(espace)-.37 E F0(and) -2.959 E F2(ignor)2.959 E(edups)-.37 E F0 5.459(.A)C -.25(va)-2.5 G .459 -(lue of).25 F F2(er)2.959 E(asedups)-.15 E F0(causes)2.959 E .699 -(all pre)144 720 R .698 -(vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G -3.198(df).15 G .698(rom the history list before that line is)-3.198 F -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(14)190.95 E 0 Cg EP +2.5(nP)-2.5 G(OSIX mode.)-2.5 E F1(EXECIGNORE)108 657.6 Q F0 2.717(Ac) +144 669.6 S .217(olon-separated list of shell patterns \(see)-2.717 F F1 +-.1(Pa)2.717 G(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C +.216(e\214ning the list of \214lenames to be)-2.717 F .116 +(ignored by command search using)144 681.6 R F1 -.74(PA)2.616 G(TH)-.21 +E F0 5.116(.F)C .117 +(iles whose full pathnames match one of these patterns)-5.116 F 1.433 +(are not considered e)144 693.6 R -.15(xe)-.15 G 1.432 +(cutable \214les for the purposes of completion and command e).15 F -.15 +(xe)-.15 G 1.432(cution via).15 F F1 -.74(PA)144 705.6 S(TH)-.21 E F0 +2.908(lookup. This)2.908 F .408(does not af)2.908 F .408(fect the beha) +-.25 F .408(vior of the)-.2 F F1([)2.908 E F0(,)A F1(test)2.908 E F0 +2.908(,a)C(nd)-2.908 E F1([[)2.908 E F0 2.909(commands. Full)2.908 F +(pathnames)2.909 E .364(in the command hash table are not subject to)144 +717.6 R F1(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364 +(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 729.6 +R 1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37 +(cutable bit set, b).15 F 1.37(ut are not e)-.2 F -.15(xe)-.15 G 1.37 +(cutable \214les.).15 F 1.37(The pattern matching)6.37 F(GNU Bash 4.4)72 +768 Q(2016 August 26)142.895 E(14)192.055 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(sa)144 84 Q -.15(ve)-.2 G 2.763(d. An).15 F 2.763(yv)-.15 G .263 -(alue not in the abo)-3.013 F .563 -.15(ve l)-.15 H .263 -(ist is ignored.).15 F(If)5.263 E/F1 9/Times-Bold@0 SF(HISTCONTR)2.763 E -(OL)-.27 E F0 .264(is unset, or does not include)2.513 F 2.942(av)144 96 -S .442(alid v)-3.192 F .442 -(alue, all lines read by the shell parser are sa)-.25 F -.15(ve)-.2 G -2.941(do).15 G 2.941(nt)-2.941 G .441(he history list, subject to the v) --2.941 F .441(alue of)-.25 F F1(HISTIGNORE)144 108 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.481 F(tested, and are added to the history re)144 -120 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 132 Q F0 .181 -(The name of the \214le in which command history is sa)144 144 R -.15 -(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F1(HIST)2.681 E(OR)-.162 E(Y) --.315 E F0(belo)2.431 E 2.681(w\). The)-.25 F(def)2.681 E .181(ault v) --.1 F(alue)-.25 E(is)144 156 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 168 Q F0 1.622 -(The maximum number of lines contained in the history \214le.)144 180 R -1.623(When this v)6.623 F 1.623(ariable is assigned a)-.25 F -.25(va)144 -192 S .932(lue, the history \214le is truncated, if necessary).25 F -3.432(,t)-.65 G 3.432(oc)-3.432 G .932 -(ontain no more than that number of lines by)-3.432 F(remo)144 204 Q .87 -(ving the oldest entries.)-.15 F .871(The history \214le is also trunca\ -ted to this size after writing it when a)5.87 F 1.245(shell e)144 216 R -3.745(xits. If)-.15 F 1.244(the v)3.744 F 1.244 -(alue is 0, the history \214le is truncated to zero size.)-.25 F 1.244 -(Non-numeric v)6.244 F 1.244(alues and)-.25 F 1.021(numeric v)144 228 R +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(honors the setting of the)144 84 Q/F1 10/Times-Bold@0 SF(extglob)2.5 E +F0(shell option.)2.5 E F1(FCEDIT)108 96 Q F0(The def)144 108 Q +(ault editor for the)-.1 E F1(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 +E F1(FIGNORE)108 120 Q F0 2.599(Ac)144 132 S .098 +(olon-separated list of suf)-2.599 F<8c78>-.25 E .098 +(es to ignore when performing \214lename completion \(see)-.15 F/F2 9 +/Times-Bold@0 SF(READLINE)2.598 E F0(belo)144 144 Q 2.704(w\). A)-.25 F +.204(\214lename whose suf)2.704 F .205 +(\214x matches one of the entries in)-.25 F F2(FIGNORE)2.705 E F0 .205 +(is e)2.455 F .205(xcluded from the list)-.15 F(of matched \214lenames.) +144 156 Q 2.5(As)5 G(ample v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF +(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 168 Q F0 .231 +(If set to a numeric v)144 180 R .231 +(alue greater than 0, de\214nes a maximum function nesting le)-.25 F +-.15(ve)-.25 G 2.73(l. Function).15 F(in)2.73 E -.2(vo)-.4 G(-).2 E +(cations that e)144 192 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G +2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F1 +(GLOBIGNORE)108 204 Q F0 3.118(Ac)144 216 S .618(olon-separated list of\ + patterns de\214ning the set of \214lenames to be ignored by pathname e) +-3.118 F(xpan-)-.15 E 3.132(sion. If)144 228 R 3.132<618c>3.132 G .632 +(lename matched by a pathname e)-3.132 F .632 +(xpansion pattern also matches one of the patterns in)-.15 F F2 +(GLOBIGNORE)144 240 Q/F4 9/Times-Roman@0 SF(,)A F0(it is remo)2.25 E +-.15(ve)-.15 G 2.5(df).15 G(rom the list of matches.)-2.5 E F1 +(HISTCONTR)108 252 Q(OL)-.3 E F0 2.653(Ac)144 264 S .153 +(olon-separated list of v)-2.653 F .153(alues controlling ho)-.25 F +2.653(wc)-.25 G .153(ommands are sa)-2.653 F -.15(ve)-.2 G 2.653(do).15 +G 2.653(nt)-2.653 G .153(he history list.)-2.653 F .154(If the list) +5.153 F .491(of v)144 276 R .491(alues includes)-.25 F/F5 10 +/Times-Italic@0 SF(ignor)2.991 E(espace)-.37 E F0 2.991(,l).18 G .491 +(ines which be)-2.991 F .491(gin with a)-.15 F F1(space)2.991 E F0 .49 +(character are not sa)2.991 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt)-2.99 +G .49(he his-)-2.99 F .557(tory list.)144 288 R 3.057(Av)5.557 G .557 +(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 .557 +(causes lines matching the pre)3.327 F .558 +(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.959 +(Av)144 300 S .459(alue of)-3.209 F F5(ignor)2.969 E(eboth)-.37 E F0 +.459(is shorthand for)3.239 F F5(ignor)2.959 E(espace)-.37 E F0(and) +2.959 E F5(ignor)2.958 E(edups)-.37 E F0 5.458(.A)C -.25(va)-2.5 G .458 +(lue of).25 F F5(er)2.958 E(asedups)-.15 E F0(causes)2.958 E .698 +(all pre)144 312 R .698 +(vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G +3.198(df).15 G .699(rom the history list before that line is)-3.198 F +(sa)144 324 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264 +(alue not in the abo)-3.014 F .563 -.15(ve l)-.15 H .263 +(ist is ignored.).15 F(If)5.263 E F2(HISTCONTR)2.763 E(OL)-.27 E F0 .263 +(is unset, or does not include)2.513 F 2.941(av)144 336 S .441(alid v) +-3.191 F .441(alue, all lines read by the shell parser are sa)-.25 F +-.15(ve)-.2 G 2.942(do).15 G 2.942(nt)-2.942 G .442 +(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F2 +(HISTIGNORE)144 348 Q F4(.)A F0 1.981(The second and subsequent lines o\ +f a multi-line compound command are not)6.482 F +(tested, and are added to the history re)144 360 Q -.05(ga)-.15 G +(rdless of the v).05 E(alue of)-.25 E F2(HISTCONTR)2.5 E(OL)-.27 E F4(.) +A F1(HISTFILE)108 372 Q F0 .181 +(The name of the \214le in which command history is sa)144 384 R -.15 +(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F2(HIST)2.681 E(OR)-.162 E(Y) +-.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182(ault v) +-.1 F(alue)-.25 E(is)144 396 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5 +(fu)-5 G(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5 +(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E F1(HISTFILESIZE)108 408 Q F0 +1.623(The maximum number of lines contained in the history \214le.)144 +420 R 1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25 +(va)144 432 S .931(lue, the history \214le is truncated, if necessary) +.25 F 3.432(,t)-.65 G 3.432(oc)-3.432 G .932 +(ontain no more than that number of lines by)-3.432 F(remo)144 444 Q +.871(ving the oldest entries.)-.15 F .87(The history \214le is also tru\ +ncated to this size after writing it when a)5.871 F 1.244(shell e)144 +456 R 3.744(xits. If)-.15 F 1.244(the v)3.744 F 1.244 +(alue is 0, the history \214le is truncated to zero size.)-.25 F 1.245 +(Non-numeric v)6.244 F 1.245(alues and)-.25 F 1.022(numeric v)144 468 R 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.022(alue of)-.25 F F3(HISTSIZE)144 240 Q F0(after reading an) -2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F3(HISTIGNORE)108 252 Q F0 -2.658(Ac)144 264 S .158(olon-separated list of patterns used to decide \ -which command lines should be sa)-2.658 F -.15(ve)-.2 G 2.657(do).15 G -2.657(nt)-2.657 G .157(he his-)-2.657 F .707(tory list.)144 276 R .707 -(Each pattern is anchored at the be)5.707 F .708 -(ginning of the line and must match the complete line)-.15 F .626 -(\(no implicit `)144 288 R F3(*)A F0 3.126('i)C 3.126(sa)-3.126 G 3.126 -(ppended\). Each)-3.126 F .626(pattern is tested ag)3.126 F .625 -(ainst the line after the checks speci\214ed by)-.05 F F1(HISTCONTR)144 -300 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 +-.25 F 1.021(alue of)-.25 F F1(HISTSIZE)144 480 Q F0(after reading an) +2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 492 Q F0 +2.657(Ac)144 504 S .157(olon-separated list of patterns used to decide \ +which command lines should be sa)-2.657 F -.15(ve)-.2 G 2.658(do).15 G +2.658(nt)-2.658 G .158(he his-)-2.658 F .708(tory list.)144 516 R .708 +(Each pattern is anchored at the be)5.708 F .707 +(ginning of the line and must match the complete line)-.15 F .625 +(\(no implicit `)144 528 R F1(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125 +(ppended\). Each)-3.125 F .626(pattern is tested ag)3.125 F .626 +(ainst the line after the checks speci\214ed by)-.05 F F2(HISTCONTR)144 +540 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 (In addition to the normal shell pattern matching characters, `)6.793 F -F3(&)A F0(')A 2.515(matches the pre)144 312 R 2.515(vious history line.) --.25 F(`)7.514 E F3(&)A F0 5.014('m)C 2.514 -(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 324 -Q -.15(ve)-.15 G 3.352(db).15 G .852(efore attempting a match.)-3.352 F +F1(&)A F0(')A 2.514(matches the pre)144 552 R 2.514(vious history line.) +-.25 F(`)7.514 E F1(&)A F0 5.014('m)C 2.514 +(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 564 +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 336 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 348 Q F0 1.387 -(The number of commands to remember in the command history \(see)144 360 -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.887 E -.25(va)144 372 S 1.32(lue is 0, commands are not sa) +1.269(command are not tested, and are added to the history re)144 576 R +-.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2 +(HISTIGNORE)3.77 E F4(.)A F0 +(The pattern matching honors the setting of the)144 588 Q F1(extglob)2.5 +E F0(shell option.)2.5 E F1(HISTSIZE)108 600 Q F0 1.387 +(The number of commands to remember in the command history \(see)144 612 +R F2(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) +-.25 F(the)3.887 E -.25(va)144 624 S 1.32(lue is 0, commands are not sa) .25 F -.15(ve)-.2 G 3.82(di).15 G 3.821(nt)-3.82 G 1.321 (he history list.)-3.821 F 1.321(Numeric v)6.321 F 1.321 -(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 384 T .437 +(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 636 T .437 (ry command being sa).25 F -.15(ve)-.2 G 2.937(do).15 G 2.937(nt)-2.937 G .437(he history list \(there is no limit\).)-2.937 F .436 (The shell sets the def)5.436 F .436(ault v)-.1 F(alue)-.25 E -(to 500 after reading an)144 396 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E -F3(HISTTIMEFORMA)108 408 Q(T)-.95 E F0 .951(If this v)144 420 R .951 +(to 500 after reading an)144 648 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E +F1(HISTTIMEFORMA)108 660 Q(T)-.95 E F0 .951(If this v)144 672 R .951 (ariable is set and not null, its v)-.25 F .952 -(alue is used as a format string for)-.25 F F4(strftime)3.452 E F0 .952 +(alue is used as a format string for)-.25 F F5(strftime)3.452 E F0 .952 (\(3\) to print the)B .673 -(time stamp associated with each history entry displayed by the)144 432 -R F3(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v) +(time stamp associated with each history entry displayed by the)144 684 +R F1(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v) 3.172 F .672(ariable is)-.25 F .144 -(set, time stamps are written to the history \214le so the)144 444 R +(set, time stamps are written to the history \214le so the)144 696 R 2.644(ym)-.15 G .144(ay be preserv)-2.644 F .144 (ed across shell sessions.)-.15 F(This)5.145 E(uses the history comment\ - character to distinguish timestamps from other history lines.)144 456 Q -F3(HOME)108 468 Q F0 1.27 -(The home directory of the current user; the def)144 480 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 492 S(lue of this v).25 E -(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F3 -(HOSTFILE)108 504 Q F0 1.015 -(Contains the name of a \214le in the same format as)144 516 R F4 -(/etc/hosts)5.181 E F0 1.015(that should be read when the shell)5.181 F -.551(needs to complete a hostname.)144 528 R .551 -(The list of possible hostname completions may be changed while)5.551 F -1.058(the shell is running; the ne)144 540 R 1.059 -(xt time hostname completion is attempted after the v)-.15 F 1.059 -(alue is changed,)-.25 F F3(bash)144 552 Q F0 .138 -(adds the contents of the ne)2.639 F 2.638<778c>-.25 G .138(le to the e) --2.638 F .138(xisting list.)-.15 F(If)5.138 E F1(HOSTFILE)2.638 E F0 -.138(is set, b)2.388 F .138(ut has no v)-.2 F .138(alue, or)-.25 F .517 -(does not name a readable \214le,)144 564 R F3(bash)3.017 E F0 .517 -(attempts to read)3.017 F F4(/etc/hosts)4.684 E F0 .518 -(to obtain the list of possible host-)4.684 F(name completions.)144 576 -Q(When)5 E F1(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.) -2.25 E F3(IFS)108 588 Q F0(The)20.44 E F4 .556(Internal F)3.636 F .556 -(ield Separ)-.45 F(ator)-.15 E F0 .556(that is used for w)3.786 F .556 -(ord splitting after e)-.1 F .555(xpansion and to split lines into)-.15 -F -.1(wo)144 600 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 612 Q -F0 .503(Controls the action of an interacti)144 624 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 .504(If set,)5.504 F .426(the v) -144 636 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F1 -(EOF)3.076 E F0 .426 -(characters which must be typed as the \214rst characters)2.676 F .302 -(on an input line before)144 648 R F3(bash)2.802 E F0 -.15(ex)2.802 G -2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302 -(xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302 -(umeric v).15 F .303(alue, or has)-.25 F(no v)144 660 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 672 Q F0 1.436(The \214lename for the)144 684 R F3 -.18(re) -3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G -1.436(rriding the def).15 F 1.436(ault of)-.1 F F4(~/.inputr)5.602 E(c) --.37 E F0(\(see)5.601 E F1(READLINE)3.935 E F0(belo)144 696 Q(w\).)-.25 -E F3(LANG)108 708 Q F0 1.239(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.24 -(gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E -(starting with)144 720 Q F3(LC_)2.5 E F0(.)A(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(15)190.95 E 0 Cg EP + character to distinguish timestamps from other history lines.)144 708 Q +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(15)192.055 E 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(LC_ALL)108 84 Q F0 .974(This v)144 96 R -.974(ariable o)-.25 F -.15(ve)-.15 G .974(rrides the v).15 F .973 -(alue of)-.25 F/F2 9/Times-Bold@0 SF(LANG)3.473 E F0 .973(and an)3.223 F -3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G .973 -(riable specifying a locale cate-).25 F(gory)144 108 Q(.)-.65 E F1 -(LC_COLLA)108 120 Q(TE)-.95 E F0 .411(This v)144 132 R .412(ariable det\ +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(HOME)108 84 Q F0 1.27 +(The home directory of the current user; the def)144 96 R 1.27(ault ar) +-.1 F 1.27(gument for the)-.18 F F1(cd)3.77 E F0 -.2(bu)3.77 G 1.27 +(iltin command.).2 F(The)6.27 E -.25(va)144 108 S(lue of this v).25 E +(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1 +(HOSTFILE)108 120 Q F0 1.015 +(Contains the name of a \214le in the same format as)144 132 R/F2 10 +/Times-Italic@0 SF(/etc/hosts)5.181 E F0 1.015 +(that should be read when the shell)5.181 F .551 +(needs to complete a hostname.)144 144 R .551 +(The list of possible hostname completions may be changed while)5.551 F +1.058(the shell is running; the ne)144 156 R 1.059 +(xt time hostname completion is attempted after the v)-.15 F 1.059 +(alue is changed,)-.25 F F1(bash)144 168 Q F0 .138 +(adds the contents of the ne)2.639 F 2.638<778c>-.25 G .138(le to the e) +-2.638 F .138(xisting list.)-.15 F(If)5.138 E/F3 9/Times-Bold@0 SF +(HOSTFILE)2.638 E F0 .138(is set, b)2.388 F .138(ut has no v)-.2 F .138 +(alue, or)-.25 F .517(does not name a readable \214le,)144 180 R F1 +(bash)3.017 E F0 .517(attempts to read)3.017 F F2(/etc/hosts)4.684 E F0 +.518(to obtain the list of possible host-)4.684 F(name completions.)144 +192 Q(When)5 E F3(HOSTFILE)2.5 E F0 +(is unset, the hostname list is cleared.)2.25 E F1(IFS)108 204 Q F0(The) +144 204 Q F2 .556(Internal F)3.636 F .556(ield Separ)-.45 F(ator)-.15 E +F0 .556(that is used for w)3.786 F .556(ord splitting after e)-.1 F .555 +(xpansion and to split lines into)-.15 F -.1(wo)144 216 S(rds with the) +.1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command.).2 E +(The def)5 E(ault v)-.1 E(alue is `)-.25 E(`')-.25 E('.)-.74 E F1(IGNOREEOF)108 228 Q F0 .503 +(Controls the action of an interacti)144 240 R .803 -.15(ve s)-.25 H +.503(hell on receipt of an).15 F F3(EOF)3.003 E F0 .503 +(character as the sole input.)2.753 F .504(If set,)5.504 F .426(the v) +144 252 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F3 +(EOF)3.076 E F0 .426 +(characters which must be typed as the \214rst characters)2.676 F .302 +(on an input line before)144 264 R F1(bash)2.802 E F0 -.15(ex)2.802 G +2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302 +(xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302 +(umeric v).15 F .303(alue, or has)-.25 F(no v)144 276 Q(alue, the def) +-.25 E(ault v)-.1 E(alue is 10.)-.25 E(If it does not e)5 E(xist,)-.15 E +F3(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 +(INPUTRC)108 288 Q F0 1.436(The \214lename for the)144 300 R F1 -.18(re) +3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G +1.436(rriding the def).15 F 1.436(ault of)-.1 F F2(~/.inputr)5.602 E(c) +-.37 E F0(\(see)5.601 E F3(READLINE)3.935 E F0(belo)144 312 Q(w\).)-.25 +E F1(LANG)108 324 Q F0 1.239(Used to determine the locale cate)144 324 R +1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.24 +(gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E +(starting with)144 336 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 348 Q F0 .974 +(This v)144 360 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 +(rrides the v).15 F .973(alue of)-.25 F F3(LANG)3.473 E F0 .973(and an) +3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G +.973(riable specifying a locale cate-).25 F(gory)144 372 Q(.)-.65 E F1 +(LC_COLLA)108 384 Q(TE)-.95 E F0 .411(This v)144 396 R .412(ariable det\ ermines the collation order used when sorting the results of pathname e) --.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 144 R 1.465 +-.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 408 R 1.465 (vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G 1.464(lence classes, and collating sequences).25 F(within pathname e)144 -156 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 168 Q F0 -1.935(This v)144 180 R 1.936 +420 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 432 Q F0 +1.935(This v)144 444 R 1.936 (ariable determines the interpretation of characters and the beha)-.25 F -1.936(vior of character classes)-.2 F(within pathname e)144 192 Q -(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 204 Q(GES)-.55 E -F0(This v)144 216 Q(ariable determines the locale used to translate dou\ +1.936(vior of character classes)-.2 F(within pathname e)144 456 Q +(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 468 Q(GES)-.55 E +F0(This v)144 480 Q(ariable determines the locale used to translate dou\ ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC) -108 228 Q F0(This v)144 240 Q(ariable determines the locale cate)-.25 E -(gory used for number formatting.)-.15 E F1(LINES)108 252 Q F0 .055 -(Used by the)5.99 F F1(select)2.555 E F0 .054(compound command to deter\ -mine the column length for printing selection lists.)2.555 F .264 -(Automatically set if the)144 264 R F1(checkwinsize)2.764 E F0 .264 +108 492 Q F0(This v)144 504 Q(ariable determines the locale cate)-.25 E +(gory used for number formatting.)-.15 E F1(LC_TIME)108 516 Q F0(This v) +144 528 Q(ariable determines the locale cate)-.25 E +(gory used for data and time formatting.)-.15 E F1(LINES)108 540 Q F0 +.055(Used by the)144 540 R F1(select)2.555 E F0 .054(compound command t\ +o determine the column length for printing selection lists.)2.555 F .264 +(Automatically set if the)144 552 R F1(checkwinsize)2.764 E F0 .264 (option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265 -(hell upon receipt of a).15 F F2(SIGWINCH)144 276 Q/F3 9/Times-Roman@0 -SF(.)A F1(MAIL)108 288 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.201 +(hell upon receipt of a).15 F F3(SIGWINCH)144 564 Q/F4 9/Times-Roman@0 +SF(.)A F1(MAIL)108 576 Q F0 1.201 +(If this parameter is set to a \214le or directory name and the)144 576 +R F3(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.201 (riable is not set,).25 F F1(bash)3.701 E F0 -(informs the user of the arri)144 300 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 +(informs the user of the arri)144 588 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 312 Q F0 .098 -(Speci\214es ho)144 324 R 2.598(wo)-.25 G .098(ften \(in seconds\)) +(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 600 Q F0 .098 +(Speci\214es ho)144 612 R 2.598(wo)-.25 G .098(ften \(in seconds\)) -2.598 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) 5.098 F .098(ault is 60 seconds.)-.1 F .099(When it is time)5.099 F .224 (to check for mail, the shell does so before displaying the primary pro\ -mpt.)144 336 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F .066 -(or set to a v)144 348 R .066(alue that is not a number greater than or\ - equal to zero, the shell disables mail checking.)-.25 F F1(MAILP)108 -360 Q -.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 372 S .49 +mpt.)144 624 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F +(or set to a v)144 636 Q(alue that is not a number greater than or equa\ +l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 648 Q +-.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 660 S .49 (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 384 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ +144 672 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 396 Q(xt of the message,) + with a `?'.)-2.62 F(When used in the te)144 684 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 408 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) +(MAILP)144 696 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 420 Q F0 .389 -(supplies a def)2.889 F .389(ault v)-.1 F .389(alue for this v)-.25 F -.389(ariable, b)-.25 F .388 -(ut the location of the user mail \214les that it uses is)-.2 F -(system dependent \(e.g., /v)144 432 Q(ar/mail/)-.25 E F1($USER)A F0 -(\).)A F1(OPTERR)108 444 Q F0 .389(If set to the v)144 456 R .389 -(alue 1,)-.25 F F1(bash)2.889 E F0 .389 -(displays error messages generated by the)2.889 F F1(getopts)2.89 E F0 --.2(bu)2.89 G .39(iltin command \(see).2 F F2 .36(SHELL B)144 468 R(UIL) --.09 E .36(TIN COMMANDS)-.828 F F0(belo)2.61 E(w\).)-.25 E F2(OPTERR) -5.36 E F0 .359(is initialized to 1 each time the shell is in)2.61 F -.2 -(vo)-.4 G -.1(ke).2 G(d).1 E(or a shell script is e)144 480 Q -.15(xe) --.15 G(cuted.).15 E F1 -.74(PA)108 492 S(TH)-.21 E F0 .587 -(The search path for commands.)9.91 F .588 -(It is a colon-separated list of directories in which the shell looks) -5.587 F .472(for commands \(see)144 504 R F2 .472(COMMAND EXECUTION) -2.972 F F0(belo)2.722 E 2.972(w\). A)-.25 F .471 -(zero-length \(null\) directory name in the)2.972 F -.25(va)144 516 S -.535(lue of).25 F F2 -.666(PA)3.035 G(TH)-.189 E F0 .535 -(indicates the current directory)2.785 F 5.535(.A)-.65 G .535 -(null directory name may appear as tw)-2.5 F 3.036(oa)-.1 G(djacent) --3.036 E .868(colons, or as an initial or trailing colon.)144 528 R .868 -(The def)5.868 F .867(ault path is system-dependent, and is set by the) --.1 F 26.328(administrator who installs)144 540 R F1(bash)28.828 E F0 -31.329(.A)C 26.329(common v)-2.5 F 26.329(alue is)-.25 F/F4 10/Courier@0 -SF(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 552 -Q F0(.)A F1(POSIXL)108 564 Q(Y_CORRECT)-.92 E F0 .472(If this v)144 576 -R .472(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash) -2.971 E F0 .471(starts, the shell enters)2.971 F/F5 10/Times-Italic@0 SF -.471(posix mode)2.971 F F0 .471(before reading)2.971 F .011 -(the startup \214les, as if the)144 588 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 600 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 612 Q(OMPT_COMMAND)-.3 E F0 -(If set, the v)144 624 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 636 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 -(If set to a number greater than zero, the v)144 648 R .676 -(alue is used as the number of trailing directory compo-)-.25 F .923 -(nents to retain when e)144 660 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 672 Q -.15(ve)-.15 G 2.5(da).15 G -(re replaced with an ellipsis.)-2.5 E F1(PS1)108 684 Q F0 .065(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 696 R -(def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0 --.74('')2.5 G(.).74 E F1(PS2)108 708 Q F0 .117(The v)19.33 F .117 -(alue of this parameter is e)-.25 F .117(xpanded as with)-.15 F F2(PS1) -2.617 E F0 .118(and used as the secondary prompt string.)2.368 F(The) -5.118 E(def)144 720 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G -(.).74 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(16)190.95 E 0 Cg -EP +(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 708 Q F0 .015 +(can be con\214gured to supply a def)2.515 F .015(ault v)-.1 F .015 +(alue for this v)-.25 F .015(ariable \(there is no v)-.25 F .015 +(alue by def)-.25 F .015(ault\), b)-.1 F(ut)-.2 E(the location of the u\ +ser mail \214les that it uses is system dependent \(e.g., /v)144 720 Q +(ar/mail/)-.25 E F1($USER)A F0(\).)A(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(16)192.055 E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(PS3)108 84 Q F0 1.116(The v)19.33 F 1.115 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(OPTERR)108 84 Q F0 .39(If set to the v)144 96 R .39(alue 1,)-.25 F F1 +(bash)2.89 E F0 .389(displays error messages generated by the)2.889 F F1 +(getopts)2.889 E F0 -.2(bu)2.889 G .389(iltin command \(see).2 F/F2 9 +/Times-Bold@0 SF .359(SHELL B)144 108 R(UIL)-.09 E .359(TIN COMMANDS) +-.828 F F0(belo)2.609 E(w\).)-.25 E F2(OPTERR)5.359 E F0 .36 +(is initialized to 1 each time the shell is in)2.609 F -.2(vo)-.4 G -.1 +(ke).2 G(d).1 E(or a shell script is e)144 120 Q -.15(xe)-.15 G(cuted.) +.15 E F1 -.74(PA)108 132 S(TH)-.21 E F0 .588 +(The search path for commands.)144 132 R .587 +(It is a colon-separated list of directories in which the shell looks) +5.588 F .471(for commands \(see)144 144 R F2 .471(COMMAND EXECUTION) +2.971 F F0(belo)2.722 E 2.972(w\). A)-.25 F .472 +(zero-length \(null\) directory name in the)2.972 F -.25(va)144 156 S +.536(lue of).25 F F2 -.666(PA)3.036 G(TH)-.189 E F0 .535 +(indicates the current directory)2.786 F 5.535(.A)-.65 G .535 +(null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent) +-3.035 E .867(colons, or as an initial or trailing colon.)144 168 R .868 +(The def)5.868 F .868(ault path is system-dependent, and is set by the) +-.1 F(administrator who installs)144 180 Q F1(bash)2.5 E F0 5(.A)C +(common v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF +(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 192 Q +F0(.)A F1(POSIXL)108 204 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 216 R +.471(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash)2.971 +E F0 .471(starts, the shell enters)2.971 F/F4 10/Times-Italic@0 SF .472 +(posix mode)2.972 F F0 .472(before reading)2.972 F .011 +(the startup \214les, as if the)144 228 R F1(\255\255posix)2.511 E F0 +(in)2.511 E -.2(vo)-.4 G .011(cation option had been supplied.).2 F .011 +(If it is set while the shell is)5.011 F(running,)144 240 Q F1(bash)2.5 +E F0(enables)2.5 E F4(posix mode)2.5 E F0 2.5(,a)C 2.5(si)-2.5 G 2.5(ft) +-2.5 G(he command)-2.5 E F3(set -o posix)2.5 E F0(had been e)2.5 E -.15 +(xe)-.15 G(cuted.).15 E F1(PR)108 252 Q(OMPT_COMMAND)-.3 E F0 +(If set, the v)144 264 Q(alue is e)-.25 E -.15(xe)-.15 G +(cuted as a command prior to issuing each primary prompt.).15 E F1(PR) +108 276 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 +(If set to a number greater than zero, the v)144 288 R .676 +(alue is used as the number of trailing directory compo-)-.25 F .923 +(nents to retain when e)144 300 R .923(xpanding the)-.15 F F1(\\w)3.423 +E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see) +3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E +(Characters remo)144 312 Q -.15(ve)-.15 G 2.5(da).15 G +(re replaced with an ellipsis.)-2.5 E F1(PS0)108 324 Q F0 1.174(The v) +144 324 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see) +-.15 F F2(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174 +(w\) and displayed by interacti)-.25 F -.15(ve)-.25 G +(shells after reading a command and before the command is e)144 336 Q +-.15(xe)-.15 G(cuted.).15 E F1(PS1)108 348 Q F0 .065(The v)144 348 R +.065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR) +2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065 +(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 360 R +(def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0 +-.74('')2.5 G(.).74 E F1(PS2)108 372 Q F0 .117(The v)144 372 R .117 +(alue of this parameter is e)-.25 F .117(xpanded as with)-.15 F F2(PS1) +2.617 E F0 .118(and used as the secondary prompt string.)2.368 F(The) +5.118 E(def)144 384 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G +(.).74 E F1(PS3)108 396 Q F0 1.116(The v)144 396 R 1.115 (alue of this parameter is used as the prompt for the)-.25 F F1(select) -3.615 E F0 1.115(command \(see)3.615 F/F2 9/Times-Bold@0 SF 1.115 -(SHELL GRAM-)3.615 F(MAR)144 96 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E -F1(PS4)108 108 Q F0 .1(The v)19.33 F .1(alue of this parameter is e)-.25 -F .1(xpanded as with)-.15 F F2(PS1)2.6 E F0 .101(and the v)2.35 F .101 -(alue is printed before each command)-.25 F F1(bash)144 120 Q F0 .292 +3.615 E F0 1.115(command \(see)3.615 F F2 1.115(SHELL GRAM-)3.615 F(MAR) +144 408 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 420 Q F0 .1 +(The v)144 420 R .1(alue of this parameter is e)-.25 F .1 +(xpanded as with)-.15 F F2(PS1)2.6 E F0 .101(and the v)2.35 F .101 +(alue is printed before each command)-.25 F F1(bash)144 432 Q F0 .292 (displays during an e)2.792 F -.15(xe)-.15 G .292(cution trace.).15 F .292(The \214rst character of)5.292 F F2(PS4)2.792 E F0 .291 -(is replicated multiple times, as)2.542 F(necessary)144 132 Q 2.5(,t) +(is replicated multiple times, as)2.542 F(necessary)144 444 Q 2.5(,t) -.65 G 2.5(oi)-2.5 G(ndicate multiple le)-2.5 E -.15(ve)-.25 G (ls of indirection.).15 E(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 --.74('')2.5 G(.).74 E F1(SHELL)108 144 Q F0 .663 -(The full pathname to the shell is k)144 156 R .664(ept in this en)-.1 F +-.74('')2.5 G(.).74 E F1(SHELL)108 456 Q F0 .663 +(The full pathname to the shell is k)144 468 R .664(ept in this en)-.1 F .664(vironment v)-.4 F 3.164(ariable. If)-.25 F .664 -(it is not set when the shell)3.164 F(starts,)144 168 Q F1(bash)2.5 E F0 +(it is not set when the shell)3.164 F(starts,)144 480 Q F1(bash)2.5 E F0 (assigns to it the full pathname of the current user')2.5 E 2.5(sl)-.55 -G(ogin shell.)-2.5 E F1(TIMEFORMA)108 180 Q(T)-.95 E F0 .827(The v)144 -192 R .826 +G(ogin shell.)-2.5 E F1(TIMEFORMA)108 492 Q(T)-.95 E F0 .827(The v)144 +504 R .826 (alue of this parameter is used as a format string specifying ho)-.25 F 3.326(wt)-.25 G .826(he timing information for)-3.326 F .648 -(pipelines pre\214x)144 204 R .648(ed with the)-.15 F F1(time)3.148 E F0 +(pipelines pre\214x)144 516 R .648(ed with the)-.15 F F1(time)3.148 E F0 (reserv)3.148 E .648(ed w)-.15 F .649(ord should be displayed.)-.1 F (The)5.649 E F1(%)3.149 E F0 .649(character introduces)3.149 F .712 -(an escape sequence that is e)144 216 R .711(xpanded to a time v)-.15 F +(an escape sequence that is e)144 528 R .711(xpanded to a time v)-.15 F .711(alue or other information.)-.25 F .711(The escape sequences)5.711 F -(and their meanings are as follo)144 228 Q -(ws; the braces denote optional portions.)-.25 E F1(%%)144 246 Q F0 2.5 -(Al)30 G(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 258 Q/F3 10 -/Times-Italic@0 SF(p)A F1(][l]R)A F0(The elapsed time in seconds.)11.68 -E F1(%[)144 270 Q F3(p)A F1(][l]U)A F0 -(The number of CPU seconds spent in user mode.)11.68 E F1(%[)144 282 Q -F3(p)A F1(][l]S)A F0(The number of CPU seconds spent in system mode.) -13.34 E F1(%P)144 294 Q F0 -(The CPU percentage, computed as \(%U + %S\) / %R.)33.89 E .87 -(The optional)144 310.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 +(and their meanings are as follo)144 540 Q +(ws; the braces denote optional portions.)-.25 E F1(%%)144 558 Q F0 2.5 +(Al)194 558 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 570 Q F4(p)A F1 +(][l]R)A F0(The elapsed time in seconds.)194 570 Q F1(%[)144 582 Q F4(p) +A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)194 582 Q +F1(%[)144 594 Q F4(p)A F1(][l]S)A F0 +(The number of CPU seconds spent in system mode.)194 594 Q F1(%P)144 606 +Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)194 606 Q .87 +(The optional)144 622.8 R F4(p)3.37 E F0 .87(is a digit specifying the) +3.37 F F4(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87 (he number of fractional digits after a decimal)-3.37 F 2.526(point. A) -144 322.8 R -.25(va)2.526 G .025 +144 634.8 R -.25(va)2.526 G .025 (lue of 0 causes no decimal point or fraction to be output.).25 F .025 (At most three places after the)5.025 F .537 -(decimal point may be speci\214ed; v)144 334.8 R .537(alues of)-.25 F F3 +(decimal point may be speci\214ed; v)144 646.8 R .537(alues of)-.25 F F4 (p)3.037 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.538 E -F3(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 346.8 Q -(alue 3 is used.)-.25 E .668(The optional)144 363.6 R F1(l)3.168 E F0 +F4(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 658.8 Q +(alue 3 is used.)-.25 E .668(The optional)144 675.6 R F1(l)3.168 E F0 .668(speci\214es a longer format, including minutes, of the form)3.168 F -F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.167(s. The)B -.25(va) -3.167 G(lue).25 E(of)144 375.6 Q F3(p)2.5 E F0 +F4(MM)3.168 E F0(m)A F4(SS)A F0(.)A F4(FF)A F0 3.167(s. The)B -.25(va) +3.167 G(lue).25 E(of)144 687.6 Q F4(p)2.5 E F0 (determines whether or not the fraction is included.)2.5 E 13.364 -(If this v)144 392.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865 +(If this v)144 704.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865 E F0 13.365(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) -144 404.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 +144 716.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 (.I)C 4.613(ft)-7.113 G 2.113(he v)-4.613 F 2.113 (alue is null, no timing information is dis-)-.25 F 2.5(played. A)144 -416.4 R(trailing ne)2.5 E -(wline is added when the format string is displayed.)-.25 E F1(TMOUT)108 -428.4 Q F0 .941(If set to a v)144 440.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 452.4 Q F1(select)2.811 E F0 .311 -(command terminates if input does not arri)2.811 F .61 -.15(ve a)-.25 H -(fter).15 E F2(TMOUT)2.81 E F0 .31(seconds when input is com-)2.56 F -.885(ing from a terminal.)144 464.4 R .885(In an interacti)5.885 F 1.185 --.15(ve s)-.25 H .885(hell, the v).15 F .886 -(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 476.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 488.4 -Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 500.4 Q F0 .39(If set,)144 512.4 -R F1(bash)2.89 E F0 .39(uses its v)2.89 F .39 -(alue as the name of a directory in which)-.25 F F1(bash)2.891 E F0 .391 -(creates temporary \214les for the)2.891 F(shell')144 524.4 Q 2.5(su) --.55 G(se.)-2.5 E F1(auto_r)108 536.4 Q(esume)-.18 E F0 .531(This v)144 -548.4 R .531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531 -(he shell interacts with the user and job control.)-3.031 F .53 -(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 560.4 R -.538(ord simple commands without redirections are treated as candidates\ - for resumption of an)-.1 F -.15(ex)144 572.4 S .367(isting stopped job) -.15 F 5.367(.T)-.4 G .366(here is no ambiguity allo)-5.367 F .366 -(wed; if there is more than one job be)-.25 F .366(ginning with)-.15 F -1.124(the string typed, the job most recently accessed is selected.)144 -584.4 R(The)6.125 E F3(name)3.985 E F0 1.125(of a stopped job, in this) -3.805 F(conte)144 596.4 Q 1.133 -(xt, is the command line used to start it.)-.15 F 1.133(If set to the v) -6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.632(,t).68 G 1.132 -(he string supplied must)-3.632 F .624 -(match the name of a stopped job e)144 608.4 R .624(xactly; if set to) --.15 F F3(substring)3.125 E F0 3.125(,t).22 G .625 -(he string supplied needs to match a)-3.125 F .885 -(substring of the name of a stopped job)144 620.4 R 5.884(.T)-.4 G(he) --5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .884(lue pro).25 F .884 -(vides functionality analogous to)-.15 F(the)144 632.4 Q F1(%?)3.333 E -F0 .833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 -E F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) --.15 G .834(ther v)-3.334 F .834(alue, the supplied string)-.25 F .316 -(must be a pre\214x of a stopped job')144 644.4 R 2.816(sn)-.55 G .316 -(ame; this pro)-2.816 F .315(vides functionality analogous to the)-.15 F -F1(%)2.815 E F3(string)A F0(job)2.815 E(identi\214er)144 656.4 Q(.)-.55 -E F1(histchars)108 668.4 Q F0 2.069(The tw)144 680.4 R 4.57(oo)-.1 G -4.57(rt)-4.57 G 2.07(hree characters which control history e)-4.57 F -2.07(xpansion and tok)-.15 F 2.07(enization \(see)-.1 F F2(HIST)4.57 E -(OR)-.162 E(Y)-.315 E(EXP)144 692.4 Q(ANSION)-.666 E F0(belo)3.466 E -3.716(w\). The)-.25 F 1.216(\214rst character is the)3.716 F F3 1.215 -(history e)3.715 F(xpansion)-.2 E F0(character)3.715 E 3.715(,t)-.4 G -1.215(he character which)-3.715 F .798(signals the start of a history e) -144 704.4 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B -.798(second character is the)3.298 F F3(quic)3.298 E 3.298(ks)-.2 G -(ubstitu-)-3.298 E(tion)144 716.4 Q F0(character)2.74 E 2.74(,w)-.4 G -.239(hich is used as shorthand for re-running the pre)-2.74 F .239 -(vious command entered, substitut-)-.25 F .575 -(ing one string for another in the command.)144 728.4 R .575(The def) -5.575 F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .576 -(optional third character is the)3.076 F(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(17)190.95 E 0 Cg EP +728.4 R(trailing ne)2.5 E +(wline is added when the format string is displayed.)-.25 E +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(17)192.055 E 0 Cg EP %%Page: 18 18 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .223(character which indicates that the remainder of the line is\ - a comment when found as the \214rst char)144 84 R(-)-.2 E 1.293 -(acter of a w)144 96 R 1.293(ord, normally `)-.1 F/F1 10/Times-Bold@0 SF -(#)A F0 3.793('. The)B 1.294 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(TMOUT)108 84 Q F0 .941(If set to a v)144 96 R .941 +(alue greater than zero,)-.25 F/F2 9/Times-Bold@0 SF(TMOUT)3.441 E F0 +.941(is treated as the def)3.191 F .941(ault timeout for the)-.1 F F1 +-.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 G(iltin.).2 E(The)144 108 Q F1 +(select)2.811 E F0 .311(command terminates if input does not arri)2.811 +F .61 -.15(ve a)-.25 H(fter).15 E F2(TMOUT)2.81 E F0 .31 +(seconds when input is com-)2.56 F .885(ing from a terminal.)144 120 R +.885(In an interacti)5.885 F 1.185 -.15(ve s)-.25 H .885(hell, the v).15 +F .886(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 +132 S 1.05(it for a line of input after issuing the primary prompt.).1 F +F1(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that) +-.1 F(number of seconds if a complete line of input does not arri)144 +144 Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 156 Q F0 .39(If set,)144 168 +R F1(bash)2.89 E F0 .39(uses its v)2.89 F .39 +(alue as the name of a directory in which)-.25 F F1(bash)2.891 E F0 .391 +(creates temporary \214les for the)2.891 F(shell')144 180 Q 2.5(su)-.55 +G(se.)-2.5 E F1(auto_r)108 192 Q(esume)-.18 E F0 .531(This v)144 204 R +.531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531 +(he shell interacts with the user and job control.)-3.031 F .53 +(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 216 R +.538(ord simple commands without redirections are treated as candidates\ + for resumption of an)-.1 F -.15(ex)144 228 S .367(isting stopped job) +.15 F 5.367(.T)-.4 G .366(here is no ambiguity allo)-5.367 F .366 +(wed; if there is more than one job be)-.25 F .366(ginning with)-.15 F +1.124(the string typed, the job most recently accessed is selected.)144 +240 R(The)6.125 E/F3 10/Times-Italic@0 SF(name)3.985 E F0 1.125 +(of a stopped job, in this)3.805 F(conte)144 252 Q 1.133 +(xt, is the command line used to start it.)-.15 F 1.133(If set to the v) +6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.632(,t).68 G 1.132 +(he string supplied must)-3.632 F .624 +(match the name of a stopped job e)144 264 R .624(xactly; if set to)-.15 +F F3(substring)3.125 E F0 3.125(,t).22 G .625 +(he string supplied needs to match a)-3.125 F .885 +(substring of the name of a stopped job)144 276 R 5.884(.T)-.4 G(he) +-5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .884(lue pro).25 F .884 +(vides functionality analogous to)-.15 F(the)144 288 Q F1(%?)3.333 E F0 +.833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 E +F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) +-.15 G .834(ther v)-3.334 F .834(alue, the supplied string)-.25 F .316 +(must be a pre\214x of a stopped job')144 300 R 2.816(sn)-.55 G .316 +(ame; this pro)-2.816 F .315(vides functionality analogous to the)-.15 F +F1(%)2.815 E F3(string)A F0(job)2.815 E(identi\214er)144 312 Q(.)-.55 E +F1(histchars)108 324 Q F0 2.069(The tw)144 336 R 4.57(oo)-.1 G 4.57(rt) +-4.57 G 2.07(hree characters which control history e)-4.57 F 2.07 +(xpansion and tok)-.15 F 2.07(enization \(see)-.1 F F2(HIST)4.57 E(OR) +-.162 E(Y)-.315 E(EXP)144 348 Q(ANSION)-.666 E F0(belo)3.466 E 3.716 +(w\). The)-.25 F 1.216(\214rst character is the)3.716 F F3 1.215 +(history e)3.715 F(xpansion)-.2 E F0(character)3.715 E 3.715(,t)-.4 G +1.215(he character which)-3.715 F .798(signals the start of a history e) +144 360 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B .798 +(second character is the)3.298 F F3(quic)3.298 E 3.298(ks)-.2 G +(ubstitu-)-3.298 E(tion)144 372 Q F0(character)2.74 E 2.74(,w)-.4 G .239 +(hich is used as shorthand for re-running the pre)-2.74 F .239 +(vious command entered, substitut-)-.25 F .575 +(ing one string for another in the command.)144 384 R .575(The def)5.575 +F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .576 +(optional third character is the)3.076 F .223(character which indicates\ + that the remainder of the line is a comment when found as the \214rst \ +char)144 396 R(-)-.2 E 1.293(acter of a w)144 408 R 1.293 +(ord, normally `)-.1 F F1(#)A F0 3.793('. The)B 1.294 (history comment character causes history substitution to be)3.794 F .38 -(skipped for the remaining w)144 108 R .38(ords on the line.)-.1 F .379 +(skipped for the remaining w)144 420 R .38(ords on the line.)-.1 F .379 (It does not necessarily cause the shell parser to treat)5.379 F -(the rest of the line as a comment.)144 120 Q F1(Arrays)87 136.8 Q(Bash) -108 148.8 Q F0(pro)3.39 E .89(vides one-dimensional inde)-.15 F -.15(xe) +(the rest of the line as a comment.)144 432 Q F1(Arrays)87 448.8 Q(Bash) +108 460.8 Q F0(pro)3.39 E .89(vides one-dimensional inde)-.15 F -.15(xe) -.15 G 3.39(da).15 G .891(nd associati)-3.39 F 1.191 -.15(ve a)-.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .891 -(ariable may be used as an)-3.641 F(inde)108 160.8 Q -.15(xe)-.15 G +(ariable may be used as an)-3.641 F(inde)108 472.8 Q -.15(xe)-.15 G 2.574(da).15 G .074(rray; the)-2.574 F F1(declar)2.574 E(e)-.18 E F0 -.2 (bu)2.574 G .074(iltin will e).2 F .073(xplicitly declare an array)-.15 F 5.073(.T)-.65 G .073(here is no maximum limit on the size of)-5.073 F -.328(an array)108 172.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr) +.328(an array)108 484.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr) -.15 G .329(equirement that members be inde)-2.828 F -.15(xe)-.15 G 2.829(do).15 G 2.829(ra)-2.829 G .329(ssigned contiguously)-2.829 F 5.329(.I)-.65 G(nde)-5.329 E -.15(xe)-.15 G 2.829(da).15 G .329 -(rrays are refer)-2.829 F(-)-.2 E 1.387(enced using inte)108 184.8 R -1.387(gers \(including arithmetic e)-.15 F 3.887(xpressions\) and)-.15 F -1.387(are zero-based; associati)3.887 F 1.686 -.15(ve a)-.25 H 1.386 -(rrays are refer).15 F(-)-.2 E .219(enced using arbitrary strings.)108 -196.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 .52 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.463(An inde)108 -213.6 R -.15(xe)-.15 G 4.963(da).15 G 2.463 -(rray is created automatically if an)-4.963 F 4.963(yv)-.15 G 2.462 -(ariable is assigned to using the syntax)-5.213 F/F2 10/Times-Italic@0 -SF(name)4.962 E F0([)A F2(sub-)A(script)108 225.6 Q F0(]=)A F2(value)A -F0 6.548(.T)C(he)-6.548 E F2(subscript)4.388 E F0 1.549 -(is treated as an arithmetic e)4.728 F 1.549(xpression that must e)-.15 -F -.25(va)-.25 G 1.549(luate to a number).25 F 6.549(.T)-.55 G(o)-7.349 -E -.15(ex)108 237.6 S 1.98(plicitly declare an inde).15 F -.15(xe)-.15 G -4.48(da).15 G(rray)-4.48 E 4.48(,u)-.65 G(se)-4.48 E F1(declar)4.48 E -4.48<65ad>-.18 G(a)-4.48 E F2(name)4.48 E F0(\(see)4.48 E/F3 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(w\).)-.25 E F1(declar)108 249.6 Q 2.5<65ad>-.18 -G(a)-2.5 E F2(name)2.5 E F1([)A F2(subscript)A F1(])A F0 -(is also accepted; the)2.5 E F2(subscript)2.5 E F0(is ignored.)2.5 E -(Associati)108 266.4 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E -F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F2(name)2.5 E F0(.)A(Attrib)108 -283.2 Q .94(utes may be speci\214ed for an array v)-.2 F .941 -(ariable using the)-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.441 E F1 --.18(re)3.441 G(adonly).18 E F0 -.2(bu)3.441 G 3.441(iltins. Each).2 F -(attrib)3.441 E(ute)-.2 E(applies to all members of an array)108 295.2 Q -(.)-.65 E 1.647 -(Arrays are assigned to using compound assignments of the form)108 312 R -F2(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F2(1)A F0 1.647 -(... v)4.147 F(alue)-.25 E F2(n)A F1(\))A F0 4.147(,w)C 1.647(here each) --4.147 F F2(value)108 324 Q F0 1.833(is of the form [)4.332 F F2 -(subscript)A F0(]=)A F2(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 -G 4.333(da).15 G 1.833(rray assignments do not require an)-4.333 F 1.833 -(ything b)-.15 F(ut)-.2 E F2(string)4.333 E F0(.)A .164 -(When assigning to inde)108 336 R -.15(xe)-.15 G 2.663(da).15 G .163 +(rrays are refer)-2.829 F(-)-.2 E 1.595(enced using inte)108 496.8 R +1.595(gers \(including arithmetic e)-.15 F 1.595 +(xpressions\) and are zero-based; associati)-.15 F 1.895 -.15(ve a)-.25 +H 1.595(rrays are refer).15 F(-)-.2 E(enced using arbitrary strings.)108 +508.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G +(rray indices must be non-ne)-2.5 E -.05(ga)-.15 G(ti).05 E .3 -.15 +(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 525.6 R -.15(xe) +-.15 G 4.962(da).15 G 2.462(rray is created automatically if an)-4.962 F +4.963(yv)-.15 G 2.463(ariable is assigned to using the syntax)-5.213 F +F3(name)4.963 E F0([)A F3(sub-)A(script)108 537.6 Q F0(]=)A F3(value)A +F0 6.549(.T)C(he)-6.549 E F3(subscript)4.389 E F0 1.549 +(is treated as an arithmetic e)4.729 F 1.549(xpression that must e)-.15 +F -.25(va)-.25 G 1.548(luate to a number).25 F 6.548(.T)-.55 G(o)-7.348 +E -.15(ex)108 549.6 S 1.979(plicitly declare an inde).15 F -.15(xe)-.15 +G 4.479(da).15 G(rray)-4.479 E 4.48(,u)-.65 G(se)-4.48 E F1(declar)4.48 +E 4.48<65ad>-.18 G(a)-4.48 E F3(name)4.48 E F0(\(see)4.48 E F2 1.98 +(SHELL B)4.48 F(UIL)-.09 E 1.98(TIN COMMANDS)-.828 F F0(belo)4.23 E +(w\).)-.25 E F1(declar)108 561.6 Q 2.5<65ad>-.18 G(a)-2.5 E F3(name)2.5 +E F1([)A F3(subscript)A F1(])A F0(is also accepted; the)2.5 E F3 +(subscript)2.5 E F0(is ignored.)2.5 E(Associati)108 578.4 Q .3 -.15 +(ve a)-.25 H(rrays are created using).15 E F1(declar)2.5 E 2.5<65ad>-.18 +G(A)-2.5 E F3(name)2.5 E F0(.)A(Attrib)108 595.2 Q .941 +(utes may be speci\214ed for an array v)-.2 F .941(ariable using the) +-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.44 E F1 -.18(re)3.44 G +(adonly).18 E F0 -.2(bu)3.44 G 3.44(iltins. Each).2 F(attrib)3.44 E(ute) +-.2 E(applies to all members of an array)108 607.2 Q(.)-.65 E 1.647 +(Arrays are assigned to using compound assignments of the form)108 624 R +F3(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F3(1)A F0 1.647 +(... v)4.147 F(alue)-.25 E F3(n)A F1(\))A F0 4.148(,w)C 1.648(here each) +-4.148 F F3(value)108 636 Q F0 1.833(is of the form [)4.333 F F3 +(subscript)A F0(]=)A F3(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 +G 4.333(da).15 G 1.833(rray assignments do not require an)-4.333 F 1.832 +(ything b)-.15 F(ut)-.2 E F3(string)4.332 E F0(.)A .163 +(When assigning to inde)108 648 R -.15(xe)-.15 G 2.663(da).15 G .163 (rrays, if the optional brack)-2.663 F .163 -(ets and subscript are supplied, that inde)-.1 F 2.663(xi)-.15 G 2.663 -(sa)-2.663 G(ssigned)-2.663 E 1.41(to; otherwise the inde)108 348 R 3.91 -(xo)-.15 G 3.91(ft)-3.91 G 1.41(he element assigned is the last inde) --3.91 F 3.911(xa)-.15 G 1.411(ssigned to by the statement plus one.) --3.911 F(Inde)108 360 Q(xing starts at zero.)-.15 E -(When assigning to an associati)108 376.8 Q .3 -.15(ve a)-.25 H(rray).15 -E 2.5(,t)-.65 G(he subscript is required.)-2.5 E .24 -(This syntax is also accepted by the)108 393.6 R F1(declar)2.74 E(e)-.18 -E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .239 -(vidual array elements may be assigned to using the)-.25 F F2(name)108 -405.6 Q F0([)A F2(subscript)A F0(]=)A F2(value)A F0 1.917 -(syntax introduced abo)4.416 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 +(ets and subscript are supplied, that inde)-.1 F 2.664(xi)-.15 G 2.664 +(sa)-2.664 G(ssigned)-2.664 E 1.411(to; otherwise the inde)108 660 R +3.911(xo)-.15 G 3.911(ft)-3.911 G 1.411 +(he element assigned is the last inde)-3.911 F 3.91(xa)-.15 G 1.41 +(ssigned to by the statement plus one.)-3.91 F(Inde)108 672 Q +(xing starts at zero.)-.15 E(When assigning to an associati)108 688.8 Q +.3 -.15(ve a)-.25 H(rray).15 E 2.5(,t)-.65 G(he subscript is required.) +-2.5 E .239(This syntax is also accepted by the)108 705.6 R F1(declar) +2.739 E(e)-.18 E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .24 +(vidual array elements may be assigned to using the)-.25 F F3(name)108 +717.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917 +(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 F2(name)4.777 E F0 1.917(is sub-) -4.597 F .116(scripted by a ne)108 417.6 R -.05(ga)-.15 G(ti).05 E .416 --.15(ve n)-.25 H(umber).15 E 2.616(,t)-.4 G .115 -(hat number is interpreted as relati)-2.616 F .415 -.15(ve t)-.25 H -2.615(oo).15 G .115(ne greater than the maximum inde)-2.615 F(x)-.15 E -(of)108 429.6 Q F2(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 --.15(eg a)-3.338 H(ti).15 E 1.138 -.15(ve i)-.25 H .838 -(ndices count back from the end of the array).15 F 3.338(,a)-.65 G .838 -(nd an inde)-3.338 F 3.338(xo)-.15 G 3.338<66ad>-3.338 G 3.338(1r)-3.338 -G .838(eferences the last)-3.338 F(element.)108 441.6 Q(An)108 458.4 Q -3.576(ye)-.15 G 1.076(lement of an array may be referenced using ${) --3.576 F F2(name)A F0([)A F2(subscript)A F0 3.575(]}. The)B 1.075 -(braces are required to a)3.575 F -.2(vo)-.2 G(id).2 E 1.541 -(con\215icts with pathname e)108 470.4 R 4.041(xpansion. If)-.15 F F2 -(subscript)4.041 E F0(is)4.041 E F1(@)4.041 E F0(or)4.041 E F1(*)4.041 E -F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541 -(xpands to all members of)-.15 F F2(name)4.042 E F0(.)A 1.057 -(These subscripts dif)108 482.4 R 1.057(fer only when the w)-.25 F 1.057 -(ord appears within double quotes.)-.1 F 1.056(If the w)6.056 F 1.056 -(ord is double-quoted,)-.1 F(${)108 494.4 Q F2(name)A F0 .52([*]} e)B -.52(xpands to a single w)-.15 F .52(ord with the v)-.1 F .521 -(alue of each array member separated by the \214rst character)-.25 F -1.375(of the)108 506.4 R F3(IFS)3.875 E F0 1.375(special v)3.625 F 1.375 -(ariable, and ${)-.25 F F2(name)A F0 1.375([@]} e)B 1.375 -(xpands each element of)-.15 F F2(name)3.875 E F0 1.374(to a separate w) -3.875 F 3.874(ord. When)-.1 F 2.027(there are no array members, ${)108 -518.4 R F2(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F -2.028(If the double-quoted e)7.028 F 2.028(xpansion occurs)-.15 F .759 -(within a w)108 530.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 .515(and the e)108 -542.4 R .516(xpansion of the last parameter is joined with the last par\ -t of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous)3.016 -F .228(to the e)108 554.4 R .228(xpansion of the special parameters)-.15 -F F1(*)2.728 E F0(and)2.728 E F1(@)2.728 E F0(\(see)2.728 E F1 .228 -(Special P)2.728 F(arameters)-.1 E F0(abo)2.727 E -.15(ve)-.15 G 2.727 -(\). ${#).15 F F2(name)A F0([)A F2(subscript)A F0(]})A -.15(ex)108 566.4 -S .886(pands to the length of ${).15 F F2(name)A F0([)A F2(subscript)A -F0 3.386(]}. If)B F2(subscript)3.386 E F0(is)3.386 E F1(*)3.386 E F0(or) -3.386 E F1(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 -(xpansion is the number of ele-)-.15 F .463(ments in the array)108 578.4 -R 5.463(.R)-.65 G .463(eferencing an array v)-5.463 F .462 -(ariable without a subscript is equi)-.25 F -.25(va)-.25 G .462 -(lent to referencing the array).25 F .233(with a subscript of 0.)108 -590.4 R .233(If the)5.233 F F2(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 .617(ber less than zero, it is interpreted as relati)108 602.4 R .917 --.15(ve t)-.25 H 3.117(oo).15 G .616(ne greater than the maximum inde) --3.117 F 3.116(xo)-.15 G 3.116(ft)-3.116 G .616(he array)-3.116 F 3.116 -(,s)-.65 G 3.116(on)-3.116 G -.15(eg)-3.116 G(-).15 E(ati)108 614.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 631.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 .418(It is possible to obtain the k)108 648 R -.15(ey)-.1 -G 2.918(s\().15 G .418(indices\) of an array as well as the v)-2.918 F -2.917(alues. ${)-.25 F F1(!)A F2(name)A F0([)A F2(@)A F0 .417(]} and ${) -B F1(!)A F2(name)A F0([)A F2(*)A F0(]})A -.15(ex)108 660 S .749 -(pand to the indices assigned in array v).15 F(ariable)-.25 E F2(name) -3.249 E F0 5.749(.T)C .75 -(he treatment when in double quotes is similar to)-5.749 F(the e)108 672 -Q(xpansion of the special parameters)-.15 E F2(@)2.5 E F0(and)2.5 E F2 -(*)2.5 E F0(within double quotes.)2.5 E(The)108 688.8 Q F1(unset)2.767 E -F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1 G -(rrays.)-2.767 E F1(unset)5.267 E F2(name)2.767 E F0([)A F2(subscript)A -F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x) --.15 E F2(sub-)2.766 E(script)108 700.8 Q F0 6.318(.N)C -2.25 -.15(eg a) --6.318 H(ti).15 E 1.618 -.15(ve s)-.25 H 1.318(ubscripts to inde).15 F --.15(xe)-.15 G 3.818(da).15 G 1.319 -(rrays are interpreted as described abo)-3.818 F -.15(ve)-.15 G 6.319 -(.C).15 G 1.319(are must be tak)-6.319 F 1.319(en to)-.1 F -.2(avo)108 -712.8 S .298(id unw).2 F .298(anted side ef)-.1 F .298 -(fects caused by pathname e)-.25 F(xpansion.)-.15 E F1(unset)5.298 E F2 -(name)2.797 E F0 2.797(,w)C(here)-2.797 E F2(name)2.797 E F0 .297 -(is an array)2.797 F 2.797(,o)-.65 G(r)-2.797 E F1(unset)2.797 E F2 -(name)108 724.8 Q F0([)A F2(subscript)A F0(], where)A F2(subscript)2.5 E -F0(is)2.5 E F1(*)2.5 E F0(or)2.5 E F1(@)2.5 E F0 2.5(,r)C(emo)-2.5 E --.15(ve)-.15 G 2.5(st).15 G(he entire array)-2.5 E(.)-.65 E -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(18)190.95 E 0 Cg EP +-4.417 E 4.417(,i)-.65 G(f)-4.417 E F3(name)4.777 E F0 1.916(is sub-) +4.597 F .115(scripted by a ne)108 729.6 R -.05(ga)-.15 G(ti).05 E .415 +-.15(ve n)-.25 H(umber).15 E 2.615(,t)-.4 G .115 +(hat number is interpreted as relati)-2.615 F .415 -.15(ve t)-.25 H +2.615(oo).15 G .116(ne greater than the maximum inde)-2.615 F(x)-.15 E +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(18)192.055 E 0 Cg EP %%Page: 19 19 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(The)108 84 Q/F1 10/Times-Bold@0 SF(declar)3.573 E(e)-.18 E F0(,)A -F1(local)3.573 E F0 3.573(,a)C(nd)-3.573 E F1 -.18(re)3.573 G(adonly).18 -E F0 -.2(bu)3.573 G 1.073(iltins each accept a).2 F F13.573 E F0 -1.073(option to specify an inde)3.573 F -.15(xe)-.15 G 3.574(da).15 G -1.074(rray and a)-3.574 F F13.574 E F0 .339 -(option to specify an associati)108 96 R .638 -.15(ve a)-.25 H(rray).15 -E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,) --2.838 F F12.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The) -5.338 E F1 -.18(re)2.838 G(ad).18 E F0 -.2(bu)2.838 G(iltin).2 E .44 -(accepts a)108 108 R F12.941 E F0 .441 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(of)108 84 Q/F1 10 +/Times-Italic@0 SF(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 +-.15(eg a)-3.338 H(ti).15 E 1.138 -.15(ve i)-.25 H .838 +(ndices count back from the end of the array).15 F 3.338(,a)-.65 G .838 +(nd an inde)-3.338 F 3.338(xo)-.15 G 3.338<66ad>-3.338 G 3.338(1r)-3.338 +G .838(eferences the last)-3.338 F(element.)108 96 Q(An)108 112.8 Q +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 124.8 R 4.041(xpansion. If)-.15 F F1 +(subscript)4.041 E F0(is)4.041 E/F2 10/Times-Bold@0 SF(@)4.041 E F0(or) +4.041 E F2(*)4.041 E F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F +1.541(xpands to all members of)-.15 F F1(name)4.041 E F0(.)A 1.056 +(These subscripts dif)108 136.8 R 1.056(fer only when the w)-.25 F 1.057 +(ord appears within double quotes.)-.1 F 1.057(If the w)6.057 F 1.057 +(ord is double-quoted,)-.1 F(${)108 148.8 Q F1(name)A F0 .521([*]} e)B +.521(xpands to a single w)-.15 F .521(ord with the v)-.1 F .52 +(alue of each array member separated by the \214rst character)-.25 F +1.374(of the)108 160.8 R/F3 9/Times-Bold@0 SF(IFS)3.874 E F0 1.374 +(special v)3.624 F 1.375(ariable, and ${)-.25 F F1(name)A F0 1.375 +([@]} e)B 1.375(xpands each element of)-.15 F F1(name)3.875 E F0 1.375 +(to a separate w)3.875 F 3.875(ord. When)-.1 F 2.028 +(there are no array members, ${)108 172.8 R F1(name)A F0 2.028([@]} e)B +2.028(xpands to nothing.)-.15 F 2.027(If the double-quoted e)7.028 F +2.027(xpansion occurs)-.15 F .758(within a w)108 184.8 R .759 +(ord, the e)-.1 F .759 +(xpansion of the \214rst parameter is joined with the be)-.15 F .759 +(ginning part of the original w)-.15 F(ord,)-.1 E .516(and the e)108 +196.8 R .516(xpansion of the last parameter is joined with the last par\ +t of the original w)-.15 F 3.015(ord. This)-.1 F .515(is analogous)3.015 +F .227(to the e)108 208.8 R .228(xpansion of the special parameters)-.15 +F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228 +(Special P)2.728 F(arameters)-.1 E F0(abo)2.728 E -.15(ve)-.15 G 2.728 +(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0(]})A -.15(ex)108 220.8 +S .886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A +F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or) +3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 +(xpansion is the number of ele-)-.15 F .294(ments in the array)108 232.8 +R 5.294(.I)-.65 G 2.794(ft)-5.294 G(he)-2.794 E F1(subscript)3.135 E F0 +.295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G +2.795(da).15 G .295(rray e)-2.795 F -.25(va)-.25 G .295 +(luates to a number).25 F .629 +(less than zero, it is interpreted as relati)108 244.8 R .929 -.15(ve t) +-.25 H 3.128(oo).15 G .628(ne greater than the maximum inde)-3.128 F +3.128(xo)-.15 G 3.128(ft)-3.128 G .628(he array)-3.128 F 3.128(,s)-.65 G +3.128(on)-3.128 G -2.25 -.15(eg a)-3.128 H(ti).15 E -.15(ve)-.25 G +(indices count back from the end of the array)108 256.8 Q 2.5(,a)-.65 G +(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G +(eferences the last element.)-2.5 E .595(Referencing an array v)108 +273.6 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G +.595(lent to referencing the array with a subscript of).25 F 2.5(0. An) +108 285.6 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 +E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F2(bash)2.5 E +F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 302.4 +Q(ariable is considered set if a subscript has been assigned a v)-.25 E +2.5(alue. The)-.25 F(null string is a v)2.5 E(alid v)-.25 E(alue.)-.25 E +.418(It is possible to obtain the k)108 319.2 R -.15(ey)-.1 G 2.918(s\() +.15 G .418(indices\) of an array as well as the v)-2.918 F 2.917 +(alues. ${)-.25 F F2(!)A F1(name)A F0([)A F1(@)A F0 .417(]} and ${)B F2 +(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 331.2 S .749 +(pand to the indices assigned in array v).15 F(ariable)-.25 E F1(name) +3.249 E F0 5.749(.T)C .75 +(he treatment when in double quotes is similar to)-5.749 F(the e)108 +343.2 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5 +E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 360 Q F2(unset)2.767 +E F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1 G +(rrays.)-2.767 E F2(unset)5.267 E F1(name)2.767 E F0([)A F1(subscript)A +F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x) +-.15 E F1(sub-)2.766 E(script)108 372 Q F0 6.318(.N)C -2.25 -.15(eg a) +-6.318 H(ti).15 E 1.618 -.15(ve s)-.25 H 1.318(ubscripts to inde).15 F +-.15(xe)-.15 G 3.818(da).15 G 1.319 +(rrays are interpreted as described abo)-3.818 F -.15(ve)-.15 G 6.319 +(.C).15 G 1.319(are must be tak)-6.319 F 1.319(en to)-.1 F -.2(avo)108 +384 S .298(id unw).2 F .298(anted side ef)-.1 F .298 +(fects caused by pathname e)-.25 F(xpansion.)-.15 E F2(unset)5.298 E F1 +(name)2.797 E F0 2.797(,w)C(here)-2.797 E F1(name)2.797 E F0 .297 +(is an array)2.797 F 2.797(,o)-.65 G(r)-2.797 E F2(unset)2.797 E F1 +(name)108 396 Q F0([)A F1(subscript)A F0(], where)A F1(subscript)2.5 E +F0(is)2.5 E F2(*)2.5 E F0(or)2.5 E F2(@)2.5 E F0 2.5(,r)C(emo)-2.5 E +-.15(ve)-.15 G 2.5(st).15 G(he entire array)-2.5 E(.)-.65 E(The)108 +412.8 Q F2(declar)3.573 E(e)-.18 E F0(,)A F2(local)3.573 E F0 3.573(,a)C +(nd)-3.573 E F2 -.18(re)3.573 G(adonly).18 E F0 -.2(bu)3.573 G 1.073 +(iltins each accept a).2 F F23.573 E F0 1.073 +(option to specify an inde)3.573 F -.15(xe)-.15 G 3.574(da).15 G 1.074 +(rray and a)-3.574 F F23.574 E F0 .339 +(option to specify an associati)108 424.8 R .638 -.15(ve a)-.25 H(rray) +.15 E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,) +-2.838 F F22.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The) +5.338 E F2 -.18(re)2.838 G(ad).18 E F0 -.2(bu)2.838 G(iltin).2 E .44 +(accepts a)108 436.8 R F22.941 E F0 .441 (option to assign a list of w)2.941 F .441 (ords read from the standard input to an array)-.1 F 5.441(.T)-.65 G(he) --5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.941 E(e)-.18 E F0 -.2 -(bu)108 120 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 136.8 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ -rmed on the command line after it has been split into w)108 148.8 R 3.26 +-5.441 E F2(set)2.941 E F0(and)2.941 E F2(declar)2.941 E(e)-.18 E F0 -.2 +(bu)108 448.8 S(iltins display array v).2 E(alues in a w)-.25 E +(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F4 10.95 +/Times-Bold@0 SF(EXP)72 465.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ +rmed on the command line after it has been split into w)108 477.6 R 3.26 (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 160.8 S .369(pansion performed:).15 F/F3 10 -/Times-Italic@0 SF(br)2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 -E F3 .369(tilde e)2.869 F(xpansion)-.2 E F0(,).24 E F3(par)2.869 E .369 -(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F3 .37 -(command sub-)2.869 F(stitution)108 172.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 .419(The order of e)108 189.6 R .419(xpansions is: brace e)-.15 F .418 +(inds of)-3.26 F -.15(ex)108 489.6 S .369(pansion performed:).15 F F1 +(br)2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .369(tilde e) +2.869 F(xpansion)-.2 E F0(,).24 E F1(par)2.869 E .369 +(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .37 +(command sub-)2.869 F(stitution)108 501.6 Q F0(,).24 E F1(arithmetic e) +2.5 E(xpansion)-.2 E F0(,).24 E F1(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 +E F0 2.5(,a).22 G(nd)-2.5 E F1(pathname e)2.5 E(xpansion)-.2 E F0(.).24 +E .419(The order of e)108 518.4 R .419(xpansions is: brace e)-.15 F .418 (xpansion; tilde e)-.15 F .418(xpansion, parameter and v)-.15 F .418 -(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 201.6 S +(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 530.4 S .195(pansion, and command substitution \(done in a left-to-right f).15 F .196(ashion\); w)-.1 F .196(ord splitting; and pathname e)-.1 F(xpan-) --.15 E(sion.)108 213.6 Q .257 -(On systems that can support it, there is an additional e)108 230.4 R -.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F3(pr)2.757 E .257 +-.15 E(sion.)108 542.4 Q .257 +(On systems that can support it, there is an additional e)108 559.2 R +.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F1(pr)2.757 E .257 (ocess substitution)-.45 F F0 5.257(.T)C .256(his is per)-5.257 F(-)-.2 -E(formed at the same time as tilde, parameter)108 242.4 Q 2.5(,v)-.4 G +E(formed at the same time as tilde, parameter)108 571.2 Q 2.5(,v)-.4 G (ariable, and arithmetic e)-2.75 E(xpansion and command substitution.) --.15 E 1.486(Only brace e)108 259.2 R 1.486(xpansion, w)-.15 F 1.486 +-.15 E .002(After these e)108 588 R .003 +(xpansions are performed, quote characters present in the original w) +-.15 F .003(ord are remo)-.1 F -.15(ve)-.15 G 2.503(du).15 G .003 +(nless the)-2.503 F(y)-.15 E(ha)108 600 Q .3 -.15(ve b)-.2 H +(een quoted themselv).15 E(es \()-.15 E F1(quote r)A(emo)-.37 E(val)-.1 +E F0(\).)A 1.487(Only brace e)108 616.8 R 1.487(xpansion, w)-.15 F 1.487 (ord splitting, and pathname e)-.1 F 1.487 -(xpansion can change the number of w)-.15 F 1.487(ords of the)-.1 F -.15 -(ex)108 271.2 S 1.165(pansion; other e).15 F 1.165(xpansions e)-.15 F -1.165(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 -(ord. The)-.1 F 1.164(only e)3.665 F 1.164(xceptions to this are the) --.15 F -.15(ex)108 283.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 300 Q F3(Br)108.58 312 Q .606(ace e)-.15 F(xpansion) --.2 E F0 .606 +(xpansion can change the number of w)-.15 F 1.486(ords of the)-.1 F -.15 +(ex)108 628.8 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 F +1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 +(ord. The)-.1 F 1.165(only e)3.665 F 1.165(xceptions to this are the) +-.15 F -.15(ex)108 640.8 S(pansions of ").15 E F2($@)A F0 2.5("a)C(nd ") +-2.5 E F2(${)A F1(name)A F2([@]})A F0 2.5("a)C 2.5(se)-2.5 G +(xplained abo)-2.65 E .3 -.15(ve \()-.15 H(see).15 E F3 -.666(PA)2.5 G +(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87 657.6 +Q F1(Br)108.58 669.6 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 (is a mechanism by which arbitrary strings may be generated.)3.346 F -.606(This mechanism is similar)5.606 F(to)108 324 Q F3 .415(pathname e) -2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 +.606(This mechanism is similar)5.606 F(to)108 681.6 Q F1 .415 +(pathname e)2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 (ut the \214lenames generated need not e)-3.115 F 2.915(xist. P)-.15 F .415(atterns to be brace e)-.15 F .415(xpanded tak)-.15 F 2.915(et)-.1 G -(he)-2.915 E .151(form of an optional)108 336 R F3(pr)2.651 E(eamble) +(he)-2.915 E .152(form of an optional)108 693.6 R F1(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 348 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 360 R .659(xpanding left to)-.15 F(right.)108 -372 Q .719(Brace e)108 388.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 400.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.242(As) -108 417.6 S .742(equence e)-3.242 F .742(xpression tak)-.15 F .742 -(es the form)-.1 F F1({)3.242 E F3(x)A F1(..)A F3(y)A F1([..)A F3(incr)A -F1(]})A F0 3.242(,w)C(here)-3.242 E F3(x)3.242 E F0(and)3.243 E F3(y) -3.243 E F0 .743(are either inte)3.243 F .743(gers or single characters,) --.15 F(and)108 429.6 Q F3(incr)3.032 E F0 3.032(,a)C 3.032(no)-3.032 G -.532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G -.532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 -(xpression e)-.15 F .531(xpands to each)-.15 F .077(number between)108 -441.6 R F3(x)2.577 E F0(and)2.577 E F3(y)2.577 E F0 2.577(,i)C(nclusi) --2.577 E -.15(ve)-.25 G 5.077(.S).15 G .077(upplied inte)-5.077 F .077 -(gers may be pre\214x)-.15 F .077(ed with)-.15 F F3(0)2.577 E F0 .078 -(to force each term to ha)2.578 F .378 -.15(ve t)-.2 H(he).15 E .015 -(same width.)108 453.6 R .015(When either)5.015 F F3(x)2.515 E F0(or) -2.515 E F3(y)2.515 E F0(be)2.515 E .014(gins with a zero, the shell att\ -empts to force all generated terms to contain)-.15 F 1.143 -(the same number of digits, zero-padding where necessary)108 465.6 R -6.143(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F -(xpression)-.15 E -.15(ex)108 477.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 .983 -(that both)108 489.6 R F3(x)3.483 E F0(and)3.483 E F3(y)3.483 E F0 .983 -(must be of the same type.)3.483 F .984 -(When the increment is supplied, it is used as the dif)5.983 F(ference) --.25 E(between each term.)108 501.6 Q(The def)5 E -(ault increment is 1 or -1 as appropriate.)-.1 E .582(Brace e)108 518.4 -R .582(xpansion is performed before an)-.15 F 3.082(yo)-.15 G .581 -(ther e)-3.082 F .581(xpansions, and an)-.15 F 3.081(yc)-.15 G .581 -(haracters special to other e)-3.081 F(xpansions)-.15 E .015 -(are preserv)108 530.4 R .015(ed in the result.)-.15 F .015 -(It is strictly te)5.015 F(xtual.)-.15 E F1(Bash)5.016 E F0 .016 -(does not apply an)2.516 F 2.516(ys)-.15 G .016 -(yntactic interpretation to the con-)-2.516 F(te)108 542.4 Q -(xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) --.15 E 3.633(Ac)108 559.2 S 1.133(orrectly-formed brace e)-3.633 F 1.132 -(xpansion must contain unquoted opening and closing braces, and at leas\ -t one)-.15 F 3.44(unquoted comma or a v)108 571.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.441(xpansion is left)-.15 F 2.755 -(unchanged. A)108 583.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.91 -(sion. T)108 595.2 R 2.91(oa)-.8 G -.2(vo)-3.11 G .41 -(id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F -F1(${)2.911 E F0 .411(is not considered eligible for brace e)2.911 F -(xpan-)-.15 E(sion.)108 607.2 Q 1.476(This construct is typically used \ -as shorthand when the common pre\214x of the strings to be generated is) -108 624 R(longer than in the abo)108 636 Q .3 -.15(ve ex)-.15 H(ample:) -.15 E(mkdir /usr/local/src/bash/{old,ne)144 652.8 Q -.65(w,)-.25 G -(dist,b).65 E(ugs})-.2 E(or)108 664.8 Q(cho)144 676.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 693.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 .248 -(ing or closing braces specially when the)108 705.6 R 2.748(ya)-.15 G -.247(ppear as part of a w)-2.748 F .247(ord, and preserv)-.1 F .247 -(es them in the output.)-.15 F F1(Bash)5.247 E F0(remo)108 717.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 729.6 Q F0 .515 -(appears identically in the output.)3.015 F .515(The same w)5.515 F .515 -(ord is output as)-.1 F F3 .514(\214le1 \214le2)4.925 F F0 .514(after e) -3.034 F .514(xpansion by)-.15 F F1(bash)3.014 E F0(.)A(GNU Bash 4.3)72 -768 Q(2014 February 2)141.79 E(19)190.95 E 0 Cg EP +F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 705.6 R +.563(wed by an optional)-.25 F F1(postscript)3.063 E F0 5.563(.T).68 G +.563(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659 +(contained within the braces, and the postscript is then appended to ea\ +ch resulting string, e)108 717.6 R .658(xpanding left to)-.15 F(right.) +108 729.6 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(19)192.055 E +0 Cg EP %%Page: 20 20 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .436(If strict compatibility with)108 84 R/F1 10/Times-Bold@0 SF -(sh)2.936 E F0 .436(is desired, start)2.936 F F1(bash)2.936 E F0 .436 -(with the)2.936 F F1(+B)2.936 E F0 .436(option or disable brace e)2.936 -F .437(xpansion with the)-.15 F F1(+B)108 96 Q F0(option to the)2.5 E F1 -(set)2.5 E F0(command \(see)2.5 E/F2 9/Times-Bold@0 SF(SHELL B)2.5 E +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .718(Brace e)108 +84 R .719(xpansions may be nested.)-.15 F .719(The results of each e) +5.719 F .719(xpanded string are not sorted; left to right order is)-.15 +F(preserv)108 96 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E/F1 10 +/Times-Bold@0 SF({)A F0(d,c,b)A F1(})A F0 2.5(ee)C +(xpands into `ade ace abe'.)-2.65 E 3.243(As)108 112.8 S .743(equence e) +-3.243 F .743(xpression tak)-.15 F .743(es the form)-.1 F F1({)3.243 E +/F2 10/Times-Italic@0 SF(x)A F1(..)A F2(y)A F1([..)A F2(incr)A F1(]})A +F0 3.243(,w)C(here)-3.243 E F2(x)3.243 E F0(and)3.242 E F2(y)3.242 E F0 +.742(are either inte)3.242 F .742(gers or single characters,)-.15 F(and) +108 124.8 Q F2(incr)3.031 E F0 3.031(,a)C 3.032(no)-3.031 G .532 +(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G .532 +(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 +(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108 +136.8 R F2(x)2.578 E F0(and)2.578 E F2(y)2.578 E F0 2.578(,i)C(nclusi) +-2.578 E -.15(ve)-.25 G 5.078(.S).15 G .078(upplied inte)-5.078 F .077 +(gers may be pre\214x)-.15 F .077(ed with)-.15 F F2(0)2.577 E F0 .077 +(to force each term to ha)2.577 F .377 -.15(ve t)-.2 H(he).15 E .014 +(same width.)108 148.8 R .014(When either)5.014 F F2(x)2.514 E F0(or) +2.514 E F2(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell att\ +empts to force all generated terms to contain)-.15 F 1.143 +(the same number of digits, zero-padding where necessary)108 160.8 R +6.143(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F +(xpression)-.15 E -.15(ex)108 172.8 S 1.064(pands to each character le) +.15 F 1.064(xicographically between)-.15 F F2(x)3.564 E F0(and)3.564 E +F2(y)3.564 E F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G +1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .984 +(that both)108 184.8 R F2(x)3.484 E F0(and)3.484 E F2(y)3.484 E F0 .983 +(must be of the same type.)3.484 F .983 +(When the increment is supplied, it is used as the dif)5.983 F(ference) +-.25 E(between each term.)108 196.8 Q(The def)5 E +(ault increment is 1 or -1 as appropriate.)-.1 E .581(Brace e)108 213.6 +R .581(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581 +(ther e)-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582 +(haracters special to other e)-3.082 F(xpansions)-.15 E .016 +(are preserv)108 225.6 R .016(ed in the result.)-.15 F .016 +(It is strictly te)5.016 F(xtual.)-.15 E F1(Bash)5.016 E F0 .015 +(does not apply an)2.516 F 2.515(ys)-.15 G .015 +(yntactic interpretation to the con-)-2.515 F(te)108 237.6 Q +(xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) +-.15 E 3.632(Ac)108 254.4 S 1.132(orrectly-formed brace e)-3.632 F 1.132 +(xpansion must contain unquoted opening and closing braces, and at leas\ +t one)-.15 F 3.441(unquoted comma or a v)108 266.4 R 3.441 +(alid sequence e)-.25 F 5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441 +(ncorrectly formed brace e)-5.941 F 3.44(xpansion is left)-.15 F 2.755 +(unchanged. A)108 278.4 R F1({)2.755 E F0(or)2.755 E F1(,)2.755 E F0 +.255(may be quoted with a backslash to pre)2.755 F -.15(ve)-.25 G .255 +(nt its being considered part of a brace e).15 F(xpres-)-.15 E 2.911 +(sion. T)108 290.4 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 +(id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F +F1(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F +(xpan-)-.15 E(sion.)108 302.4 Q 1.476(This construct is typically used \ +as shorthand when the common pre\214x of the strings to be generated is) +108 319.2 R(longer than in the abo)108 331.2 Q .3 -.15(ve ex)-.15 H +(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 348 Q -.65(w,)-.25 G +(dist,b).65 E(ugs})-.2 E(or)108 360 Q(cho)144 372 Q +(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 E(w_e) +-.25 E(x}})-.15 E .618(Brace e)108 388.8 R .618 +(xpansion introduces a slight incompatibility with historical v)-.15 F +.618(ersions of)-.15 F F1(sh)3.118 E F0(.)A F1(sh)5.618 E F0 .618 +(does not treat open-)3.118 F .247 +(ing or closing braces specially when the)108 400.8 R 2.747(ya)-.15 G +.247(ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248 +(es them in the output.)-.15 F F1(Bash)5.248 E F0(remo)108 412.8 Q -.15 +(ve)-.15 G 3.53(sb).15 G 1.03(races from w)-3.53 F 1.03 +(ords as a consequence of brace e)-.1 F 3.53(xpansion. F)-.15 F 1.03 +(or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F1(sh) +3.53 E F0(as)3.53 E F2(\214le{1,2})108 424.8 Q F0 .514 +(appears identically in the output.)3.014 F .515(The same w)5.515 F .515 +(ord is output as)-.1 F F2 .515(\214le1 \214le2)4.925 F F0 .515(after e) +3.035 F .515(xpansion by)-.15 F F1(bash)3.015 E F0(.)A .437 +(If strict compatibility with)108 436.8 R F1(sh)2.936 E F0 .436 +(is desired, start)2.936 F F1(bash)2.936 E F0 .436(with the)2.936 F F1 +(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436 +(xpansion with the)-.15 F F1(+B)108 448.8 Q F0(option to the)2.5 E F1 +(set)2.5 E F0(command \(see)2.5 E/F3 9/Times-Bold@0 SF(SHELL B)2.5 E (UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -.18(Ti) -87 112.8 S(lde Expansion).18 E F0 1.087(If a w)108 124.8 R 1.087(ord be) --.1 F 1.087(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 -1.086('\), all of the characters preceding the \214rst unquoted)B .185(\ +87 465.6 S(lde Expansion).18 E F0 1.086(If a w)108 477.6 R 1.086(ord be) +-.1 F 1.086(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 +1.087('\), all of the characters preceding the \214rst unquoted)B .185(\ slash \(or all characters, if there is no unquoted slash\) are consider\ -ed a)108 136.8 R/F3 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 .726 -(in the tilde-pre\214x are quoted, the characters in the tilde-pre\214x\ - follo)108 148.8 R .725(wing the tilde are treated as a possible)-.25 F -F3(lo)108 160.8 Q .522(gin name)-.1 F F0 5.522(.I)C 3.022(ft)-5.522 G -.522 +ed a)108 489.6 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685 +(fn)-5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\ +\214x are quoted, the characters in the tilde-pre\214x follo)108 501.6 R +.726(wing the tilde are treated as a possible)-.25 F F2(lo)108 513.6 Q +.523(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 (his login name is the null string, the tilde is replaced with the v) --3.022 F .523(alue of the shell parameter)-.25 F F2(HOME)108 172.8 Q/F4 -9/Times-Roman@0 SF(.)A F0(If)4.787 E F2(HOME)2.787 E F0 .287 -(is unset, the home directory of the user e)2.537 F -.15(xe)-.15 G .286 -(cuting the shell is substituted instead.).15 F(Other)5.286 E(-)-.2 E(w\ +-3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 525.6 Q/F4 +9/Times-Roman@0 SF(.)A F0(If)4.786 E F3(HOME)2.786 E F0 .287 +(is unset, the home directory of the user e)2.536 F -.15(xe)-.15 G .287 +(cuting the shell is substituted instead.).15 F(Other)5.287 E(-)-.2 E(w\ ise, the tilde-pre\214x is replaced with the home directory associated \ -with the speci\214ed login name.)108 184.8 Q .092 -(If the tilde-pre\214x is a `~+', the v)108 201.6 R .092 -(alue of the shell v)-.25 F(ariable)-.25 E F2(PWD)2.592 E F0 .092 -(replaces the tilde-pre\214x.)2.342 F .093(If the tilde-pre\214x is) -5.093 F 3.404(a`)108 213.6 S .904(~\255', the v)-3.404 F .904 -(alue of the shell v)-.25 F(ariable)-.25 E F2(OLDPWD)3.404 E F4(,)A F0 -.904(if it is set, is substituted.)3.154 F .903(If the characters follo) -5.903 F .903(wing the)-.25 F 1.641 -(tilde in the tilde-pre\214x consist of a number)108 225.6 R F3(N)4.141 -E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.642 -(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.438(replaced w\ +with the speci\214ed login name.)108 537.6 Q .093 +(If the tilde-pre\214x is a `~+', the v)108 554.4 R .092 +(alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092 +(replaces the tilde-pre\214x.)2.342 F .092(If the tilde-pre\214x is) +5.092 F 3.403(a`)108 566.4 S .903(~\255', the v)-3.403 F .903 +(alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0 +.904(if it is set, is substituted.)3.154 F .904(If the characters follo) +5.904 F .904(wing the)-.25 F 1.642 +(tilde in the tilde-pre\214x consist of a number)108 578.4 R F2(N)4.142 +E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.641 +(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.437(replaced w\ ith the corresponding element from the directory stack, as it w)108 -237.6 R 1.437(ould be displayed by the)-.1 F F1(dirs)3.937 E F0 -.2(bu) -108 249.6 S .454(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.954(dw).1 G -.454(ith the tilde-pre\214x as an ar)-2.954 F 2.954(gument. If)-.18 F -.454(the characters follo)2.954 F .455 +590.4 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu) +108 602.4 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G +.455(ith the tilde-pre\214x as an ar)-2.955 F 2.954(gument. If)-.18 F +.454(the characters follo)2.954 F .454 (wing the tilde in the tilde-pre\214x)-.25 F (consist of a number without a leading `+' or `\255', `+' is assumed.) -108 261.6 Q(If the login name is in)108 278.4 Q -.25(va)-.4 G +108 614.4 Q(If the login name is in)108 631.2 Q -.25(va)-.4 G (lid, or the tilde e).25 E(xpansion f)-.15 E(ails, the w)-.1 E -(ord is unchanged.)-.1 E .167(Each v)108 295.2 R .167 +(ord is unchanged.)-.1 E .166(Each v)108 648 R .167 (ariable assignment is check)-.25 F .167(ed for unquoted tilde-pre\214x) -.1 F .167(es immediately follo)-.15 F .167(wing a)-.25 F F1(:)2.667 E -F0 .167(or the \214rst)2.667 F F1(=)2.666 E F0 5.166(.I)C(n)-5.166 E -.467(these cases, tilde e)108 307.2 R .467(xpansion is also performed.) --.15 F(Consequently)5.467 E 2.967(,o)-.65 G .468 -(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 -319.2 Q F2 -.666(PA)2.5 G(TH)-.189 E F4(,)A F2(MAILP)2.25 E -.855(AT) --.666 G(H).855 E F4(,)A F0(and)2.25 E F2(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 336 S(rameter Expansion).1 E F0 1.606(The `) -108 348 R F1($)A F0 4.106('c)C 1.606(haracter introduces parameter e) --4.106 F 1.605(xpansion, command substitution, or arithmetic e)-.15 F -4.105(xpansion. The)-.15 F .406(parameter name or symbol to be e)108 360 -R .407(xpanded may be enclosed in braces, which are optional b)-.15 F -.407(ut serv)-.2 F 2.907(et)-.15 G 2.907(op)-2.907 G(ro-)-2.907 E .033 -(tect the v)108 372 R .033(ariable to be e)-.25 F .033 -(xpanded from characters immediately follo)-.15 F .032 -(wing it which could be interpreted as part)-.25 F(of the name.)108 384 -Q 1.189 -(When braces are used, the matching ending brace is the \214rst `)108 -400.8 R F1(})A F0 3.69('n)C 1.19(ot escaped by a backslash or within a) --3.69 F 2.15(quoted string, and not within an embedded arithmetic e)108 -412.8 R 2.15(xpansion, command substitution, or parameter)-.15 F -.15 -(ex)108 424.8 S(pansion.).15 E(${)108 441.6 Q F3(par)A(ameter)-.15 E F0 -(})A 1.204(The v)144 453.6 R 1.204(alue of)-.25 F F3(par)3.704 E(ameter) --.15 E F0 1.204(is substituted.)3.704 F 1.204 -(The braces are required when)6.204 F F3(par)4.955 E(ameter)-.15 E F0 -1.205(is a positional)4.435 F .264 -(parameter with more than one digit, or when)144 465.6 R F3(par)4.014 E -(ameter)-.15 E F0 .264(is follo)3.494 F .264 -(wed by a character which is not to)-.25 F 2.676 -(be interpreted as part of its name.)144 477.6 R(The)7.677 E F3(par) -5.177 E(ameter)-.15 E F0 2.677(is a shell parameter as described abo) -5.177 F -.15(ve)-.15 G F1 -.74(PA)144 489.6 S(RAMETERS).74 E F0 2.5(\)o) -C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A F0 -(\).)A .816(If the \214rst character of)108 506.4 R F3(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.315(fv)-3.316 G .815(ariable indirection.)-3.565 F F1(Bash)108 518.4 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 F3(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 .352(able is then e)108 530.4 R .352(xpanded and that v)-.15 F .351 -(alue is used in the rest of the substitution, rather than the v)-.25 F -.351(alue of)-.25 F F3(par)2.851 E(ame-)-.15 E(ter)108 542.4 Q F0 2.519 -(itself. This)2.519 F .019(is kno)2.519 F .019(wn as)-.25 F F3(indir) -2.519 E .019(ect e)-.37 F(xpansion)-.2 E F0 5.019(.T)C .019(he e)-5.019 -F .02(xceptions to this are the e)-.15 F .02(xpansions of ${)-.15 F F1 -(!)A F3(pr)A(e\214x)-.37 E F1(*)A F0 2.52(}a)C(nd)-2.52 E(${)108 554.4 Q -F1(!)A F3(name)A F0([)A F3(@)A F0 .763(]} 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 566.4 Q -.334(In each of the cases belo)108 583.2 R -.65(w,)-.25 G F3(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 595.2 Q(xpansion.)-.15 E 1.09 -(When not performing substring e)108 612 R 1.089 -(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 G -(e.g.,)-3.589 E F1(:-)3.589 E F0(\),)A F1(bash)3.589 E F0 1.089 -(tests for a)3.589 F(parameter that is unset or null.)108 624 Q(Omittin\ -g the colon results in a test only for a parameter that is unset.)5 E -(${)108 640.8 Q F3(par)A(ameter)-.15 E F1<3aad>A F3(wor)A(d)-.37 E F0(}) -A F1 .722(Use Default V)144 652.8 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 -E F3(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F -.723(xpansion of)-.15 F F3(wor)3.563 E(d)-.37 E F0 .723(is substituted.) -3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 664.8 Q(alue of)-.25 E F3 -(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 676.8 Q F3 -(par)A(ameter)-.15 E F1(:=)A F3(wor)A(d)-.37 E F0(})A F1 2.005 -(Assign Default V)144 688.8 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F3 -(par)5.755 E(ameter)-.15 E F0 2.005(is unset or null, the e)5.235 F -2.004(xpansion of)-.15 F F3(wor)4.844 E(d)-.37 E F0 2.004 -(is assigned to)5.274 F F3(par)144 700.8 Q(ameter)-.15 E F0 5.278(.T).73 -G .278(he v)-5.278 F .278(alue of)-.25 F F3(par)4.028 E(ameter)-.15 E F0 -.278(is then substituted.)3.508 F .279 -(Positional parameters and special param-)5.278 F -(eters may not be assigned to in this w)144 712.8 Q(ay)-.1 E(.)-.65 E -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(20)190.95 E 0 Cg EP +F0 .167(or the \214rst)2.667 F F1(=)2.667 E F0 5.167(.I)C(n)-5.167 E +.468(these cases, tilde e)108 660 R .468(xpansion is also performed.) +-.15 F(Consequently)5.467 E 2.967(,o)-.65 G .467 +(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 672 +Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT)-.666 G +(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H).855 E F4 +(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E(alue.)-.25 E +F1 -.1(Pa)87 688.8 S(rameter Expansion).1 E F0 1.605(The `)108 700.8 R +F1($)A F0 4.105('c)C 1.605(haracter introduces parameter e)-4.105 F +1.606(xpansion, command substitution, or arithmetic e)-.15 F 4.106 +(xpansion. The)-.15 F .407(parameter name or symbol to be e)108 712.8 R +.407(xpanded may be enclosed in braces, which are optional b)-.15 F .406 +(ut serv)-.2 F 2.906(et)-.15 G 2.906(op)-2.906 G(ro-)-2.906 E .032 +(tect the v)108 724.8 R .032(ariable to be e)-.25 F .032 +(xpanded from characters immediately follo)-.15 F .033 +(wing it which could be interpreted as part)-.25 F(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(20)192.055 E 0 Cg EP %%Page: 21 21 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 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 F2 .535(Display Err)144 -96 R .535(or if Null or Unset)-.18 F F0 5.535(.I)C(f)-5.535 E F1(par) -4.285 E(ameter)-.15 E F0 .535(is null or unset, the e)3.765 F .535 -(xpansion of)-.15 F F1(wor)3.035 E(d)-.37 E F0 .535(\(or a mes-)3.035 F -.661(sage to that ef)144 108 R .661(fect if)-.25 F F1(wor)3.501 E(d)-.37 -E F0 .662(is not present\) is written to the standard error and the she\ -ll, if it is not)3.931 F(interacti)144 120 Q -.15(ve)-.25 G 2.5(,e).15 G -2.5(xits. Otherwise,)-2.65 F(the v)2.5 E(alue of)-.25 E F1(par)2.5 E -(ameter)-.15 E F0(is substituted.)2.5 E(${)108 132 Q F1(par)A(ameter) --.15 E F2(:+)A F1(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 144 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 156 Q F1(wor)2.84 E(d)-.37 E F0 -(is substituted.)3.27 E(${)108 168 Q F1(par)A(ameter)-.15 E F2(:)A F1 -(of)A(fset)-.18 E F0(})A(${)108 180 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 192 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 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(of the name.)108 +84 Q 1.19 +(When braces are used, the matching ending brace is the \214rst `)108 +100.8 R/F1 10/Times-Bold@0 SF(})A F0 3.689('n)C 1.189 +(ot escaped by a backslash or within a)-3.689 F 2.15 +(quoted string, and not within an embedded arithmetic e)108 112.8 R 2.15 +(xpansion, command substitution, or parameter)-.15 F -.15(ex)108 124.8 S +(pansion.).15 E(${)108 141.6 Q/F2 10/Times-Italic@0 SF(par)A(ameter)-.15 +E F0(})A 1.205(The v)144 153.6 R 1.205(alue of)-.25 F F2(par)3.705 E +(ameter)-.15 E F0 1.204(is substituted.)3.705 F 1.204 +(The braces are required when)6.204 F F2(par)4.954 E(ameter)-.15 E F0 +1.204(is a positional)4.434 F .264 +(parameter with more than one digit, or when)144 165.6 R F2(par)4.014 E +(ameter)-.15 E F0 .264(is follo)3.494 F .264 +(wed by a character which is not to)-.25 F 2.677 +(be interpreted as part of its name.)144 177.6 R(The)7.677 E F2(par) +5.177 E(ameter)-.15 E F0 2.676(is a shell parameter as described abo) +5.177 F -.15(ve)-.15 G F1 -.74(PA)144 189.6 S(RAMETERS).74 E F0 2.5(\)o) +C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A F0 +(\).)A .346(If the \214rst character of)108 206.4 R F2(par)2.846 E +(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F +F1(!)A F0 .346(\), and)B F2(par)2.846 E(ameter)-.15 E F0 .346(is not a) +2.846 F F2(namer)2.846 E(ef)-.37 E F0 2.847(,i)C 2.847(ti)-2.847 G +(ntroduces)-2.847 E 2.635(al)108 218.4 S -2.15 -.25(ev e)-2.635 H 2.635 +(lo).25 G 2.635(fv)-2.635 G .135(ariable indirection.)-2.885 F F1(Bash) +5.134 E F0 .134(uses the v)2.634 F .134(alue of the v)-.25 F .134 +(ariable formed from the rest of)-.25 F F2(par)2.634 E(ameter)-.15 E F0 +.134(as the)2.634 F 1.003(name of the v)108 230.4 R 1.003 +(ariable; this v)-.25 F 1.003(ariable is then e)-.25 F 1.003 +(xpanded and that v)-.15 F 1.003 +(alue is used in the rest of the substitution,)-.25 F .595 +(rather than the v)108 242.4 R .595(alue of)-.25 F F2(par)3.095 E +(ameter)-.15 E F0 3.095(itself. This)3.095 F .595(is kno)3.095 F .595 +(wn as)-.25 F F2(indir)3.095 E .595(ect e)-.37 F(xpansion)-.2 E F0 5.594 +(.I)C(f)-5.594 E F2(par)3.094 E(ameter)-.15 E F0 .594(is a nameref,) +3.094 F .477(this e)108 254.4 R .477(xpands to the name of the v)-.15 F +.477(ariable referenced by)-.25 F F2(par)2.978 E(ameter)-.15 E F0 .478 +(instead of performing the complete indi-)2.978 F 2.164(rect e)108 266.4 +R 4.663(xpansion. The)-.15 F -.15(ex)4.663 G 2.163 +(ceptions to this are the e).15 F 2.163(xpansions of ${)-.15 F F1(!)A F2 +(pr)A(e\214x)-.37 E F1(*)A F0 4.663(}a)C 2.163(nd ${)-4.663 F F1(!)A F2 +(name)A F0([)A F2(@)A F0 2.163(]} described)B(belo)108 278.4 Q 3.8 -.65 +(w. T)-.25 H(he e).65 E(xclamation point must immediately follo)-.15 E +2.5(wt)-.25 G(he left brace in order to introduce indirection.)-2.5 E +.334(In each of the cases belo)108 295.2 R -.65(w,)-.25 G F2(wor)3.484 E +(d)-.37 E F0 .334(is subject to tilde e)2.834 F .334 +(xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15 +F(and arithmetic e)108 307.2 Q(xpansion.)-.15 E 1.09 +(When not performing substring e)108 324 R 1.089 +(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 G +(e.g.,)-3.589 E F1(:-)3.589 E F0(\),)A F1(bash)3.589 E F0 1.089 +(tests for a)3.589 F(parameter that is unset or null.)108 336 Q(Omittin\ +g the colon results in a test only for a parameter that is unset.)5 E +(${)108 352.8 Q F2(par)A(ameter)-.15 E F1<3aad>A F2(wor)A(d)-.37 E F0(}) +A F1 .722(Use Default V)144 364.8 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 +E F2(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F +.723(xpansion of)-.15 F F2(wor)3.563 E(d)-.37 E F0 .723(is substituted.) +3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 376.8 Q(alue of)-.25 E F2 +(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 388.8 Q F2 +(par)A(ameter)-.15 E F1(:=)A F2(wor)A(d)-.37 E F0(})A F1 2.005 +(Assign Default V)144 400.8 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F2 +(par)5.755 E(ameter)-.15 E F0 2.005(is unset or null, the e)5.235 F +2.004(xpansion of)-.15 F F2(wor)4.844 E(d)-.37 E F0 2.004 +(is assigned to)5.274 F F2(par)144 412.8 Q(ameter)-.15 E F0 5.278(.T).73 +G .278(he v)-5.278 F .278(alue of)-.25 F F2(par)4.028 E(ameter)-.15 E F0 +.278(is then substituted.)3.508 F .279 +(Positional parameters and special param-)5.278 F +(eters may not be assigned to in this w)144 424.8 Q(ay)-.1 E(.)-.65 E +(${)108 436.8 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A +F1 .535(Display Err)144 448.8 R .535(or if Null or Unset)-.18 F F0 5.535 +(.I)C(f)-5.535 E F2(par)4.285 E(ameter)-.15 E F0 .535 +(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F2(wor)3.035 E +(d)-.37 E F0 .535(\(or a mes-)3.035 F .661(sage to that ef)144 460.8 R +.661(fect if)-.25 F F2(wor)3.501 E(d)-.37 E F0 .662(is not present\) is\ + written to the standard error and the shell, if it is not)3.931 F +(interacti)144 472.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) +-2.65 F(the v)2.5 E(alue of)-.25 E F2(par)2.5 E(ameter)-.15 E F0 +(is substituted.)2.5 E(${)108 484.8 Q F2(par)A(ameter)-.15 E F1(:+)A F2 +(wor)A(d)-.37 E F0(})A F1 .745(Use Alter)144 496.8 R .745(nate V)-.15 F +(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F2(par)4.495 E(ameter)-.15 E F0 +.745(is null or unset, nothing is substituted, otherwise the e)3.975 F +(xpan-)-.15 E(sion of)144 508.8 Q F2(wor)2.84 E(d)-.37 E F0 +(is substituted.)3.27 E(${)108 520.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 +(of)A(fset)-.18 E F0(})A(${)108 532.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 +(of)A(fset)-.18 E F1(:)A F2(length)A F0(})A F1 .002(Substring Expansion) +144 544.8 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F2(length)2.502 +E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F2(par)2.502 E (ameter)-.15 E F0 .002(starting at the)2.502 F 1.082 -(character speci\214ed by)144 204 R F1(of)3.582 E(fset)-.18 E F0 6.082 -(.I)C(f)-6.082 E F1(par)3.582 E(ameter)-.15 E F0(is)3.582 E F2(@)3.582 E +(character speci\214ed by)144 556.8 R F2(of)3.582 E(fset)-.18 E F0 6.082 +(.I)C(f)-6.082 E F2(par)3.582 E(ameter)-.15 E F0(is)3.582 E F1(@)3.582 E 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.581 E F2(*) -3.581 E F0 3.581(,o)C 3.581(ra)-3.581 G(n)-3.581 E(associati)144 216 Q +G 1.082(rray subscripted by)-3.582 F F1(@)3.582 E F0(or)3.581 E F1(*) +3.581 E F0 3.581(,o)C 3.581(ra)-3.581 G(n)-3.581 E(associati)144 568.8 Q 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) +(fer as described belo)-.25 F 4.522 -.65(w. I)-.25 H(f).65 E F2(length) 3.222 E F0 .722(is omitted, e)3.222 F .722(xpands to the)-.15 F .043 -(substring of the v)144 228 R .043(alue of)-.25 F F1(par)2.543 E(ameter) --.15 E F0 .042(starting at the character speci\214ed by)2.543 F F1(of) -2.542 E(fset)-.18 E F0 .042(and e)2.542 F .042(xtending to the)-.15 F -.846(end of the v)144 240 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 .847 -(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .847(ARITHMETIC EV)3.347 F -(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 252 Q(w\).)-.25 E -(If)144 276 Q F1(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029 G .529 -(luates to a number less than zero, the v).25 F .529 +(substring of the v)144 580.8 R .043(alue of)-.25 F F2(par)2.543 E +(ameter)-.15 E F0 .042(starting at the character speci\214ed by)2.543 F +F2(of)2.542 E(fset)-.18 E F0 .042(and e)2.542 F .042(xtending to the) +-.15 F .846(end of the v)144 592.8 R(alue.)-.25 E F2(length)5.846 E F0 +(and)3.346 E F2(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F +.847(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .847(ARITHMETIC EV) +3.347 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 604.8 Q +(w\).)-.25 E(If)144 628.8 Q F2(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029 +G .529(luates to a number less than zero, the v).25 F .529 (alue is used as an of)-.25 F .529(fset in characters from the)-.25 F -.045(end of the v)144 288 R .045(alue of)-.25 F F1(par)2.546 E(ameter) --.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G +.045(end of the v)144 640.8 R .045(alue of)-.25 F F2(par)2.546 E(ameter) +-.15 E F0 5.046(.I)C(f)-5.046 E F2(length)2.546 E F0 -.25(eva)2.546 G .046(luates to a number less than zero, it is interpreted as an).25 F -(of)144 300 Q .203(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 .202 -(rather than a number of characters, and)2.702 F .557(the e)144 312 R -.557(xpansion is the characters between)-.15 F F1(of)3.057 E(fset)-.18 E +(of)144 652.8 Q .203(fset in characters from the end of the v)-.25 F +.202(alue of)-.25 F F2(par)2.702 E(ameter)-.15 E F0 .202 +(rather than a number of characters, and)2.702 F .557(the e)144 664.8 R +.557(xpansion is the characters between)-.15 F F2(of)3.057 E(fset)-.18 E F0 .557(and that result.)3.057 F .558(Note that a ne)5.558 F -.05(ga) -.15 G(ti).05 E .858 -.15(ve o)-.25 H -.25(ff).15 G .558(set must be).25 -F(separated from the colon by at least one space to a)144 324 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 348 Q F1(par)2.959 E(ameter)-.15 E F0(is)2.959 E -F2(@)2.959 E F0 2.959(,t)C .459(he result is)-2.959 F F1(length)2.959 E -F0 .459(positional parameters be)2.959 F .458(ginning at)-.15 F F1(of) +F(separated from the colon by at least one space to a)144 676.8 Q -.2 +(vo)-.2 G(id being confused with the).2 E F1(:-)2.5 E F0 -.15(ex)2.5 G +(pansion.).15 E(If)144 700.8 Q F2(par)2.959 E(ameter)-.15 E F0(is)2.959 +E F1(@)2.959 E F0 2.959(,t)C .459(he result is)-2.959 F F2(length)2.959 +E F0 .459(positional parameters be)2.959 F .458(ginning at)-.15 F F2(of) 2.958 E(fset)-.18 E F0 5.458(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F1(of)3.108 E(fset)-.18 E F0 .095(is tak)144 360 R .095 +(ve)-.25 G F2(of)3.108 E(fset)-.18 E F0 .095(is tak)144 712.8 R .095 (en relati)-.1 F .396 -.15(ve t)-.25 H 2.596(oo).15 G .096 (ne greater than the greatest positional parameter)-2.596 F 2.596(,s)-.4 G 2.596(oa)-2.596 G 2.596(no)-2.596 G -.25(ff)-2.596 G .096(set of -1 e) .25 F -.25(va)-.25 G .096(luates to).25 F 1.322 -(the last positional parameter)144 372 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 384 Q(If)144 408 Q F1(par) -3.013 E(ameter)-.15 E F0 .514(is an inde)3.013 F -.15(xe)-.15 G 3.014 -(da).15 G .514(rray name subscripted by @ or *, the result is the)-3.014 -F F1(length)3.014 E F0 .514(members of)3.014 F 1.082(the array be)144 -420 R 1.082(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A -(fset)-.18 E F0 3.582(]}. A)B(ne)3.582 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.081(is tak)3.581 F 1.081 -(en relati)-.1 F 1.381 -.15(ve t)-.25 H 3.581(oo).15 G 1.081(ne greater) --3.581 F 1.079(than the maximum inde)144 432 R 3.579(xo)-.15 G 3.579(ft) --3.579 G 1.079(he speci\214ed array)-3.579 F 6.079(.I)-.65 G 3.579(ti) --6.079 G 3.579(sa)-3.579 G 3.58(ne)-3.579 G 1.08(xpansion error if)-3.73 -F F1(length)3.58 E F0 -.25(eva)3.58 G 1.08(luates to a).25 F -(number less than zero.)144 444 Q(Substring e)144 468 Q -(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H -(rray produces unde\214ned results.).15 E 1.931(Substring inde)144 492 R -1.931(xing is zero-based unless the positional parameters are used, in \ -which case the)-.15 F(inde)144 504 Q .306(xing starts at 1 by def)-.15 F -2.806(ault. If)-.1 F F1(of)2.807 E(fset)-.18 E F0 .307 -(is 0, and the positional parameters are used,)2.807 F F2($0)2.807 E F0 -.307(is pre\214x)2.807 F(ed)-.15 E(to the list.)144 516 Q(${)108 532.8 Q -F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A F0(})A(${)108 544.8 Q F2(!)A F1(pr)A -(e\214x)-.37 E F2(@)A F0(})A F2 .085(Names matching pr)144 556.8 R -(e\214x)-.18 E F0 5.085(.E)C .084(xpands to the names of v)-5.085 F .084 -(ariables whose names be)-.25 F .084(gin with)-.15 F F1(pr)2.584 E -(e\214x)-.37 E F0 2.584(,s)C(epa-)-2.584 E .257 -(rated by the \214rst character of the)144 568.8 R F3(IFS)2.757 E F0 -.257(special v)2.507 F 2.757(ariable. When)-.25 F F1(@)2.758 E F0 .258 -(is used and the e)2.758 F .258(xpansion appears)-.15 F -(within double quotes, each v)144 580.8 Q(ariable name e)-.25 E -(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 597.6 Q F2(!)A F1(name) -A F0([)A F1(@)A F0(]})A(${)108 609.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0 -(]})A F2 2.036(List of array k)144 621.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 .595(assigned in)144 633.6 R F1(name)3.095 E F0 -5.595(.I)C(f)-5.595 E F1(name)3.095 E F0 .595(is not an array)3.095 F -3.095(,e)-.65 G .595(xpands to 0 if)-3.245 F F1(name)3.095 E F0 .596 -(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 645.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 -662.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 674.4 S .471 -(rameter length).1 F F0 5.471(.T)C .471 -(he length in characters of the v)-5.471 F .471(alue of)-.25 F F1(par) -2.971 E(ameter)-.15 E F0 .47(is substituted.)2.97 F(If)5.47 E F1(par) -4.22 E(ame-)-.15 E(ter)144 686.4 Q F0(is)4.438 E F2(*)3.708 E F0(or) -3.708 E F2(@)3.708 E F0 3.708(,t)C 1.208(he v)-3.708 F 1.208 -(alue substituted is the number of positional parameters.)-.25 F(If) -6.209 E F1(par)4.959 E(ameter)-.15 E F0 1.209(is an)4.439 F .349 -(array name subscripted by)144 698.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.348 -(.I)-.65 G(f)-5.348 E F1(par)145.25 710.4 Q(ameter)-.15 E F0 .455 -(is an inde)3.685 F -.15(xe)-.15 G 2.955(da).15 G .456 -(rray name subscripted by a ne)-2.955 F -.05(ga)-.15 G(ti).05 E .756 --.15(ve n)-.25 H(umber).15 E 2.956(,t)-.4 G .456 -(hat number is interpreted)-2.956 F .973(as relati)144 722.4 R 1.273 --.15(ve t)-.25 H 3.473(oo).15 G .973(ne greater than the maximum inde) --3.473 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 -3.472(,s)C 3.472(on)-3.472 G -2.25 -.15(eg a)-3.472 H(ti).15 E 1.272 --.15(ve i)-.25 H .972(ndices count back).15 F(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(21)190.95 E 0 Cg EP +(the last positional parameter)144 724.8 R 6.322(.I)-.55 G 3.822(ti) +-6.322 G 3.822(sa)-3.822 G 3.822(ne)-3.822 G 1.322(xpansion error if) +-3.972 F F2(length)3.822 E F0 -.25(eva)3.822 G 1.322 +(luates to a number less than).25 F(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(21)192.055 E 0 Cg EP %%Page: 22 22 %%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(from the end of the array)144 84 Q 2.5(,a)-.65 G(nd an inde)-2.5 -E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G -(eferences the last element.)-2.5 E(${)108 100.8 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 112.8 Q F1(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A -F2(Remo)144 124.8 Q 1.396 -.1(ve m)-.1 H 1.196(atching pr).1 F 1.196 -(e\214x patter)-.18 F(n)-.15 E F0 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 .152(name e)144 -136.8 R 2.652(xpansion. If)-.15 F .152(the pattern matches the be)2.652 -F .152(ginning of the v)-.15 F .152(alue of)-.25 F F1(par)2.652 E -(ameter)-.15 E F0 2.652(,t).73 G .151(hen the result of)-2.652 F 1.4 -(the e)144 148.8 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 160.8 -R(`)-.74 E F2(##)A F0 1.761 -.74('' c)D .281(ase\) deleted.).74 F(If) -5.281 E F1(par)4.031 E(ameter)-.15 E F0(is)3.511 E F2(@)2.781 E F0(or) -2.781 E F2(*)2.781 E F0 2.781(,t)C .281(he pattern)-2.781 F(remo)144 -172.8 Q -.25(va)-.15 G 3.274(lo).25 G .774 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(zero.)144 84 Q(If) +144 108 Q/F1 10/Times-Italic@0 SF(par)3.013 E(ameter)-.15 E F0 .514 +(is an inde)3.013 F -.15(xe)-.15 G 3.014(da).15 G .514 +(rray name subscripted by @ or *, the result is the)-3.014 F F1(length) +3.014 E F0 .514(members of)3.014 F 1.082(the array be)144 120 R 1.082 +(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A(fset)-.18 +E F0 3.582(]}. A)B(ne)3.582 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G F1 +(of)3.732 E(fset)-.18 E F0 1.081(is tak)3.581 F 1.081(en relati)-.1 F +1.381 -.15(ve t)-.25 H 3.581(oo).15 G 1.081(ne greater)-3.581 F 1.079 +(than the maximum inde)144 132 R 3.579(xo)-.15 G 3.579(ft)-3.579 G 1.079 +(he speci\214ed array)-3.579 F 6.079(.I)-.65 G 3.579(ti)-6.079 G 3.579 +(sa)-3.579 G 3.58(ne)-3.579 G 1.08(xpansion error if)-3.73 F F1(length) +3.58 E F0 -.25(eva)3.58 G 1.08(luates to a).25 F(number less than zero.) +144 144 Q(Substring e)144 168 Q(xpansion applied to an associati)-.15 E +.3 -.15(ve a)-.25 H(rray produces unde\214ned results.).15 E 1.931 +(Substring inde)144 192 R 1.931(xing is zero-based unless the positiona\ +l parameters are used, in which case the)-.15 F(inde)144 204 Q .306 +(xing starts at 1 by def)-.15 F 2.806(ault. If)-.1 F F1(of)2.807 E(fset) +-.18 E F0 .307(is 0, and the positional parameters are used,)2.807 F/F2 +10/Times-Bold@0 SF($0)2.807 E F0 .307(is pre\214x)2.807 F(ed)-.15 E +(to the list.)144 216 Q(${)108 232.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2 +(*)A F0(})A(${)108 244.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 +.085(Names matching pr)144 256.8 R(e\214x)-.18 E F0 5.085(.E)C .084 +(xpands to the names of v)-5.085 F .084(ariables whose names be)-.25 F +.084(gin with)-.15 F F1(pr)2.584 E(e\214x)-.37 E F0 2.584(,s)C(epa-) +-2.584 E .257(rated by the \214rst character of the)144 268.8 R/F3 9 +/Times-Bold@0 SF(IFS)2.757 E F0 .257(special v)2.507 F 2.757 +(ariable. When)-.25 F F1(@)2.758 E F0 .258(is used and the e)2.758 F +.258(xpansion appears)-.15 F(within double quotes, each v)144 280.8 Q +(ariable name e)-.25 E(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 +297.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 309.6 Q F2(!)A F1 +(name)A F0([)A F1(*)A F0(]})A F2 2.036(List of array k)144 321.6 R(eys) +-.1 E F0 7.036(.I)C(f)-7.036 E F1(name)4.536 E F0 2.036(is an array v) +4.536 F 2.036(ariable, e)-.25 F 2.036 +(xpands to the list of array indices \(k)-.15 F -.15(ey)-.1 G(s\)).15 E +.595(assigned in)144 333.6 R F1(name)3.095 E F0 5.595(.I)C(f)-5.595 E F1 +(name)3.095 E F0 .595(is not an array)3.095 F 3.095(,e)-.65 G .595 +(xpands to 0 if)-3.245 F F1(name)3.095 E F0 .596 +(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 345.6 Q F0 +(is used and the e)2.5 E(xpansion appears within double quotes, each k) +-.15 E .3 -.15(ey ex)-.1 H(pands to a separate w).15 E(ord.)-.1 E(${)108 +362.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 374.4 S .471 +(rameter length).1 F F0 5.471(.T)C .471 +(he length in characters of the v)-5.471 F .471(alue of)-.25 F F1(par) +2.971 E(ameter)-.15 E F0 .47(is substituted.)2.97 F(If)5.47 E F1(par) +4.22 E(ame-)-.15 E(ter)144 386.4 Q F0(is)4.438 E F2(*)3.708 E F0(or) +3.708 E F2(@)3.708 E F0 3.708(,t)C 1.208(he v)-3.708 F 1.208 +(alue substituted is the number of positional parameters.)-.25 F(If) +6.209 E F1(par)4.959 E(ameter)-.15 E F0 1.209(is an)4.439 F .349 +(array name subscripted by)144 398.4 R F2(*)2.849 E F0(or)2.849 E F2(@) +2.849 E F0 2.849(,t)C .349(he v)-2.849 F .349 +(alue substituted is the number of elements in the array)-.25 F 5.348 +(.I)-.65 G(f)-5.348 E F1(par)145.25 410.4 Q(ameter)-.15 E F0 .455 +(is an inde)3.685 F -.15(xe)-.15 G 2.955(da).15 G .456 +(rray name subscripted by a ne)-2.955 F -.05(ga)-.15 G(ti).05 E .756 +-.15(ve n)-.25 H(umber).15 E 2.956(,t)-.4 G .456 +(hat number is interpreted)-2.956 F .973(as relati)144 422.4 R 1.273 +-.15(ve t)-.25 H 3.473(oo).15 G .973(ne greater than the maximum inde) +-3.473 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 +3.472(,s)C 3.472(on)-3.472 G -2.25 -.15(eg a)-3.472 H(ti).15 E 1.272 +-.15(ve i)-.25 H .972(ndices count back).15 F(from the end of the array) +144 434.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 +G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 451.2 Q F1 +(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 463.2 Q F1 +(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 475.2 +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 +.152(name e)144 487.2 R 2.652(xpansion. If)-.15 F .152 +(the pattern matches the be)2.652 F .152(ginning of the v)-.15 F .152 +(alue of)-.25 F F1(par)2.652 E(ameter)-.15 E F0 2.652(,t).73 G .151 +(hen the result of)-2.652 F 1.4(the e)144 499.2 R 1.4(xpansion is the e) +-.15 F 1.4(xpanded v)-.15 F 1.4(alue of)-.25 F F1(par)5.15 E(ameter)-.15 +E F0 1.4(with the shortest matching pattern \(the `)4.63 F(`)-.74 E F2 +(#)A F0 -.74('')C .281(case\) or the longest matching pattern \(the `) +144 511.2 R(`)-.74 E F2(##)A F0 1.761 -.74('' c)D .281(ase\) deleted.) +.74 F(If)5.281 E F1(par)4.031 E(ameter)-.15 E F0(is)3.511 E F2(@)2.781 E +F0(or)2.781 E F2(*)2.781 E F0 2.781(,t)C .281(he pattern)-2.781 F(remo) +144 523.2 Q -.25(va)-.15 G 3.274(lo).25 G .774 (peration is applied to each positional parameter in turn, and the e) --3.274 F .774(xpansion is the resul-)-.15 F .402(tant list.)144 184.8 R +-3.274 F .774(xpansion is the resul-)-.15 F .402(tant list.)144 535.2 R (If)5.402 E F1(par)4.152 E(ameter)-.15 E F0 .401(is an array v)3.632 F .401(ariable subscripted with)-.25 F F2(@)2.901 E F0(or)2.901 E F2(*) 2.901 E F0 2.901(,t)C .401(he pattern remo)-2.901 F -.25(va)-.15 G 2.901 (lo).25 G(peration)-2.901 E -(is applied to each member of the array in turn, and the e)144 196.8 Q -(xpansion is the resultant list.)-.15 E(${)108 213.6 Q F1(par)A(ameter) --.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 225.6 Q F1(par)A(ameter) --.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 237.6 Q .346 -.1 -(ve m)-.1 H .146(atching suf\214x patter).1 F(n)-.15 E F0 5.146(.T)C(he) --5.146 E F1(wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147 -(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 -249.6 S 3.088(pansion. If).15 F .588 +(is applied to each member of the array in turn, and the e)144 547.2 Q +(xpansion is the resultant list.)-.15 E(${)108 564 Q F1(par)A(ameter) +-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 576 Q F1(par)A(ameter)-.15 +E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 588 Q .346 -.1(ve m)-.1 H +.146(atching suf\214x patter).1 F(n)-.15 E F0 5.146(.T)C(he)-5.146 E F1 +(wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147 +(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 600 +S 3.088(pansion. If).15 F .588 (the pattern matches a trailing portion of the e)3.088 F .588(xpanded v) -.15 F .588(alue of)-.25 F F1(par)3.088 E(ameter)-.15 E F0 3.088(,t).73 -G .588(hen the)-3.088 F .226(result of the e)144 261.6 R .226 +G .588(hen the)-3.088 F .226(result of the e)144 612 R .226 (xpansion is the e)-.15 F .226(xpanded v)-.15 F .226(alue of)-.25 F F1 (par)3.976 E(ameter)-.15 E F0 .226 -(with the shortest matching pattern \(the)3.456 F -.74(``)144 273.6 S F2 +(with the shortest matching pattern \(the)3.456 F -.74(``)144 624 S F2 (%).74 E F0 1.522 -.74('' c)D .042 (ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(%%)A F0 1.522 -.74('' c)D .042(ase\) deleted.).74 F(If)5.042 E F1(par)3.792 E (ameter)-.15 E F0(is)3.272 E F2(@)2.541 E F0(or)2.541 E F2(*)2.541 E F0 -2.541(,t)C(he)-2.541 E .44(pattern remo)144 285.6 R -.25(va)-.15 G 2.94 +2.541(,t)C(he)-2.541 E .44(pattern remo)144 636 R -.25(va)-.15 G 2.94 (lo).25 G .441 (peration is applied to each positional parameter in turn, and the e) --2.94 F .441(xpansion is the)-.15 F .241(resultant list.)144 297.6 R(If) +-2.94 F .441(xpansion is the)-.15 F .241(resultant list.)144 648 R(If) 5.241 E F1(par)3.991 E(ameter)-.15 E F0 .241(is an array v)3.471 F .241 (ariable subscripted with)-.25 F F2(@)2.741 E F0(or)2.74 E F2(*)2.74 E F0 2.74(,t)C .24(he pattern remo)-2.74 F -.25(va)-.15 G 2.74(lo).25 G (per)-2.74 E(-)-.2 E -(ation is applied to each member of the array in turn, and the e)144 -309.6 Q(xpansion is the resultant list.)-.15 E(${)108 326.4 Q F1(par)A -(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A F2 -.1(Pa) -144 338.4 S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606 E F0 6.106(.T)C -(he)-6.106 E F1(pattern)3.606 E F0 1.106(is e)3.606 F 1.107 +(ation is applied to each member of the array in turn, and the e)144 660 +Q(xpansion is the resultant list.)-.15 E(${)108 676.8 Q F1(par)A(ameter) +-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A F2 -.1(Pa)144 688.8 +S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606 E F0 6.106(.T)C(he)-6.106 +E F1(pattern)3.606 E F0 1.106(is e)3.606 F 1.107 (xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)-.15 E -(sion.)144 350.4 Q F1 -.8(Pa)6.034 G -.15(ra).8 G(meter).15 E F0 1.034 +(sion.)144 700.8 Q F1 -.8(Pa)6.034 G -.15(ra).8 G(meter).15 E F0 1.034 (is e)3.534 F 1.033(xpanded and the longest match of)-.15 F F1(pattern) 3.533 E F0(ag)3.533 E 1.033(ainst its v)-.05 F 1.033 -(alue is replaced with)-.25 F F1(string)144 362.4 Q F0 5.16(.I)C(f)-5.16 +(alue is replaced with)-.25 F F1(string)144 712.8 Q F0 5.16(.I)C(f)-5.16 E F1(pattern)2.66 E F0(be)2.66 E .16(gins with)-.15 F F2(/)2.66 E F0 2.66(,a)C .161(ll matches of)-2.66 F F1(pattern)2.661 E F0 .161 (are replaced with)2.661 F F1(string)2.661 E F0 5.161(.N)C .161 -(ormally only the)-5.161 F .807(\214rst match is replaced.)144 374.4 R +(ormally only the)-5.161 F .807(\214rst match is replaced.)144 724.8 R (If)5.807 E F1(pattern)3.307 E F0(be)3.307 E .807(gins with)-.15 F F2(#) 3.307 E F0 3.306(,i)C 3.306(tm)-3.306 G .806(ust match at the be)-3.306 -F .806(ginning of the e)-.15 F(xpanded)-.15 E -.25(va)144 386.4 S .62 -(lue of).25 F F1(par)3.12 E(ameter)-.15 E F0 5.62(.I)C(f)-5.62 E F1 -(pattern)3.12 E F0(be)3.12 E .62(gins with)-.15 F F2(%)3.12 E F0 3.12 -(,i)C 3.121(tm)-3.12 G .621(ust match at the end of the e)-3.121 F .621 -(xpanded v)-.15 F .621(alue of)-.25 F F1(par)144 398.4 Q(ameter)-.15 E -F0 6.254(.I)C(f)-6.254 E F1(string)3.754 E F0 1.253(is null, matches of) -3.753 F F1(pattern)3.753 E F0 1.253(are deleted and the)3.753 F F2(/) -3.753 E F0(follo)3.753 E(wing)-.25 E F1(pattern)3.753 E F0 1.253(may be) -3.753 F 2.678(omitted. If)144 410.4 R F1(par)3.928 E(ameter)-.15 E F0 -(is)3.408 E F2(@)2.678 E F0(or)2.678 E F2(*)2.679 E F0 2.679(,t)C .179 -(he substitution operation is applied to each positional parameter) --2.679 F .619(in turn, and the e)144 422.4 R .619 -(xpansion is the resultant list.)-.15 F(If)5.619 E F1(par)4.369 E -(ameter)-.15 E F0 .618(is an array v)3.849 F .618 -(ariable subscripted with)-.25 F F2(@)144 434.4 Q F0(or)3.223 E F2(*) -3.223 E F0 3.223(,t)C .723(he substitution operation is applied to each\ - member of the array in turn, and the e)-3.223 F(xpan-)-.15 E -(sion is the resultant list.)144 446.4 Q(${)108 463.2 Q F1(par)A(ameter) --.15 E F2(^)A F1(pattern)A F0(})A(${)108 475.2 Q F1(par)A(ameter)-.15 E -F2(^^)A F1(pattern)A F0(})A(${)108 487.2 Q F1(par)A(ameter)-.15 E F2(,)A -F1(pattern)A F0(})A(${)108 499.2 Q F1(par)A(ameter)-.15 E F2(,,)A F1 -(pattern)A F0(})A F2 .438(Case modi\214cation)144 511.2 R F0 5.438(.T)C -.438(his e)-5.438 F .437 -(xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par) -2.937 E(ameter)-.15 E F0 5.437(.T)C(he)-5.437 E F1(pattern)144 523.2 Q -F0 1.406(is e)3.906 F 1.407 -(xpanded to produce a pattern just as in pathname e)-.15 F 3.907 -(xpansion. Each)-.15 F 1.407(character in the)3.907 F -.15(ex)144 535.2 -S 1.232(panded v).15 F 1.232(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 -547.2 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 559.2 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.547(letters to lo)144 571.2 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 583.2 S .634(lue; the).25 F F2(^)3.134 E F0(and)3.134 -E F2(,)3.134 E F0 -.15(ex)3.134 G .634(pansions match and con).15 F -.15 -(ve)-.4 G .633(rt only the \214rst character in the e).15 F .633 -(xpanded v)-.15 F 3.133(alue. If)-.25 F F1(pattern)144 595.2 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 607.2 R -(xpansion)-.15 E .468(is the resultant list.)144 619.2 R(If)5.468 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.969 E -F0 2.969(,t)C .469(he case modi\214ca-)-2.969 F .005(tion operation is \ -applied to each member of the array in turn, and the e)144 631.2 R .005 -(xpansion is the resultant list.)-.15 F F2(Command Substitution)87 648 Q -F1 1.697(Command substitution)108 660 R F0(allo)4.197 E 1.697 -(ws the output of a command to replace the command name.)-.25 F 1.698 -(There are tw)6.698 F(o)-.1 E(forms:)108 672 Q F2($\()144 688.8 Q F1 -(command)A F2(\))1.666 E F0(or)108 700.8 Q F2<92>144 712.8 Q F1(command) -A F2<92>A(Bash)108 729.6 Q F0 1.709(performs the e)4.209 F 1.709 -(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)4.209 E F0 -1.708(and replacing the command substitution with the)4.208 F -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(22)190.95 E 0 Cg EP +F .806(ginning of the e)-.15 F(xpanded)-.15 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(22)192.055 E 0 Cg EP %%Page: 23 23 %%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 .749(standard output of the command, with an)108 84 R 3.249(yt) --.15 G .749(railing ne)-3.249 F .749(wlines deleted.)-.25 F .75 -(Embedded ne)5.749 F .75(wlines are not deleted,)-.25 F -.2(bu)108 96 S -3.197(tt).2 G(he)-3.197 E 3.197(ym)-.15 G .697(ay be remo)-3.197 F -.15 -(ve)-.15 G 3.196(dd).15 G .696(uring w)-3.196 F .696(ord splitting.)-.1 -F .696(The command substitution)5.696 F/F1 10/Times-Bold@0 SF($\(cat) -3.196 E/F2 10/Times-Italic@0 SF(\214le)3.196 E F1(\))A F0 .696 -(can be replaced by)3.196 F(the equi)108 108 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 124.8 R(xcept)-.15 E .315 -(when follo)108 136.8 R .315(wed by)-.25 F F1($)2.815 E F0(,)A F1<92> -2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E F0 5.315(.T)C .314(he \ -\214rst backquote not preceded by a backslash terminates the command su\ -b-)-5.315 F 3.886(stitution. When)108 148.8 R 1.386(using the $\()3.886 -F F2(command).833 E F0 3.886(\)f)1.666 G 1.387 -(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G -3.887(pt)-3.887 G 1.387(he com-)-3.887 F -(mand; none are treated specially)108 160.8 Q(.)-.65 E .894 -(Command substitutions may be nested.)108 177.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 189.6 Q .422 -(If the substitution appears within double quotes, w)108 206.4 R .422 -(ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15 -F(on the results.)108 218.4 Q F1(Arithmetic Expansion)87 235.2 Q F0 -1.035(Arithmetic e)108 247.2 R 1.035(xpansion allo)-.15 F 1.035 -(ws the e)-.25 F -.25(va)-.25 G 1.034(luation of an arithmetic e).25 F -1.034(xpression and the substitution of the result.)-.15 F -(The format for arithmetic e)108 259.2 Q(xpansion is:)-.15 E F1($\(\() -144 276 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 292.8 Q -F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165 -(is treated as if it were within double quotes, b)2.905 F .166 -(ut a double quote inside the parentheses is not)-.2 F .231 -(treated specially)108 304.8 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231 -(ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v) --.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F 1.059 -(tution, and quote remo)108 316.8 R -.25(va)-.15 G 3.559(l. The).25 F -1.059(result is treated as the arithmetic e)3.559 F 1.06 -(xpression to be e)-.15 F -.25(va)-.25 G 3.56(luated. Arithmetic).25 F --.15(ex)108 328.8 S(pansions may be nested.).15 E 1.379(The e)108 345.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 357.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 374.4 Q -(ocess Substitution)-.18 E F2(Pr)108 386.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 -398.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 410.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 422.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 434.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 451.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 463.2 Q(xpansion.)-.15 E F1 --.75(Wo)87 480 S(rd Splitting).75 E F0 1.143 -(The shell scans the results of parameter e)108 492 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 504 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 520.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 .207(using these characters as \214eld terminators.) -108 532.8 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F -.207(alue is e)-.25 F(xactly)-.15 E F1()2.707 E F0 -(,)A .836(the def)108 544.8 R .836(ault, then sequences of)-.1 F F1 -()3.336 E F0(,)A F1()3.336 E F0 3.336(,a)C(nd)-3.336 E F1 -()3.336 E F0 .837(at the be)3.336 F .837 -(ginning and end of the results of)-.15 F .346(the pre)108 556.8 R .345 -(vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15 -G .345(equence of)-2.845 F F3(IFS)2.845 E F0 .345 -(characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es) --.15 E 1.236(to delimit w)108 568.8 R 3.736(ords. If)-.1 F F3(IFS)3.736 -E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.237 -(ault, then sequences of the whitespace characters)-.1 F F1(space)108 -580.8 Q F0(and)3.187 E F1(tab)3.187 E F0 .687(are ignored at the be) -3.187 F .687(ginning and end of the w)-.15 F .686 -(ord, as long as the whitespace character is in)-.1 F .276(the v)108 -592.8 R .276(alue of)-.25 F F3(IFS)2.777 E F0(\(an)2.527 E F3(IFS)2.777 -E F0 .277(whitespace character\).)2.527 F(An)5.277 E 2.777(yc)-.15 G -.277(haracter in)-2.777 F F3(IFS)2.777 E F0 .277(that is not)2.527 F F3 -(IFS)2.777 E F0 .277(whitespace, along with)2.527 F(an)108 604.8 Q 3.336 -(ya)-.15 G(djacent)-3.336 E F3(IFS)3.336 E F0 .836 -(whitespace characters, delimits a \214eld.)3.086 F 3.335(As)5.835 G -.835(equence of)-3.335 F F3(IFS)3.335 E F0 .835 -(whitespace characters is also)3.085 F(treated as a delimiter)108 616.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 633.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 645.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 657.6 Q -(gument results and is retained.)-.18 E(Note that if no e)108 674.4 Q -(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 691.2 S -(thname Expansion).1 E F0 .37(After w)108 703.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 715.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 727.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 -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(23)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)144 84 S +.62(lue of).25 F/F1 10/Times-Italic@0 SF(par)3.12 E(ameter)-.15 E F0 +5.62(.I)C(f)-5.62 E F1(pattern)3.12 E F0(be)3.12 E .62(gins with)-.15 F +/F2 10/Times-Bold@0 SF(%)3.12 E F0 3.12(,i)C 3.121(tm)-3.12 G .621 +(ust match at the end of the e)-3.121 F .621(xpanded v)-.15 F .621 +(alue of)-.25 F F1(par)144 96 Q(ameter)-.15 E F0 6.254(.I)C(f)-6.254 E +F1(string)3.754 E F0 1.253(is null, matches of)3.753 F F1(pattern)3.753 +E F0 1.253(are deleted and the)3.753 F F2(/)3.753 E F0(follo)3.753 E +(wing)-.25 E F1(pattern)3.753 E F0 1.253(may be)3.753 F 2.731 +(omitted. If)144 108 R(the)2.731 E F2(nocasematch)2.731 E F0 .231 +(shell option is enabled, the match is performed without re)2.731 F -.05 +(ga)-.15 G .232(rd to the).05 F .188(case of alphabetic characters.)144 +120 R(If)5.188 E F1(par)3.938 E(ameter)-.15 E F0(is)3.418 E F2(@)2.688 E +F0(or)2.688 E F2(*)2.687 E F0 2.687(,t)C .187 +(he substitution operation is applied to each)-2.687 F .445 +(positional parameter in turn, and the e)144 132 R .446 +(xpansion is the resultant list.)-.15 F(If)5.446 E F1(par)4.196 E +(ameter)-.15 E F0 .446(is an array v)3.676 F(ari-)-.25 E .463 +(able subscripted with)144 144 R F2(@)2.963 E F0(or)2.963 E F2(*)2.963 E +F0 2.963(,t)C .462 +(he substitution operation is applied to each member of the array in) +-2.963 F(turn, and the e)144 156 Q(xpansion is the resultant list.)-.15 +E(${)108 172.8 Q F1(par)A(ameter)-.15 E F2(^)A F1(pattern)A F0(})A(${) +108 184.8 Q F1(par)A(ameter)-.15 E F2(^^)A F1(pattern)A F0(})A(${)108 +196.8 Q F1(par)A(ameter)-.15 E F2(,)A F1(pattern)A F0(})A(${)108 208.8 Q +F1(par)A(ameter)-.15 E F2(,,)A F1(pattern)A F0(})A F2 .437 +(Case modi\214cation)144 220.8 R F0 5.437(.T)C .437(his e)-5.437 F .438 +(xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par) +2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 232.8 Q +F0 1.407(is e)3.907 F 1.407 +(xpanded to produce a pattern just as in pathname e)-.15 F 3.906 +(xpansion. Each)-.15 F 1.406(character in the)3.906 F -.15(ex)144 244.8 +S 1.231(panded v).15 F 1.231(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E +F0 1.232(is tested ag)3.732 F(ainst)-.05 E F1(pattern)3.732 E F0 3.732 +(,a)C 1.232(nd, if it matches the pattern, its case is)-3.732 F(con)144 +256.8 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424 +(pattern should not attempt to match more than one character)2.924 F +5.424(.T)-.55 G(he)-5.424 E F2(^)2.924 E F0 .424(operator con-)2.924 F +-.15(ve)144 268.8 S .61(rts lo).15 F .61(wercase letters matching)-.25 F +F1(pattern)3.11 E F0 .61(to uppercase; the)3.11 F F2(,)3.11 E F0 .61 +(operator con)3.11 F -.15(ve)-.4 G .61(rts matching uppercase).15 F +1.548(letters to lo)144 280.8 R 4.047(wercase. The)-.25 F F2(^^)4.047 E +F0(and)4.047 E F2(,,)4.047 E F0 -.15(ex)4.047 G 1.547(pansions con).15 F +-.15(ve)-.4 G 1.547(rt each matched character in the e).15 F(xpanded) +-.15 E -.25(va)144 292.8 S .633(lue; the).25 F F2(^)3.133 E F0(and)3.133 +E F2(,)3.133 E F0 -.15(ex)3.133 G .633(pansions match and con).15 F -.15 +(ve)-.4 G .634(rt only the \214rst character in the e).15 F .634 +(xpanded v)-.15 F 3.134(alue. If)-.25 F F1(pattern)144 304.8 Q F0 .78 +(is omitted, it is treated lik)3.28 F 3.28(ea)-.1 G F2(?)A F0 3.28(,w)C +.78(hich matches e)-3.28 F -.15(ve)-.25 G .78(ry character).15 F 5.78 +(.I)-.55 G(f)-5.78 E F1(par)4.53 E(ameter)-.15 E F0(is)4.01 E F2(@)3.28 +E F0(or)3.28 E F2(*)3.28 E F0(,)A .582(the case modi\214cation operatio\ +n is applied to each positional parameter in turn, and the e)144 316.8 R +(xpansion)-.15 E .469(is the resultant list.)144 328.8 R(If)5.469 E F1 +(par)4.218 E(ameter)-.15 E F0 .468(is an array v)3.698 F .468 +(ariable subscripted with)-.25 F F2(@)2.968 E F0(or)2.968 E F2(*)2.968 E +F0 2.968(,t)C .468(he case modi\214ca-)-2.968 F(tion operation is appli\ +ed to each member of the array in turn, and the e)144 340.8 Q +(xpansion is the resultant list.)-.15 E(${)108 357.6 Q F1(par)A(ameter) +-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 369.6 S .86 +(rameter transf).1 F(ormation)-.25 E F0 5.86(.T)C .86(he e)-5.86 F .86 +(xpansion is either a transformation of the v)-.15 F .86(alue of)-.25 F +F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 381.6 R F1 +(par)2.654 E(ameter)-.15 E F0 .153(itself, depending on the v)2.654 F +.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.153(.E)C(ach)-5.153 +E F1(oper)2.653 E(ator)-.15 E F0 .153(is a sin-)2.653 F(gle letter:)144 +393.6 Q F2(Q)144 417.6 Q F0 1.064(The e)180 417.6 R 1.064 +(xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F1(par) +3.565 E(ameter)-.15 E F0 1.065(quoted in a format that can be)3.565 F +(reused as input.)180 429.6 Q F2(E)144 441.6 Q F0 .441(The e)180 441.6 R +.441(xpansion is a string that is the v)-.15 F .441(alue of)-.25 F F1 +(par)2.941 E(ameter)-.15 E F0 .44(with backslash escape sequences)2.94 F +-.15(ex)180 453.6 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E F0 +(quoting mechansim.)2.5 E F2(P)144 465.6 Q F0 1.072(The e)180 465.6 R +1.073(xpansion is a string that is the result of e)-.15 F 1.073 +(xpanding the v)-.15 F 1.073(alue of)-.25 F F1(par)3.573 E(ameter)-.15 E +F0 1.073(as if it)3.573 F(were a prompt string \(see)180 477.6 Q F2(PR) +2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 489.6 Q F0 1.138 +(The e)180 489.6 R 1.138 +(xpansion is a string in the form of an assignment statement or)-.15 F +F2(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 501.6 Q +-.25(va)-.25 G(luated, will recreate).25 E F1(par)2.5 E(ameter)-.15 E F0 +(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F2(a)144 513.6 Q F0 +(The e)180 513.6 Q(xpansion is a string consisting of \215ag v)-.15 E +(alues representing)-.25 E F1(par)2.5 E(ameter)-.15 E F0 1.1 -.55('s a)D +(ttrib).55 E(utes.)-.2 E(If)144 530.4 Q F1(par)5.33 E(ameter)-.15 E F0 +(is)4.81 E F2(@)4.08 E F0(or)4.08 E F2(*)4.08 E F0 4.08(,t)C 1.581 +(he operation is applied to each positional parameter in turn, and the) +-4.08 F -.15(ex)144 542.4 S .347(pansion is the resultant list.).15 F +(If)5.347 E F1(par)4.097 E(ameter)-.15 E F0 .346(is an array v)3.577 F +.346(ariable subscripted with)-.25 F F2(@)2.846 E F0(or)2.846 E F2(*) +2.846 E F0 2.846(,t)C .346(he case)-2.846 F 1.204(modi\214cation operat\ +ion is applied to each member of the array in turn, and the e)144 554.4 +R 1.204(xpansion is the)-.15 F(resultant list.)144 566.4 Q 1.85 +(The result of the e)144 590.4 R 1.849(xpansion is subject to w)-.15 F +1.849(ord splitting and pathname e)-.1 F 1.849(xpansion as described) +-.15 F(belo)144 602.4 Q -.65(w.)-.25 G F2(Command Substitution)87 619.2 +Q F1 1.697(Command substitution)108 631.2 R F0(allo)4.197 E 1.697 +(ws the output of a command to replace the command name.)-.25 F 1.698 +(There are tw)6.698 F(o)-.1 E(forms:)108 643.2 Q F2($\()144 660 Q F1 +(command)A F2(\))1.666 E F0(or)108 672 Q F2<92>144 684 Q F1(command)A F2 +<92>A(Bash)108 700.8 Q F0 .089(performs the e)2.589 F .089 +(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)2.589 E F0 +.088(in a subshell en)2.589 F .088(vironment and replacing the command) +-.4 F .41(substitution with the standard output of the command, with an) +108 712.8 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.) +-.25 F .41(Embedded ne)5.41 F(w-)-.25 E .192(lines are not deleted, b) +108 724.8 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F +-.15(ve)-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.) +-.1 F .192(The command substitution)5.192 F F2($\(cat)2.691 E F1(\214le) +2.691 E F2(\))A F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(23) +192.055 E 0 Cg EP %%Page: 24 24 %%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 .009(are found, and the shell option)108 84 R/F1 10/Times-Bold@0 -SF(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 96 -R .442(ord is remo)-.1 F -.15(ve)-.15 G 2.942(d. If).15 F(the)2.943 E F1 -(failglob)2.943 E F0 .443(shell option is set, and no matches are)2.943 -F 1.38(found, an error message is printed and the command is not e)108 -108 R -.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F -F1(nocaseglob)3.88 E F0(is)3.88 E .103 -(enabled, the match is performed without re)108 120 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 132 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 144 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 -156 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 -168 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 180 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 196.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 208.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 220.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 232.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 244.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 256.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 268.8 Q F2(GLOBIGNORE)2.5 E F0 -(is unset.)2.25 E F1 -.1(Pa)108 285.6 S(tter).1 E 2.5(nM)-.15 G(atching) --2.5 E F0(An)108 302.4 Q 3.138(yc)-.15 G .638(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 314.4 -R 1.12(NUL character may not occur in a pattern.)3.62 F 3.62(Ab)6.12 G -1.12(ackslash escapes the follo)-3.62 F 1.12(wing character; the)-.25 F -.576(escaping backslash is discarded when matching.)108 326.4 R .576 -(The special pattern characters must be quoted if the)5.576 F 3.076(ya) --.15 G(re)-3.076 E(to be matched literally)108 338.4 Q(.)-.65 E -(The special pattern characters ha)108 355.2 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1(*)144 372 Q F0 .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 384 Q F1(*)3.275 E F0 .775 -(is used in a pathname e)3.275 F .775(xpansion conte)-.15 F .775(xt, tw) --.15 F 3.275(oa)-.1 G(djacent)-3.275 E 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 396 R 1.058(If follo)6.058 -F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 408 Q 2.5(oa)-.1 G -(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C -(ill match only directories and subdirectories.)-2.5 E F1(?)144 420 Q F0 -(Matches an)31 E 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1([...]) -144 432 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 444 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 456 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 468 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 480 R .894 -(xpressions is determined by the current locale)-.15 F .375(and the v) -180 492 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 504 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 516 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 528 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 540 Q -.4(Wi)180 -558 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 570 Q -(wing classes de\214ned in the POSIX standard:)-.25 E F1 8.173 -(alnum alpha ascii blank cntrl digit graph lo)180 582 R 8.173 -(wer print punct space)-.1 F 5(upper w)180 594 R 5(ord xdigit)-.1 F F0 -4.289(Ac)180 606 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 618 Q -.4(Wi) -180 636 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 648 R -(the character)180 660 Q F3(c)2.5 E F0(.)A -.4(Wi)180 678 S(thin).4 E F1 -([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.)2.5 -E F3(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F3(symbol) -2.5 E F0(.)A .705(If the)108 694.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 -706.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 718.8 Q(wing sub-patterns:)-.25 E(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(24)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(can be replaced by the equi)108 84 Q -.25(va)-.25 G(lent b).25 E(ut f) +-.2 E(aster)-.1 E/F1 10/Times-Bold@0 SF($\(<)2.5 E/F2 10/Times-Italic@0 +SF(\214le)2.5 E F1(\))A F0(.)A 1.724(When the old-style backquote form \ +of substitution is used, backslash retains its literal meaning e)108 +100.8 R(xcept)-.15 E .315(when follo)108 112.8 R .315(wed by)-.25 F F1 +($)2.815 E F0(,)A F1<92>2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E +F0 5.315(.T)C .314(he \214rst backquote not preceded by a backslash ter\ +minates the command sub-)-5.315 F 3.886(stitution. When)108 124.8 R +1.386(using the $\()3.886 F F2(command).833 E F0 3.886(\)f)1.666 G 1.387 +(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G +3.887(pt)-3.887 G 1.387(he com-)-3.887 F +(mand; none are treated specially)108 136.8 Q(.)-.65 E .894 +(Command substitutions may be nested.)108 153.6 R 2.494 -.8(To n)5.894 H +.894(est when using the backquoted form, escape the inner back-).8 F +(quotes with backslashes.)108 165.6 Q .422 +(If the substitution appears within double quotes, w)108 182.4 R .422 +(ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15 +F(on the results.)108 194.4 Q F1(Arithmetic Expansion)87 211.2 Q F0 +1.035(Arithmetic e)108 223.2 R 1.035(xpansion allo)-.15 F 1.035 +(ws the e)-.25 F -.25(va)-.25 G 1.034(luation of an arithmetic e).25 F +1.034(xpression and the substitution of the result.)-.15 F +(The format for arithmetic e)108 235.2 Q(xpansion is:)-.15 E F1($\(\() +144 252 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 268.8 Q +F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165 +(is treated as if it were within double quotes, b)2.905 F .166 +(ut a double quote inside the parentheses is not)-.2 F .231 +(treated specially)108 280.8 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231 +(ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v) +-.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F 1.059 +(tution, and quote remo)108 292.8 R -.25(va)-.15 G 3.559(l. The).25 F +1.059(result is treated as the arithmetic e)3.559 F 1.06 +(xpression to be e)-.15 F -.25(va)-.25 G 3.56(luated. Arithmetic).25 F +-.15(ex)108 304.8 S(pansions may be nested.).15 E 1.379(The e)108 321.6 +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 .405(ocess substitution) +-.45 F F0(allo)2.905 E .405(ws a process')-.25 F 2.905(si)-.55 G .405 +(nput or output to be referred to using a \214lename.)-2.905 F .405 +(It tak)5.405 F .405(es the form)-.1 F(of)108 374.4 Q F1(<\()3.251 E F2 +(list)A F1(\)).833 E F0(or)3.251 E F1(>\()3.251 E F2(list)A F1(\)).833 E +F0 5.751(.T)C .751(he process)-5.751 F F2(list)3.251 E F0 .751 +(is run asynchronously)3.251 F 3.251(,a)-.65 G .751 +(nd its input or output appears as a \214lename.)-3.251 F .147 +(This \214lename is passed as an ar)108 386.4 R .148 +(gument to the current command as the result of the e)-.18 F 2.648 +(xpansion. If)-.15 F(the)2.648 E F1(>\()2.648 E F2(list)A F1(\)).833 E +F0 .56(form is used, writing to the \214le will pro)108 398.4 R .56 +(vide input for)-.15 F F2(list)3.059 E F0 5.559(.I)C 3.059(ft)-5.559 G +(he)-3.059 E F1(<\()3.059 E F2(list)A F1(\)).833 E F0 .559 +(form is used, the \214le passed as an)3.059 F(ar)108 410.4 Q .308 +(gument should be read to obtain the output of)-.18 F F2(list)2.808 E F0 +5.308(.P)C .309(rocess substitution is supported on systems that sup-) +-5.308 F(port named pipes \()108 422.4 Q F2(FIFOs)A F0 2.5(\)o)C 2.5(rt) +-2.5 G(he)-2.5 E F1(/de)2.5 E(v/fd)-.15 E F0 +(method of naming open \214les.)2.5 E .897(When a)108 439.2 R -.25(va) +-.2 G .896(ilable, process substitution is performed simultaneously wit\ +h parameter and v).25 F .896(ariable e)-.25 F(xpansion,)-.15 E +(command substitution, and arithmetic e)108 451.2 Q(xpansion.)-.15 E F1 +-.75(Wo)87 468 S(rd Splitting).75 E F0 1.142 +(The shell scans the results of parameter e)108 480 R 1.143 +(xpansion, command substitution, and arithmetic e)-.15 F 1.143 +(xpansion that)-.15 F(did not occur within double quotes for)108 492 Q +F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063 +(The shell treats each character of)108 508.8 R F3(IFS)2.563 E F0 .063 +(as a delimiter)2.313 F 2.563(,a)-.4 G .063 +(nd splits the results of the other e)-2.563 F .063(xpansions into w) +-.15 F(ords)-.1 E .207(using these characters as \214eld terminators.) +108 520.8 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F +.207(alue is e)-.25 F(xactly)-.15 E F1()2.708 E F0 +(,)A .837(the def)108 532.8 R .837(ault, then sequences of)-.1 F F1 +()3.337 E F0(,)A F1()3.337 E F0 3.337(,a)C(nd)-3.337 E F1 +()3.337 E F0 .836(at the be)3.336 F .836 +(ginning and end of the results of)-.15 F .345(the pre)108 544.8 R .345 +(vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15 +G .345(equence of)-2.845 F F3(IFS)2.845 E F0 .345 +(characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es) +-.15 E 1.237(to delimit w)108 556.8 R 3.737(ords. If)-.1 F F3(IFS)3.737 +E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236 +(ault, then sequences of the whitespace characters)-.1 F F1(space)108 +568.8 Q F0(,)A F1(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F1(newline)2.506 +E F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w) +-.15 F .007(ord, as long as the whitespace charac-)-.1 F .921 +(ter is in the v)108 580.8 R .92(alue of)-.25 F F3(IFS)3.42 E F0(\(an) +3.17 E F3(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E +3.42(yc)-.15 G .92(haracter in)-3.42 F F3(IFS)3.42 E F0 .92(that is not) +3.17 F F3(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 592.8 +R 2.928(ya)-.15 G(djacent)-2.928 E F3(IFS)2.928 E F0 .428 +(whitespace characters, delimits a \214eld.)2.678 F 2.928(As)5.428 G +.428(equence of)-2.928 F F3(IFS)2.928 E F0 .429(whitespace charac-)2.679 +F(ters is also treated as a delimiter)108 604.8 Q 5(.I)-.55 G 2.5(ft)-5 +G(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E F0(is null, no w)2.25 E +(ord splitting occurs.)-.1 E 1.927(Explicit null ar)108 621.6 R 1.927 +(guments \()-.18 F F1 .833("").833 G F0(or)3.594 E F1 .833<0808>5.26 G +F0 4.427(\)a)C 1.927 +(re retained and passed to commands as empty strings.)-4.427 F(Unquoted) +6.927 E .484(implicit null ar)108 633.6 R .484 +(guments, resulting from the e)-.18 F .484 +(xpansion of parameters that ha)-.15 F .785 -.15(ve n)-.2 H 2.985(ov).15 +G .485(alues, are remo)-3.235 F -.15(ve)-.15 G 2.985(d. If).15 F(a)2.985 +E 1.572(parameter with no v)108 645.6 R 1.572(alue is e)-.25 F 1.571 +(xpanded within double quotes, a null ar)-.15 F 1.571 +(gument results and is retained and)-.18 F .723 +(passed to a command as an empty string.)108 657.6 R .724 +(When a quoted null ar)5.724 F .724(gument appears as part of a w)-.18 F +.724(ord whose)-.1 F -.15(ex)108 669.6 S .176 +(pansion is non-null, the null ar).15 F .176(gument is remo)-.18 F -.15 +(ve)-.15 G 2.676(d. That).15 F .176(is, the w)2.676 F(ord)-.1 E/F5 10 +/Courier@0 SF -5.1672.676 F F0(becomes)2.675 E F52.675 +E F0 .175(after w)2.675 F .175(ord split-)-.1 F(ting and null ar)108 +681.6 Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108 +698.4 Q(xpansion occurs, no splitting is performed.)-.15 E(GNU Bash 4.4) +72 768 Q(2016 August 26)142.895 E(24)192.055 E 0 Cg EP %%Page: 25 25 %%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.3)72 768 Q(2014 February 2)141.79 E(25)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.1(Pa)87 84 S(thname Expansion).1 E F0 .37(After w)108 96 R .37 +(ord splitting, unless the)-.1 F F12.87 E F0 .37 +(option has been set,)2.87 F F1(bash)2.87 E F0 .371(scans each w)2.871 F +.371(ord for the characters)-.1 F F1(*)2.871 E F0(,)A F1(?)2.871 E F0 +2.871(,a)C(nd)-2.871 E F1([)2.871 E F0(.)A .678 +(If one of these characters appears, then the w)108 108 R .677 +(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F/F2 10 +/Times-Italic@0 SF(pattern)3.177 E F0 3.177(,a).24 G .677 +(nd replaced with an alphabeti-)-3.177 F .562 +(cally sorted list of \214lenames matching the pattern \(see)108 120 R +/F3 9/Times-Bold@0 SF -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G +(atching)-2.812 E F0(belo)2.812 E 3.062(w\). If)-.25 F .562 +(no matching \214lenames)3.062 F .009(are found, and the shell option) +108 132 R F1(nullglob)2.509 E F0 .008(is not enabled, the w)2.509 F .008 +(ord is left unchanged.)-.1 F .008(If the)5.008 F F1(nullglob)2.508 E F0 +.008(option is)2.508 F .442(set, and no matches are found, the w)108 144 +R .442(ord is remo)-.1 F -.15(ve)-.15 G 2.942(d. If).15 F(the)2.943 E F1 +(failglob)2.943 E F0 .443(shell option is set, and no matches are)2.943 +F 1.38(found, an error message is printed and the command is not e)108 +156 R -.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F +F1(nocaseglob)3.88 E F0(is)3.88 E .103 +(enabled, the match is performed without re)108 168 R -.05(ga)-.15 G +.104(rd to the case of alphabetic characters.).05 F .104 +(When a pattern is used)5.104 F .378(for pathname e)108 180 R .378 +(xpansion, the character)-.15 F F1 -.63(``)2.878 G -.55(.').63 G(')-.08 +E F0 .378(at the start of a name or immediately follo)5.378 F .377 +(wing a slash must be)-.25 F .578(matched e)108 192 R(xplicitly)-.15 E +3.078(,u)-.65 G .578(nless the shell option)-3.078 F F1(dotglob)3.079 E +F0 .579(is set.)3.079 F .579 +(When matching a pathname, the slash character)5.579 F 1.789(must al)108 +204 R -.1(wa)-.1 G 1.788(ys be matched e).1 F(xplicitly)-.15 E 6.788(.I) +-.65 G 4.288(no)-6.788 G 1.788(ther cases, the)-4.288 F F1 -.63(``)4.288 +G -.55(.').63 G(')-.08 E F0 1.788(character is not treated specially) +6.788 F 6.788(.S)-.65 G 1.788(ee the)-6.788 F .165(description of)108 +216 R F1(shopt)2.665 E F0(belo)2.665 E 2.665(wu)-.25 G(nder)-2.665 E F3 +.165(SHELL B)2.665 F(UIL)-.09 E .165(TIN COMMANDS)-.828 F F0 .166 +(for a description of the)2.415 F F1(nocaseglob)2.666 E F0(,)A F1(null-) +2.666 E(glob)108 228 Q F0(,)A F1(failglob)2.5 E F0 2.5(,a)C(nd)-2.5 E F1 +(dotglob)2.5 E F0(shell options.)2.5 E(The)108 244.8 Q F3(GLOBIGNORE) +2.786 E F0 .286(shell v)2.536 F .285 +(ariable may be used to restrict the set of \214lenames matching a)-.25 +F F2(pattern)2.785 E F0 5.285(.I).24 G(f)-5.285 E F3(GLO-)2.785 E +(BIGNORE)108 256.8 Q F0 2.316(is set, each matching \214lename that als\ +o matches one of the patterns in)4.565 F F3(GLOBIGNORE)4.816 E F0(is) +4.566 E(remo)108 268.8 Q -.15(ve)-.15 G 3.915(df).15 G 1.415 +(rom the list of matches.)-3.915 F 1.415(If the)6.415 F F1(nocaseglob) +3.915 E F0 1.415(option is set, the matching ag)3.915 F 1.414 +(ainst the patterns in)-.05 F F3(GLOBIGNORE)108 280.8 Q F0 .146 +(is performed without re)2.396 F -.05(ga)-.15 G .146(rd to case.).05 F +.146(The \214lenames)5.146 F F1 -.63(``)2.646 G -.55(.').63 G(')-.08 E +F0(and)5.147 E F1 -.63(``)2.647 G(..).63 E -.63('')-.55 G F0 .147 +(are al)5.777 F -.1(wa)-.1 G .147(ys ignored when).1 F F3(GLOBIGNORE)108 +292.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15 +(ve)-.25 G 1.627 -.4(r, s).15 H(etting).4 E F3(GLOBIGNORE)3.327 E F0 +.827(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of) +-.25 F .682(enabling the)108 304.8 R F1(dotglob)3.182 E F0 .682 +(shell option, so all other \214lenames be)3.182 F .682(ginning with a) +-.15 F F1 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) +5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(beha)108 316.8 Q +1.185(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F +F1 -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e) +-.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184 +(one of the patterns in)6.184 F F3(GLOBIGNORE)3.684 E/F4 9/Times-Roman@0 +SF(.)A F0(The)108 328.8 Q F1(dotglob)3.131 E F0 .631 +(option is disabled when)3.131 F F3(GLOBIGNORE)3.132 E F0 .632 +(is unset.)2.882 F .632(The pattern matching honors the setting of)5.632 +F(the)108 340.8 Q F1(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 +357.6 S(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(An)108 374.4 Q 3.138 +(yc)-.15 G .638(haracter that appears in a pattern, other than the spec\ +ial pattern characters described belo)-3.138 F 1.938 -.65(w, m)-.25 H +(atches).65 E 3.62(itself. The)108 386.4 R 1.12 +(NUL character may not occur in a pattern.)3.62 F 3.62(Ab)6.12 G 1.12 +(ackslash escapes the follo)-3.62 F 1.12(wing character; the)-.25 F .576 +(escaping backslash is discarded when matching.)108 398.4 R .576 +(The special pattern characters must be quoted if the)5.576 F 3.076(ya) +-.15 G(re)-3.076 E(to be matched literally)108 410.4 Q(.)-.65 E +(The special pattern characters ha)108 427.2 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1(*)144 444 Q F0 .376(Matches an) +180 444 R 2.876(ys)-.15 G .376(tring, including the null string.)-2.876 +F .376(When the)5.376 F F1(globstar)2.876 E F0 .377 +(shell option is enabled,)2.876 F(and)180 456 Q F1(*)3.275 E F0 .775 +(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 468 R 1.058(If follo)6.058 +F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 480 Q 2.5(oa)-.1 G +(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C +(ill match only directories and subdirectories.)-2.5 E F1(?)144 492 Q F0 +(Matches an)180 492 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1 +([...])144 504 Q F0 .579(Matches an)180 504 R 3.079(yo)-.15 G .579 +(ne of the enclosed characters.)-3.079 F 3.079(Ap)5.579 G .578 +(air of characters separated by a h)-3.079 F(yphen)-.05 E .684 +(denotes a)180 516 R F2 -.15(ra)3.184 G(ng).15 E 3.184(ee)-.1 G(xpr) +-3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)-3.184 H .684 +(haracter that f).15 F .684(alls between those tw)-.1 F 3.185(oc)-.1 G +.685(haracters, inclu-)-3.185 F(si)180 528 Q -.15(ve)-.25 G 3.713(,u).15 +G 1.213(sing the current locale')-3.713 F 3.712(sc)-.55 G 1.212 +(ollating sequence and character set, is matched.)-3.712 F 1.212(If the) +6.212 F 1.123(\214rst character follo)180 540 R 1.123(wing the)-.25 F F1 +([)3.623 E F0 1.123(is a)3.623 F F1(!)3.623 E F0 1.124(or a)6.123 F F1 +(^)3.624 E F0 1.124(then an)3.624 F 3.624(yc)-.15 G 1.124 +(haracter not enclosed is matched.)-3.624 F .895 +(The sorting order of characters in range e)180 552 R .894 +(xpressions is determined by the current locale)-.15 F .375(and the v) +180 564 R .375(alues of the)-.25 F F3(LC_COLLA)2.875 E(TE)-.855 E F0(or) +2.625 E F3(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 +(ariables, if set.)-.25 F 1.976 -.8(To o)5.376 H .376(btain the tra-).8 +F .068(ditional interpretation of range e)180 576 R .068 +(xpressions, where)-.15 F F1([a\255d])2.568 E F0 .067(is equi)2.567 F +-.25(va)-.25 G .067(lent to).25 F F1([abcd])2.567 E F0 2.567(,s)C .067 +(et v)-2.567 F(alue)-.25 E .156(of the)180 588 R F1(LC_ALL)2.656 E F0 +.156(shell v)2.656 F .156(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C +2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0 +.157(shell option.)2.657 F(A)5.157 E F12.657 E F0(may)2.657 E .193(\ +be matched by including it as the \214rst or last character in the set.) +180 600 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F +(including it as the \214rst character in the set.)180 612 Q -.4(Wi)180 +630 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F2 -.15(ch) +3.07 G(ar).15 E .571(acter classes)-.15 F F0 .571 +(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F2(class)A F1 +(:])A F0 3.071(,w)C(here)-3.071 E F2(class)3.071 E F0 +(is one of the follo)180 642 Q +(wing classes de\214ned in the POSIX standard:)-.25 E F1 8.173 +(alnum alpha ascii blank cntrl digit graph lo)180 654 R 8.173 +(wer print punct space)-.1 F 5(upper w)180 666 R 5(ord xdigit)-.1 F F0 +4.289(Ac)180 678 S 1.789(haracter class matches an)-4.289 F 4.289(yc) +-.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F1 +-.1(wo)4.29 G(rd).1 E F0(character)4.29 E +(class matches letters, digits, and the character _.)180 690 Q -.4(Wi) +180 708 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537 +(,a)C(n)-4.537 E F2 2.037(equivalence class)4.537 F F0 2.036 +(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F2(c)A F1(=]) +A F0 4.536(,w)C(hich)-4.536 E .125(matches all characters with the same\ + collation weight \(as de\214ned by the current locale\) as)180 720 R +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(25)192.055 E 0 Cg EP %%Page: 26 26 %%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.3)72 768 Q(2014 February 2)141.79 E(26)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(the character)180 +84 Q/F1 10/Times-Italic@0 SF(c)2.5 E F0(.)A -.4(Wi)180 102 S(thin).4 E +/F2 10/Times-Bold@0 SF([)2.5 E F0(and)2.5 E F2(])2.5 E F0 2.5(,t)C +(he syntax)-2.5 E F2([.)2.5 E F1(symbol)A F2(.])A F0 +(matches the collating symbol)2.5 E F1(symbol)2.5 E F0(.)A .705(If the) +108 118.8 R F2(extglob)3.205 E F0 .705 +(shell option is enabled using the)3.205 F F2(shopt)3.205 E F0 -.2(bu) +3.205 G .704(iltin, se).2 F -.15(ve)-.25 G .704(ral e).15 F .704 +(xtended pattern matching operators)-.15 F .255(are recognized.)108 +130.8 R .255(In the follo)5.255 F .255(wing description, a)-.25 F F1 +(pattern-list)2.755 E F0 .255 +(is a list of one or more patterns separated by a)2.755 F F2(|)2.756 E +F0(.)A(Composite patterns may be formed using one or more of the follo) +108 142.8 Q(wing sub-patterns:)-.25 E F2(?\()144 166.8 Q F1 +(pattern-list).833 E F2(\)).833 E F0 +(Matches zero or one occurrence of the gi)180 178.8 Q -.15(ve)-.25 G 2.5 +(np).15 G(atterns)-2.5 E F2(*\()144 190.8 Q F1(pattern-list).833 E F2 +(\)).833 E F0(Matches zero or more occurrences of the gi)180 202.8 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F2(+\()144 214.8 Q F1 +(pattern-list).833 E F2(\)).833 E F0 +(Matches one or more occurrences of the gi)180 226.8 Q -.15(ve)-.25 G +2.5(np).15 G(atterns)-2.5 E F2(@\()144 238.8 Q F1(pattern-list).833 E F2 +(\)).833 E F0(Matches one of the gi)180 250.8 Q -.15(ve)-.25 G 2.5(np) +.15 G(atterns)-2.5 E F2(!\()144 262.8 Q F1(pattern-list).833 E F2(\)) +.833 E F0(Matches an)180 274.8 Q(ything e)-.15 E(xcept one of the gi) +-.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F2(Quote Remo)87 291.6 +Q -.1(va)-.1 G(l).1 E F0 1.113(After the preceding e)108 303.6 R 1.113 +(xpansions, all unquoted occurrences of the characters)-.15 F F2(\\) +3.613 E F0(,)A F2<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F2(")4.445 E F0 +1.112(that did not result)4.445 F(from one of the abo)108 315.6 Q .3 +-.15(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F3 +10.95/Times-Bold@0 SF(REDIRECTION)72 332.4 Q F0 .545 +(Before a command is e)108 344.4 R -.15(xe)-.15 G .545 +(cuted, its input and output may be).15 F F1 -.37(re)3.045 G(dir).37 E +(ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .405 +(by the shell.)108 356.4 R .405(Redirection allo)5.405 F .405(ws comman\ +ds' \214le handles to be duplicated, opened, closed, made to refer to) +-.25 F(dif)108 368.4 Q 1.019(ferent \214les, and can change the \214les\ + the command reads from and writes to.)-.25 F 1.02 +(Redirection may also be)6.02 F .215 +(used to modify \214le handles in the current shell e)108 380.4 R -.15 +(xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E +.215(wing redirection operators)-.25 F .875(may precede or appear an)108 +392.4 R .875(ywhere within a)-.15 F F1 .875(simple command)3.715 F F0 +.875(or may follo)4.145 F 3.376(wa)-.25 G F1(command)A F0 5.876(.R).77 G +.876(edirections are)-5.876 F(processed in the order the)108 404.4 Q 2.5 +(ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771(Eac\ +h redirection that may be preceded by a \214le descriptor number may in\ +stead be preceded by a w)108 421.2 R .771(ord of)-.1 F .292(the form {) +108 433.2 R F1(varname)A F0 2.793(}. In)B .293 +(this case, for each redirection operator e)2.793 F .293 +(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 445.2 S +.679(le descriptor greater than or equal to 10 and assign it to)-3.18 F +F1(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 +(&- or <&- is preceded by {)-3.179 F F1(var)A(-)-.2 E(name)108 457.2 Q +F0(}, the v)A(alue of)-.25 E F1(varname)2.5 E F0 +(de\214nes the \214le descriptor to close.)2.5 E .283(In the follo)108 +474 R .284(wing descriptions, if the \214le descriptor number is omitte\ +d, and the \214rst character of the redirect-)-.25 F .513 +(ion operator is)108 486 R F2(<)3.012 E F0 3.012(,t)C .512 +(he redirection refers to the standard input \(\214le descriptor 0\).) +-3.012 F .512(If the \214rst character of the)5.512 F +(redirection operator is)108 498 Q F2(>)2.5 E F0 2.5(,t)C +(he redirection refers to the standard output \(\214le descriptor 1\).) +-2.5 E .824(The w)108 514.8 R .824(ord follo)-.1 F .824 +(wing the redirection operator in the follo)-.25 F .825 +(wing descriptions, unless otherwise noted, is sub-)-.25 F .463 +(jected to brace e)108 526.8 R .463(xpansion, tilde e)-.15 F .462 +(xpansion, parameter and v)-.15 F .462(ariable e)-.25 F .462 +(xpansion, command substitution, arith-)-.15 F .866(metic e)108 538.8 R +.866(xpansion, quote remo)-.15 F -.25(va)-.15 G .866(l, pathname e).25 F +.867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867 +F .867(xpands to more than one)-.15 F -.1(wo)108 550.8 S(rd,).1 E F2 +(bash)2.5 E F0(reports an error)2.5 E(.)-.55 E +(Note that the order of redirections is signi\214cant.)108 567.6 Q -.15 +(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 584.4 Q F2(>)2.5 +E F0(dirlist 2)2.5 E F2(>&)A F0(1)A +(directs both standard output and standard error to the \214le)108 601.2 +Q F1(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 618 +Q F2(>&)A F0(1)A F2(>)2.5 E F0(dirlist)2.5 E .527 +(directs only the standard output to \214le)108 634.8 R F1(dirlist)3.027 +E F0 3.027(,b).68 G .527(ecause the standard error w)-3.027 F .527 +(as duplicated from the standard)-.1 F +(output before the standard output w)108 646.8 Q(as redirected to)-.1 E +F1(dirlist)2.5 E F0(.).68 E F2(Bash)108 663.6 Q F0 .598(handles se)3.098 +F -.15(ve)-.25 G .598(ral \214lenames specially when the).15 F 3.099(ya) +-.15 G .599(re used in redirections, as described in the follo)-3.099 F +(wing)-.25 E 3.478(table. If)108 675.6 R .978 +(the operating system on which)3.478 F F2(bash)3.478 E F0 .978 +(is running pro)3.478 F .977 +(vides these special \214les, bash will use them;)-.15 F +(otherwise it will emulate them internally with the beha)108 687.6 Q +(vior described belo)-.2 E -.65(w.)-.25 G F2(/de)144 704.4 Q(v/fd/)-.15 +E F1(fd)A F0(If)180 716.4 Q F1(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E +(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F1(fd)2.5 E F0 +(is duplicated.)2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(26) +192.055 E 0 Cg EP %%Page: 27 27 %%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.3)72 768 Q(2014 February 2)141.79 E(27)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(/de)144 84 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.)180 +96 Q F1(/de)144 108 Q(v/stdout)-.15 E F0 +(File descriptor 1 is duplicated.)180 120 Q F1(/de)144 132 Q(v/stderr) +-.15 E F0(File descriptor 2 is duplicated.)180 144 Q F1(/de)144 156 Q +(v/tcp/)-.15 E/F2 10/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 +168 Q F2(host)2.996 E F0 .496(is a v)2.996 F .496 +(alid hostname or Internet address, and)-.25 F F2(port)2.997 E F0 .497 +(is an inte)2.997 F .497(ger port number or ser)-.15 F(-)-.2 E +(vice name,)180 180 Q F1(bash)2.5 E F0 +(attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E F1(/de)144 +192 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 204 Q F2(host) +2.997 E F0 .497(is a v)2.997 F .497 +(alid hostname or Internet address, and)-.25 F F2(port)2.996 E F0 .496 +(is an inte)2.996 F .496(ger port number or ser)-.15 F(-)-.2 E +(vice name,)180 216 Q F1(bash)2.5 E F0 +(attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af)108 +232.8 S(ailure to open or create a \214le causes the redirection to f) +-2.6 E(ail.)-.1 E .946(Redirections using \214le descriptors greater th\ +an 9 should be used with care, as the)108 249.6 R 3.447(ym)-.15 G .947 +(ay con\215ict with \214le)-3.447 F +(descriptors the shell uses internally)108 261.6 Q(.)-.65 E F1(Redir)87 +278.4 Q(ecting Input)-.18 E F0 .391 +(Redirection of input causes the \214le whose name results from the e) +108 290.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391 +(to be opened for read-)3.661 F(ing on \214le descriptor)108 302.4 Q F2 +(n)2.5 E F0 2.5(,o).24 G 2.5(rt)-2.5 G +(he standard input \(\214le descriptor 0\) if)-2.5 E F2(n)2.86 E F0 +(is not speci\214ed.)2.74 E +(The general format for redirecting input is:)108 319.2 Q([)144 336 Q F2 +(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 352.8 Q(ecting Output) +-.18 E F0 .174 +(Redirection of output causes the \214le whose name results from the e) +108 364.8 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175 +(to be opened for writ-)3.445 F .825(ing on \214le descriptor)108 376.8 +R F2(n)3.325 E F0 3.325(,o).24 G 3.325(rt)-3.325 G .824 +(he standard output \(\214le descriptor 1\) if)-3.325 F F2(n)3.684 E F0 +.824(is not speci\214ed.)3.564 F .824(If the \214le does not)5.824 F +-.15(ex)108 388.8 S(ist it is created; if it does e).15 E +(xist it is truncated to zero size.)-.15 E +(The general format for redirecting output is:)108 405.6 Q([)144 422.4 Q +F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .154 +(If the redirection operator is)108 439.2 R F1(>)2.654 E F0 2.654(,a)C +.154(nd the)-2.654 F F1(noclob)2.654 E(ber)-.1 E F0 .154(option to the) +2.654 F F1(set)2.655 E F0 -.2(bu)2.655 G .155 +(iltin has been enabled, the redirection).2 F .658(will f)108 451.2 R +.658(ail if the \214le whose name results from the e)-.1 F .658 +(xpansion of)-.15 F F2(wor)3.158 E(d)-.37 E F0 -.15(ex)3.158 G .657 +(ists and is a re).15 F .657(gular \214le.)-.15 F .657(If the redi-) +5.657 F .408(rection operator is)108 463.2 R F1(>|)2.909 E F0 2.909(,o)C +2.909(rt)-2.909 G .409(he redirection operator is)-2.909 F F1(>)2.909 E +F0 .409(and the)2.909 F F1(noclob)2.909 E(ber)-.1 E F0 .409 +(option to the)2.909 F F1(set)2.909 E F0 -.2(bu)2.909 G .409 +(iltin command).2 F(is not enabled, the redirection is attempted e)108 +475.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) +-2.5 E F2(wor)2.5 E(d)-.37 E F0 -.15(ex)2.5 G(ists.).15 E F1 -.25(Ap)87 +492 S(pending Redir).25 E(ected Output)-.18 E F0 .642 +(Redirection of output in this f)108 504 R .642 +(ashion causes the \214le whose name results from the e)-.1 F .641 +(xpansion of)-.15 F F2(wor)3.481 E(d)-.37 E F0 .641(to be)3.911 F .473 +(opened for appending on \214le descriptor)108 516 R F2(n)2.973 E F0 +2.974(,o).24 G 2.974(rt)-2.974 G .474 +(he standard output \(\214le descriptor 1\) if)-2.974 F F2(n)3.334 E F0 +.474(is not speci\214ed.)3.214 F(If)5.474 E(the \214le does not e)108 +528 Q(xist it is created.)-.15 E +(The general format for appending output is:)108 544.8 Q([)144 561.6 Q +F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 578.4 Q +(ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .249 +(This construct allo)108 590.4 R .249(ws both the standard output \(\ +\214le descriptor 1\) and the standard error output \(\214le descrip-) +-.25 F(tor 2\) to be redirected to the \214le whose name is the e)108 +602.4 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E +(There are tw)108 619.2 Q 2.5(of)-.1 G +(ormats for redirecting standard output and standard error:)-2.5 E F1 +(&>)144 636 Q F2(wor)A(d)-.37 E F0(and)108 648 Q F1(>&)144 660 Q F2(wor) +A(d)-.37 E F0(Of the tw)108 676.8 Q 2.5(of)-.1 G +(orms, the \214rst is preferred.)-2.5 E(This is semantically equi)5 E +-.25(va)-.25 G(lent to).25 E F1(>)144 693.6 Q F2(wor)A(d)-.37 E F0(2)2.5 +E F1(>&)A F0(1)A .114(When using the second form,)108 710.4 R F2(wor) +2.614 E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or) +-.15 F F12.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td)-2.614 G +.115(oes, other redirection operators)-2.615 F(apply \(see)108 722.4 Q +F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E +(w\) for compatibility reasons.)-.25 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(27)192.055 E 0 Cg EP %%Page: 28 28 %%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.3)72 768 Q(2014 February 2)141.79 E(28)190.95 E 0 Cg -EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.25(Ap)87 84 S(pending Standard Output and Standard Err).25 E(or) +-.18 E F0 .249(This construct allo)108 96 R .249(ws both the standard o\ +utput \(\214le descriptor 1\) and the standard error output \(\214le de\ +scrip-)-.25 F(tor 2\) to be appended to the \214le whose name is the e) +108 108 Q(xpansion of)-.15 E/F2 10/Times-Italic@0 SF(wor)2.5 E(d)-.37 E +F0(.).77 E +(The format for appending standard output and standard error is:)108 +124.8 Q F1(&>>)144 141.6 Q F2(wor)A(d)-.37 E F0 +(This is semantically equi)108 158.4 Q -.25(va)-.25 G(lent to).25 E F1 +(>>)144 175.2 Q F2(wor)A(d)-.37 E F0(2)2.5 E F1(>&)A F0(1)A(\(see)108 +192 Q F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E F1 +(Her)87 208.8 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of redir\ +ection instructs the shell to read input from the current source until \ +a line containing only)108 220.8 R F2(delimiter)108.35 232.8 Q F0 .615 +(\(with no trailing blanks\) is seen.)3.845 F .615 +(All of the lines read up to that point are then used as the stan-)5.615 +F(dard input \(or \214le descriptor)108 244.8 Q F2(n)2.5 E F0(if)2.5 E +F2(n)2.5 E F0(is speci\214ed\) for a command.)2.5 E +(The format of here-documents is:)108 261.6 Q([)144 278.4 Q F2(n)A F0(]) +A F1(<<)A F0([)A F1A F0(])A F2(wor)A(d)-.37 E(her)164 290.4 Q +(e-document)-.37 E(delimiter)144 302.4 Q F0 .301(No parameter and v)108 +319.2 R .302(ariable e)-.25 F .302 +(xpansion, command substitution, arithmetic e)-.15 F .302 +(xpansion, or pathname e)-.15 F(xpansion)-.15 E .415(is performed on)108 +331.2 R F2(wor)2.915 E(d)-.37 E F0 5.415(.I).77 G 2.915(fa)-5.415 G .715 +-.15(ny p)-2.915 H .415(art of).15 F F2(wor)3.255 E(d)-.37 E F0 .415 +(is quoted, the)3.685 F F2(delimiter)3.265 E F0 .415 +(is the result of quote remo)3.645 F -.25(va)-.15 G 2.915(lo).25 G(n) +-2.915 E F2(wor)2.915 E(d)-.37 E F0(,).77 E .773 +(and the lines in the here-document are not e)108 343.2 R 3.274 +(xpanded. If)-.15 F F2(wor)3.274 E(d)-.37 E F0 .774 +(is unquoted, all lines of the here-document)3.274 F 2.59 +(are subjected to parameter e)108 355.2 R 2.59 +(xpansion, command substitution, and arithmetic e)-.15 F 2.59 +(xpansion, the character)-.15 F(sequence)108 367.2 Q F1(\\)2.5 +E F0(is ignored, and)2.5 E F1(\\)2.5 E F0 +(must be used to quote the characters)2.5 E F1(\\)2.5 E F0(,)A F1($)2.5 +E F0 2.5(,a)C(nd)-2.5 E F1<92>2.5 E F0(.)A .601 +(If the redirection operator is)108 384 R F1(<<\255)3.101 E F0 3.101(,t) +C .601(hen all leading tab characters are stripped from input lines and\ + the line)-3.101 F(containing)108 396 Q F2(delimiter)2.5 E F0 5(.T).73 G +(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 412.8 Q 2.5(eS)-.18 G(trings)-2.5 E F0 +2.5(Av)108 424.8 S(ariant of here documents, the format is:)-2.75 E([) +144 441.6 Q F2(n)A F0(])A F1(<<<)A F2(wor)A(d)-.37 E F0(The)108 458.4 Q +F2(wor)2.894 E(d)-.37 E F0(under)2.894 E .394(goes brace e)-.18 F .393 +(xpansion, tilde e)-.15 F .393(xpansion, parameter and v)-.15 F .393 +(ariable e)-.25 F .393(xpansion, command substi-)-.15 F 2.147 +(tution, arithmetic e)108 470.4 R 2.147(xpansion, and quote remo)-.15 F +-.25(va)-.15 G 4.648(l. P).25 F 2.148(athname e)-.15 F 2.148 +(xpansion and w)-.15 F 2.148(ord splitting are not per)-.1 F(-)-.2 E +2.813(formed. The)108 482.4 R .313 +(result is supplied as a single string, with a ne)2.813 F .312 +(wline appended, to the command on its standard)-.25 F +(input \(or \214le descriptor)108 494.4 Q F2(n)2.5 E F0(if)2.5 E F2(n) +2.5 E F0(is speci\214ed\).)2.5 E F1(Duplicating File Descriptors)87 +511.2 Q F0(The redirection operator)108 523.2 Q([)144 540 Q F2(n)A F0(]) +A F1(<&)A F2(wor)A(d)-.37 E F0 .126 +(is used to duplicate input \214le descriptors.)108 556.8 R(If)5.127 E +F2(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127 +(pands to one or more digits, the \214le descriptor denoted).15 F(by)108 +568.8 Q F2(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G +2.958(ft)-2.958 G .457(hat \214le descriptor)-2.958 F 5.457(.I)-.55 G +2.957(ft)-5.457 G .457(he digits in)-2.957 F F2(wor)3.297 E(d)-.37 E F0 +.457(do not specify a \214le descriptor open)3.727 F .149 +(for input, a redirection error occurs.)108 580.8 R(If)5.149 E F2(wor) +2.989 E(d)-.37 E F0 -.25(eva)3.419 G .149(luates to).25 F F12.649 E +F0 2.65<2c8c>C .15(le descriptor)-2.65 F F2(n)3.01 E F0 .15(is closed.) +2.89 F(If)5.15 E F2(n)3.01 E F0 .15(is not speci\214ed,)2.89 F +(the standard input \(\214le descriptor 0\) is used.)108 592.8 Q +(The operator)108 609.6 Q([)144 626.4 Q F2(n)A F0(])A F1(>&)A F2(wor)A +(d)-.37 E F0 .444 +(is used similarly to duplicate output \214le descriptors.)108 643.2 R +(If)5.444 E F2(n)3.304 E F0 .443 +(is not speci\214ed, the standard output \(\214le descrip-)3.183 F 1.357 +(tor 1\) is used.)108 655.2 R 1.357(If the digits in)6.357 F F2(wor) +4.197 E(d)-.37 E F0 1.358(do not specify a \214le descriptor open for o\ +utput, a redirection error)4.627 F 2.754(occurs. If)108 667.2 R F2(wor) +3.094 E(d)-.37 E F0 -.25(eva)3.524 G .254(luates to).25 F F12.754 E +F0 2.754<2c8c>C .254(le descriptor)-2.754 F F2(n)3.114 E F0 .254 +(is closed.)2.994 F .254(As a special case, if)5.254 F F2(n)2.754 E F0 +.253(is omitted, and)2.754 F F2(wor)2.753 E(d)-.37 E F0(does)2.753 E +.965(not e)108 679.2 R .965(xpand to one or more digits or)-.15 F F1 +3.465 E F0 3.466(,t)C .966 +(he standard output and standard error are redirected as described) +-3.466 F(pre)108 691.2 Q(viously)-.25 E(.)-.65 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(28)192.055 E 0 Cg EP %%Page: 29 29 %%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.3)72 768 Q(2014 February 2)141.79 E(29)190.95 E 0 Cg -EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Mo)87 84 Q(ving File Descriptors)-.1 E F0(The redirection operator) +108 96 Q([)144 112.8 Q/F2 10/Times-Italic@0 SF(n)A F0(])A F1(<&)A F2 +(digit)A F1A F0(mo)108 129.6 Q -.15(ve)-.15 G 3.036(st).15 G .536 +(he \214le descriptor)-3.036 F F2(digit)3.036 E F0 .536 +(to \214le descriptor)3.036 F F2(n)3.036 E F0 3.036(,o).24 G 3.036(rt) +-3.036 G .535(he standard input \(\214le descriptor 0\) if)-3.036 F F2 +(n)3.035 E F0 .535(is not speci-)3.035 F(\214ed.)108 141.6 Q F2(digit)5 +E F0(is closed after being duplicated to)2.5 E F2(n)2.5 E F0(.)A +(Similarly)108 158.4 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([) +144 175.2 Q F2(n)A F0(])A F1(>&)A F2(digit)A F1A F0(mo)108 192 Q +-.15(ve)-.15 G 2.785(st).15 G .285(he \214le descriptor)-2.785 F F2 +(digit)2.785 E F0 .285(to \214le descriptor)2.785 F F2(n)2.785 E F0 +2.785(,o).24 G 2.785(rt)-2.785 G .286 +(he standard output \(\214le descriptor 1\) if)-2.785 F F2(n)2.786 E F0 +.286(is not speci-)2.786 F(\214ed.)108 204 Q F1 +(Opening File Descriptors f)87 220.8 Q(or Reading and Writing)-.25 E F0 +(The redirection operator)108 232.8 Q([)144 249.6 Q F2(n)A F0(])A F1(<>) +A F2(wor)A(d)-.37 E F0 1.349(causes the \214le whose name is the e)108 +266.4 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 278.4 Q F2(n)2.5 E F0 2.5(,o).24 G 2.5(ro)-2.5 G 2.5<6e8c>-2.5 G +(le descriptor 0 if)-2.5 E F2(n)2.86 E F0(is not speci\214ed.)2.74 E +(If the \214le does not e)5 E(xist, it is created.)-.15 E/F3 10.95 +/Times-Bold@0 SF(ALIASES)72 295.2 Q F2(Aliases)108 307.2 Q F0(allo)3.173 +E 3.173(was)-.25 G .674(tring to be substituted for a w)-3.173 F .674 +(ord when it is used as the \214rst w)-.1 F .674 +(ord of a simple command.)-.1 F .394(The shell maintains a list of alia\ +ses that may be set and unset with the)108 319.2 R F1(alias)2.893 E F0 +(and)2.893 E F1(unalias)2.893 E F0 -.2(bu)2.893 G .393(iltin commands).2 +F(\(see)108 331.2 Q/F4 9/Times-Bold@0 SF 1.979(SHELL B)4.479 F(UIL)-.09 +E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E 4.48(w\). The)-.25 F 1.98 +(\214rst w)4.48 F 1.98(ord of each simple command, if unquoted, is)-.1 F +(check)108 343.2 Q .473(ed to see if it has an alias.)-.1 F .473 +(If so, that w)5.473 F .472(ord is replaced by the te)-.1 F .472 +(xt of the alias.)-.15 F .472(The characters)5.472 F F1(/)2.972 E F0(,)A +F1($)2.972 E F0(,)A F1<92>2.972 E F0(,)A(and)108 355.2 Q F1(=)3.611 E F0 +1.111(and an)3.611 F 3.611(yo)-.15 G 3.611(ft)-3.611 G 1.111(he shell) +-3.611 F F2(metac)3.612 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112 +(or quoting characters listed abo)3.612 F 1.412 -.15(ve m)-.15 H 1.112 +(ay not appear in an alias).15 F 3.62(name. The)108 367.2 R 1.12 +(replacement te)3.62 F 1.119(xt may contain an)-.15 F 3.619(yv)-.15 G +1.119(alid shell input, including shell metacharacters.)-3.869 F 1.119 +(The \214rst)6.119 F -.1(wo)108 379.2 S .513(rd of the replacement te).1 +F .513(xt is tested for aliases, b)-.15 F .513(ut a w)-.2 F .514 +(ord that is identical to an alias being e)-.1 F .514(xpanded is)-.15 F +.296(not e)108 391.2 R .296(xpanded a second time.)-.15 F .296 +(This means that one may alias)5.296 F F1(ls)2.796 E F0(to)2.796 E F1 +.296(ls \255F)2.796 F F0 2.796(,f)C .295(or instance, and)-2.796 F F1 +(bash)2.795 E F0 .295(does not try)2.795 F .542(to recursi)108 403.2 R +-.15(ve)-.25 G .542(ly e).15 F .542(xpand the replacement te)-.15 F +3.042(xt. If)-.15 F .543(the last character of the alias v)3.042 F .543 +(alue is a)-.25 F F2(blank)3.043 E F0 3.043(,t).67 G .543(hen the ne) +-3.043 F(xt)-.15 E(command w)108 415.2 Q(ord follo)-.1 E +(wing the alias is also check)-.25 E(ed for alias e)-.1 E(xpansion.)-.15 +E(Aliases are created and listed with the)108 432 Q F1(alias)2.5 E F0 +(command, and remo)2.5 E -.15(ve)-.15 G 2.5(dw).15 G(ith the)-2.5 E F1 +(unalias)2.5 E F0(command.)2.5 E .284 +(There is no mechanism for using ar)108 448.8 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 460.8 Q F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.22 +(Aliases are not e)108 477.6 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 489.6 Q F1(shopt)2.5 E F0 +(\(see the description of)2.5 E F1(shopt)2.5 E F0(under)2.5 E F4 +(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 +E .436 +(The rules concerning the de\214nition and use of aliases are some)108 +506.4 R .435(what confusing.)-.25 F F1(Bash)5.435 E F0(al)2.935 E -.1 +(wa)-.1 G .435(ys reads at least).1 F .337 +(one complete line of input before e)108 518.4 R -.15(xe)-.15 G .338 +(cuting an).15 F 2.838(yo)-.15 G 2.838(ft)-2.838 G .338 +(he commands on that line.)-2.838 F .338(Aliases are e)5.338 F .338 +(xpanded when)-.15 F 3.404(ac)108 530.4 S .904 +(ommand is read, not when it is e)-3.404 F -.15(xe)-.15 G 3.404 +(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 542.4 R 3.662(ee)-.1 G -.25(ff)-3.662 +G 1.162(ect until the ne).25 F 1.162(xt line of input is read.)-.15 F +1.162(The commands follo)6.162 F 1.162(wing the)-.25 F .277 +(alias de\214nition on that line are not af)108 554.4 R .277 +(fected by the ne)-.25 F 2.777(wa)-.25 G 2.777(lias. This)-2.777 F(beha) +2.777 E .277(vior is also an issue when functions)-.2 F .698(are e)108 +566.4 R -.15(xe)-.15 G 3.198(cuted. Aliases).15 F .698(are e)3.198 F +.699(xpanded when a function de\214nition is read, not when the functio\ +n is e)-.15 F -.15(xe)-.15 G(cuted,).15 E .613 +(because a function de\214nition is itself a command.)108 578.4 R .612 +(As a consequence, aliases de\214ned in a function are not)5.612 F -.2 +(av)108 590.4 S .058(ailable until after that function is e)-.05 F -.15 +(xe)-.15 G 2.558(cuted. T).15 F 2.558(ob)-.8 G 2.558(es)-2.558 G .058 +(afe, al)-2.558 F -.1(wa)-.1 G .059 +(ys put alias de\214nitions on a separate line, and).1 F(do not use)108 +602.4 Q F1(alias)2.5 E F0(in compound commands.)2.5 E -.15(Fo)108 619.2 +S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G +(ry purpose, aliases are superseded by shell functions.).15 E F3 +(FUNCTIONS)72 636 Q F0 3.468(As)108 648 S .968 +(hell function, de\214ned as described abo)-3.468 F 1.267 -.15(ve u)-.15 +H(nder).15 E F4 .967(SHELL GRAMMAR)3.467 F/F5 9/Times-Roman@0 SF(,)A F0 +.967(stores a series of commands for)3.217 F 1.001(later e)108 660 R +-.15(xe)-.15 G 3.501(cution. When).15 F 1.002(the name of a shell funct\ +ion is used as a simple command name, the list of com-)3.501 F .316 +(mands associated with that function name is e)108 672 R -.15(xe)-.15 G +2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .315 +(cuted in the conte).15 F .315(xt of the current)-.15 F .035 +(shell; no ne)108 684 R 2.535(wp)-.25 G .036 +(rocess is created to interpret them \(contrast this with the e)-2.535 F +-.15(xe)-.15 G .036(cution of a shell script\).).15 F .036(When a)5.036 +F .64(function is e)108 696 R -.15(xe)-.15 G .64(cuted, the ar).15 F +.639 +(guments to the function become the positional parameters during its e) +-.18 F -.15(xe)-.15 G(cution.).15 E .532(The special parameter)108 708 R +F1(#)3.032 E F0 .532(is updated to re\215ect the change.)3.032 F .532 +(Special parameter)5.532 F F1(0)3.033 E F0 .533(is unchanged.)3.033 F +.533(The \214rst ele-)5.533 F(ment of the)108 720 Q F4(FUNCN)2.5 E(AME) +-.18 E F0 -.25(va)2.25 G +(riable is set to the name of the function while the function is e).25 E +-.15(xe)-.15 G(cuting.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26) +142.895 E(29)192.055 E 0 Cg EP %%Page: 30 30 %%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.3)72 768 Q -(2014 February 2)141.79 E(30)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.25 +(All other aspects of the shell e)108 84 R -.15(xe)-.15 G 1.25 +(cution en).15 F 1.25 +(vironment are identical between a function and its caller with)-.4 F +1.214(these e)108 96 R 1.214(xceptions: the)-.15 F/F1 9/Times-Bold@0 SF +(DEB)3.714 E(UG)-.09 E F0(and)3.464 E/F2 10/Times-Bold@0 SF(RETURN)3.715 +E F0 1.215(traps \(see the description of the)3.715 F F2(trap)3.715 E F0 +-.2(bu)3.715 G 1.215(iltin under).2 F F1(SHELL)3.715 E -.09(BU)108 108 S +(IL).09 E .479(TIN COMMANDS)-.828 F F0(belo)2.729 E .479 +(w\) are not inherited unless the function has been gi)-.25 F -.15(ve) +-.25 G 2.978(nt).15 G(he)-2.978 E F2(trace)2.978 E F0(attrib)2.978 E +.478(ute \(see)-.2 F .42(the description of the)108 120 R F1(declar)2.92 +E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the)-.25 F +F2 .42(\255o functrace)2.92 F F0 .42 +(shell option has been enabled with the)2.92 F F2(set)2.921 E F0 -.2(bu) +108 132 S .072(iltin \(in which case all functions inherit the).2 F F2 +(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F2(RETURN)2.572 E F0 .072 +(traps\), and the)2.572 F F1(ERR)2.571 E F0 .071(trap is not inher)2.321 +F(-)-.2 E(ited unless the)108 144 Q F2(\255o errtrace)2.5 E F0 +(shell option has been enabled.)2.5 E -1.11(Va)108 160.8 S .655 +(riables local to the function may be declared with the)1.11 F F2(local) +3.155 E F0 -.2(bu)3.156 G .656(iltin command.).2 F(Ordinarily)5.656 E +3.156(,v)-.65 G .656(ariables and)-3.406 F(their v)108 172.8 Q +(alues are shared between the function and its caller)-.25 E(.)-.55 E +(The)108 189.6 Q F2(FUNCNEST)3.529 E F0 -.25(va)3.529 G 1.028 +(riable, if set to a numeric v).25 F 1.028 +(alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108 +201.6 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G +(cations that e).2 E(xceed the limit cause the entire command to abort.) +-.15 E .043(If the b)108 218.4 R .043(uiltin command)-.2 F F2 -.18(re) +2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043 +(cuted in a function, the function completes and e).15 F -.15(xe)-.15 G +.044(cution resumes with).15 F 1.012(the ne)108 230.4 R 1.012 +(xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G +1.011(ommand associated with the)-3.511 F F2(RETURN)3.511 E F0 1.011 +(trap is e)3.511 F -.15(xe)-.15 G(cuted).15 E .213(before e)108 242.4 R +-.15(xe)-.15 G .213(cution resumes.).15 F .213 +(When a function completes, the v)5.213 F .214 +(alues of the positional parameters and the spe-)-.25 F(cial parameter) +108 254.4 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E +2.5(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe) +-2.65 G(cution.).15 E 1.359 +(Function names and de\214nitions may be listed with the)108 271.2 R F2 +3.858 E F0 1.358(option to the)3.858 F F2(declar)3.858 E(e)-.18 E +F0(or)3.858 E F2(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F +3.39(mands. The)108 283.2 R F23.39 E F0 .89(option to)3.39 F F2 +(declar)3.39 E(e)-.18 E F0(or)3.39 E F2(typeset)3.39 E F0 .89 +(will list the function names only \(and optionally the source)3.39 F +.327(\214le and line number)108 295.2 R 2.827(,i)-.4 G 2.827(ft)-2.827 G +(he)-2.827 E F2(extdeb)2.827 E(ug)-.2 E F0 .326 +(shell option is enabled\).)2.827 F .326(Functions may be e)5.326 F .326 +(xported so that subshells)-.15 F 1.297(automatically ha)108 307.2 R +1.597 -.15(ve t)-.2 H 1.297(hem de\214ned with the).15 F F23.797 E +F0 1.297(option to the)3.797 F F2(export)3.798 E F0 -.2(bu)3.798 G 3.798 +(iltin. A).2 F 1.298(function de\214nition may be)3.798 F .161 +(deleted using the)108 319.2 R F22.661 E F0 .161(option to the) +2.661 F F2(unset)2.661 E F0 -.2(bu)2.661 G 2.661(iltin. Note).2 F .16 +(that shell functions and v)2.661 F .16(ariables with the same name)-.25 +F 1.325(may result in multiple identically-named entries in the en)108 +331.2 R 1.325(vironment passed to the shell')-.4 F 3.825(sc)-.55 G 3.825 +(hildren. Care)-3.825 F(should be tak)108 343.2 Q +(en in cases where this may cause a problem.)-.1 E .372 +(Functions may be recursi)108 360 R -.15(ve)-.25 G 5.371(.T).15 G(he) +-5.371 E F2(FUNCNEST)2.871 E F0 -.25(va)2.871 G .371 +(riable may be used to limit the depth of the function call).25 F 1.141 +(stack and restrict the number of function in)108 372 R -.2(vo)-.4 G +3.641(cations. By).2 F(def)3.641 E 1.141 +(ault, no limit is imposed on the number of)-.1 F(recursi)108 384 Q .3 +-.15(ve c)-.25 H(alls.).15 E/F3 10.95/Times-Bold@0 SF(ARITHMETIC EV)72 +400.8 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.298 +(The shell allo)108 412.8 R 2.297(ws arithmetic e)-.25 F 2.297 +(xpressions to be e)-.15 F -.25(va)-.25 G 2.297 +(luated, under certain circumstances \(see the).25 F F2(let)4.797 E F0 +(and)4.797 E F2(declar)108 424.8 Q(e)-.18 E F0 -.2(bu)2.683 G .183 +(iltin commands, the).2 F F2(\(\()2.683 E F0 .183(compound command, and) +2.683 F F2 .183(Arithmetic Expansion)2.683 F F0 2.683(\). Ev)B .183 +(aluation is done in)-.25 F<8c78>108 436.8 Q 1.058(ed-width inte)-.15 F +1.057(gers with no check for o)-.15 F -.15(ve)-.15 G(r\215o).15 E 2.357 +-.65(w, t)-.25 H 1.057(hough di).65 F 1.057 +(vision by 0 is trapped and \215agged as an error)-.25 F(.)-.55 E .828 +(The operators and their precedence, associati)108 448.8 R(vity)-.25 E +3.329(,a)-.65 G .829(nd v)-3.329 F .829 +(alues are the same as in the C language.)-.25 F .829(The fol-)5.829 F +(lo)108 460.8 Q .44(wing list of operators is grouped into le)-.25 F +-.15(ve)-.25 G .439(ls of equal-precedence operators.).15 F .439(The le) +5.439 F -.15(ve)-.25 G .439(ls are listed in order).15 F +(of decreasing precedence.)108 472.8 Q/F4 10/Times-Italic@0 SF(id)108 +489.6 Q F2(++)A F4(id)2.5 E F2A F0 -.25(va)144 501.6 S +(riable post-increment and post-decrement).25 E F2(++)108 513.6 Q F4(id) +A F22.5 E F4(id)A F0 -.25(va)144 525.6 S +(riable pre-increment and pre-decrement).25 E F2 2.5108 537.6 S F0 +(unary minus and plus)144 537.6 Q F2 2.5(!~)108 549.6 S F0 +(logical and bitwise ne)144 549.6 Q -.05(ga)-.15 G(tion).05 E F2(**)108 +561.6 Q F0 -.15(ex)144 561.6 S(ponentiation).15 E F2 2.5(*/%)108 573.6 S +F0(multiplication, di)144 573.6 Q(vision, remainder)-.25 E F2 2.5<2bad> +108 585.6 S F0(addition, subtraction)144 585.6 Q F2(<< >>)108 597.6 Q F0 +(left and right bitwise shifts)144 597.6 Q F2(<= >= < >)108 609.6 Q F0 +(comparison)144 621.6 Q F2(== !=)108 633.6 Q F0(equality and inequality) +144 633.6 Q F2(&)108 645.6 Q F0(bitwise AND)144 645.6 Q F2(^)108 657.6 Q +F0(bitwise e)144 657.6 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|) +108 669.6 Q F0(bitwise OR)144 669.6 Q F2(&&)108 681.6 Q F0(logical AND) +144 681.6 Q F2(||)108 693.6 Q F0(logical OR)144 693.6 Q F4 -.2(ex)108 +705.6 S(pr).2 E F2(?)A F4 -.2(ex)C(pr).2 E F2(:)A F4 -.2(ex)C(pr).2 E F0 +(conditional operator)144 717.6 Q(GNU Bash 4.4)72 768 Q(2016 August 26) +142.895 E(30)192.055 E 0 Cg EP %%Page: 31 31 %%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.3)72 768 -Q(2014 February 2)141.79 E(31)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF 2.5(=*)108 84 S 2.5(=/)-2.5 G 2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad> +-2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=)-2.5 E F0(assignment)144 96 Q/F2 10 +/Times-Italic@0 SF -.2(ex)108 108 S(pr1).2 E F1(,)2.5 E F2 -.2(ex)2.5 G +(pr2).2 E F0(comma)144 120 Q .68(Shell v)108 136.8 R .68 +(ariables are allo)-.25 F .68(wed as operands; parameter e)-.25 F .68 +(xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F +-.25(va)-.25 G(lu-).25 E 3.508(ated. W)108 148.8 R 1.008(ithin an e)-.4 +F 1.008(xpression, shell v)-.15 F 1.007 +(ariables may also be referenced by name without using the parameter) +-.25 F -.15(ex)108 160.8 S 1.04(pansion syntax.).15 F 3.54(As)6.04 G +1.04(hell v)-3.54 F 1.04(ariable that is null or unset e)-.25 F -.25(va) +-.25 G 1.041(luates to 0 when referenced by name without).25 F 1.467 +(using the parameter e)108 172.8 R 1.467(xpansion syntax.)-.15 F 1.467 +(The v)6.467 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25 +(va)-.25 G 1.466(luated as an arithmetic e).25 F(xpression)-.15 E 1.389 +(when it is referenced, or when a v)108 184.8 R 1.389 +(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.89(nt).15 G(he)-3.89 +E F2(inte)3.89 E -.1(ge)-.4 G(r).1 E F0(attrib)3.89 E 1.39(ute using)-.2 +F F1(declar)3.89 E 3.89(e-)-.18 G(i)-3.89 E F0(is)3.89 E .333 +(assigned a v)108 196.8 R 2.832(alue. A)-.25 F .332(null v)2.832 F .332 +(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832(As)5.332 G +.332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632 -.15(ve i)-.2 +H(ts).15 E F2(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib)2.832 E .332 +(ute turned on)-.2 F(to be used in an e)108 208.8 Q(xpression.)-.15 E +1.406(Constants with a leading 0 are interpreted as octal numbers.)108 +225.6 R 3.906(Al)6.406 G 1.407(eading 0x or 0X denotes he)-3.906 F +(xadecimal.)-.15 E .113(Otherwise, numbers tak)108 237.6 R 2.613(et)-.1 +G .113(he form [)-2.613 F F2(base#)A F0 .112(]n, where the optional)B F2 +(base)2.612 E F0 .112(is a decimal number between 2 and 64)2.612 F .533 +(representing the arithmetic base, and)108 249.6 R F2(n)3.033 E F0 .533 +(is a number in that base.)3.033 F(If)5.534 E F2(base#)3.034 E F0 .534 +(is omitted, then base 10 is used.)3.034 F .513(When specifying)108 +261.6 R F2(n)3.013 E F0 3.013(,t)C .513 +(he digits greater than 9 are represented by the lo)-3.013 F .512 +(wercase letters, the uppercase letters,)-.25 F .942 +(@, and _, in that order)108 273.6 R 5.942(.I)-.55 G(f)-5.942 E F2(base) +3.442 E F0 .942(is less than or equal to 36, lo)3.442 F .943 +(wercase and uppercase letters may be used)-.25 F +(interchangeably to represent numbers between 10 and 35.)108 285.6 Q +.235(Operators are e)108 302.4 R -.25(va)-.25 G .235 +(luated in order of precedence.).25 F(Sub-e)5.234 E .234 +(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .234 +(luated \214rst and may).25 F -.15(ove)108 314.4 S +(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95 +/Times-Bold@0 SF(CONDITION)72 331.2 Q(AL EXPRESSIONS)-.219 E F0 .255 +(Conditional e)108 343.2 R .255(xpressions are used by the)-.15 F F1([[) +2.755 E F0 .255(compound command and the)2.755 F F1(test)2.755 E F0(and) +2.755 E F1([)2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F +.77(\214le attrib)108 355.2 R .77 +(utes and perform string and arithmetic comparisons.)-.2 F .77 +(Expressions are formed from the follo)5.77 F(wing)-.25 E .426 +(unary or binary primaries.)108 367.2 R F1(Bash)5.426 E F0 .426 +(handles se)2.926 F -.15(ve)-.25 G .426 +(ral \214lenames specially when the).15 F 2.926(ya)-.15 G .426 +(re used in e)-2.926 F 2.926(xpressions. If)-.15 F .193 +(the operating system on which)108 379.2 R F1(bash)2.693 E F0 .193 +(is running pro)2.693 F .193 +(vides these special \214les, bash will use them; otherwise it)-.15 F +.589(will emulate them internally with this beha)108 391.2 R .589 +(vior: If an)-.2 F(y)-.15 E F2(\214le)3.089 E F0(ar)3.089 E .589 +(gument to one of the primaries is of the form)-.18 F F2(/de)108 403.2 Q +(v/fd/n)-.15 E F0 2.917(,t)C .417(hen \214le descriptor)-2.917 F F2(n) +2.917 E F0 .417(is check)2.917 F 2.917(ed. If)-.1 F(the)2.917 E F2 +(\214le)2.917 E F0(ar)2.917 E .417 +(gument to one of the primaries is one of)-.18 F F2(/de)2.916 E(v/stdin) +-.15 E F0(,)A F2(/de)108 415.2 Q(v/stdout)-.15 E F0 2.5(,o)C(r)-2.5 E F2 +(/de)2.5 E(v/stderr)-.15 E F0 2.5<2c8c>C +(le descriptor 0, 1, or 2, respecti)-2.5 E -.15(ve)-.25 G(ly).15 E 2.5 +(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .721 +(Unless otherwise speci\214ed, primaries that operate on \214les follo) +108 432 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar) +-3.221 F(get)-.18 E(of the link, rather than the link itself.)108 444 Q +1.096(When used with)108 462 R F1([[)3.596 E F0 3.596(,t)C(he)-3.596 E +F1(<)3.596 E F0(and)3.595 E F1(>)3.595 E F0 1.095(operators sort le) +3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.095 +E F1(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108 +474 Q F1108 498 Q F2(\214le)2.5 E F0 -.35(Tr)144 498 S(ue if).35 E +F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1108 510 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 510 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a block special \214le.).15 E F1108 522 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 522 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a character special \214le.).15 E F1108 534 +Q F2(\214le)2.5 E F0 -.35(Tr)144 534 S(ue if).35 E F2(\214le)2.5 E F0 +-.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F1108 546 Q +F2(\214le)2.5 E F0 -.35(Tr)144 546 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists.).15 E F1108 558 Q F2(\214le)2.5 E F0 -.35(Tr)144 +558 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a re).15 +E(gular \214le.)-.15 E F1108 570 Q F2(\214le)2.5 E F0 -.35(Tr)144 +570 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is set-group-id.).15 E F1108 582 Q F2(\214le)2.5 E F0 +-.35(Tr)144 582 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a symbolic link.).15 E F1108 594 Q F2(\214le)2.5 E F0 +-.35(Tr)144 594 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G(it is set.) +-2.5 E F1108 606 Q F2(\214le)2.5 E F0 -.35(Tr)144 606 S(ue if).35 +E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a named pipe \(FIFO\).) +.15 E F1108 618 Q F2(\214le)2.5 E F0 -.35(Tr)144 618 S(ue if).35 E +F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is readable.).15 E F1108 +630 Q F2(\214le)2.5 E F0 -.35(Tr)144 630 S(ue if).35 E F2(\214le)2.5 E +F0 -.15(ex)2.5 G(ists and has a size greater than zero.).15 E F1 +108 642 Q F2(fd)2.5 E F0 -.35(Tr)144 642 S(ue if \214le descriptor).35 E +F2(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F1108 654 +Q F2(\214le)2.5 E F0 -.35(Tr)144 654 S(ue if).35 E F2(\214le)2.5 E F0 +-.15(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F1 +108 666 Q F2(\214le)2.5 E F0 -.35(Tr)144 666 S(ue if).35 E F2(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is writable.).15 E F1108 678 Q F2 +(\214le)2.5 E F0 -.35(Tr)144 678 S(ue if).35 E F2(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F1108 +690 Q F2(\214le)2.5 E F0 -.35(Tr)144 690 S(ue if).35 E F2(\214le)2.5 E +F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E(fecti)-.25 E +.3 -.15(ve g)-.25 H(roup id.).15 E F1108 702 Q F2(\214le)2.5 E F0 +-.35(Tr)144 702 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a symbolic link.).15 E F1108 714 Q F2(\214le)2.5 E F0 +-.35(Tr)144 714 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(31)192.055 E 0 Cg EP %%Page: 32 32 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 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.3)72 768 Q(2014 February 2)141.79 E(32)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF108 84 Q/F2 10/Times-Italic@0 SF(\214le)2.5 E F0 -.35(Tr)144 84 +S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E +(wned by the ef)-.25 E(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F1 +108 96 Q F2(\214le)2.5 E F0 -.35(Tr)144 96 S(ue if).35 E F2 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2 +(\214le1)108 108 Q F1(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 120 S +(ue if).35 E F2(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0 +(refer to the same de)2.5 E(vice and inode numbers.)-.25 E F2(\214le1) +108 132 Q F02.5 E F1(nt)A F2(\214le2)2.5 E F0 -.35(Tr)144 144 S +(ue if).35 E F2(\214le1)2.5 E F0(is ne)2.5 E +(wer \(according to modi\214cation date\) than)-.25 E F2(\214le2)2.5 E +F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0 -.15(ex)2.5 G +(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2(\214le1)108 156 Q +F02.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144 168 S(ue if).35 E F2 +(\214le1)2.5 E F0(is older than)2.5 E F2(\214le2)2.5 E F0 2.5(,o)C 2.5 +(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 -.15(ex)2.5 G(ists and).15 E F2 +(\214le1)2.5 E F0(does not.)2.5 E F1108 180 Q F2(optname)2.5 E F0 +-.35(Tr)144 192 S .262(ue if the shell option).35 F F2(optname)2.992 E +F0 .262(is enabled.)2.942 F .262 +(See the list of options under the description of the)5.262 F F1 +2.763 E F0(option to the)144 204 Q F1(set)2.5 E F0 -.2(bu)2.5 G +(iltin belo).2 E -.65(w.)-.25 G F1108 216 Q F2(varname)2.5 E F0 +-.35(Tr)144 228 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79 +E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F1108 +240 Q F2(varname)2.5 E F0 -.35(Tr)144 252 S(ue if the shell v).35 E +(ariable)-.25 E F2(varname)2.79 E F0(is set and is a name reference.) +2.68 E F1108 264 Q F2(string)2.5 E F0 -.35(Tr)144 276 S +(ue if the length of).35 E F2(string)2.5 E F0(is zero.)2.5 E F2(string) +108 288 Q F1108 300 Q F2(string)2.5 E F0 -.35(Tr)144 312 S +(ue if the length of).35 E F2(string)2.84 E F0(is non-zero.)2.72 E F2 +(string1)108 328.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 340.8 Q F1 +(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 352.8 S .862 +(ue if the strings are equal.).35 F F1(=)5.861 E F0 .861 +(should be used with the)3.361 F F1(test)3.361 E F0 .861 +(command for POSIX conformance.)3.361 F .446(When used with the)144 +364.8 R F1([[)2.946 E F0 .446 +(command, this performs pattern matching as described abo)2.946 F .747 +-.15(ve \()-.15 H F1(Compound).15 E(Commands)144 376.8 Q F0(\).)A F2 +(string1)108 393.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 405.6 S +(ue if the strings are not equal.).35 E F2(string1)108 422.4 Q F1(<)2.5 +E F2(string2)2.5 E F0 -.35(Tr)144 434.4 S(ue if).35 E F2(string1)2.5 E +F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15 +E(.)-.65 E F2(string1)108 451.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 +(Tr)144 463.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2 +(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(ar)108.33 +480 Q(g1)-.37 E F1(OP)2.5 E F2(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF +(OP)144 492 Q F0 .385(is one of)2.635 F F1(\255eq)2.885 E F0(,)A F1 +(\255ne)2.885 E F0(,)A F1(\255lt)2.885 E F0(,)A F1(\255le)2.885 E F0(,)A +F1(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F1(\255ge)2.885 E F0 5.385 +(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F2 +(ar)2.884 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\ +s than or equal to, greater than, or greater than or equal to)144 504 R +F2(ar)144 516 Q(g2)-.37 E F0 2.5(,r)C(especti)-2.5 E -.15(ve)-.25 G(ly) +.15 E(.)-.65 E F2(Ar)6.01 E(g1)-.37 E F0(and)2.5 E F2(ar)2.83 E(g2)-.37 +E F0(may be positi)2.52 E .3 -.15(ve o)-.25 H 2.5(rn).15 G -2.25 -.15 +(eg a)-2.5 H(ti).15 E .3 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E/F4 +10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 532.8 Q(ANSION)-.81 E F0 +.614(When a simple command is e)108 544.8 R -.15(xe)-.15 G .614 +(cuted, the shell performs the follo).15 F .613(wing e)-.25 F .613 +(xpansions, assignments, and redi-)-.15 F(rections, from left to right.) +108 556.8 Q(1.)108 573.6 Q 1.848(The w)144 573.6 R 1.848 +(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.849 +(ariable assignments \(those preceding the command)-.25 F +(name\) and redirections are sa)144 585.6 Q -.15(ve)-.2 G 2.5(df).15 G +(or later processing.)-2.5 E(2.)108 602.4 Q 1.164(The w)144 602.4 R +1.164(ords that are not v)-.1 F 1.164 +(ariable assignments or redirections are e)-.25 F 3.663(xpanded. If)-.15 +F(an)3.663 E 3.663(yw)-.15 G 1.163(ords remain)-3.763 F .775(after e)144 +614.4 R .775(xpansion, the \214rst w)-.15 F .775(ord is tak)-.1 F .775 +(en to be the name of the command and the remaining w)-.1 F(ords)-.1 E +(are the ar)144 626.4 Q(guments.)-.18 E(3.)108 643.2 Q +(Redirections are performed as described abo)144 643.2 Q .3 -.15(ve u) +-.15 H(nder).15 E F3(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0(4.) +108 660 Q .717(The te)144 660 R .717(xt after the)-.15 F F1(=)3.217 E F0 +.717(in each v)3.217 F .717(ariable assignment under)-.25 F .717 +(goes tilde e)-.18 F .717(xpansion, parameter e)-.15 F(xpansion,)-.15 E +.339(command substitution, arithmetic e)144 672 R .339 +(xpansion, and quote remo)-.15 F -.25(va)-.15 G 2.839(lb).25 G .339 +(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 684 Q .332 +(If no command name results, the v)108 700.8 R .332 +(ariable assignments af)-.25 F .332(fect the current shell en)-.25 F +2.832(vironment. Otherwise,)-.4 F(the)2.832 E -.25(va)108 712.8 S .757 +(riables are added to the en).25 F .757(vironment of the e)-.4 F -.15 +(xe)-.15 G .757(cuted command and do not af).15 F .757 +(fect the current shell en)-.25 F(vi-)-.4 E 3.177(ronment. If)108 724.8 +R(an)3.177 E 3.177(yo)-.15 G 3.177(ft)-3.177 G .677 +(he assignments attempts to assign a v)-3.177 F .677 +(alue to a readonly v)-.25 F .676(ariable, an error occurs, and)-.25 F +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(32)192.055 E 0 Cg EP %%Page: 33 33 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 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.3)72 768 Q(2014 February 2) -141.79 E(33)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(the command e)108 +84 Q(xits with a non-zero status.)-.15 E .149 +(If no command name results, redirections are performed, b)108 100.8 R +.149(ut do not af)-.2 F .15(fect the current shell en)-.25 F 2.65 +(vironment. A)-.4 F(redirection error causes the command to e)108 112.8 +Q(xit with a non-zero status.)-.15 E 1.064 +(If there is a command name left after e)108 129.6 R 1.064(xpansion, e) +-.15 F -.15(xe)-.15 G 1.064(cution proceeds as described belo).15 F +4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .068(command e)108 +141.6 R 2.568(xits. If)-.15 F .069(one of the e)2.568 F .069 +(xpansions contained a command substitution, the e)-.15 F .069 +(xit status of the command)-.15 F .467(is the e)108 153.6 R .466 +(xit status of the last command substitution performed.)-.15 F .466 +(If there were no command substitutions, the)5.466 F(command e)108 165.6 +Q(xits with a status of zero.)-.15 E/F1 10.95/Times-Bold@0 SF +(COMMAND EXECUTION)72 182.4 Q F0 .546 +(After a command has been split into w)108 194.4 R .547 +(ords, if it results in a simple command and an optional list of ar)-.1 +F(gu-)-.18 E(ments, the follo)108 206.4 Q(wing actions are tak)-.25 E +(en.)-.1 E .379(If the command name contains no slashes, the shell atte\ +mpts to locate it.)108 223.2 R .379(If there e)5.379 F .379 +(xists a shell function by)-.15 F .246(that name, that function is in) +108 235.2 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G +.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E/F2 9 +/Times-Bold@0 SF(FUNCTIONS)2.746 E/F3 9/Times-Roman@0 SF(.)A F0 .246 +(If the name does not match a func-)4.746 F +(tion, the shell searches for it in the list of shell b)108 247.2 Q 2.5 +(uiltins. If)-.2 F 2.5(am)2.5 G(atch is found, that b)-2.5 E +(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .31 +(If the name is neither a shell function nor a b)108 264 R .309 +(uiltin, and contains no slashes,)-.2 F/F4 10/Times-Bold@0 SF(bash)2.809 +E F0 .309(searches each element of)2.809 F(the)108 276 Q F2 -.666(PA) +3.162 G(TH)-.189 E F0 .662(for a directory containing an e)2.912 F -.15 +(xe)-.15 G .662(cutable \214le by that name.).15 F F4(Bash)5.662 E F0 +.663(uses a hash table to remember)3.162 F 1.915 +(the full pathnames of e)108 288 R -.15(xe)-.15 G 1.915 +(cutable \214les \(see).15 F F4(hash)4.415 E F0(under)4.415 E F2 1.915 +(SHELL B)4.415 F(UIL)-.09 E 1.914(TIN COMMANDS)-.828 F F0(belo)4.164 E +4.414(w\). A)-.25 F(full)4.414 E .719(search of the directories in)108 +300 R F2 -.666(PA)3.219 G(TH)-.189 E F0 .72 +(is performed only if the command is not found in the hash table.)2.969 +F .72(If the)5.72 F .956(search is unsuccessful, the shell searches for\ + a de\214ned shell function named)108 312 R F4(command_not_f)3.455 E +(ound_han-)-.25 E(dle)108 324 Q F0 5.277(.I)C 2.777(ft)-5.277 G .277 +(hat function e)-2.777 F .277(xists, it is in)-.15 F -.2(vo)-.4 G -.1 +(ke).2 G 2.777(dw).1 G .278 +(ith the original command and the original command')-2.777 F 2.778(sa) +-.55 G -.18(rg)-2.778 G(uments).18 E .776(as its ar)108 336 R .776 +(guments, and the function')-.18 F 3.275(se)-.55 G .775 +(xit status becomes the e)-3.425 F .775(xit status of the shell.)-.15 F +.775(If that function is not)5.775 F +(de\214ned, the shell prints an error message and returns an e)108 348 Q +(xit status of 127.)-.15 E 1.089(If the search is successful, or if the\ + command name contains one or more slashes, the shell e)108 364.8 R -.15 +(xe)-.15 G 1.09(cutes the).15 F .198(named program in a separate e)108 +376.8 R -.15(xe)-.15 G .198(cution en).15 F 2.698(vironment. Ar)-.4 F +.198(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197 +(n, and the remain-).15 F(ing ar)108 388.8 Q +(guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15 +(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 405.6 R +-.15(xe)-.15 G 1.809(cution f).15 F 1.809 +(ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.809 +(cutable format, and the \214le is not a directory).15 F 4.309(,i)-.65 G +4.309(ti)-4.309 G(s)-4.309 E .678(assumed to be a)108 417.6 R/F5 10 +/Times-Italic@0 SF .678(shell script)3.178 F F0 3.178(,a\214)C .678 +(le containing shell commands.)-3.178 F 3.178(As)5.678 G .678 +(ubshell is spa)-3.178 F .677(wned to e)-.15 F -.15(xe)-.15 G .677 +(cute it.).15 F(This)5.677 E .329 +(subshell reinitializes itself, so that the ef)108 429.6 R .329 +(fect is as if a ne)-.25 F 2.83(ws)-.25 G .33(hell had been in)-2.83 F +-.2(vo)-.4 G -.1(ke).2 G 2.83(dt).1 G 2.83(oh)-2.83 G .33 +(andle the script, with)-2.83 F 1.219(the e)108 441.6 R 1.219 +(xception that the locations of commands remembered by the parent \(see) +-.15 F F4(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 G(nder)-3.719 E F2 +(SHELL)3.719 E -.09(BU)108 453.6 S(IL).09 E(TIN COMMANDS)-.828 E F3(\))A +F0(are retained by the child.)2.25 E .347(If the program is a \214le be) +108 470.4 R .347(ginning with)-.15 F F4(#!)2.847 E F0 2.847(,t)C .348(h\ +e remainder of the \214rst line speci\214es an interpreter for the pro-) +-2.847 F 3.178(gram. The)108 482.4 R .678(shell e)3.178 F -.15(xe)-.15 G +.678(cutes the speci\214ed interpreter on operating systems that do not\ + handle this e).15 F -.15(xe)-.15 G(cutable).15 E 1.192(format themselv) +108 494.4 R 3.692(es. The)-.15 F(ar)3.693 E 1.193 +(guments to the interpreter consist of a single optional ar)-.18 F 1.193 +(gument follo)-.18 F 1.193(wing the)-.25 F 1.131 +(interpreter name on the \214rst line of the program, follo)108 506.4 R +1.13(wed by the name of the program, follo)-.25 F 1.13(wed by the)-.25 F +(command ar)108 518.4 Q(guments, if an)-.18 E -.65(y.)-.15 G F1 +(COMMAND EXECUTION ENVIR)72 535.2 Q(ONMENT)-.329 E F0(The shell has an) +108 547.2 Q F5 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E(onment)-.45 E F0 +2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 E<83>108 564 Q +1.405(open \214les inherited by the shell at in)144 564 R -.2(vo)-.4 G +1.406(cation, as modi\214ed by redirections supplied to the).2 F F4 +(exec)3.906 E F0 -.2(bu)144 576 S(iltin).2 E<83>108 592.8 Q +(the current w)144 592.8 Q(orking directory as set by)-.1 E F4(cd)2.5 E +F0(,)A F4(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F4(popd)2.5 E F0 2.5(,o)C 2.5 +(ri)-2.5 G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E +<83>108 609.6 Q(the \214le creation mode mask as set by)144 609.6 Q F4 +(umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent) +-2.5 E<83>108 626.4 Q(current traps set by)144 626.4 Q F4(trap)2.5 E F0 +<83>108 643.2 Q .257(shell parameters that are set by v)144 643.2 R .256 +(ariable assignment or with)-.25 F F4(set)2.756 E F0 .256 +(or inherited from the shell')2.756 F 2.756(sp)-.55 G(arent)-2.756 E +(in the en)144 655.2 Q(vironment)-.4 E<83>108 672 Q +(shell functions de\214ned during e)144 672 Q -.15(xe)-.15 G +(cution or inherited from the shell').15 E 2.5(sp)-.55 G +(arent in the en)-2.5 E(vironment)-.4 E<83>108 688.8 Q +(options enabled at in)144 688.8 Q -.2(vo)-.4 G(cation \(either by def) +.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F4(set) +2.5 E F0<83>108 705.6 Q(options enabled by)144 705.6 Q F4(shopt)2.5 E F0 +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(33)192.055 E 0 Cg EP %%Page: 34 34 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 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.3)72 768 Q(2014 February 2)141.79 E(34)190.95 -E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q +(shell aliases de\214ned with)144 84 Q/F1 10/Times-Bold@0 SF(alias)2.5 E +F0<83>108 100.8 Q -.25(va)144 100.8 S +(rious process IDs, including those of background jobs, the v).25 E +(alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E +/F2 9/Times-Bold@0 SF(PPID)2.5 E F0 .426 +(When a simple command other than a b)108 117.6 R .427 +(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427 +(cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.927(di).1 G 2.927(nas) +-2.927 G(eparate)-2.927 E -.15(exe)108 129.6 S .134(cution en).15 F .134 +(vironment that consists of the follo)-.4 F 2.634(wing. Unless)-.25 F +.133(otherwise noted, the v)2.634 F .133(alues are inherited from)-.25 F +(the shell.)108 141.6 Q<83>108 158.4 Q 1.055(the shell')144 158.4 R +3.555(so)-.55 G 1.055(pen \214les, plus an)-3.555 F 3.556(ym)-.15 G +1.056 +(odi\214cations and additions speci\214ed by redirections to the com-) +-3.556 F(mand)144 170.4 Q<83>108 187.2 Q(the current w)144 187.2 Q +(orking directory)-.1 E<83>108 204 Q(the \214le creation mode mask)144 +204 Q<83>108 220.8 Q .857(shell v)144 220.8 R .857 +(ariables and functions mark)-.25 F .857(ed for e)-.1 F .857 +(xport, along with v)-.15 F .857(ariables e)-.25 F .857 +(xported for the command,)-.15 F(passed in the en)144 232.8 Q(vironment) +-.4 E<83>108 249.6 Q .306(traps caught by the shell are reset to the v) +144 249.6 R .307(alues inherited from the shell')-.25 F 2.807(sp)-.55 G +.307(arent, and traps ignored)-2.807 F(by the shell are ignored)144 +261.6 Q 2.5(Ac)108 278.4 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5 +(di).1 G 2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E +(fect the shell')-.25 E 2.5(se)-.55 G -.15(xe)-2.65 G(cution en).15 E +(vironment.)-.4 E .577(Command substitution, commands grouped with pare\ +ntheses, and asynchronous commands are in)108 295.2 R -.2(vo)-.4 G -.1 +(ke).2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 307.2 S .244(ubshell en) +-2.744 F .244(vironment that is a duplicate of the shell en)-.4 F .245 +(vironment, e)-.4 F .245(xcept that traps caught by the shell are)-.15 F +.359(reset to the v)108 319.2 R .358 +(alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4 +G 2.858(cation. Builtin).2 F .358(commands that are in)2.858 F -.2(vo) +-.4 G -.1(ke).2 G(d).1 E .856(as part of a pipeline are also e)108 331.2 +R -.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357 +(vironment. Changes)-.4 F .857(made to the subshell en)3.357 F(viron-) +-.4 E(ment cannot af)108 343.2 Q(fect the shell')-.25 E 2.5(se)-.55 G +-.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.377(Subshells spa)108 +360 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377 +(cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F +F13.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When) +108 372 R(not in)2.5 E/F3 10/Times-Italic@0 SF(posix)2.5 E F0(mode,)2.5 +E F1(bash)2.5 E F0(clears the)2.5 E F12.5 E F0 +(option in such subshells.)2.5 E .404(If a command is follo)108 388.8 R +.404(wed by a)-.25 F F1(&)2.904 E F0 .405(and job control is not acti) +2.904 F -.15(ve)-.25 G 2.905(,t).15 G .405(he def)-2.905 F .405 +(ault standard input for the command)-.1 F .198(is the empty \214le)108 +400.8 R F3(/de)2.698 E(v/null)-.15 E F0 5.198(.O)C .198 +(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc).1 G .197 +(ommand inherits the \214le descriptors of the calling shell)-2.698 F +(as modi\214ed by redirections.)108 412.8 Q/F4 10.95/Times-Bold@0 SF +(ENVIR)72 429.6 Q(ONMENT)-.329 E F0 2.353(When a program is in)108 441.6 +R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G 4.853(ti)-4.853 G 4.853(sg) +-4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na).25 G 4.853(na)-4.853 G 2.353 +(rray of strings called the)-4.853 F F3(en)4.853 E(vir)-.4 E(onment)-.45 +E F0 7.353(.T).68 G 2.354(his is a list of)-7.353 F F3(name)108 453.6 Q +F0A F3(value)A F0(pairs, of the form)2.5 E F3(name)2.5 E F0(=)A F3 +(value)A F0(.).18 E 1.486(The shell pro)108 470.4 R 1.486(vides se)-.15 +F -.15(ve)-.25 G 1.486(ral w).15 F 1.485(ays to manipulate the en)-.1 F +3.985(vironment. On)-.4 F(in)3.985 E -.2(vo)-.4 G 1.485 +(cation, the shell scans its o).2 F(wn)-.25 E(en)108 482.4 Q .144(viron\ +ment and creates a parameter for each name found, automatically marking\ + it for)-.4 F F3 -.2(ex)2.644 G(port).2 E F0 .144(to child pro-)3.324 F +2.704(cesses. Ex)108 494.4 R .203(ecuted commands inherit the en)-.15 F +2.703(vironment. The)-.4 F F1(export)2.703 E F0(and)2.703 E F1(declar) +2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.703 +(wp)-.25 G(aram-)-2.703 E 1.153 +(eters and functions to be added to and deleted from the en)108 506.4 R +3.653(vironment. If)-.4 F 1.153(the v)3.653 F 1.154 +(alue of a parameter in the)-.25 F(en)108 518.4 Q .64 +(vironment is modi\214ed, the ne)-.4 F 3.14(wv)-.25 G .64 +(alue becomes part of the en)-3.39 F .64(vironment, replacing the old.) +-.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 530.4 +R 3.08(ye)-.15 G -.15(xe)-3.23 G .58 +(cuted command consists of the shell').15 F 3.08(si)-.55 G .58 +(nitial en)-3.08 F .58(vironment, whose v)-.4 F .58(alues may be)-.25 F +.301(modi\214ed in the shell, less an)108 542.4 R 2.801(yp)-.15 G .301 +(airs remo)-2.801 F -.15(ve)-.15 G 2.801(db).15 G 2.801(yt)-2.801 G(he) +-2.801 E F1(unset)2.801 E F0 .3(command, plus an)2.8 F 2.8(ya)-.15 G .3 +(dditions via the)-2.8 F F1(export)2.8 E F0(and)2.8 E F1(declar)108 +554.4 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .562(The en)108 +571.2 R .562(vironment for an)-.4 F(y)-.15 E F3 .562(simple command) +3.402 F F0 .563 +(or function may be augmented temporarily by pre\214xing it with)3.833 F +.203(parameter assignments, as described abo)108 583.2 R .502 -.15(ve i) +-.15 H(n).15 E F2 -.666(PA)2.702 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF +(.)A F0 .202(These assignment statements af)4.702 F .202(fect only the) +-.25 F(en)108 595.2 Q(vironment seen by that command.)-.4 E .81(If the) +108 612 R F13.31 E F0 .81(option is set \(see the)3.31 F F1(set) +3.31 E F0 -.2(bu)3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F +F3(all)3.64 E F0 .81(parameter assignments are placed in)3.82 F(the en) +108 624 Q +(vironment for a command, not just those that precede the command name.) +-.4 E(When)108 640.8 Q F1(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1 +(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 652.8 Q(vironment.)-.4 E F4 +(EXIT ST)72 669.6 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 681.6 R +.15(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v) +.15 F .151(alue returned by the)-.25 F F3(waitpid)2.651 E F0 .151 +(system call or equi)2.651 F -.25(va)-.25 G .151(lent func-).25 F 2.848 +(tion. Exit)108 693.6 R .348(statuses f)2.848 F .347 +(all between 0 and 255, though, as e)-.1 F .347(xplained belo)-.15 F +1.647 -.65(w, t)-.25 H .347(he shell may use v).65 F .347(alues abo)-.25 +F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 705.6 Q 5.506(.E)-.65 G +.506(xit statuses from shell b)-5.506 F .507 +(uiltins and compound commands are also limited to this range.)-.2 F +(Under)5.507 E(certain circumstances, the shell will use special v)108 +717.6 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(34)192.055 E 0 Cg EP %%Page: 35 35 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 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.3)72 768 Q -(2014 February 2)141.79 E(35)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(Fo)108 84 S +3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G .873 +(urposes, a command which e)-3.373 F .873(xits with a zero e)-.15 F .873 +(xit status has succeeded.)-.15 F .872(An e)5.872 F .872(xit status of) +-.15 F .048(zero indicates success.)108 96 R 2.548(An)5.048 G .049 +(on-zero e)-2.548 F .049(xit status indicates f)-.15 F 2.549 +(ailure. When)-.1 F 2.549(ac)2.549 G .049(ommand terminates on a f) +-2.549 F .049(atal sig-)-.1 F(nal)108 108 Q/F1 10/Times-Italic@0 SF(N) +2.5 E F0(,)A/F2 10/Times-Bold@0 SF(bash)2.5 E F0(uses the v)2.5 E +(alue of 128+)-.25 E F1(N)A F0(as the e)2.5 E(xit status.)-.15 E .405 +(If a command is not found, the child process created to e)108 124.8 R +-.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .404 +(If a command is)5.404 F(found b)108 136.8 Q(ut is not e)-.2 E -.15(xe) +-.15 G(cutable, the return status is 126.).15 E(If a command f)108 153.6 +Q(ails because of an error during e)-.1 E +(xpansion or redirection, the e)-.15 E(xit status is greater than zero.) +-.15 E .08(Shell b)108 170.4 R .08 +(uiltin commands return a status of 0 \()-.2 F F1(true)A F0 2.581(\)i)C +2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F1(false)A F0 +2.581(\)i)C 2.581(fa)-2.581 G 2.581(ne)-2.581 G .081(rror occurs while) +-2.581 F(the)108 182.4 Q 2.968(ye)-.15 G -.15(xe)-3.118 G 2.968 +(cute. All).15 F -.2(bu)2.968 G .468(iltins return an e).2 F .468 +(xit status of 2 to indicate incorrect usage, generally in)-.15 F -.25 +(va)-.4 G .467(lid options or).25 F(missing ar)108 194.4 Q(guments.)-.18 +E F2(Bash)108 211.2 Q F0 .201(itself returns the e)2.701 F .202 +(xit status of the last command e)-.15 F -.15(xe)-.15 G .202 +(cuted, unless a syntax error occurs, in which case).15 F(it e)108 223.2 +Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F2 +(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G/F3 +10.95/Times-Bold@0 SF(SIGN)72 240 Q(ALS)-.219 E F0(When)108 252 Q F2 +(bash)3.183 E F0 .683(is interacti)3.183 F -.15(ve)-.25 G 3.183(,i).15 G +3.183(nt)-3.183 G .683(he absence of an)-3.183 F 3.183(yt)-.15 G .683 +(raps, it ignores)-3.183 F/F4 9/Times-Bold@0 SF(SIGTERM)3.183 E F0 .682 +(\(so that)2.933 F F2 .682(kill 0)3.182 F F0 .682(does not kill an)3.182 +F(interacti)108 264 Q .757 -.15(ve s)-.25 H .457(hell\), and).15 F F4 +(SIGINT)2.957 E F0 .458(is caught and handled \(so that the)2.707 F F2 +(wait)2.958 E F0 -.2(bu)2.958 G .458(iltin is interruptible\).).2 F .458 +(In all cases,)5.458 F F2(bash)108 276 Q F0(ignores)2.5 E F4(SIGQ)2.5 E +(UIT)-.09 E/F5 9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E +(fect,)-.25 E F2(bash)2.5 E F0(ignores)2.5 E F4(SIGTTIN)2.5 E F5(,)A F4 +(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4(SIGTSTP)2.5 E F5(.)A F0 +(Non-b)108 292.8 Q 1.065(uiltin commands run by)-.2 F F2(bash)3.565 E F0 +(ha)3.565 E 1.365 -.15(ve s)-.2 H 1.065(ignal handlers set to the v).15 +F 1.064(alues inherited by the shell from its)-.25 F 3.247(parent. When) +108 304.8 R .747(job control is not in ef)3.247 F .747 +(fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.248 E F0(and) +2.998 E F4(SIGQ)3.248 E(UIT)-.09 E F0 .748(in addi-)2.998 F .653 +(tion to these inherited handlers.)108 316.8 R .653 +(Commands run as a result of command substitution ignore the k)5.653 F +-.15(ey)-.1 G(board-).15 E(generated job control signals)108 328.8 Q F4 +(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4 +(SIGTSTP)2.5 E F5(.)A F0 2.045(The shell e)108 345.6 R 2.045 +(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F4(SIGHUP)4.545 E +F5(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.346 +-.15(ve s)-.25 H 2.046(hell resends the).15 F F4(SIGHUP)108 357.6 Q F0 +1.005(to all jobs, running or stopped.)3.255 F 1.004 +(Stopped jobs are sent)6.005 F F4(SIGCONT)3.504 E F0 1.004 +(to ensure that the)3.254 F 3.504(yr)-.15 G(ecei)-3.504 E 1.304 -.15 +(ve t)-.25 H(he).15 E F4(SIGHUP)108 369.6 Q F5(.)A F0 2.529 -.8(To p) +5.429 H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal\ + to a particular job, it should be remo).15 F -.15(ve)-.15 G 3.43(df).15 +G .93(rom the)-3.43 F 1.357(jobs table with the)108 381.6 R F2(diso) +3.857 E(wn)-.1 E F0 -.2(bu)3.857 G 1.357(iltin \(see).2 F F4 1.356 +(SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.606 E +1.356(w\) or mark)-.25 F 1.356(ed to not recei)-.1 F -.15(ve)-.25 G F4 +(SIGHUP)108 393.6 Q F0(using)2.25 E F2(diso)2.5 E(wn \255h)-.1 E F0(.)A +.166(If the)108 410.4 R F2(huponexit)2.666 E F0 .166 +(shell option has been set with)2.666 F F2(shopt)2.666 E F0(,)A F2(bash) +2.666 E F0 .166(sends a)2.666 F F4(SIGHUP)2.666 E F0 .166 +(to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108 +422.4 Q(xits.)-.15 E(If)108 439.2 Q F2(bash)3.047 E F0 .547(is w)3.047 F +.546(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G +3.046(sas).15 G .546(ignal for which a trap has been set, the trap) +-3.046 F .662(will not be e)108 451.2 R -.15(xe)-.15 G .662 +(cuted until the command completes.).15 F(When)5.663 E F2(bash)3.163 E +F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .99 +(via the)108 463.2 R F2(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the rec\ +eption of a signal for which a trap has been set will cause the).2 F F2 +(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F +(return immediately with an e)108 475.2 Q +(xit status greater than 128, immediately after which the trap is e)-.15 +E -.15(xe)-.15 G(cuted.).15 E F3(JOB CONTR)72 492 Q(OL)-.329 E F1 -.25 +(Jo)108 504 S 4.567(bc).25 G(ontr)-4.567 E(ol)-.45 E F0 2.067 +(refers to the ability to selecti)5.077 F -.15(ve)-.25 G 2.067 +(ly stop \().15 F F1(suspend)A F0 4.567(\)t)C 2.068(he e)-4.567 F -.15 +(xe)-.15 G 2.068(cution of processes and continue).15 F(\()108 516 Q F1 +-.37(re)C(sume).37 E F0 3.202(\)t)C .702(heir e)-3.202 F -.15(xe)-.15 G +.702(cution at a later point.).15 F 3.202(Au)5.702 G .702 +(ser typically emplo)-3.202 F .702(ys this f)-.1 F .702 +(acility via an interacti)-.1 F 1.001 -.15(ve i)-.25 H(nterf).15 E(ace) +-.1 E(supplied jointly by the operating system k)108 528 Q(ernel')-.1 E +2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E +F2(bash)2.5 E F0(.)A .784(The shell associates a)108 544.8 R F1(job) +5.024 E F0 .784(with each pipeline.)3.514 F .784(It k)5.784 F .785 +(eeps a table of currently e)-.1 F -.15(xe)-.15 G .785 +(cuting jobs, which may be).15 F .341(listed with the)108 556.8 R F2 +(jobs)2.841 E F0 2.841(command. When)2.841 F F2(bash)2.841 E F0 .341 +(starts a job asynchronously \(in the)2.841 F F1(bac)2.84 E(kgr)-.2 E +(ound)-.45 E F0 .34(\), it prints a line).77 F(that looks lik)108 568.8 +Q(e:)-.1 E([1] 25647)144 585.6 Q .241(indicating that this job is job n\ +umber 1 and that the process ID of the last process in the pipeline ass\ +ociated)108 602.4 R .733(with this job is 25647.)108 614.4 R .732 +(All of the processes in a single pipeline are members of the same job) +5.733 F(.)-.4 E F2(Bash)5.732 E F0(uses)3.232 E(the)108 626.4 Q F1(job) +4.24 E F0(abstraction as the basis for job control.)2.73 E 3.062 -.8 +(To f)108 643.2 T 1.462(acilitate the implementation of the user interf) +.7 F 1.463(ace to job control, the operating system maintains the)-.1 F +.871(notion of a)108 655.2 R F1(curr)3.371 E .871(ent terminal pr)-.37 F +.871(ocess gr)-.45 F .871(oup ID)-.45 F F0 5.871(.M)C .87 +(embers of this process group \(processes whose process)-5.871 F .023 +(group ID is equal to the current terminal process group ID\) recei)108 +667.2 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 +(board-generated signals such as).15 F F4(SIG-)2.523 E(INT)108 679.2 Q +F5(.)A F0 1.347(These processes are said to be in the)5.847 F F1(for) +3.846 E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F1(Bac)6.926 E +(kgr)-.2 E(ound)-.45 E F0 1.346(processes are those whose process)4.616 +F .145(group ID dif)108 691.2 R .145(fers from the terminal')-.25 F .146 +(s; such processes are immune to k)-.55 F -.15(ey)-.1 G .146 +(board-generated signals.).15 F .146(Only fore-)5.146 F .16 +(ground processes are allo)108 703.2 R .16(wed to read from or)-.25 F +2.66(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 +10/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) +-2.66 F(-)-.2 E 3.051(minal. Background)108 715.2 R .551 +(processes which attempt to read from \(write to when)3.051 F F6 .551 +(stty tostop)3.051 F F0 .552(is in ef)3.052 F .552(fect\) the)-.25 F +2.098(terminal are sent a)108 727.2 R F4 2.098(SIGTTIN \(SIGTT)4.598 F +(OU\))-.162 E F0 2.098(signal by the k)4.348 F(ernel')-.1 E 4.598(st) +-.55 G 2.098(erminal dri)-4.598 F -.15(ve)-.25 G 2.898 -.4(r, w).15 H +2.098(hich, unless caught,).4 F(GNU Bash 4.4)72 768 Q(2016 August 26) +142.895 E(35)192.055 E 0 Cg EP %%Page: 36 36 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 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.3)72 768 Q(2014 February 2) -141.79 E(36)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(suspends the process.)108 84 Q 1.087(If the operating system on which) +108 100.8 R/F1 10/Times-Bold@0 SF(bash)3.587 E F0 1.088 +(is running supports job control,)3.588 F F1(bash)3.588 E F0 1.088 +(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8(Ty)108 112.8 S +.302(ping the).8 F/F2 10/Times-Italic@0 SF(suspend)3.142 E F0 .302 +(character \(typically)3.572 F F1(^Z)2.801 E F0 2.801(,C)C .301 +(ontrol-Z\) while a process is running causes that process to be)-2.801 +F 2.142(stopped and returns control to)108 124.8 R F1(bash)4.642 E F0 +7.142(.T)C 2.142(yping the)-7.942 F F2 2.142(delayed suspend)4.992 F F0 +2.143(character \(typically)5.413 F F1(^Y)4.643 E F0 4.643(,C)C +(ontrol-Y\))-4.643 E .021(causes the process to be stopped when it atte\ +mpts to read input from the terminal, and control to be returned)108 +136.8 R(to)108 148.8 Q F1(bash)3.392 E F0 5.892(.T)C .892 +(he user may then manipulate the state of this job, using the)-5.892 F +F1(bg)3.392 E F0 .892(command to continue it in the)3.392 F .895 +(background, the)108 160.8 R F1(fg)3.395 E F0 .895 +(command to continue it in the fore)3.395 F .895(ground, or the)-.15 F +F1(kill)3.395 E F0 .894(command to kill it.)3.395 F(A)5.894 E F1(^Z) +3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 172.8 Q .948(fect immediately) +-.25 F 3.448(,a)-.65 G .948(nd has the additional side ef)-3.448 F .948 +(fect of causing pending output and typeahead to be dis-)-.25 F(carded.) +108 184.8 Q .777(There are a number of w)108 201.6 R .777 +(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F1 +(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 213.6 +Q F2(jobspec)A F0 3.457(\). Job)B(number)3.457 E F2(n)3.817 E F0 .957 +(may be referred to as)3.697 F F1(%n)3.457 E F0 5.957(.A)C .957 +(job may also be referred to using a pre\214x of the)-2.5 F .59(name us\ +ed to start it, or using a substring that appears in its command line.) +108 225.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F1(%ce)3.09 E +F0 .59(refers to a)3.09 F(stopped)108 237.6 Q F1(ce)3.463 E F0(job)3.463 +E 5.963(.I)-.4 G 3.463(fap)-5.963 G .963 +(re\214x matches more than one job,)-3.463 F F1(bash)3.463 E F0 .963 +(reports an error)3.463 F 5.963(.U)-.55 G(sing)-5.963 E F1(%?ce)3.463 E +F0 3.464(,o)C 3.464(nt)-3.464 G .964(he other)-3.464 F .087 +(hand, refers to an)108 249.6 R 2.587(yj)-.15 G .087 +(ob containing the string)-2.587 F F1(ce)2.587 E F0 .087 +(in its command line.)2.587 F .087 +(If the substring matches more than one)5.087 F(job,)108 261.6 Q F1 +(bash)2.518 E F0 .018(reports an error)2.518 F 5.018(.T)-.55 G .018 +(he symbols)-5.018 F F1(%%)2.518 E F0(and)2.518 E F1(%+)2.518 E F0 .018 +(refer to the shell')2.518 F 2.518(sn)-.55 G .018(otion of the)-2.518 F +F2(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is) +-2.518 F .495(the last job stopped while it w)108 273.6 R .495 +(as in the fore)-.1 F .495(ground or started in the background.)-.15 F +(The)5.494 E F2(pr)4.244 E -.15(ev)-.37 G .494(ious job).15 F F0 .494 +(may be)3.224 F .787(referenced using)108 285.6 R F1<25ad>3.287 E F0 +5.787(.I)C 3.287(ft)-5.787 G .787(here is only a single job,)-3.287 F F1 +(%+)3.287 E F0(and)3.287 E F1<25ad>3.287 E F0 .788 +(can both be used to refer to that job)3.287 F 5.788(.I)-.4 G(n)-5.788 E +.257(output pertaining to jobs \(e.g., the output of the)108 297.6 R F1 +(jobs)2.756 E F0 .256(command\), the current job is al)2.756 F -.1(wa) +-.1 G .256(ys \215agged with a).1 F F1(+)2.756 E F0(,)A .41(and the pre) +108 309.6 R .41(vious job with a)-.25 F F12.91 E F0 5.41(.A)C .411 +(single % \(with no accompan)-2.5 F .411 +(ying job speci\214cation\) also refers to the cur)-.15 F(-)-.2 E +(rent job)108 321.6 Q(.)-.4 E .444 +(Simply naming a job can be used to bring it into the fore)108 338.4 R +(ground:)-.15 E F1(%1)2.943 E F0 .443(is a synon)2.943 F .443(ym for) +-.15 F F1 -.63(``)2.943 G .443(fg %1').63 F(')-.63 E F0 2.943(,b)C +(ringing)-2.943 E 1.472(job 1 from the background into the fore)108 +350.4 R 3.972(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.973 G 1.473 +(%1 &').63 F(')-.63 E F0 1.473(resumes job 1 in the background,)3.973 F +(equi)108 362.4 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1') +.63 E(')-.63 E F0(.)A .131(The shell learns immediately whene)108 379.2 +R -.15(ve)-.25 G 2.631(raj).15 G .131(ob changes state.)-2.631 F +(Normally)5.131 E(,)-.65 E F1(bash)2.631 E F0 -.1(wa)2.63 G .13 +(its until it is about to print a).1 F .157 +(prompt before reporting changes in a job')108 391.2 R 2.657(ss)-.55 G +.157(tatus so as to not interrupt an)-2.657 F 2.658(yo)-.15 G .158 +(ther output.)-2.658 F .158(If the)5.158 F F12.658 E F0 .158 +(option to)2.658 F(the)108 403.2 Q F1(set)2.648 E F0 -.2(bu)2.648 G .148 +(iltin command is enabled,).2 F F1(bash)2.648 E F0 .148 +(reports such changes immediately)2.648 F 5.147(.A)-.65 G .447 -.15 +(ny t)-5.147 H .147(rap on).15 F/F3 9/Times-Bold@0 SF(SIGCHLD)2.647 E F0 +.147(is e)2.397 F -.15(xe)-.15 G(-).15 E(cuted for each child that e)108 +415.2 Q(xits.)-.15 E .032(If an attempt to e)108 432 R(xit)-.15 E F1 +(bash)2.532 E F0 .032(is made while jobs are stopped \(or)2.532 F 2.533 +(,i)-.4 G 2.533(ft)-2.533 G(he)-2.533 E F1(checkjobs)2.533 E F0 .033 +(shell option has been enabled)2.533 F 2.02(using the)108 444 R F1 +(shopt)4.52 E F0 -.2(bu)4.52 G 2.02 +(iltin, running\), the shell prints a w).2 F 2.019 +(arning message, and, if the)-.1 F F1(checkjobs)4.519 E F0 2.019 +(option is)4.519 F .458(enabled, lists the jobs and their statuses.)108 +456 R(The)5.458 E F1(jobs)2.958 E F0 .459 +(command may then be used to inspect their status.)2.958 F .459(If a) +5.459 F .604(second attempt to e)108 468 R .604 +(xit is made without an interv)-.15 F .604 +(ening command, the shell does not print another w)-.15 F(arning,)-.1 E +(and an)108 480 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E/F4 +10.95/Times-Bold@0 SF(PR)72 496.8 Q(OMPTING)-.329 E F0 .644(When e)108 +508.8 R -.15(xe)-.15 G .644(cuting interacti).15 F -.15(ve)-.25 G(ly).15 +E(,)-.65 E F1(bash)3.144 E F0 .645(displays the primary prompt)3.145 F +F3(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F .315 +(and the secondary prompt)108 520.8 R F3(PS2)2.815 E F0 .315 +(when it needs more input to complete a command.)2.565 F F1(Bash)5.314 E +F0(displays)2.814 E F1(PS0)2.814 E F0(after)2.814 E .049 +(it reads a command b)108 532.8 R .049(ut before e)-.2 F -.15(xe)-.15 G +.049(cuting it.).15 F F1(Bash)5.049 E F0(allo)2.549 E .05 +(ws these prompt strings to be customized by inserting)-.25 F 2.5(an)108 +544.8 S(umber of backslash-escaped special characters that are decoded \ +as follo)-2.5 E(ws:)-.25 E F1(\\a)144 556.8 Q F0 +(an ASCII bell character \(07\))180 556.8 Q F1(\\d)144 568.8 Q F0 +(the date in "W)180 568.8 Q(eekday Month Date" format \(e.g., "T)-.8 E +(ue May 26"\))-.45 E F1(\\D{)144 580.8 Q F2(format)A F1(})A F0(the)180 +592.8 Q F2(format)3.927 E F0 1.427(is passed to)3.927 F F2(strftime) +3.927 E F0 1.427 +(\(3\) and the result is inserted into the prompt string; an)B(empty)180 +604.8 Q F2(format)2.5 E F0 +(results in a locale-speci\214c time representation.)2.5 E +(The braces are required)5 E F1(\\e)144 616.8 Q F0 +(an ASCII escape character \(033\))180 616.8 Q F1(\\h)144 628.8 Q F0 +(the hostname up to the \214rst `.)180 628.8 Q(')-.7 E F1(\\H)144 640.8 +Q F0(the hostname)180 640.8 Q F1(\\j)144 652.8 Q F0 +(the number of jobs currently managed by the shell)180 652.8 Q F1(\\l) +144 664.8 Q F0(the basename of the shell')180 664.8 Q 2.5(st)-.55 G +(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 676.8 Q F0(ne)180 676.8 Q +(wline)-.25 E F1(\\r)144 688.8 Q F0(carriage return)180 688.8 Q F1(\\s) +144 700.8 Q F0(the name of the shell, the basename of)180 700.8 Q F1($0) +2.5 E F0(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1 +(\\t)144 712.8 Q F0(the current time in 24-hour HH:MM:SS format)180 +712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(36)192.055 E 0 Cg +EP %%Page: 37 37 %%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.3)72 768 Q(2014 February 2)141.79 E(37)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(\\T)144 84 Q F0(the current time in 12-hour HH:MM:SS format)180 84 Q +F1(\\@)144 96 Q F0(the current time in 12-hour am/pm format)180 96 Q F1 +(\\A)144 108 Q F0(the current time in 24-hour HH:MM format)180 108 Q F1 +(\\u)144 120 Q F0(the username of the current user)180 120 Q F1(\\v)144 +132 Q F0(the v)180 132 Q(ersion of)-.15 E F1(bash)2.5 E F0 +(\(e.g., 2.00\))2.5 E F1(\\V)144 144 Q F0(the release of)180 144 Q F1 +(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5 +(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 156 Q F0 .115(the current w) +180 156 R .115(orking directory)-.1 F 2.615(,w)-.65 G(ith)-2.615 E/F2 9 +/Times-Bold@0 SF($HOME)2.615 E F0(abbre)2.365 E .116 +(viated with a tilde \(uses the v)-.25 F .116(alue of the)-.25 F F2(PR) +180 168 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E +F1(\\W)144 180 Q F0(the basename of the current w)180 180 Q +(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F2($HOME)2.5 E F0 +(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 192 Q F0 +(the history number of this command)180 192 Q F1(\\#)144 204 Q F0 +(the command number of this command)180 204 Q F1(\\$)144 216 Q F0 +(if the ef)180 216 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E +F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 228 Q/F3 10 +/Times-Italic@0 SF(nnn)A F0 +(the character corresponding to the octal number)180 228 Q F3(nnn)2.5 E +F1(\\\\)144 240 Q F0 2.5(ab)180 240 S(ackslash)-2.5 E F1(\\[)144 252 Q +F0(be)180 252 Q 1.257(gin a sequence of non-printing characters, which \ +could be used to embed a terminal)-.15 F +(control sequence into the prompt)180 264 Q F1(\\])144 276 Q F0 +(end a sequence of non-printing characters)180 276 Q .119 +(The command number and the history number are usually dif)108 292.8 R +.12(ferent: the history number of a command is its)-.25 F 1.585(positio\ +n in the history list, which may include commands restored from the his\ +tory \214le \(see)108 304.8 R F2(HIST)4.084 E(OR)-.162 E(Y)-.315 E F0 +(belo)108 316.8 Q .541(w\), while the command number is the position in\ + the sequence of commands e)-.25 F -.15(xe)-.15 G .541 +(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 328.8 R +.546(After the string is decoded, it is e)5.546 F .546 +(xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F +.351(tion, arithmetic e)108 340.8 R .352(xpansion, and quote remo)-.15 F +-.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1 +(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .352(shell option \(see the)2.852 +F(description of the)108 352.8 Q F1(shopt)2.5 E F0(command under)2.5 E +F2(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) +-.25 E/F4 10.95/Times-Bold@0 SF(READLINE)72 369.6 Q F0 .151 +(This is the library that handles reading input when using an interacti) +108 381.6 R .45 -.15(ve s)-.25 H .15(hell, unless the).15 F F1 +(\255\255noediting)2.65 E F0(option)2.65 E 1.208(is gi)108 393.6 R -.15 +(ve)-.25 G 3.708(na).15 G 3.708(ts)-3.708 G 1.208(hell in)-3.708 F -.2 +(vo)-.4 G 3.708(cation. Line).2 F 1.208 +(editing is also used when using the)3.708 F F13.709 E F0 1.209 +(option to the)3.709 F F1 -.18(re)3.709 G(ad).18 E F0 -.2(bu)3.709 G +3.709(iltin. By).2 F(def)108 405.6 Q .851 +(ault, the line editing commands are similar to those of Emacs.)-.1 F +3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .851 +(ace is also)-.1 F -.2(av)108 417.6 S 3.35(ailable. Line)-.05 F .85 +(editing can be enabled at an)3.35 F 3.35(yt)-.15 G .85(ime using the) +-3.35 F F1 .85(\255o emacs)3.35 F F0(or)3.35 E F1 .85(\255o vi)3.35 F F0 +.85(options to the)3.35 F F1(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E +(\(see)108 429.6 Q F2 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS) +-.828 F F0(belo)3.013 E 3.263(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of) +-3.263 F 3.263(fl)-.25 G .763 +(ine editing after the shell is running, use the)-3.263 F F1(+o)3.262 E +(emacs)108 441.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1 +(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 458.4 Q +F0 .463(In this section, the Emacs-style notation is used to denote k) +108 470.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) +2.963 G .463(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0(,)A +1.153(e.g., C\255n means Control\255N.)108 482.4 R(Similarly)6.153 E(,) +-.65 E F3(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255) +-.05 F F3 -.1(ke)C(y)-.2 E F0 3.652(,s)C 3.652(oM)-3.652 G 1.152 +(\255x means Meta\255X.)-3.652 F(\(On)6.152 E -.1(ke)108 494.4 S .83 +(yboards without a)-.05 F F3(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65 +(y, M)-.05 H.65 E F3(x)A F0 .83(means ESC)3.33 F F3(x)3.33 E F0 3.33 +(,i)C .831(.e., press the Escape k)-3.33 F 1.131 -.15(ey t)-.1 H .831 +(hen the).15 F F3(x)4.101 E F0 -.1(ke)3.861 G 4.631 -.65(y. T)-.05 H +.831(his mak).65 F(es)-.1 E .6(ESC the)108 506.4 R F3 .6(meta pr)3.1 F +(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F3(x)A F0 +.599(means ESC\255Control\255)3.099 F F3(x)A F0 3.099(,o)C 3.099(rp) +-3.099 G .599(ress the Escape k)-3.099 F .899 -.15(ey t)-.1 H .599 +(hen hold).15 F(the Control k)108 518.4 Q .3 -.15(ey w)-.1 H +(hile pressing the).15 E F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)) +.65 E .619(Readline commands may be gi)108 535.2 R -.15(ve)-.25 G 3.119 +(nn).15 G(umeric)-3.119 E F3(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G +.619(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.62 E(ho) +108 547.2 Q(we)-.25 E -.15(ve)-.25 G 1.419 -.4(r, i).15 H 3.119(ti).4 G +3.119(st)-3.119 G .619(he sign of the ar)-3.119 F .619 +(gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne) +.15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619 +(ument to a command that).18 F 1.018(acts in the forw)108 559.2 R 1.018 +(ard direction \(e.g.,)-.1 F F1(kill\255line)3.518 E F0 3.518(\)c)C +1.018(auses that command to act in a backw)-3.518 F 1.019 +(ard direction.)-.1 F(Com-)6.019 E(mands whose beha)108 571.2 Q +(vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo) +-.25 E -.65(w.)-.25 G .812(When a command is described as)108 588 R F3 +(killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811 +(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .811 +(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F3 +(yank-)-3.311 E(ing)108 600 Q F0 2.529(\). The)B .029(killed te)2.529 F +.029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F3 +.029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H +.029(ills cause the te).15 F .029(xt to be accumulated into one unit,) +-.15 F .567(which can be yank)108 612 R .567(ed all at once.)-.1 F .567 +(Commands which do not kill te)5.567 F .567 +(xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.) +108 624 Q F1(Readline Initialization)87 640.8 Q F0 .091(Readline is cus\ +tomized by putting commands in an initialization \214le \(the)108 652.8 +R F3(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .092 +(name of this \214le)2.591 F .197(is tak)108 664.8 R .196(en from the v) +-.1 F .196(alue of the)-.25 F F2(INPUTRC)2.696 E F0 -.25(va)2.446 G +2.696(riable. If).25 F .196(that v)2.696 F .196 +(ariable is unset, the def)-.25 F .196(ault is)-.1 F F3(~/.inputr)2.696 +E(c)-.37 E F0 5.196(.W).31 G .196(hen a)-5.196 F 1.034(program which us\ +es the readline library starts up, the initialization \214le is read, a\ +nd the k)108 676.8 R 1.335 -.15(ey b)-.1 H 1.035(indings and).15 F -.25 +(va)108 688.8 S 1.15(riables are set.).25 F 1.15(There are only a fe) +6.15 F 3.649(wb)-.25 G 1.149(asic constructs allo)-3.649 F 1.149 +(wed in the readline initialization \214le.)-.25 F(Blank)6.149 E .736 +(lines are ignored.)108 700.8 R .737(Lines be)5.737 F .737 +(ginning with a)-.15 F F1(#)3.237 E F0 .737(are comments.)3.237 F .737 +(Lines be)5.737 F .737(ginning with a)-.15 F F1($)3.237 E F0 .737 +(indicate conditional)3.237 F 2.5(constructs. Other)108 712.8 R +(lines denote k)2.5 E .3 -.15(ey b)-.1 H(indings and v).15 E +(ariable settings.)-.25 E .987(The def)108 729.6 R .987(ault k)-.1 F +-.15(ey)-.1 G .987(-bindings may be changed with an).15 F F3(inputr) +3.497 E(c)-.37 E F0 3.487(\214le. Other)3.797 F .987 +(programs that use this library may)3.487 F(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(37)192.055 E 0 Cg EP %%Page: 38 38 %%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.3) -72 768 Q(2014 February 2)141.79 E(38)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(add their o)108 84 +Q(wn commands and bindings.)-.25 E -.15(Fo)108 100.8 S 2.5(re).15 G +(xample, placing)-2.65 E(M\255Control\255u: uni)144 117.6 Q -.15(ve)-.25 +G(rsal\255ar).15 E(gument)-.18 E(or)108 129.6 Q(C\255Meta\255u: uni)144 +141.6 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 153.6 +Q/F1 10/Times-Italic@0 SF(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G +(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G +(cute the readline command).15 E F1(univer)2.5 E(sal\255ar)-.1 E(gument) +-.37 E F0(.).68 E 1.26(The follo)108 170.4 R 1.261 +(wing symbolic character names are recognized:)-.25 F F1 -.4(RU)3.761 G +(BOUT).4 E F0(,)1.27 E F1(DEL)3.761 E F0(,).53 E F1(ESC)3.761 E F0(,).72 +E F1(LFD)3.761 E F0(,).28 E F1(NEWLINE)3.761 E F0(,).73 E F1(RET)3.761 E +F0(,)1.27 E F1(RETURN)108 182.4 Q F0(,)1.1 E F1(SPC)2.5 E F0(,).72 E F1 +(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G(nd)-2.5 E F1 -.5(TA)2.5 G +(B).5 E F0(.).27 E .209(In addition to command names, readline allo)108 +199.2 R .209(ws k)-.25 F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G +2.709(eb)-2.709 G .209(ound to a string that is inserted when the k) +-2.709 F .509 -.15(ey i)-.1 H(s).15 E(pressed \(a)108 211.2 Q F1(macr) +2.5 E(o)-.45 E F0(\).)A/F2 10/Times-Bold@0 SF(Readline K)87 228 Q +(ey Bindings)-.25 E F0 .366(The syntax for controlling k)108 240 R .666 +-.15(ey b)-.1 H .366(indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0 +.366(\214le is simple.)3.176 F .366 +(All that is required is the name of the)5.366 F .264(command or the te) +108 252 R .264(xt of a macro and a k)-.15 F .564 -.15(ey s)-.1 H .264 +(equence to which it should be bound.).15 F .263(The name may be speci-) +5.264 F .853(\214ed in one of tw)108 264 R 3.353(ow)-.1 G .853 +(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H .853 +(ame, possibly with).15 F F1(Meta\255)3.353 E F0(or)3.353 E F1(Contr) +3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15 F -.15 +(ey)-.1 G(sequence.)108 276 Q .161(When using the form)108 292.8 R F2 +-.1(ke)2.661 G(yname).1 E F0(:)A F1(function\255name).833 E F0(or)2.661 +E F1(macr)2.661 E(o)-.45 E F0(,)A F1 -.1(ke)2.661 G(yname)-.2 E F0 .16 +(is the name of a k)2.84 F .46 -.15(ey s)-.1 H .16(pelled out in Eng-) +.15 F 2.5(lish. F)108 304.8 R(or e)-.15 E(xample:)-.15 E(Control-u: uni) +144 328.8 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E +(Meta-Rubout: backw)144 340.8 Q(ard-kill-w)-.1 E(ord)-.1 E +(Control-o: "> output")144 352.8 Q .698(In the abo)108 369.6 R .998 -.15 +(ve ex)-.15 H(ample,).15 E F1(C\255u)3.038 E F0 .698 +(is bound to the function)3.448 F F2(uni)3.198 E -.1(ve)-.1 G +(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M\255DEL)3.878 E F0 .698 +(is bound to the func-)3.728 F(tion)108 381.6 Q F2 +(backward\255kill\255w)2.759 E(ord)-.1 E F0 2.759(,a)C(nd)-2.759 E F1 +(C\255o)2.599 E F0 .258(is bound to run the macro e)2.939 F .258 +(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 +393.6 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 +(into the line\).)2.5 E .055(In the second form,)108 410.4 R F2("k)2.555 +E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.555 E F1(macr) +2.555 E(o)-.45 E F0(,)A F2 -.1(ke)2.555 G(yseq).1 E F0(dif)2.556 E .056 +(fers from)-.25 F F2 -.1(ke)2.556 G(yname).1 E F0(abo)2.556 E .356 -.15 +(ve i)-.15 H 2.556(nt).15 G .056(hat strings)-2.556 F 1.284 +(denoting an entire k)108 422.4 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ +ay be speci\214ed by placing the sequence within double quotes.).15 F +(Some)6.284 E .385(GNU Emacs style k)108 434.4 R .685 -.15(ey e)-.1 H +.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .386 +(xample, b)-.15 F .386(ut the symbolic character names)-.2 F +(are not recognized.)108 446.4 Q("\\C\255u": uni)144 470.4 Q -.15(ve) +-.25 G(rsal\255ar).15 E(gument)-.18 E +("\\C\255x\\C\255r": re\255read\255init\255\214le)144 482.4 Q +("\\e[11~": "Function K)144 494.4 Q .3 -.15(ey 1)-.25 H(").15 E .315 +(In this e)108 511.2 R(xample,)-.15 E F1(C\255u)2.655 E F0 .315(is ag) +3.065 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1 +G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0 +.314(is bound to the func-)3.544 F(tion)108 523.2 Q F2 -.18(re)2.5 G +.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1 +(ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F3 +(Function Key 1)2.5 E F0(.)A +(The full set of GNU Emacs style escape sequences is)108 540 Q F2 +<5c43ad>144 552 Q F0(control pre\214x)180 552 Q F2<5c4dad>144 564 Q F0 +(meta pre\214x)180 564 Q F2(\\e)144 576 Q F0(an escape character)180 576 +Q F2(\\\\)144 588 Q F0(backslash)180 588 Q F2(\\")144 600 Q F0 +(literal ")180 600 Q F2<5c08>144 612 Q F0(literal \010)180 612 Q(In add\ +ition to the GNU Emacs style escape sequences, a second set of backslas\ +h escapes is a)108 628.8 Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 640.8 +Q F0(alert \(bell\))180 640.8 Q F2(\\b)144 652.8 Q F0(backspace)180 +652.8 Q F2(\\d)144 664.8 Q F0(delete)180 664.8 Q F2(\\f)144 676.8 Q F0 +(form feed)180 676.8 Q F2(\\n)144 688.8 Q F0(ne)180 688.8 Q(wline)-.25 E +F2(\\r)144 700.8 Q F0(carriage return)180 700.8 Q F2(\\t)144 712.8 Q F0 +(horizontal tab)180 712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 +E(38)192.055 E 0 Cg EP %%Page: 39 39 %%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.3)72 768 Q(2014 February 2)141.79 E(39)190.95 E -0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(\\v)144 84 Q F0 -.15(ve)180 84 S(rtical tab).15 E F1(\\)144 96 Q/F2 +10/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v)180 96 Q +(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 +(\(one to three digits\))2.5 E F1(\\x)144 108 Q F2(HH)A F0 +(the eight-bit character whose v)180 108 Q(alue is the he)-.25 E +(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) +-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.141(When entering the te)108 +124.8 R 1.141(xt of a macro, single or double quotes must be used to in\ +dicate a macro de\214nition.)-.15 F .09(Unquoted te)108 136.8 R .09 +(xt is assumed to be a function name.)-.15 F .089(In the macro body) +5.089 F 2.589(,t)-.65 G .089(he backslash escapes described abo)-2.589 F +-.15(ve)-.15 G(are e)108 148.8 Q 2.5(xpanded. Backslash)-.15 F +(will quote an)2.5 E 2.5(yo)-.15 G(ther character in the macro te)-2.5 E +(xt, including " and \010.)-.15 E F1(Bash)108 165.6 Q F0(allo)2.929 E +.429(ws the current readline k)-.25 F .729 -.15(ey b)-.1 H .429 +(indings to be displayed or modi\214ed with the).15 F F1(bind)2.93 E F0 +-.2(bu)2.93 G .43(iltin command.).2 F .046 +(The editing mode may be switched during interacti)108 177.6 R .346 -.15 +(ve u)-.25 H .046(se by using the).15 F F12.545 E F0 .045 +(option to the)2.545 F F1(set)2.545 E F0 -.2(bu)2.545 G .045 +(iltin command).2 F(\(see)108 189.6 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E +(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 +(Readline V)87 206.4 Q(ariables)-.92 E F0 .043(Readline has v)108 218.4 +R .043(ariables that can be used to further customize its beha)-.25 F +(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043 +(riable may be set in the).25 F F2(inpu-)2.554 E(tr)108 230.4 Q(c)-.37 E +F0(\214le with a statement of the form)2.81 E F1(set)144 247.2 Q F2 +(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 +264 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F(alues) +-.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79(\(without re)3.29 +F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)5.79 E .448(nized v) +108 276 R .448(ariable names are ignored.)-.25 F .448(When a v)5.448 F +.448(ariable v)-.25 F .448(alue is read, empty or null v)-.25 F .449 +(alues, "on" \(case-insensi-)-.25 F(ti)108 288 Q -.15(ve)-.25 G .468 +(\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On) +2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25 +F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .467 +(he v)-5.468 F .467(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 +300 S(lues are:).25 E F1(bell\255style \(audible\))108 316.8 Q F0 .01 +(Controls what happens when readline w)144 328.8 R .011 +(ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none) +2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E +.94(rings the bell.)144 340.8 R .94(If set to)5.94 F F1(visible)3.44 E +F0 3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25 +(va)-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0 +(,)A(readline attempts to ring the terminal')144 352.8 Q 2.5(sb)-.55 G +(ell.)-2.5 E F1(bind\255tty\255special\255chars \(On\))108 364.8 Q F0 +.055(If set to)144 376.8 R F1(On)2.555 E F0 2.555(,r)C .056(eadline att\ +empts to bind the control characters treated specially by the k)-2.555 F +(ernel')-.1 E 2.556(st)-.55 G(ermi-)-2.556 E(nal dri)144 388.8 Q -.15 +(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va) +-.25 G(lents.).25 E F1(blink\255matching\255par)108 400.8 Q(en \(Off\)) +-.18 E F0 .21(If set to)144 412.8 R F1(On)2.71 E F0 2.71(,r)C .21 +(eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21 +(he cursor to an opening parenthesis when a closing).15 F +(parenthesis is inserted.)144 424.8 Q F1(color)108 436.8 Q +(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to) +144 448.8 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, r\ +eadline displays the common pre\214x of the set of possible)-3.015 F +2.936(completions using a dif)144 460.8 R 2.936(ferent color)-.25 F +7.936(.T)-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.935 +(en from the v)-.1 F 2.935(alue of the)-.25 F F1(LS_COLORS)144 472.8 Q +F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 484.8 Q +(ed\255stats \(Off\))-.18 E F0 1.579(If set to)144 496.8 R F1(On)4.079 E +F0 4.079(,r)C 1.579(eadline displays possible completions using dif) +-4.079 F 1.58(ferent colors to indicate their \214le)-.25 F 2.5 +(type. The)144 508.8 R(color de\214nitions are tak)2.5 E(en from the v) +-.1 E(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 +E(ariable.)-.25 E F1(comment\255begin \(`)108 520.8 Q(`#')-.63 E('\)) +-.63 E F0 .885(The string that is inserted when the readline)144 532.8 R +F1(insert\255comment)3.385 E F0 .884(command is e)3.384 F -.15(xe)-.15 G +3.384(cuted. This).15 F(com-)3.384 E(mand is bound to)144 544.8 Q F1 +(M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0 +(in vi command mode.)2.5 E F1(completion\255display\255width \(-1\))108 +556.8 Q F0 1.453(The number of screen columns used to display possible \ +matches when performing completion.)144 568.8 R .194(The v)144 580.8 R +.193(alue is ignored if it is less than 0 or greater than the terminal \ +screen width.)-.25 F 2.693(Av)5.193 G .193(alue of 0 will)-2.943 F +(cause matches to be displayed one per line.)144 592.8 Q(The def)5 E +(ault v)-.1 E(alue is -1.)-.25 E F1(completion\255ignor)108 604.8 Q +(e\255case \(Off\))-.18 E F0(If set to)144 616.8 Q F1(On)2.5 E F0 2.5 +(,r)C(eadline performs \214lename matching and completion in a case\255\ +insensiti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1 +(completion\255map\255case \(Off\))108 628.8 Q F0 .093(If set to)144 +640.8 R F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor) +2.593 E(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F +.093(yphens \()-.05 F F2A F0 2.593(\)a)C .094(nd underscores)-2.593 +F(\()144 652.8 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G(qui)-2.5 E -.25(va) +-.25 G(lent when performing case\255insensiti).25 E .3 -.15(ve \214)-.25 +H(lename matching and completion.).15 E F1(completion\255pr)108 664.8 Q +(e\214x\255display\255length \(0\))-.18 E F0 .829(The length in charact\ +ers of the common pre\214x of a list of possible completions that is di\ +splayed)144 676.8 R 1.274(without modi\214cation.)144 688.8 R 1.274 +(When set to a v)6.274 F 1.274(alue greater than zero, common pre\214x) +-.25 F 1.275(es longer than this)-.15 F -.25(va)144 700.8 S(lue are rep\ +laced with an ellipsis when displaying possible completions.).25 E +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(39)192.055 E 0 Cg EP %%Page: 40 40 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 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.3)72 768 Q(2014 February 2)141.79 E(40)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(completion\255query\255items \(100\))108 84 Q F0 .53 +(This determines when the user is queried about vie)144 96 R .529 +(wing the number of possible completions gen-)-.25 F .56(erated by the) +144 108 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F +.561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v) +-.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 120 R +.783(If the number of possible completions is greater than or equal to \ +the v)5.783 F .782(alue of this)-.25 F -.25(va)144 132 S .237 +(riable, the user is ask).25 F .237(ed whether or not he wishes to vie) +-.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G +.237(re simply listed)-2.737 F(on the terminal.)144 144 Q F1(con)108 156 +Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)144 168 R F1(On) +3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F -.15(ve)-.4 G .613 +(rt characters with the eighth bit set to an ASCII k).15 F .912 -.15 +(ey s)-.1 H .612(equence by).15 F .541 +(stripping the eighth bit and pre\214xing an escape character \(in ef) +144 180 R .541(fect, using escape as the)-.25 F/F2 10/Times-Italic@0 SF +.542(meta pr)3.042 F(e-)-.37 E<8c78>144 192 Q F0 2.5(\). The)B(def)2.5 E +(ault is)-.1 E F2(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E +F2(Of)2.5 E(f)-.18 E F0(if the locale contains eight-bit characters.)2.5 +E F1(disable\255completion \(Off\))108 204 Q F0 .038(If set to)144 216 R +F1(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038 +(ord completion.)-.1 F .038 +(Completion characters will be inserted into the)5.038 F(line as if the) +144 228 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 +(.)A F1(echo\255contr)108 240 Q(ol\255characters \(On\))-.18 E F0 1.21 +(When set to)144 252 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G 1.211 +(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211 +(upport it, readline echoes a character)-3.711 F +(corresponding to a signal generated from the k)144 264 Q -.15(ey)-.1 G +(board.).15 E F1(editing\255mode \(emacs\))108 276 Q F0 .142 +(Controls whether readline be)144 288 R .141(gins with a set of k)-.15 F +.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0 +(or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode)5.141 E F0 +(can be set to either)144 300 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E +F0(.)A F1(enable\255brack)108 312 Q(eted\255paste \(Off\))-.1 E F0 1.221 +(When set to)144 324 R F1(On)3.721 E F0 3.721(,r)C 1.221 +(eadline will con\214gure the terminal in a w)-3.721 F 1.221 +(ay that will enable it to insert each)-.1 F .353 +(paste into the editing b)144 336 R(uf)-.2 E .353(fer as a single strin\ +g of characters, instead of treating each character as if)-.25 F .543 +(it had been read from the k)144 348 R -.15(ey)-.1 G 3.043(board. This) +.15 F .543(can pre)3.043 F -.15(ve)-.25 G .544 +(nt pasted characters from being interpreted as).15 F(editing commands.) +144 360 Q F1(enable\255k)108 372 Q(eypad \(Off\))-.1 E F0 .893 +(When set to)144 384 R F1(On)3.393 E F0 3.393(,r)C .893 +(eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G +.893(pad when it is called.).15 F .892(Some sys-)5.893 F +(tems need this to enable the arro)144 396 Q 2.5(wk)-.25 G -.15(ey)-2.6 +G(s.).15 E F1(enable\255meta\255k)108 408 Q(ey \(On\))-.1 E F0 .64 +(When set to)144 420 R F1(On)3.14 E F0 3.14(,r)C .64 +(eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64 +(eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64 +(he terminal claims to support).15 F(when it is called.)144 432 Q +(On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H +2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1 +(expand\255tilde \(Off\))108 444 Q F0(If set to)144 456 Q F1(On)2.5 E F0 +2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w) +-.15 E(ord completion.)-.1 E F1(history\255pr)108 468 Q(eser)-.18 E -.1 +(ve)-.1 G(\255point \(Off\)).1 E F0 1.339(If set to)144 480 R F1(On) +3.839 E F0 3.839(,t)C 1.338(he history code attempts to place point at \ +the same location on each history line)-3.839 F(retrie)144 492 Q -.15 +(ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G +(ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1 +(history\255size \(unset\))108 504 Q F0 .948 +(Set the maximum number of history entries sa)144 516 R -.15(ve)-.2 G +3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .949 +(If set to zero, an)5.948 F 3.449(ye)-.15 G(xisting)-3.599 E .483 +(history entries are deleted and no ne)144 528 R 2.983(we)-.25 G .483 +(ntries are sa)-2.983 F -.15(ve)-.2 G 2.983(d. If).15 F .482(set to a v) +2.983 F .482(alue less than zero, the num-)-.25 F .277 +(ber of history entries is not limited.)144 540 R .277(By def)5.277 F +.278(ault, the number of history entries is set to the v)-.1 F .278 +(alue of)-.25 F(the)144 552 Q F1(HISTSIZE)3.411 E F0 .911(shell v)3.411 +F 3.411(ariable. If)-.25 F .911(an attempt is made to set)3.411 F F2 +(history\255size)3.41 E F0 .91(to a non-numeric v)3.41 F(alue,)-.25 E +(the maximum number of history entries will be set to 500.)144 564 Q F1 +(horizontal\255scr)108 576 Q(oll\255mode \(Off\))-.18 E F0 .448 +(When set to)144 588 R F1(On)2.948 E F0 2.948(,m)C(ak)-2.948 E .448 +(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .449 +(crolling the input horizontally on a)-2.948 F 1.194(single screen line\ + when it becomes longer than the screen width rather than wrapping to a\ + ne)144 600 R(w)-.25 E(line.)144 612 Q F1(input\255meta \(Off\))108 624 +Q F0 1.061(If set to)144 636 R F1(On)3.561 E F0 3.561(,r)C 1.062(eadlin\ +e will enable eight-bit input \(that is, it will not strip the eighth b\ +it from the)-3.561 F .336(characters it reads\), re)144 648 R -.05(ga) +-.15 G .335(rdless of what the terminal claims it can support.).05 F +.335(The name)5.335 F F1(meta\255\215ag)2.835 E F0(is)2.835 E 2.864(as) +144 660 S(ynon)-2.864 E .364(ym for this v)-.15 F 2.864(ariable. The) +-.25 F(def)2.864 E .364(ault is)-.1 F F2(Of)2.864 E(f)-.18 E F0 2.864 +(,b)C .364(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .365 +(if the locale contains)2.865 F(eight-bit characters.)144 672 Q F1 +(isear)108 684 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\)) +-.63 E F0 .439(The string of characters that should terminate an increm\ +ental search without subsequently e)144 696 R -.15(xe)-.15 G(cut-).15 E +.934(ing the character as a command.)144 708 R .935(If this v)5.935 F +.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.435(nav).15 G .935 +(alue, the characters)-3.685 F F2(ESC)3.435 E F0(and)144 720 Q F2 +(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(40)192.055 E 0 Cg EP %%Page: 41 41 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 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.3)72 768 Q -(2014 February 2)141.79 E(41)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.1(ke)108 84 S(ymap \(emacs\)).1 E F0 2.021 +(Set the current readline k)144 96 R -.15(ey)-.1 G 4.521(map. The).15 F +2.021(set of v)4.521 F 2.021(alid k)-.25 F -.15(ey)-.1 G 2.021 +(map names is).15 F/F2 10/Times-Italic@0 SF 2.02 +(emacs, emacs\255standar)4.52 F(d,)-.37 E .068 +(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 108 R F0 2.568(,a)C +(nd)-2.568 E F2(vi\255insert)2.568 E F0(.).68 E F2(vi)5.068 E F0 .068 +(is equi)2.568 F -.25(va)-.25 G .068(lent to).25 F F2(vi\255command) +2.569 E F0(;)A F2(emacs)2.569 E F0 1.544(is equi)144 120 R -.25(va)-.25 +G 1.544(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C +1.544(he def)-6.544 F 1.544(ault v)-.1 F 1.544(alue is)-.25 F F2(emacs) +4.044 E F0 4.044(;t).27 G 1.544(he v)-4.044 F 1.544(alue of)-.25 F F1 +(editing\255mode)4.043 E F0(also)4.043 E(af)144 132 Q(fects the def)-.25 +E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 +(emacs\255mode\255string \(@\))108 144 Q F0 .051(This string is display\ +ed immediately before the last line of the primary prompt when emacs ed\ +iting)144 156 R .293(mode is acti)144 168 R -.15(ve)-.25 G 5.293(.T).15 +G .293(he v)-5.293 F .293(alue is e)-.25 F .293(xpanded lik)-.15 F 2.793 +(eak)-.1 G .593 -.15(ey b)-2.893 H .293 +(inding, so the standard set of meta- and control).15 F(pre\214x)144 180 +Q .601(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.101 +(ilable. Use).25 F .601(the \\1 and \\2 escapes to be)3.101 F .602 +(gin and end)-.15 F .019(sequences of non-printing characters, which ca\ +n be used to embed a terminal control sequence into)144 192 R +(the mode string.)144 204 Q F1 -.1(ke)108 216 S(yseq\255timeout \(500\)) +.1 E F0 .367(Speci\214es the duration)144 228 R F2 -.37(re)2.867 G +(adline).37 E F0 .367(will w)2.867 F .367 +(ait for a character when reading an ambiguous k)-.1 F .668 -.15(ey s) +-.1 H(equence).15 E 1.356(\(one that can form a complete k)144 240 R +1.656 -.15(ey s)-.1 H 1.356(equence using the input read so f).15 F(ar) +-.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.355(an tak)-3.856 F 3.855(ea) +-.1 G(dditional)-3.855 E .32(input to complete a longer k)144 252 R .62 +-.15(ey s)-.1 H 2.82(equence\). If).15 F .32(no input is recei)2.82 F +-.15(ve)-.25 G 2.82(dw).15 G .32(ithin the timeout,)-2.82 F F2 -.37(re) +2.82 G(adline).37 E F0(will)2.82 E .907(use the shorter b)144 264 R .907 +(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407(equence. The).15 F -.25 +(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .906 +(alue of)-.25 F .05(1000 means that)144 276 R F2 -.37(re)2.55 G(adline) +.37 E F0 .05(will w)2.55 F .05(ait one second for additional input.)-.1 +F .05(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051 +(less than or equal to zero, or to a non-numeric v)144 288 R(alue,)-.25 +E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 +(ait until another k)-.1 F .351 -.15(ey i)-.1 H 2.551(sp).15 G(ressed) +-2.551 E(to decide which k)144 300 Q .3 -.15(ey s)-.1 H +(equence to complete.).15 E F1(mark\255dir)108 312 Q(ectories \(On\)) +-.18 E F0(If set to)144 324 Q F1(On)2.5 E F0 2.5(,c)C +(ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.) +.15 E F1(mark\255modi\214ed\255lines \(Off\))108 336 Q F0(If set to)144 +348 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) +-.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1 +(*)A F0(\).)A F1(mark\255symlink)108 360 Q(ed\255dir)-.1 E +(ectories \(Off\))-.18 E F0 .175(If set to)144 372 R F1(On)2.675 E F0 +2.675(,c)C .175 +(ompleted names which are symbolic links to directories ha)-2.675 F .475 +-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 384 +Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 +(match\255hidden\255\214les \(On\))108 396 Q F0 .193(This v)144 408 R +.193(ariable, when set to)-.25 F F1(On)2.693 E F0 2.693(,c)C .192 +(auses readline to match \214les whose names be)-2.693 F .192 +(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E .456 +(\214les\) when performing \214lename completion.)144 420 R .456 +(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) +-2.956 F 2.956('m)-.7 G .457(ust be supplied by the)-2.956 F +(user in the \214lename to be completed.)144 432 Q F1 +(menu\255complete\255display\255pr)108 444 Q(e\214x \(Off\))-.18 E F0 +1.586(If set to)144 456 R F1(On)4.086 E F0 4.086(,m)C 1.585(enu complet\ +ion displays the common pre\214x of the list of possible completions) +-4.086 F(\(which may be empty\) before c)144 468 Q +(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 480 Q F0 +.506(If set to)144 492 R F1(On)3.006 E F0 3.006(,r)C .507(eadline will \ +display characters with the eighth bit set directly rather than as a me\ +ta-)-3.006 F(pre\214x)144 504 Q .885(ed escape sequence.)-.15 F .884 +(The def)5.884 F .884(ault is)-.1 F F2(Of)3.384 E(f)-.18 E F0 3.384(,b)C +.884(ut readline will set it to)-3.584 F F2(On)3.384 E F0 .884 +(if the locale contains)3.384 F(eight-bit characters.)144 516 Q F1 +(page\255completions \(On\))108 528 Q F0 .808(If set to)144 540 R F1(On) +3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(mor) +3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 +(ager to display a screenful of possible comple-)-3.308 F +(tions at a time.)144 552 Q F1 +(print\255completions\255horizontally \(Off\))108 564 Q F0 1.319 +(If set to)144 576 R F1(On)3.819 E F0 3.819(,r)C 1.318(eadline will dis\ +play completions with matches sorted horizontally in alphabetical)-3.819 +F(order)144 588 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 +E F1 -2.29 -.18(re v)108 600 T(ert\255all\255at\255newline \(Off\)).08 E +F0 .698(If set to)144 612 R F1(On)3.198 E F0 3.198(,r)C .699 +(eadline will undo all changes to history lines before returning when) +-3.198 F F1(accept\255line)3.199 E F0(is)3.199 E -.15(exe)144 624 S +2.686(cuted. By).15 F(def)2.686 E .186 +(ault, history lines may be modi\214ed and retain indi)-.1 F .186 +(vidual undo lists across calls to)-.25 F F1 -.18(re)144 636 S(adline) +.18 E F0(.)A F1(sho)108 648 Q(w\255all\255if\255ambiguous \(Off\))-.1 E +F0 .303(This alters the def)144 660 R .303(ault beha)-.1 F .304 +(vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On) +2.804 E F0 2.804(,w)C .304(ords which ha)-2.904 F .604 -.15(ve m)-.2 H +(ore).15 E 1.264(than one possible completion cause the matches to be l\ +isted immediately instead of ringing the)144 672 R(bell.)144 684 Q F1 +(sho)108 696 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.345 +(This alters the def)144 708 R 5.345(ault beha)-.1 F 5.345 +(vior of the completion functions in a f)-.2 F 5.346(ashion similar to) +-.1 F F1(sho)144 720 Q(w\255all\255if\255ambiguous)-.1 E F0 6.691(.I)C +4.191(fs)-6.691 G 1.691(et to)-4.191 F F1(On)4.191 E F0 4.191(,w)C 1.691 +(ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691 +(ore than one possible completion).15 F(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(41)192.055 E 0 Cg EP %%Page: 42 42 %%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 -.1(wo)144 -612 S(rd, as if the "!$" history e).1 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.3)72 768 Q(2014 February 2)141.79 E(42) -190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.039(without an) +144 84 R 3.539(yp)-.15 G 1.039 +(ossible partial completion \(the possible completions don')-3.539 F +3.539(ts)-.18 G 1.04(hare a common pre\214x\))-3.539 F(cause the matche\ +s to be listed immediately instead of ringing the bell.)144 96 Q/F1 10 +/Times-Bold@0 SF(sho)108 108 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\)) +-.18 E F0 1.019(If set to)144 120 R F1(On)3.519 E F0 3.519(,a)C 1.018 +(dd a character to the be)-3.519 F 1.018 +(ginning of the prompt indicating the editing mode: emacs)-.15 F +(\(@\), vi command \(:\) or vi insertion \(+\).)144 132 Q F1 +(skip\255completed\255text \(Off\))108 144 Q F0 .094(If set to)144 156 R +F1(On)2.594 E F0 2.594(,t)C .095(his alters the def)-2.594 F .095 +(ault completion beha)-.1 F .095 +(vior when inserting a single match into the line.)-.2 F(It')144 168 Q +2.546(so)-.55 G .046(nly acti)-2.546 F .346 -.15(ve w)-.25 H .046 +(hen performing completion in the middle of a w).15 F 2.545(ord. If)-.1 +F .045(enabled, readline does not)2.545 F 1.394(insert characters from \ +the completion that match characters after point in the w)144 180 R +1.395(ord being com-)-.1 F(pleted, so portions of the w)144 192 Q +(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 +(vi\255cmd\255mode\255string \(\(cmd\)\))108 204 Q F0 1.198(This string\ + is displayed immediately before the last line of the primary prompt wh\ +en vi editing)144 216 R .521(mode is acti)144 228 R .821 -.15(ve a)-.25 +H .522(nd in command mode.).15 F .522(The v)5.522 F .522(alue is e)-.25 +F .522(xpanded lik)-.15 F 3.022(eak)-.1 G .822 -.15(ey b)-3.122 H .522 +(inding, so the standard).15 F .87(set of meta- and control pre\214x)144 +240 R .869(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G +3.369(ilable. Use).25 F .869(the \\1 and \\2)3.369 F .386(escapes to be) +144 252 R .386(gin and end sequences of non-printing characters, which \ +can be used to embed a ter)-.15 F(-)-.2 E +(minal control sequence into the mode string.)144 264 Q F1 +(vi\255ins\255mode\255string \(\(ins\)\))108 276 Q F0 1.198(This string\ + is displayed immediately before the last line of the primary prompt wh\ +en vi editing)144 288 R .782(mode is acti)144 300 R 1.083 -.15(ve a)-.25 +H .783(nd in insertion mode.).15 F .783(The v)5.783 F .783(alue is e) +-.25 F .783(xpanded lik)-.15 F 3.283(eak)-.1 G 1.083 -.15(ey b)-3.383 H +.783(inding, so the standard).15 F .87 +(set of meta- and control pre\214x)144 312 R .869 +(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.369 +(ilable. Use).25 F .869(the \\1 and \\2)3.369 F .386(escapes to be)144 +324 R .386(gin and end sequences of non-printing characters, which can \ +be used to embed a ter)-.15 F(-)-.2 E +(minal control sequence into the mode string.)144 336 Q F1 +(visible\255stats \(Off\))108 348 Q F0 .847(If set to)144 360 R F1(On) +3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346 +(st)-.55 G .846(ype as reported by)-3.346 F/F2 10/Times-Italic@0 SF +(stat)3.346 E F0 .846(\(2\) is appended to the \214lename)B +(when listing possible completions.)144 372 Q F1 +(Readline Conditional Constructs)87 388.8 Q F0 .05 +(Readline implements a f)108 400.8 R .05(acility similar in spirit to t\ +he conditional compilation features of the C preprocessor)-.1 F .097 +(which allo)108 412.8 R .097(ws k)-.25 F .396 -.15(ey b)-.1 H .096 +(indings and v).15 F .096 +(ariable settings to be performed as the result of tests.)-.25 F .096 +(There are four parser)5.096 F(directi)108 424.8 Q -.15(ve)-.25 G 2.5 +(su).15 G(sed.)-2.5 E F1($if)108 441.6 Q F0(The)144 441.6 Q F1($if)2.962 +E F0 .462(construct allo)2.962 F .463(ws bindings to be made based on t\ +he editing mode, the terminal being used,)-.25 F .478 +(or the application using readline.)144 453.6 R .477(The te)5.477 F .477 +(xt of the test e)-.15 F .477 +(xtends to the end of the line; no characters)-.15 F +(are required to isolate it.)144 465.6 Q F1(mode)144 482.4 Q F0(The)180 +482.4 Q F1(mode=)3.711 E F0 1.211(form of the)3.711 F F1($if)3.711 E F0 +(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211 +(sed to test whether readline is in emacs or vi)-3.711 F 3.065 +(mode. This)180 494.4 R .565(may be used in conjunction with the)3.065 F +F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to) +3.065 F .735(set bindings in the)180 506.4 R F2(emacs\255standar)3.235 E +(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)3.235 E F0 -.1(ke)3.235 G .735 +(ymaps only if readline is starting)-.05 F(out in emacs mode.)180 518.4 +Q F1(term)144 535.2 Q F0(The)180 535.2 Q F1(term=)3.197 E F0 .696 +(form may be used to include terminal-speci\214c k)3.197 F .996 -.15 +(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 547.2 R +.954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154 +(sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1 +(wo)3.154 G .654(rd on the right side of).1 F(the)180 559.2 Q F1(=)3.232 +E F0 .732(is tested ag)3.232 F .732(ainst both the full name of the ter\ +minal and the portion of the terminal)-.05 F(name before the \214rst)180 +571.2 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 +(to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.5 E F0 +2.5(,f).77 G(or instance.)-2.5 E F1(application)144 588 Q F0(The)180 600 +Q F1(application)3.003 E F0 .503 +(construct is used to include application-speci\214c settings.)3.003 F +.503(Each program)5.503 F .114(using the readline library sets the)180 +612 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 +(nd an initialization \214le can test for a)-2.614 F .5(particular v)180 +624 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15 +(ey s)-.1 H .501(equences to functions useful for a spe-).15 F .397 +(ci\214c program.)180 636 R -.15(Fo)5.397 G 2.896(ri).15 G .396 +(nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15 +(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 648 Q +(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 672 Q F0 +(Bash)2.5 E 2.5(#Q)180 684 S(uote the current or pre)-2.5 E(vious w)-.25 +E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 696 Q F1($endif)180 708 Q +F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(42)192.055 E 0 Cg EP %%Page: 43 43 %%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 F4(end\255of\255\214le)108 256.8 -Q F1(\(usually C\255d\))2.5 E F0 .798 -(The character indicating end-of-\214le as set, for e)144 268.8 R .799 -(xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.299 -(ft)-5.799 G .799(his character is read when)-3.299 F .592 -(there are no characters on the line, and point is at the be)144 280.8 R -.592(ginning of the line, Readline interprets it)-.15 F -(as the end of input and returns)144 292.8 Q F2(EOF)2.5 E F3(.)A F1 -(delete\255char \(C\255d\))108 304.8 Q F0 .441 -(Delete the character at point.)144 316.8 R .442 -(If this function is bound to the same character as the tty)5.441 F F1 -(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 328.8 Q 2.5(,a)-.4 G(s) --2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H -(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) -108 340.8 Q F0 .553(Delete the character behind the cursor)144 352.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 364.8 Q F1 --.25(fo)108 376.8 S(rward\255backward\255delete\255char).25 E F0 .473 -(Delete the character under the cursor)144 388.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 400.8 Q F1 -(quoted\255insert \(C\255q, C\255v\))108 412.8 Q F0 .779(Add the ne)144 -424.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 436.8 S(ample.).15 E F1 -(tab\255insert \(C\255v T)108 448.8 Q(AB\))-.9 E F0 -(Insert a tab character)144 460.8 Q(.)-.55 E F1 -(self\255insert \(a, b, A, 1, !, ...\))108 472.8 Q F0 -(Insert the character typed.)144 484.8 Q F1 -(transpose\255chars \(C\255t\))108 496.8 Q F0 .321 -(Drag the character before point forw)144 508.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 -520.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 532.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 544.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 -556.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 568.8 Q 2.5 -(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 580.8 Q -(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 -592.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 604.8 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 616.8 Q -(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 628.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 640.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 652.8 Q -(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 -664.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 676.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 -688.8 S(rwrite\255mode).1 E F0 -.8(To)144 700.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 712.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 724.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(GNU Bash 4.3) -72 768 Q(2014 February 2)141.79 E(43)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF($endif)108 84 Q F0(This command, as seen in the pre)144 84 Q(vious e) +-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1 +($else)108 100.8 Q F0(Commands in this branch of the)144 100.8 Q F1($if) +2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G +(cuted if the test f).15 E(ails.)-.1 E F1($include)108 117.6 Q F0 .356 +(This directi)144 129.6 R .656 -.15(ve t)-.25 H(ak).15 E .356 +(es a single \214lename as an ar)-.1 F .357 +(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) +144 141.6 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 +-.15(ve w)-.25 H(ould read).05 E/F2 10/Times-Italic@0 SF(/etc/inputr)2.5 +E(c)-.37 E F0(:)A F1($include)144 165.6 Q F2(/etc/inputr)5.833 E(c)-.37 +E F1(Sear)87 182.4 Q(ching)-.18 E F0 .835(Readline pro)108 194.4 R .835 +(vides commands for searching through the command history \(see)-.15 F +/F3 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E +.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 206.4 Q +(There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E +(emental)-.37 E F0(and)3.01 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 +E .697(Incremental searches be)108 223.2 R .697 +(gin before the user has \214nished typing the search string.)-.15 F +.698(As each character of the)5.698 F .113 +(search string is typed, readline displays the ne)108 235.2 R .112 +(xt entry from the history matching the string typed so f)-.15 F(ar)-.1 +E 5.112(.A)-.55 G(n)-5.112 E .542 +(incremental search requires only as man)108 247.2 R 3.042(yc)-.15 G +.542(haracters as needed to \214nd the desired history entry)-3.042 F +5.542(.T)-.65 G .542(he char)-5.542 F(-)-.2 E .224 +(acters present in the v)108 259.2 R .224(alue of the)-.25 F F1(isear) +2.724 E(ch-terminators)-.18 E F0 -.25(va)2.724 G .224 +(riable are used to terminate an incremental search.).25 F .66 +(If that v)108 271.2 R .66(ariable has not been assigned a v)-.25 F .66 +(alue the Escape and Control-J characters will terminate an incre-)-.25 +F .097(mental search.)108 283.2 R .096(Control-G will abort an incremen\ +tal search and restore the original line.)5.097 F .096 +(When the search is)5.096 F(terminated, the history entry containing th\ +e search string becomes the current line.)108 295.2 Q 2.938 -.8(To \214) +108 312 T 1.339(nd other matching entries in the history list, type Con\ +trol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675 +(search backw)108 324 R .675(ard or forw)-.1 F .675 +(ard in the history for the ne)-.1 F .674 +(xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.674 +(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 336 R .474 -.15(ey s)-.1 H +.174 +(equence bound to a readline command will terminate the search and e).15 +F -.15(xe)-.15 G .175(cute that command.).15 F -.15(Fo)5.175 G(r).15 E +.541(instance, a)108 348 R F2(ne)3.041 E(wline)-.15 E F0 .541 +(will terminate the search and accept the line, thereby e)3.041 F -.15 +(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 360 Q +.653(Readline remembers the last incremental search string.)108 376.8 R +.653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an) +-3.153 F 3.153(yi)-.15 G(nterv)-3.153 E(en-)-.15 E +(ing characters de\214ning a ne)108 388.8 Q 2.5(ws)-.25 G +(earch string, an)-2.5 E 2.5(yr)-.15 G(emembered search string is used.) +-2.5 E .567(Non-incremental searches read the entire search string befo\ +re starting to search for matching history lines.)108 405.6 R(The searc\ +h string may be typed by the user or be part of the contents of the cur\ +rent line.)108 417.6 Q F1(Readline Command Names)87 434.4 Q F0 1.391 +(The follo)108 446.4 R 1.391 +(wing is a list of the names of the commands and the def)-.25 F 1.391 +(ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F +3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 458.4 R .122 +(names without an accompan)2.622 F .122(ying k)-.15 F .421 -.15(ey s)-.1 +H .121(equence are unbound by def).15 F 2.621(ault. In)-.1 F .121 +(the follo)2.621 F(wing)-.25 E(descriptions,)108 470.4 Q F2(point)3.41 E +F0 .91(refers to the current cursor position, and)3.41 F F2(mark)3.411 E +F0 .911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db) +.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 482.4 Q F0 2.5 +(command. The)2.5 F(te)2.5 E +(xt between the point and mark is referred to as the)-.15 E F2 -.37(re) +2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 499.2 Q(or Mo)-.25 E(ving)-.1 +E(beginning\255of\255line \(C\255a\))108 511.2 Q F0(Mo)144 523.2 Q .3 +-.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1 +(end\255of\255line \(C\255e\))108 535.2 Q F0(Mo)144 547.2 Q .3 -.15 +(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 +559.2 S(rward\255char \(C\255f\)).25 E F0(Mo)144 571.2 Q .3 -.15(ve f) +-.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1 +(backward\255char \(C\255b\))108 583.2 Q F0(Mo)144 595.2 Q .3 -.15(ve b) +-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 607.2 S(rward\255w) +.25 E(ord \(M\255f\))-.1 E F0(Mo)144 619.2 Q .823 -.15(ve f)-.15 H(orw) +.15 E .523(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W) +-.1 F .522(ords are composed of alphanumeric characters \(let-)-.8 F +(ters and digits\).)144 631.2 Q F1(backward\255w)108 643.2 Q +(ord \(M\255b\))-.1 E F0(Mo)144 655.2 Q 1.71 -.15(ve b)-.15 H 1.41 +(ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91 +(ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F +(characters \(letters and digits\).)144 667.2 Q F1(shell\255f)108 679.2 +Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 691.2 Q .784 -.15(ve f)-.15 H +(orw).15 E .484(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984 +(ord. W)-.1 F .484(ords are delimited by non-quoted shell metacharac-) +-.8 F(ters.)144 703.2 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E +(43)192.055 E 0 Cg EP %%Page: 44 44 %%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.969(mode. In)144 84 R -.15(ove)3.969 G 1.469 -(rwrite mode, characters bound to).15 F/F1 10/Times-Bold@0 SF -(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 96 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 108 Q(By def)5 E -(ault, this command is unbound.)-.1 E F1(Killing and Y)87 124.8 Q -(anking)-.85 E(kill\255line \(C\255k\))108 136.8 Q F0(Kill the te)144 -148.8 Q(xt from point to the end of the line.)-.15 E F1 -(backward\255kill\255line \(C\255x Rubout\))108 160.8 Q F0(Kill backw) -144 172.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 -(unix\255line\255discard \(C\255u\))108 184.8 Q F0(Kill backw)144 196.8 -Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E -(The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt) --2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 208.8 Q F0 -(Kill all characters on the current line, no matter where point is.)144 -220.8 Q F1(kill\255w)108 232.8 Q(ord \(M\255d\))-.1 E F0 .729 -(Kill from point to the end of the current w)144 244.8 R .728 -(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728 -(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 256.8 S -(rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G -(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 268.8 Q -(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 280.8 Q(ord behind point.) --.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1 -(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 292.8 Q -(ord \(M\255d\))-.1 E F0 .728 -(Kill from point to the end of the current w)144 304.8 R .729 -(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F .729 -(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 316.8 S -(rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E -(orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w) -108 328.8 Q(ord \(M\255Rubout\))-.1 E F0 3.025(Kill the w)144 340.8 R -3.025(ord behind point.)-.1 F -.8(Wo)8.025 G 3.025 -(rd boundaries are the same as those used by).8 F F1(shell\255back-) -5.525 E(ward\255w)144 352.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 364.8 Q -(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 376.8 R .364 -(ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1 -F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 -(ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144 -388.8 Q F1(unix\255\214lename\255rubout)108 400.8 Q F0 .167(Kill the w) -144 412.8 R .166 -(ord behind point, using white space and the slash character as the w) --.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 424.8 Q -(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.) --2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 436.8 Q F0 -(Delete all spaces and tabs around point.)144 448.8 Q F1(kill\255r)108 -460.8 Q(egion)-.18 E F0(Kill the te)144 472.8 Q(xt in the current re) --.15 E(gion.)-.15 E F1(copy\255r)108 484.8 Q(egion\255as\255kill)-.18 E -F0(Cop)144 496.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E -(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1 -(copy\255backward\255w)108 508.8 Q(ord)-.1 E F0(Cop)144 520.8 Q 4.8(yt) --.1 G 2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E -(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301 -(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 -532.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 544.8 Q(orward\255w)-.25 E -(ord)-.1 E F0(Cop)144 556.8 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008 -(ord follo)-.1 F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 -E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007 -(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G -(ward\255w)144 568.8 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 580.8 Q -F0 -1(Ya)144 592.8 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 604.8 Q F0 -(Rotate the kill ring, and yank the ne)144 616.8 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 633.6 Q -(guments)-.1 E(digit\255ar)108 645.6 Q -(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .641 -(Add this digit to the ar)144 657.6 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 669.6 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1 -(uni)108 681.6 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .779 -(This is another w)144 693.6 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 -705.6 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 -717.6 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 729.6 R .898 -(As a special case, if this command is immediately follo)5.898 F .898 -(wed by a character that is)-.25 F(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(44)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(shell\255backward\255w)108 84 Q(ord)-.1 E F0(Mo)144 96 Q .908 -.15 +(ve b)-.15 H .609(ack to the start of the current or pre).15 F .609 +(vious w)-.25 F 3.109(ord. W)-.1 F .609 +(ords are delimited by non-quoted shell)-.8 F(metacharacters.)144 108 Q +F1(clear\255scr)108 120 Q(een \(C\255l\))-.18 E F0 .993 +(Clear the screen lea)144 132 R .993 +(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G +.993(th an ar).4 F .993(gument, refresh the)-.18 F +(current line without clearing the screen.)144 144 Q F1 -.18(re)108 156 +S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144 +168 Q F1(Commands f)87 184.8 Q(or Manipulating the History)-.25 E +(accept\255line \(Newline, Retur)108 196.8 Q(n\))-.15 E F0 .158 +(Accept the line re)144 208.8 R -.05(ga)-.15 G .158 +(rdless of where the cursor is.).05 F .158(If this line is non-empty) +5.158 F 2.659(,a)-.65 G .159(dd it to the history list)-2.659 F .699 +(according to the state of the)144 220.8 R/F2 9/Times-Bold@0 SF +(HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)2.949 G 3.199(riable. If).25 F +.699(the line is a modi\214ed history line, then)3.199 F +(restore the history line to its original state.)144 232.8 Q F1(pr)108 +244.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 +(Fetch the pre)144 256.8 Q(vious command from the history list, mo)-.25 +E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 268.8 +Q F0(Fetch the ne)144 280.8 Q(xt command from the history list, mo)-.15 +E(ving forw)-.15 E(ard in the list.)-.1 E F1 +(beginning\255of\255history \(M\255<\))108 292.8 Q F0(Mo)144 304.8 Q .3 +-.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.) +-.65 E F1(end\255of\255history \(M\255>\))108 316.8 Q F0(Mo)144 328.8 Q +.3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5 +(,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18 +(re v)108 340.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 +1.47(Search backw)144 352.8 R 1.471 +(ard starting at the current line and mo)-.1 F 1.471 +(ving `up' through the history as necessary)-.15 F(.)-.65 E +(This is an incremental search.)144 364.8 Q F1 -.25(fo)108 376.8 S +(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132 +(Search forw)144 388.8 R 1.132(ard starting at the current line and mo) +-.1 F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary) +-.25 F(.)-.65 E(This is an incremental search.)144 400.8 Q F1 +(non\255incr)108 412.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H +(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .164(Search backw) +144 424.8 R .164(ard through the history starting at the current line u\ +sing a non-incremental search for)-.1 F 2.5(as)144 436.8 S +(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 448.8 Q +(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 +E F0 1.354(Search forw)144 460.8 R 1.354(ard through the history using \ +a non-incremental search for a string supplied by the)-.1 F(user)144 +472.8 Q(.)-.55 E F1(history\255sear)108 484.8 Q(ch\255f)-.18 E(orward) +-.25 E F0 .248(Search forw)144 496.8 R .249(ard through the history for\ + the string of characters between the start of the current line)-.1 F +(and the point.)144 508.8 Q(This is a non-incremental search.)5 E F1 +(history\255sear)108 520.8 Q(ch\255backward)-.18 E F0 .951(Search backw) +144 532.8 R .951(ard through the history for the string of characters b\ +etween the start of the current)-.1 F(line and the point.)144 544.8 Q +(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 556.8 Q +2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 +568.8 R .622(gument to the pre)-.18 F .622 +(vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F +.622(vious line\))-.25 F .795(at point.)144 580.8 R -.4(Wi)5.795 G .794 +(th an ar).4 F(gument)-.18 E/F3 10/Times-Italic@0 SF(n)3.294 E F0 3.294 +(,i).24 G .794(nsert the)-3.294 F F3(n)3.294 E F0 .794(th w)B .794 +(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .794 +(ords in the)-.1 F(pre)144 592.8 Q .291(vious command be)-.25 F .291 +(gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a) +-2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291 +(ument inserts the).18 F F3(n)2.791 E F0 .291(th w)B .292 +(ord from the end of)-.1 F .282(the pre)144 604.8 R .282(vious command.) +-.25 F .282(Once the ar)5.282 F(gument)-.18 E F3(n)2.781 E F0 .281 +(is computed, the ar)2.781 F .281(gument is e)-.18 F .281 +(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 616.8 Q +(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 628.8 Q +2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307 +(Insert the last ar)144 640.8 R 1.307(gument to the pre)-.18 F 1.307 +(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308 +(vious history entry\).)-.25 F -.4(Wi)144 652.8 S .204(th a numeric ar) +.4 F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F +(e)-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi) +-5.203 E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar) +2.703 E(g)-.1 E F0(mo)144 664.8 Q .806 -.15(ve b)-.15 H .507 +(ack through the history list, inserting the last w).15 F .507 +(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E +1.397(to the \214rst call\) of each line in turn.)144 676.8 R(An)6.396 E +3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.396 +(gument supplied to these successi)-.18 F 1.696 -.15(ve c)-.25 H(alls) +.15 E .491(determines the direction to mo)144 688.8 R .791 -.15(ve t) +-.15 H .491(hrough the history).15 F 5.492(.A)-.65 G(ne)-2.5 E -.05(ga) +-.15 G(ti).05 E .792 -.15(ve a)-.25 H -.18(rg).15 G .492 +(ument switches the direction).18 F .494 +(through the history \(back or forw)144 700.8 R 2.994(ard\). The)-.1 F +.494(history e)2.994 F .494(xpansion f)-.15 F .494 +(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144 +712.8 S(rd, as if the "!$" history e).1 E +(xpansion had been speci\214ed.)-.15 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(44)192.055 E 0 Cg EP %%Page: 45 45 %%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 .243(neither a digit or minus sign, the ar)144 84 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 96 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 108 Q 2.5(,as)-.4 G(econd time mak) --2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E/F1 10 -/Times-Bold@0 SF(Completing)87 124.8 Q(complete \(T)108 136.8 Q(AB\))-.9 -E F0 1.137(Attempt to perform completion on the te)144 148.8 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 160.8 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 172.8 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 184.8 Q F1 -(possible\255completions \(M\255?\))108 196.8 Q F0 -(List the possible completions of the te)144 208.8 Q(xt before point.) --.15 E F1(insert\255completions \(M\255*\))108 220.8 Q F0 .783 -(Insert all completions of the te)144 232.8 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 -244.8 Q F0(.)A F1(menu\255complete)108 256.8 Q F0 .929(Similar to)144 -268.8 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 280.8 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 292.8 R .828 -(At the end of the list of completions, the bell is rung)5.828 F .727 -(\(subject to the setting of)144 304.8 R F1(bell\255style)3.227 E F0 -3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F -.727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227 -E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.228 E F0 1.73 -(positions forw)144 316.8 R 1.73(ard in the list of matches; a ne)-.1 F --.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73 -(ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1 -E(through the list.)144 328.8 Q(This command is intended to be bound to) -5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E -(ault.)-.1 E F1(menu\255complete\255backward)108 340.8 Q F0 .82 -(Identical to)144 352.8 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 -(ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 -(ard through the list of possible completions, as if)-.1 F F1 -(menu\255complete)144 364.8 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 -(nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) -.15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E -F1(delete\255char\255or\255list)108 376.8 Q F0 .234 -(Deletes the character under the cursor if not at the be)144 388.8 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 400.8 R -.15 -(ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1 -(possible\255completions)2.925 E F0 5.425(.T)C .425 -(his command is unbound)-5.425 F(by def)144 412.8 Q(ault.)-.1 E F1 -(complete\255\214lename \(M\255/\))108 424.8 Q F0 -(Attempt \214lename completion on the te)144 436.8 Q(xt before point.) --.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 448.8 Q -F0(List the possible completions of the te)144 460.8 Q -(xt before point, treating it as a \214lename.)-.15 E F1 -(complete\255user)108 472.8 Q(name \(M\255~\))-.15 E F0 -(Attempt completion on the te)144 484.8 Q -(xt before point, treating it as a username.)-.15 E F1(possible\255user) -108 496.8 Q(name\255completions \(C\255x ~\))-.15 E F0 -(List the possible completions of the te)144 508.8 Q -(xt before point, treating it as a username.)-.15 E F1(complete\255v)108 -520.8 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 -532.8 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E -F1(possible\255v)108 544.8 Q(ariable\255completions \(C\255x $\))-.1 E -F0(List the possible completions of the te)144 556.8 Q -(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(complete\255hostname \(M\255@\))108 568.8 Q F0 -(Attempt completion on the te)144 580.8 Q -(xt before point, treating it as a hostname.)-.15 E F1 -(possible\255hostname\255completions \(C\255x @\))108 592.8 Q F0 -(List the possible completions of the te)144 604.8 Q -(xt before point, treating it as a hostname.)-.15 E F1 -(complete\255command \(M\255!\))108 616.8 Q F0 .581 -(Attempt completion on the te)144 628.8 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 640.8 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 652.8 Q -.15(xe)-.15 G -(cutable \214lenames, in that order).15 E(.)-.55 E F1 -(possible\255command\255completions \(C\255x !\))108 664.8 Q F0 -(List the possible completions of the te)144 676.8 Q -(xt before point, treating it as a command name.)-.15 E F1 -(dynamic\255complete\255history \(M\255T)108 688.8 Q(AB\))-.9 E F0 .425 -(Attempt completion on the te)144 700.8 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 712.8 Q(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(45)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(shell\255expand\255line \(M\255C\255e\))108 84 Q F0 .622 +(Expand the line as the shell does.)144 96 R .622 +(This performs alias and history e)5.622 F .623 +(xpansion as well as all of the)-.15 F(shell w)144 108 Q(ord e)-.1 E 2.5 +(xpansions. See)-.15 F/F2 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25 +(YE)-.315 G(XP)-2.25 E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G +(or a description of history e)-2.5 E(xpansion.)-.15 E F1 +(history\255expand\255line \(M\255^\))108 120 Q F0 .939 +(Perform history e)144 132 R .939(xpansion on the current line.)-.15 F +(See)5.939 E F2(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E +(ANSION)-.666 E F0(belo)3.189 E 3.438(wf)-.25 G .938(or a descrip-) +-3.438 F(tion of history e)144 144 Q(xpansion.)-.15 E F1(magic\255space) +108 156 Q F0 1.626(Perform history e)144 168 R 1.626 +(xpansion on the current line and insert a space.)-.15 F(See)6.627 E F2 +(HIST)4.127 E(OR)-.162 E 3.877(YE)-.315 G(XP)-3.877 E(ANSION)-.666 E F0 +(belo)144 180 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E +(xpansion.)-.15 E F1(alias\255expand\255line)108 192 Q F0 .395 +(Perform alias e)144 204 R .395(xpansion on the current line.)-.15 F +(See)5.395 E F2(ALIASES)2.895 E F0(abo)2.645 E .694 -.15(ve f)-.15 H +.394(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 216 Q F1 +(history\255and\255alias\255expand\255line)108 228 Q F0 +(Perform history and alias e)144 240 Q(xpansion on the current line.) +-.15 E F1(insert\255last\255ar)108 252 Q(gument \(M\255.)-.1 E 2.5(,M) +.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 264 S(ynon)-2.5 E(ym for) +-.15 E F1(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F1 +(operate\255and\255get\255next \(C\255o\))108 276 Q F0 .947 +(Accept the current line for e)144 288 R -.15(xe)-.15 G .948 +(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.248 -.15 +(ve t)-.25 H 3.448(ot).15 G .948(he current line from the)-3.448 F +(history for editing.)144 300 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G +(ument is ignored.).18 E F1 +(edit\255and\255execute\255command \(C\255xC\255e\))108 312 Q F0(In)144 +324 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 +(ditor on the current command line, and e)-3.526 F -.15(xe)-.15 G 1.026 +(cute the result as shell commands.).15 F F1(Bash)6.026 E F0 +(attempts to in)144 336 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL) +-.54 E/F3 9/Times-Roman@0 SF(,)A F2($EDIT)2.25 E(OR)-.162 E F3(,)A F0 +(and)2.25 E/F4 10/Times-Italic@0 SF(emacs)2.5 E F0(as the editor)2.5 E +2.5(,i)-.4 G 2.5(nt)-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87 +352.8 Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 364.8 +Q F1(\(usually C\255d\))2.5 E F0 .798 +(The character indicating end-of-\214le as set, for e)144 376.8 R .799 +(xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.299 +(ft)-5.799 G .799(his character is read when)-3.299 F .592 +(there are no characters on the line, and point is at the be)144 388.8 R +.592(ginning of the line, Readline interprets it)-.15 F +(as the end of input and returns)144 400.8 Q F2(EOF)2.5 E F3(.)A F1 +(delete\255char \(C\255d\))108 412.8 Q F0 .441 +(Delete the character at point.)144 424.8 R .442 +(If this function is bound to the same character as the tty)5.441 F F1 +(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 436.8 Q 2.5(,a)-.4 G(s) +-2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H +(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) +108 448.8 Q F0 .553(Delete the character behind the cursor)144 460.8 R +5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553 +(umeric ar)-3.053 F .552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552 +(he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 472.8 Q F1 +-.25(fo)108 484.8 S(rward\255backward\255delete\255char).25 E F0 .473 +(Delete the character under the cursor)144 496.8 R 2.973(,u)-.4 G .474 +(nless the cursor is at the end of the line, in which case the)-2.973 F +(character behind the cursor is deleted.)144 508.8 Q F1 +(quoted\255insert \(C\255q, C\255v\))108 520.8 Q F0 .779(Add the ne)144 +532.8 R .779(xt character typed to the line v)-.15 F 3.279 +(erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279 +G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.278 E F0 3.278 +(,f)C(or)-3.278 E -.15(ex)144 544.8 S(ample.).15 E F1 +(tab\255insert \(C\255v T)108 556.8 Q(AB\))-.9 E F0 +(Insert a tab character)144 568.8 Q(.)-.55 E F1 +(self\255insert \(a, b, A, 1, !, ...\))108 580.8 Q F0 +(Insert the character typed.)144 592.8 Q F1 +(transpose\255chars \(C\255t\))108 604.8 Q F0 .321 +(Drag the character before point forw)144 616.8 R .321(ard o)-.1 F -.15 +(ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322 +(ving point forw)-.15 F .322(ard as well.)-.1 F 1.182 +(If point is at the end of the line, then this transposes the tw)144 +628.8 R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E +-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 640.8 Q(guments ha)-.18 E +.3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 +(transpose\255w)108 652.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 +664.8 R .023(ord before point past the w)-.1 F .023(ord after point, mo) +-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w) +-2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F +(is at the end of the line, this transposes the last tw)144 676.8 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 688.8 Q +(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 +700.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F +-.05(ga)-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698 +(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 712.8 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E(GNU Bash 4.4)72 768 +Q(2016 August 26)142.895 E(45)192.055 E 0 Cg EP %%Page: 46 46 %%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(dab)108 84 Q(br)-.1 E -.15(ev)-.18 G -(\255expand).15 E F0 .61(Attempt menu completion on the te)144 96 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 108 Q F1 -(complete\255into\255braces \(M\255{\))108 120 Q F0 .4(Perform \214lena\ -me completion and insert the list of possible completions enclosed with\ -in braces so)144 132 R(the list is a)144 144 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 160.8 S(yboard Macr).25 E(os)-.18 -E(start\255kbd\255macr)108 172.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) -.833 E F0(Be)144 184.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 196.8 Q 2.5(o\()-.18 G -(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 208.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 220.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 232.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey) --.1 G .999(board macro de\214ned, by making the characters in the macro\ - appear as if).15 F(typed at the k)144 244.8 Q -.15(ey)-.1 G(board.).15 -E F1(print\255last\255kbd\255macr)108 256.8 Q 2.5(o\()-.18 G(\))-2.5 E -F0(Print the last k)144 268.8 Q -.15(ey)-.1 G -(board macro de\214ned in a format suitable for the).15 E/F2 10 -/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1 -(Miscellaneous)87 285.6 Q -.18(re)108 297.6 S.18 E -(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777 -(Read in the contents of the)144 309.6 R F2(inputr)4.277 E(c)-.37 E F0 -1.776(\214le, and incorporate an)4.276 F 4.276(yb)-.15 G 1.776 -(indings or v)-4.276 F 1.776(ariable assignments)-.25 F(found there.)144 -321.6 Q F1(abort \(C\255g\))108 333.6 Q F0 3.248 -(Abort the current editing command and ring the terminal')144 345.6 R -5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1 -(bell\255style)144 357.6 Q F0(\).)A F1(do\255upper)108 369.6 Q -(case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.) -C(..\))-2.5 E F0 1.756(If the meta\214ed character)144 381.6 R F2(x) -4.256 E F0 1.755(is lo)4.256 F 1.755 -(wercase, run the command that is bound to the corresponding)-.25 F -(uppercase character)144 393.6 Q(.)-.55 E F1(pr)108 405.6 Q -(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 417.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 429.6 Q F0 -(Incremental undo, separately remembered for each line.)144 441.6 Q F1 --2.29 -.18(re v)108 453.6 T(ert\255line \(M\255r\)).08 E F0 1.095 -(Undo all changes made to this line.)144 465.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 477.6 Q F1 -(tilde\255expand \(M\255&\))108 489.6 Q F0(Perform tilde e)144 501.6 Q -(xpansion on the current w)-.15 E(ord.)-.1 E F1 -(set\255mark \(C\255@, M\255\))108 513.6 Q F0 -(Set the mark to the point.)144 525.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 537.6 Q F0(Sw) -144 549.6 Q .283(ap the point with the mark.)-.1 F .283 -(The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G -2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa) -144 561.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 573.6 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 -585.6 S .535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G -3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 -(xt occurrence of that character)-.15 F 5.536(.A)-.55 G(ne)-2.5 E -.05 -(ga)-.15 G(ti).05 E .836 -.15(ve c)-.25 H(ount).15 E(searches for pre) -144 597.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 609.6 Q -(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 621.6 S 1.044 -(haracter is read and point is mo)-3.544 F -.15(ve)-.15 G 3.544(dt).15 G -3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 -(vious occurrence of that character)-.25 F 6.043(.A)-.55 G(ne)-2.5 E --.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G -(count searches for subsequent occurrences.)144 633.6 Q F1 -(skip\255csi\255sequence)108 645.6 Q F0 1.826 -(Read enough characters to consume a multi-k)144 657.6 R 2.126 -.15 -(ey s)-.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey) --.1 G 4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 669.6 R -.791(Such sequences be)5.791 F .791 -(gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F -.331(If this sequence is bound to "\\[", k)144 681.6 R -.15(ey)-.1 G -2.831(sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15 -(ve n)-.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F -(xplic-)-.15 E .026(itly bound to a readline command, instead of insert\ -ing stray characters into the editing b)144 693.6 R(uf)-.2 E(fer)-.25 E -5.026(.T)-.55 G(his)-5.026 E(is unbound by def)144 705.6 Q(ault, b)-.1 E -(ut usually bound to ESC\255[.)-.2 E(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(46)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(do)108 84 Q(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 96 Q +1.647(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147 +(ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15 +(ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre) +-.25 F(vious)-.25 E -.1(wo)144 108 S(rd, b).1 E(ut do not mo)-.2 E .3 +-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 120 Q +(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 132 +R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga) +-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974 +(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 144 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 156 +S(rwrite\255mode).1 E F0 -.8(To)144 168 S .437(ggle o).8 F -.15(ve)-.15 +G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437 +(xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438 +(gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4 +(Wi)144 180 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 +-.15(ve n)-.25 H .781(umeric ar).15 F .781 +(gument, switches to insert mode.)-.18 F .78(This command af)5.781 F +(fects)-.25 E(only)144 192 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi) +4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15 +F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F2 10 +/Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895 +(starts in insert)4.395 F 3.969(mode. In)144 204 R -.15(ove)3.969 G +1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E +F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F +.957(pushing the te)144 216 R .957(xt to the right.)-.15 F .958 +(Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0 +.958(replace the character)3.458 F(before point with a space.)144 228 Q +(By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87 +244.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 256.8 Q F0 +(Kill the te)144 268.8 Q(xt from point to the end of the line.)-.15 E F1 +(backward\255kill\255line \(C\255x Rubout\))108 280.8 Q F0(Kill backw) +144 292.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 +(unix\255line\255discard \(C\255u\))108 304.8 Q F0(Kill backw)144 316.8 +Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E +(The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt) +-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 328.8 Q F0 +(Kill all characters on the current line, no matter where point is.)144 +340.8 Q F1(kill\255w)108 352.8 Q(ord \(M\255d\))-.1 E F0 .729 +(Kill from point to the end of the current w)144 364.8 R .728 +(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728 +(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 376.8 S +(rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G +(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 388.8 Q +(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 400.8 Q(ord behind point.) +-.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1 +(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 412.8 Q +(ord)-.1 E F0 .728(Kill from point to the end of the current w)144 424.8 +R .729(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F +.729(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 436.8 S +(rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E +(orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w) +108 448.8 Q(ord)-.1 E F0 3.025(Kill the w)144 460.8 R 3.025 +(ord behind point.)-.1 F -.8(Wo)8.025 G 3.025 +(rd boundaries are the same as those used by).8 F F1(shell\255back-) +5.525 E(ward\255w)144 472.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 484.8 Q +(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 496.8 R .364 +(ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1 +F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 +(ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144 +508.8 Q F1(unix\255\214lename\255rubout)108 520.8 Q F0 .167(Kill the w) +144 532.8 R .166 +(ord behind point, using white space and the slash character as the w) +-.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 544.8 Q +(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.) +-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 556.8 Q F0 +(Delete all spaces and tabs around point.)144 568.8 Q F1(kill\255r)108 +580.8 Q(egion)-.18 E F0(Kill the te)144 592.8 Q(xt in the current re) +-.15 E(gion.)-.15 E F1(copy\255r)108 604.8 Q(egion\255as\255kill)-.18 E +F0(Cop)144 616.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E +(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1 +(copy\255backward\255w)108 628.8 Q(ord)-.1 E F0(Cop)144 640.8 Q 4.8(yt) +-.1 G 2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E +(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301 +(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 +652.8 Q(ord)-.1 E F0(.)A F1(copy\255f)108 664.8 Q(orward\255w)-.25 E +(ord)-.1 E F0(Cop)144 676.8 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008 +(ord follo)-.1 F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 +E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007 +(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G +(ward\255w)144 688.8 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 700.8 Q +F0 -1(Ya)144 712.8 S(nk the top of the kill ring into the b)1 E(uf)-.2 E +(fer at point.)-.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(46) +192.055 E 0 Cg EP %%Page: 47 47 %%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(insert\255comment \(M\255#\))108 84 Q F0 --.4(Wi)144 96 S .48(thout a numeric ar).4 F .48(gument, the v)-.18 F -.481(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 -.25(va) -2.981 G .481(riable is inserted at the).25 F(be)144 108 Q .098 -(ginning of the current line.)-.15 F .098(If a numeric ar)5.098 F .097 -(gument is supplied, this command acts as a toggle:)-.18 F(if)5.097 E -.321(the characters at the be)144 120 R .321 -(ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1 -(comment\255begin)2.821 E F0 2.822(,t)C .322(he v)-2.822 F .322(alue is) --.25 F .832(inserted, otherwise the characters in)144 132 R F1 -(comment\255begin)3.332 E F0 .831(are deleted from the be)3.332 F .831 -(ginning of the line.)-.15 F 1.468 -(In either case, the line is accepted as if a ne)144 144 R 1.468 -(wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F -1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 156 Q F0 .84 -(causes this command to mak)3.34 F 3.339(et)-.1 G .839 -(he current line a shell comment.)-3.339 F .839(If a numeric ar)5.839 F -(gu-)-.18 E(ment causes the comment character to be remo)144 168 Q -.15 -(ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G -(cuted by the shell.).15 E F1(glob\255complete\255w)108 180 Q -(ord \(M\255g\))-.1 E F0 .791(The w)144 192 R .791 -(ord before point is treated as a pattern for pathname e)-.1 F .792 -(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 204 -R(pattern is used to generate a list of matching \214lenames for possib\ -le completions.)2.5 E F1(glob\255expand\255w)108 216 Q(ord \(C\255x *\)) --.1 E F0 .176(The w)144 228 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 240 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 252 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) -108 264 Q F0 .923(The list of e)144 276 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 288 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 300 S(pansion.).15 E F1(dump\255functions)108 312 Q F0 .627 -(Print all of the functions and their k)144 324 R .927 -.15(ey b)-.1 H -.626(indings to the readline output stream.).15 F .626(If a numeric ar) -5.626 F(gu-)-.18 E -(ment is supplied, the output is formatted in such a w)144 336 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 348 Q(ariables)-.1 E F0 -1.799(Print all of the settable readline v)144 360 R 1.799 -(ariables and their v)-.25 F 1.8(alues to the readline output stream.) --.25 F 1.8(If a)6.8 F .305(numeric ar)144 372 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 384 Q(c)-.37 E F0 -(\214le.)2.5 E F1(dump\255macr)108 396 Q(os)-.18 E F0 .592 -(Print all of the readline k)144 408 R .892 -.15(ey s)-.1 H .592 -(equences bound to macros and the strings the).15 F 3.093(yo)-.15 G -3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 420 Q -.528(gument is supplied, the output is formatted in such a w)-.18 F .528 -(ay that it can be made part of an)-.1 F F2(inputr)3.027 E(c)-.37 E F0 -(\214le.)144 432 Q F1(display\255shell\255v)108 444 Q -(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 456 Q -(ersion information about the current instance of)-.15 E F1(bash)2.5 E -F0(.)A F1(Pr)87 472.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 -484.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 496.8 Q F0 3.829(\)h)C 1.329 -(as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu) -3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829 -F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.328(w\), the) --.25 F(programmable completion f)108 508.8 Q(acilities are in)-.1 E -.2 -(vo)-.4 G -.1(ke).2 G(d.).1 E .497 -(First, the command name is identi\214ed.)108 525.6 R .497 -(If the command w)5.497 F .498 -(ord is the empty string \(completion attempted at)-.1 F .234(the be)108 -537.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 -(ompspec de\214ned with the)-2.733 F F12.733 E F0 .233(option to) -2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .233(If a comp-) -5.233 F .481(spec has been de\214ned for that command, the compspec is \ -used to generate the list of possible completions)108 549.6 R .823 -(for the w)108 561.6 R 3.323(ord. If)-.1 F .823(the command w)3.323 F -.822(ord is a full pathname, a compspec for the full pathname is search\ -ed for)-.1 F 2.866(\214rst. If)108 573.6 R .367(no compspec is found fo\ -r the full pathname, an attempt is made to \214nd a compspec for the po\ -rtion)2.866 F(follo)108 585.6 Q .299(wing the \214nal slash.)-.25 F .298 -(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15 -G .298(ompspec de\214ned with the)-2.798 F F12.798 E F0(option to) -108 597.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 614.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 626.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 .464 -(First, the actions speci\214ed by the compspec are used.)108 643.2 R -.463(Only matches which are pre\214x)5.464 F .463(ed by the w)-.15 F -.463(ord being)-.1 F .595(completed are returned.)108 655.2 R .595 -(When the)5.595 F F13.095 E F0(or)3.095 E F13.095 E F0 .596 -(option is used for \214lename or directory name completion, the)3.095 F -(shell v)108 667.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0 -(is used to \214lter the matches.)2.25 E(An)108 684 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 696 S -.554(rds generated by the pattern need not match the w).1 F .555 -(ord being completed.)-.1 F(The)5.555 E F3(GLOBIGNORE)3.055 E F0 .555 -(shell v)2.805 F(ari-)-.25 E -(able is not used to \214lter the matches, b)108 708 Q(ut the)-.2 E F3 -(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 724.8 Q -.321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 -F F12.821 E F0 .32(option is considered.)2.821 F .32 -(The string is \214rst split using the)5.32 F(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(47)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(yank\255pop \(M\255y\))108 84 Q F0 +(Rotate the kill ring, and yank the ne)144 96 Q 2.5(wt)-.25 G 2.5 +(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E +F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 112.8 Q +(guments)-.1 E(digit\255ar)108 124.8 Q +(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367 +(Add this digit to the ar)144 136.8 R .367 +(gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18 +(rg)-2.867 G 2.867(ument. M\255\255).18 F .367(starts a ne)2.867 F -.05 +(ga)-.15 G(-).05 E(ti)144 148.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G +(ument.).18 E F1(uni)108 160.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 +E F0 .779(This is another w)144 172.8 R .779(ay to specify an ar)-.1 F +3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778 +(wed by one or more digits,)-.25 F 1.376 +(optionally with a leading minus sign, those digits de\214ne the ar)144 +184.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 +196.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) +3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17 +(ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other) +-.2 F(-)-.2 E .898(wise ignored.)144 208.8 R .898 +(As a special case, if this command is immediately follo)5.898 F .898 +(wed by a character that is)-.25 F 1.23 +(neither a digit nor minus sign, the ar)144 220.8 R 1.23 +(gument count for the ne)-.18 F 1.23(xt command is multiplied by four) +-.15 F(.)-.55 E .822(The ar)144 232.8 R .822 +(gument count is initially one, so e)-.18 F -.15(xe)-.15 G .823 +(cuting this function the \214rst time mak).15 F .823(es the ar)-.1 F +(gument)-.18 E(count four)144 244.8 Q 2.5(,as)-.4 G(econd time mak)-2.5 +E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing) +87 261.6 Q(complete \(T)108 273.6 Q(AB\))-.9 E F0 1.137 +(Attempt to perform completion on the te)144 285.6 R 1.137 +(xt before point.)-.15 F F1(Bash)6.137 E F0 1.137 +(attempts completion treating the)3.637 F(te)144 297.6 Q .532(xt as a v) +-.15 F .532(ariable \(if the te)-.25 F .532(xt be)-.15 F .533(gins with) +-.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .533(xt be)-.15 F +.533(gins with)-.15 F F1(~)3.033 E F0 .533(\), hostname \(if the)B(te) +144 309.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701 +(\), or command \(including aliases and functions\) in turn.)B .701 +(If none of these pro-)5.701 F +(duces a match, \214lename completion is attempted.)144 321.6 Q F1 +(possible\255completions \(M\255?\))108 333.6 Q F0 +(List the possible completions of the te)144 345.6 Q(xt before point.) +-.15 E F1(insert\255completions \(M\255*\))108 357.6 Q F0 .783 +(Insert all completions of the te)144 369.6 R .783 +(xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H +.783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144 +381.6 Q F0(.)A F1(menu\255complete)108 393.6 Q F0 .929(Similar to)144 +405.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629 +F .929(ord to be completed with a single match from the list of)-.1 F +1.193(possible completions.)144 417.6 R 1.193(Repeated e)6.193 F -.15 +(xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194 +(steps through the list of possible)3.694 F .829 +(completions, inserting each match in turn.)144 429.6 R .828 +(At the end of the list of completions, the bell is rung)5.828 F .727 +(\(subject to the setting of)144 441.6 R F1(bell\255style)3.227 E F0 +3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F +.727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227 +E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.228 E F0 1.73 +(positions forw)144 453.6 R 1.73(ard in the list of matches; a ne)-.1 F +-.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73 +(ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1 +E(through the list.)144 465.6 Q(This command is intended to be bound to) +5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E +(ault.)-.1 E F1(menu\255complete\255backward)108 477.6 Q F0 .82 +(Identical to)144 489.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 +(ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 +(ard through the list of possible completions, as if)-.1 F F1 +(menu\255complete)144 501.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 +(nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) +.15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E +F1(delete\255char\255or\255list)108 513.6 Q F0 .234 +(Deletes the character under the cursor if not at the be)144 525.6 R +.234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char) +2.734 E F0(\).)A .425(If at the end of the line, beha)144 537.6 R -.15 +(ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1 +(possible\255completions)2.925 E F0 5.425(.T)C .425 +(his command is unbound)-5.425 F(by def)144 549.6 Q(ault.)-.1 E F1 +(complete\255\214lename \(M\255/\))108 561.6 Q F0 +(Attempt \214lename completion on the te)144 573.6 Q(xt before point.) +-.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 585.6 Q +F0(List the possible completions of the te)144 597.6 Q +(xt before point, treating it as a \214lename.)-.15 E F1 +(complete\255user)108 609.6 Q(name \(M\255~\))-.15 E F0 +(Attempt completion on the te)144 621.6 Q +(xt before point, treating it as a username.)-.15 E F1(possible\255user) +108 633.6 Q(name\255completions \(C\255x ~\))-.15 E F0 +(List the possible completions of the te)144 645.6 Q +(xt before point, treating it as a username.)-.15 E F1(complete\255v)108 +657.6 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 +669.6 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E +F1(possible\255v)108 681.6 Q(ariable\255completions \(C\255x $\))-.1 E +F0(List the possible completions of the te)144 693.6 Q +(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 +(complete\255hostname \(M\255@\))108 705.6 Q F0 +(Attempt completion on the te)144 717.6 Q +(xt before point, treating it as a hostname.)-.15 E(GNU Bash 4.4)72 768 +Q(2016 August 26)142.895 E(47)192.055 E 0 Cg EP %%Page: 48 48 %%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 .412(characters in the)108 84 R/F1 9/Times-Bold@0 SF(IFS)2.912 E -F0 .412(special v)2.662 F .412(ariable as delimiters.)-.25 F .412 -(Shell quoting is honored.)5.412 F .413(Each w)5.412 F .413 -(ord is then e)-.1 F(xpanded)-.15 E .092(using brace e)108 96 R .092 -(xpansion, tilde e)-.15 F .092(xpansion, parameter and v)-.15 F .092 -(ariable e)-.25 F .091(xpansion, command substitution, and arith-)-.15 F -1.396(metic e)108 108 R 1.396(xpansion, as described abo)-.15 F 1.696 --.15(ve u)-.15 H(nder).15 E F1(EXP)3.896 E(ANSION)-.666 E/F2 9 -/Times-Roman@0 SF(.)A F0 1.396 -(The results are split using the rules described)5.896 F(abo)108 120 Q -.51 -.15(ve u)-.15 H(nder).15 E/F3 10/Times-Bold@0 SF -.75(Wo)2.71 G .21 -(rd Splitting).75 F F0 5.21(.T)C .209(he results of the e)-5.21 F .209 -(xpansion are pre\214x-matched ag)-.15 F .209(ainst the w)-.05 F .209 -(ord being com-)-.1 F(pleted, and the matching w)108 132 Q -(ords become the possible completions.)-.1 E 1.237 -(After these matches ha)108 148.8 R 1.537 -.15(ve b)-.2 H 1.237 -(een generated, an).15 F 3.737(ys)-.15 G 1.238 -(hell function or command speci\214ed with the)-3.737 F F33.738 E -F0(and)3.738 E F33.738 E F0 3.376(options is in)108 160.8 R -.2 -(vo)-.4 G -.1(ke).2 G 5.875(d. When).1 F 3.375 -(the command or function is in)5.875 F -.2(vo)-.4 G -.1(ke).2 G 3.375 -(d, the).1 F F1(COMP_LINE)5.875 E F2(,)A F1(COMP_POINT)5.625 E F2(,)A F1 -(COMP_KEY)108 172.8 Q F2(,)A F0(and)2.407 E F1(COMP_TYPE)2.657 E F0 -.25 -(va)2.407 G .157(riables are assigned v).25 F .157 -(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F3 .158 -(Shell V)2.658 F(ariables)-.92 E F0 5.158(.I)C(f)-5.158 E 3.486(as)108 -184.8 S .986(hell function is being in)-3.486 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.985 E .346 -(the function or command is in)108 196.8 R -.2(vo)-.4 G -.1(ke).2 G .346 -(d, the \214rst ar).1 F .346(gument \()-.18 F F3($1)A F0 2.847(\)i)C -2.847(st)-2.847 G .347(he name of the command whose ar)-2.847 F(guments) --.18 E .264(are being completed, the second ar)108 208.8 R .264 -(gument \()-.18 F F3($2)A F0 2.764(\)i)C 2.764(st)-2.764 G .264(he w) --2.764 F .263(ord being completed, and the third ar)-.1 F .263 -(gument \()-.18 F F3($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 220.8 -R .628(ord preceding the w)-.1 F .629 -(ord being completed on the current command line.)-.1 F .629 -(No \214ltering of the generated)5.629 F .715(completions ag)108 232.8 R -.715(ainst the w)-.05 F .714(ord being completed is performed; the func\ -tion or command has complete free-)-.1 F(dom in generating the matches.) -108 244.8 Q(An)108 261.6 Q 2.937(yf)-.15 G .437 -(unction speci\214ed with)-2.937 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 .438(acilities, including)-.1 F(the)108 273.6 Q F3 -(compgen)2.957 E F0 -.2(bu)2.957 G .457(iltin described belo).2 F 1.756 --.65(w, t)-.25 H 2.956(og).65 G .456(enerate the matches.)-2.956 F .456 -(It must put the possible completions in the)5.456 F F1(COMPREPL)108 -285.6 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 -E(Ne)108 302.4 Q .08(xt, an)-.15 F 2.58(yc)-.15 G .08 -(ommand speci\214ed with the)-2.58 F F32.58 E F0 .081 -(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.581(na) --2.581 G 2.581(ne)-2.581 G -.4(nv)-2.581 G .081(ironment equi).4 F -.25 -(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 314.4 -R .359(should print a list of completions, one per line, to the standar\ -d output.)2.859 F .358(Backslash may be used)5.359 F(to escape a ne)108 -326.4 Q(wline, if necessary)-.25 E(.)-.65 E .376 -(After all of the possible completions are generated, an)108 343.2 R -2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F32.877 -E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 355.2 R -.682(\214lter is a pattern as used for pathname e)3.182 F .681 -(xpansion; a)-.15 F F3(&)3.181 E F0 .681 -(in the pattern is replaced with the te)3.181 F .681(xt of)-.15 F .522 -(the w)108 367.2 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G -(iteral)-3.022 E F3(&)3.022 E F0 .523 -(may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) --.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 379.2 R -(An)5.85 E 3.35(yc)-.15 G .849 -(ompletion that matches the pattern will be remo)-3.35 F -.15(ve)-.15 G -3.349(df).15 G .849(rom the list.)-3.349 F 3.349(Al)5.849 G(eading) --3.349 E F3(!)3.349 E F0(ne)108 391.2 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 408 Q 3.086(,a)-.65 G .886 -.15(ny p)-3.086 H .586 -(re\214x and suf).15 F .587(\214x speci\214ed with the)-.25 F 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 420 Q .247(If the pre)108 436.8 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 .246(as supplied to)-.1 F F3(complete)108 448.8 Q F0 -(when the compspec w)2.5 E -(as de\214ned, directory name completion is attempted.)-.1 E .461 -(If the)108 465.6 R F3 .462(\255o plusdirs)2.961 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 477.6 Q 2.5(ym)-.15 G -(atches are added to the results of the other actions.)-2.5 E .56 -(By def)108 494.4 R .56(ault, if a compspec is found, whate)-.1 F -.15 -(ve)-.25 G 3.06(ri).15 G 3.06(tg)-3.06 G .559 -(enerates is returned to the completion code as the full set)-3.06 F -.631(of possible completions.)108 506.4 R .631(The def)5.631 F(ault)-.1 -E F3(bash)3.131 E F0 .631 -(completions are not attempted, and the readline def)3.131 F .632 -(ault of \214le-)-.1 F .559(name completion is disabled.)108 518.4 R -.559(If the)5.559 F F3 .559(\255o bashdefault)3.059 F F0 .559(option w) -3.059 F .559(as supplied to)-.1 F F3(complete)3.058 E F0 .558 -(when the compspec)3.058 F -.1(wa)108 530.4 S 3.171(sd).1 G .671 -(e\214ned, the)-3.171 F F3(bash)3.171 E F0(def)3.171 E .671 -(ault completions are attempted if the compspec generates no matches.) --.1 F .672(If the)5.672 F F33.172 E(default)108 542.4 Q F0 1.207 -(option w)3.707 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.206(ault completion)-.1 F -(will be performed if the compspec \(and, if attempted, the def)108 -554.4 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 571.2 R .633(tions force\ - readline to append a slash to completed names which are symbolic links\ - to directories, subject)108 583.2 R 2.761(to the v)108 595.2 R 2.761 -(alue of the)-.25 F F3(mark\255dir)5.261 E(ectories)-.18 E F0 2.761 -(readline v)5.261 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.762 -(rdless of the setting of the).05 F F3(mark-sym-)5.262 E(link)108 607.2 -Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E -.191(There is some support for dynamically modifying completions.)108 -624 R .19(This is most useful when used in combina-)5.191 F 1.33 -(tion with a def)108 636 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 648 R .93(xit status of 124.)-.15 F .93(If a)5.93 -F .1(shell function returns 124, and changes the compspec associated wi\ -th the command on which completion is)108 660 R .666 -(being attempted \(supplied as the \214rst ar)108 672 R .665 -(gument when the function is e)-.18 F -.15(xe)-.15 G .665 -(cuted\), programmable completion).15 F .083(restarts from the be)108 -684 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25 -G .084(ompspec for that command.)-2.584 F .084(This allo)5.084 F .084 -(ws a set of)-.25 F(completions to be b)108 696 Q(uilt dynamically as c\ -ompletion is attempted, rather than being loaded all at once.)-.2 E -.15 -(Fo)108 712.8 S 2.637(ri).15 G .137 -(nstance, assuming that there is a library of compspecs, each k)-2.637 F -.137(ept in a \214le corresponding to the name of)-.1 F -(the command, the follo)108 724.8 Q(wing def)-.25 E -(ault completion function w)-.1 E(ould load completions dynamically:)-.1 -E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(48)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(possible\255hostname\255completions \(C\255x @\))108 84 Q F0 +(List the possible completions of the te)144 96 Q +(xt before point, treating it as a hostname.)-.15 E F1 +(complete\255command \(M\255!\))108 108 Q F0 .581 +(Attempt completion on the te)144 120 R .581 +(xt before point, treating it as a command name.)-.15 F .58 +(Command comple-)5.58 F .715(tion attempts to match the te)144 132 R +.715(xt ag)-.15 F .715(ainst aliases, reserv)-.05 F .715(ed w)-.15 F +.715(ords, shell functions, shell b)-.1 F .715(uiltins, and)-.2 F +(\214nally e)144 144 Q -.15(xe)-.15 G +(cutable \214lenames, in that order).15 E(.)-.55 E F1 +(possible\255command\255completions \(C\255x !\))108 156 Q F0 +(List the possible completions of the te)144 168 Q +(xt before point, treating it as a command name.)-.15 E F1 +(dynamic\255complete\255history \(M\255T)108 180 Q(AB\))-.9 E F0 .425 +(Attempt completion on the te)144 192 R .425 +(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .424 +(ainst lines from the history list)-.05 F +(for possible completion matches.)144 204 Q F1(dab)108 216 Q(br)-.1 E +-.15(ev)-.18 G(\255expand).15 E F0 .61 +(Attempt menu completion on the te)144 228 R .611 +(xt before point, comparing the te)-.15 F .611(xt ag)-.15 F .611 +(ainst lines from the his-)-.05 F +(tory list for possible completion matches.)144 240 Q F1 +(complete\255into\255braces \(M\255{\))108 252 Q F0 .4(Perform \214lena\ +me completion and insert the list of possible completions enclosed with\ +in braces so)144 264 R(the list is a)144 276 Q -.25(va)-.2 G +(ilable to the shell \(see).25 E F1(Brace Expansion)2.5 E F0(abo)2.5 E +-.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 292.8 S(yboard Macr).25 E(os)-.18 +E(start\255kbd\255macr)108 304.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) +.833 E F0(Be)144 316.8 Q(gin sa)-.15 E +(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G +(board macro.).15 E F1(end\255kbd\255macr)108 328.8 Q 2.5(o\()-.18 G +(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 340.8 Q +(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G +(board macro and store the de\214nition.).15 E F1 +(call\255last\255kbd\255macr)108 352.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 +E F0(Re-e)144 364.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey) +-.1 G .999(board macro de\214ned, by making the characters in the macro\ + appear as if).15 F(typed at the k)144 376.8 Q -.15(ey)-.1 G(board.).15 +E F1(print\255last\255kbd\255macr)108 388.8 Q 2.5(o\()-.18 G(\))-2.5 E +F0(Print the last k)144 400.8 Q -.15(ey)-.1 G +(board macro de\214ned in a format suitable for the).15 E/F2 10 +/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1 +(Miscellaneous)87 417.6 Q -.18(re)108 429.6 S.18 E +(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777 +(Read in the contents of the)144 441.6 R F2(inputr)4.277 E(c)-.37 E F0 +1.776(\214le, and incorporate an)4.276 F 4.276(yb)-.15 G 1.776 +(indings or v)-4.276 F 1.776(ariable assignments)-.25 F(found there.)144 +453.6 Q F1(abort \(C\255g\))108 465.6 Q F0 3.248 +(Abort the current editing command and ring the terminal')144 477.6 R +5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1 +(bell\255style)144 489.6 Q F0(\).)A F1(do\255upper)108 501.6 Q +(case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.) +C(..\))-2.5 E F0 1.756(If the meta\214ed character)144 513.6 R F2(x) +4.256 E F0 1.755(is lo)4.256 F 1.755 +(wercase, run the command that is bound to the corresponding)-.25 F +(uppercase character)144 525.6 Q(.)-.55 E F1(pr)108 537.6 Q +(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 549.6 Q +(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0 +(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A F1 +(undo \(C\255_, C\255x C\255u\))108 561.6 Q F0 +(Incremental undo, separately remembered for each line.)144 573.6 Q F1 +-2.29 -.18(re v)108 585.6 T(ert\255line \(M\255r\)).08 E F0 1.095 +(Undo all changes made to this line.)144 597.6 R 1.095(This is lik)6.095 +F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E +F0 1.095(command enough times to)3.595 F +(return the line to its initial state.)144 609.6 Q F1 +(tilde\255expand \(M\255&\))108 621.6 Q F0(Perform tilde e)144 633.6 Q +(xpansion on the current w)-.15 E(ord.)-.1 E F1 +(set\255mark \(C\255@, M\255\))108 645.6 Q F0 +(Set the mark to the point.)144 657.6 Q(If a numeric ar)5 E +(gument is supplied, the mark is set to that position.)-.18 E F1 +(exchange\255point\255and\255mark \(C\255x C\255x\))108 669.6 Q F0(Sw) +144 681.6 Q .283(ap the point with the mark.)-.1 F .283 +(The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G +2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa) +144 693.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 +(character\255sear)108 705.6 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 +717.6 S .535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G +3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 +(xt occurrence of that character)-.15 F 5.536(.A)-.55 G(ne)-2.5 E -.05 +(ga)-.15 G(ti).05 E .836 -.15(ve c)-.25 H(ount).15 E(searches for pre) +144 729.6 Q(vious occurrences.)-.25 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(48)192.055 E 0 Cg EP %%Page: 49 49 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Courier@0 SF(_completion_loader\(\))108 84 Q({)108 96 Q 6 -(.")144 108 S -(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108 -120 Q(complete -D -F _completion_loader -o bashdefault -o default)108 -132 Q/F2 10.95/Times-Bold@0 SF(HIST)72 160.8 Q(OR)-.197 E(Y)-.383 E F0 -.371(When the)108 172.8 R/F3 10/Times-Bold@0 SF .371(\255o history)2.871 -F F0 .371(option to the)2.871 F F3(set)2.872 E F0 -.2(bu)2.872 G .372 -(iltin is enabled, the shell pro).2 F .372(vides access to the)-.15 F/F4 -10/Times-Italic@0 SF .372(command history)2.872 F F0(,)A .305 -(the list of commands pre)108 184.8 R .305(viously typed.)-.25 F .305 -(The v)5.305 F .304(alue of the)-.25 F/F5 9/Times-Bold@0 SF(HISTSIZE) -2.804 E F0 -.25(va)2.554 G .304(riable is used as the number of com-).25 -F .429(mands to sa)108 196.8 R .729 -.15(ve i)-.2 H 2.929(nah).15 G .429 -(istory list.)-2.929 F .429(The te)5.429 F .429(xt of the last)-.15 F F5 -(HISTSIZE)2.93 E F0 .43(commands \(def)2.68 F .43(ault 500\) is sa)-.1 F --.15(ve)-.2 G 2.93(d. The).15 F(shell)2.93 E .287 -(stores each command in the history list prior to parameter and v)108 -208.8 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E -(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 220.8 -S 4.065(ta).2 G 1.565(fter history e)-4.065 F 1.565 -(xpansion is performed, subject to the v)-.15 F 1.565 -(alues of the shell v)-.25 F(ariables)-.25 E F5(HISTIGNORE)4.065 E F0 -(and)3.816 E F5(HISTCONTR)108 232.8 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) -A F0 .082 -(On startup, the history is initialized from the \214le named by the v) -108 249.6 R(ariable)-.25 E F5(HISTFILE)2.582 E F0(\(def)2.332 E(ault)-.1 -E F4(~/.bash_history)2.582 E F0(\).)A .315(The \214le named by the v)108 -261.6 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 -(is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815(oc)-2.815 G -.315(ontain no more than the number of)-2.815 F .659 -(lines speci\214ed by the v)108 273.6 R .659(alue of)-.25 F F5 -(HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F3(HISTFILESIZE)3.158 E F0 -.658(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 285.6 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 297.6 Q 1.605 -(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 309.6 R .098 -(These timestamps are optionally displayed depending on the v)5.098 F -.098(alue of)-.25 F(the)108 321.6 Q F5(HISTTIMEFORMA)3.559 E(T)-.855 E -F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 -(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5 -($HISTSIZE)3.559 E F0 1.058(lines are)3.309 F .158 -(copied from the history list to)108 333.6 R F5($HISTFILE)2.658 E F6(.)A -F0 .158(If the)4.658 F F3(histappend)2.658 E F0 .159 -(shell option is enabled \(see the description of)2.659 F F3(shopt)108 -345.6 Q F0(under)2.582 E F5 .082(SHELL B)2.582 F(UIL)-.09 E .082 -(TIN COMMANDS)-.828 F F0(belo)2.332 E .082 -(w\), the lines are appended to the history \214le, otherwise the)-.25 F -.196(history \214le is o)108 357.6 R -.15(ve)-.15 G 2.696(rwritten. If) -.15 F F5(HISTFILE)2.696 E F0 .197(is unset, or if the history \214le is\ - unwritable, the history is not sa)2.446 F -.15(ve)-.2 G(d.).15 E .584 -(If the)108 369.6 R F5(HISTTIMEFORMA)3.084 E(T)-.855 E F0 -.25(va)2.834 -G .584 -(riable is set, time stamps are written to the history \214le, mark).25 -F .583(ed with the his-)-.1 F 1.147(tory comment character)108 381.6 R -3.647(,s)-.4 G 3.647(ot)-3.647 G(he)-3.647 E 3.647(ym)-.15 G 1.147 -(ay be preserv)-3.647 F 1.147(ed across shell sessions.)-.15 F 1.148 -(This uses the history comment)6.148 F 1.377 -(character to distinguish timestamps from other history lines.)108 393.6 -R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.876(,t)-.65 G -1.376(he history \214le is)-3.876 F .756 -(truncated to contain no more than)108 405.6 R F5(HISTFILESIZE)3.257 E -F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757 -(is unset, or set to null, a non-)3.007 F(numeric v)108 417.6 Q -(alue, or a numeric v)-.25 E -(alue less than zero, the history \214le is not truncated.)-.25 E 1.294 -(The b)108 434.4 R 1.294(uiltin command)-.2 F F3(fc)3.794 E F0(\(see) -3.794 E F5 1.293(SHELL B)3.794 F(UIL)-.09 E 1.293(TIN COMMANDS)-.828 F -F0(belo)3.543 E 1.293(w\) may be used to list or edit and re-)-.25 F --.15(exe)108 446.4 S .673(cute a portion of the history list.).15 F(The) -5.673 E F3(history)3.173 E F0 -.2(bu)3.173 G .673 -(iltin may be used to display or modify the history list).2 F .28 -(and manipulate the history \214le.)108 458.4 R .279 -(When using command-line editing, search commands are a)5.279 F -.25(va) --.2 G .279(ilable in each).25 F(editing mode that pro)108 470.4 Q -(vide access to the history list.)-.15 E 1.485(The shell allo)108 487.2 -R 1.485(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 -(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt) --3.986 G 1.486(he history list.)-3.986 F(The)6.486 E F5(HISTCONTR)3.986 -E(OL)-.27 E F0(and)3.736 E F5(HISTIGNORE)108 499.2 Q F0 -.25(va)2.708 G -.458(riables may be set to cause the shell to sa).25 F .757 -.15(ve o) --.2 H .457(nly a subset of the commands entered.).15 F(The)5.457 E F3 -(cmdhist)108 511.2 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 523.2 R 3.577(,a)-.65 G 1.077 -(dding semicolons where necessary to preserv)-3.577 F 3.577(es)-.15 G -1.077(yntactic correctness.)-3.577 F(The)6.077 E F3(lithist)3.576 E F0 -.373(shell option causes the shell to sa)108 535.2 R .674 -.15(ve t)-.2 -H .374(he command with embedded ne).15 F .374 -(wlines instead of semicolons.)-.25 F .374(See the)5.374 F .319 -(description of the)108 547.2 R F3(shopt)2.819 E F0 -.2(bu)2.819 G .318 -(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F5 .318(SHELL B)2.818 F -(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .318 -(for information on setting and)2.568 F(unsetting shell options.)108 -559.2 Q F2(HIST)72 576 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION) --.81 E F0 .61(The shell supports a history e)108 588 R .611 -(xpansion feature that is similar to the history e)-.15 F .611 -(xpansion in)-.15 F F3(csh.)3.111 E F0 .611(This section)5.611 F .871 -(describes what syntax features are a)108 600 R -.25(va)-.2 G 3.371 -(ilable. This).25 F .871(feature is enabled by def)3.371 F .87 -(ault for interacti)-.1 F 1.17 -.15(ve s)-.25 H .87(hells, and).15 F -2.013(can be disabled using the)108 612 R F3(+H)4.514 E F0 2.014 -(option to the)4.514 F F3(set)4.514 E F0 -.2(bu)4.514 G 2.014 -(iltin command \(see).2 F F5 2.014(SHELL B)4.514 F(UIL)-.09 E 2.014 -(TIN COMMANDS)-.828 F F0(belo)108 624 Q 2.5(w\). Non-interacti)-.25 F .3 --.15(ve s)-.25 H(hells do not perform history e).15 E(xpansion by def) --.15 E(ault.)-.1 E 1.306(History e)108 640.8 R 1.306 -(xpansions introduce w)-.15 F 1.306(ords from the history list into the\ - input stream, making it easy to repeat)-.1 F .209 -(commands, insert the ar)108 652.8 R .209(guments to a pre)-.18 F .21 -(vious command into the current input line, or \214x errors in pre)-.25 -F(vious)-.25 E(commands quickly)108 664.8 Q(.)-.65 E 1.164(History e)108 -681.6 R 1.163(xpansion is performed immediately after a complete line i\ -s read, before the shell breaks it into)-.15 F -.1(wo)108 693.6 S 3.2 -(rds. It).1 F(tak)3.2 E .7(es place in tw)-.1 F 3.2(op)-.1 G 3.2 -(arts. The)-3.2 F .7 -(\214rst is to determine which line from the history list to use during) -3.2 F 4.368(substitution. The)108 705.6 R 1.868(second is to select por\ -tions of that line for inclusion into the current one.)4.368 F 1.867 -(The line)6.867 F .662(selected from the history is the)108 717.6 R F4 --.15(ev)3.162 G(ent).15 E F0 3.162(,a)C .663 -(nd the portions of that line that are acted upon are)-3.162 F F4(wor) -3.163 E(ds)-.37 E F0 5.663(.V)C(arious)-6.773 E F4(modi\214er)108 729.6 -Q(s)-.1 E F0 .227(are a)2.727 F -.25(va)-.2 G .227 -(ilable to manipulate the selected w).25 F 2.727(ords. The)-.1 F .226 -(line is brok)2.726 F .226(en into w)-.1 F .226(ords in the same f)-.1 F -(ashion)-.1 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(49)190.95 E -0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(character\255sear)108 84 Q(ch\255backward \(M\255C\255]\))-.18 E F0 +3.544(Ac)144 96 S 1.044(haracter is read and point is mo)-3.544 F -.15 +(ve)-.15 G 3.544(dt).15 G 3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 +(vious occurrence of that character)-.25 F 6.043(.A)-.55 G(ne)-2.5 E +-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G +(count searches for subsequent occurrences.)144 108 Q F1 +(skip\255csi\255sequence)108 120 Q F0 1.826 +(Read enough characters to consume a multi-k)144 132 R 2.126 -.15(ey s) +-.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey)-.1 G +4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 144 R .791 +(Such sequences be)5.791 F .791 +(gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F +.331(If this sequence is bound to "\\[", k)144 156 R -.15(ey)-.1 G 2.831 +(sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15(ve n) +-.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F(xplic-) +-.15 E .026(itly bound to a readline command, instead of inserting stra\ +y characters into the editing b)144 168 R(uf)-.2 E(fer)-.25 E 5.026(.T) +-.55 G(his)-5.026 E(is unbound by def)144 180 Q(ault, b)-.1 E +(ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108 +192 Q F0 -.4(Wi)144 204 S .48(thout a numeric ar).4 F .48(gument, the v) +-.18 F .481(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 +-.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 216 Q .245 +(ginning of the current line.)-.15 F .245(If a numeric ar)5.245 F .244 +(gument is supplied, this command acts as a toggle: if)-.18 F .321 +(the characters at the be)144 228 R .321 +(ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1 +(comment\255begin)2.821 E F0 2.822(,t)C .322(he v)-2.822 F .322(alue is) +-.25 F .832(inserted, otherwise the characters in)144 240 R F1 +(comment\255begin)3.332 E F0 .831(are deleted from the be)3.332 F .831 +(ginning of the line.)-.15 F 1.468 +(In either case, the line is accepted as if a ne)144 252 R 1.468 +(wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F +1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 264 Q F0 .84 +(causes this command to mak)3.34 F 3.339(et)-.1 G .839 +(he current line a shell comment.)-3.339 F .839(If a numeric ar)5.839 F +(gu-)-.18 E(ment causes the comment character to be remo)144 276 Q -.15 +(ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G +(cuted by the shell.).15 E F1(glob\255complete\255w)108 288 Q +(ord \(M\255g\))-.1 E F0 .791(The w)144 300 R .791 +(ord before point is treated as a pattern for pathname e)-.1 F .792 +(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 312 +R(pattern is used to generate a list of matching \214lenames for possib\ +le completions.)2.5 E F1(glob\255expand\255w)108 324 Q(ord \(C\255x *\)) +-.1 E F0 .176(The w)144 336 R .176 +(ord before point is treated as a pattern for pathname e)-.1 F .176 +(xpansion, and the list of matching \214le-)-.15 F .516 +(names is inserted, replacing the w)144 348 R 3.016(ord. If)-.1 F 3.016 +(an)3.016 G .516(umeric ar)-3.016 F .516 +(gument is supplied, an asterisk is appended)-.18 F(before pathname e) +144 360 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) +108 372 Q F0 .923(The list of e)144 384 R .923(xpansions that w)-.15 F +.923(ould ha)-.1 F 1.223 -.15(ve b)-.2 H .923(een generated by).15 F F1 +(glob\255expand\255w)3.423 E(ord)-.1 E F0 .923(is displayed, and)3.423 F +.872(the line is redra)144 396 R 3.372(wn. If)-.15 F 3.372(an)3.372 G +.872(umeric ar)-3.372 F .872 +(gument is supplied, an asterisk is appended before pathname)-.18 F -.15 +(ex)144 408 S(pansion.).15 E F1(dump\255functions)108 420 Q F0 .627 +(Print all of the functions and their k)144 432 R .927 -.15(ey b)-.1 H +.626(indings to the readline output stream.).15 F .626(If a numeric ar) +5.626 F(gu-)-.18 E +(ment is supplied, the output is formatted in such a w)144 444 Q +(ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr) +2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 456 Q(ariables)-.1 E F0 +1.799(Print all of the settable readline v)144 468 R 1.799 +(ariables and their v)-.25 F 1.8(alues to the readline output stream.) +-.25 F 1.8(If a)6.8 F .305(numeric ar)144 480 R .304 +(gument is supplied, the output is formatted in such a w)-.18 F .304 +(ay that it can be made part of an)-.1 F F2(inputr)144 492 Q(c)-.37 E F0 +(\214le.)2.5 E F1(dump\255macr)108 504 Q(os)-.18 E F0 .592 +(Print all of the readline k)144 516 R .892 -.15(ey s)-.1 H .592 +(equences bound to macros and the strings the).15 F 3.093(yo)-.15 G +3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 528 Q +.528(gument is supplied, the output is formatted in such a w)-.18 F .528 +(ay that it can be made part of an)-.1 F F2(inputr)3.027 E(c)-.37 E F0 +(\214le.)144 540 Q F1(display\255shell\255v)108 552 Q +(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 564 Q +(ersion information about the current instance of)-.15 E F1(bash)2.5 E +F0(.)A F1(Pr)87 580.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108 +592.8 R .147(ord completion is attempted for an ar)-.1 F .147 +(gument to a command for which a completion speci\214cation \(a)-.18 F +F2(compspec)108 604.8 Q F0 3.829(\)h)C 1.329 +(as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu) +3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829 +F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.328(w\), the) +-.25 F(programmable completion f)108 616.8 Q(acilities are in)-.1 E -.2 +(vo)-.4 G -.1(ke).2 G(d.).1 E .497 +(First, the command name is identi\214ed.)108 633.6 R .497 +(If the command w)5.497 F .498 +(ord is the empty string \(completion attempted at)-.1 F .234(the be)108 +645.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 +(ompspec de\214ned with the)-2.733 F F12.733 E F0 .233(option to) +2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .233(If a comp-) +5.233 F .481(spec has been de\214ned for that command, the compspec is \ +used to generate the list of possible completions)108 657.6 R .823 +(for the w)108 669.6 R 3.323(ord. If)-.1 F .823(the command w)3.323 F +.822(ord is a full pathname, a compspec for the full pathname is search\ +ed for)-.1 F 2.866(\214rst. If)108 681.6 R .367(no compspec is found fo\ +r the full pathname, an attempt is made to \214nd a compspec for the po\ +rtion)2.866 F(follo)108 693.6 Q .299(wing the \214nal slash.)-.25 F .298 +(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15 +G .298(ompspec de\214ned with the)-2.798 F F12.798 E F0(option to) +108 705.6 Q F1(complete)2.5 E F0(is used as the def)2.5 E(ault.)-.1 E +.817(Once a compspec has been found, it is used to generate the list of\ + matching w)108 722.4 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 +(ompspec is not)-3.317 F(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E +(49)192.055 E 0 Cg EP %%Page: 50 50 %%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 .351(as when reading input, so that se)108 84 R -.15(ve)-.25 G -(ral).15 E/F1 10/Times-Italic@0 SF(metac)2.852 E(har)-.15 E(acter)-.15 E -F0 .352(-separated w)B .352(ords surrounded by quotes are considered)-.1 -F .625(one w)108 96 R 3.125(ord. History)-.1 F -.15(ex)3.125 G .624 -(pansions are introduced by the appearance of the history e).15 F .624 -(xpansion character)-.15 F 3.124(,w)-.4 G(hich)-3.124 E(is)108 108 Q/F2 -10/Times-Bold@0 SF(!)3.333 E F0(by def)3.333 E 2.5(ault. Only)-.1 F -(backslash \()2.5 E F2(\\).833 E F0 2.5(\)a).833 G -(nd single quotes can quote the history e)-2.5 E(xpansion character)-.15 -E(.)-.55 E(Se)108 124.8 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 136.8 T -3.163(ni).25 G 3.163(fi)-3.163 G 3.162(ti)-3.163 G 3.162(su)-3.162 G -.662(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and) --.25 F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2 -(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.162 E -F0(will also inhibit e)108 148.8 Q(xpansion.)-.15 E(Se)108 165.6 Q -.15 -(ve)-.25 G .109(ral shell options settable with the).15 F F2(shopt)2.609 -E F0 -.2(bu)2.609 G .11(iltin may be used to tailor the beha).2 F .11 -(vior of history e)-.2 F(xpansion.)-.15 E 1.143(If the)108 177.6 R F2 -(histv)3.643 E(erify)-.1 E F0 1.143 -(shell option is enabled \(see the description of the)3.643 F F2(shopt) -3.643 E F0 -.2(bu)3.643 G 1.143(iltin belo).2 F 1.143(w\), and)-.25 F F2 --.18(re)3.643 G(adline).18 E F0(is)3.642 E .461(being used, history sub\ -stitutions are not immediately passed to the shell parser)108 189.6 R -5.461(.I)-.55 G .461(nstead, the e)-5.461 F .461(xpanded line)-.15 F -1.516(is reloaded into the)108 201.6 R F2 -.18(re)4.016 G(adline).18 E -F0 1.516(editing b)4.016 F(uf)-.2 E 1.516 -(fer for further modi\214cation.)-.25 F(If)6.516 E F2 -.18(re)4.015 G -(adline).18 E F0 1.515(is being used, and the)4.015 F F2(histr)108 213.6 -Q(eedit)-.18 E F0 1.202(shell option is enabled, a f)3.702 F 1.202 -(ailed history substitution will be reloaded into the)-.1 F F2 -.18(re) -3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 225.6 S -.25(ff).2 G -1.161(er for correction.).25 F(The)6.161 E F23.661 E F0 1.161 -(option to the)3.661 F F2(history)3.661 E F0 -.2(bu)3.661 G 1.16 -(iltin command may be used to see what a history).2 F -.15(ex)108 237.6 -S .055(pansion will do before using it.).15 F(The)5.055 E F22.555 -E F0 .055(option to the)2.555 F F2(history)2.556 E F0 -.2(bu)2.556 G -.056(iltin may be used to add commands to the).2 F -(end of the history list without actually e)108 249.6 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 266.4 R 2.2 -(ws control of the v)-.25 F 2.2(arious characters used by the history e) --.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.146(description of)108 -278.4 R F2(histchars)3.646 E F0(abo)3.646 E 1.446 -.15(ve u)-.15 H(nder) -.15 E F2 1.146(Shell V)3.646 F(ariables)-.92 E F0 3.646(\). The)B 1.147 -(shell uses the history comment character to)3.646 F -(mark history timestamps when writing the history \214le.)108 290.4 Q F2 -(Ev)87 307.2 Q(ent Designators)-.1 E F0 .205(An e)108 319.2 R -.15(ve) --.25 G .204(nt designator is a reference to a command line entry in the\ - history list.).15 F .204(Unless the reference is abso-)5.204 F(lute, e) -108 331.2 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5 -(ot).15 G(he current position in the history list.)-2.5 E F2(!)108 348 Q -F0 1.607(Start a history substitution, e)32.67 F 1.607(xcept when follo) --.15 F 1.607(wed by a)-.25 F F2(blank)4.107 E F0 4.107(,n)C -.25(ew) --4.107 G 1.608(line, carriage return, = or \().25 F(\(when the)144 360 Q -F2(extglob)2.5 E F0(shell option is enabled using the)2.5 E F2(shopt)2.5 -E F0 -.2(bu)2.5 G(iltin\).).2 E F2(!)108 372 Q F1(n)A F0 -(Refer to command line)27.67 E F1(n)2.5 E F0(.).24 E F2<21ad>108 384 Q -F1(n)A F0(Refer to the current command minus)21.97 E F1(n)2.5 E F0(.).24 -E F2(!!)108 396 Q F0(Refer to the pre)29.34 E(vious command.)-.25 E -(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 408 Q F1(string)A -F0 .865(Refer to the most recent command preceding the current position\ - in the history list starting with)9.33 F F1(string)144 420 Q F0(.).22 E -F2(!?)108 432 Q F1(string)A F2([?])A F0 1.503(Refer to the most recent \ -command preceding the current position in the history list containing) -144 444 R F1(string)144 456 Q F0 5(.T).22 G(he trailing)-5 E F2(?)2.5 E -F0(may be omitted if)2.5 E F1(string)2.84 E F0(is follo)2.72 E -(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12/Times-Bold@0 SF(^) -108 473 Q F1(string1)-5 I F3(^)5 I F1(string2)-5 I F3(^)5 I F0 .784 -(Quick substitution.)144 480 R .784(Repeat the pre)5.784 F .784 -(vious command, replacing)-.25 F F1(string1)3.624 E F0(with)3.283 E F1 -(string2)3.283 E F0 5.783(.E).02 G(qui)-5.783 E -.25(va)-.25 G .783 -(lent to).25 F -.74(``)144 492 S(!!:s/).74 E F1(string1)A F0(/)A F1 -(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0 -(belo)2.5 E(w\).)-.25 E F2(!#)108 504 Q F0 -(The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F2 -.75 -(Wo)87 520.8 S(rd Designators).75 E F0 -.8(Wo)108 532.8 S 1.313 -(rd designators are used to select desired w).8 F 1.314(ords from the e) --.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.314 -(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F -.53(from the w)108 544.8 R .529(ord designator)-.1 F 5.529(.I)-.55 G -3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 -(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2 -($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F23.029 E F0 3.029(,o)C(r) --3.029 E F2(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 -(are numbered from the be)108 556.8 R 1.3 -(ginning of the line, with the \214rst w)-.15 F 1.301 -(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8 -F(inserted into the current line separated by single spaces.)108 568.8 Q -F2 2.5(0\()108 585.6 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 597.6 Q -2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E -F1(n)108.36 609.6 Q F0(The)30.64 E F1(n)2.5 E F0(th w)A(ord.)-.1 E F2(^) -108 621.6 Q F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 -E(ord 1.)-.1 E F2($)108 633.6 Q F0 .064(The last w)31 F 2.564(ord. This) --.1 F .064(is usually the last ar)2.564 F .064(gument, b)-.18 F .064 -(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F .063 -(ord if there is only)-.1 F(one w)144 645.6 Q(ord in the line.)-.1 E F2 -(%)108 657.6 Q F0(The w)26 E(ord matched by the most recent `?)-.1 E F1 -(string)A F0(?' search.)A F1(x)108.77 669.6 Q F2A F1(y)A F0 2.5(Ar) -20.65 G(ange of w)-2.5 E(ords; `\255)-.1 E F1(y)A F0 2.5('a)C(bbre)-2.5 -E(viates `0\255)-.25 E F1(y)A F0('.)A F2(*)108 681.6 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 F1(1\255$)A F0 2.815 -('. It)B .315(is not an error to use)2.815 F F2(*)2.816 E F0 .316 -(if there is)2.816 F(just one w)144 693.6 Q(ord in the e)-.1 E -.15(ve) --.25 G(nt; the empty string is returned in that case.).15 E F2(x*)108 -705.6 Q F0(Abbre)26 E(viates)-.25 E F1(x\255$)2.5 E F0(.)A F2<78ad>108 -717.6 Q F0(Abbre)25.3 E(viates)-.25 E F1(x\255$)2.5 E F0(lik)2.5 E(e)-.1 -E F2(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(50)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(found, the def)108 +84 Q(ault)-.1 E/F1 10/Times-Bold@0 SF(bash)2.5 E F0 +(completion as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F1 +(Completing)2.5 E F0(is performed.)2.5 E .464 +(First, the actions speci\214ed by the compspec are used.)108 100.8 R +.463(Only matches which are pre\214x)5.464 F .463(ed by the w)-.15 F +.463(ord being)-.1 F .595(completed are returned.)108 112.8 R .595 +(When the)5.595 F F13.095 E F0(or)3.095 E F13.095 E F0 .596 +(option is used for \214lename or directory name completion, the)3.095 F +(shell v)108 124.8 Q(ariable)-.25 E/F2 9/Times-Bold@0 SF(FIGNORE)2.5 E +F0(is used to \214lter the matches.)2.25 E(An)108 141.6 Q 4.084(yc)-.15 +G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584 +(xpansion pattern to the)-.15 F F14.084 E F0 1.584 +(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 153.6 S +.554(rds generated by the pattern need not match the w).1 F .555 +(ord being completed.)-.1 F(The)5.555 E F2(GLOBIGNORE)3.055 E F0 .555 +(shell v)2.805 F(ari-)-.25 E +(able is not used to \214lter the matches, b)108 165.6 Q(ut the)-.2 E F2 +(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 182.4 Q +.321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 +F F12.821 E F0 .32(option is considered.)2.821 F .32 +(The string is \214rst split using the)5.32 F .412(characters in the)108 +194.4 R F2(IFS)2.912 E F0 .412(special v)2.662 F .412 +(ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F +.413(Each w)5.412 F .413(ord is then e)-.1 F(xpanded)-.15 E .092 +(using brace e)108 206.4 R .092(xpansion, tilde e)-.15 F .092 +(xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .091 +(xpansion, command substitution, and arith-)-.15 F 1.396(metic e)108 +218.4 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H +(nder).15 E F2(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0 +1.396(The results are split using the rules described)5.896 F(abo)108 +230.4 Q .51 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.71 G .21 +(rd Splitting).75 F F0 5.21(.T)C .209(he results of the e)-5.21 F .209 +(xpansion are pre\214x-matched ag)-.15 F .209(ainst the w)-.05 F .209 +(ord being com-)-.1 F(pleted, and the matching w)108 242.4 Q +(ords become the possible completions.)-.1 E 1.237 +(After these matches ha)108 259.2 R 1.537 -.15(ve b)-.2 H 1.237 +(een generated, an).15 F 3.737(ys)-.15 G 1.238 +(hell function or command speci\214ed with the)-3.737 F F13.738 E +F0(and)3.738 E F13.738 E F0 3.376(options is in)108 271.2 R -.2 +(vo)-.4 G -.1(ke).2 G 5.875(d. When).1 F 3.375 +(the command or function is in)5.875 F -.2(vo)-.4 G -.1(ke).2 G 3.375 +(d, the).1 F F2(COMP_LINE)5.875 E F3(,)A F2(COMP_POINT)5.625 E F3(,)A F2 +(COMP_KEY)108 283.2 Q F3(,)A F0(and)2.407 E F2(COMP_TYPE)2.657 E F0 -.25 +(va)2.407 G .157(riables are assigned v).25 F .157 +(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .158 +(Shell V)2.658 F(ariables)-.92 E F0 5.158(.I)C(f)-5.158 E 3.486(as)108 +295.2 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G +.986(d, the).1 F F2(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F2 +(COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986 +(riables are also set.).25 F(When)5.985 E .346 +(the function or command is in)108 307.2 R -.2(vo)-.4 G -.1(ke).2 G .346 +(d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.847(\)i)C +2.847(st)-2.847 G .347(he name of the command whose ar)-2.847 F(guments) +-.18 E .264(are being completed, the second ar)108 319.2 R .264 +(gument \()-.18 F F1($2)A F0 2.764(\)i)C 2.764(st)-2.764 G .264(he w) +-2.764 F .263(ord being completed, and the third ar)-.1 F .263 +(gument \()-.18 F F1($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 331.2 +R .628(ord preceding the w)-.1 F .629 +(ord being completed on the current command line.)-.1 F .629 +(No \214ltering of the generated)5.629 F .715(completions ag)108 343.2 R +.715(ainst the w)-.05 F .714(ord being completed is performed; the func\ +tion or command has complete free-)-.1 F(dom in generating the matches.) +108 355.2 Q(An)108 372 Q 2.937(yf)-.15 G .437(unction speci\214ed with) +-2.937 F F12.937 E F0 .437(is in)2.937 F -.2(vo)-.4 G -.1(ke).2 G +2.937<648c>.1 G 2.937(rst. The)-2.937 F .437(function may use an)2.937 F +2.937(yo)-.15 G 2.937(ft)-2.937 G .437(he shell f)-2.937 F .438 +(acilities, including)-.1 F(the)108 384 Q F1(compgen)2.957 E F0 -.2(bu) +2.957 G .457(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956(og) +.65 G .456(enerate the matches.)-2.956 F .456 +(It must put the possible completions in the)5.456 F F2(COMPREPL)108 396 +Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 E(Ne) +108 412.8 Q .08(xt, an)-.15 F 2.58(yc)-.15 G .08 +(ommand speci\214ed with the)-2.58 F F12.58 E F0 .081 +(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.581(na) +-2.581 G 2.581(ne)-2.581 G -.4(nv)-2.581 G .081(ironment equi).4 F -.25 +(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 424.8 +R .359(should print a list of completions, one per line, to the standar\ +d output.)2.859 F .358(Backslash may be used)5.359 F(to escape a ne)108 +436.8 Q(wline, if necessary)-.25 E(.)-.65 E .376 +(After all of the possible completions are generated, an)108 453.6 R +2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F12.877 +E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 465.6 R +.682(\214lter is a pattern as used for pathname e)3.182 F .681 +(xpansion; a)-.15 F F1(&)3.181 E F0 .681 +(in the pattern is replaced with the te)3.181 F .681(xt of)-.15 F .522 +(the w)108 477.6 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G +(iteral)-3.022 E F1(&)3.022 E F0 .523 +(may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) +-.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 489.6 R +(An)5.85 E 3.35(yc)-.15 G .849 +(ompletion that matches the pattern will be remo)-3.35 F -.15(ve)-.15 G +3.349(df).15 G .849(rom the list.)-3.349 F 3.349(Al)5.849 G(eading) +-3.349 E F1(!)3.349 E F0(ne)108 501.6 Q -.05(ga)-.15 G .764 +(tes the pattern; in this case an).05 F 3.264(yc)-.15 G .764 +(ompletion not matching the pattern will be remo)-3.264 F -.15(ve)-.15 G +3.264(d. If).15 F(the)3.265 E F1(nocase-)3.265 E(match)108 513.6 Q F0 +(shell option is enabled, the match is performed without re)2.5 E -.05 +(ga)-.15 G(rd to the case of alphabetic characters.).05 E(Finally)108 +530.4 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15 +F .587(\214x speci\214ed with the)-.25 F F13.087 E F0(and)3.087 E +F13.087 E F0 .587(options are added to each member of the com-) +3.087 F(pletion list, and the result is returned to the readline comple\ +tion code as the list of possible completions.)108 542.4 Q .246 +(If the pre)108 559.2 R .247(viously-applied actions do not generate an) +-.25 F 2.747(ym)-.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir) +2.747 F(names)-.15 E F0 .247(option w)2.747 F .247(as supplied to)-.1 F +F1(complete)108 571.2 Q F0(when the compspec w)2.5 E +(as de\214ned, directory name completion is attempted.)-.1 E .462 +(If the)108 588 R F1 .462(\255o plusdirs)2.962 F F0 .462(option w)2.962 +F .462(as supplied to)-.1 F F1(complete)2.962 E F0 .462 +(when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1 +F(pletion is attempted and an)108 600 Q 2.5(ym)-.15 G +(atches are added to the results of the other actions.)-2.5 E .559 +(By def)108 616.8 R .559(ault, if a compspec is found, whate)-.1 F -.15 +(ve)-.25 G 3.059(ri).15 G 3.059(tg)-3.059 G .56 +(enerates is returned to the completion code as the full set)-3.059 F +.632(of possible completions.)108 628.8 R .632(The def)5.632 F(ault)-.1 +E F1(bash)3.132 E F0 .631 +(completions are not attempted, and the readline def)3.131 F .631 +(ault of \214le-)-.1 F .558(name completion is disabled.)108 640.8 R +.558(If the)5.558 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w) +3.059 F .559(as supplied to)-.1 F F1(complete)3.059 E F0 .559 +(when the compspec)3.059 F -.1(wa)108 652.8 S 3.172(sd).1 G .672 +(e\214ned, the)-3.172 F F1(bash)3.172 E F0(def)3.172 E .671 +(ault completions are attempted if the compspec generates no matches.) +-.1 F .671(If the)5.671 F F13.171 E(default)108 664.8 Q F0 1.207 +(option w)3.706 F 1.207(as supplied to)-.1 F F1(complete)3.707 E F0 +1.207(when the compspec w)3.707 F 1.207(as de\214ned, readline')-.1 F +3.707(sd)-.55 G(ef)-3.707 E 1.207(ault completion)-.1 F +(will be performed if the compspec \(and, if attempted, the def)108 +676.8 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.) +2.5 E .245(When a compspec indicates that directory name completion is \ +desired, the programmable completion func-)108 693.6 R .632(tions force\ + readline to append a slash to completed names which are symbolic links\ + to directories, subject)108 705.6 R 2.762(to the v)108 717.6 R 2.762 +(alue of the)-.25 F F1(mark\255dir)5.262 E(ectories)-.18 E F0 2.761 +(readline v)5.262 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.761 +(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 729.6 +Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(50)192.055 E 0 Cg EP %%Page: 51 51 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(If a w)108 84 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 10 -/Times-Bold@0 SF(Modi\214ers)87 100.8 Q F0 .184(After the optional w)108 -112.8 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 124.8 Q F1(h)108 -141.6 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 153.6 Q F0(Remo)32.67 E .3 -.15(ve a)-.15 H -(ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r) -108 165.6 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 177.6 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 189.6 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 201.6 Q F0 -(Quote the substituted w)30.44 E(ords, escaping further substitutions.) --.1 E F1(x)108 213.6 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 225.6 Q F2(old)A F1(/)A -F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 237.6 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 -249.6 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 261.6 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 273.6 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 285.6 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 297.6 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F1 -(g)108 309.6 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 321.6 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 333.6 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 345.6 Q F0(.)A -F1(G)108 357.6 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 374.4 Q(UIL)-.11 E -(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 386.4 -R .062(uiltin command documented in this section as accepting options p\ -receded by)-.2 F F1108 398.4 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 410.4 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 -422.4 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 434.4 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 446.4 Q F1(:)108 -464.4 Q F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .451(No ef)144 476.4 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 -488.4 R(zero e)2.5 E(xit code is returned.)-.15 E F1(.)110.5 505.2 Q F2 -(\214lename)6.666 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 -517.2 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 529.2 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 541.2 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 553.2 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 565.2 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 577.2 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 -589.2 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 601.2 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 613.2 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 625.2 -Q F0(is not found or cannot be read.)2.68 E F1(alias)108 642 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 654 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 666 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 678 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 690 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 702 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 714 Q(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(51)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .19 +(There is some support for dynamically modifying completions.)108 84 R +.191(This is most useful when used in combina-)5.191 F 1.33 +(tion with a def)108 96 R 1.33(ault completion speci\214ed with)-.1 F/F1 +10/Times-Bold@0 SF 1.33(complete -D)3.83 F F0 6.33(.I)C(t')-6.33 E 3.83 +(sp)-.55 G 1.33(ossible for shell functions e)-3.83 F -.15(xe)-.15 G +1.33(cuted as).15 F .93(completion handlers to indicate that completion\ + should be retried by returning an e)108 108 R .93(xit status of 124.) +-.15 F .93(If a)5.93 F .1(shell function returns 124, and changes the c\ +ompspec associated with the command on which completion is)108 120 R +.665(being attempted \(supplied as the \214rst ar)108 132 R .666 +(gument when the function is e)-.18 F -.15(xe)-.15 G .666 +(cuted\), programmable completion).15 F .084(restarts from the be)108 +144 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25 +G .084(ompspec for that command.)-2.584 F .083(This allo)5.083 F .083 +(ws a set of)-.25 F(completions to be b)108 156 Q(uilt dynamically as c\ +ompletion is attempted, rather than being loaded all at once.)-.2 E -.15 +(Fo)108 172.8 S 2.636(ri).15 G .137 +(nstance, assuming that there is a library of compspecs, each k)-2.636 F +.137(ept in a \214le corresponding to the name of)-.1 F +(the command, the follo)108 184.8 Q(wing def)-.25 E +(ault completion function w)-.1 E(ould load completions dynamically:)-.1 +E/F2 10/Courier@0 SF(_completion_loader\(\))108 201.6 Q({)108 213.6 Q 6 +(.")144 225.6 S +(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108 +237.6 Q(complete -D -F _completion_loader -o bashdefault -o default)108 +249.6 Q/F3 10.95/Times-Bold@0 SF(HIST)72 278.4 Q(OR)-.197 E(Y)-.383 E F0 +.372(When the)108 290.4 R F1 .372(\255o history)2.872 F F0 .372 +(option to the)2.872 F F1(set)2.872 E F0 -.2(bu)2.872 G .372 +(iltin is enabled, the shell pro).2 F .371(vides access to the)-.15 F/F4 +10/Times-Italic@0 SF .371(command history)2.871 F F0(,)A .304 +(the list of commands pre)108 302.4 R .304(viously typed.)-.25 F .304 +(The v)5.304 F .304(alue of the)-.25 F/F5 9/Times-Bold@0 SF(HISTSIZE) +2.804 E F0 -.25(va)2.554 G .305(riable is used as the number of com-).25 +F .43(mands to sa)108 314.4 R .73 -.15(ve i)-.2 H 2.93(nah).15 G .43 +(istory list.)-2.93 F .43(The te)5.43 F .429(xt of the last)-.15 F F5 +(HISTSIZE)2.929 E F0 .429(commands \(def)2.679 F .429(ault 500\) is sa) +-.1 F -.15(ve)-.2 G 2.929(d. The).15 F(shell)2.929 E .287 +(stores each command in the history list prior to parameter and v)108 +326.4 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E +(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 338.4 +S 4.066(ta).2 G 1.565(fter history e)-4.066 F 1.565 +(xpansion is performed, subject to the v)-.15 F 1.565 +(alues of the shell v)-.25 F(ariables)-.25 E F5(HISTIGNORE)4.065 E F0 +(and)3.815 E F5(HISTCONTR)108 350.4 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) +A F0 .082 +(On startup, the history is initialized from the \214le named by the v) +108 367.2 R(ariable)-.25 E F5(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1 +E F4(~/.bash_history)2.583 E F0(\).)A .315(The \214le named by the v)108 +379.2 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 +(is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815(oc)-2.815 G +.315(ontain no more than the number of)-2.815 F .658 +(lines speci\214ed by the v)108 391.2 R .658(alue of)-.25 F F5 +(HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F1(HISTFILESIZE)3.158 E F0 +.659(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 403.2 S +.142(lue, or a numeric v).25 F .142 +(alue less than zero, the history \214le is not truncated.)-.25 F .142 +(When the history \214le is read, lines)5.142 F(be)108 415.2 Q 1.604 +(ginning with the history comment character follo)-.15 F 1.604 +(wed immediately by a digit are interpreted as time-)-.25 F .098 +(stamps for the preceding history line.)108 427.2 R .098 +(These timestamps are optionally displayed depending on the v)5.098 F +.098(alue of)-.25 F(the)108 439.2 Q F5(HISTTIMEFORMA)3.558 E(T)-.855 E +F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 +(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5 +($HISTSIZE)3.559 E F0 1.059(lines are)3.309 F .159 +(copied from the history list to)108 451.2 R F5($HISTFILE)2.659 E F6(.)A +F0 .159(If the)4.659 F F1(histappend)2.658 E F0 .158 +(shell option is enabled \(see the description of)2.658 F F1(shopt)108 +463.2 Q F0(under)2.581 E F5 .081(SHELL B)2.581 F(UIL)-.09 E .081 +(TIN COMMANDS)-.828 F F0(belo)2.332 E .082 +(w\), the lines are appended to the history \214le, otherwise the)-.25 F +.197(history \214le is o)108 475.2 R -.15(ve)-.15 G 2.697(rwritten. If) +.15 F F5(HISTFILE)2.697 E F0 .196(is unset, or if the history \214le is\ + unwritable, the history is not sa)2.447 F -.15(ve)-.2 G(d.).15 E .583 +(If the)108 487.2 R F5(HISTTIMEFORMA)3.083 E(T)-.855 E F0 -.25(va)2.834 +G .584 +(riable is set, time stamps are written to the history \214le, mark).25 +F .584(ed with the his-)-.1 F 1.148(tory comment character)108 499.2 R +3.648(,s)-.4 G 3.648(ot)-3.648 G(he)-3.648 E 3.648(ym)-.15 G 1.147 +(ay be preserv)-3.648 F 1.147(ed across shell sessions.)-.15 F 1.147 +(This uses the history comment)6.147 F 1.376 +(character to distinguish timestamps from other history lines.)108 511.2 +R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.877(,t)-.65 G +1.377(he history \214le is)-3.877 F .757 +(truncated to contain no more than)108 523.2 R F5(HISTFILESIZE)3.257 E +F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757 +(is unset, or set to null, a non-)3.007 F(numeric v)108 535.2 Q +(alue, or a numeric v)-.25 E +(alue less than zero, the history \214le is not truncated.)-.25 E .298 +(The b)108 552 R .298(uiltin command)-.2 F F1(fc)2.798 E F0(\(see)2.798 +E F5 .298(SHELL B)2.798 F(UIL)-.09 E .298(TIN COMMANDS)-.828 F F0(belo) +2.549 E .299(w\) may be used to list or edit and re-e)-.25 F -.15(xe) +-.15 G(-).15 E .472(cute a portion of the history list.)108 564 R(The) +5.472 E F1(history)2.972 E F0 -.2(bu)2.972 G .471 +(iltin may be used to display or modify the history list and).2 F .001 +(manipulate the history \214le.)108 576 R .001 +(When using command-line editing, search commands are a)5.001 F -.25(va) +-.2 G .002(ilable in each edit-).25 F(ing mode that pro)108 588 Q +(vide access to the history list.)-.15 E 1.486(The shell allo)108 604.8 +R 1.486(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 +(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt) +-3.986 G 1.486(he history list.)-3.986 F(The)6.485 E F5(HISTCONTR)3.985 +E(OL)-.27 E F0(and)3.735 E F5(HISTIGNORE)108 616.8 Q F0 -.25(va)2.707 G +.457(riables may be set to cause the shell to sa).25 F .758 -.15(ve o) +-.2 H .458(nly a subset of the commands entered.).15 F(The)5.458 E F1 +(cmdhist)108 628.8 Q F0 .75 +(shell option, if enabled, causes the shell to attempt to sa)3.25 F 1.05 +-.15(ve e)-.2 H .75(ach line of a multi-line command in).15 F 1.077 +(the same history entry)108 640.8 R 3.577(,a)-.65 G 1.077 +(dding semicolons where necessary to preserv)-3.577 F 3.577(es)-.15 G +1.077(yntactic correctness.)-3.577 F(The)6.077 E F1(lithist)3.577 E F0 +.374(shell option causes the shell to sa)108 652.8 R .674 -.15(ve t)-.2 +H .374(he command with embedded ne).15 F .373 +(wlines instead of semicolons.)-.25 F .373(See the)5.373 F .318 +(description of the)108 664.8 R F1(shopt)2.818 E F0 -.2(bu)2.818 G .318 +(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F5 .318(SHELL B)2.818 F +(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .319 +(for information on setting and)2.568 F(unsetting shell options.)108 +676.8 Q F3(HIST)72 693.6 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E +(ANSION)-.81 E F0 .611(The shell supports a history e)108 705.6 R .611 +(xpansion feature that is similar to the history e)-.15 F .61 +(xpansion in)-.15 F F1(csh.)3.11 E F0 .61(This section)5.61 F .87 +(describes what syntax features are a)108 717.6 R -.25(va)-.2 G 3.371 +(ilable. This).25 F .871(feature is enabled by def)3.371 F .871 +(ault for interacti)-.1 F 1.171 -.15(ve s)-.25 H .871(hells, and).15 F +2.014(can be disabled using the)108 729.6 R F1(+H)4.514 E F0 2.014 +(option to the)4.514 F F1(set)4.514 E F0 -.2(bu)4.514 G 2.014 +(iltin command \(see).2 F F5 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013 +(TIN COMMANDS)-.828 F F0(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E +(51)192.055 E 0 Cg EP %%Page: 52 52 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(bg)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 -SF(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 96 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 108 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 120 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 132 Q(as started without job control.)-.1 E -F1(bind)108 148.8 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0 -2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 160.8 Q F0([)2.5 E F1 -A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1-2.5 E F2 -(function)2.5 E F0 2.5(][)C F1-2.5 E F2(function)2.5 E F0 2.5(][)C -F1-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 172.8 Q F0 -([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F12.5 E F2 -(\214lename)2.5 E F1(bind)108 184.8 Q F0([)2.5 E F1A F2 -.1(ke)2.5 -G(ymap)-.2 E F0(])A F12.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -(shell\255command)A F1(bind)108 196.8 Q F0([)2.5 E F1A F2 -.1(ke) -2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -(function\255name)A F1(bind)108 208.8 Q F2 -.37(re)2.5 G -(adline\255command).37 E F0 .239(Display current)144 220.8 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 232.8 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 244.8 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 256.8 R(if supplied, ha)2.5 -E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 -268.8 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 280.8 Q F2 -.1(ke)5.158 G -(ymap)-.2 E F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af) -.15 F 2.659(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E -F2 -.1(ke)180 292.8 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193 -(emacs, emacs\255standar)5.693 F 3.192 -(d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E -(vi\255command)180 304.8 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 316.8 Q(d)-.37 E F0(.)A F1144 328.8 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 340.8 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 352.8 -Q F0(List current)24.19 E F1 -.18(re)2.5 G(adline).18 E F0 -(function names and bindings.)2.5 E F1144 364.8 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 376.8 S 2.5(yt).1 G -(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 388.8 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 400.8 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 412.8 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 424.8 Q F2(\214lename)2.5 E F0(Read k)180 -436.8 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A -F1144 448.8 Q F2(function)2.5 E F0(Query about which k)180 460.8 Q --.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H -(he named).1 E F2(function)2.5 E F0(.)A F1144 472.8 Q F2(function) -2.5 E F0(Unbind all k)180 484.8 Q -.15(ey)-.1 G 2.5(sb).15 G -(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1144 496.8 Q -F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 508.8 Q .3 -.15(ve a)-.15 H .3 --.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0 -(.)A F1144 520.8 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2 -(shell\255command)A F0(Cause)180 532.8 Q F2(shell\255command)4.325 E F0 -1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve) --.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F -(When)6.825 E F2(shell\255com-)4.325 E(mand)180 544.8 Q F0 1.765(is e) -4.265 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9 -/Times-Bold@0 SF(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765 -(riable to the contents of the).25 F F1 -.18(re)180 556.8 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 -568.8 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 580.8 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 -592.8 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 604.8 Q(The return v) -144 621.6 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 -(ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5 -E F1(br)108 638.4 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .055 -(Exit from within a)144 650.4 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 662.4 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 -674.4 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 -(bu)108 691.2 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 703.2 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 -715.2 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 -727.2 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(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(52)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(belo)108 84 Q 2.5 +(w\). Non-interacti)-.25 F .3 -.15(ve s)-.25 H +(hells do not perform history e).15 E(xpansion by def)-.15 E(ault.)-.1 E +1.305(History e)108 100.8 R 1.305(xpansions introduce w)-.15 F 1.306(or\ +ds from the history list into the input stream, making it easy to repea\ +t)-.1 F .21(commands, insert the ar)108 112.8 R .21(guments to a pre) +-.18 F .209 +(vious command into the current input line, or \214x errors in pre)-.25 +F(vious)-.25 E(commands quickly)108 124.8 Q(.)-.65 E 1.163(History e)108 +141.6 R 1.163(xpansion is performed immediately after a complete line i\ +s read, before the shell breaks it into)-.15 F -.1(wo)108 153.6 S 3.2 +(rds. It).1 F(tak)3.2 E .7(es place in tw)-.1 F 3.2(op)-.1 G 3.2 +(arts. The)-3.2 F .7 +(\214rst is to determine which line from the history list to use during) +3.2 F 4.367(substitution. The)108 165.6 R 1.868(second is to select por\ +tions of that line for inclusion into the current one.)4.367 F 1.868 +(The line)6.868 F .663(selected from the history is the)108 177.6 R/F1 +10/Times-Italic@0 SF -.15(ev)3.163 G(ent).15 E F0 3.163(,a)C .663 +(nd the portions of that line that are acted upon are)-3.163 F F1(wor) +3.162 E(ds)-.37 E F0 5.662(.V)C(arious)-6.772 E F1(modi\214er)108 189.6 +Q(s)-.1 E F0 .226(are a)2.726 F -.25(va)-.2 G .226 +(ilable to manipulate the selected w).25 F 2.726(ords. The)-.1 F .227 +(line is brok)2.726 F .227(en into w)-.1 F .227(ords in the same f)-.1 F +(ashion)-.1 E .352(as when reading input, so that se)108 201.6 R -.15 +(ve)-.25 G(ral).15 E F1(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .351 +(-separated w)B .351(ords surrounded by quotes are considered)-.1 F .624 +(one w)108 213.6 R 3.124(ord. History)-.1 F -.15(ex)3.124 G .624 +(pansions are introduced by the appearance of the history e).15 F .625 +(xpansion character)-.15 F 3.125(,w)-.4 G(hich)-3.125 E(is)108 225.6 Q +/F2 10/Times-Bold@0 SF(!)3.511 E F0 .178(by def)3.511 F 2.678 +(ault. Only)-.1 F .178(backslash \()2.678 F F2(\\).833 E F0 2.678(\)a) +.833 G .178(nd single quotes can quote the history e)-2.678 F .177 +(xpansion character)-.15 F 2.677(,b)-.4 G .177(ut the his-)-2.877 F .67 +(tory e)108 237.6 R .67(xpansion character is also treated as quoted if\ + it immediately precedes the closing double quote in a)-.15 F +(double-quoted string.)108 249.6 Q(Se)108 266.4 Q -.15(ve)-.25 G .03 +(ral characters inhibit history e).15 F .03 +(xpansion if found immediately follo)-.15 F .03(wing the history e)-.25 +F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 278.4 T +3.162(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 G 3.162(su)-3.162 G +.662(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and) +-.25 F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2 +(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.163 E +F0(will also inhibit e)108 290.4 Q(xpansion.)-.15 E(Se)108 307.2 Q -.15 +(ve)-.25 G .11(ral shell options settable with the).15 F F2(shopt)2.61 E +F0 -.2(bu)2.61 G .109(iltin may be used to tailor the beha).2 F .109 +(vior of history e)-.2 F(xpansion.)-.15 E 1.142(If the)108 319.2 R F2 +(histv)3.643 E(erify)-.1 E F0 1.143 +(shell option is enabled \(see the description of the)3.643 F F2(shopt) +3.643 E F0 -.2(bu)3.643 G 1.143(iltin belo).2 F 1.143(w\), and)-.25 F F2 +-.18(re)3.643 G(adline).18 E F0(is)3.643 E .461(being used, history sub\ +stitutions are not immediately passed to the shell parser)108 331.2 R +5.46(.I)-.55 G .46(nstead, the e)-5.46 F .46(xpanded line)-.15 F 1.515 +(is reloaded into the)108 343.2 R F2 -.18(re)4.015 G(adline).18 E F0 +1.515(editing b)4.015 F(uf)-.2 E 1.516(fer for further modi\214cation.) +-.25 F(If)6.516 E F2 -.18(re)4.016 G(adline).18 E F0 1.516 +(is being used, and the)4.016 F F2(histr)108 355.2 Q(eedit)-.18 E F0 +1.202(shell option is enabled, a f)3.702 F 1.202 +(ailed history substitution will be reloaded into the)-.1 F F2 -.18(re) +3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 367.2 S -.25(ff).2 G +1.16(er for correction.).25 F(The)6.16 E F23.66 E F0 1.16 +(option to the)3.66 F F2(history)3.66 E F0 -.2(bu)3.661 G 1.161 +(iltin command may be used to see what a history).2 F -.15(ex)108 379.2 +S .056(pansion will do before using it.).15 F(The)5.056 E F22.556 +E F0 .056(option to the)2.556 F F2(history)2.555 E F0 -.2(bu)2.555 G +.055(iltin may be used to add commands to the).2 F +(end of the history list without actually e)108 391.2 Q -.15(xe)-.15 G +(cuting them, so that the).15 E 2.5(ya)-.15 G(re a)-2.5 E -.25(va)-.2 G +(ilable for subsequent recall.).25 E 2.2(The shell allo)108 408 R 2.2 +(ws control of the v)-.25 F 2.2(arious characters used by the history e) +-.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.147(description of)108 +420 R F2(histchars)3.647 E F0(abo)3.647 E 1.447 -.15(ve u)-.15 H(nder) +.15 E F2 1.147(Shell V)3.647 F(ariables)-.92 E F0 3.646(\). The)B 1.146 +(shell uses the history comment character to)3.646 F +(mark history timestamps when writing the history \214le.)108 432 Q F2 +(Ev)87 448.8 Q(ent Designators)-.1 E F0 .204(An e)108 460.8 R -.15(ve) +-.25 G .204(nt designator is a reference to a command line entry in the\ + history list.).15 F .205(Unless the reference is abso-)5.204 F(lute, e) +108 472.8 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5 +(ot).15 G(he current position in the history list.)-2.5 E F2(!)108 489.6 +Q F0 1.608(Start a history substitution, e)144 489.6 R 1.608 +(xcept when follo)-.15 F 1.607(wed by a)-.25 F F2(blank)4.107 E F0 4.107 +(,n)C -.25(ew)-4.107 G 1.607(line, carriage return, = or \().25 F +(\(when the)144 501.6 Q F2(extglob)2.5 E F0 +(shell option is enabled using the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G +(iltin\).).2 E F2(!)108 513.6 Q F1(n)A F0(Refer to command line)144 +513.6 Q F1(n)2.5 E F0(.).24 E F2<21ad>108 525.6 Q F1(n)A F0 +(Refer to the current command minus)144 525.6 Q F1(n)2.5 E F0(.).24 E F2 +(!!)108 537.6 Q F0(Refer to the pre)144 537.6 Q(vious command.)-.25 E +(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 549.6 Q F1(string) +A F0 .865(Refer to the most recent command preceding the current positi\ +on in the history list starting with)144 549.6 R F1(string)144 561.6 Q +F0(.).22 E F2(!?)108 573.6 Q F1(string)A F2([?])A F0 1.503(Refer to the\ + most recent command preceding the current position in the history list\ + containing)144 585.6 R F1(string)144 597.6 Q F0 5(.T).22 G(he trailing) +-5 E F2(?)2.5 E F0(may be omitted if)2.5 E F1(string)2.84 E F0(is follo) +2.72 E(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12/Times-Bold@0 +SF(^)108 614.6 Q F1(string1)-5 I F3(^)5 I F1(string2)-5 I F3(^)5 I F0 +.783(Quick substitution.)144 621.6 R .783(Repeat the pre)5.783 F .784 +(vious command, replacing)-.25 F F1(string1)3.624 E F0(with)3.284 E F1 +(string2)3.284 E F0 5.784(.E).02 G(qui)-5.784 E -.25(va)-.25 G .784 +(lent to).25 F -.74(``)144 633.6 S(!!:s/).74 E F1(string1)A F0(/)A F1 +(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F2(Modi\214ers)2.5 E F0 +(belo)2.5 E(w\).)-.25 E F2(!#)108 645.6 Q F0 +(The entire command line typed so f)144 645.6 Q(ar)-.1 E(.)-.55 E F2 +-.75(Wo)87 662.4 S(rd Designators).75 E F0 -.8(Wo)108 674.4 S 1.314 +(rd designators are used to select desired w).8 F 1.314(ords from the e) +-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0 1.313 +(separates the e)3.813 F -.15(ve)-.25 G 1.313(nt speci\214cation).15 F +.529(from the w)108 686.4 R .529(ord designator)-.1 F 5.529(.I)-.55 G +3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 +(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2 +($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F23.029 E F0 3.029(,o)C(r) +-3.029 E F2(%)3.029 E F0 5.53(.W)C(ords)-6.33 E 1.301 +(are numbered from the be)108 698.4 R 1.301 +(ginning of the line, with the \214rst w)-.15 F 1.3 +(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.3 G 1.3(rds are).8 F +(inserted into the current line separated by single spaces.)108 710.4 Q +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(52)192.055 E 0 Cg EP %%Page: 53 53 %%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(is f)144 84 Q(alse if)-.1 E/F1 10/Times-Italic@0 SF(shell\255b) -2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E(uiltin command.)-.2 E/F2 -10/Times-Bold@0 SF(caller)108 100.8 Q F0([)2.5 E F1 -.2(ex)C(pr).2 E F0 -(])A .253(Returns the conte)144 112.8 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 124.8 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 136.8 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 148.8 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e) -144 160.8 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 172.8 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 184.8 Q -(alid position in the call stack.)-.25 E F2(cd)108 201.6 Q F0([)2.5 E F2 -A F0(|[)A F2A F0([)2.5 E F2A F0(]] [\255@]] [)A F1 -(dir)A F0(])A .321(Change the current directory to)144 213.6 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 225.6 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 237.6 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 249.6 -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 261.6 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 273.6 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 285.6 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 297.6 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 309.6 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 321.6 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 333.6 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 .468 -(determined after a successful directory change,)144 345.6 R F2(cd)2.968 -E F0 .468(will return an unsuccessful status.)2.968 F .467(On systems) -5.467 F .336(that support it, the)144 357.6 R F22.836 E F0 .336 -(option presents the e)2.836 F .336(xtended attrib)-.15 F .337 -(utes associated with a \214le as a directory)-.2 F(.)-.65 E .71(An ar) -144 369.6 R .71(gument of)-.18 F F23.21 E F0 .71(is con)3.21 F -.15 -(ve)-.4 G .71(rted to).15 F F3($OLDPWD)3.21 E F0 .71 -(before the directory change is attempted.)2.96 F .71(If a non-)5.71 F -.106(empty directory name from)144 381.6 R F3(CDP)2.606 E -.855(AT)-.666 -G(H).855 E F0 .107(is used, or if)2.356 F F22.607 E F0 .107 -(is the \214rst ar)2.607 F .107(gument, and the directory change)-.18 F -.038(is successful, the absolute pathname of the ne)144 393.6 R 2.538 -(ww)-.25 G .038(orking directory is written to the standard output.) --2.638 F(The return v)144 405.6 Q(alue is true if the directory w)-.25 E -(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F2(command)108 -422.4 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 434.4 Q F1(command)2.956 E F0(with) -3.527 E F1(ar)3.087 E(gs)-.37 E F0 .257 -(suppressing the normal shell function lookup. Only b)3.027 F .257 -(uiltin commands or)-.2 F .502(commands found in the)144 446.4 R F3 --.666(PA)3.002 G(TH)-.189 E F0 .502(are e)2.752 F -.15(xe)-.15 G 3.002 -(cuted. If).15 F(the)3.002 E F23.002 E F0 .502(option is gi)3.002 -F -.15(ve)-.25 G .501(n, the search for).15 F F1(command)3.201 E F0(is) -3.771 E .399(performed using a def)144 458.4 R .399(ault v)-.1 F .399 -(alue for)-.25 F F3 -.666(PA)2.899 G(TH)-.189 E F0 .4 -(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.4 E .175(either the)144 470.4 R F22.675 E F0(or)2.675 E F2 -2.675 E F0 .175(option is supplied, a description of)2.675 F F1(command) -2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F22.674 E F0 .174 -(option causes)2.674 F 3.317(as)144 482.4 S .817(ingle w)-3.317 F .817 -(ord indicating the command or \214lename used to in)-.1 F -.2(vo)-.4 G --.1(ke).2 G F1(command)3.618 E F0 .818(to be displayed; the)4.088 F F2 -144 494.4 Q F0 .25(option produces a more v)2.75 F .25 -(erbose description.)-.15 F .249(If the)5.25 F F22.749 E F0(or) -2.749 E F22.749 E F0 .249(option is supplied, the e)2.749 F .249 -(xit status)-.15 F 1.004(is 0 if)144 506.4 R F1(command)3.704 E F0 -.1 -(wa)4.274 G 3.504(sf).1 G 1.005(ound, and 1 if not.)-3.504 F 1.005 -(If neither option is supplied and an error occurred or)6.005 F F1 -(command)144.2 518.4 Q F0 1.599(cannot be found, the e)4.869 F 1.599 -(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.598 -(xit status of the)-.15 F F2(command)4.098 E F0 -.2(bu)144 530.4 S -(iltin is the e).2 E(xit status of)-.15 E F1(command)2.5 E F0(.).77 E F2 -(compgen)108 547.2 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(wor)-2.5 E(d) --.37 E F0(])A .012(Generate possible completion matches for)144 559.2 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.513(yo)-.15 G(ption)-2.513 E .982 -(accepted by the)144 571.2 R F2(complete)3.482 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 .981(nd write the matches to the) --3.481 F 1.415(standard output.)144 583.2 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 595.2 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 619.2 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 -631.2 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 643.2 Q F1(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 667.2 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 684 Q F0([)3.729 E F2(\255abcdefgjksuv)A F0 3.729(][)C F2 --3.729 E F1(comp-option)3.729 E F0 3.729(][)C F2(\255DE)-3.729 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.728(][)C F2-3.728 E F1(wor)3.728 -E(dlist)-.37 E F0 3.728(][)C F2-3.728 E F1(func-)3.728 E(tion)108 -696 Q F0 2.5(][)C F2-2.5 E F1(command)2.5 E F0(])A([)144 708 Q F2 -A 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(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(53)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF 2.5(0\()108 84 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 96 Q 2.5 +(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E/F2 +10/Times-Italic@0 SF(n)108.36 108 Q F0(The)144 108 Q F2(n)2.5 E F0(th w) +A(ord.)-.1 E F1(^)108 120 Q F0(The \214rst ar)144 120 Q 2.5 +(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1 E F1($)108 132 Q F0 .063 +(The last w)144 132 R 2.563(ord. This)-.1 F .063(is usually the last ar) +2.563 F .064(gument, b)-.18 F .064(ut will e)-.2 F .064 +(xpand to the zeroth w)-.15 F .064(ord if there is only)-.1 F(one w)144 +144 Q(ord in the line.)-.1 E F1(%)108 156 Q F0(The w)144 156 Q +(ord matched by the most recent `?)-.1 E F2(string)A F0(?' search.)A F2 +(x)108.77 168 Q F1A F2(y)A F0 2.5(Ar)144 168 S(ange of w)-2.5 E +(ords; `\255)-.1 E F2(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)-.25 E +F2(y)A F0('.)A F1(*)108 180 Q F0 .316(All of the w)144 180 R .316 +(ords b)-.1 F .316(ut the zeroth.)-.2 F .315(This is a synon)5.315 F +.315(ym for `)-.15 F F2(1\255$)A F0 2.815('. It)B .315 +(is not an error to use)2.815 F F1(*)2.815 E F0 .315(if there is)2.815 F +(just one w)144 192 Q(ord in the e)-.1 E -.15(ve)-.25 G +(nt; the empty string is returned in that case.).15 E F1(x*)108 204 Q F0 +(Abbre)144 204 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1<78ad>108 216 Q +F0(Abbre)144 216 Q(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 E(e)-.1 E F1 +(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E(If a w)108 +232.8 Q(ord designator is supplied without an e)-.1 E -.15(ve)-.25 G +(nt speci\214cation, the pre).15 E(vious command is used as the e)-.25 E +-.15(ve)-.25 G(nt.).15 E F1(Modi\214ers)87 249.6 Q F0 .183 +(After the optional w)108 261.6 R .183(ord designator)-.1 F 2.683(,t)-.4 +G .184(here may appear a sequence of one or more of the follo)-2.683 F +.184(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 273.6 Q F1(h) +108 290.4 Q F0(Remo)144 290.4 Q .3 -.15(ve a t)-.15 H +(railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t) +108 302.4 Q F0(Remo)144 302.4 Q .3 -.15(ve a)-.15 H +(ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r) +108 314.4 Q F0(Remo)144 314.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E +(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E +(ving the basename.)-.2 E F1(e)108 326.4 Q F0(Remo)144 326.4 Q .3 -.15 +(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 +338.4 Q F0(Print the ne)144 338.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E +(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 350.4 Q F0 +(Quote the substituted w)144 350.4 Q +(ords, escaping further substitutions.)-.1 E F1(x)108 362.4 Q F0 +(Quote the substituted w)144 362.4 Q(ords as with)-.1 E F1(q)2.5 E F0 +2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne) +2.5 E(wlines.)-.25 E F1(s/)108 374.4 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E +F1(/)A F0(Substitute)144 386.4 Q F2(ne)3.082 E(w)-.15 E F0 .221 +(for the \214rst occurrence of)3.032 F F2(old)2.951 E F0 .221(in the e) +3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721(yd)-.15 G +.221(elimiter can be used in place)-2.721 F .616(of /.)144 398.4 R .617 +(The \214nal delimiter is optional if it is the last character of the e) +5.616 F -.15(ve)-.25 G .617(nt line.).15 F .617(The delimiter may)5.617 +F .666(be quoted in)144 410.4 R F2(old)3.396 E F0(and)3.936 E F2(ne) +3.526 E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 +(If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166 +(ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E +F0 5.666(.A).77 G .274(single backslash will quote the &.)144 422.4 R +(If)5.274 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 +F F2(old)3.005 E F0 .275(substituted, or)3.545 F 2.775(,i)-.4 G 2.775 +(fn)-2.775 G 2.775(op)-2.775 G(re)-2.775 E(vi-)-.25 E +(ous history substitutions took place, the last)144 434.4 Q F2(string) +2.84 E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1 +(&)108 446.4 Q F0(Repeat the pre)144 446.4 Q(vious substitution.)-.25 E +F1(g)108 458.4 Q F0 .398(Cause changes to be applied o)144 458.4 R -.15 +(ve)-.15 G 2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398 +(nt line.).15 F .397(This is used in conjunction with `)5.398 F F1(:s)A +F0 2.897('\()C(e.g.,)-2.897 E(`)144 470.4 Q F1(:gs/)A F2(old)A F1(/)A F2 +(ne)A(w)-.15 E F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218 +(used with `)3.718 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.219 +(elimiter can be used in place of /, and the \214nal)-3.718 F .09 +(delimiter is optional if it is the last character of the e)144 482.4 R +-.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F1(a)2.589 E F0 .089 +(may be used as a synon)2.589 F .089(ym for)-.15 F F1(g)144 494.4 Q F0 +(.)A F1(G)108 506.4 Q F0(Apply the follo)144 506.4 Q(wing `)-.25 E F1(s) +A F0 2.5('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15 +(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 523.2 Q +(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .062 +(Unless otherwise noted, each b)108 535.2 R .062(uiltin command documen\ +ted in this section as accepting options preceded by)-.2 F F1108 +547.2 Q F0(accepts)2.534 E F12.534 E F0 .034 +(to signify the end of the options.)2.534 F(The)5.034 E F1(:)2.534 E F0 +(,)A F1(true)2.534 E F0(,)A F1(false)2.534 E F0 2.534(,a)C(nd)-2.534 E +F1(test)2.534 E F0 -.2(bu)2.534 G .033(iltins do not accept options and) +.2 F 1.548(do not treat)108 559.2 R F14.048 E F0(specially)4.048 E +6.549(.T)-.65 G(he)-6.549 E F1(exit)4.049 E F0(,)A F1(logout)4.049 E F0 +(,)A F1 -.18(re)4.049 G(tur).18 E(n)-.15 E F0(,)A F1(br)4.049 E(eak)-.18 +E F0(,)A F1(continue)4.049 E F0(,)A F1(let)4.049 E F0 4.049(,a)C(nd) +-4.049 E F1(shift)4.049 E F0 -.2(bu)4.049 G 1.549(iltins accept and).2 F +.261(process ar)108 571.2 R .261(guments be)-.18 F .261(ginning with) +-.15 F F12.761 E F0 .261(without requiring)2.761 F F12.761 E +F0 5.261(.O)C .261(ther b)-5.261 F .26(uiltins that accept ar)-.2 F .26 +(guments b)-.18 F .26(ut are not)-.2 F 1.154 +(speci\214ed as accepting options interpret ar)108 583.2 R 1.154 +(guments be)-.18 F 1.154(ginning with)-.15 F F13.654 E F0 1.154 +(as in)3.654 F -.25(va)-.4 G 1.154(lid options and require).25 F F1 +3.654 E F0(to)3.654 E(pre)108 595.2 Q -.15(ve)-.25 G +(nt this interpretation.).15 E F1(:)108 613.2 Q F0([)2.5 E F2(ar)A +(guments)-.37 E F0(])A .452(No ef)144 625.2 R .452 +(fect; the command does nothing be)-.25 F .452(yond e)-.15 F(xpanding) +-.15 E F2(ar)3.282 E(guments)-.37 E F0 .451(and performing an)3.221 F +2.951(ys)-.15 G(peci\214ed)-2.951 E 2.5(redirections. The)144 637.2 R +(return status is zero.)2.5 E F1(.)110.5 654 Q F2(\214lename)6.666 E F0 +([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 666 Q(ce)-.18 E F2 +(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02 +(Read and e)144 678 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2 +(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 +(vironment and return the e)-.4 F(xit)-.15 E 1.458 +(status of the last command e)144 690 R -.15(xe)-.15 G 1.458(cuted from) +.15 F F2(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F2(\214lename) +5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F .608 +(names in)144 702 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 E F0 +.608(are used to \214nd the directory containing)2.858 F F2(\214lename) +3.108 E F0 5.608(.T).18 G .608(he \214le searched for in)-5.608 F F4 +-.666(PA)3.108 G(TH)-.189 E F0 .833(need not be e)144 714 R -.15(xe)-.15 +G 3.333(cutable. When).15 F F1(bash)3.333 E F0 .832(is not in)3.333 F F2 +.832(posix mode)3.332 F F0 3.332(,t)C .832 +(he current directory is searched if no)-3.332 F .981 +(\214le is found in)144 726 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 +/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18 +E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981 +(iltin command is turned of).2 F .982(f, the)-.25 F(GNU Bash 4.4)72 768 +Q(2016 August 26)142.895 E(53)192.055 E 0 Cg EP %%Page: 54 54 %%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 \255pr)108 84 Q F0([)2.5 E F1 -(\255DE)A F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E F0(...])2.5 E -.634(Specify ho)144 96 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634 -(uments to each).18 F F2(name)3.134 E F0 .634(should be completed.)3.134 -F .633(If the)5.634 F F13.133 E F0 .633 -(option is supplied, or if no)3.133 F .139(options are supplied, e)144 -108 R .139(xisting completion speci\214cations are printed in a w)-.15 F -.14(ay that allo)-.1 F .14(ws them to be)-.25 F .31(reused as input.)144 -120 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.346 -(are supplied, all completion speci\214cations.)144 132 R(The)6.347 E F1 -3.847 E F0 1.347(option indicates that the remaining options)3.847 -F .5(and actions should apply to the `)144 144 R(`def)-.74 E(ault')-.1 E -3('c)-.74 G .5(ommand completion; that is, completion attempted on)-3 F -3.455(ac)144 156 S .955(ommand for which no completion has pre)-3.455 F -.955(viously been de\214ned.)-.25 F(The)5.955 E F13.455 E F0 .955 -(option indicates that)3.455 F .065 -(the remaining options and actions should apply to `)144 168 R(`empty') --.74 E 2.564('c)-.74 G .064(ommand completion; that is, comple-)-2.564 F -(tion attempted on a blank line.)144 180 Q 1.437 -(The process of applying these completion speci\214cations when w)144 -204 R 1.438(ord completion is attempted is)-.1 F(described abo)144 216 Q -.3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E(ogrammable Completion)-.18 E -F0(.)A .556(Other options, if speci\214ed, ha)144 240 R .856 -.15(ve t) --.2 H .555(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F -.555(guments to the)-.18 F F13.055 E F0(,)A F13.055 E F0 -3.055(,a)C(nd)-3.055 E F13.055 E F0 .722 -(options \(and, if necessary)144 252 R 3.222(,t)-.65 G(he)-3.222 E F1 -3.222 E F0(and)3.222 E F13.222 E F0 .723 -(options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E -(sion before the)144 264 Q F1(complete)2.5 E F0 -.2(bu)2.5 G -(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1144 276 Q F2 -(comp-option)2.5 E F0(The)184 288 Q F2(comp-option)2.791 E F0 .291 -(controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec') -.15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291 -(yond the simple)-.15 F(generation of completions.)184 300 Q F2 -(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 312 Q F0 -.281(Perform the rest of the def)224 324 R(ault)-.1 E F1(bash)2.781 E F0 -.281(completions if the compspec generates no)2.781 F(matches.)224 336 Q -F1(default)184 348 Q F0 2.876(Use readline')10 F 5.376(sd)-.55 G(ef) --5.376 E 2.875(ault \214lename completion if the compspec generates no) --.1 F(matches.)224 360 Q F1(dir)184 372 Q(names)-.15 E F0(Perform direc\ -tory name completion if the compspec generates no matches.)224 384 Q F1 -(\214lenames)184 396 Q F0 -.7(Te)224 408 S .137(ll readline that the co\ -mpspec generates \214lenames, so it can perform an).7 F 2.637<798c>-.15 -G(le-)-2.637 E .134(name\255speci\214c processing \(lik)224 420 R 2.634 -(ea)-.1 G .134(dding a slash to directory names, quoting spe-)-2.634 F -.45(cial characters, or suppressing trailing spaces\).)224 432 R .45 -(Intended to be used with shell)5.45 F(functions.)224 444 Q F1(noquote) -184 456 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 .814(re \214lenames \(quoting)-3.314 F -(\214lenames is the def)224 468 Q(ault\).)-.1 E F1(nospace)184 480 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 -492 Q F1(plusdirs)184 504 Q F0 1.985(After an)5.54 F 4.485(ym)-.15 G -1.985(atches de\214ned by the compspec are generated, directory name) --4.485 F .583(completion is attempted and an)224 516 R 3.084(ym)-.15 G -.584(atches are added to the results of the other)-3.084 F(actions.)224 -528 Q F1144 540 Q F2(action)2.5 E F0(The)184 552 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 -564 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(arrayv)184 576 Q(ar)-.1 E F0(Array v)224 588 Q -(ariable names.)-.25 E F1 4.7(binding Readline)184 600 R F0 -.1(ke)2.5 G -2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 612 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 624 -Q F0(Command names.)224 636 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 648 Q(ectory)-.18 E F0(Directory names.)224 660 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 672 -Q F0(Names of disabled shell b)224 684 Q(uiltins.)-.2 E F1(enabled)184 -696 Q F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184 -708 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(GNU Bash 4.3)72 -768 Q(2014 February 2)141.79 E(54)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 +SF -.666(PA)144 84 S(TH)-.189 E F0 .112(is not searched.)2.363 F .112 +(If an)5.112 F(y)-.15 E/F2 10/Times-Italic@0 SF(ar)2.612 E(guments)-.37 +E F0 .112(are supplied, the)2.612 F 2.612(yb)-.15 G .112 +(ecome the positional parameters when)-2.612 F F2(\214lename)144 96 Q F0 +1.697(is e)4.196 F -.15(xe)-.15 G 4.197(cuted. Otherwise).15 F 1.697 +(the positional parameters are unchanged.)4.197 F 1.697(If the)6.697 F +/F3 10/Times-Bold@0 SF4.197 E F0 1.697(option is)4.197 F(enabled,) +144 108 Q F3(sour)3.618 E(ce)-.18 E F0 1.118(inherits an)3.618 F 3.618 +(yt)-.15 G 1.118(rap on)-3.618 F F3(DEB)3.618 E(UG)-.1 E F0 3.618(;i)C +3.618(fi)-3.618 G 3.618(ti)-3.618 G 3.618(sn)-3.618 G 1.118(ot, an) +-3.618 F(y)-.15 E F3(DEB)3.617 E(UG)-.1 E F0 1.117(trap string is sa) +3.617 F -.15(ve)-.2 G 3.617(da).15 G(nd)-3.617 E .36 +(restored around the call to)144 120 R F3(sour)2.86 E(ce)-.18 E F0 2.86 +(,a)C(nd)-2.86 E F3(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F F3 +(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86 +(cutes. If).15 F F32.86 E F0(is)2.86 E 1.435 +(not set, and the sourced \214le changes the)144 132 R F3(DEB)3.935 E +(UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435 +(alue is retained when)-4.185 F F3(sour)3.935 E(ce)-.18 E F0 3.762 +(completes. The)144 144 R 1.262 +(return status is the status of the last command e)3.762 F 1.263 +(xited within the script \(0 if no)-.15 F(commands are e)144 156 Q -.15 +(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E F0 +(is not found or cannot be read.)2.68 E F3(alias)108 172.8 Q F0([)2.5 E +F3A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..]) +-2.5 E F3(Alias)144 184.8 Q F0 2.725(with no ar)5.225 F 2.724 +(guments or with the)-.18 F F35.224 E F0 2.724 +(option prints the list of aliases in the form)5.224 F F3(alias)5.224 E +F2(name)144 196.8 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F +.58(When ar)5.58 F .58 +(guments are supplied, an alias is de\214ned for each)-.18 F F2(name) +3.08 E F0(whose)144 208.8 Q F2(value)2.509 E F0 .009(is gi)2.509 F -.15 +(ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F2(value) +2.509 E F0 .009(causes the ne)2.509 F .009(xt w)-.15 F .009 +(ord to be check)-.1 F .008(ed for alias substi-)-.1 F .579 +(tution when the alias is e)144 220.8 R 3.079(xpanded. F)-.15 F .579 +(or each)-.15 F F2(name)3.079 E F0 .579(in the ar)3.079 F .579 +(gument list for which no)-.18 F F2(value)3.079 E F0 .579(is sup-)3.079 +F 1.314(plied, the name and v)144 232.8 R 1.314 +(alue of the alias is printed.)-.25 F F3(Alias)6.314 E F0 1.314 +(returns true unless a)3.814 F F2(name)3.814 E F0 1.313(is gi)3.814 F +-.15(ve)-.25 G 3.813(nf).15 G(or)-3.813 E +(which no alias has been de\214ned.)144 244.8 Q F3(bg)108 261.6 Q F0([) +2.5 E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 +273.6 R F2(jobspec)3.244 E F0 .745 +(in the background, as if it had been started with)3.244 F F3(&)3.245 E +F0 5.745(.I)C(f)-5.745 E F2(job-)4.985 E(spec)144 285.6 Q F0 .672 +(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the) +-3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F3 +(bg)5.671 E F2(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418 +(when job control is disabled or)144 297.6 R 2.919(,w)-.4 G .419 +(hen run with job control enabled, an)-2.919 F 2.919(ys)-.15 G +(peci\214ed)-2.919 E F2(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G +(ot)-2.919 E(found or w)144 309.6 Q(as started without job control.)-.1 +E F3(bind)108 326.4 Q F0([)2.5 E F3A F2 -.1(ke)2.5 G(ymap)-.2 E F0 +2.5(][)C F3(\255lpsvPSVX)-2.5 E F0(])A F3(bind)108 338.4 Q F0([)2.5 E F3 +A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F3-2.5 E F2 +(function)2.5 E F0 2.5(][)C F3-2.5 E F2(function)2.5 E F0 2.5(][)C +F3-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F3(bind)108 350.4 Q F0 +([)2.5 E F3A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F32.5 E F2 +(\214lename)2.5 E F3(bind)108 362.4 Q F0([)2.5 E F3A F2 -.1(ke)2.5 +G(ymap)-.2 E F0(])A F32.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 +(shell\255command)A F3(bind)108 374.4 Q F0([)2.5 E F3A F2 -.1(ke) +2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 +(function\255name)A F3(bind)108 386.4 Q F0([)2.5 E F3A F2 -.1(ke) +2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -.37(re)C +(adline\255command).37 E F0 .239(Display current)144 398.4 R F3 -.18(re) +2.739 G(adline).18 E F0 -.1(ke)2.739 G 2.739(ya)-.05 G .239 +(nd function bindings, bind a k)-2.739 F .539 -.15(ey s)-.1 H .238 +(equence to a).15 F F3 -.18(re)2.738 G(adline).18 E F0 .238(function or) +2.738 F .475(macro, or set a)144 410.4 R F3 -.18(re)2.975 G(adline).18 E +F0 -.25(va)2.975 G 2.975(riable. Each).25 F .476(non-option ar)2.976 F +.476(gument is a command as it w)-.18 F .476(ould appear in)-.1 F F2 +(.inputr)144 422.4 Q(c)-.37 E F0 2.984(,b).31 G .484 +(ut each binding or command must be passed as a separate ar)-3.184 F +.483(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 +(re\255read\255init\255\214le'. Options,)144 434.4 R(if supplied, ha)2.5 +E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F3144 +446.4 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 458.4 Q F2 -.1(ke)5.158 G +(ymap)-.2 E F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af) +.15 F 2.659(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E +F2 -.1(ke)180 470.4 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193 +(emacs, emacs\255standar)5.693 F 3.192 +(d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E +(vi\255command)180 482.4 Q F0 4.113(,a)C(nd)-4.113 E F2(vi\255insert) +4.113 E F0(.).68 E F2(vi)6.613 E F0 1.613(is equi)4.113 F -.25(va)-.25 G +1.613(lent to).25 F F2(vi\255command)4.113 E F0(\()4.113 E F2(vi\255mo)A +(ve)-.1 E F0 1.614(is also a syn-)4.114 F(on)180 494.4 Q(ym\);)-.15 E F2 +(emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2 +(emacs\255standar)2.5 E(d)-.37 E F0(.)A F3144 506.4 Q F0 +(List the names of all)180 506.4 Q F3 -.18(re)2.5 G(adline).18 E F0 +(functions.)2.5 E F3144 518.4 Q F0(Display)180 518.4 Q F3 -.18(re) +2.5 G(adline).18 E F0(function names and bindings in such a w)2.5 E +(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F3144 530.4 +Q F0(List current)180 530.4 Q F3 -.18(re)2.5 G(adline).18 E F0 +(function names and bindings.)2.5 E F3144 542.4 Q F0(Display)180 +542.4 Q F3 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 +G 1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo) +-.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 554.4 S 2.5(yt).1 G +(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F3144 566.4 Q +F0(Display)180 566.4 Q F3 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5 +(ys)-.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo) +-.15 G(utput.)-2.5 E F3144 578.4 Q F0(Display)180 578.4 Q F3 -.18 +(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E +(alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G +(an be re-read.)-2.5 E F3144 590.4 Q F0(List current)180 590.4 Q +F3 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E +(alues.)-.25 E F3144 602.4 Q F2(\214lename)2.5 E F0(Read k)180 +614.4 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A +F3144 626.4 Q F2(function)2.5 E F0(Query about which k)180 638.4 Q +-.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H +(he named).1 E F2(function)2.5 E F0(.)A F3144 650.4 Q F2(function) +2.5 E F0(Unbind all k)180 662.4 Q -.15(ey)-.1 G 2.5(sb).15 G +(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F3144 674.4 Q +F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 686.4 Q .3 -.15(ve a)-.15 H .3 +-.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0 +(.)A F3144 698.4 Q F2 -.1(ke)2.5 G(yseq)-.2 E F3(:)A F2 +(shell\255command)A F0(Cause)180 710.4 Q F2(shell\255command)4.325 E F0 +1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve) +-.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F +(When)6.825 E F2(shell\255com-)4.325 E(mand)180 722.4 Q F0 1.765(is e) +4.265 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F F1 +(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765 +(riable to the contents of the).25 F(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(54)192.055 E 0 Cg EP %%Page: 55 55 %%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(\214le)184 84 Q F0(File names.)27.22 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(function)184 96 -Q F0(Names of shell functions.)224 108 Q F1(gr)184 120 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 132 Q F0(Help topics as accepted by the)224 144 Q F1 -(help)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(hostname)184 156 Q F0 -(Hostnames, as tak)224 168 Q(en from the \214le speci\214ed by the)-.1 E -/F2 9/Times-Bold@0 SF(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E -F1(job)184 180 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 192 S(yw).1 E(ord)-.1 E F0(Shell reserv)224 204 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 216 Q F0(Names of running jobs, if job control is acti)5.54 -E -.15(ve)-.25 G(.).15 E F1(ser)184 228 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 240 Q F0 -1.11(Va)14.45 G(lid ar)1.11 E(guments for the)-.18 E F1 -2.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 252 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 264 Q F0 -(Signal names.)14.99 E F1(stopped)184 276 Q F0 -(Names of stopped jobs, if job control is acti)6.66 E -.15(ve)-.25 G(.) -.15 E F1(user)184 288 Q F0(User names.)21.67 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 300 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 312 Q/F3 -10/Times-Italic@0 SF(command)2.5 E(command)184 324 Q F0 1.056(is e)3.556 -F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056 -(vironment, and its output is used as the possible)-.4 F(completions.) -184 336 Q F1144 348 Q F3(function)2.5 E F0 .113 -(The shell function)184 360 R F3(function)2.614 E F0 .114(is e)2.614 F --.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 -(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 372 R --.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1 -($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816 -(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 -(are being completed, the second ar)184 384 R 1.407(gument \()-.18 F F1 -($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 -(ord being completed, and the)-.1 F .104(third ar)184 396 R .104 -(gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w) --2.604 F .104(ord preceding the w)-.1 F .103 -(ord being completed on the current com-)-.1 F .101(mand line.)184 408 R -.101(When it \214nishes, the possible completions are retrie)5.101 F --.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the) --.25 F F2(COMPREPL)184 420 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E -F1144 432 Q F3(globpat)2.5 E F0 1.008(The pathname e)184 444 R -1.008(xpansion pattern)-.15 F F3(globpat)3.507 E F0 1.007(is e)3.507 F -1.007(xpanded to generate the possible comple-)-.15 F(tions.)184 456 Q -F1144 468 Q F3(pr)2.5 E(e\214x)-.37 E(pr)184 480 Q(e\214x)-.37 E -F0 .534(is added at the be)3.034 F .534 -(ginning of each possible completion after all other options ha)-.15 F --.15(ve)-.2 G(been applied.)184 492 Q F1144 504 Q F3(suf)2.5 E -2.81(\214x suf)-.18 F<8c78>-.18 E F0 -(is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 516 Q F3(wor)2.5 E -(dlist)-.37 E F0(The)184 528 Q F3(wor)3.64 E(dlist)-.37 E F0 1.14 -(is split using the characters in the)3.64 F F2(IFS)3.64 E F0 1.139 -(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F 2.007 -(each resultant w)184 540 R 2.007(ord is e)-.1 F 4.507(xpanded. The)-.15 -F 2.008(possible completions are the members of the)4.507 F -(resultant list which match the w)184 552 Q(ord being completed.)-.1 E -F1144 564 Q F3(\214lterpat)2.5 E(\214lterpat)184 576 Q F0 .456 -(is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F -.455(is applied to the list of possible)2.956 F 1.596 -(completions generated by the preceding options and ar)184 588 R 1.596 -(guments, and each completion)-.18 F(matching)184 600 Q F3(\214lterpat) -3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704 -(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 -(in)3.204 E F3(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 -(tes the pattern;).05 F(in this case, an)184 612 Q 2.5(yc)-.15 G -(ompletion not matching)-2.5 E F3(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .466(The return v)144 628.8 R .466 -(alue is true unless an in)-.25 F -.25(va)-.4 G .466 -(lid option is supplied, an option other than).25 F F12.967 E F0 -(or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 -(plied without a)144 640.8 R F3(name)3.862 E F0(ar)3.862 E 1.361 -(gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H -1.361(ompletion speci\214cation for a).15 F F3(name)144 652.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 669.6 Q F0([)2.5 E F1A F3(option)2.5 E F0 2.5(][)C -F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F3(option)2.5 E F0 2.5(][)C F3 -(name)-2.5 E F0(])A .447(Modify completion options for each)144 681.6 R -F3(name)2.947 E F0 .447(according to the)2.947 F F3(option)2.947 E F0 -.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726 -(completion if no)144 693.6 R F3(name)3.226 E F0 3.226(sa)C .726 -(re supplied.)-3.226 F .725(If no)5.725 F F3(option)3.225 E F0 3.225(sa) -C .725(re gi)-3.225 F -.15(ve)-.25 G .725 -(n, display the completion options for).15 F(each)144 705.6 Q F3(name) -3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) -5.724 F .724(alues of)-.25 F F3(option)3.224 E F0 .724(are those v)3.224 -F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 717.6 Q F0 -.2(bu) -2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) --5.297 E F12.797 E F0 .297 -(option indicates that the remaining options should apply to)2.797 F -1.227(the `)144 729.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ -mmand completion; that is, completion attempted on a command for which \ -no)-3.727 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(55)190.95 E 0 -Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF -.18(re)180 84 S(adline).18 E F0 1.353(line b)3.852 F(uf)-.2 E 1.353 +(fer and the)-.25 F/F2 9/Times-Bold@0 SF(READLINE_POINT)3.853 E F0 -.25 +(va)3.603 G 1.353(riable to the current location of the).25 F 2.012 +(insertion point.)180 96 R 2.011(If the e)7.012 F -.15(xe)-.15 G 2.011 +(cuted command changes the v).15 F 2.011(alue of)-.25 F F2 +(READLINE_LINE)4.511 E F0(or)4.261 E F2(READLINE_POINT)180 108 Q/F3 9 +/Times-Roman@0 SF(,)A F0(those ne)2.25 E 2.5(wv)-.25 G +(alues will be re\215ected in the editing state.)-2.75 E F1144 120 +Q F0 .829(List all k)180 120 R 1.129 -.15(ey s)-.1 H .829 +(equences bound to shell commands and the associated commands in a for) +.15 F(-)-.2 E(mat that can be reused as input.)180 132 Q(The return v) +144 148.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 +(ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5 +E F1(br)108 165.6 Q(eak)-.18 E F0([)2.5 E/F4 10/Times-Italic@0 SF(n)A F0 +(])A .055(Exit from within a)144 177.6 R F1 -.25(fo)2.555 G(r).25 E F0 +(,)A F1(while)2.555 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E +F1(select)2.555 E F0 2.555(loop. If)2.555 F F4(n)2.555 E F0 .055 +(is speci\214ed, break)2.555 F F4(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G +(ls.).15 E F4(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol SF2.554 +E F0(1.)2.554 E(If)144 189.6 Q F4(n)3.074 E F0 .215(is greater than the\ + number of enclosing loops, all enclosing loops are e)2.954 F 2.715 +(xited. The)-.15 F .215(return v)2.715 F(alue)-.25 E(is 0 unless)144 +201.6 Q F4(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 +(bu)108 218.4 S(iltin).2 E F4(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E +F4(ar)A(guments)-.37 E F0(])A(Ex)144 230.4 Q .793 +(ecute the speci\214ed shell b)-.15 F .793(uiltin, passing it)-.2 F F4 +(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 +242.4 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 +254.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 +-.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E +5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 266.4 Q(alse if)-.1 +E F4(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E +(uiltin command.)-.2 E F1(caller)108 283.2 Q F0([)2.5 E F4 -.2(ex)C(pr) +.2 E F0(])A .253(Returns the conte)144 295.2 R .254(xt of an)-.15 F +2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254 +(ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G +.254(cuted with the).15 F F1(.)2.754 E F0(or)2.754 E F1(sour)144 307.2 Q +(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F4 -.2 +(ex)2.825 G(pr).2 E F0(,)A F1(caller)2.825 E F0 .324 +(displays the line number and source \214lename of the current)2.824 F +.253(subroutine call.)144 319.2 R .253(If a non-ne)5.253 F -.05(ga)-.15 +G(ti).05 E .553 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 +F F4 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .254 +(displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\ +tine name, and source \214le corresponding to that position in the curr\ +ent e)144 331.2 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e) +144 343.2 Q(xtra information may be used, for e)-.15 E .001 +(xample, to print a stack trace.)-.15 F .001(The current frame is frame) +5.001 F 3.02(0. The)144 355.2 R .52(return v)3.02 F .52 +(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519 +(cuting a subroutine call or).15 F F4 -.2(ex)3.019 G(pr).2 E F0 .519 +(does not corre-)3.019 F(spond to a v)144 367.2 Q +(alid position in the call stack.)-.25 E F1(cd)108 384 Q F0([)2.5 E F1 +A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F4 +(dir)A F0(])A .321(Change the current directory to)144 396 R F4(dir) +2.821 E F0 5.321(.i)C(f)-5.321 E F4(dir)2.821 E F0 .322 +(is not supplied, the v)2.821 F .322(alue of the)-.25 F F2(HOME)2.822 E +F0 .322(shell v)2.572 F .322(ariable is)-.25 F 1.036(the def)144 408 R +3.536(ault. An)-.1 F 3.536(ya)-.15 G 1.035(dditional ar)-3.536 F 1.035 +(guments follo)-.18 F(wing)-.25 E F4(dir)3.535 E F0 1.035(are ignored.) +3.535 F 1.035(The v)6.035 F(ariable)-.25 E F2(CDP)3.535 E -.855(AT)-.666 +G(H).855 E F0(de\214nes)3.285 E .849 +(the search path for the directory containing)144 420 R F4(dir)3.349 E +F0 3.35(:e).73 G .85(ach directory name in)-3.35 F F2(CDP)3.35 E -.855 +(AT)-.666 G(H).855 E F0 .85(is searched for)3.1 F F4(dir)144 432 Q F0 +5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665 +(irectory names in).15 F F2(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 +.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664 +(ull directory name)-3.165 F(in)144 444 Q F2(CDP)4.162 E -.855(AT)-.666 +G(H).855 E F0 1.662(is the same as the current directory)3.912 F 4.162 +(,i)-.65 G 1.662(.e., `)-4.162 F(`)-.74 E F1(.)A F0 -.74('')C 6.662(.I) +.74 G(f)-6.662 E F4(dir)4.513 E F0(be)4.893 E 1.663 +(gins with a slash \(/\), then)-.15 F F2(CDP)144 456 Q -.855(AT)-.666 G +(H).855 E F0 .191(is not used.)2.441 F(The)5.191 E F12.691 E F0 +.191(option causes)2.691 F F1(cd)2.691 E F0 .191(to use the ph)2.691 F +.19(ysical directory structure by resolving)-.05 F 1.12 +(symbolic links while tra)144 468 R -.15(ve)-.2 G(rsing).15 E F4(dir) +3.62 E F0 1.12(and before processing instances of)3.62 F F4(..)3.62 E F0 +(in)3.62 E F4(dir)3.62 E F0 1.12(\(see also the)3.62 F F13.62 E F0 +.395(option to the)144 480 R F1(set)2.895 E F0 -.2(bu)2.895 G .395 +(iltin command\); the).2 F F12.895 E F0 .395 +(option forces symbolic links to be follo)2.895 F .395(wed by resolv-) +-.25 F .443(ing the link after processing instances of)144 492 R F4(..) +2.943 E F0(in)2.943 E F4(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F4(..) +2.943 E F0 .443(appears in)2.943 F F4(dir)2.943 E F0 2.943(,i)C 2.943 +(ti)-2.943 G 2.944(sp)-2.943 G .444(rocessed by remo)-2.944 F(ving)-.15 +E .744(the immediately pre)144 504 R .744(vious pathname component from) +-.25 F F4(dir)3.244 E F0 3.244(,b)C .744(ack to a slash or the be)-3.244 +F .744(ginning of)-.15 F F4(dir)3.244 E F0(.)A 1.465(If the)144 516 R F1 +3.965 E F0 1.465(option is supplied with)3.965 F F13.965 E +F0 3.965(,a)C 1.465(nd the current w)-3.965 F 1.466 +(orking directory cannot be successfully)-.1 F .468 +(determined after a successful directory change,)144 528 R F1(cd)2.968 E +F0 .468(will return an unsuccessful status.)2.968 F .467(On systems) +5.467 F .336(that support it, the)144 540 R F12.836 E F0 .336 +(option presents the e)2.836 F .336(xtended attrib)-.15 F .337 +(utes associated with a \214le as a directory)-.2 F(.)-.65 E .71(An ar) +144 552 R .71(gument of)-.18 F F13.21 E F0 .71(is con)3.21 F -.15 +(ve)-.4 G .71(rted to).15 F F2($OLDPWD)3.21 E F0 .71 +(before the directory change is attempted.)2.96 F .71(If a non-)5.71 F +.106(empty directory name from)144 564 R F2(CDP)2.606 E -.855(AT)-.666 G +(H).855 E F0 .107(is used, or if)2.356 F F12.607 E F0 .107 +(is the \214rst ar)2.607 F .107(gument, and the directory change)-.18 F +.038(is successful, the absolute pathname of the ne)144 576 R 2.538(ww) +-.25 G .038(orking directory is written to the standard output.)-2.638 F +(The return v)144 588 Q(alue is true if the directory w)-.25 E +(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F1(command)108 +604.8 Q F0([)2.5 E F1(\255pVv)A F0(])A F4(command)2.5 E F0([)2.5 E F4 +(ar)A(g)-.37 E F0(...])2.5 E(Run)144 616.8 Q F4(command)2.764 E F0(with) +3.334 E F4(ar)2.894 E(gs)-.37 E F0 .065 +(suppressing the normal shell function lookup.)2.834 F .065(Only b)5.065 +F .065(uiltin commands or)-.2 F .502(commands found in the)144 628.8 R +F2 -.666(PA)3.002 G(TH)-.189 E F0 .502(are e)2.752 F -.15(xe)-.15 G +3.002(cuted. If).15 F(the)3.002 E F13.002 E F0 .502(option is gi) +3.002 F -.15(ve)-.25 G .501(n, the search for).15 F F4(command)3.201 E +F0(is)3.771 E .399(performed using a def)144 640.8 R .399(ault v)-.1 F +.399(alue for)-.25 F F2 -.666(PA)2.899 G(TH)-.189 E F0 .4 +(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) +5.4 E .175(either the)144 652.8 R F12.675 E F0(or)2.675 E F1 +2.675 E F0 .175(option is supplied, a description of)2.675 F F4(command) +2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F12.674 E F0 .174 +(option causes)2.674 F 3.317(as)144 664.8 S .817(ingle w)-3.317 F .817 +(ord indicating the command or \214lename used to in)-.1 F -.2(vo)-.4 G +-.1(ke).2 G F4(command)3.618 E F0 .818(to be displayed; the)4.088 F F1 +144 676.8 Q F0 .25(option produces a more v)2.75 F .25 +(erbose description.)-.15 F .249(If the)5.25 F F12.749 E F0(or) +2.749 E F12.749 E F0 .249(option is supplied, the e)2.749 F .249 +(xit status)-.15 F 1.004(is 0 if)144 688.8 R F4(command)3.704 E F0 -.1 +(wa)4.274 G 3.504(sf).1 G 1.005(ound, and 1 if not.)-3.504 F 1.005 +(If neither option is supplied and an error occurred or)6.005 F F4 +(command)144.2 700.8 Q F0 1.599(cannot be found, the e)4.869 F 1.599 +(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.598 +(xit status of the)-.15 F F1(command)4.098 E F0 -.2(bu)144 712.8 S +(iltin is the e).2 E(xit status of)-.15 E F4(command)2.5 E F0(.).77 E +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(55)192.055 E 0 Cg EP %%Page: 56 56 %%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.178(completion has pre)144 84 R 2.178(viously been de\214ned.) --.25 F(The)7.178 E/F1 10/Times-Bold@0 SF4.678 E F0 2.177 -(option indicates that the remaining options)4.677 F(should apply to `) -144 96 Q(`empty')-.74 E 2.5('c)-.74 G -(ommand completion; that is, completion attempted on a blank line.)-2.5 -E 1.387(The return v)144 120 R 1.387(alue is true unless an in)-.25 F --.25(va)-.4 G 1.388 -(lid option is supplied, an attempt is made to modify the).25 F -(options for a)144 132 Q/F2 10/Times-Italic@0 SF(name)2.5 E F0 -(for which no completion speci\214cation e)2.5 E -(xists, or an output error occurs.)-.15 E F1(continue)108 148.8 Q F0([) -2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 160.8 R 1.754 -(xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A -F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1 -(select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753 -(is speci\214ed,)4.493 F 1.208(resume at the)144 172.8 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 .514 -(loops, the last enclosing loop \(the `)144 184.8 R(`top-le)-.74 E -.15 -(ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513 -(The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is) -3.013 E(not greater than or equal to 1.)144 196.8 Q F1(declar)108 213.6 -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 225.6 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 --2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E 1.264(Declare v)144 237.6 R 1.264(ariables and/or gi)-.25 F -1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no) -3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 -G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F --.25(va)144 249.6 S 3.483(riables. The).25 F F13.483 E F0 .983 -(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 -(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 -3.482 E F0 .982(is used)3.482 F(with)144 261.6 Q F2(name)2.774 E -F0(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 -2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275 -(re ignored.)-2.775 F(When)5.275 E F12.775 E F0 .275(is supplied) -2.775 F(without)144 273.6 Q F2(name)4.814 E F0(ar)4.814 E 2.314 -(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313 -(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F -(attrib)144 285.6 Q 1.181(utes speci\214ed by the additional options.) --.2 F 1.182(If no other options are supplied with)6.181 F F13.682 -E F0(,)A F1(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 -297.6 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12 -(ariables. The)-.25 F F13.12 E F0 .62 -(option will restrict the display)3.12 F 1.29(to shell functions.)144 -309.6 R(The)6.29 E F13.79 E F0 1.291(option inhibits the display \ -of function de\214nitions; only the function)3.791 F .948 -(name and attrib)144 321.6 R .948(utes are printed.)-.2 F .948(If the) -5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948 -(shell option is enabled using)3.448 F F1(shopt)3.448 E F0 3.448(,t)C -.948(he source)-3.448 F 1.342(\214le name and line number where the fun\ -ction is de\214ned are displayed as well.)144 333.6 R(The)6.342 E F1 -3.842 E F0(option)3.842 E(implies)144 345.6 Q F13.892 E F0 -6.392(.T)C(he)-6.392 E F13.892 E F0 1.391(option forces v)3.892 F -1.391(ariables to be created or modi\214ed at the global scope, e)-.25 F --.15(ve)-.25 G(n).15 E(when)144 357.6 Q F1(declar)4.382 E(e)-.18 E F0 -1.882(is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F -1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F -(wing)-.25 E .794(options can be used to restrict output to v)144 369.6 -R .794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 -F 1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 381.6 Q(utes:)-.2 E -F1144 393.6 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 405.6 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 417.6 Q F0(Use function names only) -26.97 E(.)-.65 E F1144 429.6 Q F0 .557(The v)27.52 F .558 -(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 -(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .558 -(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 441.6 Q F0(abo) -2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v) --2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 453.6 Q -F0 .91(When the v)27.52 F .909(ariable is assigned a v)-.25 F .909 -(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 -G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 465.6 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 477.6 -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 489.6 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 501.6 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 513.6 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 -525.6 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 537.6 Q F1144 549.6 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 561.6 Q -(The trace attrib)5 E(ute has no special meaning for v)-.2 E(ariables.) --.25 E F1144 573.6 Q F0 .91(When the v)24.74 F .909 -(ariable is assigned a v)-.25 F .909(alue, all lo)-.25 F(wer)-.25 E .909 -(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to upper).15 F -(-)-.2 E 2.5(case. The)180 585.6 R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 -E(ute is disabled.)-.2 E F1144 597.6 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 614.4 R -2.62(ft)-.25 G .12(he attrib)-2.62 F .121(ute instead, with the e)-.2 F -.121(xceptions that)-.15 F F1(+a)2.621 E F0 .121(may not be used)2.621 F -.645(to destro)144 626.4 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 638.4 Q F1 -(declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835 -E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335 -(local, as with the)2.835 F F1(local)2.835 E F0 .335 -(command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.283 -(is supplied.)144 650.4 R 1.283(If a v)6.283 F 1.283 -(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783 -(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.282 -(ariable is set to)-.25 F F2(value)3.782 E F0(.)A .926(When using)144 -662.4 R F13.426 E F0(or)3.426 E F13.426 E F0 .927 -(and the compound assignment syntax to create array v)3.426 F .927 -(ariables, additional)-.25 F(attrib)144 674.4 Q .592(utes do not tak)-.2 -F 3.092(ee)-.1 G -.25(ff)-3.092 G .592 -(ect until subsequent assignments.).25 F .592(The return v)5.592 F .592 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429 -(option is encountered, an attempt is made to de\214ne a function using) -144 686.4 R/F5 10/Courier@0 SF .429(\255f foo=bar)2.929 F F0 2.929(,a)C -2.929(na)-2.929 G .429(ttempt is)-2.929 F .063(made to assign a v)144 -698.4 R .063(alue to a readonly v)-.25 F .062 -(ariable, an attempt is made to assign a v)-.25 F .062 -(alue to an array v)-.25 F(ari-)-.25 E .102 -(able without using the compound assignment syntax \(see)144 710.4 R F1 -(Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F -F2(names)2.602 E F0 .102(is not a)2.602 F -.25(va)144 722.4 S .172 -(lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25 -F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .171 -(ariable, an)-.25 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(56) -190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(compgen)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(option)A F0 2.5 +(][)C F2(wor)-2.5 E(d)-.37 E F0(])A .012 +(Generate possible completion matches for)144 96 R F2(wor)2.513 E(d)-.37 +E F0 .013(according to the)2.513 F F2(option)2.513 E F0 .013 +(s, which may be an)B 2.513(yo)-.15 G(ption)-2.513 E .982 +(accepted by the)144 108 R F1(complete)3.482 E F0 -.2(bu)3.481 G .981 +(iltin with the e).2 F .981(xception of)-.15 F F13.481 E F0(and) +3.481 E F13.481 E F0 3.481(,a)C .981(nd write the matches to the) +-3.481 F .13(standard output.)144 120 R .13(When using the)5.13 F F1 +2.63 E F0(or)2.63 E F12.631 E F0 .131(options, the v)2.631 F +.131(arious shell v)-.25 F .131(ariables set by the program-)-.25 F +(mable completion f)144 132 Q(acilities, while a)-.1 E -.25(va)-.2 G +(ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25 +E .352(The matches will be generated in the same w)144 156 R .352 +(ay as if the programmable completion code had gen-)-.1 F .02(erated th\ +em directly from a completion speci\214cation with the same \215ags.)144 +168 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)2.52 +F(those completions matching)144 180 Q F2(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(The return v)144 204 Q +(alue is true unless an in)-.25 E -.25(va)-.4 G +(lid option is supplied, or no matches were generated.).25 E F1 +(complete)108 220.8 Q F0([)3.729 E F1(\255abcdefgjksuv)A F0 3.729(][)C +F1-3.729 E F2(comp-option)3.729 E F0 3.729(][)C F1(\255DE)-3.729 E +F0 3.728(][)C F1-3.728 E F2(action)3.728 E F0 3.728(][)C F1 +-3.728 E F2(globpat)3.728 E F0 3.728(][)C F1-3.728 E F2(wor)3.728 +E(dlist)-.37 E F0 3.728(][)C F1-3.728 E F2(func-)3.728 E(tion)108 +232.8 Q F0 2.5(][)C F1-2.5 E F2(command)2.5 E F0(])A([)144 244.8 Q +F1A F2(\214lterpat)2.5 E F0 2.5(][)C F1-2.5 E F2(pr)2.5 E +(e\214x)-.37 E F0 2.5(][)C F1-2.5 E F2(suf)2.5 E<8c78>-.18 E F0(]) +A F2(name)2.5 E F0([)2.5 E F2(name ...)A F0(])A F1(complete \255pr)108 +256.8 Q F0([)2.5 E F1(\255DE)A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E +.633(Specify ho)144 268.8 R 3.133(wa)-.25 G -.18(rg)-3.133 G .633 +(uments to each).18 F F2(name)3.133 E F0 .633(should be completed.)3.133 +F .634(If the)5.634 F F13.134 E F0 .634 +(option is supplied, or if no)3.134 F .14(options are supplied, e)144 +280.8 R .139(xisting completion speci\214cations are printed in a w)-.15 +F .139(ay that allo)-.1 F .139(ws them to be)-.25 F .31 +(reused as input.)144 292.8 R(The)5.31 E F12.81 E F0 .31 +(option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31 +(ompletion speci\214cation for each)-2.81 F F2(name)2.81 E F0 2.81(,o)C +1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F2(name)2.81 E F0(s)A 1.347 +(are supplied, all completion speci\214cations.)144 304.8 R(The)6.347 E +F13.847 E F0 1.346(option indicates that the remaining options) +3.847 F .5(and actions should apply to the `)144 316.8 R(`def)-.74 E +(ault')-.1 E 3('c)-.74 G .5 +(ommand completion; that is, completion attempted on)-3 F 3.455(ac)144 +328.8 S .955(ommand for which no completion has pre)-3.455 F .955 +(viously been de\214ned.)-.25 F(The)5.955 E F13.455 E F0 .955 +(option indicates that)3.455 F .064 +(the remaining options and actions should apply to `)144 340.8 R +(`empty')-.74 E 2.565('c)-.74 G .065 +(ommand completion; that is, comple-)-2.565 F +(tion attempted on a blank line.)144 352.8 Q 1.438 +(The process of applying these completion speci\214cations when w)144 +376.8 R 1.437(ord completion is attempted is)-.1 F(described abo)144 +388.8 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E +(ogrammable Completion)-.18 E F0(.)A .555 +(Other options, if speci\214ed, ha)144 412.8 R .855 -.15(ve t)-.2 H .555 +(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555 +(guments to the)-.18 F F13.056 E F0(,)A F13.056 E F0 3.056 +(,a)C(nd)-3.056 E F13.056 E F0 .723(options \(and, if necessary) +144 424.8 R 3.223(,t)-.65 G(he)-3.223 E F13.223 E F0(and)3.223 E +F13.223 E F0 .722 +(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E +(sion before the)144 436.8 Q F1(complete)2.5 E F0 -.2(bu)2.5 G +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1144 448.8 Q +F2(comp-option)2.5 E F0(The)184 460.8 Q F2(comp-option)2.79 E F0 .291 +(controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec') +.15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291 +(yond the simple)-.15 F(generation of completions.)184 472.8 Q F2 +(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 484.8 Q F0 +.281(Perform the rest of the def)224 496.8 R(ault)-.1 E F1(bash)2.781 E +F0 .281(completions if the compspec generates no)2.781 F(matches.)224 +508.8 Q F1(default)184 520.8 Q F0 2.875(Use readline')224 520.8 R 5.375 +(sd)-.55 G(ef)-5.375 E 2.876 +(ault \214lename completion if the compspec generates no)-.1 F(matches.) +224 532.8 Q F1(dir)184 544.8 Q(names)-.15 E F0(Perform directory name c\ +ompletion if the compspec generates no matches.)224 556.8 Q F1 +(\214lenames)184 568.8 Q F0 -.7(Te)224 580.8 S .137(ll readline that th\ +e compspec generates \214lenames, so it can perform an).7 F 2.636<798c> +-.15 G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 592.8 R +2.634(ea)-.1 G .134(dding a slash to directory names, quoting spe-) +-2.634 F .45(cial characters, or suppressing trailing spaces\).)224 +604.8 R .45(Intended to be used with shell)5.45 F(functions.)224 616.8 Q +F1(noquote)184 628.8 Q F0 -.7(Te)224 628.8 S .814 +(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F +3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F +(\214lenames is the def)224 640.8 Q(ault\).)-.1 E F1(nosort)184 652.8 Q +F0 -.7(Te)224 652.8 S(ll readline not to sort the list of possible comp\ +letions alphabetically).7 E(.)-.65 E F1(nospace)184 664.8 Q F0 -.7(Te) +224 664.8 S .22(ll readline not to append a space \(the def).7 F .22 +(ault\) to w)-.1 F .22(ords completed at the end)-.1 F(of the line.)224 +676.8 Q F1(plusdirs)184 688.8 Q F0 1.985(After an)224 688.8 R 4.485(ym) +-.15 G 1.985 +(atches de\214ned by the compspec are generated, directory name)-4.485 F +.584(completion is attempted and an)224 700.8 R 3.084(ym)-.15 G .584 +(atches are added to the results of the other)-3.084 F(actions.)224 +712.8 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(56)192.055 E 0 Cg +EP %%Page: 57 57 %%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 .96(attempt is made to turn of)144 84 R 3.46(fa)-.25 G .96 -(rray status for an array v)-3.46 F .96 -(ariable, or an attempt is made to display a)-.25 F(non-e)144 96 Q -(xistent function with)-.15 E/F1 10/Times-Bold@0 SF2.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 112.8 Q/F2 10/Times-Italic@0 SF(n)A F1 2.5(][)C --2.5 E F2(n)A F1(])A F0 -.4(Wi)144 124.8 S .329 -(thout options, displays the list of currently remembered directories.) -.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 136.8 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 148.8 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 160.8 Q F0 -(Clears the directory stack by deleting all of the entries.)25.86 E F1 -144 172.8 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 -184.8 Q(.)-.65 E F1144 196.8 Q F0 -(Print the directory stack with one entry per line.)24.74 E F1144 -208.8 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 220.8 Q F1(+)144 232.8 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 244.8 Q F1144 256.8 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 268.8 Q .258(The return v)144 -285.6 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 -(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) --.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) -.15 F(tory stack.)144 297.6 Q F1(diso)108 314.4 Q(wn)-.1 E F0([)2.5 E F1 -(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 -(...])2.5 E -.4(Wi)144 326.4 S .121(thout options, remo).4 F .422 -.15 -(ve e)-.15 H(ach).15 E F2(jobspec)4.362 E F0 .122 -(from the table of acti)2.932 F .422 -.15(ve j)-.25 H 2.622(obs. If).15 -F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 F .096 -(neither the)144 338.4 R F12.596 E F0 .096(nor the)2.596 F F1 -2.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E -.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 -2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) -.15 F F2(jobspec)144 350.4 Q F0 .672(is not remo)3.482 F -.15(ve)-.15 G -3.172(df).15 G .672(rom the table, b)-3.172 F .672(ut is mark)-.2 F .672 -(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.172 E F0 .673 -(is not sent to the job if the)2.922 F .962(shell recei)144 362.4 R -.15 -(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 -(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 -3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 -H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 374.4 R F1 -3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 -(ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F -1.359(The return)6.359 F -.25(va)144 386.4 S(lue is 0 unless a).25 E F2 -(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E -F1(echo)108 403.2 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) --.37 E F0(...])2.5 E .425(Output the)144 415.2 R F2(ar)2.925 E(g)-.37 E -F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 -(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 -(error occurs.)144 427.2 R(If)5.307 E F12.807 E F0 .307 -(is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 -F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 -(ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144 -439.2 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) -6.348 E F13.848 E F0 1.348(option disables the)3.848 F 1.054 -(interpretation of these escape characters, e)144 451.2 R -.15(ve)-.25 G -3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555 -(ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144 -463.2 Q F1(xpg_echo)3.459 E F0 .959 -(shell option may be used to dynamically determine whether or not)3.459 -F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715 -(these escape characters by def)144 475.2 R(ault.)-.1 E F1(echo)5.715 E -F0 .716(does not interpret)3.215 F F13.216 E F0 .716 -(to mean the end of options.)3.216 F F1(echo)5.716 E F0 -(interprets the follo)144 487.2 Q(wing escape sequences:)-.25 E F1(\\a) -144 499.2 Q F0(alert \(bell\))28.22 E F1(\\b)144 511.2 Q F0(backspace) -27.66 E F1(\\c)144 523.2 Q F0(suppress further output)28.78 E F1(\\e)144 -535.2 Q(\\E)144 547.2 Q F0(an escape character)26.55 E F1(\\f)144 559.2 -Q F0(form feed)29.89 E F1(\\n)144 571.2 Q F0(ne)27.66 E 2.5(wl)-.25 G -(ine)-2.5 E F1(\\r)144 583.2 Q F0(carriage return)28.78 E F1(\\t)144 -595.2 Q F0(horizontal tab)29.89 E F1(\\v)144 607.2 Q F0 -.15(ve)28.22 G -(rtical tab).15 E F1(\\\\)144 619.2 Q F0(backslash)30.44 E F1(\\0)144 -631.2 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 643.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 655.2 Q F2(HHHH)A F0 -1.507(the Unicode \(ISO/IEC 10646\) character whose v)180 667.2 R 1.506 -(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.006 E F0(\(one to four he)180 679.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 691.2 Q F2(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 703.2 R .547 -(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.048 E(HHH)180 715.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(57)190.95 -E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 96 Q F2 +(action)2.5 E F0(may be one of the follo)2.5 E +(wing to generate a list of possible completions:)-.25 E F1(alias)184 +108 Q F0(Alias names.)224 108 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(arrayv)184 120 Q(ar)-.1 E F0(Array v)224 132 Q +(ariable names.)-.25 E F1(binding)184 144 Q(Readline)224 144 Q F0 -.1 +(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 156 S(iltin) +.2 E F0(Names of shell b)224 156 Q(uiltin commands.)-.2 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 168 +Q F0(Command names.)224 180 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 192 Q(ectory)-.18 E F0(Directory names.)224 204 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 216 +Q F0(Names of disabled shell b)224 228 Q(uiltins.)-.2 E F1(enabled)184 +240 Q F0(Names of enabled shell b)224 240 Q(uiltins.)-.2 E F1(export)184 +252 Q F0(Names of e)224 252 Q(xported shell v)-.15 E 2.5(ariables. May) +-.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 +264 Q F0(File names.)224 264 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(function)184 276 Q F0(Names of shell functions.)224 288 +Q F1(gr)184 300 Q(oup)-.18 E F0(Group names.)224 300 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 +312 Q F0(Help topics as accepted by the)224 324 Q F1(help)2.5 E F0 -.2 +(bu)2.5 G(iltin.).2 E F1(hostname)184 336 Q F0(Hostnames, as tak)224 348 +Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 360 Q F0 +(Job names, if job control is acti)224 360 Q -.15(ve)-.25 G 5(.M).15 G +(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 372 S +(yw).1 E(ord)-.1 E F0(Shell reserv)224 384 Q(ed w)-.15 E 2.5(ords. May) +-.1 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(running)184 +396 Q F0(Names of running jobs, if job control is acti)224 396 Q -.15 +(ve)-.25 G(.).15 E F1(ser)184 408 Q(vice)-.1 E F0(Service names.)224 408 +Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 420 +Q F0 -1.11(Va)224 420 S(lid ar)1.11 E(guments for the)-.18 E F12.5 +E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 +(shopt)184 432 Q F0(Shell option names as accepted by the)224 432 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 444 Q F0 +(Signal names.)224 444 Q F1(stopped)184 456 Q F0 +(Names of stopped jobs, if job control is acti)224 456 Q -.15(ve)-.25 G +(.).15 E F1(user)184 468 Q F0(User names.)224 468 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 480 S +(riable).1 E F0(Names of all shell v)224 480 Q 2.5(ariables. May)-.25 F +(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 492 Q F2 +(command)2.5 E(command)184 504 Q F0 1.055(is e)3.555 F -.15(xe)-.15 G +1.055(cuted in a subshell en).15 F 1.056 +(vironment, and its output is used as the possible)-.4 F(completions.) +184 516 Q F1144 528 Q F2(function)2.5 E F0 .114 +(The shell function)184 540 R F2(function)2.614 E F0 .114(is e)2.614 F +-.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 +(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 552 R +-.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1 +($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817 +(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 +(are being completed, the second ar)184 564 R 1.407(gument \()-.18 F F1 +($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 +(ord being completed, and the)-.1 F .103(third ar)184 576 R .103 +(gument \()-.18 F F1($3)A F0 2.603(\)i)C 2.603(st)-2.603 G .103(he w) +-2.603 F .104(ord preceding the w)-.1 F .104 +(ord being completed on the current com-)-.1 F .102(mand line.)184 588 R +.102(When it \214nishes, the possible completions are retrie)5.102 F +-.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the) +-.25 F F3(COMPREPL)184 600 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E +F1144 612 Q F2(globpat)2.5 E F0 1.007(The pathname e)184 624 R +1.007(xpansion pattern)-.15 F F2(globpat)3.507 E F0 1.007(is e)3.507 F +1.008(xpanded to generate the possible comple-)-.15 F(tions.)184 636 Q +F1144 648 Q F2(pr)2.5 E(e\214x)-.37 E(pr)184 660 Q(e\214x)-.37 E +F0 .535(is added at the be)3.035 F .534 +(ginning of each possible completion after all other options ha)-.15 F +-.15(ve)-.2 G(been applied.)184 672 Q F1144 684 Q F2(suf)2.5 E +<8c78>-.18 E(suf)184 684 Q<8c78>-.18 E F0 +(is appended to each possible completion after all other options ha)2.5 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 696 Q F2(wor)2.5 E +(dlist)-.37 E F0(The)184 708 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14 +(is split using the characters in the)3.639 F F3(IFS)3.64 E F0 1.14 +(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F 2.008 +(each resultant w)184 720 R 2.008(ord is e)-.1 F 4.508(xpanded. The)-.15 +F 2.007(possible completions are the members of the)4.508 F +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(57)192.055 E 0 Cg EP %%Page: 58 58 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(enable)108 84 Q F0([)2.5 E F1A F0 2.5 -(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E/F2 10/Times-Italic@0 -SF(\214lename)2.5 E F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .278 -(Enable and disable b)144 96 R .278(uiltin shell commands.)-.2 F .278 -(Disabling a b)5.278 F .278(uiltin allo)-.2 F .278 -(ws a disk command which has)-.25 F .833(the same name as a shell b)144 -108 R .834(uiltin to be e)-.2 F -.15(xe)-.15 G .834 -(cuted without specifying a full pathname, e).15 F -.15(ve)-.25 G 3.334 -(nt).15 G(hough)-3.334 E .99(the shell normally searches for b)144 120 R -.989(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 -.989(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 -(abled; otherwise,)144 132 R F2(names)4.082 E F0 1.582(are enabled.) -4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F -F1(test)4.082 E F0 1.582(binary found via the)4.082 F/F3 9/Times-Bold@0 -SF -.666(PA)4.082 G(TH)-.189 E F0 .081(instead of the shell b)144 144 R -.081(uiltin v)-.2 F .081(ersion, run)-.15 F/F4 10/Courier@0 SF .081 -(enable -n test)2.581 F F0 5.081(.T)C(he)-5.081 E F12.58 E F0 .08 -(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 156 S 1.524 -(iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F -F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 -(ystems that support dynamic loading.)-4.024 F(The)144 168 Q F1 -2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F -.367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) --5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) --.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 180 R F1 -2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 -(uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 -F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 -192 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 -(is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F -(If)5.098 E F12.598 E F0 1.916 -(is supplied, the list printed includes all b)144 204 R 1.916 -(uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 216 R F12.879 E F0 .379 -(is supplied, the output is restricted to the POSIX)2.879 F F2(special) -2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The).2 F .378(return v)2.878 F -(alue)-.25 E .994(is 0 unless a)144 228 R F2(name)3.854 E F0 .994 -(is not a shell b)3.674 F .994(uiltin or there is an error loading a ne) --.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(object.)144 240 -Q F1 -2.3 -.15(ev a)108 256.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0 -(...])2.5 E(The)144 268.8 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671 -(re read and concatenated together into a single command.)-3.171 F .67 -(This command is then read)5.67 F .495(and e)144 280.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 292.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 309.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 321.6 Q F2(command)3.006 E F0 .306 -(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 -(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E -(guments)-.37 E F0(become)3.075 E .176(the ar)144 333.6 R .176 -(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G -(he)-2.676 E F12.676 E F0 .176 -(option is supplied, the shell places a dash at the be)2.676 F .177 -(ginning of)-.15 F .5(the zeroth ar)144 345.6 R .5(gument passed to)-.18 -F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 -E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 -.499(option causes)2.999 F F2(com-)3.199 E(mand)144 357.6 Q F0 .638 -(to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 -(vironment. If)-.4 F F13.138 E F0 .638 -(is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) -3.319 F 1.078(zeroth ar)144 369.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 381.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F -.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 -(shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 -F(ail-)-.1 E 2.505(ure. An)144 393.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 405.6 Q 3.036(yr)-.15 G .536 -(edirections tak)-3.036 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 -(ect in the current shell, and the return status is 0.).25 F .536 -(If there is a redirection)5.536 F(error)144 417.6 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 434.4 Q F0([)2.5 E F2(n)A F0 -6.29(]C)C .096(ause the shell to e)-6.29 F .096(xit with a status of) --.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095 -(is omitted, the e)2.835 F .095(xit status is that of the last command) --.15 F -.15(exe)144 446.4 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5 -E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E -F1(export)108 463.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 475.2 Q -F0 .256(The supplied)144 487.2 R F2(names)3.117 E F0 .257(are mark)3.027 -F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257 -(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.627 -(commands. If)144 499.2 R(the)2.627 E F12.627 E F0 .127 -(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E -F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E -F0 .127(are gi)2.897 F -.15(ve)-.25 G .126(n, or if the).15 F F1 -144 511.2 Q F0 .048(option is supplied, a list of names of all e)2.547 F -.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1 -2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 523.2 S -1.447(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 -(rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G -1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) --.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 535.2 S .741(lue of the v) -.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 -(export)5.741 E F0 .742(returns an e)3.242 F .742 -(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) -.25 F .032(encountered, one of the)144 547.2 R F2(names)2.532 E F0 .032 -(is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 -F F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 -(that)2.711 E(is not a function.)144 559.2 Q F1(fc)108 576 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 -588 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 -(cmd)-2.5 E F0(])A .431 -(The \214rst form selects a range of commands from)144 600 R F2<8c72> -4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 -(from the history list and displays or)3.612 F .142(edits and re-e)144 -612 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) -.45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 -(may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 624 Q .31(ginning with that string\) or as a number \(an inde)-.15 F -2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga) --.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .315(is used as an of) -144 636 R .315(fset from the current command number\).)-.25 F(If)5.315 E -F2(last)2.904 E F0 .314(is not speci\214ed it is set to the cur)3.494 F -(-)-.2 E .948(rent command for listing \(so that)144 648 R F4 .948 -(fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to) -3.448 F F2<8c72>5.359 E(st)-.1 E F0(other)4.129 E(-)-.2 E 2.5(wise. If) -144 660 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 684 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 696 R .438(If the)5.438 -F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 -(n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.335(the editor gi)144 708 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 -(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) -.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F -(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G -(n,).15 E 1.668(the v)144 720 R 1.668(alue of the)-.25 F F3(FCEDIT)4.168 -E F0 -.25(va)3.918 G 1.668(riable is used, and the v).25 F 1.669 -(alue of)-.25 F F3(EDIT)4.169 E(OR)-.162 E F0(if)3.919 E F3(FCEDIT)4.169 -E F0 1.669(is not set.)3.919 F(If)6.669 E(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(58)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(resultant list which match the w)184 84 Q(ord being completed.)-.1 E/F1 +10/Times-Bold@0 SF144 96 Q/F2 10/Times-Italic@0 SF(\214lterpat)2.5 +E(\214lterpat)184 108 Q F0 .455(is a pattern as used for pathname e) +2.955 F 2.956(xpansion. It)-.15 F .456 +(is applied to the list of possible)2.956 F 1.596 +(completions generated by the preceding options and ar)184 120 R 1.596 +(guments, and each completion)-.18 F(matching)184 132 Q F2(\214lterpat) +3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704 +(rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 +(in)3.204 E F2(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705 +(tes the pattern;).05 F(in this case, an)184 144 Q 2.5(yc)-.15 G +(ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E +-.15(ve)-.15 G(d.).15 E .467(The return v)144 160.8 R .467 +(alue is true unless an in)-.25 F -.25(va)-.4 G .466 +(lid option is supplied, an option other than).25 F F12.966 E F0 +(or)2.966 E F12.966 E F0 .466(is sup-)2.966 F 1.361 +(plied without a)144 172.8 R F2(name)3.861 E F0(ar)3.861 E 1.361 +(gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H +1.362(ompletion speci\214cation for a).15 F F2(name)144 184.8 Q F0 +(for which no speci\214cation e)2.5 E +(xists, or an error occurs adding a completion speci\214cation.)-.15 E +F1(compopt)108 201.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C +F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2 +(name)-2.5 E F0(])A .447(Modify completion options for each)144 213.6 R +F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 +.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .725 +(completion if no)144 225.6 R F2(name)3.225 E F0 3.225(sa)C .725 +(re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) +C .725(re gi)-3.225 F -.15(ve)-.25 G .726 +(n, display the completion options for).15 F(each)144 237.6 Q F2(name) +3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v) +5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 +F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 249.6 Q F0 -.2(bu) +2.797 G .297(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) +-5.297 E F12.797 E F0 .297 +(option indicates that the remaining options should apply to)2.797 F +1.228(the `)144 261.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\ +mmand completion; that is, completion attempted on a command for which \ +no)-3.728 F 2.177(completion has pre)144 273.6 R 2.177 +(viously been de\214ned.)-.25 F(The)7.177 E F14.677 E F0 2.178 +(option indicates that the remaining options)4.678 F(should apply to `) +144 285.6 Q(`empty')-.74 E 2.5('c)-.74 G +(ommand completion; that is, completion attempted on a blank line.)-2.5 +E 1.388(The return v)144 309.6 R 1.388(alue is true unless an in)-.25 F +-.25(va)-.4 G 1.387 +(lid option is supplied, an attempt is made to modify the).25 F +(options for a)144 321.6 Q F2(name)2.5 E F0 +(for which no completion speci\214cation e)2.5 E +(xists, or an output error occurs.)-.15 E F1(continue)108 338.4 Q F0([) +2.5 E F2(n)A F0(])A 1.753(Resume the ne)144 350.4 R 1.753 +(xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A +F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1 +(select)4.254 E F0 4.254(loop. If)4.254 F F2(n)4.614 E F0 1.754 +(is speci\214ed,)4.494 F 1.209(resume at the)144 362.4 R F2(n)3.709 E F0 +1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F3 10 +/Symbol SF3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209 +(is greater than the number of enclosing)3.949 F .513 +(loops, the last enclosing loop \(the `)144 374.4 R(`top-le)-.74 E -.15 +(ve)-.25 G(l').15 E 3.013('l)-.74 G .513(oop\) is resumed.)-3.013 F .514 +(The return v)5.514 F .514(alue is 0 unless)-.25 F F2(n)3.014 E F0(is) +3.014 E(not greater than or equal to 1.)144 386.4 Q F1(declar)108 403.2 +Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E +F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1 +(typeset)108 415.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 +-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(..])-2.5 E 1.265(Declare v)144 427.2 R 1.265(ariables and/or gi)-.25 F +1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no) +3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 +G 3.764(nt).15 G 1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F +-.25(va)144 439.2 S 3.482(riables. The).25 F F13.482 E F0 .982 +(option will display the attrib)3.482 F .982(utes and v)-.2 F .983 +(alues of each)-.25 F F2(name)3.483 E F0 5.983(.W).18 G(hen)-5.983 E F1 +3.483 E F0 .983(is used)3.483 F(with)144 451.2 Q F2(name)2.775 E +F0(ar)2.775 E .275(guments, additional options, other than)-.18 F F1 +2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .274 +(re ignored.)-2.775 F(When)5.274 E F12.774 E F0 .274(is supplied) +2.774 F(without)144 463.2 Q F2(name)4.813 E F0(ar)4.813 E 2.313 +(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.314 +(alues of all v)-.25 F 2.314(ariables ha)-.25 F 2.314(ving the)-.2 F +(attrib)144 475.2 Q 1.182(utes speci\214ed by the additional options.) +-.2 F 1.181(If no other options are supplied with)6.182 F F13.681 +E F0(,)A F1(declar)3.681 E(e)-.18 E F0 .62(will display the attrib)144 +487.2 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12 +(ariables. The)-.25 F F13.12 E F0 .62 +(option will restrict the display)3.12 F 1.291(to shell functions.)144 +499.2 R(The)6.291 E F13.791 E F0 1.291(option inhibits the displa\ +y of function de\214nitions; only the function)3.791 F .948 +(name and attrib)144 511.2 R .948(utes are printed.)-.2 F .948(If the) +5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948 +(shell option is enabled using)3.448 F F1(shopt)3.448 E F0 3.448(,t)C +.948(he source)-3.448 F 1.69(\214le name and line number where each)144 +523.2 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 +F(The)6.69 E F14.19 E F0(option)4.19 E(implies)144 535.2 Q F1 +3.891 E F0 6.391(.T)C(he)-6.391 E F13.891 E F0 1.391 +(option forces v)3.891 F 1.391 +(ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 +(ve)-.25 G(n).15 E(when)144 547.2 Q F1(declar)4.383 E(e)-.18 E F0 1.883 +(is e)4.383 F -.15(xe)-.15 G 1.883(cuted in a shell function.).15 F +1.882(It is ignored in all other cases.)6.883 F 1.882(The follo)6.882 F +(wing)-.25 E .793(options can be used to restrict output to v)144 559.2 +R .794(ariables with the speci\214ed attrib)-.25 F .794(ute or to gi)-.2 +F 1.094 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 571.2 Q(utes:)-.2 E +F1144 583.2 Q F0(Each)180 583.2 Q F2(name)2.5 E F0(is an inde)2.5 +E -.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1 +(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 595.2 Q +F0(Each)180 595.2 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a) +-.25 H(rray v).15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E +-.15(ve)-.15 G(\).).15 E F1144 607.2 Q F0(Use function names only) +180 607.2 Q(.)-.65 E F1144 619.2 Q F0 .558(The v)180 619.2 R .558 +(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 +(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 631.2 Q F0(abo) +2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v) +-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 643.2 Q +F0 .909(When the v)180 643.2 R .909(ariable is assigned a v)-.25 F .909 +(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 +G .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 655.2 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 667.2 +Q F0(Gi)180 667.2 Q 1.62 -.15(ve e)-.25 H(ach).15 E F2(name)3.82 E F0 +(the)3.82 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E +1.518(That other v)180 679.2 R 1.518(ariable is de\214ned by the v)-.25 +F 1.519(alue of)-.25 F F2(name)4.019 E F0 6.519(.A)C 1.519 +(ll references, assignments, and)-6.519 F(attrib)180 691.2 Q .227 +(ute modi\214cations to)-.2 F F2(name)2.726 E F0 2.726(,e)C .226 +(xcept those using or changing the)-2.876 F F12.726 E F0(attrib) +2.726 E .226(ute itself, are)-.2 F .808(performed on the v)180 703.2 R +.808(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D +3.308(alue. The).3 F .809(nameref attrib)3.309 F .809(ute cannot be)-.2 +F(applied to array v)180 715.2 Q(ariables.)-.25 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(58)192.055 E 0 Cg EP %%Page: 59 59 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .187(neither v)144 84 R .187(ariable is set,)-.25 F/F1 10 -/Times-Italic@0 SF(vi)4.353 E F0 .187(is used.)4.353 F .187 -(When editing is complete, the edited commands are echoed and)5.187 F --.15(exe)144 96 S(cuted.).15 E .788(In the second form,)144 120 R F1 -(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 -(cuted after each instance of).15 F F1(pat)3.288 E F0 .788 -(is replaced by)3.288 F F1 -.37(re)3.289 G(p).37 E F0(.)A F1(Com-)5.789 -E(mand)144 132 Q F0 .347(is intepreted the same as)2.847 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/F2 10/Courier@0 SF .346 -(r='fc \255s')2.847 F F0 2.846(,s)C 2.846(ot)-2.846 G(hat)-2.846 E -(typing)144 144 Q F2 7.165(rc)3.665 G(c)-7.165 E F0 1.165 -(runs the last command be)3.665 F 1.166(ginning with)-.15 F F2(cc)3.666 -E F0 1.166(and typing)3.666 F F2(r)3.666 E F0(re-e)3.666 E -.15(xe)-.15 -G 1.166(cutes the last com-).15 F(mand.)144 156 Q .142 -(If the \214rst form is used, the return v)144 180 R .142 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 -(lid option is encountered or).25 F F1<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F1(last)2.732 E F0 .454(specify history lines out of range.)144 192 R -.454(If the)5.454 F/F3 10/Times-Bold@0 SF2.954 E F0 .454 -(option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 -(alue of the)-.25 F .788(last command e)144 204 R -.15(xe)-.15 G .788 -(cuted or f).15 F .787 -(ailure if an error occurs with the temporary \214le of commands.)-.1 F -.787(If the)5.787 F 1.135 -(second form is used, the return status is that of the command re-e)144 -216 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F1(cmd)3.836 E F0 1.136 -(does not)4.406 F(specify a v)144 228 Q -(alid history line, in which case)-.25 E F3(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F3(fg)108 244.8 Q F0([)2.5 E F1(jobspec)A F0(])A(Resume) -144 256.8 Q F1(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 -(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 -(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1(jobspec)5.653 E F0 -1.413(is not present, the)4.223 F(shell')144 268.8 Q 3.116(sn)-.55 G -.616(otion of the)-3.116 F F1(curr)3.116 E .616(ent job)-.37 F F0 .617 -(is used.)3.116 F .617(The return v)5.617 F .617 -(alue is that of the command placed into the)-.25 F(fore)144 280.8 Q -.363(ground, or f)-.15 F .363 -(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 -(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 292.8 Q -F0 .004(does not specify a v)2.814 F .004(alid job or)-.25 F F1(jobspec) -4.244 E F0 .004(speci\214es a job that w)2.814 F .004 -(as started without job control.)-.1 F F3(getopts)108 309.6 Q F1 -(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs)-.37 E F0(])A F3(getopts)144 -321.6 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.294 F F1 -(optstring)6.023 E F0 .793(contains the option)3.513 F .149 -(characters to be recognized; if a character is follo)144 333.6 R .15 -(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45 --.15(ve a)-.2 H(n).15 E(ar)144 345.6 Q .579 -(gument, which should be separated from it by white space.)-.18 F .578 -(The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 357.6 R 1.665 -(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F3(getopts) -4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .797 -(option in the shell v)144 369.6 R(ariable)-.25 E F1(name)3.297 E F0 -3.297(,i).18 G(nitializing)-3.297 E F1(name)3.657 E F0 .797 -(if it does not e)3.477 F .796(xist, and the inde)-.15 F 3.296(xo)-.15 G -3.296(ft)-3.296 G .796(he ne)-3.296 F(xt)-.15 E(ar)144 381.6 Q .085 -(gument to be processed into the v)-.18 F(ariable)-.25 E/F4 9 -/Times-Bold@0 SF(OPTIND)2.585 E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND) -4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .846 -(or a shell script is in)144 393.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 F3 -(getopts)3.345 E F0 .845(places that ar)3.345 F(gument)-.18 E .803 -(into the v)144 405.6 R(ariable)-.25 E F4(OPT)3.303 E(ARG)-.81 E F5(.)A -F0 .803(The shell does not reset)5.303 F F4(OPTIND)3.303 E F0 .804 -(automatically; it must be manually)3.054 F .294 -(reset between multiple calls to)144 417.6 R F3(getopts)2.793 E F0 .293 -(within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F -2.793(ws)-.25 G .293(et of parameters)-2.793 F(is to be used.)144 429.6 -Q 2.043(When the end of options is encountered,)144 453.6 R F3(getopts) -4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044 -(alue greater than zero.)-.25 F F4(OPTIND)144 465.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 F3(getopts)144 489.6 Q F0 2.393 -(normally parses the positional parameters, b)4.893 F 2.392 -(ut if more ar)-.2 F 2.392(guments are gi)-.18 F -.15(ve)-.25 G 4.892 -(ni).15 G(n)-4.892 E F1(ar)4.892 E(gs)-.37 E F0(,).27 E F3(getopts)144 -501.6 Q F0(parses those instead.)2.5 E F3(getopts)144 525.6 Q F0 1.165 -(can report errors in tw)3.665 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F -1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.166 -(is a colon,)3.886 F F1(silent)4.006 E F0(error)4.346 E 1.071 -(reporting is used.)144 537.6 R 1.071 -(In normal operation, diagnostic messages are printed when in)6.071 F --.25(va)-.4 G 1.07(lid options or).25 F .393(missing option ar)144 549.6 -R .393(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable) --.25 E F4(OPTERR)2.894 E F0 .394(is set to 0, no error messages)2.644 F -(will be displayed, e)144 561.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 .667(If an in)144 585.6 R -.25(va)-.4 G .667 -(lid option is seen,).25 F F3(getopts)3.167 E F0 .667(places ? into) -3.167 F F1(name)3.527 E F0 .666 -(and, if not silent, prints an error message)3.347 F .399(and unsets)144 -597.6 R F4(OPT)2.899 E(ARG)-.81 E F5(.)A F0(If)4.899 E F3(getopts)2.899 -E F0 .399(is silent, the option character found is placed in)2.899 F F4 -(OPT)2.899 E(ARG)-.81 E F0 .4(and no)2.65 F -(diagnostic message is printed.)144 609.6 Q 1.242(If a required ar)144 -633.6 R 1.242(gument is not found, and)-.18 F F3(getopts)3.741 E F0 -1.241(is not silent, a question mark \()3.741 F F3(?).833 E F0 3.741 -(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F F1(name)144 645.6 -Q F0(,).18 E F4(OPT)2.734 E(ARG)-.81 E F0 .234 -(is unset, and a diagnostic message is printed.)2.484 F(If)5.234 E F3 -(getopts)2.734 E F0 .235(is silent, then a colon \()2.734 F F3(:).833 E -F0(\)).833 E(is placed in)144 657.6 Q F1(name)2.86 E F0(and)2.68 E F4 -(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F3 -(getopts)144 681.6 Q F0 .902 -(returns true if an option, speci\214ed or unspeci\214ed, is found.) -3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 693.6 Q(GNU Bash 4.3)72 -768 Q(2014 February 2)141.79 E(59)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0(Mak)180 84 Q(e)-.1 E/F2 10/Times-Italic@0 SF(name) +5.047 E F0 5.047(sr)C(eadonly)-5.047 E 7.547(.T)-.65 G 2.546 +(hese names cannot then be assigned v)-7.547 F 2.546 +(alues by subsequent)-.25 F(assignment statements or unset.)180 96 Q F1 +144 108 Q F0(Gi)180 108 Q .729 -.15(ve e)-.25 H(ach).15 E F2(name) +2.929 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E 2.929 +(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929 E(UG) +-.1 E F0(and)2.93 E F1(RETURN)2.93 E F0(traps from the calling shell.) +180 120 Q(The trace attrib)5 E(ute has no special meaning for v)-.2 E +(ariables.)-.25 E F1144 132 Q F0 .91(When the v)180 132 R .909 +(ariable is assigned a v)-.25 F .909(alue, all lo)-.25 F(wer)-.25 E .909 +(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to upper).15 F +(-)-.2 E 2.5(case. The)180 144 R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E +(ute is disabled.)-.2 E F1144 156 Q F0(Mark)180 156 Q F2(name)2.5 +E F0 2.5(sf)C(or e)-2.5 E(xport to subsequent commands via the en)-.15 E +(vironment.)-.4 E .12(Using `+' instead of `\255' turns of)144 172.8 R +2.62(ft)-.25 G .12(he attrib)-2.62 F .121(ute instead, with the e)-.2 F +.121(xceptions that)-.15 F F1(+a)2.621 E F0 .121(may not be used)2.621 F +.645(to destro)144 184.8 R 3.145(ya)-.1 G 3.145(na)-3.145 G .645(rray v) +-3.145 F .645(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) +3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.144 +(ute. When)-.2 F .644(used in a func-)3.144 F(tion,)144 196.8 Q F1 +(declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835 +E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335 +(local, as with the)2.835 F F1(local)2.835 E F0 .335 +(command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.283 +(is supplied.)144 208.8 R 1.283(If a v)6.283 F 1.283 +(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783 +(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.282 +(ariable is set to)-.25 F F2(value)3.782 E F0(.)A .926(When using)144 +220.8 R F13.426 E F0(or)3.426 E F13.426 E F0 .927 +(and the compound assignment syntax to create array v)3.426 F .927 +(ariables, additional)-.25 F(attrib)144 232.8 Q .592(utes do not tak)-.2 +F 3.092(ee)-.1 G -.25(ff)-3.092 G .592 +(ect until subsequent assignments.).25 F .592(The return v)5.592 F .592 +(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429 +(option is encountered, an attempt is made to de\214ne a function using) +144 244.8 R/F3 10/Courier@0 SF .429(\255f foo=bar)2.929 F F0 2.929(,a)C +2.929(na)-2.929 G .429(ttempt is)-2.929 F .063(made to assign a v)144 +256.8 R .063(alue to a readonly v)-.25 F .062 +(ariable, an attempt is made to assign a v)-.25 F .062 +(alue to an array v)-.25 F(ari-)-.25 E .102 +(able without using the compound assignment syntax \(see)144 268.8 R F1 +(Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F +F2(names)2.602 E F0 .102(is not a)2.602 F -.25(va)144 280.8 S .172 +(lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25 +F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .171 +(ariable, an)-.25 F .96(attempt is made to turn of)144 292.8 R 3.46(fa) +-.25 G .96(rray status for an array v)-3.46 F .96 +(ariable, or an attempt is made to display a)-.25 F(non-e)144 304.8 Q +(xistent function with)-.15 E F12.5 E F0(.)A F1 +(dirs [\255clpv] [+)108 321.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 +(])A F0 -.4(Wi)144 333.6 S .329 +(thout options, displays the list of currently remembered directories.) +.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238 +(single line with directory names separated by spaces.)144 345.6 R 1.238 +(Directories are added to the list with the)6.238 F F1(pushd)144 357.6 Q +F0 2.003(command; the)4.504 F F1(popd)4.503 E F0 2.003(command remo) +4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503 +F 2.003(The current directory is)7.003 F(al)144 369.6 Q -.1(wa)-.1 G +(ys the \214rst directory in the stack.).1 E F1144 381.6 Q F0 +(Clears the directory stack by deleting all of the entries.)180 381.6 Q +F1144 393.6 Q F0 .881 +(Produces a listing using full pathnames; the def)180 393.6 R .882 +(ault listing format uses a tilde to denote)-.1 F(the home directory)180 +405.6 Q(.)-.65 E F1144 417.6 Q F0 +(Print the directory stack with one entry per line.)180 417.6 Q F1 +144 429.6 Q F0 .273(Print the directory stack with one entry per line, \ +pre\214xing each entry with its inde)180 429.6 R 2.772(xi)-.15 G 2.772 +(nt)-2.772 G(he)-2.772 E(stack.)180 441.6 Q F1(+)144 453.6 Q F2(n)A F0 +1.564(Displays the)180 453.6 R F2(n)4.064 E F0 1.565 +(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F1 +(dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 465.6 Q F1144 477.6 Q F2 +(n)A F0 1.194(Displays the)180 477.6 R F2(n)3.694 E F0 1.194 +(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F +F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 489.6 Q .257(The return v)144 +506.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) +-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) +.15 F(tory stack.)144 518.4 Q F1(diso)108 535.2 Q(wn)-.1 E F0([)2.5 E F1 +(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 +(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 547.2 S .122 +(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) +4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H +2.622(obs. If).15 F F2(jobspec)4.362 E F0 .121(is not present, and)2.932 +F .096(neither the)144 559.2 R F12.596 E F0 .096(nor the)2.596 F +F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E +.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 +2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) +.15 F F2(jobspec)145.74 571.2 Q F0 .586(is not remo)3.396 F -.15(ve)-.15 +G 3.086(df).15 G .585(rom the table, b)-3.086 F .585(ut is mark)-.2 F +.585(ed so that)-.1 F/F4 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585 +(is not sent to the job if the)2.835 F .962(shell recei)144 583.2 R -.15 +(ve)-.25 G 3.462(sa).15 G F4(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .962 +(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 +3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.359(jobs; the)144 595.2 R F1 +3.859 E F0 1.359(option without a)3.859 F F2(jobspec)5.599 E F0 +(ar)4.169 E 1.358(gument restricts operation to running jobs.)-.18 F +1.358(The return)6.358 F -.25(va)144 607.2 S(lue is 0 unless a).25 E F2 +(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E +F1(echo)108 624 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .424(Output the)144 636 R F2(ar)2.924 E(g)-.37 E F0 +.424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 +(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308 +(error occurs.)144 648 R(If)5.308 E F12.808 E F0 .308 +(is speci\214ed, the trailing ne)2.808 F .308(wline is suppressed.)-.25 +F .307(If the)5.308 F F12.807 E F0 .307(option is gi)2.807 F -.15 +(ve)-.25 G .307(n, inter).15 F(-)-.2 E 1.348(pretation of the follo)144 +660 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) +6.348 E F13.849 E F0 1.349(option disables the)3.849 F 1.055 +(interpretation of these escape characters, e)144 672 R -.15(ve)-.25 G +3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.554 +(ya)-.15 G 1.054(re interpreted by def)-3.554 F(ault.)-.1 E(The)144 684 +Q F1(xpg_echo)3.458 E F0 .959 +(shell option may be used to dynamically determine whether or not)3.458 +F F1(echo)3.459 E F0 -.15(ex)3.459 G(pands).15 E .716 +(these escape characters by def)144 696 R(ault.)-.1 E F1(echo)5.716 E F0 +.716(does not interpret)3.216 F F13.216 E F0 .715 +(to mean the end of options.)3.216 F F1(echo)5.715 E F0 +(interprets the follo)144 708 Q(wing escape sequences:)-.25 E +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(59)192.055 E 0 Cg EP %%Page: 60 60 %%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(hash)108 84 Q F0([)2.5 E F1(\255lr)A F0 2.5 -(][)C F1-2.5 E/F2 10/Times-Italic@0 SF(\214lename)2.5 E F0 2.5(][) -C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858(Each time)144 -96 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 G -.1(ke).2 G .858 -(d, the full pathname of the command).1 F F2(name)3.718 E F0 .858 -(is determined by searching)3.538 F .956(the directories in)144 108 R F1 -($P)3.456 E -.95(AT)-.74 G(H).95 E F0 .956(and remembered.)3.456 F(An) -5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .242(If the)144 120 R -F12.742 E F0 .243 -(option is supplied, no path search is performed, and)2.742 F F2 -(\214lename)4.653 E F0 .243(is used as the full \214lename)2.923 F 1.712 -(of the command.)144 132 R(The)6.712 E F14.212 E F0 1.711 -(option causes the shell to for)4.212 F 1.711 -(get all remembered locations.)-.18 F(The)6.711 E F14.211 E F0 -.833(option causes the shell to for)144 144 R .833 -(get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) -C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) -3.333 F .704(plied, the full pathname to which each)144 156 R F2(name) -3.204 E F0 .703(corresponds is printed.)3.204 F .703(If multiple)5.703 F -F2(name)3.203 E F0(ar)3.203 E(guments)-.18 E .795(are supplied with)144 -168 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 180 -R .934(If no ar)5.934 F .934(guments are gi)-.18 F -.15(ve)-.25 G .934 -(n, or if).15 F(only)144 192 Q F12.821 E F0 .321 -(is supplied, information about remembered commands is printed.)2.821 F -.322(The return status is true)5.322 F(unless a)144 204 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 220.8 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 -(pattern)-2.5 E F0(])A .867(Display helpful information about b)144 -232.8 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 -.866(is speci\214ed,)3.607 F F1(help)3.366 E F0(gi)3.366 E -.15(ve)-.25 -G 3.366(sd).15 G(etailed)-3.366 E .306(help on all commands matching)144 -244.8 R F2(pattern)2.806 E F0 2.807(;o).24 G .307 -(therwise help for all the b)-2.807 F .307 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 256.8 Q F1 -144 268.8 Q F0(Display a short description of each)24.74 E F2 -(pattern)2.5 E F1144 280.8 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 292.8 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 309.6 Q F2 -(pattern)2.5 E F0(.).24 E F1(history [)108 326.4 Q F2(n)A F1(])A -(history \255c)108 338.4 Q(history \255d)108 350.4 Q F2(of)2.5 E(fset) --.18 E F1(history \255anrw)108 362.4 Q F0([)2.5 E F2(\214lename)A F0(])A -F1(history \255p)108 374.4 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 -(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 386.4 Q F2(ar)2.5 E(g) --.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 -398.4 S .752 -(th no options, display the command history list with line numbers.).4 F -.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2 -G .38(been modi\214ed.)144 410.4 R .38(An ar)5.38 F .38(gument of)-.18 F -F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 -(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(HISTTIMEFOR-)2.881 E(MA)144 422.4 Q(T)-.855 E F0 .265 -(is set and not null, it is used as a format string for)2.515 F F2 -(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019 -(ciated with each displayed history entry)144 434.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 446.4 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 458.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 F1144 470.4 Q F0 -(Clear the history list by deleting all the entries.)25.86 E F1144 -482.4 Q F2(of)2.5 E(fset)-.18 E F0(Delete the history entry at position) -180 494.4 Q F2(of)2.5 E(fset)-.18 E F0(.)A F1144 506.4 Q F0 .598 -(Append the `)25.3 F(`ne)-.74 E(w')-.25 E 3.098('h)-.74 G .598 -(istory lines \(history lines entered since the be)-3.098 F .599 -(ginning of the current)-.15 F F1(bash)180 518.4 Q F0 -(session\) to the history \214le.)2.5 E F1144 530.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 .772 -(These are lines appended to the history \214le since the be)180 542.4 R -.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E -(sion.)180 554.4 Q F1144 566.4 Q F0(Read the contents of the hist\ -ory \214le and append them to the current history list.)25.86 E F1 -144 578.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 F1144 590.4 Q F0 .626 -(Perform history substitution on the follo)24.74 F(wing)-.25 E F2(ar) -3.125 E(gs)-.37 E F0 .625(and display the result on the standard)3.125 F -2.975(output. Does)180 602.4 R .475 -(not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) -2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 614.4 Q(xpansion.)-.15 E F1144 626.4 Q F0 -.363(Store the)26.41 F F2(ar)3.193 E(gs)-.37 E F0 .363 -(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362 -(he last command in the history list is)-5.363 F(remo)180 638.4 Q -.15 -(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .145(If the)144 655.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 .669(entry is written to the history \214le, mark)144 667.2 R .669 -(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668 -(hen the history)-5.668 F .955(\214le is read, lines be)144 679.2 R .956 -(ginning with the history comment character follo)-.15 F .956 -(wed immediately by a digit)-.25 F .416 -(are interpreted as timestamps for the pre)144 691.2 R .416 -(vious history line.)-.25 F .416(The return v)5.416 F .415 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .499(option is e\ -ncountered, an error occurs while reading or writing the history \214le\ -, an in)144 703.2 R -.25(va)-.4 G(lid).25 E F2(of)3 E(fset)-.18 E F0(is) -3 E(supplied as an ar)144 715.2 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(GNU Bash 4.3) -72 768 Q(2014 February 2)141.79 E(60)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(\\a)144 84 Q F0(alert \(bell\))180 84 Q F1(\\b)144 96 Q F0(backspace) +180 96 Q F1(\\c)144 108 Q F0(suppress further output)180 108 Q F1(\\e) +144 120 Q(\\E)144 132 Q F0(an escape character)180 132 Q F1(\\f)144 144 +Q F0(form feed)180 144 Q F1(\\n)144 156 Q F0(ne)180 156 Q 2.5(wl)-.25 G +(ine)-2.5 E F1(\\r)144 168 Q F0(carriage return)180 168 Q F1(\\t)144 180 +Q F0(horizontal tab)180 180 Q F1(\\v)144 192 Q F0 -.15(ve)180 192 S +(rtical tab).15 E F1(\\\\)144 204 Q F0(backslash)180 204 Q F1(\\0)144 +216 Q/F2 10/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v) +180 216 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0 +(\(zero to three octal digits\))2.5 E F1(\\x)144 228 Q F2(HH)A F0 +(the eight-bit character whose v)180 228 Q(alue is the he)-.25 E +(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) +-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 240 Q F2(HHHH)A F0 +1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 252 R 1.507 +(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.007 E F0(\(one to four he)180 264 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 276 Q F2(HHHHHHHH)A F0 .548 +(the Unicode \(ISO/IEC 10646\) character whose v)180 288 R .547 +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.047 E(HHH)180 300 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) +-2.5 E F1(enable)108 316.8 Q F0([)2.5 E F1A F0 2.5(][)C F1 +(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 +(][)C F2(name)-2.5 E F0(...])2.5 E .277(Enable and disable b)144 328.8 R +.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 +(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834 +(the same name as a shell b)144 340.8 R .834(uiltin to be e)-.2 F -.15 +(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 +(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989 +(the shell normally searches for b)144 352.8 R .989 +(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .99 +(is used, each)3.49 F F2(name)3.49 E F0 .99(is dis-)3.49 F 1.582 +(abled; otherwise,)144 364.8 R F2(names)4.082 E F0 1.582(are enabled.) +4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F +F1(test)4.082 E F0 1.582(binary found via the)4.082 F/F3 9/Times-Bold@0 +SF -.666(PA)4.081 G(TH)-.189 E F0 .08(instead of the shell b)144 376.8 R +.08(uiltin v)-.2 F .08(ersion, run)-.15 F/F4 10/Courier@0 SF .081 +(enable -n test)2.58 F F0 5.081(.T)C(he)-5.081 E F12.581 E F0 .081 +(option means to load the ne)2.581 F(w)-.25 E -.2(bu)144 388.8 S 1.525 +(iltin command).2 F F2(name)4.385 E F0 1.524(from shared object)4.204 F +F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 +(ystems that support dynamic loading.)-4.024 F(The)144 400.8 Q F1 +2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F +.366(viously loaded with)-.25 F F12.867 E F0 5.367(.I)C 2.867(fn) +-5.367 G(o)-2.867 E F2(name)2.867 E F0(ar)2.867 E .367(guments are gi) +-.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 412.8 R F1 +2.899 E F0 .399(option is supplied, a list of shell b)2.899 F .399 +(uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 +F .398(guments, the)-.18 F .098(list consists of all enabled shell b)144 +424.8 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +(is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F +(If)5.099 E F12.599 E F0 1.917 +(is supplied, the list printed includes all b)144 436.8 R 1.916 +(uiltins, with an indication of whether or not each is)-.2 F 2.878 +(enabled. If)144 448.8 R F12.878 E F0 .379 +(is supplied, the output is restricted to the POSIX)2.878 F F2(special) +2.879 E F0 -.2(bu)2.879 G 2.879(iltins. The).2 F .379(return v)2.879 F +(alue)-.25 E .995(is 0 unless a)144 460.8 R F2(name)3.855 E F0 .994 +(is not a shell b)3.675 F .994(uiltin or there is an error loading a ne) +-.2 F 3.494(wb)-.25 G .994(uiltin from a shared)-3.694 F(object.)144 +472.8 Q F1 -2.3 -.15(ev a)108 489.6 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 +E F0(...])2.5 E(The)144 501.6 Q F2(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671 +(re read and concatenated together into a single command.)-3.17 F .671 +(This command is then read)5.671 F .495(and e)144 513.6 R -.15(xe)-.15 G +.495(cuted by the shell, and its e).15 F .495 +(xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15 +(ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no) +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 525.6 Q +(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 +(exec)108 542.4 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) +-.37 E F0(]])A(If)144 554.4 Q F2(command)3.005 E F0 .305 +(is speci\214ed, it replaces the shell.)3.575 F .305(No ne)5.305 F 2.805 +(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F2(ar)3.136 E +(guments)-.37 E F0(become)3.076 E .177(the ar)144 566.4 R .177 +(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G +(he)-2.676 E F12.676 E F0 .176 +(option is supplied, the shell places a dash at the be)2.676 F .176 +(ginning of)-.15 F .499(the zeroth ar)144 578.4 R .499(gument passed to) +-.18 F F2(command)2.999 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2 +(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.5 E F13 E F0 +.5(option causes)3 F F2(com-)3.2 E(mand)144 590.4 Q F0 .639(to be e) +3.909 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 +(vironment. If)-.4 F F13.138 E F0 .638 +(is supplied, the shell passes)3.138 F F2(name)3.498 E F0 .638(as the) +3.318 F 1.077(zeroth ar)144 602.4 R 1.077(gument to the e)-.18 F -.15 +(xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 +1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a) +.15 F(non-interacti)144 614.4 Q .877 -.15(ve s)-.25 H .577(hell e).15 F +.577(xits, unless the)-.15 F F1(execfail)3.077 E F0 .577 +(shell option is enabled.)3.077 F .576(In that case, it returns f)5.577 +F(ail-)-.1 E 2.505(ure. An)144 626.4 R(interacti)2.505 E .305 -.15(ve s) +-.25 H .005(hell returns f).15 F .005(ailure if the \214le cannot be e) +-.1 F -.15(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005 +(is not speci\214ed,)3.275 F(an)144 638.4 Q 3.037(yr)-.15 G .537 +(edirections tak)-3.037 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 +(ect in the current shell, and the return status is 0.).25 F .536 +(If there is a redirection)5.536 F(error)144 650.4 Q 2.5(,t)-.4 G +(he return status is 1.)-2.5 E F1(exit)108 667.2 Q F0([)2.5 E F2(n)A F0 +(])A .095(Cause the shell to e)144 667.2 R .095(xit with a status of) +-.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)2.955 E F0 .096 +(is omitted, the e)2.835 F .096(xit status is that of the last command) +-.15 F -.15(exe)144 679.2 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5 +E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E +F1(export)108 696 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 +E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(60)192.055 E 0 Cg EP %%Page: 61 61 %%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(jobs)108 84 Q F0([)2.5 E F1(\255lnprs)A F0 -2.5(][)C/F2 10/Times-Italic@0 SF(jobspec)A F0(... ])2.5 E F1(jobs \255x) -108 96 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 108 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 120 Q F0 -(List process IDs in addition to the normal information.)27.52 E F1 -144 132 Q F0 .194(Display information only about jobs that ha) -24.74 F .494 -.15(ve c)-.2 H .193(hanged status since the user w).15 F -.193(as last noti-)-.1 F(\214ed of their status.)180 144 Q F1144 -156 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 168 Q F0 -(Display only running jobs.)25.86 E F1144 180 Q F0 -(Display only stopped jobs.)26.41 E(If)144 196.8 Q F2(jobspec)4.553 E F0 -.313(is gi)3.123 F -.15(ve)-.25 G .313 -(n, output is restricted to information about that job).15 F 5.314(.T) --.4 G .314(he return status is 0 unless)-5.314 F(an in)144 208.8 Q -.25 -(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F2(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 225.6 R F1 -2.895 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 -.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) -3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .394 -(with the corre-)3.164 F(sponding process group ID, and e)144 237.6 Q --.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) -2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E -F1(kill)108 254.4 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 266.4 Q F0([)2.5 E F2(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 -G(it_status).2 E F0(])A .119(Send the signal named by)144 278.4 R F2 -(sigspec)2.959 E F0(or)2.929 E F2(signum)2.959 E F0 .119 -(to the processes named by)2.939 F F2(pid)3.87 E F0(or)3.39 E F2 -(jobspec)2.62 E F0(.).31 E F2(sigspec)5.46 E F0(is)2.93 E .319 -(either a case-insensiti)144 290.4 R .619 -.15(ve s)-.25 H .319 -(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.819 E F0 .318 -(\(with or without the)2.569 F F3(SIG)2.818 E F0 .318 -(pre\214x\) or a signal)2.568 F(number;)144 302.4 Q F2(signum)4.188 E F0 -1.349(is a signal number)4.168 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) -4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 -1.349(is assumed.)3.599 F(An)6.349 E(ar)144 314.4 Q .523(gument of)-.18 -F F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an) -5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when) -.18 F F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523 -(n, the names).15 F .28(of the signals corresponding to the ar)144 326.4 -R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E -F2 -.2(ex)2.78 G(it_status).2 E F0(ar)144 338.4 Q .378(gument to)-.18 F -F12.878 E F0 .378 -(is a number specifying either a signal number or the e)2.878 F .377 -(xit status of a process termi-)-.15 F .593(nated by a signal.)144 350.4 -R F1(kill)5.593 E F0 .593(returns true if at least one signal w)3.093 F -.593(as successfully sent, or f)-.1 F .594(alse if an error)-.1 F -(occurs or an in)144 362.4 Q -.25(va)-.4 G(lid option is encountered.) -.25 E F1(let)108 379.2 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 -E F0(...])2.5 E(Each)144 391.2 Q F2(ar)3.027 E(g)-.37 E F0 .197 -(is an arithmetic e)2.917 F .197(xpression to be e)-.15 F -.25(va)-.25 G -.196(luated \(see).25 F F3 .196(ARITHMETIC EV)2.696 F(ALU)-1.215 E -.855 -(AT)-.54 G(ION).855 E F0(abo)2.446 E -.15(ve)-.15 G 2.696(\). If).15 F -(the last)144 403.2 Q F2(ar)2.83 E(g)-.37 E F0 -.25(eva)2.72 G -(luates to 0,).25 E F1(let)2.5 E F0(returns 1; 0 is returned otherwise.) -2.5 E F1(local)108 420 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 432 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 444 Q 3.153(yo)-.15 G 3.153(ft)-3.153 G .653 -(he options accepted by)-3.153 F F1(declar)3.153 E(e)-.18 E F0 5.652(.W) -C(hen)-5.652 E F1(local)3.152 E F0 .652 -(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -456 Q F2(name)3.72 E F0 .86(to ha)3.54 F 1.16 -.15(ve a v)-.2 H .861 -(isible scope restricted to that function and its children.).15 F -.4 -(Wi)5.861 G .861(th no operands,).4 F F1(local)144 468 Q F0 1.165 -(writes a list of local v)3.665 F 1.165 -(ariables to the standard output.)-.25 F 1.165(It is an error to use) -6.165 F F1(local)3.664 E F0 1.164(when not)3.664 F .232 -(within a function.)144 480 R .233(The return status is 0 unless)5.232 F -F1(local)2.733 E F0 .233(is used outside a function, an in)2.733 F -.25 -(va)-.4 G(lid).25 E F2(name)3.093 E F0(is)2.913 E(supplied, or)144 492 Q -F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108 -508.8 Q F0(Exit a login shell.)9.33 E F1(map\214le)108 525.6 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 537.6 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 .351 -(Read lines from the standard input into the inde)144 549.6 R -.15(xe) --.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2(arr)2.85 E -(ay)-.15 E F0 2.85(,o).32 G 2.85(rf)-2.85 G .35(rom \214le descriptor) --2.85 F F2(fd)2.85 E F0 1.248(if the)144 561.6 R F13.748 E F0 -1.248(option is supplied.)3.748 F 1.249(The v)6.249 F(ariable)-.25 E F3 -(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 E F2(arr)3.749 E -(ay)-.15 E F0 6.249(.O)C 1.249(ptions, if supplied,)-6.249 F(ha)144 -573.6 Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1 -144 585.6 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 597.6 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 609.6 Q F0 -(Discard the \214rst)26.41 E F2(count)2.5 E F0(lines read.)2.5 E F1 -144 621.6 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 633.6 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 645.6 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 657.6 -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 674.4 Q F12.968 E F0 .467 -(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 -(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 -(callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .261(plied the inde)144 686.4 R 2.761(xo)-.15 -G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\ -igned and the line to be assigned to that element)-.15 F .275 -(as additional ar)144 698.4 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E -F0 .275(is e)2.775 F -.25(va)-.25 G .274 -(luated after the line is read b).25 F .274 -(ut before the array element is)-.2 F(assigned.)144 710.4 Q -(If not supplied with an e)144 727.2 Q(xplicit origin,)-.15 E F1 -(map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 -(before assigning to it.)2.5 E(GNU Bash 4.3)72 768 Q(2014 February 2) -141.79 E(61)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(export \255p)108 84 Q F0 .257(The supplied)144 96 R/F2 10 +/Times-Italic@0 SF(names)3.117 E F0 .257(are mark)3.027 F .257 +(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257 +(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.626 +(commands. If)144 108 R(the)2.626 E F12.626 E F0 .127 +(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E +F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E +F0 .127(are gi)2.897 F -.15(ve)-.25 G .127(n, or if the).15 F F1 +144 120 Q F0 .048(option is supplied, a list of names of all e)2.548 F +.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1 +2.547 E F0 .047(option causes the)2.547 F -.15(ex)144 132 S 1.446 +(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 +(rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G +1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) +-.37 E F0 3.947(,t)C(he)-3.947 E -.25(va)144 144 S .742(lue of the v).25 +F .742(ariable is set to)-.25 F F2(wor)3.242 E(d)-.37 E F0(.)A F1 +(export)5.742 E F0 .742(returns an e)3.242 F .741 +(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .741(lid option is) +.25 F .031(encountered, one of the)144 156 R F2(names)2.531 E F0 .031 +(is not a v)2.531 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 +F F12.532 E F0 .032(is supplied with a)2.532 F F2(name)2.892 E F0 +(that)2.712 E(is not a function.)144 168 Q F1(fc)108 184.8 Q F0([)2.5 E +F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 +<8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 +196.8 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +(cmd)-2.5 E F0(])A .432 +(The \214rst form selects a range of commands from)144 208.8 R F2<8c72> +4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .431 +(from the history list and displays or)3.612 F .141(edits and re-e)144 +220.8 R -.15(xe)-.15 G .141(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +.45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 +(may be speci\214ed as a string \(to locate the last command)3.321 F(be) +144 232.8 Q .311(ginning with that string\) or as a number \(an inde) +-.15 F 2.811(xi)-.15 G .31(nto the history list, where a ne)-2.811 F +-.05(ga)-.15 G(ti).05 E .61 -.15(ve n)-.25 H(umber).15 E .314 +(is used as an of)144 244.8 R .314 +(fset from the current command number\).)-.25 F(If)5.314 E F2(last)2.905 +E F0 .315(is not speci\214ed it is set to the cur)3.495 F(-)-.2 E .949 +(rent command for listing \(so that)144 256.8 R/F3 10/Courier@0 SF .948 +(fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to) +3.448 F F2<8c72>5.358 E(st)-.1 E F0(other)4.128 E(-)-.2 E 2.5(wise. If) +144 268.8 R F2<8c72>4.41 E(st)-.1 E F0 +(is not speci\214ed it is set to the pre)3.18 E +(vious command for editing and \25516 for listing.)-.25 E(The)144 292.8 +Q F12.522 E F0 .022 +(option suppresses the command numbers when listing.)2.522 F(The)5.022 E +F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 +(rses the order of).15 F .438(the commands.)144 304.8 R .438(If the) +5.438 F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 +(n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E +.334(the editor gi)144 316.8 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E +F2(ename)3.024 E F0 .335(is in)3.014 F -.2(vo)-.4 G -.1(ke).2 G 2.835 +(do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 +F(If)5.335 E F2(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G +(n,).15 E .631(the v)144 328.8 R .631(alue of the)-.25 F/F4 9 +/Times-Bold@0 SF(FCEDIT)3.131 E F0 -.25(va)2.881 G .631 +(riable is used, and the v).25 F .631(alue of)-.25 F F4(EDIT)3.131 E(OR) +-.162 E F0(if)2.881 E F4(FCEDIT)3.13 E F0 .63(is not set.)2.88 F .63 +(If nei-)5.63 F .95(ther v)144 340.8 R .95(ariable is set,)-.25 F F2(vi) +5.116 E F0 .95(is used.)5.116 F .951 +(When editing is complete, the edited commands are echoed and)5.95 F +-.15(exe)144 352.8 S(cuted.).15 E .789(In the second form,)144 376.8 R +F2(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +(cuted after each instance of).15 F F2(pat)3.288 E F0 .788 +(is replaced by)3.288 F F2 -.37(re)3.288 G(p).37 E F0(.)A F2(Com-)5.788 +E(mand)144 388.8 Q F0 .346(is intepreted the same as)2.846 F F2<8c72> +2.847 E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347 +(useful alias to use with this is)-2.5 F F3 .347(r='fc \255s')2.847 F F0 +2.847(,s)C 2.847(ot)-2.847 G(hat)-2.847 E(typing)144 400.8 Q F3 7.166 +(rc)3.666 G(c)-7.166 E F0 1.166(runs the last command be)3.666 F 1.166 +(ginning with)-.15 F F3(cc)3.666 E F0 1.165(and typing)3.666 F F3(r) +3.665 E F0(re-e)3.665 E -.15(xe)-.15 G 1.165(cutes the last com-).15 F +(mand.)144 412.8 Q .142(If the \214rst form is used, the return v)144 +436.8 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 +E F2(last)2.732 E F0 .455(specify history lines out of range.)144 448.8 +R .454(If the)5.454 F F12.954 E F0 .454 +(option is supplied, the return v)2.954 F .454(alue is the v)-.25 F .454 +(alue of the)-.25 F .787(last command e)144 460.8 R -.15(xe)-.15 G .787 +(cuted or f).15 F .788 +(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 +472.8 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F2(cmd)3.835 E F0 1.135 +(does not)4.405 F(specify a v)144 484.8 Q +(alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E +(ailure.)-.1 E F1(fg)108 501.6 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) +144 513.6 Q F2(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413 +(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 +(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0 +1.414(is not present, the)4.223 F(shell')144 525.6 Q 3.117(sn)-.55 G +.617(otion of the)-3.117 F F2(curr)3.117 E .617(ent job)-.37 F F0 .617 +(is used.)3.117 F .617(The return v)5.617 F .616 +(alue is that of the command placed into the)-.25 F(fore)144 537.6 Q +.362(ground, or f)-.15 F .362 +(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363 +(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 549.6 Q +F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0 +(speci\214es a job that w)2.81 E(as started without job control.)-.1 E +F1(getopts)108 566.4 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs) +-.37 E F0(])A F1(getopts)144 578.4 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.294 F F2 +(optstring)6.023 E F0 .793(contains the option)3.513 F .149 +(characters to be recognized; if a character is follo)144 590.4 R .15 +(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45 +-.15(ve a)-.2 H(n).15 E(ar)144 602.4 Q .579 +(gument, which should be separated from it by white space.)-.18 F .578 +(The colon and question mark char)5.579 F(-)-.2 E 1.665 +(acters may not be used as option characters.)144 614.4 R 1.665 +(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts) +4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .797 +(option in the shell v)144 626.4 R(ariable)-.25 E F2(name)3.297 E F0 +3.297(,i).18 G(nitializing)-3.297 E F2(name)3.657 E F0 .797 +(if it does not e)3.477 F .796(xist, and the inde)-.15 F 3.296(xo)-.15 G +3.296(ft)-3.296 G .796(he ne)-3.296 F(xt)-.15 E(ar)144 638.4 Q .085 +(gument to be processed into the v)-.18 F(ariable)-.25 E F4(OPTIND)2.585 +E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND)4.585 E F0 .085 +(is initialized to 1 each time the shell)2.335 F .846 +(or a shell script is in)144 650.4 R -.2(vo)-.4 G -.1(ke).2 G 3.345 +(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1 +(getopts)3.345 E F0 .845(places that ar)3.345 F(gument)-.18 E .803 +(into the v)144 662.4 R(ariable)-.25 E F4(OPT)3.303 E(ARG)-.81 E F5(.)A +F0 .803(The shell does not reset)5.303 F F4(OPTIND)3.303 E F0 .804 +(automatically; it must be manually)3.054 F .294 +(reset between multiple calls to)144 674.4 R F1(getopts)2.793 E F0 .293 +(within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F +2.793(ws)-.25 G .293(et of parameters)-2.793 F(is to be used.)144 686.4 +Q 2.043(When the end of options is encountered,)144 710.4 R F1(getopts) +4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044 +(alue greater than zero.)-.25 F F4(OPTIND)144 722.4 Q F0 +(is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 +(is set to ?.)2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(61) +192.055 E 0 Cg EP %%Page: 62 62 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(map\214le)144 84 Q F0 1.905 -(returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905 -(lid option or option ar).25 F 1.906(gument is supplied,)-.18 F/F2 10 -/Times-Italic@0 SF(arr)4.406 E(ay)-.15 E F0(is)4.406 E(in)144 96 Q -.25 -(va)-.4 G(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 -(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E -F1(popd)108 112.8 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 -2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 124.8 Q -.15(ve)-.15 G 2.8(se) -.15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299 -(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G -.299(he top directory from the)-2.799 F 1.478(stack, and performs a)144 -136.8 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 -(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479 -(uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15 -F(wing)-.25 E(meanings:)144 148.8 Q F1144 160.8 Q F0 .551 -(Suppresses the normal change of directory when remo)24.74 F .551 -(ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 172.8 Q F1(+)144 184.8 Q F2(n)A -F0(Remo)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 -196.8 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0 -(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) --.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1144 208.8 Q F2(n)A F0 -(Remo)25.3 E -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0 -1.259(th entry counting from the right of the list sho)B 1.259(wn by) --.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5 -(zero. F)180 220.8 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0 -(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 -E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144 -237.6 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1 -(dirs)3.143 E F0 .644(is performed as well, and the return status is 0.) -3.143 F F1(popd)5.644 E F0 .416(returns f)144 249.6 R .416 -(alse if an in)-.1 F -.25(va)-.4 G .415 -(lid option is encountered, the directory stack is empty).25 F 2.915 -(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 261.6 Q -(ails.)-.1 E F1(printf)108 278.4 Q F0([)2.5 E F1A F2(var)2.5 E F0 -(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436 -(Write the formatted)144 290.4 R F2(ar)3.936 E(guments)-.37 E F0 1.437 -(to the standard output under the control of the)3.936 F F2(format)3.937 -E F0 6.437(.T)C(he)-6.437 E F13.937 E F0 .126 -(option causes the output to be assigned to the v)144 302.4 R(ariable) --.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) -2.626 F(output.)144 314.4 Q(The)144 338.4 Q F2(format)3.017 E F0 .517(i\ -s a character string which contains three types of objects: plain chara\ -cters, which are)3.017 F .704(simply copied to standard output, charact\ -er escape sequences, which are con)144 350.4 R -.15(ve)-.4 G .703 -(rted and copied to).15 F .036(the standard output, and format speci\ -\214cations, each of which causes printing of the ne)144 362.4 R .037 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 374.4 Q(gument)-.37 E F0 -5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 -(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 -E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 386.4 Q -(xtensions:)-.15 E F1(%b)144 398.4 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 410.4 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 422.4 Q(ginning with)-.15 E F1(\\0)2.5 E F0 -(may contain up to four digits\).)2.5 E F1(%q)144 434.4 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 446.4 Q F1(%\()144 458.4 Q F2(datefmt)A F1(\)T)A F0 -(causes)180 470.4 Q F1(printf)4.404 E F0 1.904 -(to output the date-time string resulting from using)4.404 F F2(datefmt) -4.404 E F0 1.903(as a format)4.404 F .38(string for)180 482.4 R F2 -(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) -2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 -(ger representing the number)-.15 F .458(of seconds since the epoch.)180 -494.4 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F -.458(alues may be used: -1 represents the)-.25 F .847 -(current time, and -2 represents the time the shell w)180 506.4 R .847 -(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.348(d. If).1 F .848(no ar)3.348 -F .848(gument is speci-)-.18 F .355(\214ed, con)180 518.4 R -.15(ve)-.4 -G .355(rsion beha).15 F -.15(ve)-.2 G 2.855(sa).15 G 2.855(si)-2.855 G -2.855(f-)-2.855 G 2.855(1h)-2.855 G .354(ad been gi)-2.855 F -.15(ve) --.25 G 2.854(n. This).15 F .354(is an e)2.854 F .354 -(xception to the usual)-.15 F F1(printf)2.854 E F0(beha)180 530.4 Q -(vior)-.2 E(.)-.55 E(Ar)144 547.2 Q .463(guments to non-string format s\ -peci\214ers are treated as C constants, e)-.18 F .464 -(xcept that a leading plus or)-.15 F 1.259(minus sign is allo)144 559.2 -R 1.259 -(wed, and if the leading character is a single or double quote, the v) --.25 F 1.258(alue is the)-.25 F(ASCII v)144 571.2 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 588 Q F2(format)3.423 E F0 -.923(is reused as necessary to consume all of the)3.423 F F2(ar)3.423 E -(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) -3.423 E F0 .924(requires more)3.424 F F2(ar)144 600 Q(guments)-.37 E F0 -.033(than are supplied, the e)2.534 F .033 -(xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si) -.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .033(alue or null string,) --.25 F(as appropriate, had been supplied.)144 612 Q(The return v)5 E -(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) -108 628.8 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C --2.5 E F2(n)A F0(])A F1(pushd)108 640.8 Q F0([)2.5 E F1A F0 -2.5(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\ -irectory stack, or rotates the stack, making the ne)144 652.8 R 3.14(wt) --.25 G .64(op of the)-3.14 F 1.316(stack the current w)144 664.8 R 1.316 -(orking directory)-.1 F 6.316(.W)-.65 G 1.315(ith no ar)-6.716 F 1.315 -(guments, e)-.18 F 1.315(xchanges the top tw)-.15 F 3.815(od)-.1 G 1.315 -(irectories and)-3.815 F .871 -(returns 0, unless the directory stack is empty)144 676.8 R 5.871(.A) --.65 G -.18(rg)-5.871 G .872(uments, if supplied, ha).18 F 1.172 -.15 -(ve t)-.2 H .872(he follo).15 F .872(wing mean-)-.25 F(ings:)144 688.8 Q -F1144 700.8 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 712.8 Q(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(62)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(getopts)144 84 Q F0 2.393 +(normally parses the positional parameters, b)4.893 F 2.392 +(ut if more ar)-.2 F 2.392(guments are gi)-.18 F -.15(ve)-.25 G 4.892 +(ni).15 G(n)-4.892 E/F2 10/Times-Italic@0 SF(ar)4.892 E(gs)-.37 E F0(,) +.27 E F1(getopts)144 96 Q F0(parses those instead.)2.5 E F1(getopts)144 +120 Q F0 1.165(can report errors in tw)3.665 F 3.665(ow)-.1 G 3.665 +(ays. If)-3.765 F 1.165(the \214rst character of)3.665 F F2(optstring) +3.895 E F0 1.166(is a colon,)3.886 F F2(silent)4.006 E F0(error)4.346 E +1.071(reporting is used.)144 132 R 1.071 +(In normal operation, diagnostic messages are printed when in)6.071 F +-.25(va)-.4 G 1.07(lid options or).25 F .393(missing option ar)144 144 R +.393(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable)-.25 +E/F3 9/Times-Bold@0 SF(OPTERR)2.894 E F0 .394 +(is set to 0, no error messages)2.644 F(will be displayed, e)144 156 Q +-.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E +F2(optstring)2.73 E F0(is not a colon.)2.72 E .667(If an in)144 180 R +-.25(va)-.4 G .667(lid option is seen,).25 F F1(getopts)3.167 E F0 .667 +(places ? into)3.167 F F2(name)3.527 E F0 .666 +(and, if not silent, prints an error message)3.347 F .399(and unsets)144 +192 R F3(OPT)2.899 E(ARG)-.81 E/F4 9/Times-Roman@0 SF(.)A F0(If)4.899 E +F1(getopts)2.899 E F0 .399 +(is silent, the option character found is placed in)2.899 F F3(OPT)2.899 +E(ARG)-.81 E F0 .4(and no)2.65 F(diagnostic message is printed.)144 204 +Q 1.242(If a required ar)144 228 R 1.242(gument is not found, and)-.18 F +F1(getopts)3.741 E F0 1.241(is not silent, a question mark \()3.741 F F1 +(?).833 E F0 3.741(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F +F2(name)144 240 Q F0(,).18 E F3(OPT)2.734 E(ARG)-.81 E F0 .234 +(is unset, and a diagnostic message is printed.)2.484 F(If)5.234 E F1 +(getopts)2.734 E F0 .235(is silent, then a colon \()2.734 F F1(:).833 E +F0(\)).833 E(is placed in)144 252 Q F2(name)2.86 E F0(and)2.68 E F3(OPT) +2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1 +(getopts)144 276 Q F0 .902 +(returns true if an option, speci\214ed or unspeci\214ed, is found.) +3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F +(options is encountered or an error occurs.)144 288 Q F1(hash)108 304.8 +Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E +F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858 +(Each time)144 316.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 +G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) +3.718 E F0 .858(is determined by searching)3.538 F .956 +(the directories in)144 328.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +.956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 +(viously-remembered pathname is discarded.)-.25 F .242(If the)144 340.8 +R F12.742 E F0 .243 +(option is supplied, no path search is performed, and)2.742 F F2 +(\214lename)4.653 E F0 .243(is used as the full \214lename)2.923 F 1.712 +(of the command.)144 352.8 R(The)6.712 E F14.212 E F0 1.711 +(option causes the shell to for)4.212 F 1.711 +(get all remembered locations.)-.18 F(The)6.711 E F14.211 E F0 +.833(option causes the shell to for)144 364.8 R .833 +(get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) +C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) +3.333 F .704(plied, the full pathname to which each)144 376.8 R F2(name) +3.204 E F0 .703(corresponds is printed.)3.204 F .703(If multiple)5.703 F +F2(name)3.203 E F0(ar)3.203 E(guments)-.18 E .795(are supplied with)144 +388.8 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 +.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1 +3.295 E F0 .795(option causes)3.295 F .934 +(output to be displayed in a format that may be reused as input.)144 +400.8 R .934(If no ar)5.934 F .934(guments are gi)-.18 F -.15(ve)-.25 G +.934(n, or if).15 F(only)144 412.8 Q F12.821 E F0 .321 +(is supplied, information about remembered commands is printed.)2.821 F +.322(The return status is true)5.322 F(unless a)144 424.8 Q F2(name)2.86 +E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) +.25 E F1(help)108 441.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 +(pattern)-2.5 E F0(])A .867(Display helpful information about b)144 +453.6 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 +.866(is speci\214ed,)3.607 F F1(help)3.366 E F0(gi)3.366 E -.15(ve)-.25 +G 3.366(sd).15 G(etailed)-3.366 E .306(help on all commands matching)144 +465.6 R F2(pattern)2.806 E F0 2.807(;o).24 G .307 +(therwise help for all the b)-2.807 F .307 +(uiltins and shell control struc-)-.2 F(tures is printed.)144 477.6 Q F1 +144 489.6 Q F0(Display a short description of each)180 489.6 Q F2 +(pattern)2.5 E F1144 501.6 Q F0(Display the description of each) +180 501.6 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G +(ormat)-2.5 E F1144 513.6 Q F0 +(Display only a short usage synopsis for each)180 513.6 Q F2(pattern)2.5 +E F0(The return status is 0 unless no command matches)144 530.4 Q F2 +(pattern)2.5 E F0(.).24 E F1(history [)108 547.2 Q F2(n)A F1(])A +(history \255c)108 559.2 Q(history \255d)108 571.2 Q F2(of)2.5 E(fset) +-.18 E F1(history \255anrw)108 583.2 Q F0([)2.5 E F2(\214lename)A F0(])A +F1(history \255p)108 595.2 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 607.2 Q F2(ar)2.5 E(g) +-.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 +619.2 S .752 +(th no options, display the command history list with line numbers.).4 F +.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2 +G .38(been modi\214ed.)144 631.2 R .38(An ar)5.38 F .38(gument of)-.18 F +F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 +(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E F3(HISTTIMEFOR-) +2.881 E(MA)144 643.2 Q(T)-.855 E F0 .265 +(is set and not null, it is used as a format string for)2.515 F F2 +(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019 +(ciated with each displayed history entry)144 655.2 R 6.019(.N)-.65 G +3.519(oi)-6.019 G(nterv)-3.519 E 1.019 +(ening blank is printed between the formatted)-.15 F .176 +(time stamp and the history line.)144 667.2 R(If)5.176 E F2(\214lename) +2.676 E F0 .176 +(is supplied, it is used as the name of the history \214le; if)2.676 F +(not, the v)144 679.2 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) +2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 691.2 Q F0 +(Clear the history list by deleting all the entries.)180 691.2 Q F1 +144 703.2 Q F2(of)2.5 E(fset)-.18 E F0 +(Delete the history entry at position)180 715.2 Q F2(of)2.5 E(fset)-.18 +E F0(.)A(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(62)192.055 E 0 +Cg EP %%Page: 63 63 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 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 -1.267(Rotates the stack so that the)25.3 F F2(n)3.767 E F0 1.268 -(th directory \(counting from the left of the list sho)B 1.268(wn by) --.25 F F1(dirs)180 96 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F1144 108 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 120 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 -E F2(dir)144.35 132 Q F0(Adds)23.98 E F2(dir)3.137 E F0 .287 -(to the directory stack at the top, making it the ne)3.517 F 2.788(wc) --.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F -(if it had been supplied as the ar)180 144 Q(gument to the)-.18 E F1(cd) -2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 160.8 R F1(pushd)2.989 -E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488 -(is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F -F1(pushd)2.988 E F0 1.039(returns 0 unless the cd to)144 172.8 R F2(dir) -3.889 E F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,) --.4 F F1(pushd)3.54 E F0 1.04(returns 0 unless the directory)3.54 F .847 -(stack is empty)144 184.8 R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent\ - directory stack element is speci\214ed, or the directory change to the) --.15 F(speci\214ed ne)144 196.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E F1(pwd)108 213.6 Q F0([)2.5 E F1(\255LP)A F0(])A .844 -(Print the absolute pathname of the current w)144 225.6 R .845 -(orking directory)-.1 F 5.845(.T)-.65 G .845 -(he pathname printed contains no)-5.845 F .182(symbolic links if the)144 -237.6 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 -.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1 -(set)2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263 -(enabled. If)144 249.6 R(the)3.263 E F13.263 E F0 .763 -(option is used, the pathname printed may contain symbolic links.)3.263 -F .764(The return)5.764 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 261.6 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 273.6 Q F1 -.18(re)108 290.4 S -(ad).18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1-3.816 E F2 -(aname)3.816 E F0 3.816(][)C F1-3.816 E F2(delim)3.816 E F0 3.816 -(][)C F1-3.816 E F2(te)3.816 E(xt)-.2 E F0 3.816(][)C F1 --3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E -F2(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E F2(pr) -3.817 E(ompt)-.45 E F0 3.817(][)C F1-3.817 E F2(timeout)3.817 E F0 -3.817(][)C F1-3.817 E F2(fd)3.817 E F0(])A([)108 302.4 Q F2(name)A -F0(...])2.5 E .516(One line is read from the standard input, or from th\ -e \214le descriptor)144 314.4 R F2(fd)3.016 E F0 .516(supplied as an ar) -3.016 F .517(gument to)-.18 F(the)144 326.4 Q F12.539 E F0 .039 -(option, and the \214rst w)2.539 F .038(ord is assigned to the \214rst) --.1 F F2(name)2.538 E F0 2.538(,t).18 G .038(he second w)-2.538 F .038 -(ord to the second)-.1 F F2(name)2.538 E F0(,).18 E .42 -(and so on, with lefto)144 338.4 R -.15(ve)-.15 G 2.92(rw).15 G .42 -(ords and their interv)-3.02 F .42 -(ening separators assigned to the last)-.15 F F2(name)2.92 E F0 5.42(.I) -.18 G 2.92(ft)-5.42 G(here)-2.92 E .541(are fe)144 350.4 R .541(wer w) --.25 F .541(ords read from the input stream than names, the remaining n\ -ames are assigned empty)-.1 F -.25(va)144 362.4 S 3.357(lues. The).25 F -.857(characters in)3.357 F/F3 9/Times-Bold@0 SF(IFS)3.357 E F0 .857 -(are used to split the line into w)3.107 F .857 -(ords using the same rules the shell)-.1 F .754(uses for e)144 374.4 R -.753(xpansion \(described abo)-.15 F 1.053 -.15(ve u)-.15 H(nder).15 E -F1 -.75(Wo)3.253 G .753(rd Splitting).75 F F0 3.253(\). The)B .753 -(backslash character \()3.253 F F1(\\)A F0 3.253(\)m)C .753(ay be)-3.253 -F .075(used to remo)144 386.4 R .375 -.15(ve a)-.15 H .375 -.15(ny s).15 -H .075(pecial meaning for the ne).15 F .076 -(xt character read and for line continuation.)-.15 F(Options,)5.076 E -(if supplied, ha)144 398.4 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 410.4 Q F2(aname)2.5 E F0 1.05(The w) -180 422.4 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 434.4 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 --.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0 -(ar)2.5 E(guments are ignored.)-.18 E F1144 446.4 Q F2(delim)2.5 E -F0(The \214rst character of)180 458.4 Q F2(delim)2.5 E F0 -(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1144 470.4 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 482.4 R .218 -(Readline uses the current \(or def)5.218 F .218 -(ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E -(acti)180 494.4 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E -F1144 506.4 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 518.4 Q(gins.)-.15 E F1144 -530.4 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 542.4 S(ad).18 E -F0 1.395(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E -F0 1.395(characters rather than w)3.895 F 1.394 -(aiting for a complete line of)-.1 F(input, b)180 554.4 Q -(ut 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 566.4 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 578.4 S -(ad).18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc) -3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F -1.27(aiting for a complete)-.1 F .275 -(line of input, unless EOF is encountered or)180 590.4 R F1 -.18(re) -2.775 G(ad).18 E F0 .274(times out.)2.774 F .274 -(Delimiter characters encoun-)5.274 F 1.002 -(tered in the input are not treated specially and do not cause)180 602.4 -R F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc) -3.503 E(har)-.15 E(s)-.1 E F0(characters are read.)180 614.4 Q F1 -144 626.4 Q F2(pr)2.5 E(ompt)-.45 E F0(Display)180 638.4 Q F2(pr)3.661 E -(ompt)-.45 E F0 1.161(on standard error)3.661 F 3.661(,w)-.4 G 1.161 -(ithout a trailing ne)-3.661 F 1.161(wline, before attempting to read) --.25 F(an)180 650.4 Q 2.5(yi)-.15 G 2.5(nput. The)-2.5 F -(prompt is displayed only if input is coming from a terminal.)2.5 E F1 -144 662.4 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 674.4 Q(In particular)5 E 2.5(,ab)-.4 G -(ackslash-ne)-2.5 E(wline pair may not be used as a line continuation.) --.25 E F1144 686.4 Q F0(Silent mode.)26.41 E -(If input is coming from a terminal, characters are not echoed.)5 E F1 -144 698.4 Q F2(timeout)2.5 E F0(Cause)180 710.4 Q F1 -.18(re)2.929 -G(ad).18 E F0 .428(to time out and return f)2.929 F .428 -(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56 -(ber of characters\) is not read within)180 722.4 R F2(timeout)3.061 E -F0(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number) -3.061 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(63)190.95 E 0 Cg -EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0 .564(Append the `)180 84 R(`ne)-.74 E(w')-.25 E +3.064('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565 +(These are history lines entered since)5.564 F(the be)180 96 Q +(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E +(ut not already appended to the history \214le.)-.2 E F1144 108 Q +F0 .854(Read the history lines not already read from the history \214le\ + into the current history list.)180 108 R .772 +(These are lines appended to the history \214le since the be)180 120 R +.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E +(sion.)180 132 Q F1144 144 Q F0(Read the contents of the history \ +\214le and append them to the current history list.)180 144 Q F1 +144 156 Q F0(Write the current history list to the history \214le, o)180 +156 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G +(ontents.)-2.5 E F1144 168 Q F0 .626 +(Perform history substitution on the follo)180 168 R(wing)-.25 E/F2 10 +/Times-Italic@0 SF(ar)3.125 E(gs)-.37 E F0 .625 +(and display the result on the standard)3.125 F 2.975(output. Does)180 +180 R .475(not store the results in the history list.)2.975 F(Each)5.475 +E F2(ar)2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F +(normal history e)180 192 Q(xpansion.)-.15 E F1144 204 Q F0 .363 +(Store the)180 204 R F2(ar)3.193 E(gs)-.37 E F0 .363 +(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362 +(he last command in the history list is)-5.363 F(remo)180 216 Q -.15(ve) +-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .145(If the)144 232.8 R/F3 9/Times-Bold@0 SF +(HISTTIMEFORMA)2.645 E(T)-.855 E F0 -.25(va)2.395 G .145 +(riable is set, the time stamp information associated with each history) +.25 F .669(entry is written to the history \214le, mark)144 244.8 R .669 +(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668 +(hen the history)-5.668 F .955(\214le is read, lines be)144 256.8 R .956 +(ginning with the history comment character follo)-.15 F .956 +(wed immediately by a digit)-.25 F 1.796 +(are interpreted as timestamps for the follo)144 268.8 R 1.795 +(wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F +1.795(alue is 0 unless an)-.25 F(in)144 280.8 Q -.25(va)-.4 G .768(lid \ +option is encountered, an error occurs while reading or writing the his\ +tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 292.8 Q(fset) +-.18 E F0 1.032(is supplied as an ar)3.532 F 1.031(gument to)-.18 F F1 +3.531 E F0 3.531(,o)C 3.531(rt)-3.531 G 1.031(he history e)-3.531 +F 1.031(xpansion supplied as an ar)-.15 F 1.031(gument to)-.18 F F1 +3.531 E F0 -.1(fa)144 304.8 S(ils.).1 E F1(jobs)108 321.6 Q F0([) +2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 E F1 +(jobs \255x)108 333.6 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 +E F0(... ])2.5 E(The \214rst form lists the acti)144 345.6 Q .3 -.15 +(ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1144 357.6 Q F0 +(List process IDs in addition to the normal information.)180 357.6 Q F1 +144 369.6 Q F0 .193(Display information only about jobs that ha) +180 369.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 +F .194(as last noti-)-.1 F(\214ed of their status.)180 381.6 Q F1 +144 393.6 Q F0(List only the process ID of the job')180 393.6 Q 2.5(sp) +-.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 405.6 Q F0 +(Display only running jobs.)180 405.6 Q F1144 417.6 Q F0 +(Display only stopped jobs.)180 417.6 Q(If)144 434.4 Q F2(jobspec)4.554 +E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314 +(n, output is restricted to information about that job).15 F 5.313(.T) +-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 446.4 Q -.25 +(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 +E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 463.2 R F1 +2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 +.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) +3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 +(with the corre-)3.164 F(sponding process group ID, and e)144 475.2 Q +-.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) +2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E +F1(kill)108 492 Q F0([)2.5 E F1A F2(sigspec)2.5 E F0(|)2.5 E F1 +2.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A F0 2.5 +(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1 +(kill \255l)108 504 Q F0(|)A F1A F0([)2.5 E F2(sigspec)A F0(|)2.5 +E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12(Send the signal named by)144 +516 R F2(sigspec)2.96 E F0(or)2.93 E F2(signum)2.96 E F0 .119 +(to the processes named by)2.939 F F2(pid)3.869 E F0(or)3.389 E F2 +(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is)2.929 E .318 +(either a case-insensiti)144 528 R .618 -.15(ve s)-.25 H .318 +(ignal name such as).15 F F3(SIGKILL)2.818 E F0 .319 +(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 +(pre\214x\) or a signal)2.569 F(number;)144 540 Q F2(signum)4.189 E F0 +1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) +4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 +1.348(is assumed.)3.599 F(An)6.348 E(ar)144 552 Q .522(gument of)-.18 F +F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 +F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F +F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names) +.15 F .28(of the signals corresponding to the ar)144 564 R .28 +(guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2 +-.2(ex)2.78 G(it_status).2 E F0(ar)144 576 Q .377(gument to)-.18 F F1 +2.877 E F0 .378 +(is a number specifying either a signal number or the e)2.877 F .378 +(xit status of a process termi-)-.15 F .963(nated by a signal.)144 588 R +(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 +G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 +(returns true if at least one signal w)3.462 F(as)-.1 E +(successfully sent, or f)144 600 Q(alse if an error occurs or an in)-.1 +E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 616.8 Q F2 +(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 +628.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 +(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197 +(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) +2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 640.8 Q F2(ar) +2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0 +(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 657.6 Q F0([)2.5 +E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(.. | \255 ])-2.5 E -.15(Fo)144 669.6 S 2.56(re).15 G .06(ach ar)-2.56 F +.06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0 +.06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he) +-5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 681.6 Q 3.152(yo) +-.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar) +3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653 +(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 +693.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H +.422(isible scope restricted to that function and its children.).15 F +(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 +(of shell options is made local to the function in which)144 705.6 R F1 +(local)3.961 E F0 1.462(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.462 +(d: shell options changed).1 F 1.563(using the)144 717.6 R F1(set)4.063 +E F0 -.2(bu)4.063 G 1.563 +(iltin inside the function are restored to their original v).2 F 1.562 +(alues when the function)-.25 F 3.743(returns. W)144 729.6 R 1.243 +(ith no operands,)-.4 F F1(local)3.743 E F0 1.243 +(writes a list of local v)3.743 F 1.244 +(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(63)192.055 E 0 Cg EP %%Page: 64 64 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(with a fractional portion follo)180 84 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 10/Times-Bold@0 SF -.18(re)2.5 G(ad).18 E F0 .506(is reading input\ - from a terminal, pipe, or other special \214le; it has no ef)180 96 R -.506(fect when reading)-.25 F .59(from re)180 108 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 120 S(riable).25 E/F2 10/Times-Italic@0 SF(name)2.77 E F0 -5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27(is 0,)2.77 F F1 -.18(re) -2.77 G(ad).18 E F0 .27(returns immediately)2.77 F 2.77(,w)-.65 G .27 -(ithout trying to read an)-2.77 F 2.77(yd)-.15 G(ata.)-2.77 E 1.12 -(The e)180 132 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 144 R -.15(ex)2.5 G -(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E -F1144 156 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 172.8 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 9/Times-Bold@0 SF(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 184.8 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 196.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 208.8 Q(gument to)-.18 E F1 -2.5 E F0(.)A F1 -.18(re)108 225.6 S(adonly).18 E F0([)2.5 E F1 -(\255aAf)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A -F2(wor)A(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 237.6 R -.15(ve) --.25 G(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77 -(ed readonly; the v)-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 -.77(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 -249.6 R 1.096(If the)6.096 F F13.596 E F0 1.097 -(option is supplied, the functions corresponding to the)3.596 F F2 -(names)3.597 E F0 1.097(are so)3.597 F(mark)144 261.6 Q 3.334(ed. The) --.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 -(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) --3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .776(ables to associati)144 273.6 R 1.076 -.15(ve a)-.25 H 3.276 -(rrays. If).15 F .777(both options are supplied,)3.276 F F13.277 E -F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name) -3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 285.6 R -.15(ve) --.25 G .521(n, or if the).15 F F13.021 E F0 .521 -(option is supplied, a list of all readonly names is printed.)3.021 F -.521(The other)5.521 F .295(options may be used to restrict the output \ -to a subset of the set of readonly names.)144 297.6 R(The)5.296 E F1 -2.796 E F0(option)2.796 E .786 -(causes output to be displayed in a format that may be reused as input.) -144 309.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -321.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) --3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) -3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) --5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) -144 333.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) --.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 -(is supplied with a)2.76 F F2(name)144.36 345.6 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 362.4 S(tur).18 E(n)-.15 -E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 374.4 R --.15(xe)-.15 G .02(cuting and return the v).15 F .021 -(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F -5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .469 -(the return status is that of the last command e)144 386.4 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 398.4 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 410.4 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 422.4 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 434.4 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 446.4 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 458.4 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 475.2 Q -F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E -F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -F1(set)108 487.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1 -(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0 -(...])2.5 E -.4(Wi)144 499.2 S .836(thout options, the name and v).4 F -.835(alue of each shell v)-.25 F .835 -(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 511.2 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.912(reset. In)144 523.2 R F2(posix)2.912 E F0 -.412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412 -(The output is sorted according to the current)5.412 F 3.53 -(locale. When)144 535.2 R 1.031(options are speci\214ed, the)3.53 F -3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) --.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F -1.624(after option processing are treated as v)144 547.2 R 1.623 -(alues for the positional parameters and are assigned, in)-.25 F(order) -144 559.2 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A -F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 571.2 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 583.2 Q(vironment of subsequent commands.) --.4 E F1144 595.2 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 607.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 619.2 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 631.2 Q -F2 1.294(compound command)3.794 F F0(\(see)3.794 E F3 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 -643.2 R .079(xit if the command that f)-.15 F .08 -(ails is part of the command list immediately)-.1 F(follo)184 655.2 Q -1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 --.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 -(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) -4.154 E(ed)-.15 E -.1(wo)184 667.2 S .581(rds, part of an).1 F 3.081(yc) --.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 -(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 -(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 679.2 R -F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) --3.418 H .918(ommand in a pipeline b).15 F .917 -(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E --.25(va)184 691.2 S .66(lue is being in).25 F -.15(ve)-.4 G .66 -(rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 -(ompound command other than a subshell returns a)-3.161 F 1.113 -(non-zero status because a command f)184 703.2 R 1.112(ailed while)-.1 F -F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 -(eing ignored, the shell does)-3.612 F .177(not e)184 715.2 R 2.677 -(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 -(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 -(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 -(option applies to)2.678 F 3.325(the shell en)184 727.2 R 3.325 -(vironment and each subshell en)-.4 F 3.325(vironment separately \(see) --.4 F F3(COMMAND)5.824 E F0(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 -E(64)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .42(error to use) +144 84 R/F1 10/Times-Bold@0 SF(local)2.92 E F0 .42 +(when not within a function.)2.92 F .42(The return status is 0 unless) +5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in) +144 96 Q -.25(va)-.4 G(lid).25 E/F2 10/Times-Italic@0 SF(name)2.86 E F0 +(is supplied, or)2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.) +-.25 E F1(logout)108 112.8 Q F0(Exit a login shell.)144 112.8 Q F1 +(map\214le)108 129.6 Q F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C +F1-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E +F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 +2.5(][)C F1-2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2 +(callbac)2.5 E(k)-.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 +2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0(])A F1 -.18(re)108 141.6 S(adarray) +.18 E F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2 +(count)2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 +-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 +-2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k) +-.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr) +-2.5 E(ay)-.15 E F0(])A .35 +(Read lines from the standard input into the inde)144 153.6 R -.15(xe) +-.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2(arr)2.851 E +(ay)-.15 E F0 2.851(,o).32 G 2.851(rf)-2.851 G .351 +(rom \214le descriptor)-2.851 F F2(fd)2.851 E F0 1.249(if the)144 165.6 +R F13.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 +F(ariable)-.25 E/F3 9/Times-Bold@0 SF(MAPFILE)3.749 E F0 1.249 +(is the def)3.499 F(ault)-.1 E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C +1.248(ptions, if supplied,)-6.248 F(ha)144 177.6 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1144 189.6 Q F0 +(The \214rst character of)180 189.6 Q F2(delim)2.5 E F0 +(is used to terminate each input line, rather than ne)2.5 E(wline.)-.25 +E F1144 201.6 Q F0(Cop)180 201.6 Q 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost) +-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)2.5 E F0 +(is 0, all lines are copied.)2.5 E F1144 213.6 Q F0(Be)180 213.6 Q +(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x) +-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi) +-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 225.6 Q F0 +(Discard the \214rst)180 225.6 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +144 237.6 Q F0(Remo)180 237.6 Q .3 -.15(ve a t)-.15 H(railing).15 +E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E +(wline\) from each line read.)-.25 E F1144 249.6 Q F0 +(Read lines from \214le descriptor)180 249.6 Q F2(fd)2.5 E F0 +(instead of the standard input.)2.5 E F1144 261.6 Q F0(Ev)180 +261.6 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 +(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 +(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 273.6 +Q F0(Specify the number of lines read between each call to)180 273.6 Q +F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 290.4 Q F12.967 E F0 +.467(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 +(callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 +(luated, it is sup-).25 F .262(plied the inde)144 302.4 R 2.762(xo)-.15 +G 2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be ass\ +igned and the line to be assigned to that element)-.15 F .274 +(as additional ar)144 314.4 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E +F0 .274(is e)2.774 F -.25(va)-.25 G .274 +(luated after the line is read b).25 F .275 +(ut before the array element is)-.2 F(assigned.)144 326.4 Q +(If not supplied with an e)144 343.2 Q(xplicit origin,)-.15 E F1 +(map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 +(before assigning to it.)2.5 E F1(map\214le)144 360 Q F0 1.906 +(returns successfully unless an in)4.406 F -.25(va)-.4 G 1.905 +(lid option or option ar).25 F 1.905(gument is supplied,)-.18 F F2(arr) +4.405 E(ay)-.15 E F0(is)4.405 E(in)144 372 Q -.25(va)-.4 G +(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 +(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E +F1(popd)108 388.8 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 400.8 Q -.15(ve)-.15 G 2.799 +(se).15 G .299(ntries from the directory stack.)-2.799 F -.4(Wi)5.299 G +.299(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 +G .3(he top directory from the)-2.799 F 1.479(stack, and performs a)144 +412.8 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 +(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478 +(uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15 +F(wing)-.25 E(meanings:)144 424.8 Q F1144 436.8 Q F0 .551 +(Suppresses the normal change of directory when remo)180 436.8 R .551 +(ving directories from the stack, so)-.15 F +(that only the stack is manipulated.)180 448.8 Q F1(+)144 460.8 Q F2(n)A +F0(Remo)180 460.8 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E +F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 +F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 +472.8 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 +(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) +-.65 E F4(popd +1)2.5 E F0(the second.)2.5 E F1144 484.8 Q F2(n)A F0 +(Remo)180 484.8 Q -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E +F0 1.259(th entry counting from the right of the list sho)B 1.26(wn by) +-.25 F F1(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5 +(zero. F)180 496.8 R(or e)-.15 E(xample:)-.15 E F4(popd -0)2.5 E F0 +(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 +E F4(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 +513.6 R F1(popd)3.144 E F0 .644(command is successful, a)3.144 F F1 +(dirs)3.143 E F0 .643(is performed as well, and the return status is 0.) +3.143 F F1(popd)5.643 E F0 .415(returns f)144 525.6 R .415 +(alse if an in)-.1 F -.25(va)-.4 G .415 +(lid option is encountered, the directory stack is empty).25 F 2.916 +(,an)-.65 G(on-e)-2.916 E .416(xistent direc-)-.15 F +(tory stack entry is speci\214ed, or the directory change f)144 537.6 Q +(ails.)-.1 E F1(printf)108 554.4 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.437 +(Write the formatted)144 566.4 R F2(ar)3.937 E(guments)-.37 E F0 1.437 +(to the standard output under the control of the)3.937 F F2(format)3.936 +E F0 6.436(.T)C(he)-6.436 E F13.936 E F0 .126 +(option causes the output to be assigned to the v)144 578.4 R(ariable) +-.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) +2.626 F(output.)144 590.4 Q(The)144 614.4 Q F2(format)3.018 E F0 .517(i\ +s a character string which contains three types of objects: plain chara\ +cters, which are)3.018 F .704(simply copied to standard output, charact\ +er escape sequences, which are con)144 626.4 R -.15(ve)-.4 G .704 +(rted and copied to).15 F .036(the standard output, and format speci\ +\214cations, each of which causes printing of the ne)144 638.4 R .036 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 650.4 Q(gument)-.37 E F0 +5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F2 +(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.032 +E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 662.4 Q +(xtensions:)-.15 E F1(%b)144 674.4 Q F0(causes)180 674.4 Q F1(printf) +2.596 E F0 .096(to e)2.596 F .096 +(xpand backslash escape sequences in the corresponding)-.15 F F2(ar) +2.596 E(gument)-.37 E F0 .095(in the)2.595 F(same w)180 686.4 Q(ay as) +-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 698.4 Q F0(causes)180 698.4 Q +F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E +(gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F +(input.)180 710.4 Q(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(64) +192.055 E 0 Cg EP %%Page: 65 65 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 9/Times-Bold@0 SF .106(EXECUTION ENVIR)184 84 R(ONMENT)-.27 E -F0(abo)2.356 E -.15(ve)-.15 G .107(\), and may cause subshells to e).15 -F .107(xit before e)-.15 F -.15(xe)-.15 G(cuting).15 E -(all the commands in the subshell.)184 96 Q 2.042 -(If a compound command or shell function e)184 114 R -.15(xe)-.15 G -2.042(cutes in a conte).15 F 2.042(xt where)-.15 F/F2 10/Times-Bold@0 SF -4.542 E F0 2.042(is being)4.542 F 1.435 -(ignored, none of the commands e)184 126 R -.15(xe)-.15 G 1.436 -(cuted within the compound command or function).15 F .194 -(body will be af)184 138 R .194(fected by the)-.25 F F22.694 E F0 -.193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F2 -2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) --.1 E 3.39(status. If)184 150 R 3.39(ac)3.39 G .89 -(ompound command or shell function sets)-3.39 F F23.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 162 Q F23.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 174 Q F2 -144 186 Q F0(Disable pathname e)30.97 E(xpansion.)-.15 E F2 -144 198 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 210 Q -(ault.)-.1 E F2144 222 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 234 Q F2 -144 246 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 258 R F1 .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 270 R .679 -(When a background job completes, the shell prints a line containing it\ -s)5.678 F -.15(ex)184 282 S(it status.).15 E F2144 294 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 306 Q(This is ignored by interacti)5 E .3 --.15(ve s)-.25 H(hells.).15 E F2144 318 Q/F3 10/Times-Italic@0 SF -(option\255name)2.5 E F0(The)184 330 Q F3(option\255name)2.5 E F0 -(can be one of the follo)2.5 E(wing:)-.25 E F2(allexport)184 342 Q F0 -(Same as)224 354 Q F22.5 E F0(.)A F2(braceexpand)184 366 Q F0 -(Same as)224 378 Q F22.5 E F0(.)A F2(emacs)184 390 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 402 R -.15(ve)-.25 G 3.45(,u).15 G .95 -(nless the shell is started with the)-3.45 F F2(\255\255noediting)3.45 E -F0 2.5(option. This)224 414 R(also af)2.5 E(fects the editing interf) --.25 E(ace used for)-.1 E F2 -.18(re)2.5 G(ad \255e).18 E F0(.)A F2(err) -184 426 Q(exit)-.18 E F0(Same as)11.31 E F22.5 E F0(.)A F2 -(errtrace)184 438 Q F0(Same as)5.03 E F22.5 E F0(.)A F2(functrace) -184 450 Q F0(Same as)224 462 Q F22.5 E F0(.)A F2(hashall)184 474 Q -F0(Same as)9.43 E F22.5 E F0(.)A F2(histexpand)184 486 Q F0 -(Same as)224 498 Q F22.5 E F0(.)A F2(history)184 510 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 F1(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 522 Q(ault in interacti)-.1 E .3 -.15(ve s)-.25 H -(hells.).15 E F2(ignor)184 534 Q(eeof)-.18 E F0 1.657(The ef)224 546 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 558 Q F2(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15 -(ve)-.15 G(\).).15 E F2 -.1(ke)184 570 S(yw).1 E(ord)-.1 E F0(Same as) -224 582 Q F22.5 E F0(.)A F2(monitor)184 594 Q F0(Same as)5.56 E F2 -2.5 E F0(.)A F2(noclob)184 606 Q(ber)-.1 E F0(Same as)224 618 Q F2 -2.5 E F0(.)A F2(noexec)184 630 Q F0(Same as)11.12 E F22.5 E -F0(.)A F2(noglob)184 642 Q F0(Same as)11.1 E F22.5 E F0(.)A F2 -(nolog)184 654 Q F0(Currently ignored.)16.66 E F2(notify)184 666 Q F0 -(Same as)15 E F22.5 E F0(.)A F2(nounset)184 678 Q F0(Same as)6.66 -E F22.5 E F0(.)A F2(onecmd)184 690 Q F0(Same as)6.67 E F22.5 -E F0(.)A F2(ph)184 702 Q(ysical)-.15 E F0(Same as)5.14 E F22.5 E -F0(.)A F2(pipefail)184 714 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 726 R -1.136 -(xit with a non-zero status, or zero if all commands in the pipeline) --.15 F(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(65)190.95 E 0 Cg -EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(%\()144 84 Q/F2 10/Times-Italic@0 SF(datefmt)A F1(\)T)A F0(causes)180 +96 Q F1(printf)4.404 E F0 1.904 +(to output the date-time string resulting from using)4.404 F F2(datefmt) +4.404 E F0 1.903(as a format)4.404 F .38(string for)180 108 R F2 +(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) +2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 +(ger representing the number)-.15 F .458(of seconds since the epoch.)180 +120 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F +.458(alues may be used: -1 represents the)-.25 F .847 +(current time, and -2 represents the time the shell w)180 132 R .847 +(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.348(d. If).1 F .848(no ar)3.348 +F .848(gument is speci-)-.18 F .355(\214ed, con)180 144 R -.15(ve)-.4 G +.355(rsion beha).15 F -.15(ve)-.2 G 2.855(sa).15 G 2.855(si)-2.855 G +2.855(f-)-2.855 G 2.855(1h)-2.855 G .354(ad been gi)-2.855 F -.15(ve) +-.25 G 2.854(n. This).15 F .354(is an e)2.854 F .354 +(xception to the usual)-.15 F F1(printf)2.854 E F0(beha)180 156 Q(vior) +-.2 E(.)-.55 E(Ar)144 172.8 Q .463(guments to non-string format speci\ +\214ers are treated as C constants, e)-.18 F .464 +(xcept that a leading plus or)-.15 F 1.259(minus sign is allo)144 184.8 +R 1.259 +(wed, and if the leading character is a single or double quote, the v) +-.25 F 1.258(alue is the)-.25 F(ASCII v)144 196.8 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 213.6 Q F2(format)3.423 E +F0 .923(is reused as necessary to consume all of the)3.423 F F2(ar)3.423 +E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) +3.423 E F0 .924(requires more)3.424 F F2(ar)144 225.6 Q(guments)-.37 E +F0 .033(than are supplied, the e)2.534 F .033 +(xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si) +.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .033(alue or null string,) +-.25 F(as appropriate, had been supplied.)144 237.6 Q(The return v)5 E +(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) +108 254.4 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 266.4 Q F0([)2.5 E F1A F0 +2.5(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\ +irectory stack, or rotates the stack, making the ne)144 278.4 R 3.14(wt) +-.25 G .64(op of the)-3.14 F .417(stack the current w)144 290.4 R .416 +(orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F +(guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416 +(changes the top tw).15 F 2.916(od)-.1 G(irectories)-2.916 E 1.625 +(and returns 0, unless the directory stack is empty)144 302.4 R 6.625 +(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 +-.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 314.4 Q +F1144 326.4 Q F0 1.811(Suppresses the normal change of directory \ +when rotating or adding directories to the)180 326.4 R +(stack, so that only the stack is manipulated.)180 338.4 Q F1(+)144 +350.4 Q F2(n)A F0 1.267(Rotates the stack so that the)180 350.4 R F2(n) +3.767 E F0 1.268(th directory \(counting from the left of the list sho)B +1.268(wn by)-.25 F F1(dirs)180 362.4 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F1144 374.4 Q F2(n)A F0 +.92(Rotates the stack so that the)180 374.4 R F2(n)3.42 E F0 .92 +(th directory \(counting from the right of the list sho)B .92(wn by)-.25 +F F1(dirs)180 386.4 Q F0 2.5(,s)C(tarting with zero\) is at the top.) +-2.5 E F2(dir)144.35 398.4 Q F0(Adds)180 398.4 Q F2(dir)3.137 E F0 .287 +(to the directory stack at the top, making it the ne)3.517 F 2.788(wc) +-.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F +(if it had been supplied as the ar)180 410.4 Q(gument to the)-.18 E F1 +(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 427.2 R F1(pushd) +2.989 E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488 +(is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F +F1(pushd)2.988 E F0 1.039(returns 0 unless the cd to)144 439.2 R F2(dir) +3.889 E F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,) +-.4 F F1(pushd)3.54 E F0 1.04(returns 0 unless the directory)3.54 F .847 +(stack is empty)144 451.2 R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent\ + directory stack element is speci\214ed, or the directory change to the) +-.15 F(speci\214ed ne)144 463.2 Q 2.5(wc)-.25 G(urrent directory f)-2.5 +E(ails.)-.1 E F1(pwd)108 480 Q F0([)2.5 E F1(\255LP)A F0(])A .844 +(Print the absolute pathname of the current w)144 492 R .845 +(orking directory)-.1 F 5.845(.T)-.65 G .845 +(he pathname printed contains no)-5.845 F .182(symbolic links if the)144 +504 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 .181 +(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set) +2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263(enabled. If) +144 516 R(the)3.263 E F13.263 E F0 .763 +(option is used, the pathname printed may contain symbolic links.)3.263 +F .764(The return)5.764 F 1.36(status is 0 unless an error occurs while\ + reading the name of the current directory or an in)144 528 R -.25(va) +-.4 G(lid).25 E(option is supplied.)144 540 Q F1 -.18(re)108 556.8 S(ad) +.18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1-3.816 E F2(aname) +3.816 E F0 3.816(][)C F1-3.816 E F2(delim)3.816 E F0 3.816(][)C F1 +-3.816 E F2(te)3.816 E(xt)-.2 E F0 3.816(][)C F1-3.816 E F2 +(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E F2(nc) +3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1-3.817 E F2(pr)3.817 E +(ompt)-.45 E F0 3.817(][)C F1-3.817 E F2(timeout)3.817 E F0 3.817 +(][)C F1-3.817 E F2(fd)3.817 E F0(])A([)108 568.8 Q F2(name)A F0 +(...])2.5 E .516(One line is read from the standard input, or from the \ +\214le descriptor)144 580.8 R F2(fd)3.016 E F0 .516(supplied as an ar) +3.016 F .516(gument to)-.18 F(the)144 592.8 Q F13.847 E F0 1.347 +(option, split into w)3.847 F 1.347(ords as described abo)-.1 F 1.648 +-.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)3.848 G 1.348(rd Splitting).75 F +F0 3.848(,a)C 1.348(nd the \214rst w)-3.848 F 1.348(ord is)-.1 F 1.465 +(assigned to the \214rst)144 604.8 R F2(name)3.965 E F0 3.965(,t).18 G +1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F2(name)3.965 E +F0 3.965(,a).18 G 1.465(nd so on.)-3.965 F 1.465(If there are more)6.465 +F -.1(wo)144 616.8 S 1.112(rds than names, the remaining w).1 F 1.112 +(ords and their interv)-.1 F 1.112 +(ening delimiters are assigned to the last)-.15 F F2(name)144 628.8 Q F0 +5.723(.I).18 G 3.223(ft)-5.723 G .723(here are fe)-3.223 F .723(wer w) +-.25 F .722 +(ords read from the input stream than names, the remaining names are)-.1 +F .531(assigned empty v)144 640.8 R 3.031(alues. The)-.25 F .531 +(characters in)3.031 F/F3 9/Times-Bold@0 SF(IFS)3.031 E F0 .532 +(are used to split the line into w)2.781 F .532(ords using the same)-.1 +F .197(rules the shell uses for e)144 652.8 R .197 +(xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F1 +-.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .196 +(backslash charac-)2.697 F .156(ter \()144 664.8 R F1(\\)A F0 2.656(\)m) +C .156(ay be used to remo)-2.656 F .457 -.15(ve a)-.15 H .457 -.15(ny s) +.15 H .157(pecial meaning for the ne).15 F .157 +(xt character read and for line continu-)-.15 F 2.5(ation. Options,)144 +676.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 688.8 Q F2(aname)2.5 E F0 1.05(The w) +180 700.8 R 1.049 +(ords are assigned to sequential indices of the array v)-.1 F(ariable) +-.25 E F2(aname)3.549 E F0 3.549(,s).18 G 1.049(tarting at 0.)-3.549 F +F2(aname)180.33 712.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 +-.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0 +(ar)2.5 E(guments are ignored.)-.18 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(65)192.055 E 0 Cg EP %%Page: 66 66 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E -.15(ex)224 84 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E/F1 10/Times-Bold@0 SF -(posix)184 96 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 1.212 -(POSIX standard to match the standard \()224 108 R/F2 10/Times-Italic@0 -SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9/Times-Bold@0 SF 1.212 -(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E 2.306 -(for a reference to a document that details ho)224 120 R 4.807(wp)-.25 G -2.307(osix mode af)-4.807 F 2.307(fects bash')-.25 F(s)-.55 E(beha)224 -132 Q(vior)-.2 E(.)-.55 E F1(pri)184 144 Q(vileged)-.1 E F0(Same as)224 -156 Q F12.5 E F0(.)A F1 -.1(ve)184 168 S(rbose).1 E F0(Same as) -7.33 E F12.5 E F0(.)A F1(vi)184 180 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 192 Q -(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(xtrace)184 -204 Q F0(Same as)13.35 E F12.5 E F0(.)A(If)184 222 Q F13.052 -E F0 .552(is supplied with no)3.052 F F2(option\255name)3.053 E F0 3.053 -(,t)C .553(he v)-3.053 F .553(alues of the current options are printed.) --.25 F(If)5.553 E F1(+o)184 234 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 246 Q F1 -144 258 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($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 270 R 1.5 -(vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3 --.27(BA)184 282 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 294 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 306 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 318 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 330 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 342 Q F1144 354 Q F0 -(Exit after reading and e)30.97 E -.15(xe)-.15 G(cuting one command.).15 -E F1144 366 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 378 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 390 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 -402 Q F1144 414 Q F0(Print shell input lines as the)29.3 E 2.5(ya) --.15 G(re read.)-2.5 E F1144 426 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 438 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 450 Q -(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 462 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 474 Q -(ault.)-.1 E F1144 486 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 498 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 510 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 522 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 534 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 546 Q F1 -144 558 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 570 Q -.15 -(ve)-.25 G(.).15 E F1144 582 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 594 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 606 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 618 Q(.)-.65 E F1144 -630 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 642 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 654 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 666 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 678 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 -690 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 702 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 714 Q .425(The options are of)144 -730.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(GNU Bash 4.3)72 -768 Q(2014 February 2)141.79 E(66)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q/F2 10/Times-Italic@0 SF(delim)2.5 E F0 +(The \214rst character of)180 96 Q F2(delim)2.5 E F0 +(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E +F1144 108 Q F0 .372 +(If the standard input is coming from a terminal,)180 108 R F1 -.18(re) +2.873 G(adline).18 E F0(\(see)2.873 E/F3 9/Times-Bold@0 SF(READLINE) +2.873 E F0(abo)2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G +(sed)-2.873 E .218(to obtain the line.)180 120 R .218 +(Readline uses the current \(or def)5.218 F .218 +(ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E +(acti)180 132 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E F1 +144 144 Q F2(te)2.5 E(xt)-.2 E F0(If)180 144 Q F1 -.18(re)2.715 G +(adline).18 E F0 .216(is being used to read the line,)2.715 F F2(te) +2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2 E +.216(fer before edit-)-.25 F(ing be)180 156 Q(gins.)-.15 E F1144 +168 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 180 S(ad).18 E F0 +1.395(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E F0 +1.395(characters rather than w)3.895 F 1.394 +(aiting for a complete line of)-.1 F(input, b)180 192 Q +(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 +E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 +144 204 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 216 S(ad) +.18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769 +E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27 +(aiting for a complete)-.1 F .275 +(line of input, unless EOF is encountered or)180 228 R F1 -.18(re)2.775 +G(ad).18 E F0 .274(times out.)2.774 F .274(Delimiter characters encoun-) +5.274 F 1.002 +(tered in the input are not treated specially and do not cause)180 240 R +F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)3.503 +E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 252 R .608 +(The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0 +3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 264 S .669 +(riable is assigned e).25 F .669 +(xactly the characters read \(with the e)-.15 F .67 +(xception of backslash; see the)-.15 F F1180 276 Q F0(option belo) +2.5 E(w\).)-.25 E F1144 288 Q F2(pr)2.5 E(ompt)-.45 E F0(Display) +180 300 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161(on standard error)3.661 F +3.661(,w)-.4 G 1.161(ithout a trailing ne)-3.661 F 1.161 +(wline, before attempting to read)-.25 F(an)180 312 Q 2.5(yi)-.15 G 2.5 +(nput. The)-2.5 F +(prompt is displayed only if input is coming from a terminal.)2.5 E F1 +144 324 Q F0 .543(Backslash does not act as an escape character) +180 324 R 5.543(.T)-.55 G .544(he backslash is considered to be part of) +-5.543 F(the line.)180 336 Q(In particular)5 E 2.5(,ab)-.4 G +(ackslash-ne)-2.5 E(wline pair may not be used as a line continuation.) +-.25 E F1144 348 Q F0(Silent mode.)180 348 Q +(If input is coming from a terminal, characters are not echoed.)5 E F1 +144 360 Q F2(timeout)2.5 E F0(Cause)180 372 Q F1 -.18(re)2.929 G +(ad).18 E F0 .428(to time out and return f)2.929 F .428 +(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56 +(ber of characters\) is not read within)180 384 R F2(timeout)3.061 E F0 +(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number) +3.061 F(with a fractional portion follo)180 396 Q +(wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E +.3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ +g input from a terminal, pipe, or other special \214le; it has no ef)180 +408 R .506(fect when reading)-.25 F .59(from re)180 420 R .59 +(gular \214les.)-.15 F(If)5.59 E F1 -.18(re)3.09 G(ad).18 E F0 .589 +(times out,)3.09 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2 +G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589 +(artial input read into the speci\214ed).15 F -.25(va)180 432 S(riable) +.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27 +(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77 +F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G +(ata.)-2.77 E 1.12(The e)180 444 R 1.12(xit status is 0 if input is a) +-.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor) +.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 +456 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) +.15 E(xceeded.)-.15 E F1144 468 Q F2(fd)2.5 E F0 +(Read input from \214le descriptor)180 468 Q F2(fd)2.5 E F0(.)A .476 +(If no)144 484.8 R F2(names)3.336 E F0 .476 +(are supplied, the line read is assigned to the v)3.246 F(ariable)-.25 E +F3(REPL)2.977 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .477(The e)4.977 +F .477(xit status is zero,)-.15 F .773 +(unless end-of-\214le is encountered,)144 496.8 R F1 -.18(re)3.273 G(ad) +.18 E F0 .772 +(times out \(in which case the status is greater than 128\), a)3.273 F +-.25(va)144 508.8 S 2.004 +(riable assignment error \(such as assigning to a readonly v).25 F 2.005 +(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.005(lid \214le).25 F +(descriptor is supplied as the ar)144 520.8 Q(gument to)-.18 E F1 +2.5 E F0(.)A F1 -.18(re)108 537.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A +F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A +(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 549.6 R -.15(ve)-.25 G +(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77(ed readonly; the v) +-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 .77 +(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 561.6 R +1.096(If the)6.096 F F13.596 E F0 1.097 +(option is supplied, the functions corresponding to the)3.596 F F2 +(names)3.597 E F0 1.097(are so)3.597 F(mark)144 573.6 Q 3.334(ed. The) +-.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 +(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) +-3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) +-.25 E .776(ables to associati)144 585.6 R 1.076 -.15(ve a)-.25 H 3.276 +(rrays. If).15 F .777(both options are supplied,)3.276 F F13.277 E +F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name) +3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 597.6 R -.15(ve) +-.25 G .521(n, or if the).15 F F13.021 E F0 .521 +(option is supplied, a list of all readonly names is printed.)3.021 F +.521(The other)5.521 F .295(options may be used to restrict the output \ +to a subset of the set of readonly names.)144 609.6 R(The)5.296 E F1 +2.796 E F0(option)2.796 E .786 +(causes output to be displayed in a format that may be reused as input.) +144 621.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 +633.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +-3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) +3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) +-5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) +144 645.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +-.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 +(is supplied with a)2.76 F F2(name)144.36 657.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 674.4 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 686.4 R +-.15(xe)-.15 G .02(cuting and return the v).15 F .021 +(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F +5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597 +(the return status is that of the last command e)144 698.4 R -.15(xe) +-.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E +F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15 +G(cuted).15 E 1.238(by a trap handler)144 710.4 R 3.738(,t)-.4 G 1.238 +(he last command used to determine the status is the last command e) +-3.738 F -.15(xe)-.15 G(cuted).15 E 1.067(before the trap handler)144 +722.4 R 6.067(.i)-.55 G(f)-6.067 E F1 -.18(re)3.567 G(tur).18 E(n)-.15 E +F0 1.067(is e)3.567 F -.15(xe)-.15 G 1.067(cuted during a).15 F F1(DEB) +3.567 E(UG)-.1 E F0 1.067(trap, the last command used to)3.567 F +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(66)192.055 E 0 Cg EP %%Page: 67 67 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .178(to be turned of)144 84 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 96 R/F1 10/Times-Bold@0 SF -<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa) --.1 G .066(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F -(is encountered.)144 108 Q F1(shift)108 124.8 Q F0([)2.5 E/F2 10 -/Times-Italic@0 SF(n)A F0(])A .429(The positional parameters from)144 -136.8 R F2(n)2.929 E F0 .429(+1 ... are renamed to)B F1 .429($1 ....) -2.929 F F0 -.15(Pa)5.428 G .428(rameters represented by the num-).15 F -(bers)144 148.8 Q F1($#)2.582 E F0(do)2.582 E .082(wn to)-.25 F F1($#) -2.582 E F0A F2(n)A F0 .082(+1 are unset.)B F2(n)5.442 E F0 .082 -(must be a non-ne)2.822 F -.05(ga)-.15 G(ti).05 E .383 -.15(ve n)-.25 H -.083(umber less than or equal to).15 F F1($#)2.583 E F0 5.083(.I)C(f) --5.083 E F2(n)2.943 E F0 .06(is 0, no parameters are changed.)144 160.8 -R(If)5.06 E F2(n)2.92 E F0 .06(is not gi)2.8 F -.15(ve)-.25 G .06 -(n, it is assumed to be 1.).15 F(If)5.06 E F2(n)2.92 E F0 .06 -(is greater than)2.8 F F1($#)2.56 E F0 2.56(,t)C(he)-2.56 E .143 -(positional parameters are not changed.)144 172.8 R .144 -(The return status is greater than zero if)5.143 F F2(n)3.004 E F0 .144 -(is greater than)2.884 F F1($#)2.644 E F0 -(or less than zero; otherwise 0.)144 184.8 Q F1(shopt)108 201.6 Q F0([) -2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) --2.5 E F0(...])2.5 E -.8(To)144 213.6 S .64(ggle the v).8 F .639 -(alues of settings controlling optional shell beha)-.25 F(vior)-.2 E -5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374 -(listed belo)144 225.6 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H -2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 -(option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 -F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 -(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 237.6 R .826 -(ith no options, or with the)-.4 F F13.326 E F0 .825 -(option, a list of all settable options is displayed, with an)3.326 F -.945(indication of whether or not each is set.)144 249.6 R(The)5.945 E -F13.445 E F0 .945(option causes output to be displayed in a form) -3.445 F(that may be reused as input.)144 261.6 Q(Other options ha)5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 273.6 Q -F0(Enable \(set\) each)26.41 E F2(optname)2.5 E F0(.)A F1144 285.6 -Q F0(Disable \(unset\) each)24.74 E F2(optname)2.5 E F0(.)A F1144 -297.6 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ -tus indicates whether the)24.74 F F2(optname)2.503 E F0(is)2.503 E .255 -(set or unset.)180 309.6 R .255(If multiple)5.255 F F2(optname)2.755 E -F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G -(ith)-2.756 E F12.756 E F0 2.756(,t)C .256 -(he return status is zero if)-2.756 F(all)180 321.6 Q F2(optnames)2.5 E -F0(are enabled; non-zero otherwise.)2.5 E F1144 333.6 Q F0 -(Restricts the v)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 .625(If either)144 350.4 R F1 -3.125 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.233 -(set or unset, respecti)144 362.4 R -.15(ve)-.25 G(ly).15 E 7.234(.U) --.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 -2.234(options are disabled \(unset\) by)4.734 F(def)144 374.4 Q(ault.) --.1 E 1.544(The return status when listing options is zero if all)144 -391.2 R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.) -4.044 F .696 -(When setting or unsetting options, the return status is zero unless an) -144 403.2 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696 -(alid shell)-.25 F(option.)144 415.2 Q(The list of)144 432 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(autocd)144 450 Q F0 .2 -(If set, a command name that is the name of a directory is e)11.11 F --.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 462 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 474 Q(ars)-.1 E F0 .155(If set, an ar)184 486 R .155 -(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156 -(iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 498 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 510 Q F0 -1.055 -(If set, minor errors in the spelling of a directory component in a) -10.55 F F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 -(corrected. The)184 522 R 1.487(errors check)3.987 F 1.487 -(ed for are transposed characters, a missing character)-.1 F 3.988(,a) --.4 G(nd)-3.988 E .77(one character too man)184 534 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 546 Q(This option is only used by interacti)5 -E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 558 Q F0 2.079 -(If set,)184 570 R F1(bash)4.579 E F0 2.079 -(checks that a command found in the hash table e)4.579 F 2.08 -(xists before trying to)-.15 F -.15(exe)184 582 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 594 Q -F0 .449(If set,)184 606 R F1(bash)2.949 E F0 .449 -(lists the status of an)2.949 F 2.949(ys)-.15 G .448 -(topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15 -F -.15(ve)-.25 G 3.438(shell. If)184 618 R(an)3.438 E 3.438(yj)-.15 G -.938(obs are running, this causes the e)-3.438 F .938 -(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203 -(attempted without an interv)184 630 R 2.203(ening command \(see)-.15 F -/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E --.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 642 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 654 Q F0 .796(If set,)184 -666 R F1(bash)3.296 E F0 .796(checks the windo)3.296 F 3.296(ws)-.25 G -.797(ize after each command and, if necessary)-3.296 F 3.297(,u)-.65 G -.797(pdates the)-3.297 F -.25(va)184 678 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 -690 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 -702 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E(GNU Bash 4.3)72 768 Q -(2014 February 2)141.79 E(67)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .389 +(determine the status is the last command e)144 84 R -.15(xe)-.15 G .389 +(cuted by the trap handler before).15 F/F1 10/Times-Bold@0 SF -.18(re) +2.89 G(tur).18 E(n)-.15 E F0 -.1(wa)2.89 G 2.89(si).1 G -1.9 -.4(nv o) +-2.89 H -.1(ke).4 G(d.).1 E(If)144 96 Q F1 -.18(re)2.584 G(tur).18 E(n) +-.15 E F0 .084(is used outside a function, b)2.584 F .084(ut during e) +-.2 F -.15(xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E +F0(\()5.084 E F1(sour)A(ce)-.18 E F0 2.583(\)c)C .083(ommand, it)-2.583 +F .588(causes the shell to stop e)144 108 R -.15(xe)-.15 G .588 +(cuting that script and return either).15 F/F2 10/Times-Italic@0 SF(n) +3.448 E F0 .589(or the e)3.329 F .589(xit status of the last com-)-.15 F +.326(mand e)144 120 R -.15(xe)-.15 G .326 +(cuted within the script as the e).15 F .326(xit status of the script.) +-.15 F(If)5.326 E F2(n)2.826 E F0 .325(is supplied, the return v)2.826 F +.325(alue is)-.25 F .444(its least signi\214cant 8 bits.)144 132 R .444 +(The return status is non-zero if)5.444 F F1 -.18(re)2.945 G(tur).18 E +(n)-.15 E F0 .445(is supplied a non-numeric ar)2.945 F(gu-)-.18 E .381 +(ment, or is used outside a function and not during e)144 144 R -.15(xe) +-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E F1 +(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E +.749(mand associated with the)144 156 R F1(RETURN)3.249 E F0 .749 +(trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 +G .75(cution resumes after the function).15 F(or script.)144 168 Q F1 +(set)108 184.8 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C +F1-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E +F0(...])2.5 E F1(set)108 196.8 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 +2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E +(g)-.37 E F0(...])2.5 E -.4(Wi)144 208.8 S .836 +(thout options, the name and v).4 F .835(alue of each shell v)-.25 F +.835(ariable are displayed in a format that can be)-.25 F .784 +(reused as input for setting or resetting the currently-set v)144 220.8 +R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 +(riables cannot be).25 F 2.912(reset. In)144 232.8 R F2(posix)2.912 E F0 +.412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412 +(The output is sorted according to the current)5.412 F 3.53 +(locale. When)144 244.8 R 1.031(options are speci\214ed, the)3.53 F +3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) +-.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F +1.624(after option processing are treated as v)144 256.8 R 1.623 +(alues for the positional parameters and are assigned, in)-.25 F(order) +144 268.8 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A +F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 280.8 Q +F0 1.377(Each v)184 280.8 R 1.377 +(ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) +-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F +1.378(ute and)-.2 F(mark)184 292.8 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 304.8 Q F0 .132 +(Report the status of terminated background jobs immediately)184 304.8 R +2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E +(primary prompt.)184 316.8 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 328.8 Q F0 +.087(Exit immediately if a)184 328.8 R F2(pipeline)2.587 E F0 .087 +(\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F +F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 340.8 Q +F2 1.521(compound command)4.021 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF +1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e) +.15 F 1.521(xits with a non-zero status.)-.15 F .079 +(The shell does not e)184 352.8 R .079(xit if the command that f)-.15 F +.08(ails is part of the command list immediately)-.1 F(follo)184 364.8 Q +1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 +-.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 +(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) +4.154 E(ed)-.15 E -.1(wo)184 376.8 S .581(rds, part of an).1 F 3.081(yc) +-.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 +(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 +(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 388.8 R +F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) +-3.418 H .918(ommand in a pipeline b).15 F .917 +(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E +-.25(va)184 400.8 S .66(lue is being in).25 F -.15(ve)-.4 G .66 +(rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 +(ompound command other than a subshell returns a)-3.161 F 1.113 +(non-zero status because a command f)184 412.8 R 1.112(ailed while)-.1 F +F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 +(eing ignored, the shell does)-3.612 F .177(not e)184 424.8 R 2.677 +(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 +(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 +(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 +(option applies to)2.678 F .618(the shell en)184 436.8 R .617 +(vironment and each subshell en)-.4 F .617(vironment separately \(see) +-.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 448.8 R(ONMENT) +-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 +(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 +(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 460.8 +Q 2.042(If a compound command or shell function e)184 478.8 R -.15(xe) +-.15 G 2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 +E F0 2.042(is being)4.542 F 1.435(ignored, none of the commands e)184 +490.8 R -.15(xe)-.15 G 1.436 +(cuted within the compound command or function).15 F .194 +(body will be af)184 502.8 R .194(fected by the)-.25 F F12.694 E +F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 +2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) +-.1 E 3.39(status. If)184 514.8 R 3.39(ac)3.39 G .89 +(ompound command or shell function sets)-3.39 F F13.39 E F0 .89 +(while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E +(where)184 526.8 Q F13.154 E F0 .654 +(is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953 +-.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F +(or the command containing the function call completes.)184 538.8 Q F1 +144 550.8 Q F0(Disable pathname e)184 550.8 Q(xpansion.)-.15 E F1 +144 562.8 Q F0 2.238(Remember the location of commands as the)184 +562.8 R 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F +-.15(xe)-.15 G 4.739(cution. This).15 F(is)4.739 E(enabled by def)184 +574.8 Q(ault.)-.1 E F1144 586.8 Q F0 .514(All ar)184 586.8 R .514 +(guments in the form of assignment statements are placed in the en)-.18 +F .513(vironment for a)-.4 F +(command, not just those that precede the command name.)184 598.8 Q F1 +144 610.8 Q F0 .148(Monitor mode.)184 610.8 R .148 +(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F +.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 +(on systems that support it \(see)184 622.8 R F3 .651(JOB CONTR)3.151 F +(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65 +(processes run in a separate)3.151 F .678(process group.)184 634.8 R +.679(When a background job completes, the shell prints a line containin\ +g its)5.678 F -.15(ex)184 646.8 S(it status.).15 E F1144 658.8 Q +F0 .653(Read commands b)184 658.8 R .653(ut do not e)-.2 F -.15(xe)-.15 +G .653(cute them.).15 F .652 +(This may be used to check a shell script for)5.653 F(syntax errors.)184 +670.8 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 +E F1144 682.8 Q F2(option\255name)2.5 E F0(The)184 694.8 Q F2 +(option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F1 +(allexport)184 706.8 Q F0(Same as)224 718.8 Q F12.5 E F0(.)A +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(67)192.055 E 0 Cg EP %%Page: 68 68 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(compat31)144 84 Q F0 .419(If set,)184 96 R -F1(bash)2.919 E F0 .419(changes its beha)2.919 F .419(vior to that of v) --.2 F .42(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E -.462(to the)184 108 R F1([[)2.962 E F0 .462(conditional command')2.962 F -(s)-.55 E F1(=~)2.962 E F0 .462 -(operator and locale-speci\214c string comparison when)2.962 F .71 -(using the)184 120 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s) --.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) -3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .821 -(use ASCII collation and)184 132 R/F2 10/Times-Italic@0 SF(str)3.321 E -(cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale') -.19 F 3.32(sc)-.55 G(ollation)-3.32 E(sequence and)184 144 Q F2(str)2.5 -E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 156 Q F0 1.409(If set,)184 -168 R F1(bash)3.909 E F0 1.409(changes its beha)3.909 F 1.409 -(vior to that of v)-.2 F 1.41 -(ersion 3.2 with respect to locale-speci\214c)-.15 F .423 -(string comparison when using the)184 180 R F1([[)2.922 E F0 .422 -(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) -2.922 E F0 .422(operators \(see pre-)2.922 F(vious item\).)184 192 Q F1 -(compat40)144 204 Q F0 1.409(If set,)184 216 R F1(bash)3.909 E F0 1.409 -(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 -(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 -(string comparison when using the)184 228 R F1([[)4.508 E F0 2.007 -(conditional command')4.508 F(s)-.55 E F1(<)4.507 E F0(and)4.507 E F1(>) -4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 240 R -F1(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 -(fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) --.15 E .087(4.0 and later interrupt the list as if the shell recei)184 -252 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 -(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 264 Q -(xt command in the list.)-.15 E F1(compat41)144 276 Q F0 1.483(If set,) -184 288 R F1(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F2(posix) -3.983 E F0 1.484 -(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 -(ex)184 300 S .959(pansion as a special character).15 F 5.959(.T)-.55 G -.958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458 -(nn).15 G .958(umber\) and)-3.458 F .59 -(the characters between the single quotes are considered quoted.)184 312 -R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 -(posix mode through v)184 324 R .589(ersion 4.1.)-.15 F .589(The def) -5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589 -(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 336 Q F1(compat42)144 348 Q -F0 1.796(If set,)184 360 R F1(bash)4.296 E F0 1.796 -(does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 372 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F1(complete_fullquote)144 384 Q F0 .654(If set,)184 -396 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.524 -(forming completion.)184 408 R 1.524(If not set,)6.524 F F1(bash)4.024 E -F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 -(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\ -haracters that will be quoted in completed \214lenames when these)184 -420 R .028(metacharacters appear in shell v)184 432 R .028 -(ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029 -(This means)5.029 F 1.073(that dollar signs in v)184 444 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 456 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 -(ollar signs appearing in \214lenames will not be quoted, either).15 F -6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 -(only when bash is using backslashes to quote completed \214lenames.)184 -468 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 480 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 492 Q(expand)-.18 E F0 .486 -(If set,)184 504 R F1(bash)2.986 E F0 .486 -(replaces directory names with the results of w)2.986 F .486(ord e)-.1 F -.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 -516 R .179(This changes the contents of the readline editing b)5.18 F -(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) -184 528 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 540 Q F0 .858(If set,)7.77 F -F1(bash)3.358 E F0 .858 -(attempts spelling correction on directory names during w)3.358 F .859 -(ord completion if)-.1 F -(the directory name initially supplied does not e)184 552 Q(xist.)-.15 E -F1(dotglob)144 564 Q F0 .165(If set,)7.77 F F1(bash)2.665 E F0 .165 -(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i) --.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F -(xpansion.)-.15 E F1(execfail)144 576 Q F0 1.386 -(If set, a non-interacti)7.79 F 1.686 -.15(ve s)-.25 H 1.386 -(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15(xe)-.15 G -1.387(cute the \214le speci\214ed as an).15 F(ar)184 588 Q -(gument to the)-.18 E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E -(An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 -E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 600 Q F0 -.717(If set, aliases are e)184 612 R .717(xpanded as described abo)-.15 -F 1.017 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(ALIASES)3.217 E -/F4 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F -(by def)184 624 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 636 Q(ug)-.2 E F0(If set, beha)184 648 Q -(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 -660 Q F0(The)28.5 E F14.25 E F0 1.75(option to the)4.25 F F1 -(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 -(iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 672 Q -(gument.)-.18 E F1(2.)184 684 Q F0 1.667(If the command run by the)28.5 -F F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 696 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 708 Q F0 .84 -(If the command run by the)28.5 F F1(DEB)3.34 E(UG)-.1 E F0 .841 -(trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 -(exe)220 720 S .488 -(cuting in a subroutine \(a shell function or a shell script e).15 F --.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(68)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(braceexpand)184 84 Q F0(Same as)224 96 Q F12.5 E F0(.)A F1 +(emacs)184 108 Q F0 .089(Use an emacs-style command line editing interf) +224 108 R 2.589(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 +E .95(when the shell is interacti)224 120 R -.15(ve)-.25 G 3.45(,u).15 G +.95(nless the shell is started with the)-3.45 F F1(\255\255noediting) +3.45 E F0 2.5(option. This)224 132 R(also af)2.5 E +(fects the editing interf)-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G +(ad \255e).18 E F0(.)A F1(err)184 144 Q(exit)-.18 E F0(Same as)224 144 Q +F12.5 E F0(.)A F1(errtrace)184 156 Q F0(Same as)224 156 Q F1 +2.5 E F0(.)A F1(functrace)184 168 Q F0(Same as)224 180 Q F12.5 E +F0(.)A F1(hashall)184 192 Q F0(Same as)224 192 Q F12.5 E F0(.)A F1 +(histexpand)184 204 Q F0(Same as)224 216 Q F12.5 E F0(.)A F1 +(history)184 228 Q F0 .586(Enable command history)224 228 R 3.087(,a) +-.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 +H(nder).15 E/F2 9/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9 +/Times-Roman@0 SF(.)A F0 .587(This option is)5.087 F(on by def)224 240 Q +(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 +252 Q(eeof)-.18 E F0 1.657(The ef)224 264 R 1.657 +(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10) +4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224 +276 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) +.15 E F1 -.1(ke)184 288 S(yw).1 E(ord)-.1 E F0(Same as)224 300 Q F1 +2.5 E F0(.)A F1(monitor)184 312 Q F0(Same as)224 312 Q F12.5 +E F0(.)A F1(noclob)184 324 Q(ber)-.1 E F0(Same as)224 336 Q F12.5 +E F0(.)A F1(noexec)184 348 Q F0(Same as)224 348 Q F12.5 E F0(.)A +F1(noglob)184 360 Q F0(Same as)224 360 Q F12.5 E F0(.)A F1(nolog) +184 372 Q F0(Currently ignored.)224 372 Q F1(notify)184 384 Q F0 +(Same as)224 384 Q F12.5 E F0(.)A F1(nounset)184 396 Q F0(Same as) +224 396 Q F12.5 E F0(.)A F1(onecmd)184 408 Q F0(Same as)224 408 Q +F12.5 E F0(.)A F1(ph)184 420 Q(ysical)-.15 E F0(Same as)224 420 Q +F12.5 E F0(.)A F1(pipefail)184 432 Q F0 1.029 +(If set, the return v)224 432 R 1.029(alue of a pipeline is the v)-.25 F +1.03(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 444 +R 1.136 +(xit with a non-zero status, or zero if all commands in the pipeline) +-.15 F -.15(ex)224 456 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 468 Q F0 +2.09(Change the beha)224 468 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 +(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 +480 R/F5 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B F2 +1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E 2.306 +(for a reference to a document that details ho)224 492 R 4.807(wp)-.25 G +2.307(osix mode af)-4.807 F 2.307(fects bash')-.25 F(s)-.55 E(beha)224 +504 Q(vior)-.2 E(.)-.55 E F1(pri)184 516 Q(vileged)-.1 E F0(Same as)224 +528 Q F12.5 E F0(.)A F1 -.1(ve)184 540 S(rbose).1 E F0(Same as)224 +540 Q F12.5 E F0(.)A F1(vi)184 552 Q F0 1.466 +(Use a vi-style command line editing interf)224 552 R 3.965(ace. This) +-.1 F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F(interf)224 +564 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 +(xtrace)184 576 Q F0(Same as)224 576 Q F12.5 E F0(.)A(If)184 594 Q +F13.052 E F0 .552(is supplied with no)3.052 F F5(option\255name) +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)184 630 S 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.4)72 768 Q +(2016 August 26)142.895 E(68)192.055 E 0 Cg EP %%Page: 69 69 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(sour)220 84 Q(ce)-.18 E F0 -.2(bu)2.5 G -(iltins\), a call to).2 E F1 -.18(re)2.5 G(tur).18 E(n)-.15 E F0 -(is simulated.)2.5 E F1(4.)184 96 Q/F2 9/Times-Bold@0 SF -.27(BA)28.5 G -(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 -(are updated as described in their descriptions)3.154 F(abo)220 108 Q --.15(ve)-.15 G(.).15 E F1(5.)184 120 Q F0 1.359 -(Function tracing is enabled:)28.5 F 1.359 -(command substitution, shell functions, and sub-)6.359 F(shells in)220 -132 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E/F3 10 -/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1 -(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0(traps.)2.5 E F1(6.) -184 144 Q F0 .804(Error tracing is enabled:)28.5 F .805 -(command substitution, shell functions, and subshells)5.804 F(in)220 156 -Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3 -(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.) -2.5 E F1(extglob)144 168 Q F0 .4(If set, the e)8.89 F .4 -(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 180 Q -F0(are enabled.)2.5 E F1(extquote)144 192 Q F0 2.473(If set,)184 204 R -F1($)4.973 E F0<08>A F3(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 -E F0(")A F3(string)A F0 4.973("q)C 2.473(uoting is performed within) --4.973 F F1(${)4.973 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G -(pansions).15 E(enclosed in double quotes.)184 216 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 228 Q F0 -1.425(If set, patterns which f)7.77 F 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.424 -(xpansion result in an)-.15 F -.15(ex)184 240 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 252 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.936(If set, the suf)184 264 R<8c78>-.25 E .936(es speci\214ed by the) --.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) --.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 276 R .32 -(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 -(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 -(pletions. See)184 288 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 -(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 -(FIGNORE)2.948 E/F4 9/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 -F(enabled by def)184 300 Q(ault.)-.1 E F1(globasciiranges)144 312 Q F0 -2.519(If set, range e)184 324 R 2.519 -(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 -(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E -(Matching)184 336 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) --3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 -(nt)-3.214 G .714(he traditional C locale when performing comparisons.) --3.214 F 1.02(That is, the current locale')184 348 R 3.52(sc)-.55 G 1.02 -(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 -(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 360 R F1(A) -3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)-3.457 F -.957(-case and lo)-.2 F(wer)-.25 E .957 -(-case ASCII characters will collate)-.2 F(together)184 372 Q(.)-.55 E -F1(globstar)144 384 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 396 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 -408 Q F1(gnu_errfmt)144 420 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 432 Q F1(histappend)144 -444 Q F0 .676 -(If set, the history list is appended to the \214le named by the v)184 -456 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 468 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 480 Q(eedit)-.18 -E F0 .575(If set, and)184 492 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 504 Q F1(histv)144 516 Q(erify)-.1 E F0 .403 -(If set, and)184 528 R F1 -.18(re)2.903 G(adline).18 E F0 .403 -(is being used, the results of history substitution are not immediately) -2.903 F .661(passed to the shell parser)184 540 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 552 S -.25(ff).2 G(er).25 E -2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1 -(hostcomplete)144 564 Q F0 1.182(If set, and)184 576 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 -588 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 600 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 612 Q F0(If set,) -184 624 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 636 Q -.1(ve)-.1 G(_comments).1 E F0 -.33(If set, allo)184 648 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 660 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 672 Q -(ault.)-.1 E F1(lastpipe)144 684 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 696 S(cuted in the background in the current shell en).15 E -(vironment.)-.4 E F1(lithist)144 708 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 720 Q -(wlines rather than using semicolon separators where possible.)-.25 E -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(69)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0(Exit after reading and e)184 84 Q -.15(xe)-.15 G +(cuting one command.).15 E F1144 96 Q F0 -.35(Tr)184 96 S .044 +(eat unset v).35 F .044(ariables and parameters other than the special \ +parameters "@" and "*" as an)-.25 F .182 +(error when performing parameter e)184 108 R 2.682(xpansion. If)-.15 F +-.15(ex)2.682 G .183(pansion is attempted on an unset v).15 F(ari-)-.25 +E .746(able or parameter)184 120 R 3.246(,t)-.4 G .746 +(he shell prints an error message, and, if not interacti)-3.246 F -.15 +(ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 +132 Q F1144 144 Q F0(Print shell input lines as the)184 144 Q 2.5 +(ya)-.15 G(re read.)-2.5 E F1144 156 Q F0 .315(After e)184 156 R +.315(xpanding each)-.15 F/F2 10/Times-Italic@0 SF .315(simple command) +2.815 F F0(,)A F1 -.25(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case) +2.815 E F0(command,)2.815 E F1(select)2.815 E F0(command,)2.815 E 1.236 +(or arithmetic)184 168 R F1 -.25(fo)3.736 G(r).25 E F0 1.236 +(command, display the e)3.736 F 1.236(xpanded v)-.15 F 1.236(alue of) +-.25 F/F3 9/Times-Bold@0 SF(PS4)3.736 E/F4 9/Times-Roman@0 SF(,)A F0 +(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 180 Q +(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 +144 192 Q F0 2.578(The shell performs brace e)184 192 R 2.578 +(xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E +-.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 204 Q +(ault.)-.1 E F1144 216 Q F0 .214(If set,)184 216 R F1(bash)2.714 E +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)184 252 R 2.604(yt)-.15 G .104 +(rap on)-2.604 F F1(ERR)2.604 E F0 .103 +(is inherited by shell functions, command substitutions, and com-)2.604 +F .838(mands e)184 264 R -.15(xe)-.15 G .838(cuted in a subshell en).15 +F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839 +(trap is normally not inherited in)3.339 F(such cases.)184 276 Q F1 +144 288 Q F0(Enable)184 288 Q F1(!)3.032 E F0 .532 +(style history substitution.)5.532 F .531(This option is on by def)5.532 +F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 300 Q -.15 +(ve)-.25 G(.).15 E F1144 312 Q F0 .959 +(If set, the shell does not resolv)184 312 R 3.459(es)-.15 G .959 +(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)184 360 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 +(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 +(are inherited by shell functions, command)3.39 F 1.932 +(substitutions, and commands e)184 372 R -.15(xe)-.15 G 1.932 +(cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 384 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 396 Q +F0 .401(If no ar)184 396 R .401(guments follo)-.18 F 2.901(wt)-.25 G +.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)184 420 R +F2(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.445(ea)-4.444 G +1.945(ssigned to the positional)-4.445 F 3.446(parameters. The)184 432 R +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 .64(ggle the v).8 F .639 +(alues of settings controlling optional shell beha)-.25 F(vior)-.2 E +5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374 +(listed belo)144 614.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H +2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 +(option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 +F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 +(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 626.4 R .826 +(ith no options, or with the)-.4 F F13.326 E F0 .825 +(option, a list of all settable options is displayed, with an)3.326 F +.945(indication of whether or not each is set.)144 638.4 R(The)5.945 E +F13.445 E F0 .945(option causes output to be displayed in a form) +3.445 F(that may be reused as input.)144 650.4 Q(Other options ha)5 E .3 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 662.4 Q +F0(Enable \(set\) each)180 662.4 Q F2(optname)2.5 E F0(.)A F1144 +674.4 Q F0(Disable \(unset\) each)180 674.4 Q F2(optname)2.5 E F0(.)A F1 +144 686.4 Q F0 .003(Suppresses normal output \(quiet mode\); the \ +return status indicates whether the)180 686.4 R F2(optname)2.503 E F0 +(is)2.503 E .255(set or unset.)180 698.4 R .255(If multiple)5.255 F F2 +(optname)2.755 E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G +2.756(nw).15 G(ith)-2.756 E F12.756 E F0 2.756(,t)C .256 +(he return status is zero if)-2.756 F(all)180 710.4 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E(GNU Bash 4.4)72 768 Q +(2016 August 26)142.895 E(69)192.055 E 0 Cg EP %%Page: 70 70 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(login_shell)144 84 Q F0 .486 -(The shell sets this option if it is started as a login shell \(see)184 -96 R/F2 9/Times-Bold@0 SF(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 108 S -(lue may not be changed.).25 E F1(mailwar)144 120 Q(n)-.15 E F0 .814 -(If set, and a \214le that)184 132 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 144 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 156 Q F0 .325(If set, and)184 168 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 180 Q F1 -(nocaseglob)144 192 Q F0 .436(If set,)184 204 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 216 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 228 Q F0 1.194(If set,)184 -240 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 252 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 264 Q F0 -.854(If set,)184 276 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 288 S(pand to a null string, rather than themselv) -.15 E(es.)-.15 E F1(pr)144 300 Q(ogcomp)-.18 E F0 .677 -(If set, the programmable completion f)184 312 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 324 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 336 Q(omptv) --.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 348 R 1.448 -(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic) --.15 F -.15(ex)184 360 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 372 Q(ault.)-.1 E F1 -.18(re)144 384 -S(stricted_shell).18 E F0 1.069 -(The shell sets this option if it is started in restricted mode \(see) -184 396 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 408 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 420 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 432 Q(erbose)-.1 E F0 .501(If set, the)184 444 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 456 Q F1(sour) -144 468 Q(cepath)-.18 E F0 .771(If set, the)184 480 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 492 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) --.1 E F1(xpg_echo)144 504 Q F0(If set, the)184 516 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 532.8 Q F0([)2.5 E F1A F0(])A 1.001 -(Suspend the e)144 544.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 556.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 568.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 585.6 Q F3 -.2(ex)2.5 G(pr).2 E F1([)108 597.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 609.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 621.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 633.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 651.6 R .785 -(wing operators, listed in decreasing order of prece-)-.25 F 3.411 -(dence. The)144 663.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 675.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 687.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 699.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 711.6 Q -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(70)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0(Restricts the v)180 84 Q(alues of)-.25 E/F2 10 +/Times-Italic@0 SF(optname)2.5 E F0(to be those de\214ned for the)2.5 E +F12.5 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G +(iltin.).2 E .625(If either)144 100.8 R F13.125 E F0(or)3.124 E F1 +3.124 E F0 .624(is used with no)3.124 F F2(optname)3.124 E F0(ar) +3.124 E(guments,)-.18 E F1(shopt)3.124 E F0(sho)3.124 E .624 +(ws only those options which are)-.25 F 2.233(set or unset, respecti)144 +112.8 R -.15(ve)-.25 G(ly).15 E 7.234(.U)-.65 G 2.234 +(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 2.234 +(options are disabled \(unset\) by)4.734 F(def)144 124.8 Q(ault.)-.1 E +1.544(The return status when listing options is zero if all)144 141.6 R +F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)4.044 F +.696 +(When setting or unsetting options, the return status is zero unless an) +144 153.6 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696 +(alid shell)-.25 F(option.)144 165.6 Q(The list of)144 182.4 Q F1(shopt) +2.5 E F0(options is:)2.5 E F1(autocd)144 200.4 Q F0 .2 +(If set, a command name that is the name of a directory is e)184 200.4 R +-.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E +(ment to the)184 212.4 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +(option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E +F1(cdable_v)144 224.4 Q(ars)-.1 E F0 .155(If set, an ar)184 236.4 R .155 +(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156 +(iltin command that is not a directory is assumed to be the).2 F +(name of a v)184 248.4 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 260.4 Q F0 +1.055 +(If set, minor errors in the spelling of a directory component in a)184 +260.4 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 +(corrected. The)184 272.4 R 1.487(errors check)3.987 F 1.487 +(ed for are transposed characters, a missing character)-.1 F 3.988(,a) +-.4 G(nd)-3.988 E .77(one character too man)184 284.4 R 4.57 -.65(y. I) +-.15 H 3.27(fac).65 G .77 +(orrection is found, the corrected \214lename is printed, and)-3.27 F +(the command proceeds.)184 296.4 Q +(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(checkhash)144 308.4 Q F0 .736(If set,)184 320.4 R F1(bash)3.236 +E F0 .736(checks that a command found in the hash table e)3.236 F .737 +(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 +332.4 Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 344.4 +Q F0 .449(If set,)184 356.4 R F1(bash)2.949 E F0 .449 +(lists the status of an)2.949 F 2.949(ys)-.15 G .448 +(topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15 +F -.15(ve)-.25 G 3.438(shell. If)184 368.4 R(an)3.438 E 3.438(yj)-.15 G +.938(obs are running, this causes the e)-3.438 F .938 +(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203 +(attempted without an interv)184 380.4 R 2.203(ening command \(see)-.15 +F/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 392.4 Q -.1(wa) +-.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G +(obs are stopped.)-2.5 E F1(checkwinsize)144 404.4 Q F0 .796(If set,)184 +416.4 R F1(bash)3.296 E F0 .796(checks the windo)3.296 F 3.296(ws)-.25 G +.797(ize after each command and, if necessary)-3.296 F 3.297(,u)-.65 G +.797(pdates the)-3.297 F -.25(va)184 428.4 S(lues of).25 E F3(LINES)2.5 +E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist) +144 440.4 Q F0 1.202(If set,)184 440.4 R F1(bash)3.702 E F0 1.202 +(attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 +(ll lines of a multiple-line command in the same history).15 F(entry)184 +452.4 Q 5(.T)-.65 G(his allo)-5 E +(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 464.4 +Q F0 .419(If set,)184 476.4 R F1(bash)2.919 E F0 .419(changes its beha) +2.919 F .419(vior to that of v)-.2 F .42 +(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .462(to the) +184 488.4 R F1([[)2.962 E F0 .462(conditional command')2.962 F(s)-.55 E +F1(=~)2.962 E F0 .462 +(operator and locale-speci\214c string comparison when)2.962 F .71 +(using the)184 500.4 R F1([[)3.21 E F0 .71(conditional command')3.21 F +(s)-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) +3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .821 +(use ASCII collation and)184 512.4 R F2(str)3.321 E(cmp)-.37 E F0 .821 +(\(3\); bash-4.1 and later use the current locale').19 F 3.32(sc)-.55 G +(ollation)-3.32 E(sequence and)184 524.4 Q F2(str)2.5 E(coll)-.37 E F0 +(\(3\).).51 E F1(compat32)144 536.4 Q F0 1.409(If set,)184 548.4 R F1 +(bash)3.909 E F0 1.409(changes its beha)3.909 F 1.409(vior to that of v) +-.2 F 1.41(ersion 3.2 with respect to locale-speci\214c)-.15 F .423 +(string comparison when using the)184 560.4 R F1([[)2.922 E F0 .422 +(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) +2.922 E F0 .422(operators \(see pre-)2.922 F .48 +(vious item\) and the ef)184 572.4 R .481 +(fect of interrupting a command list.)-.25 F .481(Bash v)5.481 F .481 +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 584.4 Q +(xt command in the list after one terminates due to an interrupt.)-.15 E +F1(compat40)144 596.4 Q F0 1.41(If set,)184 608.4 R F1(bash)3.91 E F0 +1.41(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409 +(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.007 +(string comparison when using the)184 620.4 R F1([[)4.507 E F0 2.008 +(conditional command')4.507 F(s)-.55 E F1(<)4.508 E F0(and)4.508 E F1(>) +4.508 E F0 2.008(operators \(see)4.508 F .77(description of)184 632.4 R +F1(compat31)3.27 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 +(fect of interrupting a command list.)-.25 F .769(Bash v)5.769 F +(ersions)-.15 E .086 +(4.0 and later interrupt the list as if the shell recei)184 644.4 R -.15 +(ve)-.25 G 2.587(dt).15 G .087(he interrupt; pre)-2.587 F .087(vious v) +-.25 F .087(ersions con-)-.15 F(tinue with the ne)184 656.4 Q +(xt command in the list.)-.15 E F1(compat41)144 668.4 Q F0 1.484 +(If set,)184 680.4 R F1(bash)3.984 E F0 3.984(,w)C 1.484(hen in)-3.984 F +F2(posix)3.984 E F0 1.483 +(mode, treats a single quote in a double-quoted parameter)3.984 F -.15 +(ex)184 692.4 S .958(pansion as a special character).15 F 5.958(.T)-.55 +G .959(he single quotes must match \(an e)-5.958 F -.15(ve)-.25 G 3.459 +(nn).15 G .959(umber\) and)-3.459 F .59 +(the characters between the single quotes are considered quoted.)184 +704.4 R .59(This is the beha)5.59 F .59(vior of)-.2 F .589 +(posix mode through v)184 716.4 R .589(ersion 4.1.)-.15 F .589(The def) +5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .59 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 728.4 Q(GNU Bash 4.4)72 768 +Q(2016 August 26)142.895 E(70)192.055 E 0 Cg EP %%Page: 71 71 %%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 -.2(ex)144 84 S(pr1).2 E F02.5 E/F2 -10/Times-Bold@0 SF(a)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 96 S -(ue if both).35 E F1 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F1 -.2(ex)2.5 G -(pr2).2 E F0(are true.)2.52 E F1 -.2(ex)144 108 S(pr1).2 E F02.5 E -F2(o)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 120 S(ue if either).35 E -F1 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0 -(is true.)2.52 E F2(test)144 136.8 Q F0(and)2.5 E F2([)2.5 E F0 -.25 -(eva)2.5 G(luate conditional e).25 E -(xpressions using a set of rules based on the number of ar)-.15 E -(guments.)-.18 E 2.5(0a)144 154.8 S -.18(rg)-2.5 G(uments).18 E(The e) -180 166.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 178.8 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 190.8 Q -(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 202.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 214.8 R .37(gument is)-.18 F F2(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 -F .37(xpression is true if and only if the second ar)-.15 F .37 -(gument is null.)-.18 F .38(If the \214rst ar)180 226.8 R .38 -(gument is one of the unary conditional operators listed abo)-.18 F .679 --.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180 -238.8 Q .552(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552 -(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F -.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 250.8 Q -(alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E -(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 262.8 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 274.8 R .236 -(wing conditions are applied in the order listed.)-.25 F .236 -(If the second ar)5.236 F .236(gument is one of)-.18 F .855 -(the binary conditional operators listed abo)180 286.8 R 1.155 -.15 -(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F -F4(,)A F0(the)3.105 E .579(result of the e)180 298.8 R .578(xpression i\ -s the result of the binary test using the \214rst and third ar)-.15 F -(guments)-.18 E 1.332(as operands.)180 310.8 R(The)6.332 E F23.832 -E F0(and)3.832 E F23.832 E F0 1.333 -(operators are considered binary operators when there are)3.832 F .558 -(three ar)180 322.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 -F .558(gument is)-.18 F F2(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F -.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F -(o-ar)-.1 E(gument)-.18 E .52(test using the second and third ar)180 -334.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .521 -(gument is e)-.18 F(xactly)-.15 E F2(\()3.021 E F0 .521(and the third) -3.021 F(ar)180 346.8 Q .485(gument is e)-.18 F(xactly)-.15 E F2(\))2.985 -E F0 2.985(,t)C .485(he result is the one-ar)-2.985 F .485 -(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E -(wise, the e)180 358.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 -370.8 S -.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 382.8 R -.384(gument is)-.18 F F2(!)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 394.8 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 -406.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 418.8 S 2.5(rm)-2.5 G(ore ar) --2.5 E(guments)-.18 E 1.635(The e)180 430.8 R 1.635 -(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635 -(luated according to precedence using the rules listed).25 F(abo)180 -442.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 460.8 Q F2(test)2.5 E -F0(or)2.5 E F2([)2.5 E F0 2.5(,t)C(he)-2.5 E F2(<)2.5 E F0(and)2.5 E F2 -(>)2.5 E F0(operators sort le)2.5 E -(xicographically using ASCII ordering.)-.15 E F2(times)108 477.6 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 489.6 -Q F2(trap)108 506.4 Q F0([)2.5 E F2(\255lp)A F0 2.5(][)C([)-2.5 E F1(ar) -A(g)-.37 E F0(])A F1(sigspec)2.5 E F0(...])2.5 E .702(The command)144 -518.4 R F1(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 F1(sigspec)3.203 E F0 5.703(.I).31 G(f) --5.703 E F1(ar)3.533 E(g)-.37 E F0(is)3.423 E .609 -(absent \(and there is a single)144 530.4 R F1(sigspec)3.108 E F0 3.108 -(\)o)C(r)-3.108 E F23.108 E F0 3.108(,e)C .608 -(ach speci\214ed signal is reset to its original disposition)-3.108 F -.658(\(the v)144 542.4 R .658(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F1(ar)3.488 E(g)-.37 E F0 .659 -(is the null string the signal speci\214ed by each)3.378 F F1(sigspec) -144.34 554.4 Q F0 .581 -(is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G --.1(ke).2 G 3.08(s. If).1 F F1(ar)3.41 E(g)-.37 E F0 .58 -(is not present and)3.3 F F23.08 E F0(has)3.08 E 1.214 -(been supplied, then the trap commands associated with each)144 566.4 R -F1(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 -F(gu-)-.18 E .86(ments are supplied or if only)144 578.4 R F23.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F2(trap)3.36 E F0 .86 -(prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 590.4 R F22.83 E F0 .33(option causes the shell \ -to print a list of signal names and their corresponding num-)2.83 F -4.311(bers. Each)144 602.4 R F1(sigspec)4.651 E F0 1.811 -(is either a signal name de\214ned in <)4.621 F F1(signal.h)A F0 1.81 -(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E -(names are case insensiti)144 614.4 Q .3 -.15(ve a)-.25 H(nd the).15 E -F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)144 632.4 R F1 -(sigspec)4.488 E F0(is)4.458 E F3(EXIT)4.148 E F0 1.648 -(\(0\) the command)3.898 F F1(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 F1(sigspec)4.489 E F0(is)4.459 E F3(DEB)144 644.4 Q -(UG)-.09 E F4(,)A F0 1.168(the command)3.418 F F1(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 F1 1.167(simple command)3.667 F F0(,)A F1(for)3.667 E F0 -(command,)3.667 E F1(case)3.667 E F0(com-)3.667 E(mand,)144 656.4 Q F1 -(select)2.646 E F0 .146(command, e)2.646 F -.15(ve)-.25 G .146 -(ry arithmetic).15 F F1(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 668.4 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 F2(extdeb)2.645 E(ug)-.2 E F0 -.145(option to)2.645 F(the)144 680.4 Q F2(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 F2(DEB)3.2 E(UG) --.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E F0(is)3.51 E F3 -(RETURN)3.2 E F4(,)A F0 .701(the com-)2.951 F(mand)144 692.4 Q F1(ar) -3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643 -(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.643(cuted with the).15 F F2(.)3.143 E F0(or)3.143 E F2(sour)3.143 E(ce) --.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 704.4 Q -.15(xe) --.15 G(cuting.).15 E .521(If a)144 722.4 R F1(sigspec)3.361 E F0(is) -3.331 E F3(ERR)3.021 E F4(,)A F0 .522(the command)2.771 F F1(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(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(71)190.95 E 0 Cg -EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(compat42)144 84 Q F0 1.797(If set,)184 96 R F1(bash)4.297 E F0 1.796 +(does not process the replacement string in the pattern substitution w) +4.296 F(ord)-.1 E -.15(ex)184 108 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F1(compat43)144 120 Q F0 .14(If set,)184 132 R F1 +(bash)2.64 E F0 .14(does not print a w)2.64 F .141 +(arning message if an attempt is made to use a quoted com-)-.1 F .913 +(pound array assignment as an ar)184 144 R .913(gument to)-.18 F F1 +(declar)3.412 E(e)-.18 E F0 3.412(,m)C(ak)-3.412 E .912(es w)-.1 F .912 +(ord e)-.1 F .912(xpansion errors non-)-.15 F -.1(fa)184 156 S .352 +(tal errors that cause the current command to f).1 F .353(ail \(the def) +-.1 F .353(ault beha)-.1 F .353(vior is to mak)-.2 F 2.853(et)-.1 G(hem) +-2.853 E -.1(fa)184 168 S 1.058(tal errors that cause the shell to e).1 +F 1.057(xit\), and does not reset the loop state when a shell)-.15 F +.374(function is e)184 180 R -.15(xe)-.15 G .374(cuted \(this allo).15 F +(ws)-.25 E F1(br)2.874 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0 +.375(in a shell function to af)2.875 F .375(fect loops in)-.25 F +(the caller')184 192 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 +(complete_fullquote)144 204 Q F0 .654(If set,)184 216 R F1(bash)3.153 E +F0 .653(quotes all shell metacharacters in \214lenames and directory na\ +mes when per)3.153 F(-)-.2 E 1.524(forming completion.)184 228 R 1.524 +(If not set,)6.524 F F1(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G +4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F +2.667(from the set of characters that will be quoted in completed \214l\ +enames when these)184 240 R .028(metacharacters appear in shell v)184 +252 R .028(ariable references in w)-.25 F .029(ords to be completed.)-.1 +F .029(This means)5.029 F 1.073(that dollar signs in v)184 264 R 1.073 +(ariable names that e)-.25 F 1.073 +(xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 +(ev e)184 276 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ollar signs appearing in \214lenames will not be quoted, either).15 F +6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 +(only when bash is using backslashes to quote completed \214lenames.)184 +288 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 300 Q +(ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E +(ersions through 4.2.)-.15 E F1(dir)144 312 Q(expand)-.18 E F0 .486 +(If set,)184 324 R F1(bash)2.986 E F0 .486 +(replaces directory names with the results of w)2.986 F .486(ord e)-.1 F +.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 +336 R .179(This changes the contents of the readline editing b)5.18 F +(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) +184 348 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F1(dirspell)144 360 Q F0 .858(If set,)184 +360 R F1(bash)3.358 E F0 .858 +(attempts spelling correction on directory names during w)3.358 F .859 +(ord completion if)-.1 F +(the directory name initially supplied does not e)184 372 Q(xist.)-.15 E +F1(dotglob)144 384 Q F0(If set,)184 384 Q F1(bash)2.5 E F0 +(includes \214lenames be)2.5 E(ginning with a `.)-.15 E 2.5('i)-.7 G 2.5 +(nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F1(execfail) +144 396 Q F0 1.387(If set, a non-interacti)184 396 R 1.687 -.15(ve s) +-.25 H 1.386(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15 +(xe)-.15 G 1.386(cute the \214le speci\214ed as an).15 F(ar)184 408 Q +(gument to the)-.18 E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E +(An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 +E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 420 Q F0 +.716(If set, aliases are e)184 432 R .717(xpanded as described abo)-.15 +F 1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E +/F3 9/Times-Roman@0 SF(.)A F0 .717(This option is enabled)5.217 F +(by def)184 444 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(extdeb)144 456 Q(ug)-.2 E F0 .672(If set at shell in)184 468 R +-.2(vo)-.4 G .672(cation, arrange to e).2 F -.15(xe)-.15 G .671 +(cute the deb).15 F .671(ugger pro\214le before the shell starts,)-.2 F +.22(identical to the)184 480 R F12.72 E(ugger)-.2 E F0 2.721 +(option. If)2.721 F .221(set after in)2.721 F -.2(vo)-.4 G .221 +(cation, beha).2 F .221(vior intended for use by)-.2 F(deb)184 492 Q +(uggers is enabled:)-.2 E F1(1.)184 504 Q F0(The)220 504 Q F14.251 +E F0 1.751(option to the)4.251 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu) +4.251 G 1.751(iltin displays the source \214le name and line).2 F +(number corresponding to each function name supplied as an ar)220 516 Q +(gument.)-.18 E F1(2.)184 528 Q F0 1.667(If the command run by the)220 +528 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F +1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 540 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 552 Q F0 .841 +(If the command run by the)220 552 R F1(DEB)3.341 E(UG)-.1 E F0 .841 +(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 +(exe)220 564 S .488 +(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\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E +(n)-.15 E F0(.)A F1(4.)184 588 Q F2 -.27(BA)220 588 S(SH_ARGC).27 E F0 +(and)3.154 E F2 -.27(BA)3.404 G(SH_ARGV).27 E F0 .904 +(are updated as described in their descriptions)3.154 F(abo)220 600 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 612 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 612 R +(shells in)220 624 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 +(inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 +(traps.)2.5 E F1(6.)184 636 Q F0 1.082(Error tracing is enabled: comman\ +d substitution, shell functions, and subshells)220 636 R(in)220 648 Q +-.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4(command) +2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1 +(extglob)144 660 Q F0 .4(If set, the e)184 660 R .4 +(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.4)72 768 Q +(2016 August 26)142.895 E(71)192.055 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 .185(single simple command\), a list, or a compound command retu\ -rns a non\255zero e)144 84 R .184(xit status, subject to)-.15 F .451 -(the follo)144 96 R .451(wing conditions.)-.25 F(The)5.451 E/F1 9 -/Times-Bold@0 SF(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 108 R .388(wing a)-.25 F/F2 10 -/Times-Bold@0 SF(while)2.888 E F0(or)2.888 E F2(until)2.888 E F0 -.1(ke) -2.888 G(yw)-.05 E .388(ord, part of the test in an)-.1 F/F3 10 -/Times-Italic@0 SF(if)2.897 E F0 .387(statement, part)4.847 F .777 -(of a command e)144 120 R -.15(xe)-.15 G .778(cuted in a).15 F F2(&&) -3.278 E F0(or)3.278 E F2(||)3.278 E F0 .778(list e)3.278 F .778 -(xcept the command follo)-.15 F .778(wing the \214nal)-.25 F F2(&&)3.278 -E F0(or)3.278 E F2(||)3.278 E F0 3.278(,a)C -.15(ny)-3.278 G 1.28 -(command in a pipeline b)144 132 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 F2(!)3.78 E F0(.)A -(These are the same conditions obe)144 144 Q(yed by the)-.15 E F2(err) -2.5 E(exit)-.18 E F0(\()2.5 E F2A F0 2.5(\)o)C(ption.)-2.5 E 1.095 -(Signals ignored upon entry to the shell cannot be trapped or reset.)144 -162 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 174 R .662 -(alues in a subshell or subshell en)-.25 F .661(vironment when one is) --.4 F 2.5(created. The)144 186 R(return status is f)2.5 E(alse if an)-.1 -E(y)-.15 E F3(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G -(lid; otherwise).25 E F2(trap)2.5 E F0(returns true.)2.5 E F2(type)108 -202.8 Q F0([)2.5 E F2(\255aftpP)A F0(])A F3(name)2.5 E F0([)2.5 E F3 -(name)A F0(...])2.5 E -.4(Wi)144 214.8 S .173 -(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F3(name) -3.033 E F0 -.1(wo)2.853 G .174 -(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F -F2144 226.8 Q F0 .843(option is used,)3.343 F F2(type)3.343 E F0 -.843(prints a string which is one of)3.343 F F3(alias)3.343 E F0(,).27 E -F3 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F3(function)3.343 E F0 -(,).24 E F3 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F3 -(\214le)5.252 E F0(if)3.522 E F3(name)144.36 238.8 Q F0 .086 -(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086 -(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F3 -(name)2.947 E F0 .087(is not)2.767 F .119 -(found, then nothing is printed, and an e)144 250.8 R .118 -(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F -F22.618 E F0 .118(option is used,)2.618 F F2(type)2.618 E F0 .855 -(either returns the name of the disk \214le that w)144 262.8 R .855 -(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F3(name)3.715 E F0 -.855(were speci\214ed as a com-)3.535 F .641(mand name, or nothing if) -144 274.8 R/F4 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141 -G .641(uld not return).1 F F3(\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 F1 -.666(PA)3.14 G(TH)-.189 -E F0 .112(search for each)144 286.8 R F3(name)2.612 E F0 2.612(,e)C -.15 -(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E F4 .113(type -t name)2.613 F F0 --.1(wo)2.613 G .113(uld not return).1 F F3(\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 298.8 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 F1 -.666(PA)3.23 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .73 -(If the)5.23 F F2144 310.8 Q F0 1.748(option is used,)4.248 F F2 -(type)4.248 E F0 1.748(prints all of the places that contain an e)4.248 -F -.15(xe)-.15 G 1.748(cutable named).15 F F3(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 322.8 R F2 -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 334.8 R F23.723 E F0 6.223(.T)C(he)-6.223 E F23.723 E F0 -1.223(option suppresses shell function lookup, as)3.723 F .326(with the) -144 346.8 R F2(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F2(type) -5.326 E F0 .326(returns true if all of the ar)2.826 F .325 -(guments are found, f)-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325 -(re not)-2.825 F(found.)144 358.8 Q F2(ulimit)108 375.6 Q F0([)2.5 E F2 -(\255HST)A(abcde\214lmnpqrstuvx)-.92 E F0([)2.5 E F3(limit)A F0(]])A -(Pro)144 387.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 -G .243(he resources a)-2.743 F -.25(va)-.2 G .244 -(ilable to the shell and to processes started by it, on systems).25 F -.944(that allo)144 399.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F -(The)5.944 E F23.444 E F0(and)3.444 E F23.444 E F0 .943 -(options specify that the hard or soft limit is set for the)3.444 F(gi) -144 411.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 -(hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.708 F .426(be increased up to the v)144 423.6 R .426 -(alue of the hard limit.)-.25 F .425(If neither)5.426 F F22.925 E -F0(nor)2.925 E F22.925 E F0 .425 -(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 -435.6 R .139(The v)5.139 F .139(alue of)-.25 F F3(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 447.6 R(alues)-.25 E F2(hard)3.242 E F0(,)A F2 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F2(unlimited)3.241 E F0 3.241(,w) -C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 459.6 R -.15(ve)-.25 G(ly).15 E -5.78(.I)-.65 G(f)-5.78 E F3(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 471.6 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 483.6 Q 2.5 -(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F2 -144 495.6 Q F0(All current limits are reported)25.3 E F2144 -507.6 Q F0(The maximum sock)24.74 E(et b)-.1 E(uf)-.2 E(fer size)-.25 E -F2144 519.6 Q F0(The maximum size of core \214les created)25.86 E -F2144 531.6 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 543.6 Q F0 -(The maximum scheduling priority \("nice"\))25.86 E F2144 555.6 Q -F0(The maximum size of \214les written by the shell and its children) -26.97 E F2144 567.6 Q F0(The maximum number of pending signals) -27.52 E F2144 579.6 Q F0(The maximum size that may be lock)27.52 E -(ed into memory)-.1 E F2144 591.6 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 603.6 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 615.6 Q F2144 627.6 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))24.74 E F2 -144 639.6 Q F0 -(The maximum number of bytes in POSIX message queues)24.74 E F2144 -651.6 Q F0(The maximum real-time scheduling priority)25.86 E F2144 -663.6 Q F0(The maximum stack size)26.41 E F2144 675.6 Q F0 -(The maximum amount of cpu time in seconds)26.97 E F2144 687.6 Q -F0(The maximum number of processes a)24.74 E -.25(va)-.2 G -(ilable to a single user).25 E F2144 699.6 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 -711.6 Q(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(72)190.95 E 0 Cg -EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(failglob)144 84 Q F0 1.424(If set, patterns which f)184 84 R 1.425 +(ail to match \214lenames during pathname e)-.1 F 1.425 +(xpansion result in an)-.15 F -.15(ex)184 96 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 108 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.937(If set, the suf)184 120 R<8c78>-.25 E .936(es speci\214ed by the) +-.15 F/F2 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936 +(ariable cause w)-.25 F .936(ords to be ignored)-.1 F .32 +(when performing w)184 132 R .32(ord completion e)-.1 F -.15(ve)-.25 G +2.82(ni).15 G 2.82(ft)-2.82 G .32(he ignored w)-2.82 F .32 +(ords are the only possible com-)-.1 F 2.948(pletions. See)184 144 R F2 +.448(SHELL V)2.948 F(ARIABLES)-1.215 E F0(abo)2.698 E .748 -.15(ve f) +-.15 H .448(or a description of).15 F F2(FIGNORE)2.947 E/F3 9 +/Times-Roman@0 SF(.)A F0 .447(This option is)4.947 F(enabled by def)184 +156 Q(ault.)-.1 E F1(globasciiranges)144 168 Q F0 2.518(If set, range e) +184 180 R 2.519(xpressions used in pattern matching brack)-.15 F 2.519 +(et e)-.1 F 2.519(xpressions \(see)-.15 F F2 -.09(Pa)5.019 G(tter).09 E +(n)-.135 E(Matching)184 192 Q F0(abo)2.965 E -.15(ve)-.15 G 3.215(\)b) +.15 G(eha)-3.215 E 1.015 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 +G 3.214(nt)-3.214 G .714 +(he traditional C locale when performing comparisons.)-3.214 F 1.02 +(That is, the current locale')184 204 R 3.52(sc)-.55 G 1.02 +(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 +(b)3.52 E F0 1.02(will not)3.52 F .957(collate between)184 216 R F1(A) +3.457 E F0(and)3.457 E F1(B)3.457 E F0 3.457(,a)C .957(nd upper)-3.457 F +.957(-case and lo)-.2 F(wer)-.25 E .956 +(-case ASCII characters will collate)-.2 F(together)184 228 Q(.)-.55 E +F1(globstar)144 240 Q F0 .518(If set, the pattern)184 240 R F1(**)3.018 +E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .519 +(xt will match all \214les and zero)-.15 F .432 +(or more directories and subdirectories.)184 252 R .431 +(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0 +2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184 +264 Q F1(gnu_errfmt)144 276 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 288 Q F1(histappend)144 +300 Q F0 .676 +(If set, the history list is appended to the \214le named by the v)184 +312 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G +(ri-).25 E(able when the shell e)184 324 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 336 Q(eedit)-.18 +E F0 .576(If set, and)184 348 R F1 -.18(re)3.076 G(adline).18 E F0 .575 +(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575 +(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F +(tory substitution.)184 360 Q F1(histv)144 372 Q(erify)-.1 E F0 .402 +(If set, and)184 384 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +(is being used, the results of history substitution are not immediately) +2.903 F .662(passed to the shell parser)184 396 R 5.662(.I)-.55 G .661 +(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161 +G(adline).18 E F0(editing)3.161 E -.2(bu)184 408 S -.25(ff).2 G(er).25 E +2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1 +(hostcomplete)144 420 Q F0 1.181(If set, and)184 432 R F1 -.18(re)3.681 +G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182 +(will attempt to perform hostname completion)3.682 F 1.381(when a w)184 +444 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E +F2(READLINE)3.88 E F0(abo)184 456 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 468 Q F0(If set,) +184 480 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 +(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) +.15 E(xits.)-.15 E F1(inherit_err)144 492 Q(exit)-.18 E F0 .219 +(If set, command substitution inherits the v)184 504 R .219(alue of the) +-.25 F F1(err)2.719 E(exit)-.18 E F0 .22(option, instead of unsetting) +2.719 F(it in the subshell en)184 516 Q 2.5(vironment. This)-.4 F +(option is enabled when)2.5 E/F4 10/Times-Italic@0 SF(posix mode)2.5 E +F0(is enabled.)2.5 E F1(interacti)144 528 Q -.1(ve)-.1 G(_comments).1 E +F0 .33(If set, allo)184 540 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 +(ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33 +(ord and all remaining characters on)-.1 F .967 +(that line to be ignored in an interacti)184 552 R 1.267 -.15(ve s)-.25 +H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 +G 3.467(\). This).15 F .968(option is)3.468 F(enabled by def)184 564 Q +(ault.)-.1 E F1(lastpipe)144 576 Q F0 .066 +(If set, and job control is not acti)184 576 R -.15(ve)-.25 G 2.566(,t) +.15 G .066(he shell runs the last command of a pipeline not e)-2.566 F +-.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) +184 588 Q(vironment.)-.4 E F1(lithist)144 600 Q F0 .654(If set, and the) +184 600 R F1(cmdhist)3.154 E F0 .654 +(option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G +3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F +(with embedded ne)184 612 Q +(wlines rather than using semicolon separators where possible.)-.25 E F1 +(login_shell)144 624 Q F0 .486 +(The shell sets this option if it is started as a login shell \(see)184 +636 R F2(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve) +-.15 G 2.986(\). The).15 F -.25(va)184 648 S(lue may not be changed.).25 +E F1(mailwar)144 660 Q(n)-.15 E F0 .814(If set, and a \214le that)184 +672 R F1(bash)3.314 E F0 .815 +(is checking for mail has been accessed since the last time it)3.314 F +-.1(wa)184 684 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E F4(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) +-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 696 +Q F0 .325(If set, and)184 708 R F1 -.18(re)2.825 G(adline).18 E F0 .325 +(is being used,)2.825 F F1(bash)2.824 E F0 .324 +(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)-.189 E +F0 .324(for possible)2.574 F +(completions when completion is attempted on an empty line.)184 720 Q +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(72)192.055 E 0 Cg EP %%Page: 73 73 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF144 84 Q F0 -(The maximum number of \214le locks)25.3 E F1144 96 Q F0 -(The maximum number of threads)23.63 E(If)144 112.8 Q/F2 10 -/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G -.468(n, and the).15 F F12.968 E F0 .468(option is not used,)2.968 -F F2(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 -(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045 -(no option is gi)144 124.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 -136.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 -148.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 -160.8 Q 2.5(wl)-.25 G(imit.)-2.5 E F1(umask)108 177.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 189.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 201.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -213.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 225.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 237.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 249.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 266.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 278.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 290.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 307.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 319.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 331.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 343.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 355.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 367.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 -.221(options are supplied, each)144 379.2 R F2(name)2.721 E F0 .221 -(refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22 -(ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188 -(tion with that name is unset.)144 391.2 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 403.2 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 415.2 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 -427.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 -G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) --.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 444 Q -F0([)2.5 E F1A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 -(Wa)144 456 S .027(it for each speci\214ed child process and return its\ - termination status.).8 F(Each)5.026 E F2(n)2.886 E F0 .026 -(may be a process ID)2.766 F .256 -(or a job speci\214cation; if a job spec is gi)144 468 R -.15(ve)-.25 G -.256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 -(ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E -F2(n)3.116 E F0 .318(is not gi)144 480 R -.15(ve)-.25 G .318 -(n, all currently acti).15 F .618 -.15(ve c)-.25 H .318 -(hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318 -(nd the return status is zero.)-2.818 F .317(If the)5.317 F F1144 -492 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa) -2.861 G .361(its for an).1 F 2.862(yj)-.15 G .362 -(ob to terminate and returns its e)-2.862 F .362(xit status.)-.15 F(If) -5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 504 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 516 Q(aited for)-.1 E(.)-.55 E/F5 -10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 532.8 Q F0(If)108 544.8 Q F1 -(bash)4.396 E F0 1.896(is started with the name)4.396 F F1(rbash)4.397 E -F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F14.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 556.8 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 568.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 -(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E -(wing are disallo)-.25 E(wed or not performed:)-.25 E 32.5<8363>108 -585.6 S(hanging directories with)-32.5 E F1(cd)2.5 E F0 32.5<8373>108 -602.4 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 619.2 S -(pecifying command names containing)-32.5 E F1(/)2.5 E F0 32.5<8373>108 -636 S(pecifying a \214lename containing a)-32.5 E F1(/)2.5 E F0 -(as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E F0 -.2(bu)5 G -(iltin command).2 E 32.5<8373>108 652.8 S .449 -(pecifying a \214lename containing a slash as an ar)-32.5 F .449 -(gument to the)-.18 F F12.95 E F0 .45(option to the)2.95 F F1 -(hash)2.95 E F0 -.2(bu)2.95 G .45(iltin com-).2 F(mand)144 664.8 Q 32.5 -<8369>108 681.6 S(mporting function de\214nitions from the shell en) --32.5 E(vironment at startup)-.4 E 32.5<8370>108 698.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 715.2 S(edirecting output usi\ -ng the >, >|, <>, >&, &>, and >> redirection operators)-32.5 E -(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(73)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(nocaseglob)144 84 Q F0 .436(If set,)184 96 R F1(bash)2.936 E F0 .436 +(matches \214lenames in a case\255insensiti)2.936 F .737 -.15(ve f)-.25 +H .437(ashion when performing pathname).05 F -.15(ex)184 108 S +(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 120 Q F0 1.194(If set,)184 +132 R F1(bash)3.694 E F0 1.194(matches patterns in a case\255insensiti) +3.694 F 1.493 -.15(ve f)-.25 H 1.193(ashion when performing matching).05 +F .551(while e)184 144 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 +(or)3.051 E F1([[)3.051 E F0 .551 +(conditional commands, when performing pattern substitution)3.051 F -.1 +(wo)184 156 S .623(rd e).1 F .623(xpansions, or when \214ltering possib\ +le completions as part of programmable com-)-.15 F(pletion.)184 168 Q F1 +(nullglob)144 180 Q F0 .854(If set,)184 192 R F1(bash)3.354 E F0(allo) +3.354 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) +3.355 G .855(thname Expansion).1 F F0(abo)3.355 E -.15(ve)-.15 G 3.355 +(\)t).15 G(o)-3.355 E -.15(ex)184 204 S +(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 +216 Q(ogcomp)-.18 E F0 .677(If set, the programmable completion f)184 +228 R .677(acilities \(see)-.1 F F1(Pr)3.176 E .676 +(ogrammable Completion)-.18 F F0(abo)3.176 E -.15(ve)-.15 G(\)).15 E +(are enabled.)184 240 Q(This option is enabled by def)5 E(ault.)-.1 E F1 +(pr)144 252 Q(omptv)-.18 E(ars)-.1 E F0 1.447 +(If set, prompt strings under)184 264 R 1.448(go parameter e)-.18 F +1.448(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 276 +S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 +(fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9 +/Times-Bold@0 SF(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G +(.).15 E(This option is enabled by def)184 288 Q(ault.)-.1 E F1 -.18(re) +144 300 S(stricted_shell).18 E F0 1.069 +(The shell sets this option if it is started in restricted mode \(see) +184 312 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 324 Q 2.86 +(w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 +(This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G +(-).15 E(cuted, allo)184 336 Q(wing the startup \214les to disco)-.25 E +-.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E +F1(shift_v)144 348 Q(erbose)-.1 E F0 .501(If set, the)184 360 R F1 +(shift)3.001 E F0 -.2(bu)3.001 G .501 +(iltin prints an error message when the shift count e).2 F .502 +(xceeds the number)-.15 F(of positional parameters.)184 372 Q F1(sour) +144 384 Q(cepath)-.18 E F0 .771(If set, the)184 396 R F1(sour)3.271 E +(ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v) +-3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77 +(to \214nd the directory containing the)3.02 F(\214le supplied as an ar) +184 408 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) +-.1 E F1(xpg_echo)144 420 Q F0(If set, the)184 432 Q F1(echo)2.5 E F0 +-.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)-.15 +E(ault.)-.1 E F1(suspend)108 448.8 Q F0([)2.5 E F1A F0(])A 1.001 +(Suspend the e)144 460.8 R -.15(xe)-.15 G 1.001 +(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G +F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be) +3.502 F .023(suspended; the)144 472.8 R F12.523 E F0 .023 +(option can be used to o)2.523 F -.15(ve)-.15 G .022 +(rride this and force the suspension.).15 F .022(The return status is) +5.022 F 2.5(0u)144 484.8 S(nless the shell is a login shell and)-2.5 E +F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 +E F1(test)108 501.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) +108 513.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877 +(Return a status of 0 \(true\) or 1 \(f)144 513.6 R .878 +(alse\) depending on the e)-.1 F -.25(va)-.25 G .878 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 525.6 +S(pr).2 E F0 5.53(.E).73 G .53 +(ach operator and operand must be a separate ar)-5.53 F 3.03 +(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.079 +(primaries described abo)144 537.6 R 3.379 -.15(ve u)-.15 H(nder).15 E +F2(CONDITION)5.579 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF +(.)A F1(test)7.579 E F0 3.08(does not accept an)5.58 F(y)-.15 E +(options, nor does it accept and ignore an ar)144 549.6 Q(gument of)-.18 +E F12.5 E F0(as signifying the end of options.)2.5 E .786 +(Expressions may be combined using the follo)144 567.6 R .785 +(wing operators, listed in decreasing order of prece-)-.25 F 3.411 +(dence. The)144 579.6 R -.25(eva)3.411 G .911 +(luation depends on the number of ar).25 F .912(guments; see belo)-.18 F +4.712 -.65(w. O)-.25 H .912(perator precedence is).65 F +(used when there are \214v)144 591.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments.)-.18 E F1(!)144 603.6 Q F3 -.2(ex)2.5 G(pr).2 E +F0 -.35(Tr)180 603.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 +E(alse.)-.1 E F1(\()144 615.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 +.26(Returns the v)180 615.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 +E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 +(rride the normal precedence of opera-).15 F(tors.)180 627.6 Q F3 -.2 +(ex)144 639.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 +-.35(Tr)180 651.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 +E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 663.6 S +(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 +675.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2 +(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 692.4 Q F0(and)2.5 E +F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E +(xpressions using a set of rules based on the number of ar)-.15 E +(guments.)-.18 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(73) +192.055 E 0 Cg EP %%Page: 74 74 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 32.5<8375>108 84 S(sing the)-32.5 E/F1 10/Times-Bold@0 SF(exec) -2.5 E F0 -.2(bu)2.5 G -(iltin command to replace the shell with another command).2 E 32.5<8361> -108 100.8 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E -F12.5 E F0(and)2.5 E F12.5 E F0(options to the)2.5 E F1 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8375>108 117.6 S -(sing the)-32.5 E F1(enable)2.5 E F0 -.2(bu)2.5 G -(iltin command to enable disabled shell b).2 E(uiltins)-.2 E 32.5<8373> -108 134.4 S(pecifying the)-32.5 E F12.5 E F0(option to the)2.5 E -F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8374>108 151.2 -S(urning of)-32.5 E 2.5(fr)-.25 G(estricted mode with)-2.5 E F1(set +r) -2.5 E F0(or)2.5 E F1(set +o r)2.5 E(estricted)-.18 E F0(.)A -(These restrictions are enforced after an)108 168 Q 2.5(ys)-.15 G -(tartup \214les are read.)-2.5 E 1.566 -(When a command that is found to be a shell script is e)108 184.8 R -.15 -(xe)-.15 G 1.566(cuted \(see).15 F/F2 9/Times-Bold@0 SF 1.566 -(COMMAND EXECUTION)4.066 F F0(abo)3.816 E -.15(ve)-.15 G(\),).15 E F1 -(rbash)108 196.8 Q F0(turns of)2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H -(estrictions in the shell spa).15 E(wned to e)-.15 E -.15(xe)-.15 G -(cute the script.).15 E/F3 10.95/Times-Bold@0 SF(SEE ALSO)72 213.6 Q/F4 -10/Times-Italic@0 SF(Bash Refer)108 225.6 Q(ence Manual)-.37 E F0 2.5 -(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F4 -(The Gnu Readline Libr)108 237.6 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E -(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu History Libr)108 249.6 Q -(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E -F4 -.8(Po)108 261.6 S(rtable Oper).8 E -(ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities) --.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 273.6 Q -(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 285.6 Q -(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F4(sh) -108 297.6 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A -F4(emacs)108 309.6 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108 -321.6 S(adline).37 E F0(\(3\))A F3(FILES)72 338.4 Q F4(/bin/bash)109.666 -350.4 Q F0(The)144 362.4 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E -F4(/etc/pr)109.666 374.4 Q(o\214le)-.45 E F0 -(The systemwide initialization \214le, e)144 386.4 Q -.15(xe)-.15 G -(cuted for login shells).15 E F4(~/.bash_pr)109.666 398.4 Q(o\214le)-.45 -E F0(The personal initialization \214le, e)144 410.4 Q -.15(xe)-.15 G -(cuted for login shells).15 E F4(~/.bashr)109.666 422.4 Q(c)-.37 E F0 -(The indi)144 434.4 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G -(-shell startup \214le).15 E F4(~/.bash_lo)109.666 446.4 Q(gout)-.1 E F0 -(The indi)144 458.4 Q(vidual login shell cleanup \214le, e)-.25 E -.15 -(xe)-.15 G(cuted when a login shell e).15 E(xits)-.15 E F4(~/.inputr) -109.666 470.4 Q(c)-.37 E F0(Indi)144 482.4 Q(vidual)-.25 E F4 -.37(re) -2.5 G(adline).37 E F0(initialization \214le)2.5 E F3 -.548(AU)72 499.2 S -(THORS).548 E F0(Brian F)108 511.2 Q(ox, Free Softw)-.15 E(are F)-.1 E -(oundation)-.15 E(bfox@gnu.or)108 523.2 Q(g)-.18 E(Chet Rame)108 540 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 552 Q(y@case.edu)-.15 E -F3 -.11(BU)72 568.8 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 -(If you \214nd a b)108 580.8 R .568(ug in)-.2 F F1(bash,)3.068 E F0 .568 -(you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F -3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .568(ug, and)-.2 -F 5.626(that it appears in the latest v)108 592.8 R 5.625(ersion of)-.15 -F F1(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.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 F4(ftp://ftp.gnu.or)108 604.8 Q(g/pub/gnu/bash/)-.37 -E F0(.)A .41(Once you ha)108 621.6 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 F4(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 633.6 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 645.6 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 -(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F1(gnu.bash.b)2.5 E(ug) --.2 E F0(.)A(ALL b)108 662.4 Q(ug reports should include:)-.2 E(The v) -108 679.2 Q(ersion number of)-.15 E F1(bash)2.5 E F0(The hardw)108 691.2 -Q(are and operating system)-.1 E(The compiler used to compile)108 703.2 -Q(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 E(74)190.95 E 0 Cg EP +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.5(0a)144 84 S +-.18(rg)-2.5 G(uments).18 E(The e)180 96 Q(xpression is f)-.15 E(alse.) +-.1 E 2.5(1a)144 108 S -.18(rg)-2.5 G(ument).18 E(The e)180 120 Q +(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 +E 2.5(2a)144 132 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)180 +144 R .37(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.87 E F0 2.87(,t)C +.37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 +F .37(gument is null.)-.18 F .38(If the \214rst ar)180 156 R .38 +(gument is one of the unary conditional operators listed abo)-.18 F .679 +-.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(CONDI-)2.879 E(TION)180 +168 Q .552(AL EXPRESSIONS)-.18 F/F3 9/Times-Roman@0 SF(,)A F0 .552 +(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F +.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 180 Q +(alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E +(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 192 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 204 R .236 +(wing conditions are applied in the order listed.)-.25 F .236 +(If the second ar)5.236 F .236(gument is one of)-.18 F .855 +(the binary conditional operators listed abo)180 216 R 1.155 -.15(ve u) +-.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F F3(,)A +F0(the)3.105 E .579(result of the e)180 228 R .578(xpression is the res\ +ult of the binary test using the \214rst and third ar)-.15 F(guments) +-.18 E 1.332(as operands.)180 240 R(The)6.332 E F13.832 E F0(and) +3.832 E F13.832 E F0 1.333 +(operators are considered binary operators when there are)3.832 F .558 +(three ar)180 252 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 F +.558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558 +(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F(o-ar)-.1 +E(gument)-.18 E .52(test using the second and third ar)180 264 R 3.021 +(guments. If)-.18 F .521(the \214rst ar)3.021 F .521(gument is e)-.18 F +(xactly)-.15 E F1(\()3.021 E F0 .521(and the third)3.021 F(ar)180 276 Q +.485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 2.985(,t)C .485 +(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18 +F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 288 Q +(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 300 S -.18(rg)-2.5 G +(uments).18 E .384(If the \214rst ar)180 312 R .384(gument is)-.18 F F1 +(!)2.884 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 +G .385(tion of the three-ar).05 F .385(gument e)-.18 F .385 +(xpression com-)-.15 F 1.648(posed of the remaining ar)180 324 R 4.147 +(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.647 +(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E +(according to precedence using the rules listed abo)180 336 Q -.15(ve) +-.15 G(.).15 E 2.5(5o)144 348 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 +E 1.635(The e)180 360 R 1.635(xpression is parsed and e)-.15 F -.25(va) +-.25 G 1.635(luated according to precedence using the rules listed).25 F +(abo)180 372 Q -.15(ve)-.15 G(.).15 E(When used with)144 390 Q F1(test) +2.5 E F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 +E F1(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F1(times)108 406.8 Q F0 +1.229(Print the accumulated user and system times for the shell and for\ + processes run from the shell.)144 406.8 R(The return status is 0.)144 +418.8 Q F1(trap)108 435.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E +/F4 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F4(sigspec)2.5 E F0(...]) +2.5 E .702(The command)144 447.6 R F4(ar)3.532 E(g)-.37 E F0 .702 +(is to be read and e)3.422 F -.15(xe)-.15 G .702 +(cuted when the shell recei).15 F -.15(ve)-.25 G 3.203(ss).15 G +(ignal\(s\))-3.203 E F4(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F4 +(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single) +144 459.6 R F4(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E +F0 3.108(,e)C .608 +(ach speci\214ed signal is reset to its original disposition)-3.108 F +.658(\(the v)144 471.6 R .658(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .659 +(is the null string the signal speci\214ed by each)3.378 F F4(sigspec) +144.34 483.6 Q F0 .581 +(is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G +-.1(ke).2 G 3.08(s. If).1 F F4(ar)3.41 E(g)-.37 E F0 .58 +(is not present and)3.3 F F13.08 E F0(has)3.08 E 1.214 +(been supplied, then the trap commands associated with each)144 495.6 R +F4(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 +F(gu-)-.18 E .86(ments are supplied or if only)144 507.6 R F13.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 +(prints the list of commands associated with each)3.36 F 2.83 +(signal. The)144 519.6 R F12.83 E F0 .33(option causes the shell \ +to print a list of signal names and their corresponding num-)2.83 F +4.311(bers. Each)144 531.6 R F4(sigspec)4.651 E F0 1.811 +(is either a signal name de\214ned in <)4.621 F F4(signal.h)A F0 1.81 +(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E +(names are case insensiti)144 543.6 Q .3 -.15(ve a)-.25 H(nd the).15 E +F2(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)144 561.6 R F4 +(sigspec)4.488 E F0(is)4.458 E F2(EXIT)4.148 E F0 1.648 +(\(0\) the command)3.898 F F4(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F +-.15(xe)-.15 G 1.649(cuted on e).15 F 1.649(xit from the shell.)-.15 F +1.649(If a)6.649 F F4(sigspec)4.489 E F0(is)4.459 E F2(DEB)144 573.6 Q +(UG)-.09 E F3(,)A F0 1.168(the command)3.418 F F4(ar)3.998 E(g)-.37 E F0 +1.168(is e)3.888 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve) +-.25 G(ry).15 E F4 1.167(simple command)3.667 F F0(,)A F4(for)3.667 E F0 +(command,)3.667 E F4(case)3.667 E F0(com-)3.667 E(mand,)144 585.6 Q F4 +(select)2.646 E F0 .146(command, e)2.646 F -.15(ve)-.25 G .146 +(ry arithmetic).15 F F4(for)2.646 E F0 .147 +(command, and before the \214rst command e)2.646 F -.15(xe)-.15 G .147 +(cutes in a).15 F .146(shell function \(see)144 597.6 R F2 .146 +(SHELL GRAMMAR)2.646 F F0(abo)2.396 E -.15(ve)-.15 G 2.646(\). Refer).15 +F .146(to the description of the)2.646 F F1(extdeb)2.645 E(ug)-.2 E F0 +.145(option to)2.645 F(the)144 609.6 Q F1(shopt)3.2 E F0 -.2(bu)3.2 G .7 +(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E(UG) +-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F4(sigspec)3.54 E F0(is)3.51 E F2 +(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144 621.6 Q F4(ar) +3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643 +(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G +.643(cuted with the).15 F F1(.)3.143 E F0(or)3.143 E F1(sour)3.143 E(ce) +-.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 633.6 Q -.15(xe) +-.15 G(cuting.).15 E .96(If a)144 651.6 R F4(sigspec)3.8 E F0(is)3.77 E +F2(ERR)3.46 E F3(,)A F0 .96(the command)3.21 F F4(ar)3.791 E(g)-.37 E F0 +.961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G +3.461(rap).15 G .961(ipeline \(which may consist of a)-3.461 F .185(sin\ +gle simple command\), a list, or a compound command returns a non\255ze\ +ro e)144 663.6 R .184(xit status, subject to)-.15 F .451(the follo)144 +675.6 R .451(wing conditions.)-.25 F(The)5.451 E F2(ERR)2.951 E F0 .451 +(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .452 +(ailed command is part of the com-)-.1 F .388 +(mand list immediately follo)144 687.6 R .388(wing a)-.25 F F1(while) +2.888 E F0(or)2.888 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F4(if)2.897 E F0 .387 +(statement, part)4.847 F .777(of a command e)144 699.6 R -.15(xe)-.15 G +.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778 +(list e)3.278 F .778(xcept the command follo)-.15 F .778 +(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 +3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 711.6 R +1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v) +-3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F +F1(!)3.78 E F0(.)A(These are the same conditions obe)144 723.6 Q +(yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1A F0 2.5 +(\)o)C(ption.)-2.5 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(74) +192.055 E 0 Cg EP %%Page: 75 75 %%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(Ad)108 84 S(escription of the b)-2.5 E(ug beha)-.2 E(viour) --.2 E 2.5(As)108 96 S(hort script or `recipe' which e)-2.5 E -.15(xe) --.15 G(rcises the b).15 E(ug)-.2 E/F1 10/Times-Italic@0 SF(bashb)108.27 -112.8 Q(ug)-.2 E F0 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.095 +(Signals ignored upon entry to the shell cannot be trapped or reset.)144 +84 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 +(being ignored are reset to their original v)144 96 R .662 +(alues in a subshell or subshell en)-.25 F .661(vironment when one is) +-.4 F 2.5(created. The)144 108 R(return status is f)2.5 E(alse if an)-.1 +E(y)-.15 E/F1 10/Times-Italic@0 SF(sigspec)2.84 E F0(is in)2.81 E -.25 +(va)-.4 G(lid; otherwise).25 E/F2 10/Times-Bold@0 SF(trap)2.5 E F0 +(returns true.)2.5 E F2(type)108 124.8 Q F0([)2.5 E F2(\255aftpP)A F0(]) +A F1(name)2.5 E F0([)2.5 E F1(name)A F0(...])2.5 E -.4(Wi)144 136.8 S +.173(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F1 +(name)3.033 E F0 -.1(wo)2.853 G .174 +(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F +F2144 148.8 Q F0 .843(option is used,)3.343 F F2(type)3.343 E F0 +.843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E +F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0 +(,).24 E F1 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F1 +(\214le)5.252 E F0(if)3.522 E F1(name)144.36 160.8 Q F0 .086 +(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086 +(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15 +(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F1 +(name)2.947 E F0 .087(is not)2.767 F .119 +(found, then nothing is printed, and an e)144 172.8 R .118 +(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F +F22.618 E F0 .118(option is used,)2.618 F F2(type)2.618 E F0 .855 +(either returns the name of the disk \214le that w)144 184.8 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0 +.855(were speci\214ed as a com-)3.535 F .641(mand name, or nothing if) +144 196.8 R/F3 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141 +G .641(uld not return).1 F F1(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E +F23.14 E F0 .64(option forces a)3.14 F/F4 9/Times-Bold@0 SF -.666 +(PA)3.14 G(TH)-.189 E F0 .112(search for each)144 208.8 R F1(name)2.612 +E F0 2.612(,e)C -.15(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E F3 .113 +(type -t name)2.613 F F0 -.1(wo)2.613 G .113(uld not return).1 F F1 +(\214le)2.613 E F0 5.113(.I).18 G 2.613(fac)-5.113 G .113 +(ommand is hashed,)-2.613 F F22.613 E F0(and)144 220.8 Q F2 +3.231 E F0 .731(print the hashed v)3.231 F .73 +(alue, which is not necessarily the \214le that appears \214rst in)-.25 +F F4 -.666(PA)3.23 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .73(If the) +5.23 F F2144 232.8 Q F0 1.748(option is used,)4.248 F F2(type) +4.248 E F0 1.748(prints all of the places that contain an e)4.248 F -.15 +(xe)-.15 G 1.748(cutable named).15 F F1(name)4.249 E F0 6.749(.T).18 G +(his)-6.749 E .744(includes aliases and functions, if and only if the) +144 244.8 R F23.244 E F0 .744(option is not also used.)3.244 F +.743(The table of hashed)5.744 F 1.223 +(commands is not consulted when using)144 256.8 R F23.723 E F0 +6.223(.T)C(he)-6.223 E F23.723 E F0 1.223 +(option suppresses shell function lookup, as)3.723 F .326(with the)144 +268.8 R F2(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F2(type)5.326 E +F0 .326(returns true if all of the ar)2.826 F .325(guments are found, f) +-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325(re not)-2.825 F +(found.)144 280.8 Q F2(ulimit)108 297.6 Q F0([)2.5 E F2 +(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 +309.6 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 G .243 +(he resources a)-2.743 F -.25(va)-.2 G .244 +(ilable to the shell and to processes started by it, on systems).25 F +.944(that allo)144 321.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F +(The)5.944 E F23.444 E F0(and)3.444 E F23.444 E F0 .943 +(options specify that the hard or soft limit is set for the)3.444 F(gi) +144 333.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 +(hard limit cannot be increased by a non-root user once it is set; a so\ +ft limit may)2.708 F .426(be increased up to the v)144 345.6 R .426 +(alue of the hard limit.)-.25 F .425(If neither)5.426 F F22.925 E +F0(nor)2.925 E F22.925 E F0 .425 +(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 +357.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 +(can be a number in the unit speci\214ed for the resource or one)3.319 F +.742(of the special v)144 369.6 R(alues)-.25 E F2(hard)3.242 E F0(,)A F2 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F2(unlimited)3.241 E F0 3.241(,w) +C .741(hich stand for the current hard limit, the current)-3.241 F .78 +(soft limit, and no limit, respecti)144 381.6 R -.15(ve)-.25 G(ly).15 E +5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78 +(is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25 +F .499(resource is printed, unless the)144 393.6 R F22.999 E F0 +.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498 +(more than one resource is speci\214ed, the)2.999 F +(limit name and unit are printed before the v)144 405.6 Q 2.5 +(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F2 +144 417.6 Q F0(All current limits are reported)180 417.6 Q F2 +144 429.6 Q F0(The maximum sock)180 429.6 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F2144 441.6 Q F0 +(The maximum size of core \214les created)180 441.6 Q F2144 453.6 +Q F0(The maximum size of a process')180 453.6 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F2144 465.6 Q F0 +(The maximum scheduling priority \("nice"\))180 465.6 Q F2144 +477.6 Q F0 +(The maximum size of \214les written by the shell and its children)180 +477.6 Q F2144 489.6 Q F0(The maximum number of pending signals)180 +489.6 Q F2144 501.6 Q F0 +(The maximum number of kqueues that may be allocated)180 501.6 Q F2 +144 513.6 Q F0(The maximum size that may be lock)180 513.6 Q +(ed into memory)-.1 E F2144 525.6 Q F0 +(The maximum resident set size \(man)180 525.6 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F2144 537.6 Q F0 .791(Th\ +e maximum number of open \214le descriptors \(most systems do not allo) +180 537.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F +(be set\))180 549.6 Q F2144 561.6 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 561.6 Q F2 +144 573.6 Q F0 +(The maximum number of bytes in POSIX message queues)180 573.6 Q F2 +144 585.6 Q F0(The maximum real-time scheduling priority)180 585.6 +Q F2144 597.6 Q F0(The maximum stack size)180 597.6 Q F2144 +609.6 Q F0(The maximum amount of cpu time in seconds)180 609.6 Q F2 +144 621.6 Q F0(The maximum number of processes a)180 621.6 Q -.25 +(va)-.2 G(ilable to a single user).25 E F2144 633.6 Q F0 .47 +(The maximum amount of virtual memory a)180 633.6 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 +645.6 Q F2144 657.6 Q F0(The maximum number of \214le locks)180 +657.6 Q F2144 669.6 Q F0(The maximum number of pseudoterminals)180 +669.6 Q F2144 681.6 Q F0(The maximum number of threads)180 681.6 Q +(If)144 698.4 Q F1(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G +.468(n, and the).15 F F22.968 E F0 .468(option is not used,)2.968 +F F1(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 +(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045 +(no option is gi)144 710.4 R -.15(ve)-.25 G .045(n, then).15 F F2 +2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F2 +2.544 E F0 2.544(,w)C .044(hich is)-2.544 F 1.588(in seconds;)144 +722.4 R F24.088 E F0 4.089(,w)C 1.589 +(hich is in units of 512-byte blocks;)-4.089 F F24.089 E F0(,)A F2 +4.089 E F0(,)A F24.089 E F0(,)A F24.089 E F0(,)A F2 +4.089 E F0 4.089(,a)C(nd)-4.089 E F24.089 E F0 4.089(,w)C +1.589(hich are)-4.089 F(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E +(75)192.055 E 0 Cg EP +%%Page: 76 76 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.439(unscaled v) +144 84 R 1.439(alues; and, when in Posix mode,)-.25 F/F1 10/Times-Bold@0 +SF3.939 E F0(and)3.939 E F13.939 E F0 3.939(,w)C 1.438 +(hich are in 512-byte increments.)-3.939 F(The)6.438 E .404 +(return status is 0 unless an in)144 96 R -.25(va)-.4 G .404 +(lid option or ar).25 F .404 +(gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 +108 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 124.8 Q F0([)2.5 E F1 +A F0 2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF +(mode)-2.5 E F0(])A .2(The user \214le-creation mask is set to)144 136.8 +R F2(mode)2.7 E F0 5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 +(gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ +therwise it is interpreted as a symbolic mode mask similar to that acce\ +pted by)144 148.8 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +160.8 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382 +(alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 +(option causes the mask to be)2.882 F .547 +(printed in symbolic form; the def)144 172.8 R .547 +(ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G +(he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 +(mode)144.38 184.8 Q F0 .552 +(is omitted, the output is in a form that may be reused as input.)3.232 +F .551(The return status is 0 if the)5.551 F(mode w)144 196.8 Q +(as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E +(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 +(unalias)108 213.6 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 225.6 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) +4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E +F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 +F(remo)144 237.6 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +(alue is true unless a supplied)-.25 E F2(name)2.86 E F0 +(is not a de\214ned alias.)2.68 E F1(unset)108 254.4 Q F0<5bad>2.5 E F1 +(fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) +2.5 E -.15(Fo)144 266.4 S 3.828(re).15 G(ach)-3.828 E F2(name)3.828 E F0 +3.828(,r).18 G(emo)-3.828 E 1.628 -.15(ve t)-.15 H 1.328 +(he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 +(If the)6.327 F F13.827 E F0 1.327(option is gi)3.827 F -.15(ve) +-.25 G 1.327(n, each).15 F F2(name)144.36 278.4 Q F0 1.55 +(refers to a shell v)4.23 F 1.551(ariable, and that v)-.25 F 1.551 +(ariable is remo)-.25 F -.15(ve)-.15 G 4.051(d. Read-only).15 F -.25(va) +4.051 G 1.551(riables may not be).25 F 4.642(unset. If)144 290.4 R F1 +4.642 E F0 2.142(is speci\214ed, each)4.642 F F2(name)5.001 E F0 +2.141(refers to a shell function, and the function de\214nition is)4.821 +F(remo)144 302.4 Q -.15(ve)-.15 G 2.537(d. If).15 F(the)2.537 E F1 +2.537 E F0 .037(option is supplied, and)2.537 F F2(name)2.537 E F0 .037 +(is a v)2.537 F .037(ariable with the)-.25 F F2(namer)2.537 E(ef)-.37 E +F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.538 E .492 +(be unset rather than the v)144 314.4 R .492(ariable it references.)-.25 +F F15.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1 +2.992 E F0 .492(option is supplied.)2.992 F .492(If no)5.492 F .22 +(options are supplied, each)144 326.4 R F2(name)2.72 E F0 .22 +(refers to a v)2.72 F .221(ariable; if there is no v)-.25 F .221 +(ariable by that name, an)-.25 F 2.721(yf)-.15 G(unc-)-2.721 E 1.189 +(tion with that name is unset.)144 338.4 R 1.189(Each unset v)6.189 F +1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.688(df).15 G +1.188(rom the en)-3.688 F(vironment)-.4 E 3.205 +(passed to subsequent commands.)144 350.4 R 3.206(If an)8.206 F 5.706 +(yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 +E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.456 E F4(,)A F3(SECONDS)5.456 E +F4(,)A F3(LINENO)144 362.4 Q F4(,)A F3(HISTCMD)4.348 E F4(,)A F3(FUNCN) +4.348 E(AME)-.18 E F4(,)A F3(GR)4.348 E(OUPS)-.27 E F4(,)A F0(or)4.348 E +F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 +F 4.597(yl)-.15 G 2.097(ose their special)-4.597 F(properties, e)144 +374.4 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 +G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) +-.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 391.2 Q +F0([)2.5 E F1A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 +(Wa)144 403.2 S .026(it for each speci\214ed child process and return i\ +ts termination status.).8 F(Each)5.027 E F2(n)2.887 E F0 .027 +(may be a process ID)2.767 F .256 +(or a job speci\214cation; if a job spec is gi)144 415.2 R -.15(ve)-.25 +G .256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 +(ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E +F2(n)3.116 E F0 .317(is not gi)144 427.2 R -.15(ve)-.25 G .317 +(n, all currently acti).15 F .618 -.15(ve c)-.25 H .318 +(hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318 +(nd the return status is zero.)-2.818 F .318(If the)5.318 F F1144 +439.2 Q F0 .362(option is supplied,)2.862 F F1(wait)2.862 E F0 -.1(wa) +2.862 G .362(its for an).1 F 2.862(yj)-.15 G .362 +(ob to terminate and returns its e)-2.862 F .361(xit status.)-.15 F(If) +5.361 E F2(n)3.221 E F0(speci\214es)3.101 E 2.595(an)144 451.2 S(on-e) +-2.595 E .095(xistent process or job, the return status is 127.)-.15 F +.096(Otherwise, the return status is the e)5.095 F .096(xit status)-.15 +F(of the last process or job w)144 463.2 Q(aited for)-.1 E(.)-.55 E/F5 +10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 480 Q F0(If)108 492 Q F1(bash) +4.397 E F0 1.897(is started with the name)4.397 F F1(rbash)4.397 E F0 +4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F14.397 E F0 1.896 +(option is supplied at in)4.397 F -.2(vo)-.4 G 1.896 +(cation, the shell becomes).2 F 3.445(restricted. A)108 504 R .945 +(restricted shell is used to set up an en)3.445 F .946 +(vironment more controlled than the standard shell.)-.4 F(It)5.946 E +(beha)108 516 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1(bash) +2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E +(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 532.8 Q +(changing directories with)144 532.8 Q F1(cd)2.5 E F0<83>108 549.6 Q +(setting or unsetting the v)144 549.6 Q(alues of)-.25 E F3(SHELL)2.5 E +F4(,)A F3 -.666(PA)2.25 G(TH)-.189 E F4(,)A F3(ENV)2.25 E F4(,)A F0(or) +2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 566.4 Q +(specifying command names containing)144 566.4 Q F1(/)2.5 E F0<83>108 +583.2 Q(specifying a \214lename containing a)144 583.2 Q F1(/)2.5 E F0 +(as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E F0 -.2(bu)5 G +(iltin command).2 E<83>108 600 Q .45 +(specifying a \214lename containing a slash as an ar)144 600 R .449 +(gument to the)-.18 F F12.949 E F0 .449(option to the)2.949 F F1 +(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 612 Q<83> +108 628.8 Q(importing function de\214nitions from the shell en)144 628.8 +Q(vironment at startup)-.4 E<83>108 645.6 Q(parsing the v)144 645.6 Q +(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E +(vironment at startup)-.4 E<83>108 662.4 Q(redirecting output using the\ + >, >|, <>, >&, &>, and >> redirection operators)144 662.4 Q<83>108 +679.2 Q(using the)144 679.2 Q F1(exec)2.5 E F0 -.2(bu)2.5 G +(iltin command to replace the shell with another command).2 E<83>108 696 +Q(adding or deleting b)144 696 Q(uiltin commands with the)-.2 E F1 +2.5 E F0(and)2.5 E F12.5 E F0(options to the)2.5 E F1(enable)2.5 E +F0 -.2(bu)2.5 G(iltin command).2 E<83>108 712.8 Q(using the)144 712.8 Q +F1(enable)2.5 E F0 -.2(bu)2.5 G +(iltin command to enable disabled shell b).2 E(uiltins)-.2 E +(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(76)192.055 E 0 Cg EP +%%Page: 77 77 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q +(specifying the)144 84 Q/F1 10/Times-Bold@0 SF2.5 E F0 +(option to the)2.5 E F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E +<83>108 100.8 Q(turning of)144 100.8 Q 2.5(fr)-.25 G +(estricted mode with)-2.5 E F1(set +r)2.5 E F0(or)2.5 E F1(set +o r)2.5 +E(estricted)-.18 E F0(.)A(These restrictions are enforced after an)108 +117.6 Q 2.5(ys)-.15 G(tartup \214les are read.)-2.5 E 1.566 +(When a command that is found to be a shell script is e)108 134.4 R -.15 +(xe)-.15 G 1.567(cuted \(see).15 F/F2 9/Times-Bold@0 SF 1.567 +(COMMAND EXECUTION)4.067 F F0(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1 +(rbash)108 146.4 Q F0(turns of)2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H +(estrictions in the shell spa).15 E(wned to e)-.15 E -.15(xe)-.15 G +(cute the script.).15 E/F3 10.95/Times-Bold@0 SF(SEE ALSO)72 163.2 Q/F4 +10/Times-Italic@0 SF(Bash Refer)108 175.2 Q(ence Manual)-.37 E F0 2.5 +(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F4 +(The Gnu Readline Libr)108 187.2 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E +(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu History Libr)108 199.2 Q +(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E +F4 -.8(Po)108 211.2 S(rtable Oper).8 E +(ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities) +-.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 223.2 Q +(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 235.2 Q +(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F4(sh) +108 247.2 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A +F4(emacs)108 259.2 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108 +271.2 S(adline).37 E F0(\(3\))A F3(FILES)72 288 Q F4(/bin/bash)109.666 +300 Q F0(The)144 312 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4 +(/etc/pr)109.666 324 Q(o\214le)-.45 E F0 +(The systemwide initialization \214le, e)144 336 Q -.15(xe)-.15 G +(cuted for login shells).15 E F4(~/.bash_pr)109.666 348 Q(o\214le)-.45 E +F0(The personal initialization \214le, e)144 360 Q -.15(xe)-.15 G +(cuted for login shells).15 E F4(~/.bashr)109.666 372 Q(c)-.37 E F0 +(The indi)144 384 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G +(-shell startup \214le).15 E F4(~/.bash_lo)109.666 396 Q(gout)-.1 E F0 +(The indi)144 408 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe) +-.15 G(cuted when a login shell e).15 E(xits)-.15 E F4(~/.inputr)109.666 +420 Q(c)-.37 E F0(Indi)144 432 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline) +.37 E F0(initialization \214le)2.5 E F3 -.548(AU)72 448.8 S(THORS).548 E +F0(Brian F)108 460.8 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 +E(bfox@gnu.or)108 472.8 Q(g)-.18 E(Chet Rame)108 489.6 Q 1.3 -.65(y, C) +-.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve) +-.25 G(rsity).15 E(chet.rame)108 501.6 Q(y@case.edu)-.15 E F3 -.11(BU)72 +518.4 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568 +(If you \214nd a b)108 530.4 R .568(ug in)-.2 F F1(bash,)3.068 E F0 .568 +(you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F +3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .567(ug, and)-.2 +F 5.625(that it appears in the latest v)108 542.4 R 5.625(ersion of)-.15 +F F1(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626 +(ersion is al)-.15 F -.1(wa)-.1 G 5.626(ys a).1 F -.25(va)-.2 G 5.626 +(ilable from).25 F F4(ftp://ftp.gnu.or)108 554.4 Q(g/pub/gnu/bash/)-.37 +E F0(.)A .411(Once you ha)108 571.2 R .711 -.15(ve d)-.2 H .411 +(etermined that a b).15 F .411(ug actually e)-.2 F .411(xists, use the) +-.15 F F4(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41 +(ug report.)-.2 F(If)5.41 E .594(you ha)108 583.2 R .894 -.15(ve a \214) +-.2 H .595(x, you are encouraged to mail that as well!).15 F .595 +(Suggestions and `philosophical' b)5.595 F .595(ug reports may)-.2 F +(be mailed to)108 595.2 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 +(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F1(gnu.bash.b)2.5 E(ug) +-.2 E F0(.)A(ALL b)108 612 Q(ug reports should include:)-.2 E(The v)108 +628.8 Q(ersion number of)-.15 E F1(bash)2.5 E F0(The hardw)108 640.8 Q +(are and operating system)-.1 E(The compiler used to compile)108 652.8 Q +2.5(Ad)108 664.8 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E +2.5(As)108 676.8 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G +(rcises the b).15 E(ug)-.2 E F4(bashb)108.27 693.6 Q(ug)-.2 E F0 (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 -129.6 Q(ug reports concerning this manual page should be directed to)-.2 -E F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) -.25 E/F2 10.95/Times-Bold@0 SF -.11(BU)72 146.4 S(GS).11 E F0(It')108 -158.4 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 175.2 R 1.868(ferences between)-.25 F/F3 +710.4 Q(ug reports concerning this manual page should be directed to)-.2 +E F4 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) +.25 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 E(77)192.055 E 0 Cg +EP +%%Page: 78 78 +%%BeginPageSetup +BP +%%EndPageSetup +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 +/Times-Bold@0 SF -.11(BU)72 84 S(GS).11 E F0(It')108 96 Q 2.5(st)-.55 G +(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869 +(There are some subtle dif)108 112.8 R 1.869(ferences between)-.25 F/F2 10/Times-Bold@0 SF(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869 -(ersions of)-.15 F 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 187.2 Q F0 -(speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 204 Q -(Shell b)108 220.8 Q +(ersions of)-.15 F F2(sh)4.368 E F0 4.368(,m)C 1.868 +(ostly because of the)-4.368 F/F3 9/Times-Bold@0 SF(POSIX)108 124.8 Q F0 +(speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 141.6 Q +(Shell b)108 158.4 Q (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 237.6 R .389 -(process suspension is attempted.)108 249.6 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 261.6 R .192(It suf)5.193 F .192(\214ces to place the sequence of c\ -ommands between parentheses to force it into a)-.25 F -(subshell, which may be stopped as a unit.)108 273.6 Q(Array v)108 290.4 -Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E -(There may be only one acti)108 307.2 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash 4.3)72 768 Q(2014 February 2)141.79 -E(75)190.95 E 0 Cg EP +re not handled gracefully when)108 175.2 R .39 +(process suspension is attempted.)108 187.2 R .389 +(When a process is stopped, the shell immediately e)5.39 F -.15(xe)-.15 +G .389(cutes the ne).15 F .389(xt com-)-.15 F .192 +(mand in the sequence.)108 199.2 R .192(It suf)5.192 F .192(\214ces to \ +place the sequence of commands between parentheses to force it into a) +-.25 F(subshell, which may be stopped as a unit.)108 211.2 Q(Array v)108 +228 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E +(There may be only one acti)108 244.8 Q .3 -.15(ve c)-.25 H +(oprocess at a time.).15 E(GNU Bash 4.4)72 768 Q(2016 August 26)142.895 +E(78)192.055 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashbug.0 b/doc/bashbug.0 index 41fc1ed..e40eed3 100644 --- a/doc/bashbug.0 +++ b/doc/bashbug.0 @@ -1,4 +1,4 @@ -BASHBUG(1) BASHBUG(1) +BASHBUG(1) General Commands Manual BASHBUG(1) @@ -27,8 +27,9 @@ DDEESSCCRRIIPPTTIIOONN 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. + EEDDIITTOORR Specifies the preferred editor. If EEDDIITTOORR is not set, bbaasshhbbuugg + attempts to locate a number of alternative editors, including + eemmaaccss, and defaults to vvii. HHOOMMEE Directory in which the failed bug report is saved if the mail fails. @@ -47,4 +48,4 @@ AAUUTTHHOORRSS -GNU Bash-4.0 1998 July 30 BASHBUG(1) +GNU Bash-4.4 2016 February 15 BASHBUG(1) diff --git a/doc/bashbug.1 b/doc/bashbug.1 index 962cb9c..61d9122 100644 --- a/doc/bashbug.1 +++ b/doc/bashbug.1 @@ -5,9 +5,9 @@ .\" Case Western Reserve University .\" chet@po.cwru.edu .\" -.\" Last Change: Tue Apr 3 15:46:30 EDT 2007 +.\" Last Change: Mon Feb 15 14:42:40 EST 2016 .\" -.TH BASHBUG 1 "1998 July 30" "GNU Bash-4.0" +.TH BASHBUG 1 "2016 February 15" "GNU Bash-4.4" .SH NAME bashbug \- report a bug in bash .SH SYNOPSIS @@ -43,8 +43,9 @@ Specifies the preferred editor. If .B EDITOR is not set, .B bashbug -defaults to -.BR emacs . +attempts to locate a number of alternative editors, including +.BR emacs , +and defaults to \fBvi\fP. .TP .B HOME Directory in which the failed bug report is saved if the mail fails. diff --git a/doc/bashbug.ps b/doc/bashbug.ps index efbcdda..a5df73f 100644 --- a/doc/bashbug.ps +++ b/doc/bashbug.ps @@ -1,20 +1,20 @@ %!PS-Adobe-3.0 -%%Creator: groff version 1.19.2 -%%CreationDate: Mon Nov 17 17:38:06 2008 +%%Creator: groff version 1.22.3 +%%CreationDate: Mon Mar 28 15:34:55 2016 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic -%%DocumentSuppliedResources: procset grops 1.19 2 +%%DocumentSuppliedResources: procset grops 1.22 3 %%Pages: 1 %%PageOrder: Ascend -%%DocumentMedia: Default 595 842 0 () () +%%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait %%EndComments %%BeginDefaults %%PageMedia: Default %%EndDefaults %%BeginProlog -%%BeginResource: procset grops 1.19 2 +%%BeginResource: procset grops 1.22 3 %!PS-Adobe-3.0 Resource-ProcSet /setpacking where{ pop @@ -72,6 +72,7 @@ exch pop add exch pop /level0 save def 1 setlinecap 1 setlinejoin +DEFS/BPhook known{DEFS begin BPhook end}if 72 RES div dup scale LS{ 90 rotate @@ -137,7 +138,10 @@ pop findfont dup maxlength 1 index/FontName known not{1 add}if dict begin { -1 index/FID ne{def}{pop pop}ifelse +1 index/FID ne +2 index/UniqueID ne +and +{def}{pop pop}ifelse }forall /Encoding exch def dup/FontName exch def @@ -175,8 +179,10 @@ newpath userdict begin /showpage{}def /setpagedevice{}def +mark }bind def /PEND{ +cleartomark countdictstack CNT sub{end}repeat level1 restore }bind def @@ -189,17 +195,17 @@ setpacking %%EndProlog %%BeginSetup %%BeginFeature: *PageSize Default -<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice +<< /PageSize [ 612 792 ] /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 +def/PL 792 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/.notdef/space/exclam/quotedbl/numbersign/dollar/percent +/.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 @@ -229,13 +235,14 @@ def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron %%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 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SHB).35 E 116.13 +(UG\(1\) General)-.1 F(Commands Manual)2.5 E -.35(BA)118.63 G(SHB).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 @@ -265,20 +272,23 @@ F0(in the in)2.5 E -.2(vo)-.4 G(king user').2 E 2.5(sh)-.55 G (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 +F2(EDIT)108 300 Q(OR)-.18 E F0 .327(Speci\214es the preferred editor)144 +312 R 2.827(.I)-.55 G(f)-2.827 E F4(EDIT)2.827 E(OR)-.162 E F0 .327 +(is not set,)2.577 F F2(bashb)2.827 E(ug)-.2 E F0 .328 +(attempts to locate a number of alter)2.827 F(-)-.2 E(nati)144 324 Q .3 +-.15(ve e)-.25 H(ditors, including).15 E F2(emacs)2.5 E F0 2.5(,a)C +(nd def)-2.5 E(aults to)-.1 E F2(vi)2.5 E F0(.)A F2(HOME)108 340.8 Q F0 +(Directory in which the f)144 352.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 369.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 +381.6 Q F1(SEE ALSO)72 398.4 Q F3(bash)108 410.4 Q F0(\(1\))A F1 -.548 +(AU)72 427.2 S(THORS).548 E F0(Brian F)108 439.2 Q(ox, Free Softw)-.15 E +(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 451.2 Q(g)-.18 E +(Chet Rame)108 468 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 +108 480 Q(GNU Bash-4.4)72 768 Q(2016 February 15)138.46 E(1)193.45 E 0 +Cg EP %%Trailer end %%EOF diff --git a/doc/bashref.dvi b/doc/bashref.dvi index f56627f8eb9e0b3e0c5b2c11d3b7dae87180a7b0..6b4fc4912415f4c866b9d7998ae0703af0765ed9 100644 GIT binary patch delta 81791 zcmaI9cVJXS_dlFFb5lqt2}$TB^aMyCg;1pVP|0# zL@^XA#)n0*fIb#fR4kzIpzJD$;3FvZ`um)jdpE)7`@a8Vvv=msoH=v)IWv2Bea|-! zWo~Sjl%LhRe^&3l1G4*O=iM6>6{Q*bf9UL;+D04atw_b6J2z^1MsqE@dtO%c&JCM1 z`+Y;E+AAvUWgDOAFmL08&+INQuPMsuotEeH*UMGMrkfHp^J24bYMvIjm`( zyq-Sv>1+JsMT6eT$g19(n47!7+catPv=WEg$3OnY;STVRFO4d6R63mHMqXB4PcIL> zQ)+Wp8dVjTv(Q#)FEsl4|F7|6S7(uNbwI_Fy~jqyU(Jm&`tv3?8lxxPK*-Aq_u{;8z$mt?z!_+a<)0po4yP4hYa+{E3RoBQ~Vz4W& zlkp`dSwwlrFg}BDv_{v3>W@T4b?@ILiy}?M2Ys)w0=hu#j+o>68-Qya0 zV-Btep?Pm3jA{JXAdPE#l4`a2ZfZ`<^2T+)m6~_7tD7>%o0yw3(%!IKV$Qq#Zzc2&^mczhjvuYH+Xv|jn2)=&dTw|U+puw%30|sFZOC5 zOtl6{kN3t++ZM`~gJdLk)xFwHO>2{8_Rui;$y?2abtxTq)bID!9=UV8)*yDphvwrS zQaiAyBgX3SgKB{!dSk?VvuQ^2jy&o=HjI>qH)iiOAJ?|%gBcRyjii}hbo0h;m=fws zGe^M8B``-g%gXFT9+hry)N_AZptivHgRWOE7%N+2hq|w`+OP#NkG~V@S8uSKtZW)= zs-vu;)K0uY!`jLVG3ME`=1L0E)hmX#U2D#Id}a-o2CO{U)odG^)`@HH&Z=E7YXp`U zH|fz(e~GO_9lG$1rHxEv#e6%>eBPu}I@ZX?pdndH@W!t5hO&FhH>P*)&RMq+Sp3xl zZ`|H{tmmFCUAT5~Azt8G4{zM9FNU)7u31SRg_a7J6I@tecf0MNryidG+$ycXlWC!B zMFcmdW1Ak@hsX12;*Q^24WDOV2~oSP9JRckdZl5Y0&}2!p&W1oNOMbe z8sFGz3i?me;$t4zW<76|n+7}$@2eVO|LqCoV?()WaerS&Fm*~c zM~Z!PMkrUU;@%-GdDN3%qd^LZ^f+&9b~ZH{!-ntgou9no;DCV;_ zL%G=ZT~fyI5n$-!V@xc^PW8$*NP(h}y)a|xRRb&pBwQY7HLM*qlt=v%i|6A~y|GJg zG@qNim7mqes2G`I>>SmZU4NQ7VckbNS}#9#eODfJ^e%HR#=RTLRWc|2hIXKw##luq z5V&T#_58&#SzP;Z5XK==UUY}`{NmW2oK5%FD%y|x*^IGGDfq3D| zdDipS$9Lo`sk1~ue4H`gdOl=g2H$wgJ!*oOQ^&36b8pNBUh)mE@1ywGsVhRcAYu$( zGARdGN${iptH8>JvsQy+ay!m?9l`>LC*q!ApYJ6XL`ZSDt<>$+-nz%?o!;FWH~xc2?+zqn`^ml~_R><4Hd6~+j*3e6#>zV) z@1%NTetIjE2MXLnb;ip}|YsJS`w z*N3PDOIUGR7ak>+STxe|a41iLZ-i!K0vkOX*ao8eC-#T(F)QAfFbfjm$?E|U(S2<1 zYOCScY)A-k8bggBG_~p&$_FXpjUjVEqRkswi%4whjoCUa)K{{RrChJrTE}lp-CU>M z8fjQULc>e5`jS#qDzyOOBtKp4bIiet5H(@^hYPX)(Q6{(=X>MsdP_EvT7X?}X;waI zQZfs?(M3hqd;h8_vfC=FTqFZmue)~A_=SI5n$^$3n<0ujf_nE_gSWtv*IWrvJ7&JY zfticmM`MAO{R0dqVvbt?w)A&9#?a0rp7�_g;HT+th1ESuDh6FUkoH}VW46Nt@?6fi8h&fmg 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 - - - + + +Bash Reference Manual + + + + + + + + + + + + - - - - - - + - + +

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.3, 2 February 2014). -The Bash home page is http://www.gnu.org/software/bash/. -

-This is Edition 4.3, last updated 2 February 2014, -of The GNU Bash Reference Manual, -for Bash, Version 4.3. -

-Bash contains features that appear in other popular shells, and some + + + + + + + +

Table of Contents

+ +
+ + +
+ + + +
+

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

+
+ +

Bash Features

+ +

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

+

This is Edition 4.4, last updated 7 September 2016, +of The GNU Bash Reference Manual, +for Bash, Version 4.4. +

+

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

+

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 +

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

+ versions of /bin/sh. +

GNU Free Documentation License:  Copying and sharing this documentation. +
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.
-

+


+ +
+

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

+
+ +

1 Introduction

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

1.1 What is Bash?

- -

+


+ + + +

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', +

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

+

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 +

+

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, +independently-supported ports exist for MS-DOS, OS/2, and Windows platforms. -

+

+
+ +
+

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

+
+ +

1.2 What is a shell?

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

1.2 What is a shell?

- -

- -At its base, a shell is simply a macro processor that executes +

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 +

+

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

+

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 +

+

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

+

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

+

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 +

+

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 +

+
+ +
+

+Next: , Previous: , 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 +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 +

+
+
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 +‘||’, ‘&&’, ‘&’, ‘;’, ‘;;’, ‘;&’, ‘;;&’, +‘|’, ‘|&’, ‘(’, 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 +

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

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

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

+
+
metacharacter
+
+

A character that, when unquoted, separates words. A metacharacter is +a space, tab, newline, 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 +Also referred to as an identifier. +

+
+
operator
+
+

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

+
+
process group
+
+

A collection of related processes each having the same process +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 +

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

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

+


+ +
+

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

+
+ +

3 Basic Shell Features

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

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

+


+ + + +

3.1 Shell Syntax

+ + + + + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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 +

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 +comment, the shell ignores the comment symbol (‘#’), and the rest of that line. - -Otherwise, roughly speaking, the shell reads its input and +

+

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

+

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 +command, waits for the command’s exit status, and makes that exit status available for further inspection or processing. -

+

+
+ +
+

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

+
+ +

3.1.1 Shell Operation

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

3.1.1 Shell Operation

- -

- -The following is a brief description of the shell's operation when it +

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. -
      -
    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 Quoting. These tokens are separated by +metacharacters. Alias expansion is performed by this step +(see Aliases). -
    3. -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). -

      +

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

      - -

    6. -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) +
    7. Performs the various shell expansions (see Shell Expansions), breaking +the expanded tokens into lists of filenames (see Filename Expansion) and commands and arguments. -

      -

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

      -

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

      +

    11. Executes the command (see Executing Commands). -
    12. -Optionally waits for the command to complete and collects its exit -status (see section 3.7.5 Exit Status). -

      +

    13. Optionally waits for the command to complete and collects its exit +status (see 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.
-

+


+ +
+

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

+
+ +

3.1.2 Quoting

+ + + + + + + + -Quoting is used to remove the special meaning of certain +

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

+

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

- - -


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

3.1.2.1 Escape Character

- -A non-quoted backslash `\' is the Bash escape character. +

+

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

+
+ +
+

+Next: , Up: Quoting   [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 +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: , Up: Quoting   [Contents][Index]

+
+ +

3.1.2.2 Single Quotes

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

3.1.2.2 Single Quotes

- -

- -Enclosing characters in single quotes (`'') preserves the literal value +

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: , Up: Quoting   [Contents][Index]

+
+ +

3.1.2.3 Double Quotes

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

3.1.2.3 Double Quotes

- -

- -Enclosing characters in double quotes (`"') preserves the literal value +

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). +‘$’, ‘`’, ‘\’, +and, when history expansion is enabled, ‘!’. +When the shell is in +POSIX mode (see Bash POSIX Mode), +the ‘!’ has no special meaning +within double quotes, even 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. +‘$’, ‘`’, ‘"’, ‘\’, 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 `!' +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 backslash preceding the ‘!’ is not removed. +

+

The special parameters ‘*’ and ‘@’ have special meaning +when in double quotes (see Shell Parameter Expansion). +

+
+ +
+

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

+
+ +

3.1.2.4 ANSI-C Quoting

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

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 +

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

+
\?
+

question mark +

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

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

+

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

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

+

+
+ +
+

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

+
+ +

3.1.2.5 Locale-Specific Translation

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

3.1.2.5 Locale-Specific Translation

- -

- -A double-quoted string preceded by a dollar sign (`$') will cause +

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

+ + + +

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

+TEXTDOMAINDIR/LC_MESSAGES/LC_MESSAGES/TEXTDOMAIN.mo. +

+
+ +
+

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

+
+ +

3.1.3 Comments

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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 `#' +

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 +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 +See Interactive Shells, for a description of what makes a shell interactive. -

+

+
+ + + +

3.2 Shell Commands

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

3.2 Shell Commands

- -

- -A simple shell command such as echo a b c consists of the command +

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 +

+

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

+


+ +
+

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

+
+ +

3.2.1 Simple Commands

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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 +

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 section 3.7.5 Exit Status) of a simple command is +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. -

+by the POSIX 1003.1 waitpid function, or 128+n if +the command was terminated by signal n. +

+
+ +
+

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

+
+ +

3.2.2 Pipelines

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

3.2.2 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]] [!] command1 [ | or |& command2 ] …
+
-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 +

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 +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 error, in addition to +

+

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

- -The reserved word time causes timing statistics +

+

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

- -When the shell is in POSIX mode (see section 6.11 Bash POSIX Mode), time +time command cannot time these easily. +

+

When the shell is in POSIX mode (see 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 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 +

+

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 section 3.7.3 Command Execution Environment). The exit +

+

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 section 4.3.1 The Set Builtin). -If pipefail is enabled, the pipeline's return status is 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 +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: , Up: Shell Commands   [Contents][Index]

+
+ +

3.2.3 Lists of Commands

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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 `&', +

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 +

+

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 `&', +

+

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. +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), +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 +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 +

+

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
+
-An AND list has the form -
 
command1 && command2
-

- -command2 is executed if, and only if, command1 +

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

+

+

An OR list has the form +

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

- -command2 is executed if, and only if, command1 +

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 +

+

The return status of +AND and OR lists is the exit status of the last command executed in the list. -

+

+
+ +
+

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

+
+ +

3.2.4 Compound Commands

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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. +

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 +Any redirections (see 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 +

+

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 +

+

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

+

+
+ + + +

3.2.4.1 Looping Constructs

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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
+
-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. +

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

+in consequent-commands, or zero if none was executed. +

+
+
while
+
+

The syntax of the while command is: +

+
+
while test-commands; do consequent-commands; done
+
-
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. +

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

+in consequent-commands, or zero if none was executed. +

+
+
for
+
+

The syntax of the for command is: +

+
+
for name [ [in [words …] ] ; ] do commands; done
+
-
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). +

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

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

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

+

+
+ + + +

3.2.4.2 Conditional Constructs

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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;]
+
+
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 +

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

case will selectively execute the command-list corresponding to +the first pattern that matches word. +If the nocasematch shell option +(see the description of shopt in 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 `)' +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 +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 +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 `;;&'. +

+

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

+

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

+
+
echo -n "Enter the name of an animal: "
 read ANIMAL
-echo -n "The $ANIMAL has "
+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";;
+  horse | dog | cat) echo -n "four";;
+  man | kangaroo ) echo -n "two";;
+  *) echo -n "an unknown number of";;
 esac
-echo " legs."
-

+echo " legs." + -

-If the `;;' operator is used, no subsequent matches are attempted after +

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 +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 return status is zero if no pattern is matched. Otherwise, the -return status is the exit status of the command-list executed. -

+

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

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 +‘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. +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 +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 *;
+

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

+ -

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

+

+
((…))
+
+
(( expression ))
+
-The arithmetic expression is evaluated according to the rules -described below (see section 6.5 Shell Arithmetic). +

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 section 4.2 Bash Builtin Commands, for a full description of the let builtin. -

+

+
let "expression"
+
+

See Bash Builtins, for a full description of the let builtin. +

+
+
[[…]]
+
+ +
+
[[ expression ]]
+
-
[[...]] -
- -
 
[[ expression ]]
-

- -Return a status of 0 or 1 depending on the evaluation of -the conditional 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 in -6.4 Bash Conditional Expressions. +Bash Conditional Expressions. Word splitting and filename expansion are not performed on the words -between the [[ and ]]; tilde expansion, parameter and +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 +Conditional operators such as ‘-f’ must be unquoted to be recognized as primaries. -

- -When used with [[, the `<' and `>' operators sort +

+

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

- -When the `==' and `!=' operators are used, the string to the +

+

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, -as if the extglob shell option were enabled. -The `=' operator is identical to `=='. -If the shell option nocasematch -(see the description of shopt in 4.3.2 The Shopt Builtin) +to the rules described below in Pattern Matching, +as if the extglob shell option were enabled. +The ‘=’ operator is identical to ‘==’. +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. -The return value is 0 if the string matches (`==') or does not -match (`!=')the pattern, and 1 otherwise. +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 `!='. +

+

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)). +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) +expression’s return value is 2. +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. Any part of the pattern may be quoted to force the quoted portion @@ -1394,748 +1455,683 @@ 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 +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) +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 ]]
-

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

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. +expressions while paying attention to the shell’s quote removal. Using a shell variable to store the pattern decreases these problems. For example, the following is equivalent to the above: -
 
pattern='[[:space:]]*(a)?b'
+

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

+ -If you want to match a character that's special to the regular expression +

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 +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 `.'. +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='\.'
+The following two sets of commands are not equivalent:
+

+
pattern='\.'
 
 [[ . =~ $pattern ]]
 [[ . =~ \. ]]
 
-[[ . =~ "$pattern" ]]
+[[ . =~ "$pattern" ]]
 [[ . =~ '\.' ]]
-

+ -The first two matches will succeed, but the second two will not, because +

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 +‘.’, 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 +

+

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

- -

-
( expression ) -
Returns the value of expression. +

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

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

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

- -

+


+ + + +

3.2.4.3 Grouping Commands

+ -Bash provides two ways to group a list of commands to be executed +

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 )
+
-
-
() -
 
( 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 +

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; }
+
-
{} -
- -
 
{ list; }
-

- -Placing a list of commands between curly braces causes the list to +

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

-

+The semicolon (or newline) following list is required. +

+
-In addition to the creation of a subshell, there is a subtle difference +

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

+from the list by whitespace. +

+

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

+
+ +
+

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

+
+ +

3.2.5 Coprocesses

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

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

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

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

+

When the coprocess is executed, the shell creates an array variable +(see 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 +and that file descriptor is assigned to NAME[0]. +The standard input of command is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to NAME[1]. +and that file descriptor is assigned to NAME[1]. This pipe is established before any redirections specified by the -command (see section 3.6 Redirections). +command (see Redirections). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. The file descriptors are not available in subshells. -

- -The process ID of the shell spawned to execute the coprocess is -available as the value of the variable NAME_PID. -The wait +

+

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

+
+ +
+

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

+
+ +

3.2.6 GNU Parallel

-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

- -

- -There are ways to run commands in parallel that are not built into Bash. +

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 +

+

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

+

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

- -For example, it is easy to replace xargs to gzip all html files in the +

+

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

+

+
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
+
-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. -While using ls will work in most instances, it is not sufficient to +

As you can see, the {} is replaced with each line read from standard input. +While using ls will work in most instances, it is not sufficient to deal with all filenames. If you need to accommodate special characters in filenames, you can use -

+

+
+
find . -depth 1 \! -name '.*' -print0 | parallel -0 mv {} destdir
+
-
 
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 +

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
-

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

GNU Parallel can replace certain common idioms that operate on lines read from a file (in this case, filenames listed one per line): -
 
	while IFS= read -r x; do
-		do-something1 "$x" "config-$x"
-		do-something2 < "$x"
-	done < file | process-output
-

+

+
	while IFS= read -r x; do
+		do-something1 "$x" "config-$x"
+		do-something2 < "$x"
+	done < file | process-output
+
-with a more compact syntax reminiscent of lambdas: -
 
cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output
-

+

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 +

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 +

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

This will recompress all files in the current directory with names ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. -(We use ls for brevity here; using find as above is more +(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
+
-
 
parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
-

- -If a command generates output, you may want to preserve the input order in +

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

- -Finally, Parallel can be used to run a sequence of shell commands in parallel, -similar to `cat file | bash'. +

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

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

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

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

+

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

+

+
+
parallel -j 10 < file
+
-
 
parallel -j 10 < file
-

- -will evaluate the commands using the shell (since no explicit command is +

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

+

+
+ + + +

3.3 Shell Functions

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

3.3 Shell Functions

- -

- -Shell functions are a way to group commands for later execution +

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. +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 ]
+
-Functions are declared using this syntax: - -
 
name () compound-command [ redirections ]
-

+

or +

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

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 +The body of the function is the compound command +compound-command (see Compound Commands). +That command is usually a list enclosed between { and }, but +may be any compound command listed above, +with one exception: If the function reserved word is used, but the +parentheses are not supplied, the braces are required. +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 +When the shell is in POSIX mode (see Bash POSIX Mode), +name may not be the same as one of the special builtins +(see Special Builtins). +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 section 4.1 Bourne Shell Builtins). -

- -The exit status of a function definition is zero unless a syntax error +

+

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 +

+

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

+

All other aspects of the shell execution environment are identical between a function and its caller with these exceptions: -the DEBUG and RETURN traps +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 +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 +See 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 +

+

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

+

Function names and definitions may be listed with the +-f option to the declare (typeset) +builtin command (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 +(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). +-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. +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 +

+

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

+

+
+ + + +

3.4 Shell Parameters

+ + + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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 +

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 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 +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, +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). +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. +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 +alias, +declare, typeset, export, readonly, +and local builtin commands (declaration commands). +When in POSIX mode (see Bash POSIX Mode), these builtins may appear +in a command after one or more instances of the command builtin and retain these assignment statement properties. -

- -In the context where an assignment statement is assigning a value -to a shell variable or array index (see section 6.7 Arrays), the `+=' +

+

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 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 +append to or add to the variable’s previous value. +This includes arguments to builtin commands such as declare that +accept assignment statements (declaration commands). +When ‘+=’ is applied to a variable for which the integer attribute +has been set, value is 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 (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. +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 Bash Builtins) +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. +Whenever the nameref variable is referenced, assigned to, unset, or has +its attributes modified (other than using or changing the nameref +attribute itself), the +operation is actually performed on the variable specified by the nameref +variable’s value. A nameref is commonly used within shell functions to refer to a variable whose name is passed as an 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 +

+
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, +References and assignments to ref, and changes to its attributes, +are treated as references, assignments, and attribute modifications +to the variable whose name was passed as $1. +

+

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. +Array variables cannot be given the nameref 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 +Namerefs can be unset using the -n option to the unset builtin +(see 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. -

+

+
+ + + +

3.4.1 Positional Parameters

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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. +

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 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 section 3.3 Shell Functions). -

- -When a positional parameter consisting of more than a single +(see Shell Functions). +

+

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

+

+
+ + + +

3.4.2 Special Parameters

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

3.4.2 Special Parameters

- -

- -The shell treats several parameters specially. These parameters may +

The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed. -

- -

- - -
* -
- -($*) Expands to the positional parameters, starting from one. +

+
+
* + +
+
+

($*) Expands to the positional parameters, starting from one. When the expansion is not within double quotes, each positional parameter expands to a separate word. In contexts where it is performed, those words are subject to further word splitting and pathname expansion. When the expansion occurs within double quotes, it expands to a single word -with the value of each parameter separated by the first character -of the IFS -special variable. That is, "$*" is equivalent -to "$1c$2c...", where c -is the first character of the value of the IFS +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 +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 +

+
+
@ + +
+
+

($@) 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" .... +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 -$@ +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 +

+
+
# + +
+
+

($#) 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 +

+
+
- + +
+
+

($-, 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 job most recently placed into the +(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 job most recently placed into the background, whether executed as an asynchronous command or using -the bg builtin (see section 7.2 Job Control Builtins). -

- - -

0 -
- -($0) Expands to the name of the shell or shell script. This is set at +the bg builtin (see Job Control Builtins). +

+
+
0 + +
+
+

($0) Expands to the name of the shell or shell script. This is set at shell initialization. If Bash is invoked with a file of commands -(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 +(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.) +

+
+
_ + +
+
+

($_, 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. @@ -2144,404 +2140,367 @@ 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

- -

+


+ + + +

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

+

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

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

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

+

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

- -Only brace expansion, word splitting, and filename expansion +

+

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

+

Only brace expansion, word splitting, and filename expansion can change the number of words of the expansion; other expansions expand a 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) +"$@" (see Special Parameters) and "${name[@]}" +(see Arrays). +

+

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

+

+
+ + + +

3.5.1 Brace Expansion

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

3.5.1 Brace Expansion

- -

- -Brace expansion is a mechanism by which arbitrary strings may be generated. +

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), +filename expansion (see Filename Expansion), but the filenames generated need not exist. -Patterns to be brace expanded take the form of an optional preamble, +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. +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. +

+

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
+

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

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 +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 +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, +lexicographically between x and y, inclusive, using the default C locale. -Note that both x and y must be of the same type. +Note that both x and y must be of the same type. 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, +

+

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 `${' +To avoid conflicts with parameter expansion, the string ‘${’ is not considered eligible for brace expansion. -

- -A correctly-formed brace expansion must contain unquoted opening +

+

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 +

+

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 `${' +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 +

+

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

+

+
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

- -

+


+ + + +

3.5.2 Tilde Expansion

+ + -If a word begins with an unquoted tilde character (`~'), all of the +

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 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. +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 +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 `-', +

+

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). +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 +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 `='. +

+

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, +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’ +

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

+


+ + + +

3.5.3 Shell Parameter Expansion

+ + -
-
~ -
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, +

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 `}' +

+

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 +

+

The basic form of parameter expansion is ${parameter}. +The value of parameter is substituted. +The parameter is a shell parameter as described above +(see Shell Parameters) or an array reference (see 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 +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 (!), +

+

If the first character of parameter is an exclamation point (!), +and parameter is not a nameref, it introduces a level of variable indirection. Bash uses the value of the variable formed from the rest of -parameter as the name of the variable; this variable is then +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[@]} +than the value of parameter itself. +This is known as indirect expansion. +If parameter is a nameref, this expands to the name of the +variable referenced by parameter instead of performing the +complete indirect expansion. +The exceptions to this are the expansions of ${!prefix*} +and ${!name[@]} described below. The exclamation point must immediately follow the left brace in order to introduce indirection. -

- -In each of the cases below, word is subject to tilde expansion, +

+

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

+

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

+
+
${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 +

+
+
${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 +is not interactive, exits. Otherwise, the value of parameter is substituted. -

- -

${parameter:+word} -
If parameter +

+
+
${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 +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 +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 +length and offset are arithmetic expressions +(see 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, +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 +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. +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 +one space to avoid being confused with the ‘:-’ expansion. +

+

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

- -@verbatim -$ string=01234567890abcdefgh +

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

$ echo ${string:7:2} 78 @@ -2550,7 +2509,6 @@ $ echo ${string:7:-2} $ echo ${string: -7} bcdefgh $ echo ${string: -7:0} -

$ echo ${string: -7:2} bc @@ -2560,7 +2518,6 @@ $ set -- 01234567890abcdefgh $ echo ${1:7} 7890abcdefgh $ echo ${1:7:0} -

$ echo ${1:7:2} 78 @@ -2569,7 +2526,6 @@ $ echo ${1:7:-2} $ echo ${1: -7} bcdefgh $ echo ${1: -7:0} -

$ echo ${1: -7:2} bc @@ -2579,7 +2535,6 @@ $ array[0]=01234567890abcdefgh $ echo ${array[0]:7} 7890abcdefgh $ echo ${array[0]:7:0} -

$ echo ${array[0]:7:2} 78 @@ -2588,60 +2543,51 @@ $ echo ${array[0]:7:-2} $ 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 +

+

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

+
$ 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:0} -$ echo ${7:2} +$ echo ${@:7:2} 7 8 -$ echo ${7:-2} -bash: -2: substring expression < 0 -$ echo ${ -7:2} +$ echo ${@:7:-2} +bash: -2: substring expression < 0 +$ echo ${@: -7:2} b c -$ echo ${0} +$ echo ${@:0} ./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h -$ echo ${0:2} +$ echo ${@:0:2} ./bash 1 -$ echo ${ -7:0} -

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

+

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

+
$ 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}
@@ -2649,566 +2595,548 @@ $ echo ${array[@]:7:2}
 $ echo ${array[@]: -7:2}
 b c
 $ echo ${array[@]: -7:-2}
-bash: -2: substring expression < 0
+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 +

+

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

- -Substring indexing is zero-based unless the positional parameters +

+

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

+
+
${!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 +

+
+
${!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 +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 +

+
+
${#parameter}
+

The length in characters of the expanded value of parameter is substituted. -If parameter is `*' or `@', the value substituted +If parameter is ‘*’ or ‘@’, the value substituted is the number of positional parameters. -If parameter is an array name subscripted by `*' or `@', +If parameter is an array name subscripted by ‘*’ or ‘@’, the value substituted is the number of elements in the array. -If parameter +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 +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 +

+
+
${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 `*', +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 `*', +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 +

+
+
${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 `*', +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 `*', +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 +

+
+
${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 `*', +Parameter is expanded and the longest match of pattern +against its value is replaced with string. +If pattern begins with ‘/’, all matches of pattern are +replaced with string. Normally only the first match is replaced. +If pattern begins with ‘#’, it must match at the beginning +of the expanded value of parameter. +If pattern begins with ‘%’, it must match at the end +of the expanded value of parameter. +If string is null, matches of pattern are deleted +and the / following pattern may be omitted. +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) +is enabled, the match is performed without regard to the case +of alphabetic characters. +If parameter is ‘@’ or ‘*’, the substitution operation is applied to each positional parameter in turn, and the expansion is the resultant list. -If parameter -is an array variable subscripted with `@' or `*', +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 +

+
+
${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. +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 +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 ‘^^’ 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 +If pattern is omitted, it is treated like a ‘?’, which matches every character. -If parameter is `@' or `*', +If parameter is ‘@’ or ‘*’, the case modification operation is applied to each positional parameter in turn, and the expansion is the resultant list. -If parameter -is an array variable subscripted with `@' or `*', +If parameter +is an array variable subscripted with ‘@’ or ‘*’, the case modification operation is applied to each member of the array in turn, and the expansion is the resultant list. -

-

+

+
+
${parameter@operator}
+

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

+
+
Q
+

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

+
E
+

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

+
P
+

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

+
A
+

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

+
a
+

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

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

3.5.4 Command Substitution

- -

+

If parameter is ‘@’ or ‘*’, +the 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 operation is applied to each member of the +array in turn, and the expansion is the resultant list. +

+

The result of the expansion is subject to word splitting and pathname +expansion as described below. +

+
-Command substitution allows the output of a command to replace +
+ + + +

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

+

+
$(command)
+
+

or +

+
`command`
+
-Bash performs the expansion by executing command and -replacing the command substitution with the standard output of the +

Bash performs the expansion by executing command in a subshell environment +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, +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 `\'. +‘$’, ‘`’, or ‘\’. The first backquote not preceded by a backslash terminates the command substitution. -When using the $(command) form, all characters between +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 +

+

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

- -If the substitution appears within double quotes, word splitting and +

+

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

+

+
+ + + +

3.5.5 Arithmetic Expansion

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

3.5.5 Arithmetic Expansion

- -

- -Arithmetic expansion allows the evaluation of an arithmetic expression +

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

+

+
+
$(( expression ))
+
-
 
$(( expression ))
-

- -The expression is treated as if it were within double quotes, but +

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

- -The evaluation is performed according to the rules listed below -(see section 6.5 Shell Arithmetic). +

+

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

+

+
+ + + +

3.5.6 Process Substitution

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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. +

Process substitution allows a process’s input or output to be +referred to using a filename. 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 +

+
<(list)
+
+

or +

+
>(list)
+
+

The process list is run asynchronously, and its input or output +appears as a filename. +This filename 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 > +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 +Process substitution is supported on systems that support named +pipes (FIFOs) or the /dev/fd method of naming open files. +

+

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

+

+
+ + + +

3.5.7 Word Splitting

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

3.5.7 Word Splitting

- -

- -The shell scans the results of parameter expansion, command substitution, +

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 shell treats each character of $IFS as a delimiter, and splits the results of the other expansions into words using these characters as field terminators. -If IFS is unset, or its value is exactly <space><tab><newline>, +If IFS is unset, or its value is exactly <space><tab><newline>, the default, then sequences of - <space>, <tab>, and <newline> + <space>, <tab>, and <newline> at the beginning and end of the results of the previous -expansions are ignored, and any sequence of IFS +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 +If IFS has a value other than the default, then sequences of +the whitespace characters space, tab, and newline 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 +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. +If the value of IFS is null, no word splitting occurs. +

+

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

- -Note that if no expansion occurs, no splitting +null argument results and is retained +and passed to a command as an empty string. +When a quoted null argument appears as part of a word whose expansion is +non-null, the null argument is removed. +That is, the word +-d'' becomes -d after word splitting and +null argument removal. +

+

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

+

+
+ +
+

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

+
+ +

3.5.8 Filename Expansion

+ + + + + + + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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 `['. +

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, +regarded as a pattern, and replaced with an alphabetically sorted list of -filenames matching the pattern (see section 3.5.8.1 Pattern Matching). +filenames matching the pattern (see Pattern Matching). If no matching filenames are found, -and the shell option nullglob is disabled, the word is left +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 +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, +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 +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 `.' +

+

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. +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 +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 +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 +GLOBIGNORE is removed from the list of matches. +If the nocaseglob option is set, the matching against the patterns in +GLOBIGNORE is performed without regard to case. +The filenames +. and .. +are always ignored when GLOBIGNORE is set and not null. -However, setting GLOBIGNORE to a non-null value has the effect of -enabling the dotglob +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. +‘.’ 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 +‘.’, make ‘.*’ one of the patterns in GLOBIGNORE. +The dotglob option is disabled when GLOBIGNORE is unset. -

+

+
+ + + +

3.5.8.1 Pattern Matching

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

3.5.8.1 Pattern Matching

- -

- -Any character that appears in a pattern, other than the special pattern +

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

+

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

+
?
+

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, +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 `-' +‘[’ 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 +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 +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 +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
+[: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 + +

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

+by the current locale) as the character c. +

+

Within ‘[’ and ‘]’, the syntax [.symbol.] +matches the collating symbol symbol. +

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

- -If the extglob shell option is enabled using the shopt +

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 `|'. +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. +

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

+


+ + + +

3.5.9 Quote Removal

-
*(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 +

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

+

+
+ + + +

3.6 Redirections

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

3.6 Redirections

- -

- -Before a command is executed, its input and output -may be redirected +

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 +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. @@ -3218,3098 +3146,2828 @@ 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}. +

+

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

+

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 +‘<’, 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 +is ‘>’, the redirection refers to the standard output (file descriptor 1). -

- -The word following the redirection operator in the following +

+

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

+

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

+
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 +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. +If the operating system on which Bash is running provides these +special files, bash will use them; otherwise it will emulate them +internally with the behavior described below. +

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

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

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 +

+ +

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

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

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

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

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

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

+ +

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

+ +

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

+input (or file descriptor n if n is specified) for a command. +

+

The format of here-documents is: +

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

- -No parameter and variable expansion, command substitution, +

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, +word. If any part of word is 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, +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 `\' +the character sequence \newline is ignored, and ‘\’ must be used to quote the characters -`\', `$', and ``'. -

- -If the redirection operator is `<<-', +‘\’, ‘$’, and ‘`’. +

+

If the redirection operator is ‘<<-’, then all leading tab characters are stripped from input lines and the -line containing delimiter. +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: +

+
[n]<<< word
+
-
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.7 Here Strings

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

- -The word undergoes +

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 +The result is supplied as a single string, +with a newline appended, +to the command on its +standard input (or file descriptor n if n is specified). +

+ +

3.6.8 Duplicating File Descriptors

+

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

+ +

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 +n, or on file descriptor 0 if n is not specified. If the file does not exist, it is created. -

+

+
+ + + +

3.7 Executing Commands

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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 + + + + - - - - -

+ 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. +
- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.1 Simple Command Expansion

- -

+


+ + + +

3.7.1 Simple Command Expansion

+ -When a simple command is executed, the shell performs the following +

When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right. -

- -

    -
  1. -The words that the parser has marked as variable assignments (those +

    +
      +
    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). +
    3. 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. -

      -

    4. -Redirections are performed as described above (see section 3.6 Redirections). -

      +

    5. Redirections are performed as described above (see Redirections). -
    6. -The text after the `=' in each variable assignment undergoes tilde +
    7. 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 +

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 +

+

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 +

+

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

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

3.7.2 Command Search and Execution

- -

- -After a command has been split into words, if it results in a +

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 +

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

      +function is invoked as described in Shell Functions. -

    2. -If the name does not match a function, the shell searches for +
    3. 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. -

      -

    4. -If the name is neither a shell function nor a builtin, +
    5. 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 +$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 +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 searches for a defined shell -function named command_not_found_handle. +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 +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. -

      -

    6. -If the search is successful, or if the command name contains +
    7. 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. -

      -

    8. -If this execution fails because the file is not in executable +
    9. 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. -

      +shell script and the shell executes it as described in +Shell Scripts. -

    10. -If the command was not begun asynchronously, the shell waits for +
    11. 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

- -

+


+ + + +

3.7.3 Command Execution Environment

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

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

+

+
    +
  • open files inherited by the shell at invocation, as modified by +redirections supplied to the exec builtin -
      -
    • -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 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 -
    • -the file creation mode mask as set by umask or inherited from -the shell's parent -

      +

    • current traps set by trap -
    • -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 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 +
    • 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 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) -

      +

    • options enabled by shopt (see The Shopt Builtin) -
    • -shell aliases defined with alias (see section 6.6 Aliases) -

      +

    • shell aliases defined with alias (see 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 -

      +

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

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 +

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

      -

    • -the current working directory -

      +

    • the current working directory -
    • -the file creation mode mask -

      +

    • 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) -

      +

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

      +

    • 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, +

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

+

+
+ + + +

3.7.4 Environment

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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. +

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 +it for export to child processes. Executed commands inherit the environment. -The export and `declare -x' +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 +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 +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. +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 section 4.3.1 The Set Builtin), then all +

+

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 `$_' +

+

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

+

+
+ +
+

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

+
+ +

3.7.5 Exit Status

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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 +

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 +

+

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

+

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 +

+

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

+All builtins return an exit status of 2 to indicate incorrect usage, +generally invalid options or missing arguments. +

+
+ +
+

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

+
+ +

3.7.6 Signals

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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 +

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

+

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

+

+
+ + + +

3.8 Shell Scripts

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

3.8 Shell Scripts

- -

- -A shell script is a text file containing shell commands. When such +

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), +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 +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 +

+

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

+

+
filename arguments
+
+

is equivalent to executing +

+
bash filename arguments
+
-if filename is an executable shell script. +

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) +(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 +

+

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 +the two characters ‘#!’, the remainder of the line specifies an interpreter for the program. -Thus, you can specify Bash, awk, Perl, or some other +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 +

+

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 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: , Up: Top   [Contents][Index]

+
+ +

4 Shell Builtin Commands

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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. +

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

+

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 +

+

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 `--' +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. -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 `--'. +The :, true, false, and test +builtins do not accept options and do not treat ‘--’ specially. +The exit, logout, return, +break, continue, let, +and shift builtins accept and process arguments beginning +with ‘-’ without requiring ‘--’. Other builtins that accept arguments but are not specified as accepting -options interpret arguments beginning with `-' as invalid options and -require `--' to prevent this interpretation. -

+options interpret arguments beginning with ‘-’ as invalid options and +require ‘--’ to prevent this interpretation. +

+
+ + + +

4.1 Bourne Shell Builtins

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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]
+
-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. +

Do nothing beyond expanding arguments and performing redirections. The return status is zero. -

+

+
+
. (a period)
+
+
+
. filename [arguments]
+
-
. (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 +

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

+This builtin is equivalent to source. +

+
+
break
+
+
+
break [n]
+
-
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]
+
-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 +

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. +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 +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' +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 +after a successful directory change, cd will return an unsuccessful status. -

- -On systems that support it, the `-@' option presents the extended +

+

On systems that support it, the -@ option presents the extended attributes associated with a file as a directory. -

- -If directory is `-', it is converted to $OLDPWD +

+

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 +

+

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

+

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

+

+
+
continue
+
+
+
continue [n]
+
-
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 +

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

+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]
+
-
eval -
-
 
eval [arguments]
-

- -The arguments are concatenated together into a single command, which is +

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. +of eval. If there are no arguments or only empty arguments, the return status is zero. -

+

+
+
exec
+
+
+
exec [-cl] [-a name] [command [arguments]]
+
-
exec -
-
 
exec [-cl] [-a name] [command [arguments]]
-

- -If command +

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

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 +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 +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 -
-
 
getopts optstring name [args]
-

- -getopts is used by shell scripts to parse positional parameters. -optstring contains the option characters to be recognized; if a +

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

+

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

+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]
+
-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, +

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. +$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 +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 +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, +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 +The return status is zero unless a name is not found or an invalid option is supplied. -

+

+
+
pwd
+
+
+
pwd [-LP]
+
-
pwd -
-
 
pwd [-LP]
-

- -Print the absolute pathname of the current working directory. -If the `-P' option is supplied, the pathname printed will not +

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 +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]] …
+
-
readonly -
-
 
readonly [-aAf] [-p] [name[=value]] ...
-

- -Mark each name as readonly. +

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

+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]
+
-
return -
-
 
return [n]
-

- -Cause a shell function to stop executing and return the value 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 +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 +If return is executed by a trap handler, the last command used to +determine the status is the last command executed before the trap handler. +if return is executed during a DEBUG trap, the last command +used to determine the status is the last command executed by the trap +handler before return was invoked. +return may also be used to terminate execution of a script +being executed with the . (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 +If n is supplied, the return value is its least significant 8 bits. -Any command associated with the RETURN trap is executed +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 +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. -

+and not during the execution of a script by . or source. +

+
+
shift
+
+
+
shift [n]
+
-
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 +

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 +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 +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
+
-
test -
[ -
- -
 
test expr
-

- -Evaluate a conditional express -ion expr and return a status of 0 +

Evaluate a conditional expression 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 +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. +

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

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

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 +

+
+
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 +(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 -
The following conditions are applied in the order listed. +

+
+
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 +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. -The `-a' and `-o' operators are considered binary operators +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 +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 +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 +

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

+
+
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 `>' +

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

+

+
+
times
+
+
+
times
+
-
times -
-
 
times
-

- -Print out the user and system times used by the shell and its children. +

Print out the user and system times used by the shell and its children. The return status is zero. -

+

+
+
trap
+
+
+
trap [-lp] [arg] [sigspec …]
+
-
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 +

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 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 +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 +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 +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 +Refer to the description of the extdebug option to the +shopt builtin (see 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 +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 ||, +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') +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. +

+

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 +

+

The return status is zero unless a sigspec does not specify a valid signal. -

+

+
+
umask
+
+
+
umask [-p] [-S] [mode]
+
-
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; +

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

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

Remove each variable or function name. +If the -v option is given, each +name refers to a shell variable and that variable is removed. +If the -f option is given, the names refer to shell functions, and the function definition is removed. -If the `-n' option is supplied, and name is a variable with -the nameref attribute, name will be unset rather than the +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 +-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. -

-

+The return status is zero unless a name is readonly. +

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

4.2 Bash Builtin Commands

- -

+


+ + + +

4.2 Bash Builtin Commands

-This section describes builtin commands which are unique to +

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

+Some of these commands are specified in the POSIX standard. +

+
+
alias
+
+
+
alias [-p] [name[=value] …]
+
-
- -
alias -
-
 
alias [-p] [name[=value] ...]
-

- -Without arguments or with the `-p' option, alias prints +

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

+Aliases are described in 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 [-m keymap] keyseq:readline-command
+
-
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) +

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 section 8.3 Readline Init File), +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 +‘"\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 +emacs, +emacs-standard, +emacs-meta, +emacs-ctlx, +vi, +vi-move, +vi-command, and +vi-insert. +vi is equivalent to vi-command (vi-move is also a +synonym); 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 +

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

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

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

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

The return status is zero unless an invalid option is supplied or an error occurs. -

+

+
+
builtin
+
+
+
builtin [shell-builtin [args]]
+
-
builtin -
-
 
builtin [shell-builtin [args]]
-

- -Run a shell builtin, passing it args, and return its exit status. +

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 +The return status is non-zero if shell-builtin is not a shell builtin command. -

+

+
+
caller
+
+
+
caller [expr]
+
-
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 +

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

+

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 …]
+
-
command -
-
 
command [-pVv] command [arguments ...]
-

- -Runs command with arguments ignoring any shell function -named command. +

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

+

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

+zero if command is found, and non-zero if not. +

+
+
declare
+
+
+
declare [-aAfFgilnrtux] [-p] [name[=value] …]
+
-
declare -
-
 
declare [-aAfFgilnrtux] [-p] [name[=value] ...]
-

- -Declare variables and give them attributes. If no names +

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, -other than `-f' and `-F', are ignored. -

- -When `-p' is supplied without name arguments, declare +

+

The -p option will display the attributes and values of each +name. +When -p is used with name arguments, additional options, +other than -f and -F, 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' +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; +

+

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. +If the extdebug shell option is enabled using shopt +(see The Shopt Builtin), the source file name and line number where +each name 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 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 +

+
+
-a
+

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

+
+
-A
+

Each name is an associative 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. -

- -

-l -
When the variable is assigned a value, all upper-case characters are +

+
+
-l
+

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

- -

-n -
Give each name the nameref attribute, making +

+
+
-n
+

Give each name the nameref attribute, making it a name reference to another variable. -That other variable is defined by the value of name. -All references 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 +That other variable is defined by the value of name. +All references, assignments, and attribute modifications +to name, except for those using or changing the +-n attribute itself, are performed on the variable referenced by +name’s value. +The nameref 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 +

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

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

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

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

- -When using `-a' or `-A' and the compound assignment syntax to +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. +

+

When using -a or -A and the compound assignment syntax to create array variables, additional attributes do not take effect until subsequent assignments. -

- -The return status is zero unless an invalid option is encountered, -an attempt is made to define a function using `-f foo=bar', +

+

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, +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'. -

+or an attempt is made to display a non-existent function with -f. +

+
+
echo
+
+
+
echo [-neE] [arg …]
+
-
echo -
-
 
echo [-neE] [arg ...]
-

- -Output the args, separated by spaces, terminated with a +

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

+
\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) -
-

+

+
\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
+
+
+
enable [-a] [-dnps] [-f filename] [name …]
+
-Enable and disable builtin shell commands. +

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

+

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 [-dms] [pattern]
+
-
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 +

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 +

+
-Options, if supplied, have the following meanings: -

+

The return status is zero unless no command matches pattern. +

+
+
let
+
+
+
let expression [expression …]
+
-
-
-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; +

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] …
+
-
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 +

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. +If name is ‘-’, the set of shell options is made local to the +function in which local is invoked: shell options changed using +the set builtin inside the function are restored to their original +values when the function returns. +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]
+
-
logout -
-
 
logout [n]
-

- -Exit a login shell, returning a status of n to the shell's +

Exit a login shell, returning a status of n to the shell’s parent. -

+

+
+
mapfile
+
+
+
mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd]
+    [-C callback] [-c quantum] [array]
+
-
mapfile -
-
 
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. +

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

+
+
-d
+

The first character of delim is used to terminate each input line, +rather than newline. +

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

+

+
-s
+

Discard the first count lines read. +

+
-t
+

Remove a trailing delim (default 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', +

If -C is specified without -c, the default quantum is 5000. -When callback is evaluated, it is supplied the index of the next +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 +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 +

+

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 +

+

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

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

+
+
%b
+

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

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

-

+This is an exception to the usual printf behavior. +

+
-Arguments to non-string format specifiers are treated as C language constants, +

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 +

+

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 …]
+
-
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. +

One line is read from the standard input, or from the file descriptor +fd supplied as an argument to the -u option, +split into words as described above in Word Splitting, +and the first word +is assigned to the first name, the second word to the second name, +and so on. +If there are more words than names, +the remaining words and their intervening delimiters are 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 +The characters in the value of the IFS variable are used to split the line into words using the same rules the shell -uses for expansion (described above in 3.5.7 Word Splitting). -The backslash character `\' may be used to remove any special +uses for expansion (described above in Word Splitting). +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), +variable REPLY. +The exit status is zero, unless end-of-file is encountered, read +times out (in which case the status 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, +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. +

+
+
-e
+

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

- -

-i text -
If Readline is being used to read the line, text is placed into +

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

+
+
-n nchars
+

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

+
+
-N nchars
+

read returns after reading exactly nchars characters rather than waiting for a complete line of input, unless EOF is encountered or -read times out. +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 +not treated specially and do not cause read to return until +nchars characters are read. +The result is not split on the characters in IFS; the intent is +that the variable is assigned exactly the characters read +(with the exception of backslash; see the -r option below). +

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

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

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

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

+
-
-u fd -
Read input from file descriptor fd. -
-

+

+
readarray
+
+
+
readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd]
+    [-C callback] [-c quantum] [array]
+
-
readarray -
-
 
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
+
-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 . (see Bourne Shell Builtins). +

+
+
type
+
+
+
type [-afptP] [name …]
+
-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 +

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

+

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 +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 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] …]
+
-
typeset -
-
 
typeset [-afFgrxilnrtux] [-p] [name[=value] ...]
-

- -The typeset command is supplied for compatibility with the Korn +

The typeset command is supplied for compatibility with the Korn shell. -It is a synonym for the declare builtin command. -

+It is a synonym for the declare builtin command. +

+
+
ulimit
+
+
+
ulimit [-HSabcdefiklmnpqrstuvxPT] [limit]
+
-
ulimit -
-
 
ulimit [-abcdefilmnpqrstuvxHST] [limit]
-

- -ulimit provides control over the resources available to processes +

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 +

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

+
+
-k
+

The maximum number of kqueues that may be allocated. +

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

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

+
+
-P
+

The maximum number of pseudoterminals. +

+
+
-T
+

The maximum number of threads. +

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

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, +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, +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; +-P, +-T, +-b, +-k, +-n and -u, which are unscaled values; +and, when in POSIX Mode (see Bash POSIX Mode), +-c and -f, which are in 512-byte increments. +

+

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 … ]
+
-
unalias -
-
 
unalias [-a] [name ... ]
-

- -Remove each name from the list of aliases. If `-a' is +

Remove each name from the list of aliases. If -a is supplied, all aliases are removed. -Aliases are described in 6.6 Aliases. -

-

+Aliases are described in Aliases. +

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

4.3 Modifying Shell Behavior

- +
+ + + +

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

- -

+


+ + + +

4.3.1 The Set Builtin

-This builtin is so complicated that it deserves its own section. set +

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 …]
+
-
-
set -
-
 
set [--abefhkmnptuvxBCEHPT] [-o option-name] [argument ...]
-set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument ...]
-

- -If no options or arguments are supplied, set displays the names +

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

+
+
-a
+

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

+
+
-b
+

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

+
+
-e
+

Exit immediately if +a pipeline (see Pipelines), which may consist of a single simple command +(see Simple Commands), +a list (see Lists), +or a compound command (see Compound Commands) returns a non-zero status. The shell does not exit if the command that fails is part of the -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 ||, +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 !. +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 +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), 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, +

+

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

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

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

+
+
-m
+

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

- -

-n -
Read commands but do not execute them; this may be used to check a -script for syntax errors. +

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

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

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

+
+
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. +This also affects the editing interface used for read -e. +

+
+
xtrace
+

Same as -x. +

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

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

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

+
+
-B
+

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

- -

-C -
Prevent output redirection using `>', `>&', and `<>' +

+
+
-C
+

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

- -

-E -
If set, any trap on ERR is inherited by shell functions, command +

+
+
-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). +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 resolve symbolic links when performing commands such as -cd which change the current directory. The physical directory +

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

+

For example, if /usr/sys is a symbolic link to /usr/local/sys then: -
 
$ cd /usr/sys; echo $PWD
+

+
$ cd /usr/sys; echo $PWD
 /usr/sys
 $ cd ..; pwd
 /usr
-

+ -If set -P is on, then: -
 
$ cd /usr/sys; echo $PWD
+

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 +
+
-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 +The DEBUG and RETURN traps are normally not inherited in such cases. -

- -

-- -
If no arguments follow this option, then the positional parameters are +

+
+
--
+

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

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

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

+
-The remaining N arguments are positional parameters and are -assigned, in order, to $1, $2, ... $N. -The special parameter # is set to N. -

+


+ + + +

4.3.2 The Shopt Builtin

-The return status is always zero unless an invalid option is supplied. -
-

+

This builtin allows you to change additional shell optional behavior. +

+
+
shopt
+
+
+
shopt [-pqsu] [-o] [optname …]
+
- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ 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 settings controlling optional shell behavior. +

Toggle the values of settings controlling optional shell behavior. The settings can be either those listed below, or, if the -`-o' option is used, those available with the `-o' -option to the set builtin command (see section 4.3.1 The Set Builtin). -With no options, or with the `-p' option, a list of all settable +-o option is used, those available with the -o +option to the set builtin command (see The Set Builtin). +With no options, or with the -p option, a list of all settable options is displayed, with an indication of whether or not each is set. -The `-p' option causes output to be displayed in a form that +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; +

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

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

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

+

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

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

+

The return status when listing options is zero if all optnames are enabled, non-zero otherwise. When setting or unsetting options, -the return status is zero unless an optname is not a valid shell +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. +

+

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 +

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

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

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

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

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

+
+
compat31
+

If set, Bash changes its behavior to that of version 3.1 with respect to quoted -arguments to the conditional command's `=~' operator +arguments to the conditional command’s ‘=~’ operator and with respect to locale-specific -string comparison when using the [[ -conditional command's `<' and `>' operators. +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 +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 +string comparison when using the [[ +conditional command’s ‘<’ and ‘>’ operators (see previous item) +and the effect of interrupting a command list. +Bash versions 3.2 and earlier continue with the next command in the list +after one terminates due to an interrupt. +

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

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

+
+
compat42
+

If set, Bash does not process the replacement string in the pattern substitution word expansion using quote removal. -

- -

complete_fullquote -
If set, Bash +

+
+
compat43
+

If set, Bash +does not print a warning message if an attempt is made to use a quoted compound +array assignment as an argument to declare, +makes word expansion errors +non-fatal errors that cause the current command to fail (the default behavior is +to make them fatal errors that cause the shell to exit), +and does not reset the +loop state when a shell function is executed (this allows break or +continue in a shell function to affect loops in the caller’s context). +

+
+
complete_fullquote
+

If set, Bash quotes all shell metacharacters in filenames and directory names when performing completion. If not set, Bash @@ -6324,966 +5982,949 @@ 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 +

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

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

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

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

+
+
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 section 4.2 Bash Builtin Commands) +

    +
+
extdebug
+

If set at shell invocation, arrange to execute the debugger profile +before the shell starts, identical to the --debugger option. +If set after invocation, behavior intended for use by debuggers is enabled: +

+
    +
  1. The -F option to the declare builtin (see Bash Builtins) 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 +
  3. If the command run by the DEBUG trap returns a non-zero value, the next command is skipped and not executed. -

    -

  4. -If the command run by the DEBUG trap returns a value of 2, and the +
  5. 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. -

    +executed by the . or source builtins), the shell simulates +a call to return. -

  6. -BASH_ARGC and BASH_ARGV are updated as described in their -descriptions (see section 5.2 Bash Variables). -

    +

  7. BASH_ARGC and BASH_ARGV are updated as described in their +descriptions (see Bash Variables). -
  8. -Function tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -DEBUG and RETURN traps. -

    +

  9. Function tracing is enabled: command substitution, shell functions, and +subshells invoked with ( command ) inherit the +DEBUG and RETURN traps. -
  10. -Error tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -ERR trap. -
-

+

  • 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 +
    +
    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 filename expansion +

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

    +
    +
    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. +See Bash Variables, for a description of FIGNORE. This option is enabled by default. -

    - -

    globasciiranges -
    If set, range expressions used in pattern matching bracket expressions -(see section 3.5.8.1 Pattern Matching) +

    +
    +
    globasciiranges
    +

    If set, range expressions used in pattern matching bracket expressions +(see Pattern Matching) behave as if in the traditional C locale when performing -comparisons. That is, the current locale's collating sequence +comparisons. That is, the current locale’s collating sequence is not taken into account, so -`b' will not collate between `A' and `B', +‘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 +

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

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

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

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

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

    +
    +
    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 section 3.7.6 Signals). -

    - -

    interactive_comments -
    Allow a word beginning with `#' +

    +
    +
    huponexit
    +

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

    +
    +
    inherit_errexit
    +

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

    +
    +
    interactive_comments
    +

    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 +

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

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

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

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

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

    +
    +
    nocasematch
    +

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

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

    +
    +
    progcomp
    +

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

    - -

    promptvars -
    If set, prompt strings undergo +

    +
    +
    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). +as described below (see 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). +

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

    +
    +
    shift_verbose
    +

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

    - -

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

    +
    +
    sourcepath
    +

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

    - -

    xpg_echo -
    If set, the echo builtin expands backslash-escape sequences +

    +
    +
    xpg_echo
    +

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

    +

    +
    +
    -
    -

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

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

    -

    +optname is not a valid shell option. +

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

    4.4 Special Builtins

    - -

    +


    + + + +

    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 +

    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. -
        -
      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. -If a special builtin returns an error status, a non-interactive shell exits. -

        - -

      4. -Assignment statements preceding the command stay in effect in the shell +
      5. 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 +

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

    +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
    +
    -These are the POSIX special builtins: -
     
    break : . continue eval exec exit export readonly return set
    -shift trap unset
    -

    +


    + +
    +

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

    +
    + +

    5 Shell Variables

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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. +

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

    +

    +
    + + + +

    5.1 Bourne Shell Variables

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

    5.1 Bourne Shell Variables

    - -

    - -Bash uses certain shell variables in the same way as the Bourne shell. +

    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 +

    +
    +
    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 +(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 or directory name -and the MAILPATH variable +

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

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

    +
    +
    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 +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 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 ‘> ’. +

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

    +


    + + + +

    5.2 Bash Variables

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

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

    +

    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'. +(see 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 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 +

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

    +
    +
    BASH_ALIASES + +
    +

    An associative array variable whose members correspond to the internal +list of aliases as maintained by the alias builtin. +(see Bourne Shell Builtins). +Elements added to this array appear in the alias list; however, +unsetting array elements currently does not cause aliases to be removed +from the alias list. +If BASH_ALIASES +is unset, it loses its special properties, even if it is +subsequently reset. +

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

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

    +
    +
    BASH_CMDS + +
    +

    An associative array variable whose members correspond to the internal +hash table of commands as maintained by the hash builtin +(see Bourne Shell Builtins). +Elements added to this array appear in the hash table; however, +unsetting array elements currently does not cause command names to be removed +from the hash table. +If BASH_CMDS +is unset, it loses its special properties, even if it is +subsequently reset. +

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

    +
    +
    BASH_COMPAT + +
    +

    The value is used to set the shell’s compatibility level. +See 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 +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 +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). +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 +

    +
    +
    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 +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 +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). +Use LINENO to obtain the current line number. +

    +
    +
    BASH_LOADABLES_PATH + +
    +

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

    +
    +
    BASH_REMATCH + +
    +

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

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

    +
    +
    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_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' +
    +
    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 +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 +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 +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 +

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

    +
    +
    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 +Automatically set if the checkwinsize option is enabled +(see 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. +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 section 8.6 Programmable Completion). -

    - - -

    COMP_POINT -
    -The index of the current cursor position relative to the beginning of +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}. +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 +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, +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. +‘%’, 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 +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 +

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

    +
    +
    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. +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 +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 section 8.6 Programmable Completion). +facility (see 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. +

    +
    +
    COPROC + +
    +

    An array variable created to hold the file descriptors +for output from and input to an unnamed coprocess (see 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. +dirs builtin. Assigning to members of this array variable may be used to modify -directories already in the stack, but the pushd and popd +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 +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 + +
    +

    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 +

    +
    +
    ENV + +
    +

    Similar to BASH_ENV; used when the shell is invoked in +POSIX Mode (see 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 +

    +
    +
    EXECIGNORE + +
    +

    A colon-separated list of shell patterns (see Pattern Matching) +defining the list of filenames to be ignored by command search using +PATH. +Files whose full pathnames match one of these patterns are not considered +executable files for the purposes of completion and command execution +via PATH lookup. +This does not affect the behavior of the [, test, and [[ +commands. +Full pathnames in the command hash table are not subject to EXECIGNORE. +Use this variable to ignore shared library files that have the executable +bit set, but are not executable files. +The pattern matching honors the setting of the extglob shell +option. +

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

    +
    +
    FIGNORE + +
    +

    A colon-separated list of suffixes to ignore when performing filename completion. A filename whose suffix matches one of the entries in -FIGNORE +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 +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". +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 +Assignments to FUNCNAME have no effect. +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 +

    +

    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 +

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

    +
    +
    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 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 +The pattern matching honors the setting of the extglob shell +option. +

    +
    +
    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 +Assignments to GROUPS have no effect. +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). +

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

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

    +
    +
    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 +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 +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 +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, +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. +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. +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. @@ -7291,1373 +6932,1254 @@ 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 +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 +

    +
    +
    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 +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. `&' +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. +HISTIGNORE. +The pattern matching honors the setting of the extglob shell +option. +

    +

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

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

    +
    +
    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, +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 +/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 +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 +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 +

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

    +
    +
    LC_TIME + +
    +

    This variable determines the locale category used for data and time +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. +Automatically set if the checkwinsize option is enabled +(see 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) +

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

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

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

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

    +
    +
    PS0 + +
    +

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

    +
    +
    PS3 + +
    +

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

    +
    +
    READLINE_LINE + +
    +

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

    +
    +
    READLINE_POINT + +
    +

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

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

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

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

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

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

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

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

    +

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

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

    +


    + +
    +

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

    +
    + +

    6 Bash Features

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

    +

    This chapter describes features unique to Bash. +

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

    +


    + + + +

    6.1 Invoking Bash

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

    6. Bash Features

    - -

    +

    +
    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 …]
    +
    -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. +

    All of the single-character options used with the set builtin +(see 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 +

    +
    +
    --debugger
    +

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

    - -

    --dump-po-strings -
    A list of all double-quoted strings preceded by `$' +

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

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

    +
    +
    --noprofile
    +

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

    - -

    --norc -
    Don't read the `~/.bashrc' initialization file in an +

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

    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 +command_string, then exit. +If there are arguments after the command_string, +the first argument is assigned to $0 +and any remaining arguments are assigned to the positional parameters. +The assignment to $0 sets the name of the shell, which is used +in warning and error messages. +

    +
    +
    -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'. +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' +‘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 +See 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 +

    +
    +
    -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 `$' +

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

    +
    +
    --
    +

    A -- signals the end of options and disables further option processing. -Any arguments after the -- are treated as filenames and arguments. -

    -

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

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

    +

    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 +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 +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: , Up: Bash Features   [Contents][Index]

    +
    + +

    6.2 Bash Startup Files

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

    6.2 Bash Startup Files

    - -

    - -This section describes how Bash executes its 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). -

    +Tilde Expansion (see Tilde Expansion). +

    +

    Interactive shells are described in Interactive Shells. +

    + +

    Invoked as an interactive login shell, or with --login

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

    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 +The --noprofile option may be used when the shell is started to inhibit this behavior. -

    +

    +

    When an interactive login shell exits, +or a non-interactive login shell executes the exit builtin command, +Bash reads and executes commands from +the file ~/.bash_logout, if it exists. +

    + +

    Invoked as an interactive non-login shell

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

    +

    So, typically, your ~/.bash_profile contains the line +

    +
    if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
    +
    +

    after (or before) any login-specific initializations. +

    + +

    Invoked non-interactively

    - -

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

    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 +

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

    +

    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

    - -

    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 +

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

    +

    When invoked as sh, Bash enters POSIX mode after the startup files are read. -

    +

    + +

    Invoked in POSIX mode

    - -

    Invoked in POSIX mode

    - -

    - -When Bash is started in POSIX mode, as with the -`--posix' command line option, it follows the POSIX standard +

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

    - -

    Invoked by remote shell daemon

    - -

    - -Bash attempts to determine when it is being run with its standard input +

    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. +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 +this fashion, it reads and executes commands from ~/.bashrc, if that file exists and is readable. -It will not do this if invoked as sh. -The `--norc' option may be used to inhibit this behavior, and the -`--rcfile' option may be used to force another file to be read, but -neither rshd nor sshd generally invoke the shell with those +It will not do this if invoked as sh. +The --norc option may be used to inhibit this behavior, and the +--rcfile option may be used to force another file to be read, but +neither rshd nor sshd generally invoke the shell with those options or allow them to be specified. -

    +

    + +

    Invoked with unequal effective and real UID/GIDs

    - -

    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 +

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

    + + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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?
    -

    +


    + + + +

    6.3.1 What is an 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 +

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

    +

    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?

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

    6.3.2 Is this Shell Interactive?

    - -

    - -To determine within a startup script whether or not Bash is +

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

    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
    +

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

    - -

    +


    + + + +

    6.3.3 Interactive Shell Behavior

    -When the shell is running interactively, it changes its behavior in +

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

        +signals SIGTTIN, SIGTTOU, and SIGTSTP. -

      4. -Bash expands and displays PS1 before reading the first line -of a command, and expands and displays PS2 before reading the +
      5. Bash expands and displays PS1 before reading the first line +of a command, and expands and displays PS2 before reading the second and subsequent lines of a multi-line command. -

        +Bash displays PS0 after it reads a command but before executing it. -

      6. -Bash executes the value of the PROMPT_COMMAND variable as a command -before printing the primary prompt, $PS1 -(see section 5.2 Bash Variables). -

        +

      7. Bash executes the value of the PROMPT_COMMAND variable as a command +before printing the primary prompt, $PS1 +(see Bash Variables). -
      8. -Readline (see section 8. Command Line Editing) is used to read commands from -the user's terminal. -

        +

      9. Readline (see Command Line Editing) is used to read commands from +the user’s terminal. -
      10. -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). -

        +

      11. 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). -
      12. -Command history (see section 9.1 Bash History Facilities) -and history expansion (see section 9.3 History Expansion) +
      13. 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 +Bash will save the command history to the file named by $HISTFILE when a shell with history enabled exits. -

        -

      14. -Alias expansion (see section 6.6 Aliases) is performed by default. -

        +

      15. Alias expansion (see Aliases) is performed by default. -
      16. -In the absence of any traps, Bash ignores SIGTERM -(see section 3.7.6 Signals). -

        +

      17. In the absence of any traps, Bash ignores SIGTERM +(see Signals). -
      18. -In the absence of any traps, SIGINT is caught and handled -((see section 3.7.6 Signals). -SIGINT will interrupt some shell builtins. -

        +

      19. In the absence of any traps, SIGINT is caught and handled +((see Signals). +SIGINT will interrupt some shell builtins. -
      20. -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). -

        +

      21. An interactive login shell sends a SIGHUP to all jobs on exit +if the huponexit shell option has been enabled (see Signals). -
      22. -The `-n' invocation option is ignored, and `set -n' has -no effect (see section 4.3.1 The Set Builtin). -

        +

      23. The -n invocation option is ignored, and ‘set -n’ has +no effect (see The Set Builtin). -
      24. -Bash will check for mail periodically, depending on the values of the -MAIL, MAILPATH, and MAILCHECK shell variables -(see section 5.2 Bash Variables). -

        +

      25. Bash will check for mail periodically, depending on the values of the +MAIL, MAILPATH, and MAILCHECK shell variables +(see Bash Variables). -
      26. -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). -

        +

      27. 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). -
      28. -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). -

        +

      29. The shell will not exit on expansion errors caused by var being unset +or null in ${var:?word} expansions +(see Shell Parameter Expansion). -
      30. -Redirection errors encountered by shell builtins will not cause the +
      31. Redirection errors encountered by shell builtins will not cause the shell to exit. -

        -

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

        +

      33. When running in POSIX mode, a special builtin returning an error +status will not cause the shell to exit (see Bash POSIX Mode). -
      34. -A failed exec will not cause the shell to exit -(see section 4.1 Bourne Shell Builtins). -

        +

      35. A failed exec will not cause the shell to exit +(see Bourne Shell Builtins). -
      36. -Parser syntax errors will not cause the shell to exit. -

        +

      37. Parser syntax errors will not cause the shell to exit. -
      38. -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). -

        +

      39. 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). -
      40. -The shell will check the value of the TMOUT variable and exit +
      41. 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). -

        +printing $PS1 (see Bash Variables). -

      -

      +

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

    6.4 Bash Conditional Expressions

    - -

    +


    + + + +

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

    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 +Bash handles several filenames specially when they are used in +expressions. +If the operating system on which Bash is running provides these +special files, Bash will use them; otherwise it will emulate them +internally with this behavior: +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 +

    +

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

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

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

    - -

    +


    + + + +

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

    The shell allows arithmetic expressions to be evaluated, as one of +the shell expansions or by using the (( compound command, the +let builtin, or the -i option to the declare builtin. +

    +

    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 +

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

    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. @@ -8665,59 +8187,47 @@ A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax. The value of a variable is evaluated as an arithmetic expression when it is referenced, or when a variable which has been given the -integer attribute using `declare -i' is assigned a value. +integer attribute using ‘declare -i’ is assigned a value. A null value evaluates to 0. -A shell variable need not have its integer attribute turned on +A shell variable need not have its integer attribute turned on to be used in an expression. -

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

    +

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

    +

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

    +

    +
    + +
    +

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

    +
    + +

    6.6 Aliases

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

    6.6 Aliases

    - -

    - -Aliases allow a string to be substituted for a word when it is used +

    Aliases allow a string to be substituted for a word when it is used as the first word of a simple command. The shell maintains a list of aliases that may be set and unset with -the alias and unalias builtin commands. -

    - -The first word of each simple command, if unquoted, is checked to see +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 +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 @@ -8725,30 +8235,26 @@ 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", +This means that one may alias ls to "ls -F", for instance, and Bash does not try to recursively expand the replacement text. If the last character of the alias value is a -blank, then the next command word following the +blank, then the next command word following the alias is also checked for alias expansion. -

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

    - -There is no mechanism for using arguments in the replacement text, -as in csh. +

    +

    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 +(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 @@ -8761,2334 +8267,2135 @@ 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 +is itself a 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 +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: , Up: Bash Features   [Contents][Index]

    +
    + +

    6.7 Arrays

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

    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. +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; +expressions (see 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 +

    +

    An indexed array is created automatically if any variable is assigned to using the syntax -
     
    name[subscript]=value
    -

    +

    +
    name[subscript]=value
    +
    -The subscript +

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

    +

    +
    declare -a name
    +
    +

    The syntax +

    +
    declare -a name[subscript]
    +
    +

    is also accepted; the subscript is ignored. +

    +

    Associative arrays are created using +

    +
    declare -A name.
    +
    -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 +

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

    +

    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 +

    +

    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 +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 +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]}. +

    +

    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 +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 +${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. +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 +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. +If the subscript used to reference an element of an indexed array -evaluates to a number less than zero, it is +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 +

    +

    Referencing an array variable without a subscript is equivalent to +referencing with a subscript of 0. +Any reference to a variable using a valid subscript is legal, and +bash will create an array if necessary. +

    +

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

    - -It is possible to obtain the keys (indices) of an array as well as the values. -${!name[@]} and ${!name[*]} expand to the indices -assigned in array variable name. +

    +

    It is possible to obtain the keys (indices) of an array as well as the values. +${!name[@]} and ${!name[*]} expand to the indices +assigned in array variable name. The treatment when in double quotes is similar to the expansion of the -special parameters `@' and `*' within double quotes. -

    - -The unset builtin is used to destroy arrays. -unset name[subscript] -destroys the array element at index subscript. +special parameters ‘@’ and ‘*’ within double quotes. +

    +

    The unset builtin is used to destroy arrays. +unset name[subscript] +destroys the array element at index subscript. Negative subscripts to indexed arrays are interpreted as described above. Care must be taken to avoid unwanted side effects caused by filename expansion. -unset name, where name is an array, removes the -entire array. A subscript of `*' or `@' also removes the +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' +

    +

    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 +individual array elements. The set and declare builtins display array values in a way that allows them to be reused as input. -

    +

    +
    + +
    +

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

    +
    + +

    6.8 The Directory Stack

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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 +

    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 +the directory removed. The dirs builtin displays the contents +of the directory stack. The current directory is always the "top" of the directory stack. -

    +

    +

    The contents of the directory stack are also visible +as the value of the DIRSTACK shell variable. +

    +
    + + + +

    6.8.1 Directory Stack Builtins

    -The contents of the directory stack are also visible -as the value of the DIRSTACK shell variable. -

    +

    +
    dirs
    +
    +
    +
    dirs [-clpv] [+N | -N]
    +
    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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; +

    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. +The current directory is always the first directory in the stack. +

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

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

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

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

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

    +

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

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

    +

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

    + +

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

    Save the current directory on the top of the directory stack +and then cd to dir. +With no arguments, pushd exchanges the top two directories +and makes the new top the current directory. +

    +
    +
    -n
    +

    Suppresses the normal change of directory when rotating or +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 +

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

    +
    dir
    +

    Makes dir be the top of the stack, making it the new current directory as if it had been supplied as an argument -to the cd builtin. -

    -
    -

    +to the cd builtin. +

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

    6.9 Controlling the Prompt

    - -

    +


    + + + +

    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 +

    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 +

    +

    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 +

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

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

    +

    +
    \]
    +

    End a sequence of non-printing characters. +

    +
    -The command number and the history number are usually different: +

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

    +

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

    +promptvars shell option (see Bash Builtins). +

    +
    + + + +

    6.10 The Restricted Shell

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

    6.10 The Restricted Shell

    - -

    - -If Bash is started with the name rbash, or the -`--restricted' +

    If Bash is started with the name rbash, or the +--restricted or -`-r' +-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 +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 . +

      +
        +
      • 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'. -
      -

      +

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

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

    +

    +
    + + + +

    6.11 Bash POSIX Mode

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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 +

    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’. -The following list is what's changed when `POSIX mode' is in effect: -

      +

    2. The message printed by the job control code and builtins when a job +exits with a non-zero status is ‘Done(status)’. -
        -
      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 +is stopped is ‘Stopped(signame)’, where signame is, for +example, SIGTSTP. -
      3. -The message printed by the job control code and builtins when a job -exits with a non-zero status is `Done(status)'. -

        +

      4. Alias expansion is always enabled, even in non-interactive shells. -
      5. -The message printed by the job control code and builtins when a job -is stopped is `Stopped(signame)', where signame is, for -example, SIGTSTP. -

        - -

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

        - -

      7. -Reserved words appearing in a context where reserved words are recognized +
      8. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. -

        -

      9. -The POSIX PS1 and PS2 expansions of `!' to -the history number and `!!' to `!' are enabled, -and parameter expansion is performed on the values of PS1 and -PS2 regardless of the setting of the promptvars option. -

        +

      10. 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. -
      11. -The POSIX startup files are executed ($ENV) rather than +
      12. The POSIX startup files are executed ($ENV) rather than the normal Bash files. -

        -

      13. -Tilde expansion is only performed on assignments preceding a command +
      14. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. -

        -

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

        +

      16. The default history file is ~/.sh_history (this is the +default value of $HISTFILE). -
      17. -The default history file is `~/.sh_history' (this is the -default value of $HISTFILE). -

        - -

      18. -The output of `kill -l' prints all the signal names on a single line, -separated by spaces, without the `SIG' prefix. -

        - -

      19. -The kill builtin does not accept signal names with a `SIG' -prefix. -

        - -

      20. -Non-interactive shells exit if filename in . filename -is not found. -

        - -

      21. -Non-interactive shells exit if a syntax error in an arithmetic expansion -results in an invalid expression. -

        - -

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

        - -

      23. -Redirection operators do not perform filename expansion on the word +
      24. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. -

        -

      25. -Redirection operators do not perform word splitting on the word in the +
      26. Redirection operators do not perform word splitting on the word in the redirection. -

        -

      27. -Function names must be valid shell names. That is, they may not +
      28. 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. -

        -

      29. -Function names may not be the same as one of the POSIX special +
      30. Function names may not be the same as one of the POSIX special builtins. -

        -

      31. -POSIX special builtins are found before shell functions +
      32. POSIX special builtins are found before shell functions during command lookup. -

        -

      33. -The time reserved word may be used by itself as a command. When +
      34. When printing shell function definitions (e.g., by type), Bash does +not print the function keyword. + +
      35. Literal tildes that appear as the first character in elements of +the PATH variable are not expanded as described above +under Tilde Expansion. + +
      36. 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 +completed children. The TIMEFORMAT variable controls the format of the timing information. -

        -

      37. -When parsing and expanding a ${...} expansion that appears within +
      38. 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. -

        -

      39. -The parser does not recognize time as a reserved word if the next -token begins with a `-'. -

        +

      40. The parser does not recognize time as a reserved word if the next +token begins with a ‘-’. -
      41. -If a POSIX special builtin returns an error status, a +
      42. The ‘!’ character does not introduce history expansion within a +double-quoted string, even if the histexpand option is enabled. + +
      43. 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, +the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. -

        -

      44. -A non-interactive shell exits with an error status if a variable +
      45. 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. -

        -

      46. -A non-interactive shell exits with an error status if a variable +
      47. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. -

        -

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

        +

      49. 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. -
      50. -Process substitution is not available. -

        +

      51. Non-interactive shells exit if filename in . filename +is not found. -
      52. -While variable indirection is available, it may not be applied to the -`#' and `?' special parameters. -

        +

      53. Non-interactive shells exit if a syntax error in an arithmetic expansion +results in an invalid expression. -
      54. -Assignment statements preceding POSIX special builtins +
      55. Non-interactive shells exit if a parameter expansion error occurs. + +
      56. 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. + +
      57. Process substitution is not available. + +
      58. While variable indirection is available, it may not be applied to the +‘#’ and ‘?’ special parameters. + +
      59. When expanding the ‘*’ special parameter in a pattern context where the +expansion is double-quoted does not treat the $* as if it were +double-quoted. + +
      60. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. -

        -

      61. -Assignment statements preceding shell function calls persist in the -shell environment after the function returns, as if a POSIX +
      62. 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. -

        -

      63. -The export and readonly builtin commands display their -output in the format required by POSIX. -

        +

      64. 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. -
      65. -The trap builtin displays signal names without the leading -SIG. -

        +

      66. 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. -
      67. -The trap builtin doesn't check the first argument for a possible +
      68. The output of ‘kill -l’ prints all the signal names on a single line, +separated by spaces, without the ‘SIG’ prefix. + +
      69. The kill builtin does not accept signal names with a ‘SIG’ +prefix. + +
      70. The export and readonly builtin commands display their +output in the format required by POSIX. + +
      71. The trap builtin displays signal names without the leading +SIG. + +
      72. 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 +signal to the original disposition, they should use ‘-’ as the first argument. -

        -

      73. -The . and source builtins do not search the current directory -for the filename argument if it is not found by searching PATH. -

        +

      74. The . and source builtins do not search the current directory +for the filename argument if it is not found by searching PATH. -
      75. -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. -

        +

      76. Enabling POSIX mode has the effect of setting the +inherit_errexit option, so +subshells spawned to execute command substitutions inherit the value of +the -e option from the parent shell. +When the inherit_errexit option is not enabled, +Bash clears the -e option in such subshells. -
      77. -Alias expansion is always enabled, even in non-interactive shells. -

        - -

      78. -When the alias builtin displays alias definitions, it does not -display them with a leading `alias ' unless the `-p' option +
      79. When the alias builtin displays alias definitions, it does not +display them with a leading ‘alias ’ unless the -p option is supplied. -

        -

      80. -When the set builtin is invoked without options, it does not display +
      81. When the set builtin is invoked without options, it does not display shell function names and definitions. -

        -

      82. -When the set builtin is invoked without options, it displays +
      83. 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. -

        -

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

        +

      85. 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. -
      86. -The pwd builtin verifies that the value it prints is the same as the +
      87. 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. -

        +-P option. -

      88. -When listing the history, the fc builtin does not include an +
      89. When listing the history, the fc builtin does not include an indication of whether or not a history entry has been modified. -

        -

      90. -The default editor used by fc is ed. -

        +

      91. The default editor used by fc is ed. -
      92. -The type and command builtins will not report a non-executable +
      93. 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. -

        +file if it is the only so-named file found in $PATH. -

      94. -The vi editing mode will invoke the vi editor directly when -the `v' command is run, instead of checking $VISUAL and -$EDITOR. -

        +

      95. The vi editing mode will invoke the vi editor directly when +the ‘v’ command is run, instead of checking $VISUAL and +$EDITOR. -
      96. -When the xpg_echo option is enabled, Bash does not attempt to interpret -any arguments to echo as options. Each argument is displayed, after +
      97. 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. -

        -

      98. -The ulimit builtin uses a block size of 512 bytes for the `-c' -and `-f' options. -

        +

      99. The ulimit builtin uses a block size of 512 bytes for the -c +and -f options. -
      100. -The arrival of SIGCHLD when a trap is set on SIGCHLD does -not interrupt the wait builtin and cause it to return immediately. +
      101. 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. -

        -

      102. -The read builtin may be interrupted by a signal for which a trap +
      103. 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. -

        +If Bash receives a trapped signal while executing read, the trap +handler executes and read returns an exit status greater than 128. -

      -

      +

    3. Bash removes an exited background process’s status from the list of such +statuses after the wait builtin is used to obtain it. -There is other POSIX behavior that Bash does not implement by -default even when in POSIX mode. +
    + +

    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. -
        +
      1. As noted above, Bash requires the xpg_echo option to be enabled for +the echo builtin to be fully conformant. -
      2. -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: , Up: Top   [Contents][Index]

      +
      + +

      7 Job Control

      -
    -

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

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

    +


    + + + +

    7.1 Job Control Basics

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

    7.1 Job Control Basics

    - -

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

    +
    [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 +the same job. Bash uses the job abstraction as the basis for job control. -

    - -To facilitate the implementation of the user interface to job +

    +

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

    +

    If the operating system on which Bash is running supports job control, Bash contains facilities to use it. Typing the -suspend character (typically `^Z', Control-Z) while a +suspend character (typically ‘^Z’, Control-Z) while a process is running causes that process to be stopped and returns -control to Bash. Typing the delayed suspend character -(typically `^Y', Control-Y) causes the process to be stopped +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' +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 +

    +

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

    +

    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 +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 +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 4.3.2 The Shopt Builtin), the -shell prints a warning message, and if the checkjobs option is +

    +

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

    +

    +
    + + + +

    7.2 Job Control Builtins

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

    7.2 Job Control Builtins

    - -

    +

    +
    bg
    +
    +
    +
    bg [jobspec …]
    +
    -
    - -
    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. +

    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 +jobspec was not found or specifies a job that was started without job control. -

    +

    +
    +
    fg
    +
    +
    +
    fg [jobspec]
    +
    -
    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. +

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

    +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]
    +
    -
    jobs -
    -
     
    jobs [-lnprs] [jobspec]
    -jobs -x command [arguments]
    -

    - -The first form lists the active jobs. The options have the +

    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 +

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

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

    If jobspec is given, output is restricted to information about that job. -If jobspec is not supplied, the status of all jobs is +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|-L [exit_status]
    +
    -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 +

    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 +exit_status is a number specifying a signal number or the exit status of a process terminated by a signal. +The -L option is equivalent to -l. 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 [-n] [jobspec or pid …]
    +
    -
    wait -
    -
     
    wait [-n] [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 +

    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 +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 +If neither jobspec nor pid specifies an active child process of the shell, the return status is 127. -

    +

    +
    +
    disown
    +
    +
    +
    disown [-ar] [-h] [jobspec … | pid … ]
    +
    -
    disown -
    -
     
    disown [-ar] [-h] [jobspec ...]
    -

    - -Without options, remove each jobspec from the table of +

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

    +

    +
    +
    suspend
    +
    +
    +
    suspend [-f]
    +
    -
    suspend -
    -
     
    suspend [-f]
    -

    - -Suspend the execution of this shell until it receives a -SIGCONT signal. -A login shell cannot be suspended; the `-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. -

    +

    When job control is not active, the kill and wait +builtins do not accept jobspec arguments. They must be +supplied process IDs. +

    +
    + +
    +

    +Previous: , Up: Job Control   [Contents][Index]

    +
    + +

    7.3 Job Control Variables

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

    7.3 Job Control Variables

    - -

    - -

    - - -
    auto_resume -
    -This variable controls how the shell interacts with the user and +
    +
    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', +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', +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). +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. -

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


    + +
    +

    +Next: , Previous: , 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). +unless the --noediting option is supplied at shell invocation. +Line editing is also used when using the -e option to the +read builtin command (see Bash Builtins). 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. -

    +Line editing can be enabled at any time using the -o emacs or +-o vi options to the set builtin command +(see 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.
    -

    +


    + + + +

    8.1 Introduction to Line Editing

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

    8.1 Introduction to Line Editing

    - -

    - -The following paragraphs describe the notation used to represent +

    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 +

    +

    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 +

    +

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

    +

    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 +(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 +The RET key may be labeled Return or Enter on some keyboards. -

    +

    +
    + + + +

    8.2 Readline Interaction

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

    8.2 Readline Interaction

    - -

    - -Often during an interactive session you type in a long line of text, +

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

    +


    + + + +

    8.2.1 Readline Bare Essentials

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

    8.2.1 Readline Bare Essentials

    - -

    - -In order to enter characters into the line, simply type them. The typed +

    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 +

    +

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

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

    (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

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

    8.2.2 Readline Movement Commands

    - -

    -The above table describes the most basic keystrokes that you need +

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

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

    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

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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) +

    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 +(‘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. +

    +

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

    +

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

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

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

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

    +
    -
    -
    C-y -
    Yank the most recently killed text back into the buffer at the cursor. -

    +


    + + + +

    8.2.4 Readline Arguments

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

    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 +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', +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. -

    +

    +
    + + + +

    8.2.5 Searching for Commands in the History

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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) +

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

    +

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

    +

    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 +

    +

    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

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

    8.3 Readline Init File

    - -

    - -Although the Readline library comes with a set of Emacs-like +

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

    +

    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.3 Sample Init File  An example inputrc file.
    -

    +


    + + + +

    8.3.1 Readline Init File Syntax

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

    8.3.1 Readline Init File Syntax

    - -

    - -There are only a few basic constructs allowed in the +

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

    +
    +
    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. +using the set command within the init file. The syntax is simple: -

    +

    +
    +
    set variable value
    +
    -
     
    set variable value
    -

    - -Here, for example, is how to +

    Here, for example, is how to change from the default Emacs-like key binding to use -vi line editing commands: -

    +vi line editing commands: +

    +
    +
    set editing-mode vi
    +
    -
     
    set editing-mode vi
    -

    - -Variable names and values, where appropriate, are recognized without regard +

    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 +

    +

    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 +

    +

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

    - -

    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 +

    + +
    +
    bell-style
    +
    +

    Controls what happens when Readline wants to ring the terminal bell. +If set to ‘none’, Readline never rings the bell. If set to +‘visible’, Readline uses a visible bell if one is available. +If set to ‘audible’ (the default), Readline attempts to ring +the terminal’s bell. +

    +
    +
    bind-tty-special-chars
    +
    +

    If set to ‘on’ (the default), Readline attempts to bind the control +characters treated specially by the kernel’s terminal driver to their +Readline equivalents. +

    +
    +
    blink-matching-paren
    +
    +

    If set to ‘on’, Readline attempts to briefly move the cursor to an +opening parenthesis when a closing parenthesis is inserted. The default +is ‘off’. +

    +
    +
    colored-completion-prefix
    +
    +

    If set to ‘on’, when listing completions, Readline displays the +common prefix of the set of possible completions using a different color. +The color definitions are taken from the value of the LS_COLORS environment variable. -The default is `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 +The default is ‘off’. +

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

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

    +
    +
    completion-prefix-display-length
    +
    +

    The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions. -

    - -

    completion-query-items -
    -The number of possible completions that determines when the user is +

    +
    +
    completion-query-items
    +
    +

    The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. If the number of possible completions is greater than 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. +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’, but +will be set to ‘off’ if the locale is one that contains +eight-bit characters. +

    +
    +
    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 +been mapped to self-insert. The default is ‘off’. +

    +
    +
    echo-control-characters
    +
    +

    When set to ‘on’, on operating systems that indicate they support it, +readline echoes a character corresponding to a signal generated from the +keyboard. The default is ‘on’. +

    +
    +
    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 +set to either ‘emacs’ or ‘vi’. +

    +
    +
    emacs-mode-string
    +
    +

    This string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is ‘@’. +

    +
    +
    enable-bracketed-paste
    +
    +

    When set to ‘On’, Readline will configure the terminal in a way +that will enable it to insert each paste into the editing buffer as a +single string of characters, instead of treating each character as if +it had been read from the keyboard. This can prevent pasted characters +from being interpreted as editing commands. The default is ‘off’. +

    +
    +
    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 +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 +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. +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 +If an attempt is made to set history-size to a non-numeric value, +the maximum number of history entries will be set to 500. +

    +
    +
    horizontal-scroll-mode
    +
    +

    This variable can be set to either ‘on’ or ‘off’. Setting it +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 +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 value is ‘off’, but Readline will set it to ‘on’ if the +locale contains eight-bit characters. +The name meta-flag is a synonym for this variable. +

    +
    +
    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 (vi-move is also a +synonym); 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 +

    +
    +
    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. Readline uses this value to determine whether or not input is -available on the current input source (rl_instream by default). +available on the current input source (rl_instream by default). 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 +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 +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 +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 +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 +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 +sequence. +The default is ‘off’, but Readline will set it to ‘on’ if the +locale contains eight-bit characters. +

    +
    +
    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 +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, +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', +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', +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 +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 +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 mode strings are user-settable. +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 +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 +The default value is ‘off’. +

    +
    +
    vi-cmd-mode-string
    +
    +

    This string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in command mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is ‘(cmd)’. +

    +
    +
    vi-ins-mode-string
    +
    +

    This string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in insertion mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is ‘(ins)’. +

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

    +completions. The default is ‘off’. +

    +
    +
    -
    -

    - -

    Key Bindings -
    The syntax for controlling key bindings in the init file is +
    +
    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 +

    +

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

    +

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

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

    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 +‘> 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, +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 +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 +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"
    +
    -
     
    "\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’. +

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

    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 +

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

    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 +

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

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

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

    +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

    - -

    +


    + + + +

    8.3.2 Conditional Init Constructs

    -Readline implements a facility similar in spirit to the conditional +

    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 +

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

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

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

    +
    $if Bash
     # Quote the current or previous word
    -"\C-xq": "\eb\"\ef\""
    +"\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 +
    +
    $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 +

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

    -

    +For example, the following directive reads from /etc/inputrc: +

    +
    $include /etc/inputrc
    +
    +
    +
    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.3.3 Sample Init File

    - -

    +


    + + + +

    8.3.3 Sample Init File

    -Here is an example of an inputrc file. This illustrates key +

    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
    +

    +
    +
    # This file controls the behaviour of line input editing for
     # programs that use the GNU Readline library.  Existing
     # programs include FTP, Bash, and GDB.
     #
    @@ -11111,31 +10418,31 @@ 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
    +#"\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
    +"\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
    +#"\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
    +#"\M-\C-[D":       backward-char
    +#"\M-\C-[C":       forward-char
    +#"\M-\C-[A":       previous-history
    +#"\M-\C-[B":       next-history
     
     C-q: quoted-insert
     
    @@ -11147,20 +10454,20 @@ 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"
    +"\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"
    +"\C-x\"": "\"\"\C-b"
     # insert a backslash (testing backslash escapes
     # in sequences and macros)
    -"\C-x\\": "\\"
    +"\C-x\\": "\\"
     # Quote the current or previous word
    -"\C-xq": "\eb\"\ef\""
    +"\C-xq": "\eb\"\ef\""
     # Add a binding to refresh the line, which is unbound
    -"\C-xr": redraw-current-line
    +"\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="
    +"\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
    @@ -11183,1202 +10490,1107 @@ set completion-query-items 150
     
     # For FTP
     $if Ftp
    -"\C-xg": "get \M-?"
    -"\C-xt": "put \M-?"
    -"\M-.": yank-last-arg
    +"\C-xg": "get \M-?"
    +"\C-xt": "put \M-?"
    +"\M-.": yank-last-arg
     $endif
    -

    + - -


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

    8.4 Bindable Readline Commands

    - -

    +


    + + + +

    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 +

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

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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. +

    +

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

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

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

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

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

    +
    +
    - -
    redraw-current-line () -
    -Refresh the current line. By default, this is unbound. -

    +


    + + + +

    8.4.2 Commands For Manipulating The History

    -
    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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. +
    +
    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. +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 +

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

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

    +
    +
    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 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 +The search string may match anywhere in a history line. +

    +
    +
    non-incremental-forward-search-history (M-n) + +
    +

    Search forward starting at the current line and moving ‘down’ +through the history as necessary using a non-incremental search for a string supplied by the user. -

    - - -

    history-search-forward () -
    -Search forward through the history for the string of characters +The search string may match anywhere in a history line. +

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

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

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

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

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

    +as if the ‘!$’ history expansion had been specified. +

    +
    +
    -
    -

    +


    + + + +

    8.4.3 Commands For Changing Text

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

    8.4.3 Commands For Changing Text

    - -

    - -

    - - -
    end-of-file (usually C-d) -
    -The character indicating end-of-file as set, for example, by -stty. If this character is read when there are no characters +
    +
    end-of-file (usually C-d) + +
    +

    The character indicating end-of-file as set, for example, by +stty. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline -interprets it as the end of input and returns EOF. -

    - - -

    delete-char (C-d) -
    -Delete the character at point. If this function is bound to the -same character as the tty EOF character, as C-d +interprets it as the end of input and returns EOF. +

    +
    +
    delete-char (C-d) + +
    +

    Delete the character at point. If this function is bound to the +same character as the tty EOF character, as C-d commonly is, see above for the effects. -

    - - -

    backward-delete-char (Rubout) -
    -Delete the character behind the cursor. A numeric argument means +

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

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

    - -
    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 +
    +
    self-insert (a, b, A, 1, !, …) + +
    +

    Insert yourself. +

    +
    +
    bracketed-paste-begin () + +
    +

    This function is intended to be bound to the "bracketed paste" escape +sequence sent by some terminals, and such a binding is assigned by default. +It allows Readline to insert the pasted text as a single unit without treating +each character as if it had been read from the keyboard. The characters +are inserted as if each one was bound to self-insert) instead of +executing any editing commands. +

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

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

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

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

    +
    +
    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 +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 +Characters bound to backward-delete-char replace the character before point with a space. -

    +

    +

    By default, this command is unbound. +

    +
    +
    -By default, this command is unbound. -

    +


    + + + +

    8.4.4 Killing And Yanking

    -
    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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. +
    +
    kill-line (C-k) + +
    +

    Kill the text from point to the end of the line. +

    +
    +
    backward-kill-line (C-x Rubout) + +
    +

    Kill backward from the cursor to the beginning of the current 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 +

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

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

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

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

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

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

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

    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 +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 +character that is neither a digit nor minus sign, the argument count for the next command is multiplied by four. The argument count is initially one, so executing this function the first time makes the 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

    - -

    +


    + + + +

    8.4.6 Letting Readline Type For You

    -
    - -
    complete (TAB) -
    -Attempt to perform completion on the text before point. +
    +
    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 +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. +

    +
    +
    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 +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 +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) +(subject to the setting of bell-style) and the original text is restored. -An argument of n moves n positions forward in the list +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 +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 +

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    +(see 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 +
    + + + +

    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 +

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

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

    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 +

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

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

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

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

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

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

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

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

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

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

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

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

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

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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), +

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

    +

    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. +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 +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. +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 +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. +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 +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 +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). +as described above (see Shell Expansions). The results are split using the rules described above -(see section 3.5.7 Word Splitting). +(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 section 5.2 Bash Variables). -If a shell function is being invoked, the COMP_WORDS and -COMP_CWORD variables are also set. +

    +

    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 ($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 @@ -12387,73 +11599,68 @@ 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. +

    +

    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 +compgen and compopt builtins described below +(see 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 +

    +

    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 `&' +

    +

    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 +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 +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' +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) +is enabled, the match is performed without regard to the case +of alphabetic characters. +

    +

    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 +

    +

    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 +

    +

    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 +

    +

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

    +

    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 +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 +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 @@ -12462,396 +11669,373 @@ 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 +

    +

    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()
    +

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

    + - -


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

    8.7 Programmable Completion Builtins

    - -

    +


    + + + +

    8.7 Programmable Completion Builtins

    + -Three builtin commands are available to manipulate the programmable completion +

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

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

    +

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

    +

    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 …]
    +
    -
    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 +

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

    +

    The process of applying these completion specifications when word completion +is attempted is described above (see 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. -

    +complete builtin is invoked. +

    -
    -
    -o comp-option -
    The comp-option controls several aspects of the compspec's behavior +
    +
    -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 +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 +

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

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

    +
    +
    nosort
    +

    Tell Readline not to sort the list of possible completions alphabetically. +

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

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

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

    +
    +
    -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). +(see 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 +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 +

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

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

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

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

    -

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

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

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

    +

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

    +

    +
    +
    -
    -

    +


    + + + +

    8.8 A Programmable Completion Example

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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. +

    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 +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 +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 +tilde expansion (see Tilde Expansion), +searching directories in $CDPATH, which is described above +(see Bourne Shell Builtins), +and basic support for the cdable_vars shell option +(see 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
    +

    +
    +
    # A completion function for the cd builtin
     # based on the cd completion function from the bash_completion package
     _comp_cd()
     {
    @@ -12860,16 +12044,16 @@ _comp_cd()
         local i j k
     
         # Tilde expansion, with side effect of expanding tilde to full pathname
    -    case "$2" in
    -    \~*)    eval cur="$2" ;;
    +    case "$2" in
    +    \~*)    eval cur="$2" ;;
         *)      cur=$2 ;;
         esac
     
         # no cdpath or absolute pathname -- straight directory completion
    -    if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then
    +    if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then
             # compgen prints paths one per line; could also use while loop
             IFS=$'\n'
    -        COMPREPLY=( $(compgen -d -- "$cur") )
    +        COMPREPLY=( $(compgen -d -- "$cur") )
             IFS=$' \t\n'
         # CDPATH+directories in the current directory if not in CDPATH
         else
    @@ -12881,2091 +12065,1676 @@ _comp_cd()
             _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
    +            k="${#COMPREPLY[@]}"
    +            for j in $( compgen -d -- "$i/$cur" ); do
                     COMPREPLY[k++]=${j#$i/}        # cut off directory
                 done
             done
    -        $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") )
    +        $_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") )
    +    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;
    +

    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 +

    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 +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 +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 +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 +for words beginning with ‘{’, completions containing pathname +expansion patterns (see 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 +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. +

    + -An older version of the bash_completion package is distributed with bash -in the `examples/complete' subdirectory. -

    +


    + +
    +

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

    +
    + +

    9 Using History Interactively

    - -

    - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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. +

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

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

    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 +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 +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 +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. +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), +$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 +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 +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 +

    +

    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 +as timestamps for the following history entry. +

    +

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

    +The shopt builtin is used to set these options. +See Bash Builtins, for a description of shopt. +

    +
    + + + +

    9.2 Bash History Builtins

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

    9.2 Bash History Builtins

    - -

    - -Bash provides two builtin commands which manipulate the +

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

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

    +

    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 Aliases). +

    + +
    history
    +
    +
    +
    history [n]
     history -c
    -history -d offset
    -history [-anrw] [filename]
    -history -ps arg
    -

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

    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 +

    +

    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 +

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

    +
    +
    -a
    +

    Append the new history lines to the history file. +These are history lines entered since the beginning of the current +Bash session, but not already appended to the history file. +

    +
    +
    -n
    +

    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 +

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

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

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

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

    +the value of the HISTFILE variable is used. +

    +
    +
    -
    -

    +


    + + + +

    9.3 History Expansion

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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 +

    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 +

    +

    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 +

    +

    History expansion is performed immediately after a complete line +is read, before the shell breaks it into words. +

    +

    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 +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 +history expansion character, which is ‘!’ by default. +Only ‘\’ and ‘'’ may be used to escape the history expansion +character, but the history expansion character is +also treated as quoted if it immediately precedes the closing double quote +in a double-quoted string. +

    +

    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 +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 +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 +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 +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 shell allows control of the various characters used by the +history expansion mechanism with the histchars variable, +as explained above (see 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.
    -

    +


    + + + +

    9.3.1 Event Designators

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

    9.3.1 Event Designators

    - -

    - -An event designator is a reference to a command line entry in the +

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

    +
    +
    !
    +

    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 +starting with string. +

    +
    +
    !?string[?]
    +

    Refer to the most recent command preceding the current position in the history list -containing string. +containing string. The trailing -`?' may be omitted if the string is followed immediately by +‘?’ 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. +

    +
    +
    -
    ^string1^string2^ -
    Quick Substitution. Repeat the last command, replacing string1 -with string2. Equivalent to -!!:s/string1/string2/. -

    +


    + + + +

    9.3.2 Word Designators

    -
    !# -
    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 +

    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 +

    +

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

    +
    -
    !!:$ -
    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; +

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

    +
    +
    -
    x* -
    Abbreviates `x-$' -

    - -

    x- -
    Abbreviates `x-$' like `x*', but omits the last word. -

    - -

    -

    - -If a word designator is supplied without an event specification, the +

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

    +

    +
    + + + +

    9.3.3 Modifiers

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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 +

    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', +

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

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

    +
    +
    -
    & -
    Repeat the previous substitution. -

    +


    + +
    +

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

    +
    + +

    10 Installing Bash

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

    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 +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 +MS-DOS, OS/2, and Windows platforms. +

    + + + + - - - - - - -

    + 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. +
    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    10.1 Basic Installation

    - -

    +


    + + + +

    10.1 Basic Installation

    + + + + -These are installation instructions for Bash. -

    +

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

        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 +

        +
      3. Type ‘make’ to compile Bash and build the bashbug bug reporting script. -

        -

      4. -Optionally, type `make tests' to run the Bash test suite. -

        +

      5. Optionally, type ‘make tests’ to run the Bash test suite. -
      6. -Type `make install' to install bash and bashbug. +
      7. 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 +

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

    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 +bash-maintainers@gnu.org so they can be considered for the next release. -

    - -The file `configure.ac' is used to create configure +

    +

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

    +
    + + + +

    10.2 Compilers and Options

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

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

    The configuration process uses GCC to build Bash if it is available. -

    +

    +
    + + + +

    10.3 Compiling For Multiple Architectures

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

    10.3 Compiling For Multiple Architectures

    - -

    - -You can compile Bash for more than one kind of computer at the +

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

    +

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

    +source directory /usr/gnu/src/bash-2.0: +

    +
    +
    bash /usr/gnu/src/bash-2.0/support/mkclone -s /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 +

    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

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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 +

    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 DESTDIRmake’ +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. +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. -

    +

    +
    + + + +

    10.5 Specifying the System Type

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

    10.5 Specifying the System Type

    - -

    - -There may be some features configure can not figure out +

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

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

    10.6 Sharing Defaults

    - -

    - -If you want to set default values for configure scripts to +

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

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

    +
    + + + +

    10.7 Operation Controls

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

    10.7 Operation Controls

    - -

    - -configure recognizes the following options to control how it +

    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 +

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

    +

    configure also accepts some other, not widely used, boilerplate +options. ‘configure --help’ prints the complete list. +

    +
    + + + +

    10.8 Optional Features

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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'. +

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

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

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

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

    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 +

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

    +
    -
    --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 ‘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 +options may be enabled using ‘enable-feature’. +

    +

    All of the following options except for ‘disabled-builtins’, +‘direxpand-default’, and +‘xpg-echo-default’ are enabled by default, unless the operating system does not provide the necessary support. -

    - -

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

    +
    +
    --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}cbac bbc ). +See 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). +

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

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

    Include support for coprocesses and the coproc reserved word +(see Pipelines). +

    +
    +
    --enable-debugger
    +

    Include support for the bash debugger (distributed separately). +

    +
    +
    --enable-direxpand-default
    +

    Cause the direxpand shell option (see The Shopt Builtin) to be enabled by default when the shell starts. It is normally disabled by default. -

    - -

    --enable-directory-stack -
    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-glob-asciirange-default -
    Set the default value of the globasciiranges shell option described -above under 4.3.2 The Shopt Builtin to be enabled. +

    +
    +
    --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-extended-glob-default
    +

    Set the default value of the extglob shell option described +above under The Shopt Builtin to be enabled. +

    +
    +
    --enable-function-import
    +

    Include support for importing function definitions exported by another +instance of the shell from the environment. This option is enabled by +default. +

    +
    +
    --enable-glob-asciirange-default
    +

    Set the default value of the globasciiranges shell option described +above under The Shopt Builtin to be enabled. This controls the behavior of character ranges when used in pattern matching bracket expressions. -

    - -

    --enable-help-builtin -
    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), +

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

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

    +
    +
    --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 section 8.6 Programmable Completion). +

    +
    +
    --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 6.9 Controlling the Prompt, for a complete list of prompt +

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

    +
    +
    --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 compound command, which allows the generation of +simple menus (see Conditional Constructs). +

    +
    +
    --enable-separate-helpfiles
    +

    Use external files for the documentation displayed by the help builtin instead of storing the text internally. -

    - -

    --enable-single-help-strings -
    Store the text displayed by the help builtin as a single string for +

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

    +
    +
    --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 section 4.2 Bash Builtin Commands, for a description of the escape sequences that -echo recognizes. -

    -

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

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

    +

    +
    + + + +

    Appendix A Reporting Bugs

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

    A. Reporting Bugs

    - -

    - -Please report all bugs you find in Bash. +

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

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

    +
    + + + +

    Appendix B Major Differences From The Bourne Shell

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

    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 +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 +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 is POSIX-conformant, even where the POSIX specification -differs from traditional sh behavior (see section 6.11 Bash POSIX Mode). -

        +

      • Bash has command-line editing (see Command Line Editing) and +the bind builtin. -
      • -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 +
      • Bash provides a programmable word completion mechanism +(see 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. +
      • 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. -

        +value of the HISTTIMEFORMAT variable to display it. -

      • -Bash implements csh-like history expansion -(see section 9.3 History Expansion). -

        +

      • Bash implements csh-like history expansion +(see History Interaction). -
      • -Bash has one-dimensional array variables (see section 6.7 Arrays), and the +
      • 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 +
      • 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). -

        +is supported (see ANSI-C Quoting). -

      • -Bash supports the $"..." quoting syntax to do +
      • 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' +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). -

        +(see Locale 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 +
      • 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 section 3.2.2 Pipelines). +
      • Bash has the time reserved word and command timing (see Pipelines). The display of the timing statistics may be controlled with the -TIMEFORMAT variable. -

        +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 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 section 3.2.4.2 Conditional 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 section 3.2.4.2 Conditional Constructs), including +
      • 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 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 includes brace expansion (see Brace Expansion) and tilde +expansion (see Tilde Expansion). -
      • -Bash implements command aliases and the alias and unalias -builtins (see section 6.6 Aliases). -

        +

      • Bash implements command aliases and the alias and unalias +builtins (see 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). -

        +

      • 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 +
      • 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 +this unless the variables are explicitly marked using the export command. -

        -

      • -Bash supports the `+=' assignment operator, which appends to the value +
      • 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). -

        +

      • 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 section 3.5.3 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 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 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 +${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 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 Shell Parameter Expansion). -
      • -Bash has indirect variable expansion using ${!word} -(see section 3.5.3 Shell Parameter Expansion). -

        +

      • Bash has indirect variable expansion using ${!word} +(see Shell Parameter Expansion). -
      • -Bash can expand positional parameters beyond $9 using -${num}. -

        +

      • 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 +
      • 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 section 3.5.6 Process Substitution). -

        +

      • 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 section 5.2 Bash Variables, +
      • 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 section 3.5.7 Word Splitting). +
      • 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. -

        -

      • -The filename expansion bracket expression code uses `!' and `^' +
      • The filename expansion bracket expression code uses ‘!’ and ‘^’ to negate the set of characters between the brackets. -The Bourne shell uses only `!'. -

        +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 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 section 3.5.8.1 Pattern Matching). -

        +

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

        +

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

        +

      • 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 section 3.7.4 Environment). -In sh, all variable assignments +
      • 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 section 3.6 Redirections). -

        +

      • 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 +
      • 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). -

        +file (see Redirections). -

      • -Bash includes the `<<<' redirection operator, allowing a string to +
      • 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' +
      • 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 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 section 3.6 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 section 4.3.1 The Set Builtin). -The `>|' redirection operator may be used to override noclobber. -

        +

      • 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 section 4.1 Bourne Shell Builtins) -each take `-L' and `-P' options to switch between logical and +
      • 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 section 4.2 Bash Builtin Commands). -

        +

      • 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 section 4.2 Bash Builtin Commands). -

        +

      • 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 section 4.2 Bash Builtin Commands). -

        +

      • Individual builtins may be enabled or disabled using the enable +builtin (see Bash Builtins). -
      • -The Bash exec builtin takes additional options that allow users +
      • 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). -

        +(see Bourne Shell Builtins). -

      • -Shell functions may be exported to children via the environment -using export -f (see section 3.3 Shell Functions). -

        +

      • 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 +
      • 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 +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 +
      • 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). -

        +searching the $PATH, using ‘hash -p’ +(see Bourne Shell Builtins). -

      • -Bash includes a help builtin for quick reference to shell -facilities (see section 4.2 Bash Builtin Commands). -

        +

      • Bash includes a help builtin for quick reference to shell +facilities (see Bash Builtins). -
      • -The printf builtin is available to display formatted output -(see section 4.2 Bash Builtin Commands). -

        +

      • The printf builtin is available to display formatted output +(see Bash Builtins). -
      • -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 +
      • 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 +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 +-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). -

        +

      • 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 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 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 section 4.3.1 The Set Builtin). -

        +

      • Bash has much more optional behavior controllable with the set +builtin (see The Set Builtin). -
      • -The `-x' (`xtrace') option displays commands other than +
      • The ‘-x’ (xtrace) option displays commands other than simple commands when performing an execution trace -(see section 4.3.1 The Set Builtin). -

        +(see The Set Builtin). -

      • -The test builtin (see section 4.1 Bourne Shell Builtins) -is slightly different, as it implements the POSIX algorithm, +
      • 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 +
      • Bash includes the caller builtin, which displays the context of any active subroutine call (a shell function or a script executed with -the . or source builtins). This supports the bash +the . or source builtins). This supports the bash debugger. -

        -

      • -The trap builtin (see 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 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 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 +

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

        +. 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 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 Bourne Shell 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 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 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. -

        +DIRSTACK shell variable. -

      • -Bash interprets special backslash-escaped characters in the prompt -strings when interactive (see section 6.9 Controlling the Prompt). -

        +

      • Bash interprets special backslash-escaped characters in the prompt +strings when interactive (see Controlling the Prompt). -
      • -The Bash restricted mode is more useful (see section 6.10 The Restricted Shell); +
      • 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 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. -

        +

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

        +

      • 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 have the stop or newgrp builtins. -
      • -Bash does not use the SHACCT variable or perform shell accounting. -

        +

      • Bash does not use the SHACCT variable or perform shell accounting. -
      • -The SVR4.2 sh uses a TIMEOUT variable like Bash uses -TMOUT. -

        +

      • The SVR4.2 sh uses a TIMEOUT variable like Bash uses +TMOUT. -
      -

      +

    -More features unique to Bash may be found in 6. Bash Features. -

    +

    More features unique to Bash may be found in Bash Features. +

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

    B.1 Implementation Differences From The SVR4.2 Shell

    - -

    + +

    B.1 Implementation Differences From The SVR4.2 Shell

    -Since Bash is a completely new implementation, it does not suffer from +

    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 +

      +
        +
      • 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. +
      • 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 +
      • 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 +
      • 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 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 does not allow the IFS, MAILCHECK, +PATH, PS1, or PS2 variables to be unset. -
      • -The SVR4.2 shell treats `^' as the undocumented equivalent of -`|'. -

        +

      • 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 +
      • 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 `-'. -

        +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 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 +
      • The SVR4.2 shell behaves differently when invoked as jsh (it turns on job control). -
      -

      +

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

    C. GNU Free Documentation License

    - -

    +


    + + + +

    Appendix C GNU Free Documentation License

    -
    - Version 1.3, 3 November 2008 -
    -

    +

    Version 1.3, 3 November 2008 +
    -
     
    Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
    -http://fsf.org/
    +
    +
    Copyright © 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 -

      +

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

        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 +

        +

        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 +

        +

        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 -
      3. -APPLICABILITY AND DEFINITIONS -

        - -This License applies to any manual or other work, in any medium, that +

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

        +

        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 +

        +

        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 +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 @@ -14973,24 +13742,21 @@ 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 +

        +

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

        +

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

        +

        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 @@ -15001,57 +13767,49 @@ 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 +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, +

        +

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

        +

        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 +

        +

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

        +

        +
      4. VERBATIM COPYING -
      5. -VERBATIM COPYING -

        - -You may copy and distribute the Document in any medium, either +

        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 @@ -15060,19 +13818,15 @@ 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 also lend copies, under the same conditions stated above, and you may publicly display copies. -

        +

        +
      6. COPYING IN QUANTITY -
      7. -COPYING IN QUANTITY -

        - -If you publish printed copies (or copies in media that commonly have +

        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 +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 @@ -15082,15 +13836,13 @@ 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 +

        +

        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 +

        +

        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 @@ -15102,135 +13854,98 @@ 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 +

        +

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

        +

        +
      8. MODIFICATIONS -
      9. -MODIFICATIONS -

        - -You may copy and distribute a Modified Version of the Document under +

        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 +

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

            -

          4. -State on the Title page the name of the publisher of the +
          5. State on the Title page the name of the publisher of the Modified Version, as the publisher. -

            -

          6. -Preserve all the copyright notices of the Document. -

            +

          7. Preserve all the copyright notices of the Document. -
          8. -Add an appropriate copyright notice for your modifications +
          9. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. -

            -

          10. -Include, immediately after the copyright notices, a license notice +
          11. 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. -

            -

          12. -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. -

            +

          13. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document’s license notice. -
          14. -Include an unaltered copy of this License. -

            +

          15. Include an unaltered copy of this License. -
          16. -Preserve the section Entitled "History", Preserve its Title, and add +
          17. 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 +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. -

            -

          18. -Preserve the network location, if any, given in the Document for +
          19. 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. +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. -

            -

          20. -For any section Entitled "Acknowledgements" or "Dedications", Preserve +
          21. 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. -

            -

          22. -Preserve all the Invariant Sections of the Document, +
          23. 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. -

            -

          24. -Delete any section Entitled "Endorsements". Such a section +
          25. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version. -

            -

          26. -Do not retitle any existing section to be Entitled "Endorsements" or +
          27. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section. -

            -

          28. -Preserve any Warranty Disclaimers. -
          -

          +

        2. Preserve any Warranty Disclaimers. +
        -If the Modified Version includes new front-matter sections or +

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

        +

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

        +

        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 @@ -15239,26 +13954,21 @@ 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 +

        +

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

        +

        +
      10. COMBINING DOCUMENTS -
      11. -COMBINING DOCUMENTS -

        - -You may combine the Document with other documents released under this +

        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 +

        +

        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 @@ -15266,60 +13976,48 @@ 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 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." -

        +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” +

        +
      12. COLLECTIONS OF DOCUMENTS -
      13. -COLLECTIONS OF DOCUMENTS -

        - -You may make a collection consisting of the Document and other 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 +

        +

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

        +

        +
      14. AGGREGATION WITH INDEPENDENT WORKS -
      15. -AGGREGATION WITH INDEPENDENT WORKS -

        - -A compilation of the Document or its derivatives with other separate +

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

        +

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

        +

        +
      16. TRANSLATION -
      17. -TRANSLATION -

        - -Translation is considered a kind of modification, so you may +

        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 @@ -15331,2151 +14029,1334 @@ 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 +

        +

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

        +

        +
      18. TERMINATION -
      19. -TERMINATION -

        - -You may not copy, modify, sublicense, or distribute the Document +

        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 +

        +

        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 +

        +

        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 +

        +

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

        +

        +
      20. FUTURE REVISIONS OF THIS LICENSE -
      21. -FUTURE REVISIONS OF THIS LICENSE -

        - -The Free Software Foundation may publish new, revised versions +

        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. +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 +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 +License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document. -

        +

        +
      22. RELICENSING -
      23. -RELICENSING -

        - -"Massive Multiauthor Collaboration Site" (or "MMC Site") means any +

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

        +

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

        +

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

        +

        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 +

        +

        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

    - -

    ADDENDUM: How to use this License for your documents

    - -

    - -To use this License in a document you have written, include a copy of +

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

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

    +

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

    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 +

    +

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

    +


    + + + +

    Appendix D Indexes

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ 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:   ! +
    + +
    +

    +Next: , Up: Indexes   [Contents][Index]

    +
    + +

    D.1 Index of Shell Builtin Commands

    +
    Jump to:   .   -[ +:   -] +[   -{ +
    +A   -} +B   -
    -C +C   -D +D   -E +E   -F +F   -I +G   -S +H   -T +J   -U +K   -W +L   -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    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:   ! +M   -[ +P   -] +R   -{ +S   -} +T   -
    -C +U   -D +W   -E +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Index Entry  Section

    .
    .: Bourne Shell Builtins

    :
    :: Bourne Shell Builtins

    [
    [: Bourne Shell Builtins

    A
    alias: Bash Builtins

    B
    bg: Job Control Builtins
    bind: Bash Builtins
    break: Bourne Shell Builtins
    builtin: Bash Builtins

    C
    caller: Bash Builtins
    cd: Bourne Shell Builtins
    command: Bash Builtins
    compgen: Programmable Completion Builtins
    complete: Programmable Completion Builtins
    compopt: Programmable Completion Builtins
    continue: Bourne Shell Builtins

    D
    declare: Bash Builtins
    dirs: Directory Stack Builtins
    disown: Job Control Builtins

    E
    echo: Bash Builtins
    enable: Bash Builtins
    eval: Bourne Shell Builtins
    exec: Bourne Shell Builtins
    exit: Bourne Shell Builtins
    export: Bourne Shell Builtins

    F
    fc: Bash History Builtins
    fg: Job Control Builtins

    G
    getopts: Bourne Shell Builtins

    H
    hash: Bourne Shell Builtins
    help: Bash Builtins
    history: Bash History Builtins

    J
    jobs: Job Control Builtins

    K
    kill: Job Control Builtins

    L
    let: Bash Builtins
    local: Bash Builtins
    logout: Bash Builtins

    M
    mapfile: Bash Builtins

    P
    popd: Directory Stack Builtins
    printf: Bash Builtins
    pushd: Directory Stack Builtins
    pwd: Bourne Shell Builtins

    R
    read: Bash Builtins
    readarray: Bash Builtins
    readonly: Bourne Shell Builtins
    return: Bourne Shell Builtins

    S
    set: The Set Builtin
    shift: Bourne Shell Builtins
    shopt: The Shopt Builtin
    source: Bash Builtins
    suspend: Job Control Builtins

    T
    test: Bourne Shell Builtins
    times: Bourne Shell Builtins
    trap: Bourne Shell Builtins
    type: Bash Builtins
    typeset: Bash Builtins

    U
    ulimit: Bash Builtins
    umask: Bourne Shell Builtins
    unalias: Bash Builtins
    unset: Bourne Shell Builtins

    W
    wait: Job Control Builtins

    +
    Jump to:   .   -F +:   -I +[   -S +
    +A   -T +B   -U +C   -W +D   -

    +E +   +F +   +G +   +H +   +J +   +K +   +L +   +M +   +P +   +R +   +S +   +T +   +U +   +W +   +

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

    D.3 Parameter and Variable Index

    - -
    Jump to:   ! +
    + +
    +

    +Next: , Previous: , Up: Indexes   [Contents][Index]

    +
    + +

    D.2 Index of Shell Reserved Words

    +
    Jump to:   !   -# +[   -$ +]   -* +{   -- +}   -0 +
    +C   -? +D   -@ +E   -_ +F   -
    -A +I   -B +S   -C +T   -D +U   -E +W   -F +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Index Entry  Section

    !
    !: Pipelines

    [
    [[: Conditional Constructs

    ]
    ]]: Conditional Constructs

    {
    {: Command Grouping

    }
    }: Command Grouping

    C
    case: Conditional Constructs

    D
    do: Looping Constructs
    done: Looping Constructs

    E
    elif: Conditional Constructs
    else: Conditional Constructs
    esac: Conditional Constructs

    F
    fi: Conditional Constructs
    for: Looping Constructs
    function: Shell Functions

    I
    if: Conditional Constructs
    in: Conditional Constructs

    S
    select: Conditional Constructs

    T
    then: Conditional Constructs
    time: Pipelines

    U
    until: Looping Constructs

    W
    while: Looping Constructs

    +
    Jump to:   !   -G +[   -H +]   -I +{   -K +}   -L +
    +C   -M +D   -O +E   -P +F   -R +I   -S +S   -T +T   -U +U   -V +W   -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    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
    $-3.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
    -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 +
    + +
    +

    +Next: , Previous: , Up: Indexes   [Contents][Index]

    +
    + +

    D.3 Parameter and Variable Index

    +
    Jump to:   !   -B +#   -C +$   -D +*   -E +-   -F +0   -G +?   -H +@   -I +_   -K +
    +A   -M +B   -N +C   -O +D   -P +E   -Q +F   -R +G   -S +H   -T +I   -U +K   -Y +L   -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    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-file (usually C-d)8.4.3 Commands For Changing Text
    end-of-file (usually C-d)8.4.3 Commands For Changing Text
    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 +M   -B +O   -C +P   -D +R   -E +S   -F +T   -G +U   -H +V   -I +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Index Entry  Section

    !
    !: Special Parameters

    #
    #: Special Parameters

    $
    $: Special Parameters
    $!: Special Parameters
    $#: Special Parameters
    $$: Special Parameters
    $*: Special Parameters
    $-: Special Parameters
    $0: Special Parameters
    $?: Special Parameters
    $@: Special Parameters
    $_: Special Parameters

    *
    *: Special Parameters

    -
    -: Special Parameters

    0
    0: Special Parameters

    ?
    ?: Special Parameters

    @
    @: Special Parameters

    _
    _: Special Parameters

    A
    auto_resume: Job Control Variables

    B
    BASH: Bash Variables
    BASHOPTS: Bash Variables
    BASHPID: Bash Variables
    BASH_ALIASES: Bash Variables
    BASH_ARGC: Bash Variables
    BASH_ARGV: Bash Variables
    BASH_CMDS: Bash Variables
    BASH_COMMAND: Bash Variables
    BASH_COMPAT: Bash Variables
    BASH_ENV: Bash Variables
    BASH_EXECUTION_STRING: Bash Variables
    BASH_LINENO: Bash Variables
    BASH_LOADABLES_PATH: Bash Variables
    BASH_REMATCH: Bash Variables
    BASH_SOURCE: Bash Variables
    BASH_SUBSHELL: Bash Variables
    BASH_VERSINFO: Bash Variables
    BASH_VERSION: Bash Variables
    BASH_XTRACEFD: Bash Variables
    bell-style: Readline Init File Syntax
    bind-tty-special-chars: Readline Init File Syntax
    blink-matching-paren: Readline Init File Syntax

    C
    CDPATH: Bourne Shell Variables
    CHILD_MAX: Bash Variables
    colored-completion-prefix: Readline Init File Syntax
    colored-stats: Readline Init File Syntax
    COLUMNS: Bash Variables
    comment-begin: Readline Init File Syntax
    completion-display-width: Readline Init File Syntax
    completion-ignore-case: Readline Init File Syntax
    completion-map-case: Readline Init File Syntax
    completion-prefix-display-length: Readline Init File Syntax
    completion-query-items: Readline Init File Syntax
    COMPREPLY: Bash Variables
    COMP_CWORD: Bash Variables
    COMP_KEY: Bash Variables
    COMP_LINE: Bash Variables
    COMP_POINT: Bash Variables
    COMP_TYPE: Bash Variables
    COMP_WORDBREAKS: Bash Variables
    COMP_WORDS: Bash Variables
    convert-meta: Readline Init File Syntax
    COPROC: Bash Variables

    D
    DIRSTACK: Bash Variables
    disable-completion: Readline Init File Syntax

    E
    echo-control-characters: Readline Init File Syntax
    editing-mode: Readline Init File Syntax
    EMACS: Bash Variables
    emacs-mode-string: Readline Init File Syntax
    enable-bracketed-paste: Readline Init File Syntax
    enable-keypad: Readline Init File Syntax
    ENV: Bash Variables
    EUID: Bash Variables
    EXECIGNORE: Bash Variables
    expand-tilde: Readline Init File Syntax

    F
    FCEDIT: Bash Variables
    FIGNORE: Bash Variables
    FUNCNAME: Bash Variables
    FUNCNEST: Bash Variables

    G
    GLOBIGNORE: Bash Variables
    GROUPS: Bash Variables

    H
    histchars: Bash Variables
    HISTCMD: Bash Variables
    HISTCONTROL: Bash Variables
    HISTFILE: Bash Variables
    HISTFILESIZE: Bash Variables
    HISTIGNORE: Bash Variables
    history-preserve-point: Readline Init File Syntax
    history-size: Readline Init File Syntax
    HISTSIZE: Bash Variables
    HISTTIMEFORMAT: Bash Variables
    HOME: Bourne Shell Variables
    horizontal-scroll-mode: Readline Init File Syntax
    HOSTFILE: Bash Variables
    HOSTNAME: Bash Variables
    HOSTTYPE: Bash Variables

    I
    IFS: Bourne Shell Variables
    IGNOREEOF: Bash Variables
    input-meta: Readline Init File Syntax
    INPUTRC: Bash Variables
    isearch-terminators: Readline Init File Syntax

    K
    keymap: Readline Init File Syntax

    L
    LANG: Bash Variables
    LC_ALL: Bash Variables
    LC_COLLATE: Bash Variables
    LC_CTYPE: Bash Variables
    LC_MESSAGES: Locale Translation
    LC_MESSAGES: Bash Variables
    LC_NUMERIC: Bash Variables
    LC_TIME: Bash Variables
    LINENO: Bash Variables
    LINES: Bash Variables

    M
    MACHTYPE: Bash Variables
    MAIL: Bourne Shell Variables
    MAILCHECK: Bash Variables
    MAILPATH: Bourne Shell Variables
    MAPFILE: Bash Variables
    mark-modified-lines: Readline Init File Syntax
    mark-symlinked-directories: Readline Init File Syntax
    match-hidden-files: Readline Init File Syntax
    menu-complete-display-prefix: Readline Init File Syntax
    meta-flag: Readline Init File Syntax

    O
    OLDPWD: Bash Variables
    OPTARG: Bourne Shell Variables
    OPTERR: Bash Variables
    OPTIND: Bourne Shell Variables
    OSTYPE: Bash Variables
    output-meta: Readline Init File Syntax

    P
    page-completions: Readline Init File Syntax
    PATH: Bourne Shell Variables
    PIPESTATUS: Bash Variables
    POSIXLY_CORRECT: Bash Variables
    PPID: Bash Variables
    PROMPT_COMMAND: Bash Variables
    PROMPT_DIRTRIM: Bash Variables
    PS0: Bash Variables
    PS1: Bourne Shell Variables
    PS2: Bourne Shell Variables
    PS3: Bash Variables
    PS4: Bash Variables
    PWD: Bash Variables

    R
    RANDOM: Bash Variables
    READLINE_LINE: Bash Variables
    READLINE_POINT: Bash Variables
    REPLY: Bash Variables
    revert-all-at-newline: Readline Init File Syntax

    S
    SECONDS: Bash Variables
    SHELL: Bash Variables
    SHELLOPTS: Bash Variables
    SHLVL: Bash Variables
    show-all-if-ambiguous: Readline Init File Syntax
    show-all-if-unmodified: Readline Init File Syntax
    show-mode-in-prompt: Readline Init File Syntax
    skip-completed-text: Readline Init File Syntax

    T
    TEXTDOMAIN: Locale Translation
    TEXTDOMAINDIR: Locale Translation
    TIMEFORMAT: Bash Variables
    TMOUT: Bash Variables
    TMPDIR: Bash Variables

    U
    UID: Bash Variables

    V
    vi-cmd-mode-string: Readline Init File Syntax
    vi-ins-mode-string: Readline Init File Syntax
    visible-stats: Readline Init File Syntax

    +
    Jump to:   !   -K +#   -M +$   -N +*   -O +-   -P +0   -Q +?   -R +@   -S +_   -T +
    +A   -U +B   -Y +C   -

    +D +   +E +   +F +   +G +   +H +   +I +   +K +   +L +   +M +   +O +   +P +   +R +   +S +   +T +   +U +   +V +   +

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

    D.5 Concept Index

    - -
    Jump to:   A +
    + +
    +

    +Next: , Previous: , Up: Indexes   [Contents][Index]

    +
    + +

    D.4 Function Index

    +
    Jump to:   A   -B +B   -C +C   -D +D   -E +E   -F +F   -H +G   -I +H   -J +I   -K +K   -L +M   -M +N   -N +O   -O +P   -P +Q   -Q +R   -R +S   -S +T   -T +U   -V +Y   -W +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Index Entry  Section

    A
    abort (C-g): Miscellaneous Commands
    accept-line (Newline or Return): Commands For History
    alias-expand-line (): Miscellaneous Commands

    B
    backward-char (C-b): Commands For Moving
    backward-delete-char (Rubout): Commands For Text
    backward-kill-line (C-x Rubout): Commands For Killing
    backward-kill-word (M-DEL): Commands For Killing
    backward-word (M-b): Commands For Moving
    beginning-of-history (M-<): Commands For History
    beginning-of-line (C-a): Commands For Moving
    bracketed-paste-begin (): Commands For Text

    C
    call-last-kbd-macro (C-x e): Keyboard Macros
    capitalize-word (M-c): Commands For Text
    character-search (C-]): Miscellaneous Commands
    character-search-backward (M-C-]): Miscellaneous Commands
    clear-screen (C-l): Commands For Moving
    complete (TAB): Commands For Completion
    complete-command (M-!): Commands For Completion
    complete-filename (M-/): Commands For Completion
    complete-hostname (M-@): Commands For Completion
    complete-into-braces (M-{): Commands For Completion
    complete-username (M-~): Commands For Completion
    complete-variable (M-$): Commands For Completion
    copy-backward-word (): Commands For Killing
    copy-forward-word (): Commands For Killing
    copy-region-as-kill (): Commands For Killing

    D
    dabbrev-expand (): Commands For Completion
    delete-char (C-d): Commands For Text
    delete-char-or-list (): Commands For Completion
    delete-horizontal-space (): Commands For Killing
    digit-argument (M-0, M-1, … M--): Numeric Arguments
    display-shell-version (C-x C-v): Miscellaneous Commands
    do-uppercase-version (M-a, M-b, M-x, …): Miscellaneous Commands
    downcase-word (M-l): Commands For Text
    dump-functions (): Miscellaneous Commands
    dump-macros (): Miscellaneous Commands
    dump-variables (): Miscellaneous Commands
    dynamic-complete-history (M-TAB): Commands For Completion

    E
    edit-and-execute-command (C-xC-e): Miscellaneous Commands
    end-kbd-macro (C-x )): Keyboard Macros
    end-of-file (usually C-d): Commands For Text
    end-of-history (M->): Commands For History
    end-of-line (C-e): Commands For Moving
    exchange-point-and-mark (C-x C-x): Miscellaneous Commands

    F
    forward-backward-delete-char (): Commands For Text
    forward-char (C-f): Commands For Moving
    forward-search-history (C-s): Commands For History
    forward-word (M-f): Commands For Moving

    G
    glob-complete-word (M-g): Miscellaneous Commands
    glob-expand-word (C-x *): Miscellaneous Commands
    glob-list-expansions (C-x g): Miscellaneous Commands

    H
    history-and-alias-expand-line (): Miscellaneous Commands
    history-expand-line (M-^): Miscellaneous Commands
    history-search-backward (): Commands For History
    history-search-forward (): Commands For History
    history-substr-search-backward (): Commands For History
    history-substr-search-forward (): Commands For History

    I
    insert-comment (M-#): Miscellaneous Commands
    insert-completions (M-*): Commands For Completion
    insert-last-argument (M-. or M-_): Miscellaneous Commands

    K
    kill-line (C-k): Commands For Killing
    kill-region (): Commands For Killing
    kill-whole-line (): Commands For Killing
    kill-word (M-d): Commands For Killing

    M
    magic-space (): Miscellaneous Commands
    menu-complete (): Commands For Completion
    menu-complete-backward (): Commands For Completion

    N
    next-history (C-n): Commands For History
    non-incremental-forward-search-history (M-n): Commands For History
    non-incremental-reverse-search-history (M-p): Commands For History

    O
    operate-and-get-next (C-o): Miscellaneous Commands
    overwrite-mode (): Commands For Text

    P
    possible-command-completions (C-x !): Commands For Completion
    possible-completions (M-?): Commands For Completion
    possible-filename-completions (C-x /): Commands For Completion
    possible-hostname-completions (C-x @): Commands For Completion
    possible-username-completions (C-x ~): Commands For Completion
    possible-variable-completions (C-x $): Commands For Completion
    prefix-meta (ESC): Miscellaneous Commands
    previous-history (C-p): Commands For History
    print-last-kbd-macro (): Keyboard Macros

    Q
    quoted-insert (C-q or C-v): Commands For Text

    R
    re-read-init-file (C-x C-r): Miscellaneous Commands
    redraw-current-line (): Commands For Moving
    reverse-search-history (C-r): Commands For History
    revert-line (M-r): Miscellaneous Commands

    S
    self-insert (a, b, A, 1, !, …): Commands For Text
    set-mark (C-@): Miscellaneous Commands
    shell-backward-kill-word (): Commands For Killing
    shell-backward-word (): Commands For Moving
    shell-expand-line (M-C-e): Miscellaneous Commands
    shell-forward-word (): Commands For Moving
    shell-kill-word (): Commands For Killing
    skip-csi-sequence (): Miscellaneous Commands
    start-kbd-macro (C-x (): Keyboard Macros

    T
    tilde-expand (M-&): Miscellaneous Commands
    transpose-chars (C-t): Commands For Text
    transpose-words (M-t): Commands For Text

    U
    undo (C-_ or C-x C-u): Miscellaneous Commands
    universal-argument (): Numeric Arguments
    unix-filename-rubout (): Commands For Killing
    unix-line-discard (C-u): Commands For Killing
    unix-word-rubout (C-w): Commands For Killing
    upcase-word (M-u): Commands For Text

    Y
    yank (C-y): Commands For Killing
    yank-last-arg (M-. or M-_): Commands For History
    yank-nth-arg (M-C-y): Commands For History
    yank-pop (M-y): Commands For Killing

    +
    Jump to:   A   -Y +B   -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    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 +C   -B +D   -C +E   -D +F   -E +G   -F +H   -H +I   -I +K   -J +M   -K +N   -L +O   -M +P   -N +Q   -O +R   -P +S   -Q +T   -R +U   -S +Y   -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 -
    +
    + +
    +

    +Previous: , Up: Indexes   [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 expansion: Aliases
    arithmetic evaluation: Shell Arithmetic
    arithmetic expansion: Arithmetic Expansion
    arithmetic, shell: Shell Arithmetic
    arrays: Arrays

    B
    background: Job Control Basics
    Bash configuration: Basic Installation
    Bash installation: Basic Installation
    Bourne shell: Basic Shell Features
    brace expansion: Brace Expansion
    builtin: Definitions

    C
    command editing: Readline Bare Essentials
    command execution: Command Search and Execution
    command expansion: Simple Command Expansion
    command history: Bash History Facilities
    command search: Command Search and Execution
    command substitution: Command Substitution
    command timing: Pipelines
    commands, compound: Compound Commands
    commands, conditional: Conditional Constructs
    commands, grouping: Command Grouping
    commands, lists: Lists
    commands, looping: Looping Constructs
    commands, pipelines: Pipelines
    commands, shell: Shell Commands
    commands, simple: Simple Commands
    comments, shell: Comments
    completion builtins: Programmable Completion Builtins
    configuration: Basic Installation
    control operator: Definitions
    coprocess: Coprocesses

    D
    directory stack: The Directory Stack

    E
    editing command lines: Readline Bare Essentials
    environment: Environment
    evaluation, arithmetic: Shell Arithmetic
    event designators: Event Designators
    execution environment: Command Execution Environment
    exit status: Definitions
    exit status: Exit Status
    expansion: Shell Expansions
    expansion, arithmetic: Arithmetic Expansion
    expansion, brace: Brace Expansion
    expansion, filename: Filename Expansion
    expansion, parameter: Shell Parameter Expansion
    expansion, pathname: Filename Expansion
    expansion, tilde: Tilde Expansion
    expressions, arithmetic: Shell Arithmetic
    expressions, conditional: Bash Conditional Expressions

    F
    field: Definitions
    filename: Definitions
    filename expansion: Filename Expansion
    foreground: Job Control Basics
    functions, shell: Shell Functions

    H
    history builtins: Bash History Builtins
    history events: Event Designators
    history expansion: History Interaction
    history list: Bash History Facilities
    History, how to use: A Programmable Completion Example

    I
    identifier: Definitions
    initialization file, readline: Readline Init File
    installation: Basic Installation
    interaction, readline: Readline Interaction
    interactive shell: Invoking Bash
    interactive shell: Interactive Shells
    internationalization: Locale Translation

    J
    job: Definitions
    job control: Definitions
    job control: Job Control Basics

    K
    kill ring: Readline Killing Commands
    killing text: Readline Killing Commands

    L
    localization: Locale Translation
    login shell: Invoking Bash

    M
    matching, pattern: Pattern Matching
    metacharacter: Definitions

    N
    name: Definitions
    native languages: Locale Translation
    notation, readline: Readline Bare Essentials

    O
    operator, shell: Definitions

    P
    parameter expansion: Shell Parameter Expansion
    parameters: Shell Parameters
    parameters, positional: Positional Parameters
    parameters, special: Special Parameters
    pathname expansion: Filename Expansion
    pattern matching: Pattern Matching
    pipeline: Pipelines
    POSIX: Definitions
    POSIX Mode: Bash POSIX Mode
    process group: Definitions
    process group ID: Definitions
    process substitution: Process Substitution
    programmable completion: Programmable Completion
    prompting: Controlling the Prompt

    Q
    quoting: Quoting
    quoting, ANSI: ANSI-C Quoting

    R
    Readline, how to use: Job Control Variables
    redirection: Redirections
    reserved word: Definitions
    restricted shell: The Restricted Shell
    return status: Definitions

    S
    shell arithmetic: Shell Arithmetic
    shell function: Shell Functions
    shell script: Shell Scripts
    shell variable: Shell Parameters
    shell, interactive: Interactive Shells
    signal: Definitions
    signal handling: Signals
    special builtin: Definitions
    special builtin: Special Builtins
    startup files: Bash Startup Files
    suspending jobs: Job Control Basics

    T
    tilde expansion: Tilde Expansion
    token: Definitions
    translation, native languages: Locale Translation

    V
    variable, shell: Shell Parameters
    variables, readline: Readline Init File Syntax

    W
    word: Definitions
    word splitting: Word Splitting

    Y
    yanking text: 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][ ? ]
    -

    About this document

    -This document was generated by Chet Ramey on February, 24 2014 -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 February, 24 2014 -using texi2html - - + + + diff --git a/doc/bashref.info b/doc/bashref.info index 6f60af1..28b0610 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -1,13 +1,13 @@ -This is bashref.info, produced by makeinfo version 4.13 from -/usr/homes/chet/src/bash/src/doc/bashref.texi. +This is bashref.info, produced by makeinfo version 6.1 from +bashref.texi. -This text is a brief description of the features that are present in -the Bash shell (version 4.3, 2 February 2014). +This text is a brief description of the features that are present in the +Bash shell (version 4.4, 7 September 2016). - This is Edition 4.3, last updated 2 February 2014, of `The GNU Bash -Reference Manual', for `Bash', Version 4.3. + This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash +Reference Manual', for 'Bash', Version 4.4. - Copyright (C) 1988-2014 Free Software Foundation, Inc. + Copyright (C) 1988-2016 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -15,7 +15,6 @@ Reference Manual', for `Bash', Version 4.3. 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". - INFO-DIR-SECTION Basics START-INFO-DIR-ENTRY * Bash: (bash). The GNU Bourne-Again SHell. @@ -27,17 +26,17 @@ File: bashref.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.3, 2 February 2014). The Bash home page is -`http://www.gnu.org/software/bash/'. +This text is a brief description of the features that are present in the +Bash shell (version 4.4, 7 September 2016). The Bash home page is +. - This is Edition 4.3, last updated 2 February 2014, of `The GNU Bash -Reference Manual', for `Bash', Version 4.3. + This is Edition 4.4, last updated 7 September 2016, of 'The GNU Bash +Reference Manual', for 'Bash', Version 4.4. 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 +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. @@ -68,7 +67,7 @@ on shell behavior. * Indexes:: Various indexes for this manual.  -File: bashref.info, Node: Introduction, Next: Definitions, Prev: Top, Up: Top +File: bashref.info, Node: Introduction, Next: Definitions, Up: Top 1 Introduction ************** @@ -85,20 +84,20 @@ File: bashref.info, Node: What is Bash?, Next: What is a shell?, Up: Introduc ================= Bash is the shell, or command language interpreter, for the GNU -operating system. The name is an acronym for the `Bourne-Again SHell', +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. +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. + 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, +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. @@ -109,9 +108,9 @@ File: bashref.info, Node: What is a shell?, Prev: What is Bash?, Up: Introduc 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. +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 @@ -119,7 +118,7 @@ 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 +'/bin', allowing users or groups to establish custom environments to automate their common tasks. Shells may be used interactively or non-interactively. In @@ -136,17 +135,17 @@ 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' +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' +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. +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 @@ -161,90 +160,90 @@ File: bashref.info, Node: Definitions, Next: Basic Shell Features, Prev: Intr 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. +'POSIX' + A family of open system standards based on Unix. Bash is primarily + concerned with the Shell and Utilities portion of the POSIX 1003.1 + standard. -`blank' +'blank' A space or tab character. -`builtin' +'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 `)'. +'control operator' + A 'token' that performs a control function. It is a 'newline' or + one of the following: '||', '&&', '&', ';', ';;', ';&', ';;&', '|', + '|&', '(', or ')'. -`exit status' +'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' +'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. + After expansion, when executing a command, the resulting fields are + used as the command name and arguments. -`filename' +'filename' A string of characters used to identify a file. -`job' +'job' A set of processes comprising a pipeline, and any processes descended from it, that are all in the same process group. -`job control' +'job control' A mechanism by which users can selectively stop (suspend) and restart (resume) execution of processes. -`metacharacter' +'metacharacter' A character that, when unquoted, separates words. A metacharacter - is a `blank' or one of the following characters: `|', `&', `;', - `(', `)', `<', or `>'. + is a 'space', 'tab', 'newline', 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 +'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'. + 'identifier'. -`operator' - A `control operator' or a `redirection operator'. *Note +'operator' + A 'control operator' or a 'redirection operator'. *Note Redirections::, for a list of redirection operators. Operators - contain at least one unquoted `metacharacter'. + contain at least one unquoted 'metacharacter'. -`process group' +'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 +'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'. +'reserved word' + A 'word' that has a special meaning to the shell. Most reserved + words introduce shell flow control constructs, such as 'for' and + 'while'. -`return status' - A synonym for `exit status'. +'return status' + A synonym for 'exit status'. -`signal' +'signal' A mechanism by which a process may be notified by the kernel of an event occurring in the system. -`special builtin' +'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'. +'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'. +'word' + A sequence of characters treated as a unit by the shell. Words may + not include unquoted 'metacharacters'.  File: bashref.info, Node: Basic Shell Features, Next: Shell Builtin Commands, Prev: Definitions, Up: Top @@ -252,13 +251,13 @@ File: bashref.info, Node: Basic Shell Features, Next: Shell Builtin Commands, 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 +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. +'standard' Unix shell. - This chapter briefly summarizes the shell's `building blocks': + 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. @@ -287,11 +286,11 @@ File: bashref.info, Node: Shell Syntax, Next: Shell Commands, Up: Basic 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 +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. +shell ignores the comment symbol ('#'), and the rest of that line. - Otherwise, roughly speaking, the shell reads its input and divides + 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. @@ -311,13 +310,13 @@ 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 + 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::). + 'metacharacters'. Alias expansion is performed by this step (*note + Aliases::). 3. Parses the tokens into simple and compound commands (*note Shell Commands::). @@ -335,7 +334,6 @@ reads and executes a command. Basically, the shell does the following: 7. Optionally waits for the command to complete and collects its exit status (*note Exit Status::). -  File: bashref.info, Node: Quoting, Next: Comments, Prev: Shell Operation, Up: Shell Syntax @@ -353,15 +351,15 @@ File: bashref.info, Node: Quoting, Next: Comments, Prev: Shell Operation, Up * 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. +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 `!', +History Interaction::), the HISTORY EXPANSION character, usually '!', must be quoted to prevent history expansion. *Note Bash History Facilities::, for more details concerning history expansion. @@ -374,12 +372,11 @@ File: bashref.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). +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: bashref.info, Node: Single Quotes, Next: Double Quotes, Prev: Escape Character, Up: Quoting @@ -387,7 +384,7 @@ File: bashref.info, Node: Single Quotes, Next: Double Quotes, Prev: Escape Ch 3.1.2.2 Single Quotes ..................... -Enclosing characters in single quotes (`'') preserves the literal value +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. @@ -397,21 +394,23 @@ File: bashref.info, Node: Double Quotes, Next: ANSI-C Quoting, Prev: Single Q 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. +Enclosing characters in double quotes ('"') preserves the literal value +of all characters within the quotes, with the exception of '$', '`', +'\', and, when history expansion is enabled, '!'. When the shell is in +POSIX mode (*note Bash POSIX Mode::), the '!' has no special meaning +within double quotes, even 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 + The special parameters '*' and '@' have special meaning when in double quotes (*note Shell Parameter Expansion::).  @@ -420,66 +419,53 @@ File: bashref.info, Node: ANSI-C Quoting, Next: Locale Translation, Prev: Dou 3.1.2.4 ANSI-C Quoting ...................... -Words of the form `$'STRING'' are treated specially. The word expands +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' +'\a' alert (bell) - -`\b' +'\b' backspace - -`\e' -`\E' +'\e' +'\E' an escape character (not ANSI C) - -`\f' +'\f' form feed - -`\n' +'\n' newline - -`\r' +'\r' carriage return - -`\t' +'\t' horizontal tab - -`\v' +'\v' vertical tab - -`\\' +'\\' backslash - -`\'' +'\'' single quote - -`\"' +'\"' double quote - -`\NNN' +'\?' + question mark +'\NNN' the eight-bit character whose value is the octal value NNN (one to three digits) - -`\xHH' +'\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) - -`\uHHHH' +'\uHHHH' the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits) - -`\UHHHHHHHH' +'\UHHHHHHHH' the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits) - -`\cX' +'\cX' a control-X character -The expanded result is single-quoted, as if the dollar sign had not -been present. +The expanded result is single-quoted, as if the dollar sign had not been +present.  File: bashref.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoting @@ -487,18 +473,18 @@ File: bashref.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoti 3.1.2.5 Locale-Specific Translation ................................... -A double-quoted string preceded by a dollar sign (`$') will cause the -string to be translated according to the current locale. 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. +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' + 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. +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. +'TEXTDOMAINDIR'/'LC_MESSAGES'/LC_MESSAGES/'TEXTDOMAIN'.mo.  File: bashref.info, Node: Comments, Prev: Quoting, Up: Shell Syntax @@ -507,11 +493,11 @@ File: bashref.info, Node: Comments, Prev: Quoting, Up: Shell Syntax -------------- 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_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. @@ -521,7 +507,7 @@ File: bashref.info, Node: Shell Commands, Next: Shell Functions, Prev: Shell 3.2 Shell Commands ================== -A simple shell command such as `echo a b c' consists of the command +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 @@ -546,14 +532,14 @@ File: bashref.info, Node: Simple Commands, Next: Pipelines, Up: Shell Command --------------------- 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. +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. +exit status as provided by the POSIX 1003.1 'waitpid' function, or 128+N +if the command was terminated by signal N.  File: bashref.info, Node: Pipelines, Next: Lists, Prev: Simple Commands, Up: Shell Commands @@ -561,40 +547,40 @@ File: bashref.info, Node: Pipelines, Next: Lists, Prev: Simple Commands, Up: 3.2.2 Pipelines --------------- -A `pipeline' is a sequence of simple commands separated by one of the -control operators `|' or `|&'. +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]] [!] 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. +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 error, in addition to its + If '|&' is used, COMMAND1's standard error, in addition to its standard output, is connected to COMMAND2's standard input through the -pipe; it is shorthand for `2>&1 |'. This implicit redirection of the +pipe; it is shorthand for '2>&1 |'. This implicit redirection of the standard error to the standard output is performed after any redirections specified by the command. - The reserved word `time' causes timing statistics to be printed for + 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 +command's execution. The '-p' option changes the output format to that specified by POSIX. When the shell is in POSIX mode (*note 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 +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. *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' +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 (*note 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 + When the shell is in POSIX mode (*note 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 (*note Lists::), the @@ -602,11 +588,11 @@ 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, +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 +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. @@ -617,37 +603,37 @@ File: bashref.info, Node: Lists, Next: Compound Commands, Prev: Pipelines, U 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'. +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. + 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 + 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 + 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'. +redirected from '/dev/null'. - Commands separated by a `;' are executed sequentially; the shell + 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. +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. +COMMAND2 is executed if, and only if, COMMAND1 returns an exit status of +zero. An OR list has the form COMMAND1 || COMMAND2 @@ -670,12 +656,11 @@ File: bashref.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, * Conditional Constructs:: Shell commands for conditional execution. * Command Grouping:: Ways to group commands. - Compound commands are the shell programming constructs. Each -construct begins with a reserved word or control operator and is -terminated by a corresponding reserved word or operator. Any -redirections (*note Redirections::) associated with a compound command -apply to all commands within that compound command unless explicitly -overridden. +Compound commands are the shell programming constructs. Each construct +begins with a reserved word or control operator and is terminated by a +corresponding reserved word or operator. Any redirections (*note +Redirections::) associated with a compound command apply to all commands +within that compound command unless explicitly overridden. In most cases a list of commands in a compound command's description may be separated from the rest of the command by one or more newlines, @@ -692,11 +677,11 @@ File: bashref.info, Node: Looping Constructs, Next: Conditional Constructs, U Bash supports the following looping constructs. - Note that wherever a `;' appears in the description of a command's + 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' + The syntax of the 'until' command is: until TEST-COMMANDS; do CONSEQUENT-COMMANDS; done @@ -705,8 +690,8 @@ syntax, it may be replaced with one or more newlines. the last command executed in CONSEQUENT-COMMANDS, or zero if none was executed. -`while' - The syntax of the `while' command is: +'while' + The syntax of the 'while' command is: while TEST-COMMANDS; do CONSEQUENT-COMMANDS; done @@ -715,21 +700,21 @@ syntax, it may be replaced with one or more newlines. command executed in CONSEQUENT-COMMANDS, or zero if none was executed. -`for' - The syntax of the `for' command is: +'for' + The syntax of the 'for' command is: for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done 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. + 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: + An alternate form of the 'for' command is also supported: for (( EXPR1 ; EXPR2 ; EXPR3 )) ; do COMMANDS ; done @@ -743,7 +728,7 @@ syntax, it may be replaced with one or more newlines. command in COMMANDS that is executed, or false if any of the expressions is invalid. - The `break' and `continue' builtins (*note Bourne Shell Builtins::) + The 'break' and 'continue' builtins (*note Bourne Shell Builtins::) may be used to control loop execution.  @@ -752,8 +737,8 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre 3.2.4.2 Conditional Constructs .............................. -`if' - The syntax of the `if' command is: +'if' + The syntax of the 'if' command is: if TEST-COMMANDS; then CONSEQUENT-COMMANDS; @@ -764,43 +749,43 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre 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, + 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 + 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 + 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. + status of the last command executed, or zero if no condition tested + true. -`case' - The syntax of the `case' command is: +'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. + 'case' will selectively execute the COMMAND-LIST corresponding to + the first PATTERN that matches WORD. If the 'nocasematch' shell + option (see the description of 'shopt' in *note The Shopt + Builtin::) is enabled, the match is performed without regard to the + case of alphabetic characters. The '|' is used to separate + multiple patterns, and the ')' operator terminates a pattern list. A list of patterns and an associated command-list is known as a CLAUSE. - Each clause must be terminated with `;;', `;&', or `;;&'. The - WORD undergoes tilde expansion, parameter expansion, command + 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 + 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 + 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 + 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: " @@ -813,36 +798,38 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre 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. + + 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' + + 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 + 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'. + 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. + 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 @@ -854,7 +841,7 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre break; done -`((...))' +'((...))' (( EXPRESSION )) The arithmetic EXPRESSION is evaluated according to the rules @@ -862,88 +849,86 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre 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. + *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. + 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 used with `[[', the `<' and `>' operators sort + When used with '[[', the '<' and '>' operators sort lexicographically using the current locale. - When the `==' and `!=' operators are used, the string to the right + When the '==' and '!=' operators are used, the string to the right of the operator is considered a pattern and matched according to the rules described below in *note Pattern Matching::, as if the - `extglob' shell option were enabled. The `=' operator is - identical to `=='. 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 the quoted portion to be - matched as a string. + 'extglob' shell option were enabled. The '=' operator is identical + to '=='. If the 'nocasematch' shell option (see the description of + 'shopt' in *note The Shopt Builtin::) is enabled, the match is + performed without regard to the case of alphabetic characters. The + 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 + 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 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. + expression is syntactically incorrect, the conditional expression's + return value is 2. If the 'nocasematch' shell option (see the + description of 'shopt' in *note The Shopt Builtin::) is enabled, + the match is performed without regard to the case of alphabetic + characters. Any part of the pattern may be quoted to force the + quoted portion to be matched as a string. Bracket expressions in + regular expressions must be treated carefully, since normal quoting + characters lose their meanings between brackets. If the pattern is + stored in a shell variable, quoting the variable expansion forces + the entire pattern to be matched as a string. Substrings matched + by parenthesized subexpressions within the regular expression are + saved in the array variable 'BASH_REMATCH'. The element of + 'BASH_REMATCH' with index 0 is the portion of the string matching + the entire regular expression. The element of 'BASH_REMATCH' with + index N is the portion of the string matching the Nth parenthesized + subexpression. For example, the following will match a line (stored in the shell variable LINE) if there is a sequence of characters in the value - consisting of any number, including zero, of space characters, - zero or one instances of `a', then a `b': + 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. + 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: + 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: + 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 ]] @@ -953,32 +938,32 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre [[ . =~ '\.' ]] The first two matches will succeed, but the second two will not, - because in the second two the backslash will be part of the - pattern to be matched. In the first two examples, the backslash - removes the special meaning from `.', so the literal `.' matches. - If the 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. + 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 )' + Returns the value of EXPRESSION. This may be used to override + the normal precedence of operators. - `! EXPRESSION' + '! EXPRESSION' True if EXPRESSION is false. - `EXPRESSION1 && EXPRESSION2' + 'EXPRESSION1 && EXPRESSION2' True if both EXPRESSION1 and EXPRESSION2 are true. - `EXPRESSION1 || EXPRESSION2' + 'EXPRESSION1 || EXPRESSION2' True if either EXPRESSION1 or EXPRESSION2 is true. - The `&&' and `||' operators do not evaluate EXPRESSION2 if the - value of EXPRESSION1 is sufficient to determine the return value - of the entire conditional expression. + 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: bashref.info, Node: Command Grouping, Prev: Conditional Constructs, Up: Compound Commands @@ -988,10 +973,10 @@ File: bashref.info, Node: Command Grouping, Prev: Conditional Constructs, Up: 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. +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 @@ -1000,7 +985,7 @@ the list may be redirected to a single stream. 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 @@ -1009,9 +994,9 @@ the list may be redirected to a single stream. In addition to the creation of a subshell, there is a subtle difference between these two constructs due to historical reasons. The -braces are `reserved words', so they must be separated from the LIST by -`blank's or other shell metacharacters. The parentheses are -`operators', and are recognized as separate tokens by the shell even if +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 @@ -1023,9 +1008,9 @@ File: bashref.info, Node: Coprocesses, Next: GNU Parallel, Prev: Compound Com 3.2.5 Coprocesses ----------------- -A `coprocess' is a shell command preceded by the `coproc' reserved word. +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 +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: @@ -1037,23 +1022,23 @@ simple command (*note 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 -(*note Arrays::) named `NAME' in the context of the executing shell. +(*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 +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 file descriptors are -not available in subshells. +assigned to 'NAME'[1]. This pipe is established before any redirections +specified by the command (*note Redirections::). The file descriptors +can be utilized as arguments to shell commands and redirections using +standard word expansions. The file descriptors are not available in +subshells. The process ID of the shell spawned to execute the coprocess is -available as the value of the variable `NAME'_PID. The `wait' builtin +available as the value of the variable 'NAME'_PID. The 'wait' builtin command may be used to wait for the coprocess to terminate. Since the coprocess is created as an asynchronous command, the -`coproc' command always returns success. The return status of a +'coproc' command always returns success. The return status of a coprocess is the exit status of COMMAND.  @@ -1071,24 +1056,24 @@ arguments, whether they are filenames, usernames, hostnames, or lines 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 +can replace 'xargs' or feed commands from its input sources to several different instances of Bash. For a complete description, refer to the GNU Parallel documentation. A few examples should provide a brief introduction to its use. - For example, it is easy to replace `xargs' to gzip all html files in + 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. +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: +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. While using `ls' will work in most instances, it is not +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 @@ -1096,8 +1081,8 @@ special characters in filenames, you can use 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' + 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 @@ -1111,13 +1096,12 @@ read from a file (in this case, filenames listed one per line): 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: + 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 +This will recompress all files in the current directory with names ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. -(We use `ls' for brevity here; using `find' as above is more robust in +(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 @@ -1126,18 +1110,17 @@ take arguments from the command line; the above can also be written as If a command generates output, you may want to preserve the input order in the output. For instance, the following command { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute - will display as output the traceroute invocation that finishes first. -Adding the `-k' option +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 +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, 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 @@ -1154,10 +1137,10 @@ 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. +executed. Shell functions are executed in the current shell context; no +new process is created to interpret them. - Functions are declared using this syntax: + Functions are declared using this syntax: NAME () COMPOUND-COMMAND [ REDIRECTIONS ] or @@ -1165,19 +1148,20 @@ no new process is created to interpret them. 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, +'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. When the shell is in POSIX mode -(*note Bash POSIX Mode::), NAME may not be the same as one of the -special builtins (*note Special Builtins::). Any redirections (*note -Redirections::) associated with the shell function are performed when -the function is executed. +usually a LIST enclosed between { and }, but may be any compound command +listed above, with one exception: If the 'function' reserved word is +used, but the parentheses are not supplied, the braces are required. +COMPOUND-COMMAND is executed whenever NAME is specified as the name of a +command. When the shell is in POSIX mode (*note Bash POSIX Mode::), +NAME may not be the same as one of the special builtins (*note Special +Builtins::). 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::). + 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. @@ -1185,64 +1169,64 @@ 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. +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 + 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' +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' +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. - The `FUNCNEST' variable, if set to a numeric value greater than 0, + 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 + 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'. +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' + 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 (*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' + Function names and definitions may be listed with the '-f' option to +the 'declare' ('typeset') builtin command (*note Bash Builtins::). The +'-F' option to 'declare' or 'typeset' will list the function names only +(and optionally the source file and line number, if the 'extdebug' shell +option is enabled). Functions may be exported so that subshells +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. The `FUNCNEST' variable may be used to + 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. +recursive calls.  File: bashref.info, Node: Shell Parameters, Next: Shell Expansions, Prev: Shell Functions, Up: Basic Shell Features @@ -1255,69 +1239,72 @@ File: bashref.info, Node: Shell Parameters, Next: Shell Expansions, Prev: She * Positional Parameters:: The shell's command-line arguments. * Special Parameters:: Parameters denoted by special characters. - A PARAMETER is an entity that stores values. It can be a `name', a +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::). +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. +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 +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 +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 +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 (*note Bash POSIX -Mode::), these builtins may appear in a command after one or more -instances of the `command' builtin and retain these assignment -statement properties. +arguments to the 'alias', 'declare', 'typeset', 'export', 'readonly', +and 'local' builtin commands (DECLARATION commands). When in POSIX mode +(*note Bash POSIX Mode::), these builtins may appear in a command after +one or more instances of the 'command' builtin and retain these +assignment statement properties. In the context where an assignment statement is assigning a value to -a shell variable or array index (*note Arrays::), the `+=' operator can -be used to append to or add to the variable's previous value. 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. +a shell variable or array index (*note Arrays::), the '+=' operator can +be used to append to or add to the variable's previous value. This +includes arguments to builtin commands such as 'declare' that accept +assignment statements (DECLARATION commands). When '+=' is applied to a +variable for which the INTEGER attribute has been set, VALUE is +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. - A variable can be assigned the NAMEREF attribute using the `-n' -option to the \fBdeclare\fP or \fBlocal\fP builtin commands (*note Bash + A variable can be assigned the NAMEREF attribute using the '-n' +option to the 'declare' or 'local' builtin commands (*note Bash Builtins::) to create a NAMEREF, or a reference to another variable. 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 +nameref variable is referenced, assigned to, unset, or has its +attributes modified (other than using or changing the nameref attribute +itself), the operation is actually performed on the variable specified +by the nameref variable's value. A nameref is commonly used within +shell functions to refer to a variable whose name is passed as an +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'. +inside the function creates a nameref variable REF whose value is the +variable name passed as the first argument. References and assignments +to REF, and changes to its attributes, are treated as references, +assignments, and attribute modifications to the variable whose name was +passed as '$1'. - If the control variable in a `for' loop has the nameref attribute, + 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. +executed. Array variables cannot be given the nameref attribute. However, nameref variables can reference array variables and subscripted -array variables. Namerefs can be unset using the `-n' option to the -`unset' builtin (*note Bourne Shell Builtins::). Otherwise, if `unset' +array variables. Namerefs can be unset using the '-n' option to the +'unset' builtin (*note 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. @@ -1328,17 +1315,17 @@ File: bashref.info, Node: Positional Parameters, Next: Special Parameters, Up --------------------------- A POSITIONAL PARAMETER is a parameter denoted by one or more digits, -other than the single digit `0'. Positional parameters are assigned +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. +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 +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. + When a positional parameter consisting of more than a single digit is +expanded, it must be enclosed in braces.  File: bashref.info, Node: Special Parameters, Prev: Positional Parameters, Up: Shell Parameters @@ -1349,70 +1336,69 @@ File: bashref.info, Node: Special Parameters, Prev: Positional Parameters, Up The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed. -`*' - ($*) Expands to the positional parameters, starting from one. - When the expansion is not within double quotes, each positional +'*' + ($*) Expands to the positional parameters, starting from one. When + the expansion is not within double quotes, each positional parameter expands to a separate word. In contexts where it is performed, those words are subject to further word splitting and pathname expansion. When the expansion occurs within double quotes, it expands to a single word with the value of each - parameter separated by the first character of the `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' + 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 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 +'?' + ($?) 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). + 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, +'$' + ($$) Expands to the process ID of the shell. In a '()' subshell, it expands to the process ID of the invoking shell, not the subshell. -`!' - ($!) Expands to the process ID of the job most recently placed - into the background, whether executed as an asynchronous command - or using the `bg' builtin (*note Job Control Builtins::). +'!' + ($!) Expands to the process ID of the job most recently placed + into the background, whether executed as an asynchronous command or + using the 'bg' builtin (*note Job Control Builtins::). -`0' - ($0) Expands to the name of the shell or shell script. This is - set at shell initialization. If Bash is invoked with a file of - commands (*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 +'0' + ($0) Expands to the name of the shell or shell script. This is set + at shell initialization. If Bash is invoked with a file of + commands (*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. + 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: bashref.info, Node: Shell Expansions, Next: Redirections, Prev: Shell Parameters, Up: Basic Shell Features @@ -1421,20 +1407,14 @@ File: bashref.info, Node: Shell Expansions, Next: Redirections, Prev: Shell P ==================== Expansion is performed on the command line after it has been split into -`token's. There are seven kinds of expansion performed: +'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: @@ -1462,13 +1442,17 @@ available: PROCESS SUBSTITUTION. This is performed at the same time as tilde, parameter, variable, and arithmetic expansion and command substitution. + After these expansions are performed, quote characters present in the +original word are removed unless they have been quoted themselves (QUOTE +REMOVAL). + 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[@]}"' +expansions of '"$@"' (*note Special Parameters::) and '"${NAME[@]}"' (*note Arrays::). - After all expansions, `quote removal' (*note Quote Removal::) is + After all expansions, 'quote removal' (*note Quote Removal::) is performed.  @@ -1492,16 +1476,16 @@ 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 + 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. +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. +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. @@ -1509,16 +1493,16 @@ each term. The default increment is 1 or -1 as appropriate. 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 +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 + 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 +parameter expansion, the string '${' is not considered eligible for brace expansion. This construct is typically used as shorthand when the common prefix @@ -1533,63 +1517,62 @@ File: bashref.info, Node: Tilde Expansion, Next: Shell Parameter Expansion, P 3.5.2 Tilde Expansion --------------------- -If a word begins with an unquoted tilde character (`~'), all of the +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 +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 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 +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 +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. +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 +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. +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' +'~' + The value of '$HOME' +'~/foo' + '$HOME/foo' -`~/foo' - `$HOME/foo' +'~fred/foo' + The subdirectory 'foo' of the home directory of the user 'fred' -`~fred/foo' - The subdirectory `foo' of the home directory of the user `fred' +'~+/foo' + '$PWD/foo' -`~+/foo' - `$PWD/foo' +'~-/foo' + '${OLDPWD-'~-'}/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' -`~+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: bashref.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions @@ -1597,13 +1580,13 @@ File: bashref.info, Node: Shell Parameter Expansion, Next: Command Substitutio 3.5.3 Shell Parameter Expansion ------------------------------- -The `$' character introduces parameter expansion, command substitution, +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 + 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. @@ -1615,52 +1598,54 @@ 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. + If the first character of PARAMETER is an exclamation point (!), and +PARAMETER is not a NAMEREF, it introduces a level of variable +indirection. Bash uses the value of the variable formed from the rest +of PARAMETER as the name of the variable; this variable is then expanded +and that value is used in the rest of the substitution, rather than the +value of PARAMETER itself. This is known as 'indirect expansion'. If +PARAMETER is a nameref, this expands to the name of the variable +referenced by PARAMETER instead of performing the complete indirect +expansion. The exceptions to this are the expansions of ${!PREFIX*} and +${!NAME[@]} described below. The exclamation point must immediately +follow the left brace in order to introduce indirection. In each of the cases below, WORD is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. When not performing substring expansion, using the form described -below (e.g., `:-'), Bash tests for a parameter that is unset or null. +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}' +'${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 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}' +'${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}' +'${PARAMETER:+WORD}' If PARAMETER is null or unset, nothing is substituted, otherwise the expansion of WORD is substituted. -`${PARAMETER:OFFSET}' -`${PARAMETER:OFFSET:LENGTH}' +'${PARAMETER:OFFSET}' +'${PARAMETER:OFFSET:LENGTH}' This is referred to as Substring Expansion. It expands to up to LENGTH characters of the value of PARAMETER starting at the - character specified by OFFSET. If PARAMETER is `@', an indexed - array subscripted by `@' or `*', or an associative array name, 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 @@ -1674,7 +1659,7 @@ omitted, the operator tests only for existence. 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. + avoid being confused with the ':-' expansion. Here are some examples illustrating substring expansion on parameters and subscripted arrays: @@ -1731,7 +1716,7 @@ omitted, the operator tests only for existence. $ echo ${array[0]: -7:-2} bcdef - If PARAMETER is `@', the result is LENGTH positional parameters + 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 @@ -1757,11 +1742,12 @@ omitted, the operator tests only for existence. ./bash 1 $ echo ${@: -7:0} - If PARAMETER is an indexed array name subscripted by `@' or `*', + + 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. + '${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: @@ -1781,107 +1767,142 @@ omitted, the operator tests only for existence. 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 + OFFSET is 0, and the positional parameters are used, '$@' is prefixed to the list. -`${!PREFIX*}' -`${!PREFIX@}' +'${!PREFIX*}' +'${!PREFIX@}' Expands to the names of variables whose names begin with PREFIX, - separated by the first character of the `IFS' special variable. - When `@' is used and the expansion appears within double quotes, + separated by the first character of the 'IFS' special variable. + When '@' is used and the expansion appears within double quotes, each variable name expands to a separate word. -`${!NAME[@]}' -`${!NAME[*]}' +'${!NAME[@]}' +'${!NAME[*]}' If NAME is an array variable, expands to the list of array indices (keys) assigned in NAME. If NAME is not an array, expands to 0 if - NAME is set and null otherwise. When `@' is used and the - expansion appears within double quotes, each key expands to a - separate word. + 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}' 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. + 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}' +'${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. + 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}' +'${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 + 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. + 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}' -`${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. + '/', all matches of PATTERN are replaced with STRING. Normally + only the first match is replaced. If PATTERN begins with '#', it + must match at the beginning of the expanded value of PARAMETER. If + PATTERN begins with '%', it must match at the end of the expanded + value of PARAMETER. If STRING is null, matches of PATTERN are + deleted and the '/' following PATTERN may be omitted. If the + 'nocasematch' shell option (see the description of 'shopt' in *note + The Shopt Builtin::) is enabled, the match is performed without + regard to the case of alphabetic characters. If PARAMETER is '@' + or '*', the substitution operation is applied to each positional + parameter in turn, and the expansion is the resultant list. If + PARAMETER is an array variable subscripted with '@' or '*', the + substitution operation is applied to each member of the array in + turn, and the expansion is the resultant list. -`${PARAMETER^PATTERN}' -`${PARAMETER^^PATTERN}' -`${PARAMETER,PATTERN}' -`${PARAMETER,,PATTERN}' +'${PARAMETER^PATTERN}' +'${PARAMETER^^PATTERN}' +'${PARAMETER,PATTERN}' +'${PARAMETER,,PATTERN}' This expansion modifies the case of alphabetic characters in PARAMETER. The PATTERN is expanded to produce a pattern just as in filename expansion. Each character in the expanded value of PARAMETER is tested against PATTERN, and, if it matches the pattern, its case is converted. The pattern should not attempt to - match more than one character. The `^' operator converts - lowercase letters matching PATTERN 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 + 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 + 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 + list. If PARAMETER is an array variable subscripted with '@' or + '*', the case modification operation is applied to each member of the array in turn, and the expansion is the resultant list. +'${PARAMETER@OPERATOR}' + The expansion is either a transformation of the value of PARAMETER + or information about PARAMETER itself, depending on the value of + OPERATOR. Each OPERATOR is a single letter: + + 'Q' + The expansion is a string that is the value of PARAMETER + quoted in a format that can be reused as input. + 'E' + The expansion is a string that is the value of PARAMETER with + backslash escape sequences expanded as with the '$'...'' + quoting mechansim. + 'P' + The expansion is a string that is the result of expanding the + value of PARAMETER as if it were a prompt string (*note + Controlling the Prompt::). + 'A' + The expansion is a string in the form of an assignment + statement or 'declare' command that, if evaluated, will + recreate PARAMETER with its attributes and value. + 'a' + The expansion is a string consisting of flag values + representing PARAMETER's attributes. + + If PARAMETER is '@' or '*', the 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 operation is applied to each member of the array in turn, + and the expansion is the resultant list. + + The result of the expansion is subject to word splitting and + pathname expansion as described below. +  File: bashref.info, Node: Command Substitution, Next: Arithmetic Expansion, Prev: Shell Parameter Expansion, Up: Shell Expansions @@ -1892,19 +1913,20 @@ 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 +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)'. +Bash performs the expansion by executing COMMAND in a subshell +environment 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 `\'. +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 +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 @@ -1920,8 +1942,8 @@ File: bashref.info, Node: Arithmetic Expansion, Next: Process Substitution, P -------------------------- Arithmetic expansion allows the evaluation of an arithmetic expression -and the substitution of the result. The format for arithmetic -expansion is: +and the substitution of the result. The format for arithmetic expansion +is: $(( EXPRESSION )) @@ -1933,8 +1955,8 @@ arithmetic expression to be evaluated. Arithmetic expansions may be nested. The evaluation is performed according to the rules listed below -(*note Shell Arithmetic::). If the expression is invalid, Bash prints -a message indicating failure to the standard error and no substitution +(*note Shell Arithmetic::). If the expression is invalid, Bash prints a +message indicating failure to the standard error and no substitution occurs.  @@ -1943,20 +1965,21 @@ File: bashref.info, Node: Process Substitution, Next: Word Splitting, Prev: A 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 +Process substitution allows a process's input or output to be referred +to using a filename. It takes the form of <(LIST) - or +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. +The process LIST is run asynchronously, and its input or output appears +as a filename. This filename 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. Process substitution is supported on systems that +support named pipes (FIFOs) or the '/dev/fd' method of naming open +files. When available, process substitution is performed simultaneously with parameter and variable expansion, command substitution, and arithmetic @@ -1972,26 +1995,30 @@ 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 using these characters -as field terminators. 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 + The shell treats each character of '$IFS' as a delimiter, and splits +the results of the other expansions into words using these characters as +field terminators. 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 +characters 'space', 'tab', and 'newline' 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. + Explicit null arguments ('""' or '''') are retained and passed to +commands as empty strings. Unquoted implicit null arguments, resulting +from the expansion of parameters that have no values, are removed. If a +parameter with no value is expanded within double quotes, a null +argument results and is retained and passed to a command as an empty +string. When a quoted null argument appears as part of a word whose +expansion is non-null, the null argument is removed. That is, the word +'-d''' becomes '-d' after word splitting and null argument removal. Note that if no expansion occurs, no splitting is performed. @@ -2005,39 +2032,40 @@ File: bashref.info, Node: Filename Expansion, Next: Quote Removal, Prev: Word * 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 filenames +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 filenames matching the pattern (*note 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. +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. + 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 *note The Shopt Builtin::, for a -description of the `nocaseglob', `nullglob', `failglob', and `dotglob' + 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. + 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. If the 'nocaseglob' option is set, +the matching against the patterns in 'GLOBIGNORE' is performed without +regard to case. The filenames '.' and '..' are always ignored when +'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: bashref.info, Node: Pattern Matching, Up: Filename Expansion @@ -2052,75 +2080,73 @@ 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 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 + 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' + 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 + 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. + 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 + 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 `_'. + The 'word' character class matches letters, digits, and the + character '_'. - Within `[' and `]', an EQUIVALENCE CLASS can be specified using - the syntax `[='C`=]', which matches all characters with the same + Within '[' and ']', an EQUIVALENCE CLASS can be specified using the + syntax '[='C'=]', which matches all characters with the same collation weight (as defined by the current locale) as the character C. - Within `[' and `]', the syntax `[.'SYMBOL`.]' matches the - collating symbol SYMBOL. + Within '[' and ']', the syntax '[.'SYMBOL'.]' matches the collating + symbol SYMBOL. - If the `extglob' shell option is enabled using the `shopt' builtin, + 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 +separated by a '|'. Composite patterns may be formed using one or more of the following sub-patterns: -`?(PATTERN-LIST)' +'?(PATTERN-LIST)' Matches zero or one occurrence of the given patterns. -`*(PATTERN-LIST)' +'*(PATTERN-LIST)' Matches zero or more occurrences of the given patterns. -`+(PATTERN-LIST)' +'+(PATTERN-LIST)' Matches one or more occurrences of the given patterns. -`@(PATTERN-LIST)' +'@(PATTERN-LIST)' Matches one of the given patterns. -`!(PATTERN-LIST)' +'!(PATTERN-LIST)' Matches anything except one of the given patterns.  @@ -2130,7 +2156,7 @@ File: bashref.info, Node: Quote Removal, Prev: Filename Expansion, Up: Shell ------------------- After the preceding expansions, all unquoted occurrences of the -characters `\', `'', and `"' that did not result from one of the above +characters '\', ''', and '"' that did not result from one of the above expansions are removed.  @@ -2149,56 +2175,59 @@ 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. + 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 +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. +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 + 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 +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. +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: +redirections, as described in the following table. If the operating +system on which Bash is running provides these special files, bash will +use them; otherwise it will emulate them internally with the behavior +described below. -`/dev/fd/FD' +'/dev/fd/FD' If FD is a valid integer, file descriptor FD is duplicated. -`/dev/stdin' +'/dev/stdin' File descriptor 0 is duplicated. -`/dev/stdout' +'/dev/stdout' File descriptor 1 is duplicated. -`/dev/stderr' +'/dev/stderr' File descriptor 2 is duplicated. -`/dev/tcp/HOST/PORT' +'/dev/tcp/HOST/PORT' If HOST is a valid hostname or Internet address, and PORT is an integer port number or service name, Bash attempts to open the corresponding TCP socket. -`/dev/udp/HOST/PORT' +'/dev/udp/HOST/PORT' If HOST is a valid hostname or Internet address, and PORT is an integer port number or service name, Bash attempts to open the corresponding UDP socket. @@ -2213,8 +2242,8 @@ internally. ----------------------- 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. +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. + 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. +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 @@ -2259,12 +2288,12 @@ file whose name is the expansion of WORD. There are two formats for redirecting standard output and standard error: &>WORD - and +and >&WORD - Of the two forms, the first is preferred. This is semantically +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 `-'. + 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. @@ -2272,12 +2301,12 @@ Descriptors below) for compatibility reasons. -------------------------------------------------- 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 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 +This is semantically equivalent to >>WORD 2>&1 (see Duplicating File Descriptors below). @@ -2287,81 +2316,83 @@ file whose name is the expansion of WORD. 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. +as the standard input (or file descriptor N if N is specified) for a +command. The format of here-documents is: - <<[-]WORD + [N]<<[-]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 ``'. + No parameter and variable expansion, command substitution, arithmetic +expansion, or filename expansion is performed on WORD. If any part of +WORD is 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. + 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 + [N]<<< WORD The WORD undergoes brace expansion, tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. -The result is supplied as a single string to the command on its -standard input. +The result is supplied as a single string, with a newline appended, to +the command on its standard input (or file descriptor N if N is +specified). 3.6.8 Duplicating File Descriptors ---------------------------------- 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 +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, +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 +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. +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. 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. +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. +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 +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. @@ -2406,7 +2437,7 @@ expansions, assignments, and redirections, from left to right. 3. Redirections are performed as described above (*note Redirections::). - 4. The text after the `=' in each variable assignment undergoes tilde + 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. @@ -2442,30 +2473,30 @@ taken. 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. + 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. + 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. + 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 @@ -2475,7 +2506,6 @@ taken. 6. If the command was not begun asynchronously, the shell waits for the command to complete and collects its exit status. -  File: bashref.info, Node: Command Execution Environment, Next: Environment, Prev: Command Search and Execution, Up: Executing Commands @@ -2485,35 +2515,34 @@ File: bashref.info, Node: Command Execution Environment, Next: Environment, P 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 + redirections supplied to the 'exec' builtin - * the current working directory as set by `cd', `pushd', or `popd', + * 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 + * the file creation mode mask as set by 'umask' or inherited from the + shell's parent - * current traps set by `trap' + * current traps set by 'trap' - * shell parameters that are set by variable assignment or with `set' + * 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' + command-line arguments) or by 'set' - * options enabled by `shopt' (*note The Shopt Builtin::) + * options enabled by 'shopt' (*note The Shopt Builtin::) - * shell aliases defined with `alias' (*note Aliases::) + * 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' + 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 + 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. @@ -2531,7 +2560,6 @@ inherited from the shell. * 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. @@ -2544,11 +2572,11 @@ 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. +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'. + 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. @@ -2560,31 +2588,31 @@ File: bashref.info, Node: Environment, Next: Exit Status, Prev: Command Execu When a program is invoked it is given an array of strings called the ENVIRONMENT. This is a list of name-value pairs, of the form -`name=value'. +'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 +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. +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 + 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 + 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. @@ -2605,8 +2633,8 @@ will use special values to indicate specific failure modes. 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. +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, @@ -2622,7 +2650,8 @@ 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. +2 to indicate incorrect usage, generally invalid options or missing +arguments.  File: bashref.info, Node: Signals, Prev: Exit Status, Up: Executing Commands @@ -2631,39 +2660,38 @@ File: bashref.info, Node: Signals, Prev: Exit Status, Up: Executing Commands ------------- 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'. +'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 +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'. +'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 + 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'. +'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 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. +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: bashref.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic Shell Features @@ -2673,36 +2701,36 @@ File: bashref.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic 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::), +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. +'$PATH' if not found there. - When Bash runs a shell script, it sets the special parameter `0' to + 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 + 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 +is equivalent to executing bash filename ARGUMENTS -if `filename' is an executable shell script. This subshell +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 +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, +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. @@ -2713,8 +2741,8 @@ 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 + 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.  @@ -2733,18 +2761,18 @@ File: bashref.info, Node: Shell Builtin Commands, Next: Shell Variables, Prev * 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 +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. +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 + 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::), @@ -2754,14 +2782,14 @@ 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. +options preceded by '-' accepts '--' to signify the end of the options. +The ':', 'true', 'false', and 'test' builtins do not accept options and +do not treat '--' specially. The 'exit', 'logout', 'return', 'break', +'continue', 'let', and 'shift' builtins accept and process arguments +beginning with '-' without requiring '--'. Other builtins that accept +arguments but are not specified as accepting options interpret arguments +beginning with '-' as invalid options and require '--' to prevent this +interpretation.  File: bashref.info, Node: Bourne Shell Builtins, Next: Bash Builtins, Up: Shell Builtin Commands @@ -2773,68 +2801,73 @@ The following shell builtin commands are inherited from the Bourne Shell. These commands are implemented as specified by the POSIX standard. -`: (a colon)' +': (a colon)' : [ARGUMENTS] Do nothing beyond expanding ARGUMENTS and performing redirections. The return status is zero. -`. (a period)' +'. (a period)' . FILENAME [ARGUMENTS] - Read and execute commands from the FILENAME argument in the - current shell context. If FILENAME does not contain a slash, the - `PATH' variable is used to find FILENAME. When Bash is not in - POSIX mode, the current directory is searched 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'. + Read and execute commands from the FILENAME argument in the current + shell context. If FILENAME does not contain a slash, the 'PATH' + variable is used to find FILENAME. When Bash is not in POSIX mode, + the current directory is searched if FILENAME is not found in + '$PATH'. If any ARGUMENTS are supplied, they become the positional + parameters when FILENAME is executed. Otherwise the positional + parameters are unchanged. If the '-T' option is enabled, 'source' + inherits any trap on 'DEBUG'; if it is not, any 'DEBUG' trap string + is saved and restored around the call to 'source', and 'source' + unsets the 'DEBUG' trap while it executes. If '-T' is not set, and + the sourced file changes the 'DEBUG' trap, the new value is + retained when 'source' completes. The return status is the exit + status of the last command executed, or zero if no commands are + executed. If FILENAME is not found, or cannot be read, the return + status is non-zero. This builtin is equivalent to 'source'. -`break' +'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. + 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' 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. + 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. + 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 + 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 + 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 + 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. + directory change, 'cd' will return an unsuccessful status. - On systems that support it, the `-@' option presents the extended + On systems that support it, the '-@' option presents the extended attributes associated with a file as a directory. - If DIRECTORY is `-', it is converted to `$OLDPWD' before the + 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 + 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. @@ -2842,347 +2875,351 @@ standard. The return status is zero if the directory is successfully changed, non-zero otherwise. -`continue' +'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 + 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' 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. + the exit status of 'eval'. If there are no arguments or only empty + arguments, the return status is zero. -`exec' +'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 + 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 + 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 + 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. + environment. If there are no redirection errors, the return status + is zero; otherwise the return status is non-zero. -`exit' +'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. + Any trap on 'EXIT' is executed before the shell terminates. -`export' +'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. + 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 + 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' getopts OPTSTRING NAME [ARGS] - `getopts' is used by shell scripts to parse positional parameters. + '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 + 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. + 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 `?'. + 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' 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 + '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' + 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. + 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 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 + 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' hash [-r] [-p FILENAME] [-dt] [NAME] - Each time `hash' is invoked, it remembers the full pathnames of the + 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 + 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, + 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 + 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. + 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' 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 + 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' 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 + 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' 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'. + status of the last command executed in the function. If 'return' + is executed by a trap handler, the last command used to determine + the status is the last command executed before the trap handler. + if 'return' is executed during a 'DEBUG' trap, the last command + used to determine the status is the last command executed by the + trap handler before 'return' was invoked. 'return' may also be + used to terminate execution of a script being executed with the '.' + ('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' 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 + 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, + status is zero unless N is greater than '$#' or less than zero, non-zero otherwise. -`test' -`[' +'test' +'[' test EXPR - Evaluate a conditional express ion EXPR and return a status of 0 + Evaluate a conditional expression 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 *note Bash Conditional Expressions::. `test' does not + 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. + '--' as signifying the end of options. - When the `[' form is used, the last argument to the command must - be a `]'. + 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' + '! EXPR' True if EXPR is false. - `( EXPR )' + '( EXPR )' Returns the value of EXPR. This may be used to override the normal precedence of operators. - `EXPR1 -a EXPR2' + 'EXPR1 -a EXPR2' True if both EXPR1 and EXPR2 are true. - `EXPR1 -o EXPR2' + 'EXPR1 -o EXPR2' True if either EXPR1 or EXPR2 is true. - The `test' and `[' builtins evaluate conditional expressions using + The 'test' and '[' builtins evaluate conditional expressions using a set of rules based on the number of arguments. - 0 arguments + 0 arguments The expression is false. - 1 argument + 1 argument The expression is true if and only if the argument is not null. - 2 arguments - 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. + 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 + 3 arguments The following conditions are applied in the order listed. 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. + 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 + 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 + 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 + When used with 'test' or '[', the '<' and '>' operators sort lexicographically using ASCII ordering. -`times' +'times' times Print out the user and system times used by the shell and its children. The return status is zero. -`trap' +'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 + 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 + 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 + 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 + 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. + 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 '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 - 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 + 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. + 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. + The return status is zero unless a SIGSPEC does not specify a valid + signal. -`umask' +'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. + 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'. + number of the umask is subtracted from '7'. Thus, a umask of '022' + results in permissions of '755'. -`unset' +'unset' unset [-fnv] [NAME] - Remove each variable or function NAME. If the `-v' option is + 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' + removed. If the '-f' option is given, the NAMEs refer to shell + functions, and the function definition is removed. If the '-n' option is supplied, and NAME is a variable with the NAMEREF 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. + 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.  File: bashref.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands @@ -3190,433 +3227,418 @@ File: bashref.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev 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. +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' alias [-p] [NAME[=VALUE] ...] - Without arguments or with the `-p' option, `alias' prints the list + 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' 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 + bind [-m KEYMAP] KEYSEQ: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'. + 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' + '-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'. + 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' ('vi-move' is also a synonym); 'emacs' is + equivalent to 'emacs-standard'. - `-l' + '-l' List the names of all Readline functions. - `-p' + '-p' Display Readline function names and bindings in such a way - that they can be used as input or in a Readline - initialization file. + that they can be used as input or in a Readline initialization + file. - `-P' + '-P' List current Readline function names and bindings. - `-v' + '-v' Display Readline variable names and values in such a way that they can be used as input or in a Readline initialization file. - `-V' + '-V' List current Readline variable names and values. - `-s' - 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 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. + '-S' + Display Readline key sequences bound to macros and the strings + they output. - `-f FILENAME' + '-f FILENAME' Read key bindings from FILENAME. - `-q FUNCTION' + '-q FUNCTION' Query about which keys invoke the named FUNCTION. - `-u FUNCTION' + '-u FUNCTION' Unbind all keys bound to the named FUNCTION. - `-r KEYSEQ' + '-r KEYSEQ' Remove any current binding for KEYSEQ. - `-x KEYSEQ:SHELL-COMMAND' + '-x KEYSEQ:SHELL-COMMAND' Cause SHELL-COMMAND to be executed whenever KEYSEQ is entered. When SHELL-COMMAND is executed, the shell sets the - `READLINE_LINE' variable to the contents of the Readline line - buffer and the `READLINE_POINT' variable to the current + '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', + changes the value of 'READLINE_LINE' or 'READLINE_POINT', those new values will be reflected in the editing state. - `-X' + '-X' List all key sequences bound to shell commands and the associated commands in a format that can be reused as input. The return status is zero unless an invalid option is supplied or an error occurs. -`builtin' +'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. + 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' caller [EXPR] - Returns the context of any active subroutine call (a shell - function or a script executed with the `.' or `source' builtins). + 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. + 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' 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. + 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 + 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 + 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' declare [-aAfFgilnrtux] [-p] [NAME[=VALUE] ...] - Declare variables and give them attributes. If no NAMEs are - given, then display the values of variables instead. + 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, - other than `-f' and `-F', are ignored. + The '-p' option will display the attributes and values of each + NAME. When '-p' is used with NAME arguments, additional options, + other than '-f' and '-F', are ignored. - When `-p' is supplied without NAME arguments, `declare' will + 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. + 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 '-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 each NAME 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. + 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' + '-a' Each NAME is an indexed array variable (*note Arrays::). - `-A' + '-A' Each NAME is an associative array variable (*note Arrays::). - `-f' + '-f' Use function names only. - `-i' + '-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' + '-l' When the variable is assigned a value, all upper-case characters are converted to lower-case. The upper-case attribute is disabled. - `-n' + '-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. + reference to another variable. That other variable is defined + by the value of NAME. All references, assignments, and + attribute modifications to NAME, except for those using or + changing the '-n' attribute itself, are performed on the + variable referenced by NAME's value. The nameref attribute + cannot be applied to array variables. - `-r' + '-r' Make NAMEs readonly. These names cannot then be assigned values by subsequent assignment statements or unset. - `-t' - Give each NAME the `trace' attribute. Traced functions - inherit the `DEBUG' and `RETURN' traps from the calling shell. + '-t' + Give each NAME the 'trace' attribute. Traced functions + inherit the 'DEBUG' and 'RETURN' traps from the calling shell. The trace attribute has no special meaning for variables. - `-u' + '-u' When the variable is assigned a value, all lower-case characters are converted to upper-case. The lower-case attribute is disabled. - `-x' + '-x' Mark each NAME for export to subsequent commands via the environment. - 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 + 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. - When using `-a' or `-A' and the compound assignment syntax to + When using '-a' or '-A' and the compound assignment syntax to create array variables, additional attributes do not take effect until subsequent assignments. The return status is zero unless an invalid option is encountered, - an attempt is made to define a function using `-f foo=bar', an + 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'. + is made to display a non-existent function with '-f'. -`echo' +'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 + 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. + 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' + 'echo' interprets the following escape sequences: + '\a' alert (bell) - - `\b' + '\b' backspace - - `\c' + '\c' suppress further output - - `\e' - `\E' + '\e' + '\E' escape - - `\f' + '\f' form feed - - `\n' + '\n' new line - - `\r' + '\r' carriage return - - `\t' + '\t' horizontal tab - - `\v' + '\v' vertical tab - - `\\' + '\\' backslash - - `\0NNN' + '\0NNN' the eight-bit character whose value is the octal value NNN (zero to three octal digits) - - `\xHH' + '\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) - - `\uHHHH' + '\uHHHH' the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits) - - `\UHHHHHHHH' + '\UHHHHHHHH' the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits) -`enable' +'enable' enable [-a] [-dnps] [-f FILENAME] [NAME ...] 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'. + 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. + 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 + 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'. + 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 + 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' help [-dms] [PATTERN] Display helpful information about builtin commands. If PATTERN is - specified, `help' gives detailed help on all commands matching + 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' + '-d' Display a short description of each PATTERN - - `-m' + '-m' Display the description of each PATTERN in a manpage-like format - - `-s' + '-s' Display only a short usage synopsis for each PATTERN The return status is zero unless no command matches PATTERN. -`let' +'let' let EXPRESSION [EXPRESSION ...] - The `let' builtin allows arithmetic to be performed on shell + 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. + evaluates to 0, 'let' returns 1; otherwise 0 is returned. -`local' +'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 + '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. + and its children. If NAME is '-', the set of shell options is made + local to the function in which 'local' is invoked: shell options + changed using the 'set' builtin inside the function are restored to + their original values when the function returns. 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' 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] +'mapfile' + mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] Read lines from the standard input into the indexed array variable - ARRAY, or from file descriptor FD if the `-u' option is supplied. - The variable `MAPFILE' is the default ARRAY. Options, if - supplied, have the following meanings: + 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' + '-d' + The first character of DELIM is used to terminate each input + line, rather than newline. + '-n' Copy at most COUNT lines. If COUNT is 0, all lines are copied. - - `-O' + '-O' Begin assigning to ARRAY at index ORIGIN. The default index is 0. - - `-s' + '-s' Discard the first COUNT lines read. - - `-t' - Remove a trailing newline from each line read. - - `-u' + '-t' + Remove a trailing DELIM (default 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' + '-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 + 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 + 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. + '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' 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 + 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. @@ -3625,34 +3647,30 @@ POSIX 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: + 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 + '%b' + Causes 'printf' to expand backslash escape sequences in the + corresponding ARGUMENT in the same way as 'echo -e' (*note + Bash Builtins::). + '%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 + '%(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, + 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. + 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. + 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 @@ -3660,240 +3678,253 @@ POSIX standard. appropriate, had been supplied. The return value is zero on success, non-zero on failure. -`read' +'read' read [-ers] [-a ANAME] [-d DELIM] [-i TEXT] [-n NCHARS] [-N NCHARS] [-p PROMPT] [-t TIMEOUT] [-u FD] [NAME ...] One line is read from the standard input, or from the file - descriptor FD supplied as an argument to the `-u' option, and the + descriptor FD supplied as an argument to the '-u' option, split + into words as described above in *note Word Splitting::, 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 using the same - rules the shell uses for expansion (described above in *note Word - Splitting::). 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'. + second NAME, and so on. If there are more words than names, the + remaining words and their intervening delimiters are 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 using the same rules the shell uses for expansion + (described above in *note Word Splitting::). 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 + exit status is zero, unless end-of-file is encountered, 'read' + times out (in which case the status 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' + '-a ANAME' The words are assigned to sequential indices of the array variable ANAME, starting at 0. All elements are removed from ANAME before the assignment. Other NAME arguments are ignored. - `-d DELIM' + '-d DELIM' The first character of DELIM is used to terminate the input line, rather than newline. - `-e' + '-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' + '-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 + '-n NCHARS' + 'read' returns after reading NCHARS characters rather than + waiting for a complete line of input, but honors a delimiter if fewer than NCHARS characters are read before the delimiter. - `-N NCHARS' - `read' returns after reading exactly NCHARS characters rather + '-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 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. + cause 'read' to return until NCHARS characters are read. The + result is not split on the characters in 'IFS'; the intent is + that the variable is assigned exactly the characters read + (with the exception of backslash; see the '-r' option below). - `-p PROMPT' + '-p PROMPT' Display PROMPT, without a trailing newline, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. - `-r' + '-r' If this option is given, backslash does not act as an escape character. The backslash is considered to be part of the - line. In particular, a backslash-newline pair may not be - used as a line continuation. + line. In particular, a backslash-newline pair may not be used + as a line continuation. - `-s' + '-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 + '-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' + '-u FD' Read input from file descriptor FD. -`readarray' - readarray [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] +'readarray' + readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] Read lines from the standard input into the indexed array variable - ARRAY, or from file descriptor FD if the `-u' option is supplied. + ARRAY, or from file descriptor FD if the '-u' option is supplied. - A synonym for `mapfile'. + A synonym for 'mapfile'. -`source' +'source' source FILENAME - A synonym for `.' (*note Bourne Shell Builtins::). + A synonym for '.' (*note Bourne Shell Builtins::). -`type' +'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 '-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'. + 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'. + 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 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 + 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. + 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. + 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' 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. + 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' + ulimit [-HSabcdefiklmnpqrstuvxPT] [LIMIT] - `ulimit' provides control over the resources available to processes + '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' + '-S' Change and report the soft limit associated with a resource. - `-H' + '-H' Change and report the hard limit associated with a resource. - `-a' + '-a' All current limits are reported. - `-b' + '-b' The maximum socket buffer size. - `-c' + '-c' The maximum size of core files created. - `-d' + '-d' The maximum size of a process's data segment. - `-e' + '-e' The maximum scheduling priority ("nice"). - `-f' + '-f' The maximum size of files written by the shell and its children. - `-i' + '-i' The maximum number of pending signals. - `-l' + '-k' + The maximum number of kqueues that may be allocated. + + '-l' The maximum size that may be locked into memory. - `-m' + '-m' The maximum resident set size (many systems do not honor this limit). - `-n' + '-n' The maximum number of open file descriptors (most systems do not allow this value to be set). - `-p' + '-p' The pipe buffer size. - `-q' + '-q' The maximum number of bytes in POSIX message queues. - `-r' + '-r' The maximum real-time scheduling priority. - `-s' + '-s' The maximum stack size. - `-t' + '-t' The maximum amount of cpu time in seconds. - `-u' + '-u' The maximum number of processes available to a single user. - `-v' + '-v' The maximum amount of virtual memory available to the shell, and, on some systems, to its children. - `-x' + '-x' The maximum number of file locks. - `-T' + '-P' + The maximum number of pseudoterminals. + + '-T' The maximum number of threads. - If LIMIT is given, and the `-a' option is not used, LIMIT is the + 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, + '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. + 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; '-P', '-T', + '-b', '-k', '-n' and '-u', which are unscaled values; and, when in + POSIX Mode (*note Bash POSIX Mode::), '-c' and '-f', which are in + 512-byte increments. The return status is zero unless an invalid option or argument is supplied, or an error occurs while setting a new limit. -`unalias' +'unalias' unalias [-a] [NAME ... ] - Remove each NAME from the list of aliases. If `-a' is supplied, + Remove each NAME from the list of aliases. If '-a' is supplied, all aliases are removed. Aliases are described in *note Aliases::.  @@ -3914,276 +3945,277 @@ File: bashref.info, Node: The Set Builtin, Next: The Shopt Builtin, Up: Modif 4.3.1 The Set Builtin --------------------- -This builtin is so complicated that it deserves its own section. `set' +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' set [--abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [ARGUMENT ...] set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [ARGUMENT ...] - If no options or arguments are supplied, `set' displays the names + 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. + 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. + '-a' + Each variable or function that is created or modified is given + the export attribute and marked for export to the environment + of subsequent commands. - `-b' + '-b' Cause the status of terminated background jobs to be reported immediately, rather than before printing the next primary prompt. - `-e' + '-e' Exit immediately if a pipeline (*note Pipelines::), which may consist of a single simple command (*note Simple Commands::), a list (*note Lists::), or a compound command (*note 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 + 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. + 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 (*note Command Execution + 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. If a compound command or shell function executes in a context - where `-e' is being ignored, none of the commands executed + 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. + 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' + '-f' Disable filename expansion (globbing). - `-h' + '-h' Locate and remember (hash) commands as they are looked up for execution. This option is enabled by default. - `-k' + '-k' All arguments in the form of assignment statements are placed in the environment for a command, not just those that precede the command name. - `-m' + '-m' Job control is enabled (*note 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 + '-n' + Read commands but do not execute them. This may be used to check a script for syntax errors. This option is ignored by interactive shells. - `-o OPTION-NAME' + '-o OPTION-NAME' + Set the option corresponding to OPTION-NAME: - `allexport' - Same as `-a'. + 'allexport' + Same as '-a'. - `braceexpand' - Same as `-B'. + 'braceexpand' + Same as '-B'. - `emacs' - Use an `emacs'-style line editing interface (*note + 'emacs' + Use an 'emacs'-style line editing interface (*note Command Line Editing::). This also affects the editing - interface used for `read -e'. + interface used for 'read -e'. - `errexit' - Same as `-e'. + 'errexit' + Same as '-e'. - `errtrace' - Same as `-E'. + 'errtrace' + Same as '-E'. - `functrace' - Same as `-T'. + 'functrace' + Same as '-T'. - `hashall' - Same as `-h'. + 'hashall' + Same as '-h'. - `histexpand' - Same as `-H'. + 'histexpand' + Same as '-H'. - `history' + 'history' Enable command history, as described in *note Bash History Facilities::. This option is on by default in interactive shells. - `ignoreeof' + 'ignoreeof' An interactive shell will not exit upon reading EOF. - `keyword' - Same as `-k'. + 'keyword' + Same as '-k'. - `monitor' - Same as `-m'. + 'monitor' + Same as '-m'. - `noclobber' - Same as `-C'. + 'noclobber' + Same as '-C'. - `noexec' - Same as `-n'. + 'noexec' + Same as '-n'. - `noglob' - Same as `-f'. + 'noglob' + Same as '-f'. - `nolog' + 'nolog' Currently ignored. - `notify' - Same as `-b'. + 'notify' + Same as '-b'. - `nounset' - Same as `-u'. + 'nounset' + Same as '-u'. - `onecmd' - Same as `-t'. + 'onecmd' + Same as '-t'. - `physical' - Same as `-P'. + 'physical' + Same as '-P'. - `pipefail' + 'pipefail' If set, the return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status, or zero if all commands in the pipeline exit successfully. This option is disabled by default. - `posix' + 'posix' Change the behavior of Bash where the default operation differs from the POSIX standard to match the standard - (*note Bash POSIX Mode::). This is intended to make - Bash behave as a strict superset of that standard. + (*note Bash POSIX Mode::). This is intended to make Bash + behave as a strict superset of that standard. - `privileged' - Same as `-p'. + 'privileged' + Same as '-p'. - `verbose' - Same as `-v'. + 'verbose' + Same as '-v'. - `vi' - Use a `vi'-style line editing interface. This also - affects the editing interface used for `read -e'. + 'vi' + Use a 'vi'-style line editing interface. This also + affects the editing interface used for 'read -e'. - `xtrace' - Same as `-x'. + '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 + '-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, + 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 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' + '-t' Exit after reading and executing one command. - `-u' + '-u' Treat unset variables and parameters other than the special - parameters `@' or `*' as an error when performing parameter + 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' + '-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' + '-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' + '-B' The shell will perform brace expansion (*note Brace Expansion::). This option is on by default. - `-C' - Prevent output redirection using `>', `>&', and `<>' from + '-C' + Prevent output redirection using '>', '>&', and '<>' from overwriting existing files. - `-E' - If set, any trap on `ERR' is inherited by shell functions, + '-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. + environment. The 'ERR' trap is normally not inherited in such + cases. - `-H' - Enable `!' style history substitution (*note History + '-H' + Enable '!' style history substitution (*note History Interaction::). 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. + '-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: + 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: + 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 + '-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. + 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' + '-' + 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. + 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 `$-'. + 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. + 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. @@ -4196,38 +4228,38 @@ File: bashref.info, Node: The Shopt Builtin, Prev: The Set Builtin, Up: Modif This builtin allows you to change additional shell optional behavior. -`shopt' +'shopt' shopt [-pqsu] [-o] [OPTNAME ...] Toggle the values of settings controlling optional shell behavior. - The settings can be either those listed below, or, if the `-o' - option is used, those available with the `-o' option to the `set' + The settings can be either those listed below, or, if the '-o' + option is used, those available with the '-o' option to the 'set' builtin command (*note The Set Builtin::). With no options, or - with the `-p' option, a list of all settable options is displayed, - with an indication of whether or not each is set. The `-p' option + 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' + '-s' Enable (set) each OPTNAME. - `-u' + '-u' Disable (unset) each OPTNAME. - `-q' + '-q' Suppresses normal output; the return status indicates whether the OPTNAME is set or unset. If multiple OPTNAME arguments - are given with `-q', the return status is zero if all - OPTNAMES are enabled; non-zero otherwise. + are given with '-q', the return status is zero if all OPTNAMES + are enabled; non-zero otherwise. - `-o' + '-o' Restricts the values of OPTNAME to be those defined for the - `-o' option to the `set' builtin (*note The Set Builtin::). + '-o' option to the 'set' builtin (*note The Set Builtin::). - If either `-s' or `-u' is used with no OPTNAME arguments, `shopt' + 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 + Unless otherwise noted, the 'shopt' options are disabled (off) by default. The return status when listing options is zero if all OPTNAMES are @@ -4235,84 +4267,97 @@ This builtin allows you to change additional shell optional behavior. 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. + The list of 'shopt' options is: - `cdable_vars' - If this is set, an argument to the `cd' builtin command that + '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' + 'cdspell' If set, minor errors in the spelling of a directory component - in a `cd' command will be corrected. The errors checked for + 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' + '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. + table exists before trying to execute it. If a hashed command + no longer exists, a normal path search is performed. - `checkjobs' + 'checkjobs' If set, Bash lists the status of any stopped and running jobs - before exiting an interactive shell. If any jobs are - running, this causes the exit to be deferred until a second - exit is attempted without an intervening command (*note Job + 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'. + 'checkwinsize' + If set, Bash checks the window size after each command and, if + necessary, updates the values of 'LINES' and 'COLUMNS'. - `cmdhist' + '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' + '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 + 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' + '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). + '[[' conditional command's '<' and '>' operators (see previous + item) and the effect of interrupting a command list. Bash + versions 3.2 and earlier continue with the next command in the + list after one terminates due to an interrupt. - `compat40' + '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 + '[[' 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' + '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. + 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' + 'compat42' If set, Bash does not process the replacement string in the pattern substitution word expansion using quote removal. - `complete_fullquote' + 'compat43' + If set, Bash does not print a warning message if an attempt is + made to use a quoted compound array assignment as an argument + to 'declare', makes word expansion errors non-fatal errors + that cause the current command to fail (the default behavior + is to make them fatal errors that cause the shell to exit), + and does not reset the loop state when a shell function is + executed (this allows 'break' or 'continue' in a shell + function to affect loops in the caller's context). + + '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 @@ -4323,202 +4368,212 @@ This builtin allows you to change additional shell optional behavior. 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. + 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. + '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' + '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 + 'dotglob' + If set, Bash includes filenames beginning with a '.' in the results of filename expansion. - `execfail' + 'execfail' If this is set, a non-interactive shell will not exit if it - cannot execute the file specified as an argument to the `exec' - builtin command. An interactive shell does not exit if `exec' + cannot execute the file specified as an argument to the 'exec' + builtin command. An interactive shell does not exit if 'exec' fails. - `expand_aliases' + 'expand_aliases' If set, aliases are expanded as described below under Aliases, *note Aliases::. This option is enabled by default for interactive shells. - `extdebug' - If set, behavior intended for use by debuggers is enabled: + 'extdebug' + If set at shell invocation, arrange to execute the debugger + profile before the shell starts, identical to the '--debugger' + option. If set after invocation, behavior intended for use by + debuggers is enabled: - 1. The `-F' option to the `declare' builtin (*note Bash - Builtins::) displays the source file name and line - number corresponding to each function name supplied as - an argument. + 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. + 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. + 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), the shell simulates a call to + 'return'. - 4. `BASH_ARGC' and `BASH_ARGV' are updated as described in + 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. + 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. + 6. Error tracing is enabled: command substitution, shell + functions, and subshells invoked with '( COMMAND )' + inherit the 'ERR' trap. - `extglob' + '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. + '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. + '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. + '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. - `globasciiranges' + 'globasciiranges' If set, range expressions used in pattern matching bracket expressions (*note 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 + 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 + '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 + subdirectories. If the pattern is followed by a '/', only directories and subdirectories match. - `gnu_errfmt' + 'gnu_errfmt' If set, shell error messages are written in the standard GNU error message format. - `histappend' + 'histappend' If set, the history list is appended to the file named by the - value of the `HISTFILE' variable when the shell exits, rather + value of the 'HISTFILE' variable when the shell exits, rather than overwriting the file. - `histreedit' + 'histreedit' If set, and Readline is being used, a user is given the opportunity to re-edit a failed history substitution. - `histverify' + 'histverify' If set, and Readline is being used, the results of history substitution are not immediately passed to the shell parser. Instead, the resulting line is loaded into the Readline editing buffer, allowing further modification. - `hostcomplete' + 'hostcomplete' If set, and Readline is being used, Bash will attempt to - perform hostname completion when a word containing a `@' is + 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 + '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 + 'inherit_errexit' + If set, command substitution inherits the value of the + 'errexit' option, instead of unsetting it in the subshell + environment. This option is enabled when POSIX mode is + enabled. + + 'interactive_comments' + 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. + '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 + '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' + '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' + '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. + accessed since the last time it was checked, the message '"The + mail in MAILFILE has been read"' is displayed. - `no_empty_cmd_completion' + 'no_empty_cmd_completion' If set, and Readline is being used, Bash will not attempt to - search the `PATH' for possible completions when completion is + search the 'PATH' for possible completions when completion is attempted on an empty line. - `nocaseglob' + 'nocaseglob' If set, Bash matches filenames in a case-insensitive fashion when performing filename expansion. - `nocasematch' + 'nocasematch' If set, Bash matches patterns in a case-insensitive fashion - when performing matching while executing `case' or `[[' - conditional commands. + when performing matching while executing 'case' or '[[' + conditional commands, when performing pattern substitution + word expansions, or when filtering possible completions as + part of programmable completion. - `nullglob' + 'nullglob' If set, Bash allows filename patterns which match no files to expand to a null string, rather than themselves. - `progcomp' + 'progcomp' If set, the programmable completion facilities (*note Programmable Completion::) are enabled. This option is enabled by default. - `promptvars' + 'promptvars' If set, prompt strings undergo parameter expansion, command substitution, arithmetic expansion, and quote removal after being expanded as described below (*note Controlling the Prompt::). This option is enabled by default. - `restricted_shell' + 'restricted_shell' The shell sets this option if it is started in restricted mode (*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 + '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 + '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 + '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 @@ -4564,7 +4619,7 @@ File: bashref.info, Node: Shell Variables, Next: Bash Features, Prev: Shell B as the Bourne Shell. * Bash Variables:: List of variables that exist in Bash. - This chapter describes the shell variables that Bash uses. Bash +This chapter describes the shell variables that Bash uses. Bash automatically assigns default values to a number of variables.  @@ -4576,53 +4631,52 @@ File: bashref.info, Node: Bourne Shell Variables, Next: Bash Variables, Up: S 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. +'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 +'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' +'IFS' A list of characters that separate fields; used when the shell splits words as part of expansion. -`MAIL' +'MAIL' If this parameter is set to a filename or directory name and the - `MAILPATH' variable is not set, Bash informs the user of the + 'MAILPATH' variable is not set, Bash informs the user of the arrival of mail in the specified file or Maildir-format directory. -`MAILPATH' +'MAILPATH' A colon-separated list of filenames which the shell periodically checks for new mail. Each list entry can specify the message that - is printed when new mail 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. + 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' +'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' +'OPTIND' + The index of the last option argument processed by the 'getopts' builtin. -`PATH' +'PATH' A colon-separated list of directories in which the shell looks for commands. A zero-length (null) directory name in the value of - `PATH' indicates the current directory. A null directory name may + '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 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 `> '. +'PS1' + The primary prompt string. The default value is '\s-\v\$ '. *Note + 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 '> '.  File: bashref.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables @@ -4637,596 +4691,625 @@ normally treat them specially. variables for controlling the job control facilities (*note Job Control Variables::). -`BASH' +'BASH' The full pathname used to execute the current instance of Bash. -`BASHOPTS' +'BASHOPTS' A colon-separated list of enabled shell options. Each word in the - list is a valid argument for the `-s' option to the `shopt' - builtin command (*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. + 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' +'BASHPID' Expands to the process ID of the current Bash process. This - differs from `$$' under certain circumstances, such as subshells + differs from '$$' under certain circumstances, such as subshells that do not require Bash to be re-initialized. -`BASH_ALIASES' +'BASH_ALIASES' An associative array variable whose members correspond to the - internal list of aliases as maintained by the `alias' builtin. + internal list of aliases as maintained by the 'alias' builtin. (*note Bourne Shell Builtins::). Elements added to this array - appear in the alias list; unsetting array elements cause aliases - to be removed from the alias list. + appear in the alias list; however, unsetting array elements + currently does not cause aliases to be removed from the alias list. + If 'BASH_ALIASES' is unset, it loses its special properties, even + if it is subsequently reset. -`BASH_ARGC' +'BASH_ARGC' An array variable whose values are the number of parameters in each frame of the current bash execution call stack. The number of parameters to the current subroutine (shell function or script - executed with `.' or `source') is at the top of the stack. When a + 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). + 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' +'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). + 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' +'BASH_CMDS' An associative array variable whose members correspond to the - internal hash table of commands as maintained by the `hash' builtin + 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. + appear in the hash table; however, unsetting array elements + currently does not cause command names to be removed from the hash + table. If 'BASH_CMDS' is unset, it loses its special properties, + even if it is subsequently reset. -`BASH_COMMAND' +'BASH_COMMAND' The command currently being executed or about to be executed, - unless the shell is executing a command as the result of a trap, - in which case it is the command executing at the time of the trap. + 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' +'BASH_COMPAT' The value is used to set the shell's compatibility level. *Note 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. + 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' +'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_EXECUTION_STRING' + The command argument to the '-c' invocation option. -`BASH_LINENO' +'BASH_LINENO' An array variable whose members are the line numbers in source files where each corresponding member of FUNCNAME was invoked. - `${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_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 (*note Conditional +'BASH_LOADABLES_PATH' + A colon-separated list of directories in which the shell looks for + dynamically loadable builtins specified by the 'enable' command. + +'BASH_REMATCH' + 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. + index N is the portion of the string matching the Nth parenthesized + subexpression. This variable is read-only. -`BASH_SOURCE' +'BASH_SOURCE' An array variable whose members are the source filenames where the - corresponding shell function names in the `FUNCNAME' array - variable are defined. The shell function `${FUNCNAME[$i]}' is - defined in the file `${BASH_SOURCE[$i]}' and called from - `${BASH_SOURCE[$i+1]}' + 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' +'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' +'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: + version information for this instance of Bash. The values assigned + to the array members are as follows: - `BASH_VERSINFO[0]' + 'BASH_VERSINFO[0]' The major version number (the RELEASE). - `BASH_VERSINFO[1]' + 'BASH_VERSINFO[1]' The minor version number (the VERSION). - `BASH_VERSINFO[2]' + 'BASH_VERSINFO[2]' The patch level. - `BASH_VERSINFO[3]' + 'BASH_VERSINFO[3]' The build version. - `BASH_VERSINFO[4]' + 'BASH_VERSINFO[4]' The release status (e.g., BETA1). - `BASH_VERSINFO[5]' - The value of `MACHTYPE'. + 'BASH_VERSINFO[5]' + The value of 'MACHTYPE'. -`BASH_VERSION' +'BASH_VERSION' The version number of the current instance of Bash. -`BASH_XTRACEFD' +'BASH_XTRACEFD' If set to an integer corresponding to a valid file descriptor, Bash - will write the trace output generated when `set -x' is enabled to + 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 + 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 + 'BASH_XTRACEFD' to 2 (the standard error file descriptor) and then unsetting it will result in the standard error being closed. -`CHILD_MAX' +'CHILD_MAX' Set the number of exited child status values for the shell to remember. Bash will not allow this value to be decreased below a POSIX-mandated minimum, and there is a maximum value (currently 8192) that this may 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 (*note The Shopt Builtin::), or in an - interactive shell upon receipt of a `SIGWINCH'. +'COLUMNS' + Used by the 'select' command to determine the terminal width when + printing selection lists. Automatically set if the 'checkwinsize' + option is enabled (*note 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 +'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 +'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' +'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 + '${#COMP_LINE}'. This variable is available only in shell functions and external commands invoked by the programmable completion facilities (*note Programmable Completion::). -`COMP_TYPE' +'COMP_TYPE' Set to an integer value corresponding to the type of completion attempted that caused a completion function to be called: TAB, for - normal completion, `?', 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 + 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' +'COMP_KEY' The key (or final key of a key sequence) used to invoke the current completion function. -`COMP_WORDBREAKS' +'COMP_WORDBREAKS' The set of characters that the Readline library treats as word - separators when performing word completion. If `COMP_WORDBREAKS' + 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::). +'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' +'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::). Each array element contains one possible completion. -`COPROC' +'COPROC' An array variable created to hold the file descriptors for output from and input to an unnamed coprocess (*note Coprocesses::). -`DIRSTACK' +'DIRSTACK' An array variable containing the current contents of the directory stack. Directories appear in the stack in the order they are - displayed by the `dirs' builtin. Assigning to members of this + 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 + 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 + the current directory. If 'DIRSTACK' is unset, it loses its special properties, even if it is subsequently reset. -`EMACS' +'EMACS' If Bash finds this variable in the environment when the shell - starts with value `t', it assumes that the shell is running in an + 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 (*note Bash POSIX Mode::). +'ENV' + Similar to 'BASH_ENV'; used when the shell is invoked in POSIX Mode + (*note Bash POSIX Mode::). -`EUID' +'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. +'EXECIGNORE' + A colon-separated list of shell patterns (*note Pattern Matching::) + defining the list of filenames to be ignored by command search + using 'PATH'. Files whose full pathnames match one of these + patterns are not considered executable files for the purposes of + completion and command execution via 'PATH' lookup. This does not + affect the behavior of the '[', 'test', and '[[' commands. Full + pathnames in the command hash table are not subject to + 'EXECIGNORE'. Use this variable to ignore shared library files + that have the executable bit set, but are not executable files. + The pattern matching honors the setting of the 'extglob' shell + option. -`FIGNORE' +'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:~' + entries in 'FIGNORE' is excluded from the list of matched + filenames. A sample value is '.o:~' -`FUNCNAME' +'FUNCNAME' An array variable containing the names of all shell functions - currently in the execution call stack. The element with index 0 - is the name of any currently-executing shell function. The - bottom-most element (the one with the highest index) is `"main"'. + 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. + Assignments to 'FUNCNAME' have no effect. 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 + 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' +'FUNCNEST' If set to a numeric value greater than 0, defines a maximum function nesting level. Function invocations that exceed this nesting level will cause the current command to abort. -`GLOBIGNORE' +'GLOBIGNORE' A colon-separated list of patterns defining the set of 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. + 'GLOBIGNORE', it is removed from the list of matches. The pattern + matching honors the setting of the 'extglob' shell option. -`GROUPS' +'GROUPS' An array variable containing the list of groups of which the - current user is a member. Assignments to `GROUPS' have no effect - and return an error status. If `GROUPS' is unset, it loses its - special properties, even if it is subsequently reset. + current user is a member. Assignments to 'GROUPS' have no effect. + If 'GROUPS' is unset, it loses its special properties, even if it + is subsequently reset. -`histchars' +'histchars' Up to three characters which control history expansion, quick substitution, and tokenization (*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 + 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 `#'. + 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. + necessarily cause the shell parser to treat the rest of the line as + a comment. -`HISTCMD' +'HISTCMD' The history number, or index in the history list, of the current - command. If `HISTCMD' is unset, it loses its special properties, + 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'. +'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' +'HISTFILE' The name of the file to which the command history is saved. The - default value is `~/.bash_history'. + default value is '~/.bash_history'. -`HISTFILESIZE' +'HISTFILESIZE' The maximum number of lines contained in the history file. When this variable is assigned a value, the history file is truncated, if necessary, to contain no more than that number of lines 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. + 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' +'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'. + 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'. The pattern matching honors the setting of the + 'extglob' shell option. - `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, + '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'. + '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. +'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. +'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 +'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 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. + 'HOSTFILE' is unset, the hostname list is cleared. -`HOSTNAME' +'HOSTNAME' The name of the current host. -`HOSTTYPE' +'HOSTTYPE' A string describing the machine Bash is running on. -`IGNOREEOF' - Controls the action of the shell on receipt of an `EOF' character +'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 + 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. + 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' +'INPUTRC' The name of the Readline initialization file, overriding the - default of `~/.inputrc'. + default of '~/.inputrc'. -`LANG' +'LANG' Used to determine the locale category for any category not - specifically selected with a variable starting with `LC_'. + specifically selected with a variable starting with 'LC_'. -`LC_ALL' - This variable overrides the value of `LANG' and any other `LC_' +'LC_ALL' + This variable overrides the value of 'LANG' and any other 'LC_' variable specifying a locale category. -`LC_COLLATE' +'LC_COLLATE' This variable determines the collation order used when sorting the - results of filename expansion, and determines the behavior of - range expressions, equivalence classes, and collating sequences - within filename expansion and pattern matching (*note Filename + 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' +'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' +'LC_MESSAGES' This variable determines the locale used to translate double-quoted - strings preceded by a `$' (*note Locale Translation::). + strings preceded by a '$' (*note Locale Translation::). -`LC_NUMERIC' +'LC_NUMERIC' This variable determines the locale category used for number formatting. -`LINENO' +'LC_TIME' + This variable determines the locale category used for data and time + 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 (*note The Shopt Builtin::), or in an - interactive shell upon receipt of a `SIGWINCH'. +'LINES' + Used by the 'select' command to determine the column length for + printing selection lists. Automatically set if the 'checkwinsize' + option is enabled (*note The Shopt Builtin::), or in an interactive + shell upon receipt of a 'SIGWINCH'. -`MACHTYPE' +'MACHTYPE' A string that fully describes the system type on which Bash is executing, in the standard GNU CPU-COMPANY-SYSTEM format. -`MAILCHECK' +'MAILCHECK' How often (in seconds) that the shell should check for mail in the - files specified in the `MAILPATH' or `MAIL' variables. The - default is 60 seconds. When it is time to check 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. + 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' +'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. +'OLDPWD' + The previous working directory as set by the 'cd' builtin. -`OPTERR' +'OPTERR' If set to the value 1, Bash displays error messages generated by - the `getopts' builtin command. + the 'getopts' builtin command. -`OSTYPE' +'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). +'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' +'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 + 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' + set -o posix had been executed. -`PPID' +'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_COMMAND' + If set, the value is interpreted as a command to execute before the + printing of each primary prompt ('$PS1'). -`PROMPT_DIRTRIM' +'PROMPT_DIRTRIM' If set to a number greater than zero, the value is used as the number of trailing directory components to retain when expanding - the `\w' and `\W' prompt string escapes (*note Controlling the + the '\w' and '\W' prompt string escapes (*note 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 `#? ' +'PS0' + The value of this parameter is expanded like PS1 and displayed by + interactive shells after reading a command and before the command + is executed. -`PS4' +'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 `+ '. + 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. +'PWD' + The current working directory as set by the 'cd' builtin. -`RANDOM' +'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' +'READLINE_LINE' + The contents of the Readline line buffer, for use with 'bind -x' (*note Bash Builtins::). -`READLINE_POINT' +'READLINE_POINT' The position of the insertion point in the Readline line buffer, - for use with `bind -x' (*note Bash Builtins::). + for use with 'bind -x' (*note Bash Builtins::). -`REPLY' - The default variable for the `read' builtin. +'REPLY' + The default variable for the 'read' builtin. -`SECONDS' +'SECONDS' This variable expands to the number of seconds since the shell was - started. Assignment to this variable resets the count to the - value assigned, and the expanded value becomes the value assigned - plus the number of seconds since the assignment. + 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' +'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' +'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 + 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 + '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' +'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' +'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 + 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 `%'. + '%%' + A literal '%'. - `%[P][l]R' + '%[P][l]R' The elapsed time in seconds. - `%[P][l]U' + '%[P][l]U' The number of CPU seconds spent in user mode. - `%[P][l]S' + '%[P][l]S' The number of CPU seconds spent in system mode. - `%P' + '%P' The CPU percentage, computed as (%U + %S) / %R. 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. + 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 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'' + $'\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 +'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 @@ -5234,15 +5317,14 @@ Variables::). prompt. Bash terminates after waiting for that number of seconds if a complete line of input does not arrive. -`TMPDIR' +'TMPDIR' If set, Bash uses its value as the name of a directory in which Bash creates temporary files for the shell's use. -`UID' +'UID' The numeric real user id of the current user. This variable is readonly. -  File: bashref.info, Node: Bash Features, Next: Job Control, Prev: Shell Variables, Up: Top @@ -5258,7 +5340,7 @@ This chapter describes features unique 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. + the 'test' builtin. * Shell Arithmetic:: Arithmetic on shell variables. * Aliases:: Substituting one command for another. * Arrays:: Array Variables. @@ -5278,131 +5360,134 @@ File: bashref.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash F 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 + All of the single-character options used with the 'set' builtin (*note 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' +'--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:: 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-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'. +'--dump-strings' + Equivalent to '-D'. -`--help' +'--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 +'--init-file FILENAME' +'--rcfile FILENAME' + Execute commands from FILENAME (instead of '~/.bashrc') in an interactive shell. -`--login' - Equivalent to `-l'. +'--login' + Equivalent to '-l'. -`--noediting' +'--noediting' Do not use the GNU Readline library (*note Command Line Editing::) - to read command lines when the shell is interactive. + 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 +'--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'. +'--norc' + Don't read the '~/.bashrc' initialization file in an interactive + shell. This is on by default if the shell is invoked as 'sh'. -`--posix' +'--posix' Change the behavior of Bash where the default operation differs - from the POSIX standard to match the standard. This is intended - to make Bash behave as a strict superset of that standard. *Note - Bash POSIX Mode::, for a description of the Bash POSIX mode. + 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' +'--restricted' Make the shell a restricted shell (*note The Restricted Shell::). -`--verbose' - Equivalent to `-v'. Print shell input lines as they're read. +'--verbose' + Equivalent to '-v'. Print shell input lines as they're read. -`--version' +'--version' Show version information for this instance of Bash on the standard output and exit successfully. There are several single-character options that may be supplied at -invocation which are not available with the `set' builtin. +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'. +'-c' + Read and execute commands from the first non-option argument + COMMAND_STRING, then exit. If there are arguments after the + COMMAND_STRING, the first argument is assigned to '$0' and any + remaining arguments are assigned to the positional parameters. The + assignment to '$0' sets the name of the shell, which is used in + warning and error messages. -`-i' +'-i' Force the shell to run interactively. Interactive shells are described in *note Interactive Shells::. -`-l' +'-l' Make this shell act as if it had been directly invoked by login. When the shell is interactive, this is equivalent to starting a - login shell with `exec -l bash'. 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. + 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' +'-r' Make the shell a restricted shell (*note The Restricted Shell::). -`-s' +'-s' If this option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an interactive shell. -`-D' - A list of all double-quoted strings preceded by `$' is printed on +'-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 + 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' +'[-+]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 + '-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. + 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 +'--' + 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. + 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 +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 +'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 + 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 @@ -5421,78 +5506,79 @@ Tilde Expansion::). Interactive shells are described in *note Interactive Shells::. -Invoked as an interactive login shell, or with `--login' +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 +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 login shell exits, or a non-interactive login +shell executes the 'exit' builtin command, 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'. +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. + 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, +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 + 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' option, Bash attempts to read and execute commands from the login shell startup files. -Invoked with name `sh' +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 +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. +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 + 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 +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 +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. @@ -5501,23 +5587,23 @@ 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 +daemon, usually 'rshd', or the secure shell daemon 'sshd'. If Bash determines it is being run in this fashion, it reads and executes -commands from `~/.bashrc', if that file exists and is readable. It -will not do this if invoked as `sh'. The `--norc' option may be used -to inhibit this behavior, and the `--rcfile' option may be used to -force another file to be read, but neither `rshd' nor `sshd' generally -invoke the shell with those options or allow them to be specified. +commands from '~/.bashrc', if that file exists and is readable. It will +not do this if invoked as 'sh'. The '--norc' option may be used to +inhibit this behavior, and the '--rcfile' option may be used to force +another file to be read, but neither 'rshd' nor 'sshd' generally invoke +the shell with those options or allow them to be specified. Invoked with unequal effective and real UID/GIDs ................................................ 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 +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 +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 +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. @@ -5539,15 +5625,15 @@ File: bashref.info, Node: What is an Interactive Shell?, Next: Is this Shell I 6.3.1 What is an Interactive Shell? ----------------------------------- -An interactive shell is one started without non-option arguments, -unless `-s' is specified, without specifying the `-c' option, and whose -input and error output are both connected to terminals (as determined -by `isatty(3)'), or one started with the `-i' option. +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 + The '-s' invocation option may be used to set the positional parameters when an interactive shell is started.  @@ -5557,15 +5643,15 @@ File: bashref.info, Node: Is this Shell Interactive?, Next: Interactive Shell -------------------------------- 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: +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 + 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 @@ -5588,73 +5674,73 @@ several ways. 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'. + 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. + 3. Bash expands and displays 'PS1' before reading the first line of a + command, and expands and displays 'PS2' before reading the second + and subsequent lines of a multi-line command. Bash displays 'PS0' + after it reads a command but before executing it. - 4. Bash executes the value of the `PROMPT_COMMAND' variable as a - command before printing the primary prompt, `$PS1' (*note Bash + 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 + 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' + Bash will save the command history to the file named by '$HISTFILE' when a shell with history enabled exits. 8. Alias expansion (*note Aliases::) is performed by default. - 9. In the absence of any traps, Bash ignores `SIGTERM' (*note + 9. In the absence of any traps, Bash ignores 'SIGTERM' (*note Signals::). - 10. In the absence of any traps, `SIGINT' is caught and handled - ((*note Signals::). `SIGINT' will interrupt some shell builtins. + 10. In the absence of any traps, 'SIGINT' is caught and handled + ((*note Signals::). 'SIGINT' will interrupt some shell builtins. - 11. An interactive login shell sends a `SIGHUP' to all jobs on exit if - the `huponexit' shell option has been enabled (*note Signals::). + 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 + 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::). + 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::). + 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 + 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. + 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 + 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 + 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. + 19. Parser syntax errors will not cause the shell to exit. - 20. Simple spelling correction for directory arguments to the `cd' - builtin is enabled by default (see the description of the `cdspell' - option to the `shopt' builtin in *note The Shopt Builtin::). + 20. 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 + 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::). - + printing '$PS1' (*note Bash Variables::).  File: bashref.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic, Prev: Interactive Shells, Up: Bash Features @@ -5662,137 +5748,139 @@ File: bashref.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic 6.4 Bash Conditional Expressions ================================ -Conditional expressions are used by the `[[' compound command and the -`test' and `[' builtin commands. +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. + 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. Bash handles several filenames specially +when they are used in expressions. If the operating system on which +Bash is running provides these special files, Bash will use them; +otherwise it will emulate them internally with this behavior: 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. + 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' +'-a FILE' True if FILE exists. -`-b FILE' +'-b FILE' True if FILE exists and is a block special file. -`-c FILE' +'-c FILE' True if FILE exists and is a character special file. -`-d FILE' +'-d FILE' True if FILE exists and is a directory. -`-e FILE' +'-e FILE' True if FILE exists. -`-f FILE' +'-f FILE' True if FILE exists and is a regular file. -`-g FILE' +'-g FILE' True if FILE exists and its set-group-id bit is set. -`-h FILE' +'-h FILE' True if FILE exists and is a symbolic link. -`-k FILE' +'-k FILE' True if FILE exists and its "sticky" bit is set. -`-p FILE' +'-p FILE' True if FILE exists and is a named pipe (FIFO). -`-r FILE' +'-r FILE' True if FILE exists and is readable. -`-s FILE' +'-s FILE' True if FILE exists and has a size greater than zero. -`-t FD' +'-t FD' True if file descriptor FD is open and refers to a terminal. -`-u FILE' +'-u FILE' True if FILE exists and its set-user-id bit is set. -`-w FILE' +'-w FILE' True if FILE exists and is writable. -`-x FILE' +'-x FILE' True if FILE exists and is executable. -`-G FILE' +'-G FILE' True if FILE exists and is owned by the effective group id. -`-L FILE' +'-L FILE' True if FILE exists and is a symbolic link. -`-N FILE' +'-N FILE' True if FILE exists and has been modified since it was last read. -`-O FILE' +'-O FILE' True if FILE exists and is owned by the effective user id. -`-S FILE' +'-S FILE' True if FILE exists and is a socket. -`FILE1 -ef FILE2' +'FILE1 -ef FILE2' True if FILE1 and FILE2 refer to the same device and inode numbers. -`FILE1 -nt FILE2' - True if FILE1 is newer (according to modification date) than - FILE2, or if FILE1 exists and FILE2 does not. +'FILE1 -nt FILE2' + True if FILE1 is newer (according to modification date) than FILE2, + or if FILE1 exists and FILE2 does not. -`FILE1 -ot FILE2' +'FILE1 -ot FILE2' True if FILE1 is older than FILE2, or if FILE2 exists and FILE1 does not. -`-o OPTNAME' +'-o OPTNAME' True if the shell option OPTNAME is enabled. The list of options - appears in the description of the `-o' option to the `set' builtin + appears in the description of the '-o' option to the 'set' builtin (*note The Set Builtin::). -`-v VARNAME' +'-v VARNAME' True if the shell variable VARNAME is set (has been assigned a value). -`-R VARNAME' +'-R VARNAME' True if the shell variable VARNAME is set and is a name reference. -`-z STRING' +'-z STRING' True if the length of STRING is zero. -`-n STRING' -`STRING' +'-n STRING' +'STRING' True if the length of STRING is non-zero. -`STRING1 == STRING2' -`STRING1 = STRING2' - True if the strings are equal. When used with the `[[' command, +'STRING1 == STRING2' +'STRING1 = STRING2' + True if the strings are equal. When used with the '[[' command, this performs pattern matching as described above (*note Conditional Constructs::). - `=' should be used with the `test' command for POSIX conformance. + '=' should be used with the 'test' command for POSIX conformance. -`STRING1 != STRING2' +'STRING1 != STRING2' True if the strings are not equal. -`STRING1 < STRING2' +'STRING1 < STRING2' True if STRING1 sorts before STRING2 lexicographically. -`STRING1 > STRING2' +'STRING1 > STRING2' True if STRING1 sorts after STRING2 lexicographically. -`ARG1 OP ARG2' - `OP' is one of `-eq', `-ne', `-lt', `-le', `-gt', or `-ge'. These +'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 @@ -5805,68 +5893,68 @@ File: bashref.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditi ==================== 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. +shell expansions or by using the '((' compound command, the 'let' +builtin, or the '-i' option to the 'declare' builtin. 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. +levels of equal-precedence operators. The levels are listed in order of +decreasing precedence. -`ID++ ID--' +'ID++ ID--' variable post-increment and post-decrement -`++ID --ID' +'++ID --ID' variable pre-increment and pre-decrement -`- +' +'- +' unary minus and plus -`! ~' +'! ~' logical and bitwise negation -`**' +'**' exponentiation -`* / %' +'* / %' multiplication, division, remainder -`+ -' +'+ -' addition, subtraction -`<< >>' +'<< >>' left and right bitwise shifts -`<= >= < >' +'<= >= < >' comparison -`== !=' +'== !=' equality and inequality -`&' +'&' bitwise AND -`^' +'^' bitwise exclusive OR -`|' +'|' bitwise OR -`&&' +'&&' logical AND -`||' +'||' logical OR -`expr ? expr : expr' +'expr ? expr : expr' conditional operator -`= *= /= %= += -= <<= >>= &= ^= |=' +'= *= /= %= += -= <<= >>= &= ^= |=' assignment -`expr1 , expr2' +'expr1 , expr2' comma Shell variables are allowed as operands; parameter expansion is @@ -5874,21 +5962,21 @@ 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. +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 +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 +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. +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 @@ -5902,47 +5990,46 @@ File: bashref.info, Node: Aliases, Next: Arrays, Prev: Shell Arithmetic, Up: 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. +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 +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 +'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. + 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 + 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 +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. +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 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. @@ -5953,35 +6040,35 @@ File: bashref.info, Node: Arrays, Next: The Directory Stack, Prev: Aliases, ========== 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. Unless otherwise -noted, indexed array indices must be non-negative integers. +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. 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 + 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 +The syntax declare -a NAME[SUBSCRIPT] - is also accepted; the SUBSCRIPT is ignored. +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. + 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 +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 @@ -5989,8 +6076,8 @@ 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' + 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 @@ -5998,28 +6085,30 @@ 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]}'. + 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. +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. 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. + + Referencing an array variable without a subscript is equivalent to +referencing with a subscript of 0. Any reference to a variable using a +valid subscript is legal, and 'bash' will create an array if necessary. An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. @@ -6027,22 +6116,22 @@ a value. The null string is a valid value. It is possible to obtain the keys (indices) of an array as well as the values. ${!NAME[@]} and ${!NAME[*]} expand to the indices assigned in array variable NAME. The treatment when in double quotes is similar -to the expansion of the special parameters `@' and `*' within double +to the expansion of the special parameters '@' and '*' within double quotes. - The `unset' builtin is used to destroy arrays. `unset + 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. +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 + 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' +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. @@ -6057,14 +6146,15 @@ File: bashref.info, Node: The Directory Stack, Next: Controlling the Prompt, * 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 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 +current directory is always the "top" of the directory stack. The contents of the directory stack are also visible as the value of -the `DIRSTACK' shell variable. +the 'DIRSTACK' shell variable.  File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack @@ -6072,87 +6162,76 @@ File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack 6.8.1 Directory Stack Builtins ------------------------------ -`dirs' +'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. + are added to the list with the 'pushd' command; the 'popd' command + removes directories from the list. The current directory is always + the first directory in the stack. - `-c' + '-c' Clears the directory stack by deleting all of the elements. - - `-l' + '-l' Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory. - - `-p' - Causes `dirs' to print the directory stack with one entry per + '-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 + '-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' + '+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 + list printed by 'dirs' when invoked without options), starting with zero. -`popd' +'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'. + 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' + '-n' Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. - - `+N' + '+N' Removes the Nth directory (counting from the left of the list - printed by `dirs'), starting with zero. + 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' - Removes the Nth directory (counting from the right of the - list printed by `dirs'), starting with zero. - -`pushd' +'pushd' pushd [-n] [+N | -N | DIR] Save the current directory on the top of the directory stack and - then `cd' to DIR. With no arguments, `pushd' exchanges the top - two directories. + then 'cd' to DIR. With no arguments, 'pushd' exchanges the top two + directories and makes the new top the current directory. - `-n' - Suppresses the normal change of directory when adding - directories to the stack, so that only the stack is + '-n' + Suppresses the normal change of directory when rotating or + adding directories to the stack, so that only the stack is manipulated. - - `+N' + '+N' Brings the Nth directory (counting from the left of the list - printed by `dirs', starting with zero) to the top of the list + printed by 'dirs', starting with zero) to the top of the list by rotating the stack. - - `-N' + '-N' Brings the Nth directory (counting from the right of the list - printed by `dirs', starting with zero) to the top of the list + 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. + 'DIR' + Makes DIR be the top of the stack, making it the new current + directory as if it had been supplied as an argument to the + 'cd' builtin.  File: bashref.info, Node: Controlling the Prompt, Next: The Restricted Shell, Prev: The Directory Stack, Up: Bash Features @@ -6160,98 +6239,72 @@ File: bashref.info, Node: Controlling the Prompt, Next: The Restricted Shell, 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 +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': +which can appear in the prompt variables 'PS1' to 'PS4': -`\a' +'\a' A bell character. - -`\d' +'\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 +'\D{FORMAT}' + The FORMAT is passed to 'strftime'(3) and the result is inserted into the prompt string; an empty FORMAT results in a locale-specific time representation. The braces are required. - -`\e' +'\e' An escape character. - -`\h' - The hostname, up to the first `.'. - -`\H' +'\h' + The hostname, up to the first '.'. +'\H' The hostname. - -`\j' +'\j' The number of jobs currently managed by the shell. - -`\l' +'\l' The basename of the shell's terminal device name. - -`\n' +'\n' A newline. - -`\r' +'\r' A carriage return. - -`\s' - The name of the shell, the basename of `$0' (the portion following +'\s' + The name of the shell, the basename of '$0' (the portion following the final slash). - -`\t' +'\t' The time, in 24-hour HH:MM:SS format. - -`\T' +'\T' The time, in 12-hour HH:MM:SS format. - -`\@' +'\@' The time, in 12-hour am/pm format. - -`\A' +'\A' The time, in 24-hour HH:MM format. - -`\u' +'\u' The username of the current user. - -`\v' +'\v' The version of Bash (e.g., 2.00) - -`\V' +'\V' The release of Bash, version + patchlevel (e.g., 2.00.0) - -`\w' - The current working directory, with `$HOME' abbreviated with a - tilde (uses the `$PROMPT_DIRTRIM' variable). - -`\W' - The basename of `$PWD', with `$HOME' abbreviated with a tilde. - -`\!' +'\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' +'\$' + 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 @@ -6262,7 +6315,7 @@ of commands executed during the current shell session. After the string is decoded, it is expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject -to the value of the `promptvars' shell option (*note Bash Builtins::). +to the value of the 'promptvars' shell option (*note Bash Builtins::).  File: bashref.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Controlling the Prompt, Up: Bash Features @@ -6270,50 +6323,38 @@ File: bashref.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: 6.10 The Restricted Shell ========================= -If Bash is started with the name `rbash', or the `--restricted' or `-r' +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' +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. - + * 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 `.' + * 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. - + * 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 + * Parsing the value of 'SHELLOPTS' from the shell environment at startup. - - * Redirecting output using the `>', `>|', `<>', `>&', `&>', and `>>' + * 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 + * 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'. + * 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 +Shell Scripts::), 'rbash' turns off any restrictions in the shell spawned to execute the script.  @@ -6322,217 +6363,236 @@ File: bashref.info, Node: Bash POSIX Mode, Prev: The Restricted Shell, Up: Ba 6.11 Bash POSIX Mode ==================== -Starting Bash with the `--posix' command-line option or executing `set +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 + 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: + 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'. + 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)'. + 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'. + 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. + 4. Alias expansion is always enabled, even in non-interactive shells. 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. + 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 + 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'. + 9. The default history file is '~/.sh_history' (this is the default + value of '$HISTFILE'). - 10. The default history file is `~/.sh_history' (this is the default - value of `$HISTFILE'). + 10. Redirection operators do not perform filename expansion on the + word in the redirection unless the shell is interactive. - 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 + 11. Redirection operators do not perform word splitting on the word in the redirection. - 18. Function names must be valid shell `name's. That is, they may not + 12. 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. - 19. Function names may not be the same as one of the POSIX special + 13. Function names may not be the same as one of the POSIX special builtins. - 20. POSIX special builtins are found before shell functions during + 14. 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 + 15. When printing shell function definitions (e.g., by 'type'), Bash + does not print the 'function' keyword. + + 16. Literal tildes that appear as the first character in elements of + the 'PATH' variable are not expanded as described above under *note + Tilde Expansion::. + + 17. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and - its completed children. The `TIMEFORMAT' variable controls the + its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 22. When parsing and expanding a ${...} expansion that appears within + 18. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 23. The parser does not recognize `time' as a reserved word if the next - token begins with a `-'. + 19. 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 + 20. The '!' character does not introduce history expansion within a + double-quoted string, even if the 'histexpand' option is enabled. + + 21. If a POSIX special builtin returns an error status, a 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 + 22. A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. - 26. A non-interactive shell exits with an error status if a variable + 23. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. - 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. + 24. A non-interactive shell exits with an error status if the + iteration variable in a 'for' statement or the selection variable + in a 'select' statement is a readonly variable. - 28. Process substitution is not available. + 25. Non-interactive shells exit if FILENAME in '.' FILENAME is not + found. - 29. While variable indirection is available, it may not be applied to - the `#' and `?' special parameters. + 26. Non-interactive shells exit if a syntax error in an arithmetic + expansion results in an invalid expression. - 30. Assignment statements preceding POSIX special builtins persist in + 27. Non-interactive shells exit if a parameter expansion error occurs. + + 28. Non-interactive shells exit if there is a syntax error in a script + read with the '.' or 'source' builtins, or in a string processed by + the 'eval' builtin. + + 29. Process substitution is not available. + + 30. While variable indirection is available, it may not be applied to + the '#' and '?' special parameters. + + 31. When expanding the '*' special parameter in a pattern context + where the expansion is double-quoted does not treat the '$*' as if + it were double-quoted. + + 32. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 31. Assignment statements preceding shell function calls persist in the - shell environment after the function returns, as if a POSIX + 33. Assignment statements preceding shell function calls persist in + the shell environment after the function returns, as if a POSIX special builtin command had been executed. - 32. The `export' and `readonly' builtin commands display their output + 34. The 'command' builtin does not prevent builtins that take + assignment statements as arguments from expanding them as + assignment statements; when not in POSIX mode, assignment builtins + lose their assignment statement expansion properties when preceded + by 'command'. + + 35. The 'bg' builtin uses the required format to describe each job + placed in the background, which does not include an indication of + whether the job is the current or previous job. + + 36. The output of 'kill -l' prints all the signal names on a single + line, separated by spaces, without the 'SIG' prefix. + + 37. The 'kill' builtin does not accept signal names with a 'SIG' + prefix. + + 38. 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'. + 39. The 'trap' builtin displays signal names without the leading + 'SIG'. - 34. The `trap' builtin doesn't check the first argument for a possible + 40. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the - handler for a given signal to the original disposition, they - should use `-' as the first argument. + 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'. + 41. 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. + 42. Enabling POSIX mode has the effect of setting the + 'inherit_errexit' option, so subshells spawned to execute command + substitutions inherit the value of the '-e' option from the parent + shell. When the 'inherit_errexit' option is not enabled, Bash + clears the '-e' option in such subshells. - 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 + 43. 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 + 44. 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 + 45. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 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 + 46. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + constructed from '$PWD' and the directory name supplied as an + argument does not refer to an existing directory, 'cd' will fail instead of falling back to PHYSICAL mode. - 42. The `pwd' builtin verifies that the value it prints is the same as + 47. The 'pwd' builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file - system with the `-P' option. + system with the '-P' option. - 43. When listing the history, the `fc' builtin does not include an + 48. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 44. The default editor used by `fc' is `ed'. + 49. 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'. + 50. The 'type' and 'command' builtins will not report a non-executable + file as having been found, though the shell will attempt to execute + such a file if it is the only so-named file found in '$PATH'. - 46. The `vi' editing mode will invoke the `vi' editor directly when - the `v' command is run, instead of checking `$VISUAL' and - `$EDITOR'. + 51. 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 + 52. When the 'xpg_echo' option is enabled, Bash does not attempt to + interpret any arguments to 'echo' as options. Each argument is displayed, after escape characters are converted. - 48. The `ulimit' builtin uses a block size of 512 bytes for the `-c' - and `-f' options. + 53. 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. + 54. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + interrupt the 'wait' builtin and cause it to return immediately. The trap command is run once for each child that exits. - 50. The `read' builtin may be interrupted by a signal for which a trap + 55. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing - `read', the trap handler executes and `read' returns an exit - status greater than 128. + 'read', the trap handler executes and 'read' returns an exit status + greater than 128. + 56. Bash removes an exited background process's status from the list + of such statuses after the 'wait' builtin is used to obtain it. - There is other POSIX behavior that Bash does not implement by -default even when in POSIX mode. Specifically: + 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. + 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 +specifying the '--enable-strict-posix-default' to 'configure' when building (*note Optional Features::).  @@ -6565,77 +6625,76 @@ 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. +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. +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 +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 +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 +character (typically '^Z', Control-Z) while a process is running causes that process to be stopped and returns control to Bash. Typing the -DELAYED SUSPEND character (typically `^Y', Control-Y) causes the -process to be stopped when it attempts to read input from the terminal, -and control to be returned to Bash. The user then manipulates the -state of this job, using the `bg' command to continue it in the -background, the `fg' command to continue it in the foreground, or the -`kill' command to kill it. A `^Z' takes effect immediately, and has -the additional side effect of causing pending output and typeahead to -be discarded. +DELAYED SUSPEND character (typically '^Y', Control-Y) causes the process +to be stopped when it attempts to read input from the terminal, and +control to be returned to Bash. The user then manipulates the state of +this job, using the 'bg' command to continue it in the background, the +'fg' command to continue it in the foreground, or the 'kill' command to +kill it. A '^Z' takes effect immediately, and has the additional side +effect of causing pending output and typeahead to be discarded. There are a number of ways to refer to a job in the shell. The -character `%' introduces a job specification (JOBSPEC). +character '%' introduces a job specification (JOBSPEC). - Job number `n' may be referred to as `%n'. The symbols `%%' and -`%+' refer to the shell's notion of the current job, which is the last -job 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 `-'. + 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. +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' + 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. + 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' +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. @@ -6646,76 +6705,76 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, 7.2 Job Control Builtins ======================== -`bg' +'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 + 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' 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. + 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' jobs [-lnprs] [JOBSPEC] jobs -x COMMAND [ARGUMENTS] The first form lists the active jobs. The options have the following meanings: - `-l' + '-l' List process IDs in addition to the normal information. - `-n' + '-n' Display information only about jobs that have changed status since the user was last notified of their status. - `-p' + '-p' List only the process ID of the job's process group leader. - `-r' + '-r' Display only running jobs. - `-s' + '-s' Display only stopped jobs. - 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 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 + 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' kill [-s SIGSPEC] [-n SIGNUM] [-SIGSPEC] JOBSPEC or PID - kill -l [EXIT_STATUS] + kill -l|-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 + 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. + process terminated by a signal. The '-L' option is equivalent to + '-l'. The return status is zero if at least one signal was + successfully sent, or non-zero if an error occurs or an invalid + option is encountered. -`wait' +'wait' wait [-n] [JOBSPEC or PID ...] Wait until the child process specified by each process ID PID or @@ -6723,32 +6782,32 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, 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 + 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 ...] +'disown' + disown [-ar] [-h] [JOBSPEC ... | PID ... ] 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 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 + 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 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. -`suspend' +'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 + 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. + When job control is not active, the 'kill' and 'wait' builtins do not +accept JOBSPEC arguments. They must be supplied process IDs.  File: bashref.info, Node: Job Control Variables, Prev: Job Control Builtins, Up: Job Control @@ -6756,23 +6815,22 @@ File: bashref.info, Node: Job Control Variables, Prev: Job Control Builtins, 7.3 Job Control Variables ========================= -`auto_resume' +'auto_resume' This variable controls how the shell interacts with the user and job control. If this variable exists then single word simple commands without redirections are treated as candidates for resumption 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 + 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. - + analogous to the '%' job ID.  File: bashref.info, Node: Command Line Editing, Next: Using History Interactively, Prev: Job Control, Up: Top @@ -6784,14 +6842,14 @@ 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' +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'. +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: @@ -6802,7 +6860,6 @@ options to `set'. 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 @@ -6819,10 +6876,10 @@ File: bashref.info, Node: Introduction and Notation, Next: Readline Interactio The following paragraphs describe the notation used to represent keystrokes. - The text `C-k' is read as `Control-K' and describes the character + 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 + 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 @@ -6836,15 +6893,15 @@ 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'. + 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. + 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: bashref.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing @@ -6882,41 +6939,35 @@ 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'. + 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. +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' +'C-b' Move back one character. - -`C-f' +'C-f' Move forward one character. - or Delete the character to the left of the cursor. - -`C-d' +'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' +'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 +the character underneath the cursor, like 'C-d', rather than the character to the left of the cursor.)  @@ -6926,29 +6977,25 @@ File: bashref.info, Node: Readline Movement Commands, Next: Readline Killing C -------------------------------- 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. +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' +'C-a' Move to the start of the line. - -`C-e' +'C-e' Move to the end of the line. - -`M-f' +'M-f' Move forward a word, where a word is composed of letters and digits. - -`M-b' +'M-b' Move backward a word. - -`C-l' +'C-l' Clear the screen, reprinting the current line at the top. - 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. + 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: bashref.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction @@ -6957,51 +7004,49 @@ File: bashref.info, Node: Readline Killing Commands, Next: Readline Arguments, ------------------------------- "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'.) +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 + 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 + 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. +available to be yanked back later, when you are typing another line. Here is the list of commands for killing text. -`C-k' +'C-k' Kill the text from the current cursor position to the end of the line. -`M-d' +'M-d' Kill from the cursor to the end of the current word, or, if between words, to the end of the next word. Word boundaries are the same - as those used by `M-f'. + as those used by 'M-f'. -`M-' +'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. + 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' +'C-y' Yank the most recently killed text back into the buffer at the cursor. -`M-y' +'M-y' Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is `C-y' or `M-y'. + if the prior command is 'C-y' or 'M-y'.  File: bashref.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction @@ -7014,15 +7059,15 @@ 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'. +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 +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. +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: bashref.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction @@ -7032,35 +7077,35 @@ File: bashref.info, Node: Searching, Prev: Readline Arguments, Up: Readline I 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 +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 +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. +'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 + 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. + 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 @@ -7072,19 +7117,19 @@ File: bashref.info, Node: Readline Init File, Next: Bindable Readline Commands 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 +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'. +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 + 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: @@ -7101,21 +7146,21 @@ File: bashref.info, Node: Readline Init File Syntax, Next: Conditional Init Co 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. +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 + 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: + Here, for example, is how to change from the default Emacs-like key + binding to use 'vi' line editing commands: set editing-mode vi @@ -7123,261 +7168,318 @@ Variable Settings 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. + 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::. + 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. + '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. + 'bind-tty-special-chars' + If set to 'on' (the default), Readline attempts to bind the + control characters treated specially by the kernel's terminal + driver to their Readline equivalents. - `colored-stats' - If set to `on', Readline displays possible completions using + 'blink-matching-paren' + If set to 'on', Readline attempts to briefly move the cursor + to an opening parenthesis when a closing parenthesis is + inserted. The default is 'off'. + + 'colored-completion-prefix' + If set to 'on', when listing completions, Readline displays + the common prefix of the set of possible completions using a + different color. The color definitions are taken from the + value of the 'LS_COLORS' environment variable. The default is + 'off'. + + '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'. + definitions are taken from the value of the 'LS_COLORS' + environment variable. The default is 'off'. - `comment-begin' + 'comment-begin' The string to insert at the beginning of the line when the - `insert-comment' command is executed. The default value is - `"#"'. + 'insert-comment' command is executed. The default value is + '"#"'. - `completion-display-width' + '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-ignore-case' + If set to 'on', Readline performs filename matching and completion in a case-insensitive fashion. The default value - is `off'. + is 'off'. - `completion-map-case' - If set to `on', and COMPLETION-IGNORE-CASE is enabled, - Readline treats hyphens (`-') and underscores (`_') as + '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' + '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' + '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'. + 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 + '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'. + to a meta-prefixed key sequence. The default value is 'on', + but will be set to 'off' if the locale is one that contains + eight-bit characters. - `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'. + '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 + 'echo-control-characters' + When set to 'on', on operating systems that indicate they + support it, readline echoes a character corresponding to a + signal generated from the keyboard. The default is 'on'. + + 'editing-mode' + The 'editing-mode' variable controls which default set of 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'. + 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'. + 'emacs-mode-string' + This string is displayed immediately before the last line of + the primary prompt when emacs editing mode is active. The + value is expanded like a key binding, so the standard set of + meta- and control prefixes and backslash escape sequences is + available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '@'. - `enable-keypad' - When set to `on', Readline will try to enable the application + 'enable-bracketed-paste' + When set to 'On', Readline will configure the terminal in a + way that will enable it to insert each paste into the editing + buffer as a single string of characters, instead of treating + each character as if it had been read from the keyboard. This + can prevent pasted characters from being interpreted as + editing commands. The default is 'off'. + + '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'. + 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'. + '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'. + '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 + '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 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. + '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. If an + attempt is made to set HISTORY-SIZE to a non-numeric value, + the maximum number of history entries will be set to 500. - `horizontal-scroll-mode' - This variable can be set to either `on' or `off'. Setting it - to `on' means that the text of the lines being edited will + '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'. + 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 + '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. + default value is 'off', but Readline will set it to 'on' if + the locale contains eight-bit characters. The name + 'meta-flag' is a synonym for this variable. - `isearch-terminators' + '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 + given a value, the characters and 'C-J' will terminate an incremental search. - `keymap' + '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. + 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' ('vi-move' is also a synonym); '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. Readline uses this - value to determine whether or not input is available on the - current input source (`rl_instream' by default). The value - is specified in milliseconds, so a value of 1000 means that + '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. Readline uses this value + to determine whether or not input is available on the current + input source ('rl_instream' by default). 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'. + 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-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-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 + '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'. + '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. + '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 + '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'. + cycling through the list. The default is 'off'. - `output-meta' - If set to `on', Readline will display characters with the + 'output-meta' + If set to 'on', Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape - sequence. The default is `off'. + sequence. The default is 'off', but Readline will set it to + 'on' if the locale contains eight-bit characters. - `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. + '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 + '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'. + 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 + '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'. + undo lists across calls to 'readline'. The default is 'off'. - `show-all-if-ambiguous' + 'show-all-if-ambiguous' This alters the default behavior of the completion functions. - If set to `on', words which have more than one possible + 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'. + of ringing the bell. The default value is 'off'. - `show-all-if-unmodified' + '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 + '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'. + 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'. + '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 mode strings are user-settable. 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'. + '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'. + 'vi-cmd-mode-string' + This string is displayed immediately before the last line of + the primary prompt when vi editing mode is active and in + command mode. The value is expanded like a key binding, so + the standard set of meta- and control prefixes and backslash + escape sequences is available. Use the '\1' and '\2' escapes + to begin and end sequences of non-printing characters, which + can be used to embed a terminal control sequence into the mode + string. The default is '(cmd)'. + 'vi-ins-mode-string' + This string is displayed immediately before the last line of + the primary prompt when vi editing mode is active and in + insertion mode. The value is expanded like a key binding, so + the standard set of meta- and control prefixes and backslash + escape sequences is available. Use the '\1' and '\2' escapes + to begin and end sequences of non-printing characters, which + can be used to embed a terminal control sequence into the mode + string. The default is '(ins)'. + + '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. + 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, @@ -7386,31 +7488,31 @@ Key Bindings part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. - In addition to command names, readline allows keys to be bound to - a string that is inserted when the key is pressed (a MACRO). + 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::. + 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: 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 + 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). + '> 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": 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 @@ -7421,66 +7523,51 @@ Key Bindings "\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'. - + 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-' + '\C-' control prefix - - `\M-' + '\M-' meta prefix - - `\e' + '\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' + '\a' alert (bell) - - `\b' + '\b' backspace - - `\d' + '\d' delete - - `\f' + '\f' form feed - - `\n' + '\n' newline - - `\r' + '\r' carriage return - - `\t' + '\t' horizontal tab - - `\v' + '\v' vertical tab - - `\NNN' + '\NNN' the eight-bit character whose value is the octal value NNN (one to three digits) - - `\xHH' + '\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) @@ -7488,12 +7575,11 @@ Key Bindings 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 + 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: bashref.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File @@ -7501,33 +7587,32 @@ File: bashref.info, Node: Conditional Init Constructs, Next: Sample Init File, --------------------------------- 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. +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. +'$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. + '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 + '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. + '=' 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' + '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 @@ -7540,18 +7625,18 @@ are four parser directives used. "\C-xq": "\eb\"\ef\"" $endif -`$endif' - This command, as seen in the previous example, terminates an `$if' +'$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 +'$else' + Commands in this branch of the '$if' directive are executed if the test fails. -`$include' +'$include' This directive takes a single filename as an argument and reads commands and bindings from that file. For example, the following - directive reads from `/etc/inputrc': + directive reads from '/etc/inputrc': $include /etc/inputrc  @@ -7563,7 +7648,6 @@ File: bashref.info, Node: Sample Init File, Prev: Conditional Init Constructs, 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. @@ -7681,16 +7765,16 @@ File: bashref.info, Node: Bindable Readline Commands, Next: Readline vi Mode, * 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'. +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". +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: bashref.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands @@ -7698,134 +7782,132 @@ File: bashref.info, Node: Commands For Moving, Next: Commands For History, Up 8.4.1 Commands For Moving ------------------------- -`beginning-of-line (C-a)' +'beginning-of-line (C-a)' Move to the start of the current line. -`end-of-line (C-e)' +'end-of-line (C-e)' Move to the end of the line. -`forward-char (C-f)' +'forward-char (C-f)' Move forward a character. -`backward-char (C-b)' +'backward-char (C-b)' Move back a character. -`forward-word (M-f)' +'forward-word (M-f)' Move forward to the end of the next word. Words are composed of letters and digits. -`backward-word (M-b)' +'backward-word (M-b)' Move back to the start of the current or previous word. Words are composed of letters and digits. -`shell-forward-word ()' +'shell-forward-word ()' Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. -`shell-backward-word ()' +'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-screen (C-l)' Clear the screen and redraw the current line, leaving the current line at the top of the screen. -`redraw-current-line ()' +'redraw-current-line ()' Refresh the current line. By default, this is unbound. -  File: bashref.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-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 + 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 +'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. +'next-history (C-n)' + Move 'forward' through the history list, fetching the next command. -`beginning-of-history (M-<)' +'beginning-of-history (M-<)' Move to the first line in the history. -`end-of-history (M->)' +'end-of-history (M->)' Move to the end of the input history, i.e., the line currently being entered. -`reverse-search-history (C-r)' - Search backward starting at the current line and moving `up' +'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. +'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 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-reverse-search-history (M-p)' + Search backward starting at the current line and moving 'up' + through the history as necessary using a non-incremental search for + a string supplied by the user. The search string may match + anywhere in a history line. -`non-incremental-forward-search-history (M-n)' - 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. +'non-incremental-forward-search-history (M-n)' + Search forward starting at the current line and moving 'down' + through the history as necessary using a non-incremental search for + a string supplied by the user. The search string may match + anywhere in a history line. -`history-search-forward ()' +'history-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -`history-search-backward ()' +'history-search-backward ()' Search backward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -`history-substr-search-forward ()' +'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 ()' +'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)' +'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' + argument N is computed, the argument is extracted as if the '!N' history expansion had been specified. -`yank-last-arg (M-. or M-_)' +'yank-last-arg (M-. or M-_)' Insert last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly - like `yank-nth-arg'. 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. - + 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.  File: bashref.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands @@ -7833,145 +7915,153 @@ File: bashref.info, Node: Commands For Text, Next: Commands For Killing, Prev 8.4.3 Commands For Changing Text -------------------------------- -`end-of-file (usually C-d)' +'end-of-file (usually C-d)' The character indicating end-of-file as set, for example, by - `stty'. If this character is read when there are no characters on + 'stty'. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline interprets it as the end of input and returns EOF. -`delete-char (C-d)' +'delete-char (C-d)' Delete the character at point. If this function is bound to the - same character as the tty EOF character, as `C-d' commonly is, see + same character as the tty EOF character, as 'C-d' commonly is, see above for the effects. -`backward-delete-char (Rubout)' +'backward-delete-char (Rubout)' Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them. -`forward-backward-delete-char ()' +'forward-backward-delete-char ()' Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key. -`quoted-insert (C-q or C-v)' +'quoted-insert (C-q or C-v)' Add the next character typed to the line verbatim. This is how to - insert key sequences like `C-q', for example. + insert key sequences like 'C-q', for example. -`self-insert (a, b, A, 1, !, ...)' +'self-insert (a, b, A, 1, !, ...)' Insert yourself. -`transpose-chars (C-t)' +'bracketed-paste-begin ()' + This function is intended to be bound to the "bracketed paste" + escape sequence sent by some terminals, and such a binding is + assigned by default. It allows Readline to insert the pasted text + as a single unit without treating each character as if it had been + read from the keyboard. The characters are inserted as if each one + was bound to 'self-insert') instead of executing any editing + commands. + +'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)' +'transpose-words (M-t)' Drag the word before point past the word after point, moving point past that word as well. If the insertion point is at the end of the line, this transposes the last two words on the line. -`upcase-word (M-u)' +'upcase-word (M-u)' Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor. -`downcase-word (M-l)' +'downcase-word (M-l)' Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor. -`capitalize-word (M-c)' +'capitalize-word (M-c)' Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor. -`overwrite-mode ()' +'overwrite-mode ()' Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only - `emacs' mode; `vi' mode does overwrite differently. Each call to - `readline()' starts in insert mode. + '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 + 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 + Characters bound to 'backward-delete-char' replace the character before point with a space. By default, this command is unbound. -  File: bashref.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-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)' +'backward-kill-line (C-x Rubout)' Kill backward from the cursor to the beginning of the current line. -`kill-whole-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-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'. + as 'forward-word'. -`backward-kill-word (M-)' +'backward-kill-word (M-)' Kill the word behind point. Word boundaries are the same as - `backward-word'. + 'backward-word'. -`shell-kill-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'. + as 'shell-forward-word'. -`shell-backward-kill-word ()' +'shell-backward-kill-word ()' Kill the word behind point. Word boundaries are the same as - `shell-backward-word'. + 'shell-backward-word'. -`unix-word-rubout (C-w)' +'unix-word-rubout (C-w)' Kill the word behind point, using white space as a word boundary. The killed text is saved on the kill-ring. -`unix-filename-rubout ()' +'unix-filename-rubout ()' Kill the word behind point, using white space and the slash character as the word boundaries. The killed text is saved on the kill-ring. -`delete-horizontal-space ()' +'delete-horizontal-space ()' Delete all spaces and tabs around point. By default, this is unbound. -`kill-region ()' +'kill-region ()' Kill the text in the current region. By default, this command is unbound. -`copy-region-as-kill ()' +'copy-region-as-kill ()' Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound. -`copy-backward-word ()' - Copy the word before point to the kill buffer. The word - boundaries are the same as `backward-word'. 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-forward-word ()' Copy the word following point to the kill buffer. The word - boundaries are the same as `forward-word'. By default, this + boundaries are the same as 'forward-word'. By default, this command is unbound. -`yank (C-y)' +'yank (C-y)' Yank the top of the kill ring into the buffer at point. -`yank-pop (M-y)' +'yank-pop (M-y)' Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is `yank' or `yank-pop'. + if the prior command is 'yank' or 'yank-pop'.  File: bashref.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands @@ -7979,22 +8069,22 @@ File: bashref.info, Node: Numeric Arguments, Next: Commands For Completion, P 8.4.5 Specifying Numeric Arguments ---------------------------------- -`digit-argument (M-0, M-1, ... M--)' +'digit-argument (M-0, M-1, ... M--)' Add this digit to the argument already accumulating, or start a new - argument. `M--' starts a negative argument. + argument. 'M--' starts a negative argument. -`universal-argument ()' +'universal-argument ()' This is another way to specify an argument. If this command is followed by one or more digits, optionally with a leading minus - sign, those digits define the argument. 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. + 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 nor minus sign, the argument count for the next command is + multiplied by four. The argument count is initially one, so + executing this function the first time makes the argument count + four, a second time makes the argument count sixteen, and so on. + By default, this is not bound to a key.  File: bashref.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands @@ -8002,271 +8092,268 @@ File: bashref.info, Node: Commands For Completion, Next: Keyboard Macros, Pre 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. +'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-?)' +'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. + for display to the value of 'completion-display-width', the value + of the environment variable 'COLUMNS', or the screen width, in that + order. -`insert-completions (M-*)' +'insert-completions (M-*)' Insert all completions of the text before point that would have - been generated by `possible-completions'. + 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 +'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 + '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 +'menu-complete-backward ()' + Identical to 'menu-complete', but moves backward through the list + of possible completions, as if 'menu-complete' had been given a negative argument. -`delete-char-or-list ()' +'delete-char-or-list ()' Deletes the character under the cursor if not at the beginning or - end of the line (like `delete-char'). If at the end of the line, - behaves identically to `possible-completions'. This command is + 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-/)' +'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. +'possible-filename-completions (C-x /)' + List the possible completions of the text before point, treating it + as a filename. -`complete-username (M-~)' +'complete-username (M-~)' Attempt completion on the text before point, treating it as a username. -`possible-username-completions (C-x ~)' - List the possible completions of 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. +'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. +'possible-variable-completions (C-x $)' + List the possible completions of the text before point, treating it + as a shell variable. -`complete-hostname (M-@)' +'complete-hostname (M-@)' Attempt completion on the text before point, treating it as a hostname. -`possible-hostname-completions (C-x @)' - List the possible completions of 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-!)' +'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. +'possible-command-completions (C-x !)' + List the possible completions of the text before point, treating it + as a command name. -`dynamic-complete-history (M-)' +'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 ()' +'dabbrev-expand ()' Attempt menu completion on the text before point, comparing the text against lines from the history list for possible completion matches. -`complete-into-braces (M-{)' +'complete-into-braces (M-{)' Perform filename completion and insert the list of possible completions enclosed within braces so the list is available to the shell (*note Brace Expansion::). -  File: bashref.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 ()' +'start-kbd-macro (C-x ()' Begin saving the characters typed into the current keyboard macro. -`end-kbd-macro (C-x ))' +'end-kbd-macro (C-x ))' Stop saving the characters typed into the current keyboard macro and save the definition. -`call-last-kbd-macro (C-x e)' +'call-last-kbd-macro (C-x e)' Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard. -`print-last-kbd-macro ()' +'print-last-kbd-macro ()' Print the last keboard macro defined in a format suitable for the INPUTRC file. -  File: bashref.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)' +'re-read-init-file (C-x C-r)' Read in the contents of the INPUTRC file, and incorporate any bindings or variable assignments found there. -`abort (C-g)' +'abort (C-g)' Abort the current editing command and ring the terminal's bell - (subject to the setting of `bell-style'). + (subject to the setting of 'bell-style'). -`do-uppercase-version (M-a, M-b, M-X, ...)' +'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 ()' +'prefix-meta ()' Metafy the next character typed. This is for keyboards without a - meta key. Typing ` f' is equivalent to typing `M-f'. + meta key. Typing ' f' is equivalent to typing 'M-f'. -`undo (C-_ or C-x C-u)' +'undo (C-_ or C-x C-u)' Incremental undo, separately remembered for each line. -`revert-line (M-r)' +'revert-line (M-r)' Undo all changes made to this line. This is like executing the - `undo' command enough times to get back to the beginning. + 'undo' command enough times to get back to the beginning. -`tilde-expand (M-&)' +'tilde-expand (M-&)' Perform tilde expansion on the current word. -`set-mark (C-@)' +'set-mark (C-@)' Set the mark to the point. If a numeric argument is supplied, the mark is set to that position. -`exchange-point-and-mark (C-x C-x)' +'exchange-point-and-mark (C-x C-x)' Swap the point with the mark. The current cursor position is set to the saved position, and the old cursor position is saved as the mark. -`character-search (C-])' +'character-search (C-])' A character is read and point is moved to the next occurrence of that character. A negative count searches for previous occurrences. -`character-search-backward (M-C-])' +'character-search-backward (M-C-])' A character is read and point is moved to the previous occurrence of that character. A negative count searches for subsequent occurrences. -`skip-csi-sequence ()' +'skip-csi-sequence ()' Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this - sequence is bound to "\e[", keys producing such sequences will - have no effect unless explicitly bound to a readline command, - instead of inserting stray characters into the editing buffer. - This is unbound by default, but usually bound to ESC-[. + 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' +'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. + 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 ()' +'dump-functions ()' Print all of the functions and their key bindings to the Readline output stream. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an INPUTRC file. This command is unbound by default. -`dump-variables ()' +'dump-variables ()' Print all of the settable variables and their values to the Readline output stream. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an INPUTRC file. This command is unbound by default. -`dump-macros ()' +'dump-macros ()' Print all of the Readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the - output is formatted in such a way that it can be made part of an - INPUTRC file. This command is unbound by default. + 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)' +'glob-complete-word (M-g)' The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to generate a list of matching file names for possible completions. -`glob-expand-word (C-x *)' +'glob-expand-word (C-x *)' The word before point is treated as a pattern for pathname expansion, and the list of matching file names is inserted, - replacing the word. If a numeric argument is supplied, a `*' is + replacing the word. If a numeric argument is supplied, a '*' is appended before pathname expansion. -`glob-list-expansions (C-x g)' +'glob-list-expansions (C-x g)' The list of expansions that would have been generated by - `glob-expand-word' is displayed, and the line is redrawn. If a - numeric argument is supplied, a `*' is appended before pathname + 'glob-expand-word' is displayed, and the line is redrawn. If a + numeric argument is supplied, a '*' is appended before pathname expansion. -`display-shell-version (C-x C-v)' +'display-shell-version (C-x C-v)' Display version information about the current instance of Bash. -`shell-expand-line (M-C-e)' - 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::). +'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-^)' +'history-expand-line (M-^)' Perform history expansion on the current line. -`magic-space ()' +'magic-space ()' Perform history expansion on the current line and insert a space (*note History Interaction::). -`alias-expand-line ()' +'alias-expand-line ()' Perform alias expansion on the current line (*note Aliases::). -`history-and-alias-expand-line ()' +'history-and-alias-expand-line ()' Perform history and alias expansion on the current line. -`insert-last-argument (M-. or M-_)' - A synonym for `yank-last-arg'. +'insert-last-argument (M-. or M-_)' + A synonym for 'yank-last-arg'. -`operate-and-get-next (C-o)' +'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)' +'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. - + result as shell commands. Bash attempts to invoke '$VISUAL', + '$EDITOR', and 'emacs' as the editor, in that order.  File: bashref.info, Node: Readline vi Mode, Next: Programmable Completion, Prev: Bindable Readline Commands, Up: Command Line Editing @@ -8274,19 +8361,19 @@ File: bashref.info, Node: Readline vi Mode, Next: Programmable Completion, Pr 8.5 Readline vi Mode ==================== -While the Readline library does not have a full set of `vi' editing +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. +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 (*note The Set -Builtin::). The Readline default is `emacs' mode. + 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. + 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: bashref.info, Node: Programmable Completion, Next: Programmable Completion Builtins, Prev: Readline vi Mode, Up: Command Line Editing @@ -8294,21 +8381,21 @@ File: bashref.info, Node: Programmable Completion, Next: Programmable Completi 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 +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 +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. +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 @@ -8316,83 +8403,84 @@ 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'. +'-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. + 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 + 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. +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 +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 +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. +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' + 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, one per array element. +'COMPREPLY' array variable, one per array element. - Next, any command specified with the `-C' option is invoked in an + 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. +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. If the 'nocasematch' shell option +(see the description of 'shopt' in *note The Shopt Builtin::) is +enabled, the match is performed without regard to the case of alphabetic +characters. - Finally, any prefix and suffix specified with the `-P' and `-S' + 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 +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 + 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 + 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. +'-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 @@ -8402,7 +8490,7 @@ 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 +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 @@ -8433,15 +8521,15 @@ 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]' +'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. + 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 @@ -8451,225 +8539,225 @@ happening. 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] +'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 ...]' + [-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 + '-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 + 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. + 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'. + 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. + 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' + '-o COMP-OPTION' The COMP-OPTION controls several aspects of the compspec's behavior beyond the simple generation of completions. COMP-OPTION may be one of: - `bashdefault' + 'bashdefault' Perform the rest of the default Bash completions if the compspec generates no matches. - `default' + 'default' Use Readline's default filename completion if the compspec generates no matches. - `dirnames' + 'dirnames' Perform directory name completion if the compspec generates no matches. - `filenames' + 'filenames' Tell Readline that the compspec generates filenames, so it can perform any filename-specific processing (like adding a slash to directory names quoting special - characters, or suppressing trailing spaces). This - option is intended to be used with shell functions - specified with `-F'. + characters, or suppressing trailing spaces). This option + is intended to be used with shell functions specified + with '-F'. - `noquote' + 'noquote' Tell Readline not to quote the completed words if they are filenames (quoting filenames is the default). - `nospace' + 'nosort' + Tell Readline not to sort the list of possible + completions alphabetically. + + 'nospace' Tell Readline not to append a space (the default) to words completed at the end of the line. - `plusdirs' + 'plusdirs' After any matches defined by the compspec are generated, directory name completion is attempted and any matches are added to the results of the other actions. - - `-A ACTION' + '-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'. + 'alias' + Alias names. May also be specified as '-a'. - `arrayvar' + 'arrayvar' Array variable names. - `binding' + 'binding' Readline key binding names (*note Bindable Readline Commands::). - `builtin' + 'builtin' Names of shell builtin commands. May also be specified - as `-b'. + as '-b'. - `command' - Command names. May also be specified as `-c'. + 'command' + Command names. May also be specified as '-c'. - `directory' - Directory names. May also be specified as `-d'. + 'directory' + Directory names. May also be specified as '-d'. - `disabled' + 'disabled' Names of disabled shell builtins. - `enabled' + 'enabled' Names of enabled shell builtins. - `export' - Names of exported shell variables. May also be - specified as `-e'. + 'export' + Names of exported shell variables. May also be specified + as '-e'. - `file' - File names. May also be specified as `-f'. + 'file' + File names. May also be specified as '-f'. - `function' + 'function' Names of shell functions. - `group' - Group names. May also be specified as `-g'. + 'group' + Group names. May also be specified as '-g'. - `helptopic' - Help topics as accepted by the `help' builtin (*note - Bash Builtins::). + 'helptopic' + Help topics as accepted by the 'help' builtin (*note Bash + Builtins::). - `hostname' + 'hostname' Hostnames, as taken from the file specified by the - `HOSTFILE' shell variable (*note Bash Variables::). + 'HOSTFILE' shell variable (*note Bash Variables::). - `job' + 'job' Job names, if job control is active. May also be - specified as `-j'. + specified as '-j'. - `keyword' - Shell reserved words. May also be specified as `-k'. + 'keyword' + Shell reserved words. May also be specified as '-k'. - `running' + 'running' Names of running jobs, if job control is active. - `service' - Service names. May also be specified as `-s'. + 'service' + Service names. May also be specified as '-s'. - `setopt' - Valid arguments for the `-o' option to the `set' builtin + '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 + 'shopt' + Shell option names as accepted by the 'shopt' builtin (*note Bash Builtins::). - `signal' + 'signal' Signal names. - `stopped' + 'stopped' Names of stopped jobs, if job control is active. - `user' - User names. May also be specified as `-u'. + 'user' + User names. May also be specified as '-u'. - `variable' + 'variable' Names of all shell variables. May also be specified as - `-v'. + '-v'. - `-C COMMAND' + '-C COMMAND' COMMAND is executed in a subshell environment, and its output is used as the possible completions. - `-F FUNCTION' + '-F FUNCTION' The shell function FUNCTION is executed in the current shell environment. When it is executed, $1 is the name of the command whose arguments are being completed, $2 is the word being completed, and $3 is the word preceding the word being completed, as described above (*note Programmable - Completion::). When it finishes, the possible completions - are retrieved from the value of the `COMPREPLY' array - variable. + Completion::). When it finishes, the possible completions are + retrieved from the value of the 'COMPREPLY' array variable. - `-G GLOBPAT' + '-G GLOBPAT' The filename expansion pattern GLOBPAT is expanded to generate the possible completions. - `-P PREFIX' + '-P PREFIX' PREFIX is added at the beginning of each possible completion after all other options have been applied. - `-S SUFFIX' - SUFFIX is appended to 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' + '-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' + '-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 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. + 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] +'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' + 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 + '-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 '-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: bashref.info, Node: A Programmable Completion Example, Prev: Programmable Completion Builtins, Up: Command Line Editing @@ -8677,25 +8765,25 @@ File: bashref.info, Node: A Programmable Completion Example, Prev: Programmabl ===================================== 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 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 + 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. +'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 + 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 (*note Tilde Expansion::), searching directories in $CDPATH, which is described above -(*note Bourne Shell Builtins::), and basic support for the -`cdable_vars' shell option (*note 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. +(*note Bourne Shell Builtins::), and basic support for the 'cdable_vars' +shell option (*note 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 @@ -8748,8 +8836,8 @@ retrieves the completions from there when the function returns. return 0 } - We install the completion function using the `-F' option to -`complete': + 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 @@ -8757,32 +8845,32 @@ retrieves the completions from there when the function returns. 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 +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 (*note Filename Expansion::), and so on. +'_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 +(*note Filename Expansion::), and so on. - Once installed using `complete', `_comp_cd' will be called every -time we attempt word completion for a `cd' command. + 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. +project now lives at . 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. +bash in the 'examples/complete' subdirectory.  File: bashref.info, Node: Using History Interactively, Next: Installing Bash, Prev: Command Line Editing, Up: Top @@ -8790,10 +8878,10 @@ File: bashref.info, Node: Using History Interactively, Next: Installing Bash, 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. +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: @@ -8809,53 +8897,52 @@ File: bashref.info, Node: Bash History Facilities, Next: Bash History Builtins 9.1 Bash History Facilities =========================== -When the `-o history' option to the `set' builtin is enabled (*note The +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 +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 +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'. +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 +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 (*note +'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 (*note Bash Builtins::), the lines are appended to the history file, otherwise -the history file is overwritten. If `HISTFILE' is unset, or if the +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 +'$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. + 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 following history entry. - 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 + 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::). +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' +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 +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'. +instead of semicolons. The 'shopt' builtin is used to set these +options. *Note Bash Builtins::, for a description of 'shopt'.  File: bashref.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively @@ -8863,95 +8950,94 @@ File: bashref.info, Node: Bash History Builtins, Next: History Interaction, P 9.2 Bash History Builtins ========================= -Bash provides two builtin commands which manipulate the history list -and history file. +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]' +'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. + 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 (*note Aliases::). + 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' 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. + 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' + '-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. + '-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. + '-a' + Append the new history lines to the history file. These are + history lines entered since the beginning of the current Bash + session, but not already appended to the history file. - `-n' + '-n' Append the history lines not already read from the history - file to the current history list. These are lines appended - to the history file since the beginning of the current Bash + file to the current history list. These are lines appended to + the history file since the beginning of the current Bash session. - `-r' + '-r' Read the history file and append its contents to the history list. - `-w' + '-w' Write out the current history list to the history file. - `-p' + '-p' Perform history substitution on the ARGs and display the result on the standard output, without storing the results in the history list. - `-s' + '-s' The ARGs are added to the end of the history list as a single entry. - - When any of the `-w', `-r', `-a', or `-n' options is used, if + 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. - + then the value of the 'HISTFILE' variable is used.  File: bashref.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively @@ -8960,43 +9046,47 @@ File: bashref.info, Node: History Interaction, Prev: Bash History Builtins, U ===================== The History library provides a history expansion feature that is similar -to the history expansion provided by `csh'. This section describes the +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 +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. + 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. +are called "words". Various "modifiers" are available to manipulate the +selected words. The line is broken into words in the same fashion that +Bash does, so that several words surrounded by quotes are considered one +word. History expansions are introduced by the appearance of the +history expansion character, which is '!' by default. Only '\' and ''' +may be used to escape the history expansion character, but the history +expansion character is also treated as quoted if it immediately precedes +the closing double quote in a double-quoted string. - 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. + 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 +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. @@ -9014,97 +9104,95 @@ File: bashref.info, Node: Event Designators, Next: Word Designators, Up: Hist An event designator is a reference to a command line entry in the history list. Unless the reference is absolute, events are relative to -the current position in the history list. +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). + the end of the line, '=' or '(' (when the 'extglob' shell option is + enabled using the 'shopt' builtin). -`!N' +'!N' Refer to command line N. -`!-N' +'!-N' Refer to the command N lines back. -`!!' - Refer to the previous command. This is a synonym for `!-1'. +'!!' + Refer to the previous command. This is a synonym for '!-1'. -`!STRING' +'!STRING' Refer to the most recent command preceding the current position in the history list starting with STRING. -`!?STRING[?]' +'!?STRING[?]' Refer to the most recent command preceding the current position in - the history list containing STRING. The trailing `?' may be + the history list containing STRING. The trailing '?' may be omitted if the STRING is followed immediately by a newline. -`^STRING1^STRING2^' +'^STRING1^STRING2^' Quick Substitution. Repeat the last command, replacing STRING1 - with STRING2. Equivalent to `!!:s/STRING1/STRING2/'. + with STRING2. Equivalent to '!!:s/STRING1/STRING2/'. -`!#' +'!#' The entire command line typed so far. -  File: bashref.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. +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 `!$'. + shortened to '!$'. -`!fi:2' +'!fi:2' designates the second argument of the most recent command starting - with the letters `fi'. + with the letters 'fi'. Here are the word designators: -`0 (zero)' - The `0'th word. For many applications, this is the command word. +'0 (zero)' + The '0'th word. For many applications, this is the command word. -`N' +'N' The Nth word. -`^' +'^' The first argument; that is, word 1. -`$' +'$' The last argument. -`%' - The word matched by the most recent `?STRING?' search. +'%' + The word matched by the most recent '?STRING?' search. -`X-Y' - A range of words; `-Y' abbreviates `0-Y'. +'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 +'*' + 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. +'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. @@ -9116,50 +9204,49 @@ File: bashref.info, Node: Modifiers, Prev: Word Designators, Up: History Inte --------------- After the optional word designator, you can add a sequence of one or -more of the following modifiers, each preceded by a `:'. +more of the following modifiers, each preceded by a ':'. -`h' +'h' Remove a trailing pathname component, leaving only the head. -`t' +'t' Remove all leading pathname components, leaving the tail. -`r' - Remove a trailing suffix of the form `.SUFFIX', leaving the +'r' + Remove a trailing suffix of the form '.SUFFIX', leaving the basename. -`e' +'e' Remove all but the trailing suffix. -`p' +'p' Print the new command but do not execute it. -`q' +'q' Quote the substituted words, escaping further substitutions. -`x' - Quote the substituted words as with `q', but break into words at +'x' + Quote the substituted words as with 'q', but break into words at spaces, tabs, and newlines. -`s/OLD/NEW/' +'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. + 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' +'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. + conjunction with 's', as in 'gs/OLD/NEW/', or with '&'. +'G' + Apply the following 's' modifier once to each word in the event.  File: bashref.info, Node: Installing Bash, Next: Reporting Bugs, Prev: Using History Interactively, Up: Top @@ -9199,58 +9286,57 @@ 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. + 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 + 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 + 2. Type 'make' to compile Bash and build the 'bashbug' bug reporting script. - 3. Optionally, type `make tests' to run the Bash test suite. + 3. Optionally, type 'make tests' to run the Bash test suite. - 4. Type `make install' to install `bash' and `bashbug'. This will + 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 + 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. +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 + 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 +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.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 + 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'. +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: bashref.info, Node: Compilers and Options, Next: Compiling For Multiple Architectures, Prev: Basic Installation, Up: Installing Bash @@ -9258,15 +9344,15 @@ File: bashref.info, Node: Compilers and Options, Next: Compiling For Multiple 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' +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: + On systems that have the 'env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure @@ -9280,29 +9366,29 @@ File: bashref.info, Node: Compiling For Multiple Architectures, Next: Installa 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' +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 `..'. +'--srcdir=PATH' argument to tell 'configure' where the source files are. +'configure' automatically checks for the source code in the directory +that 'configure' is in and in '..'. - If you have to use a `make' that does not supports the `VPATH' + If you have to use a 'make' that does not 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, 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': +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 +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. @@ -9312,15 +9398,15 @@ File: bashref.info, Node: Installation Names, Next: Specifying the System Type 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'. +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 +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. @@ -9330,15 +9416,15 @@ File: bashref.info, Node: Specifying the System Type, Next: Sharing Defaults, 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'). +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 + See the file 'support/config.sub' for the possible values of each field.  @@ -9347,14 +9433,14 @@ File: bashref.info, Node: Sharing Defaults, Next: Operation Controls, Prev: S 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. +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: bashref.info, Node: Operation Controls, Next: Optional Features, Prev: Sharing Defaults, Up: Installing Bash @@ -9362,31 +9448,31 @@ File: bashref.info, Node: Operation Controls, Next: Optional Features, Prev: 10.7 Operation Controls ======================= -`configure' recognizes the following options to control how it operates. +'configure' recognizes the following options to control how it operates. -`--cache-file=FILE' +'--cache-file=FILE' Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. + './config.cache'. Set FILE to '/dev/null' to disable caching, for + debugging 'configure'. -`--help' - Print a summary of the options to `configure', and exit. +'--help' + Print a summary of the options to 'configure', and exit. -`--quiet' -`--silent' -`-q' +'--quiet' +'--silent' +'-q' Do not print messages saying which checks are being made. -`--srcdir=DIR' +'--srcdir=DIR' Look for the Bash source code in directory DIR. Usually - `configure' can determine that directory automatically. + 'configure' can determine that directory automatically. -`--version' - Print the version of Autoconf used to generate the `configure' +'--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. + 'configure' also accepts some other, not widely used, boilerplate +options. 'configure --help' prints the complete list.  File: bashref.info, Node: Optional Features, Prev: Operation Controls, Up: Installing Bash @@ -9394,248 +9480,253 @@ File: bashref.info, Node: Optional Features, Prev: Operation Controls, Up: In 10.8 Optional Features ====================== -The Bash `configure' has a number of `--enable-FEATURE' options, where +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'. +'--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. + Here is a complete list of the '--enable-' and '--with-' options that +the Bash 'configure' recognizes. -`--with-afs' +'--with-afs' Define if you are using the Andrew File System from Transarc. -`--with-bash-malloc' - 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 +'--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 + 'configure' disables this option automatically for a number of systems. -`--with-curses' +'--with-curses' Use the curses library instead of the termcap library. This should be supplied if your system has an inadequate or incomplete termcap database. -`--with-gnu-malloc' - A synonym for `--with-bash-malloc'. +'--with-gnu-malloc' + A synonym for '--with-bash-malloc'. -`--with-installed-readline[=PREFIX]' +'--with-installed-readline[=PREFIX]' Define this to make Bash link with a locally-installed version of - Readline rather than the version in `lib/readline'. This works - only with Readline 5.0 and later versions. If PREFIX is `yes' or - not supplied, `configure' uses the values of the make variables - `includedir' and `libdir', which are subdirectories of `prefix' by + 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 + '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'). + subdirectories of that directory (include files in PREFIX/'include' + and the library in PREFIX/'lib'). -`--with-purify' +'--with-purify' Define this to use the Purify memory allocation checker from Rational Software. -`--enable-minimal-config' +'--enable-minimal-config' This produces a shell with minimal features, close to the historical Bourne shell. - There are several `--enable-' options that alter how Bash is -compiled and linked, rather than changing run-time features. + There are several '--enable-' options that alter how Bash is compiled +and linked, rather than changing run-time features. -`--enable-largefile' +'--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. + programs which can access large files. This is enabled by default, + if the operating system provides large file support. -`--enable-profiling' +'--enable-profiling' This builds a Bash binary that produces profiling information to be - processed by `gprof' each time it is executed. + processed by 'gprof' each time it is executed. -`--enable-static-link' - This causes Bash to be linked statically, if `gcc' is being used. +'--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 + 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'. +be enabled using 'enable-FEATURE'. - All of the following options except for `disabled-builtins', -`directpand-default', and `xpg-echo-default' are enabled by default, + All of the following options except for 'disabled-builtins', +'direxpand-default', and 'xpg-echo-default' are enabled by default, unless the operating system does not provide the necessary support. -`--enable-alias' - Allow alias expansion and include the `alias' and `unalias' +'--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 +'--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' +'--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 +'--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' ). +'--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' +'--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' +'--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' +'--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 +'--enable-cond-command' + Include support for the '[[' conditional command. (*note Conditional Constructs::). -`--enable-cond-regexp' +'--enable-cond-regexp' Include support for matching POSIX regular expressions using the - `=~' binary operator in the `[[' conditional command. (*note + '=~' binary operator in the '[[' conditional command. (*note Conditional Constructs::). -`--enable-coprocesses' - Include support for coprocesses and the `coproc' reserved word +'--enable-coprocesses' + Include support for coprocesses and the 'coproc' reserved word (*note Pipelines::). -`--enable-debugger' +'--enable-debugger' Include support for the bash debugger (distributed separately). -`--enable-direxpand-default' - Cause the `direxpand' shell option (*note The Shopt Builtin::) to +'--enable-direxpand-default' + Cause the 'direxpand' shell option (*note 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 (*note The Directory Stack::). +'--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 +'--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 +'--enable-dparen-arithmetic' + Include support for the '((...))' command (*note Conditional Constructs::). -`--enable-extended-glob' +'--enable-extended-glob' Include support for the extended pattern matching features described above under *note Pattern Matching::. -`--enable-extended-glob-default' +'--enable-extended-glob-default' Set the default value of the EXTGLOB shell option described above under *note The Shopt Builtin:: to be enabled. -`--enable-glob-asciirange-default' - Set the default value of the GLOBASCIIRANGES shell option described - above under *note The Shopt Builtin:: to be enabled. This - controls the behavior of character ranges when used in pattern - matching bracket expressions. +'--enable-function-import' + Include support for importing function definitions exported by + another instance of the shell from the environment. This option is + enabled by default. -`--enable-help-builtin' - Include the `help' builtin, which displays help on shell builtins +'--enable-glob-asciirange-default' + Set the default value of the GLOBASCIIRANGES shell option described + above under *note The Shopt Builtin:: to be enabled. This controls + the behavior of character ranges when used in pattern matching + bracket expressions. + +'--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-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-job-control' + This enables the job control features (*note Job Control::), if the + operating system supports them. -`--enable-multibyte' +'--enable-multibyte' This enables support for multibyte characters if the operating system provides the necessary support. -`--enable-net-redirections' +'--enable-net-redirections' This enables the special handling of filenames of the form - `/dev/tcp/HOST/PORT' and `/dev/udp/HOST/PORT' when used in + '/dev/tcp/HOST/PORT' and '/dev/udp/HOST/PORT' when used in redirections (*note Redirections::). -`--enable-process-substitution' +'--enable-process-substitution' This enables process substitution (*note Process Substitution::) if the operating system provides the necessary support. -`--enable-progcomp' +'--enable-progcomp' Enable the programmable completion facilities (*note Programmable Completion::). If Readline is not enabled, this option has no effect. -`--enable-prompt-string-decoding' +'--enable-prompt-string-decoding' Turn on the interpretation of a number of backslash-escaped - characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt + characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt strings. See *note Controlling the Prompt::, for a complete list of prompt string escape sequences. -`--enable-readline' +'--enable-readline' Include support for command-line editing and history with the Bash version of the Readline library (*note Command Line Editing::). -`--enable-restricted' +'--enable-restricted' Include support for a "restricted shell". If this is enabled, - Bash, when called as `rbash', enters a restricted mode. See *note + 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' compound command, which allows the generation +'--enable-select' + Include the 'select' compound command, which allows the generation of simple menus (*note Conditional Constructs::). -`--enable-separate-helpfiles' - Use external files for the documentation displayed by the `help' +'--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 +'--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. + different languages. You may need to disable this if your compiler + cannot handle very long string literals. -`--enable-strict-posix-default' +'--enable-strict-posix-default' Make Bash POSIX-conformant by default (*note Bash POSIX Mode::). -`--enable-usg-echo-default' - A synonym for `--enable-xpg-echo-default'. +'--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. +'--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. + 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: bashref.info, Node: Reporting Bugs, Next: Major Differences From The Bourne Shell, Prev: Installing Bash, Up: Top @@ -9646,27 +9737,23 @@ 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 +'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'. +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 + * 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 +'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 . @@ -9683,29 +9770,29 @@ 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' +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::). + 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. + the 'bind' builtin. * Bash provides a programmable word completion mechanism (*note - Programmable Completion::), and builtin commands `complete', - `compgen', and `compopt', to manipulate it. + 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 + '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. + 'HISTTIMEFORMAT' variable to display it. - * Bash implements `csh'-like history expansion (*note History + * Bash implements 'csh'-like history expansion (*note History Interaction::). * Bash has one-dimensional array variables (*note Arrays::), and the @@ -9713,133 +9800,133 @@ the baseline reference. 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::). + * 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 + * 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 + * 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 + * Bash has the 'time' reserved word and command timing (*note Pipelines::). The display of the timing statistics may be - controlled with the `TIMEFORMAT' variable. + controlled with the 'TIMEFORMAT' variable. - * Bash implements the `for (( EXPR1 ; EXPR2 ; EXPR3 ))' arithmetic + * 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 + * 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 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 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' + * Bash implements command aliases and the 'alias' and 'unalias' builtins (*note Aliases::). - * Bash provides shell arithmetic, the `((' compound command (*note + * 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. + using the 'export' command. - * Bash supports the `+=' assignment operator, which appends to the + * 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 `##' + * 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 + * 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, + * 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 + * 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 + * The expansion '${!PREFIX*}' expansion, which expands to the names of all shell variables whose names begin with PREFIX, is available (*note Shell Parameter Expansion::). - * Bash has INDIRECT variable expansion using `${!word}' (*note Shell + * Bash has INDIRECT variable expansion using '${!word}' (*note Shell Parameter Expansion::). - * Bash can expand positional parameters beyond `$9' using `${NUM}'. + * 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 ```' + * 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. + * 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. + * 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. - * The filename expansion bracket expression code uses `!' and `^' to + * The filename expansion bracket expression code uses '!' and '^' to negate the set of characters between the brackets. The Bourne - shell uses only `!'. + shell uses only '!'. * 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::). + '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. + 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 + '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 + 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 + * 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 + * 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 + * 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 @@ -9848,127 +9935,126 @@ the baseline reference. * 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 '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 + * 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 + function via the 'builtin' and 'command' builtins (*note Bash Builtins::). - * The `command' builtin allows selective disabling of functions when + * 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' + * Individual builtins may be enabled or disabled using the 'enable' builtin (*note Bash Builtins::). - * The Bash `exec' builtin takes additional options that allow users + * 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::). + 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 + * 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 + 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 + * 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 + searching the '$PATH', using 'hash -p' (*note Bourne Shell Builtins::). - * Bash includes a `help' builtin for quick reference to shell + * Bash includes a 'help' builtin for quick reference to shell facilities (*note Bash Builtins::). - * The `printf' builtin is available to display formatted output + * 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 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 + * 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 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' + * Bash has much more optional behavior controllable with the 'set' builtin (*note The Set Builtin::). - * The `-x' (`xtrace') option displays commands other than simple + * 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 + * 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 + * Bash includes the 'caller' builtin, which displays the context of any active subroutine call (a shell function or a script executed - with the `.' or `source' builtins). This supports the bash + with the '.' or 'source' builtins). This supports the bash debugger. - * The `trap' builtin (*note Bourne Shell Builtins::) allows a - `DEBUG' 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 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 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 + 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. + 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 + * 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::). + * 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 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 Controlling the Prompt::). @@ -9976,23 +10062,22 @@ the baseline reference. * 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 + * 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'. + '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. + * 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 have the 'stop' or 'newgrp' builtins. - * Bash does not use the `SHACCT' variable or perform shell + * Bash does not use the 'SHACCT' variable or perform shell accounting. - * The SVR4.2 `sh' uses a `TIMEOUT' variable like Bash uses `TMOUT'. - + * The SVR4.2 'sh' uses a 'TIMEOUT' variable like Bash uses 'TMOUT'. More features unique to Bash may be found in *note Bash Features::. @@ -10003,40 +10088,40 @@ 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. + 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 + 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. + 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 + 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 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 does not allow the 'IFS', 'MAILCHECK', 'PATH', + 'PS1', or 'PS2' variables to be unset. - * The SVR4.2 shell treats `^' as the undocumented equivalent of `|'. + * 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 `-'. + * 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 + * The SVR4.2 shell behaves differently when invoked as 'jsh' (it turns on job control).  @@ -10048,7 +10133,7 @@ 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. @@ -10073,21 +10158,21 @@ Appendix C GNU Free Documentation License 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 + 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 + 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. + 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 @@ -10105,12 +10190,12 @@ Appendix C GNU Free Documentation License 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. + 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 @@ -10121,27 +10206,27 @@ Appendix C GNU Free Documentation License 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". + 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. + 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 @@ -10179,8 +10264,8 @@ Appendix C GNU Free Documentation License 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. + 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. @@ -10194,12 +10279,11 @@ Appendix C GNU Free Documentation License 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. + 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 @@ -10207,40 +10291,39 @@ Appendix C GNU Free Documentation License 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. + 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. + 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: + 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. + 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 @@ -10270,31 +10353,30 @@ Appendix C GNU Free Documentation 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. + 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. + 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 + 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. + 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. @@ -10307,11 +10389,11 @@ Appendix C GNU Free Documentation License 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. + 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 @@ -10320,15 +10402,15 @@ Appendix C GNU Free Documentation License 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. + 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 @@ -10338,8 +10420,8 @@ Appendix C GNU Free Documentation License 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, + 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. @@ -10366,20 +10448,20 @@ Appendix C GNU Free Documentation License 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. + 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. + 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 + 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 @@ -10424,8 +10506,8 @@ Appendix C GNU Free Documentation 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 + 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. @@ -10437,33 +10519,33 @@ Appendix C GNU Free Documentation License 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. + 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 + 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 + 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 + 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also @@ -10493,7 +10575,6 @@ Appendix C GNU Free Documentation License 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 ==================================================== @@ -10510,7 +10591,7 @@ notices just after the title page: Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover -Texts, replace the "with...Texts." line with this: +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 @@ -10521,9 +10602,9 @@ 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. +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: bashref.info, Node: Indexes, Prev: GNU Free Documentation License, Up: Top @@ -10555,94 +10636,94 @@ D.1 Index of Shell Builtin Commands * :: Bourne Shell Builtins. (line 11) * [: Bourne Shell Builtins. - (line 258) + (line 268) * alias: Bash Builtins. (line 11) * bg: Job Control Builtins. (line 7) * bind: Bash Builtins. (line 21) * break: Bourne Shell Builtins. - (line 31) + (line 36) * builtin: Bash Builtins. (line 102) * caller: Bash Builtins. (line 111) * cd: Bourne Shell Builtins. - (line 39) -* command: Bash Builtins. (line 129) + (line 44) +* command: Bash Builtins. (line 128) * compgen: Programmable Completion Builtins. (line 12) * complete: Programmable Completion Builtins. (line 30) * compopt: Programmable Completion Builtins. - (line 228) + (line 229) * continue: Bourne Shell Builtins. - (line 80) -* declare: Bash Builtins. (line 149) + (line 85) +* declare: Bash Builtins. (line 148) * dirs: Directory Stack Builtins. (line 7) * disown: Job Control Builtins. (line 89) * echo: Bash Builtins. (line 245) -* enable: Bash Builtins. (line 307) +* enable: Bash Builtins. (line 294) * eval: Bourne Shell Builtins. - (line 89) + (line 94) * exec: Bourne Shell Builtins. - (line 97) + (line 102) * exit: Bourne Shell Builtins. - (line 114) + (line 119) * export: Bourne Shell Builtins. - (line 121) + (line 126) * fc: Bash History Builtins. (line 10) * fg: Job Control Builtins. (line 17) * getopts: Bourne Shell Builtins. - (line 137) + (line 142) * hash: Bourne Shell Builtins. - (line 180) -* help: Bash Builtins. (line 336) + (line 185) +* help: Bash Builtins. (line 323) * history: Bash History Builtins. (line 40) * jobs: Job Control Builtins. (line 27) * kill: Job Control Builtins. - (line 59) -* let: Bash Builtins. (line 357) -* local: Bash Builtins. (line 365) -* logout: Bash Builtins. (line 376) -* mapfile: Bash Builtins. (line 381) + (line 58) +* let: Bash Builtins. (line 342) +* local: Bash Builtins. (line 350) +* logout: Bash Builtins. (line 364) +* mapfile: Bash Builtins. (line 369) * popd: Directory Stack Builtins. - (line 39) -* printf: Bash Builtins. (line 429) + (line 35) +* printf: Bash Builtins. (line 414) * pushd: Directory Stack Builtins. - (line 61) + (line 53) * pwd: Bourne Shell Builtins. - (line 200) -* read: Bash Builtins. (line 477) -* readarray: Bash Builtins. (line 564) + (line 205) +* read: Bash Builtins. (line 458) +* readarray: Bash Builtins. (line 550) * readonly: Bourne Shell Builtins. - (line 210) + (line 215) * return: Bourne Shell Builtins. - (line 229) + (line 234) * set: The Set Builtin. (line 11) * shift: Bourne Shell Builtins. - (line 245) + (line 255) * shopt: The Shopt Builtin. (line 9) -* source: Bash Builtins. (line 573) +* source: Bash Builtins. (line 559) * suspend: Job Control Builtins. (line 101) * test: Bourne Shell Builtins. - (line 258) + (line 268) * times: Bourne Shell Builtins. - (line 334) + (line 343) * trap: Bourne Shell Builtins. - (line 340) -* type: Bash Builtins. (line 578) -* typeset: Bash Builtins. (line 610) -* ulimit: Bash Builtins. (line 616) + (line 349) +* type: Bash Builtins. (line 564) +* typeset: Bash Builtins. (line 596) +* ulimit: Bash Builtins. (line 602) * umask: Bourne Shell Builtins. - (line 389) -* unalias: Bash Builtins. (line 707) + (line 398) +* unalias: Bash Builtins. (line 701) * unset: Bourne Shell Builtins. - (line 407) + (line 416) * wait: Job Control Builtins. (line 76) @@ -10657,9 +10738,11 @@ D.2 Index of Shell Reserved Words * !: Pipelines. (line 9) * [[: Conditional Constructs. - (line 119) + (line 121) * ]]: Conditional Constructs. - (line 119) + (line 121) +* {: Command Grouping. (line 21) +* }: Command Grouping. (line 21) * case: Conditional Constructs. (line 28) * do: Looping Constructs. (line 12) @@ -10679,14 +10762,12 @@ D.2 Index of Shell Reserved Words * in: Conditional Constructs. (line 28) * select: Conditional Constructs. - (line 78) + (line 79) * then: Conditional Constructs. (line 7) * time: Pipelines. (line 9) * until: Looping Constructs. (line 12) * while: Looping Constructs. (line 22) -* {: Command Grouping. (line 21) -* }: Command Grouping. (line 21)  File: bashref.info, Node: Variable Index, Next: Function Index, Prev: Reserved Word Index, Up: Indexes @@ -10718,180 +10799,198 @@ D.3 Parameter and Variable Index * 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_COMPAT: Bash Variables. (line 69) -* BASH_ENV: Bash Variables. (line 84) -* BASH_EXECUTION_STRING: Bash Variables. (line 90) -* BASH_LINENO: Bash Variables. (line 93) -* BASH_REMATCH: Bash Variables. (line 101) -* BASH_SOURCE: Bash Variables. (line 109) -* BASH_SUBSHELL: Bash Variables. (line 116) -* BASH_VERSINFO: Bash Variables. (line 121) -* BASH_VERSION: Bash Variables. (line 144) -* BASH_XTRACEFD: Bash Variables. (line 147) * BASHOPTS: Bash Variables. (line 16) * BASHPID: Bash Variables. (line 25) +* BASH_ALIASES: Bash Variables. (line 30) +* BASH_ARGC: Bash Variables. (line 39) +* BASH_ARGV: Bash Variables. (line 49) +* BASH_CMDS: Bash Variables. (line 59) +* BASH_COMMAND: Bash Variables. (line 68) +* BASH_COMPAT: Bash Variables. (line 73) +* BASH_ENV: Bash Variables. (line 88) +* BASH_EXECUTION_STRING: Bash Variables. (line 94) +* BASH_LINENO: Bash Variables. (line 97) +* BASH_LOADABLES_PATH: Bash Variables. (line 105) +* BASH_REMATCH: Bash Variables. (line 109) +* BASH_SOURCE: Bash Variables. (line 117) +* BASH_SUBSHELL: Bash Variables. (line 124) +* BASH_VERSINFO: Bash Variables. (line 129) +* BASH_VERSION: Bash Variables. (line 152) +* BASH_XTRACEFD: Bash Variables. (line 155) * bell-style: Readline Init File Syntax. (line 38) * bind-tty-special-chars: Readline Init File Syntax. (line 45) +* blink-matching-paren: Readline Init File Syntax. + (line 50) * CDPATH: Bourne Shell Variables. (line 9) -* CHILD_MAX: Bash Variables. (line 158) +* CHILD_MAX: Bash Variables. (line 166) +* colored-completion-prefix: Readline Init File Syntax. + (line 55) * colored-stats: Readline Init File Syntax. - (line 50) -* COLUMNS: Bash Variables. (line 165) + (line 62) +* COLUMNS: Bash Variables. (line 173) * comment-begin: Readline Init File Syntax. - (line 56) -* COMP_CWORD: Bash Variables. (line 171) -* COMP_KEY: Bash Variables. (line 200) -* COMP_LINE: Bash Variables. (line 177) -* COMP_POINT: Bash Variables. (line 182) -* COMP_TYPE: Bash Variables. (line 190) -* COMP_WORDBREAKS: Bash Variables. (line 204) -* COMP_WORDS: Bash Variables. (line 210) -* completion-display-width: Readline Init File Syntax. - (line 61) -* completion-ignore-case: Readline Init File Syntax. (line 68) -* completion-map-case: Readline Init File Syntax. +* completion-display-width: Readline Init File Syntax. (line 73) +* completion-ignore-case: Readline Init File Syntax. + (line 80) +* completion-map-case: Readline Init File Syntax. + (line 85) * completion-prefix-display-length: Readline Init File Syntax. - (line 79) + (line 91) * completion-query-items: Readline Init File Syntax. - (line 86) -* COMPREPLY: Bash Variables. (line 218) + (line 98) +* COMPREPLY: Bash Variables. (line 225) +* COMP_CWORD: Bash Variables. (line 179) +* COMP_KEY: Bash Variables. (line 208) +* COMP_LINE: Bash Variables. (line 185) +* COMP_POINT: Bash Variables. (line 190) +* COMP_TYPE: Bash Variables. (line 198) +* COMP_WORDBREAKS: Bash Variables. (line 212) +* COMP_WORDS: Bash Variables. (line 218) * convert-meta: Readline Init File Syntax. - (line 96) -* COPROC: Bash Variables. (line 224) -* DIRSTACK: Bash Variables. (line 228) + (line 108) +* COPROC: Bash Variables. (line 231) +* DIRSTACK: Bash Variables. (line 235) * disable-completion: Readline Init File Syntax. - (line 102) + (line 116) +* echo-control-characters: Readline Init File Syntax. + (line 121) * editing-mode: Readline Init File Syntax. - (line 107) -* EMACS: Bash Variables. (line 238) + (line 126) +* EMACS: Bash Variables. (line 245) +* emacs-mode-string: Readline Init File Syntax. + (line 132) +* enable-bracketed-paste: Readline Init File Syntax. + (line 142) * enable-keypad: Readline Init File Syntax. - (line 118) -* ENV: Bash Variables. (line 243) -* EUID: Bash Variables. (line 247) + (line 150) +* ENV: Bash Variables. (line 250) +* EUID: Bash Variables. (line 254) +* EXECIGNORE: Bash Variables. (line 258) * expand-tilde: Readline Init File Syntax. - (line 129) -* FCEDIT: Bash Variables. (line 251) -* FIGNORE: Bash Variables. (line 255) -* FUNCNAME: Bash Variables. (line 261) -* FUNCNEST: Bash Variables. (line 279) -* GLOBIGNORE: Bash Variables. (line 284) -* GROUPS: Bash Variables. (line 290) -* histchars: Bash Variables. (line 296) -* HISTCMD: Bash Variables. (line 311) -* HISTCONTROL: Bash Variables. (line 316) -* HISTFILE: Bash Variables. (line 332) -* HISTFILESIZE: Bash Variables. (line 336) -* HISTIGNORE: Bash Variables. (line 347) + (line 161) +* FCEDIT: Bash Variables. (line 271) +* FIGNORE: Bash Variables. (line 275) +* FUNCNAME: Bash Variables. (line 281) +* FUNCNEST: Bash Variables. (line 298) +* GLOBIGNORE: Bash Variables. (line 303) +* GROUPS: Bash Variables. (line 310) +* histchars: Bash Variables. (line 316) +* HISTCMD: Bash Variables. (line 331) +* HISTCONTROL: Bash Variables. (line 336) +* HISTFILE: Bash Variables. (line 352) +* HISTFILESIZE: Bash Variables. (line 356) +* HISTIGNORE: Bash Variables. (line 367) * history-preserve-point: Readline Init File Syntax. - (line 133) + (line 165) * history-size: Readline Init File Syntax. - (line 139) -* HISTSIZE: Bash Variables. (line 366) -* HISTTIMEFORMAT: Bash Variables. (line 373) + (line 171) +* HISTSIZE: Bash Variables. (line 387) +* HISTTIMEFORMAT: Bash Variables. (line 394) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. - (line 146) -* HOSTFILE: Bash Variables. (line 382) -* HOSTNAME: Bash Variables. (line 393) -* HOSTTYPE: Bash Variables. (line 396) + (line 180) +* HOSTFILE: Bash Variables. (line 402) +* HOSTNAME: Bash Variables. (line 413) +* HOSTTYPE: Bash Variables. (line 416) * IFS: Bourne Shell Variables. (line 18) -* IGNOREEOF: Bash Variables. (line 399) +* IGNOREEOF: Bash Variables. (line 419) * input-meta: Readline Init File Syntax. - (line 153) -* INPUTRC: Bash Variables. (line 409) + (line 187) +* INPUTRC: Bash Variables. (line 429) * isearch-terminators: Readline Init File Syntax. - (line 160) + (line 195) * keymap: Readline Init File Syntax. - (line 167) -* LANG: Bash Variables. (line 413) -* LC_ALL: Bash Variables. (line 417) -* LC_COLLATE: Bash Variables. (line 421) -* LC_CTYPE: Bash Variables. (line 428) -* LC_MESSAGES <1>: Locale Translation. (line 11) -* LC_MESSAGES: Bash Variables. (line 433) -* LC_NUMERIC: Bash Variables. (line 437) -* LINENO: Bash Variables. (line 441) -* LINES: Bash Variables. (line 445) -* MACHTYPE: Bash Variables. (line 451) + (line 202) +* LANG: Bash Variables. (line 433) +* LC_ALL: Bash Variables. (line 437) +* LC_COLLATE: Bash Variables. (line 441) +* LC_CTYPE: Bash Variables. (line 448) +* LC_MESSAGES: Locale Translation. (line 11) +* LC_MESSAGES <1>: Bash Variables. (line 453) +* LC_NUMERIC: Bash Variables. (line 457) +* LC_TIME: Bash Variables. (line 461) +* LINENO: Bash Variables. (line 465) +* LINES: Bash Variables. (line 469) +* MACHTYPE: Bash Variables. (line 475) * MAIL: Bourne Shell Variables. (line 22) -* MAILCHECK: Bash Variables. (line 455) +* MAILCHECK: Bash Variables. (line 479) * MAILPATH: Bourne Shell Variables. (line 27) -* MAPFILE: Bash Variables. (line 463) +* MAPFILE: Bash Variables. (line 487) * mark-modified-lines: Readline Init File Syntax. - (line 196) + (line 232) * mark-symlinked-directories: Readline Init File Syntax. - (line 201) + (line 237) * match-hidden-files: Readline Init File Syntax. - (line 206) + (line 242) * menu-complete-display-prefix: Readline Init File Syntax. - (line 213) + (line 249) * meta-flag: Readline Init File Syntax. - (line 153) -* OLDPWD: Bash Variables. (line 467) + (line 187) +* OLDPWD: Bash Variables. (line 491) * OPTARG: Bourne Shell Variables. (line 34) -* OPTERR: Bash Variables. (line 470) +* OPTERR: Bash Variables. (line 494) * OPTIND: Bourne Shell Variables. (line 38) -* OSTYPE: Bash Variables. (line 474) +* OSTYPE: Bash Variables. (line 498) * output-meta: Readline Init File Syntax. - (line 218) + (line 254) * page-completions: Readline Init File Syntax. - (line 223) + (line 260) * PATH: Bourne Shell Variables. (line 42) -* PIPESTATUS: Bash Variables. (line 477) -* POSIXLY_CORRECT: Bash Variables. (line 482) -* PPID: Bash Variables. (line 491) -* PROMPT_COMMAND: Bash Variables. (line 495) -* PROMPT_DIRTRIM: Bash Variables. (line 499) +* PIPESTATUS: Bash Variables. (line 501) +* POSIXLY_CORRECT: Bash Variables. (line 506) +* PPID: Bash Variables. (line 515) +* PROMPT_COMMAND: Bash Variables. (line 519) +* PROMPT_DIRTRIM: Bash Variables. (line 523) +* PS0: Bash Variables. (line 529) * PS1: Bourne Shell Variables. (line 48) * PS2: Bourne Shell Variables. (line 53) -* PS3: Bash Variables. (line 505) -* PS4: Bash Variables. (line 510) -* PWD: Bash Variables. (line 516) -* RANDOM: Bash Variables. (line 519) -* READLINE_LINE: Bash Variables. (line 524) -* READLINE_POINT: Bash Variables. (line 528) -* REPLY: Bash Variables. (line 532) +* PS3: Bash Variables. (line 534) +* PS4: Bash Variables. (line 539) +* PWD: Bash Variables. (line 545) +* RANDOM: Bash Variables. (line 548) +* READLINE_LINE: Bash Variables. (line 553) +* READLINE_POINT: Bash Variables. (line 557) +* REPLY: Bash Variables. (line 561) * revert-all-at-newline: Readline Init File Syntax. - (line 233) -* SECONDS: Bash Variables. (line 535) -* SHELL: Bash Variables. (line 541) -* SHELLOPTS: Bash Variables. (line 546) -* SHLVL: Bash Variables. (line 555) + (line 270) +* SECONDS: Bash Variables. (line 564) +* SHELL: Bash Variables. (line 570) +* SHELLOPTS: Bash Variables. (line 575) +* SHLVL: Bash Variables. (line 584) * show-all-if-ambiguous: Readline Init File Syntax. - (line 239) + (line 276) * show-all-if-unmodified: Readline Init File Syntax. - (line 245) + (line 282) * show-mode-in-prompt: Readline Init File Syntax. - (line 254) + (line 291) * skip-completed-text: Readline Init File Syntax. - (line 259) + (line 297) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 560) -* TMOUT: Bash Variables. (line 598) -* TMPDIR: Bash Variables. (line 610) -* UID: Bash Variables. (line 614) +* TIMEFORMAT: Bash Variables. (line 589) +* TMOUT: Bash Variables. (line 627) +* TMPDIR: Bash Variables. (line 639) +* UID: Bash Variables. (line 643) +* vi-cmd-mode-string: Readline Init File Syntax. + (line 310) +* vi-ins-mode-string: Readline Init File Syntax. + (line 320) * visible-stats: Readline Init File Syntax. - (line 272) + (line 330)  File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes @@ -10903,105 +11002,192 @@ D.4 Function 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 17) -* 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 52) + (line 10) +* accept-line (Newline or Return): Commands For History. + (line 6) +* alias-expand-line (): Miscellaneous Commands. + (line 124) +* backward-char (C-b): Commands For Moving. (line 15) +* backward-delete-char (Rubout): Commands For Text. (line 17) +* backward-kill-line (C-x Rubout): Commands For Killing. + (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) +* bracketed-paste-begin (): Commands For Text. (line 33) +* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) +* capitalize-word (M-c): Commands For Text. (line 61) * character-search (C-]): Miscellaneous Commands. - (line 41) + (line 41) * character-search-backward (M-C-]): Miscellaneous Commands. - (line 46) -* clear-screen (C-l): Commands For Moving. (line 34) + (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 12) + (line 6) +* complete-command (M-!): Commands For Completion. + (line 80) +* complete-filename (M-/): Commands For Completion. + (line 49) +* complete-hostname (M-@): Commands For Completion. + (line 72) +* complete-into-braces (M-{): Commands For Completion. + (line 100) +* complete-username (M-~): Commands For Completion. + (line 56) +* complete-variable (M-$): Commands For Completion. + (line 64) +* 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) +* dabbrev-expand (): Commands For Completion. + (line 95) +* delete-char (C-d): Commands For Text. (line 12) * delete-char-or-list (): Commands For Completion. - (line 43) -* delete-horizontal-space (): Commands For Killing. (line 46) -* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) + (line 43) +* delete-horizontal-space (): Commands For Killing. + (line 46) +* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) +* display-shell-version (C-x C-v): Miscellaneous Commands. + (line 109) * do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. - (line 14) -* downcase-word (M-l): Commands For Text. (line 48) + (line 14) +* downcase-word (M-l): Commands For Text. (line 57) * dump-functions (): Miscellaneous Commands. - (line 73) + (line 73) * dump-macros (): Miscellaneous Commands. - (line 85) + (line 85) * dump-variables (): Miscellaneous Commands. - (line 79) -* end-kbd-macro (C-x )): Keyboard Macros. (line 9) -* end-of-file (usually C-d): Commands For Text. (line 6) -* end-of-history (M->): Commands For History. (line 23) -* end-of-line (C-e): Commands For Moving. (line 9) + (line 79) +* dynamic-complete-history (M-): Commands For Completion. + (line 90) +* edit-and-execute-command (C-xC-e): Miscellaneous Commands. + (line 138) +* end-kbd-macro (C-x )): Keyboard Macros. (line 9) +* end-of-file (usually C-d): Commands For Text. (line 6) +* end-of-history (M->): Commands For History. + (line 23) +* end-of-line (C-e): Commands For Moving. (line 9) * exchange-point-and-mark (C-x C-x): Miscellaneous Commands. - (line 36) -* forward-backward-delete-char (): Commands For Text. (line 21) -* forward-char (C-f): Commands For Moving. (line 12) -* forward-search-history (C-s): Commands For History. (line 31) -* forward-word (M-f): Commands For Moving. (line 18) -* history-search-backward (): Commands For History. (line 52) -* history-search-forward (): Commands For History. (line 46) -* history-substr-search-backward (): Commands For History. (line 64) -* history-substr-search-forward (): Commands For History. (line 58) + (line 36) +* forward-backward-delete-char (): Commands For Text. (line 21) +* forward-char (C-f): Commands For Moving. (line 12) +* forward-search-history (C-s): Commands For History. + (line 31) +* forward-word (M-f): Commands For Moving. (line 18) +* glob-complete-word (M-g): Miscellaneous Commands. + (line 91) +* glob-expand-word (C-x *): Miscellaneous Commands. + (line 97) +* glob-list-expansions (C-x g): Miscellaneous Commands. + (line 103) +* history-and-alias-expand-line (): Miscellaneous Commands. + (line 127) +* history-expand-line (M-^): Miscellaneous Commands. + (line 117) +* history-search-backward (): Commands For History. + (line 53) +* history-search-forward (): Commands For History. + (line 47) +* history-substr-search-backward (): Commands For History. + (line 65) +* history-substr-search-forward (): Commands For History. + (line 59) * insert-comment (M-#): Miscellaneous Commands. - (line 60) + (line 60) * insert-completions (M-*): Commands For Completion. - (line 22) -* 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) + (line 22) +* insert-last-argument (M-. or M-_): Miscellaneous Commands. + (line 130) +* 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) +* magic-space (): Miscellaneous Commands. + (line 120) * menu-complete (): Commands For Completion. - (line 26) + (line 26) * menu-complete-backward (): Commands For Completion. - (line 38) -* next-history (C-n): Commands For History. (line 17) + (line 38) +* next-history (C-n): Commands For History. + (line 17) * non-incremental-forward-search-history (M-n): Commands For History. - (line 41) + (line 41) * non-incremental-reverse-search-history (M-p): Commands For History. - (line 36) -* overwrite-mode (): Commands For Text. (line 56) + (line 35) +* operate-and-get-next (C-o): Miscellaneous Commands. + (line 133) +* overwrite-mode (): Commands For Text. (line 65) +* possible-command-completions (C-x !): Commands For Completion. + (line 86) * possible-completions (M-?): Commands For Completion. - (line 15) + (line 15) +* possible-filename-completions (C-x /): Commands For Completion. + (line 52) +* possible-hostname-completions (C-x @): Commands For Completion. + (line 76) +* possible-username-completions (C-x ~): Commands For Completion. + (line 60) +* possible-variable-completions (C-x $): Commands For Completion. + (line 68) * prefix-meta (): Miscellaneous Commands. - (line 18) -* previous-history (C-p): Commands For History. (line 13) -* print-last-kbd-macro (): Keyboard Macros. (line 17) -* quoted-insert (C-q or C-v): Commands For Text. (line 26) + (line 18) +* previous-history (C-p): Commands For History. + (line 13) +* print-last-kbd-macro (): Keyboard Macros. (line 17) +* quoted-insert (C-q or C-v): Commands For Text. (line 26) * re-read-init-file (C-x C-r): Miscellaneous Commands. - (line 6) -* redraw-current-line (): Commands For Moving. (line 38) -* reverse-search-history (C-r): Commands For History. (line 27) + (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 30) + (line 25) +* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 30) * set-mark (C-@): Miscellaneous Commands. - (line 32) + (line 32) +* shell-backward-kill-word (): Commands For Killing. + (line 33) +* shell-backward-word (): Commands For Moving. (line 30) +* shell-expand-line (M-C-e): Miscellaneous Commands. + (line 112) +* shell-forward-word (): Commands For Moving. (line 26) +* shell-kill-word (): Commands For Killing. + (line 28) * skip-csi-sequence (): Miscellaneous Commands. - (line 51) -* start-kbd-macro (C-x (): Keyboard Macros. (line 6) -* transpose-chars (C-t): Commands For Text. (line 33) -* transpose-words (M-t): Commands For Text. (line 39) + (line 51) +* start-kbd-macro (C-x (): Keyboard Macros. (line 6) +* tilde-expand (M-&): Miscellaneous Commands. + (line 29) +* transpose-chars (C-t): Commands For Text. (line 42) +* transpose-words (M-t): Commands For Text. (line 48) * undo (C-_ or C-x C-u): Miscellaneous Commands. - (line 22) -* 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 44) -* yank (C-y): Commands For Killing. (line 68) -* yank-last-arg (M-. or M-_): Commands For History. (line 79) -* yank-nth-arg (M-C-y): Commands For History. (line 70) -* yank-pop (M-y): Commands For Killing. (line 71) + (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 53) +* yank (C-y): Commands For Killing. + (line 68) +* yank-last-arg (M-. or M-_): Commands For History. + (line 80) +* yank-nth-arg (M-C-y): Commands For History. + (line 71) +* yank-pop (M-y): Commands For Killing. + (line 71)  File: bashref.info, Node: Concept Index, Prev: Function Index, Up: Indexes @@ -11061,8 +11247,8 @@ D.5 Concept Index * 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) +* exit status <1>: Exit Status. (line 6) * expansion: Shell Expansions. (line 6) * expansion, arithmetic: Arithmetic Expansion. (line 6) @@ -11093,18 +11279,18 @@ D.5 Concept Index * installation: Basic Installation. (line 6) * interaction, readline: Readline Interaction. (line 6) +* interactive shell: Invoking Bash. (line 128) * interactive shell <1>: Interactive Shells. (line 6) -* interactive shell: Invoking Bash. (line 125) * internationalization: Locale Translation. (line 6) * job: Definitions. (line 38) -* job control <1>: Job Control Basics. (line 6) * job control: Definitions. (line 42) +* job control <1>: Job Control Basics. (line 6) * kill ring: Readline Killing Commands. - (line 19) + (line 18) * killing text: Readline Killing Commands. (line 6) * localization: Locale Translation. (line 6) -* login shell: Invoking Bash. (line 122) +* login shell: Invoking Bash. (line 125) * matching, pattern: Pattern Matching. (line 6) * metacharacter: Definitions. (line 46) * name: Definitions. (line 51) @@ -11134,7 +11320,7 @@ D.5 Concept Index * quoting: Quoting. (line 6) * quoting, ANSI: ANSI-C Quoting. (line 6) * Readline, how to use: Job Control Variables. - (line 24) + (line 23) * redirection: Redirections. (line 6) * reserved word: Definitions. (line 70) * restricted shell: The Restricted Shell. @@ -11147,8 +11333,8 @@ D.5 Concept Index * 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) +* special builtin <1>: Special Builtins. (line 6) * startup files: Bash Startup Files. (line 6) * suspending jobs: Job Control Basics. (line 6) * tilde expansion: Tilde Expansion. (line 6) @@ -11165,134 +11351,134 @@ D.5 Concept Index  Tag Table: -Node: Top930 -Node: Introduction2848 -Node: What is Bash?3076 -Node: What is a shell?4189 -Node: Definitions6728 -Node: Basic Shell Features9646 -Node: Shell Syntax10865 -Node: Shell Operation11895 -Node: Quoting13189 -Node: Escape Character14492 -Node: Single Quotes14977 -Node: Double Quotes15325 -Node: ANSI-C Quoting16450 -Node: Locale Translation17694 -Node: Comments18590 -Node: Shell Commands19208 -Node: Simple Commands20080 -Node: Pipelines20711 -Node: Lists23449 -Node: Compound Commands25178 -Node: Looping Constructs26184 -Node: Conditional Constructs28647 -Node: Command Grouping39577 -Node: Coprocesses41056 -Node: GNU Parallel42889 -Node: Shell Functions46875 -Node: Shell Parameters51959 -Node: Positional Parameters56088 -Node: Special Parameters56988 -Node: Shell Expansions60327 -Node: Brace Expansion62270 -Node: Tilde Expansion65051 -Node: Shell Parameter Expansion67400 -Node: Command Substitution79694 -Node: Arithmetic Expansion81027 -Node: Process Substitution81959 -Node: Word Splitting83009 -Node: Filename Expansion84657 -Node: Pattern Matching86822 -Node: Quote Removal90522 -Node: Redirections90817 -Node: Executing Commands99981 -Node: Simple Command Expansion100651 -Node: Command Search and Execution102581 -Node: Command Execution Environment104918 -Node: Environment107904 -Node: Exit Status109563 -Node: Signals111185 -Node: Shell Scripts113153 -Node: Shell Builtin Commands115671 -Node: Bourne Shell Builtins117699 -Node: Bash Builtins137606 -Node: Modifying Shell Behavior165232 -Node: The Set Builtin165577 -Node: The Shopt Builtin175903 -Node: Special Builtins190324 -Node: Shell Variables191303 -Node: Bourne Shell Variables191743 -Node: Bash Variables193774 -Node: Bash Features220649 -Node: Invoking Bash221548 -Node: Bash Startup Files227326 -Node: Interactive Shells232355 -Node: What is an Interactive Shell?232765 -Node: Is this Shell Interactive?233414 -Node: Interactive Shell Behavior234229 -Node: Bash Conditional Expressions237517 -Node: Shell Arithmetic241519 -Node: Aliases244295 -Node: Arrays246851 -Node: The Directory Stack251832 -Node: Directory Stack Builtins252551 -Node: Controlling the Prompt255507 -Node: The Restricted Shell258279 -Node: Bash POSIX Mode260116 -Node: Job Control269502 -Node: Job Control Basics269962 -Node: Job Control Builtins274681 -Node: Job Control Variables279152 -Node: Command Line Editing280310 -Node: Introduction and Notation281982 -Node: Readline Interaction283604 -Node: Readline Bare Essentials284795 -Node: Readline Movement Commands286584 -Node: Readline Killing Commands287549 -Node: Readline Arguments289469 -Node: Searching290513 -Node: Readline Init File292699 -Node: Readline Init File Syntax293846 -Node: Conditional Init Constructs310832 -Node: Sample Init File313365 -Node: Bindable Readline Commands316483 -Node: Commands For Moving317690 -Node: Commands For History318834 -Node: Commands For Text323019 -Node: Commands For Killing325948 -Node: Numeric Arguments328405 -Node: Commands For Completion329544 -Node: Keyboard Macros333736 -Node: Miscellaneous Commands334424 -Node: Readline vi Mode340230 -Node: Programmable Completion341137 -Node: Programmable Completion Builtins348413 -Node: A Programmable Completion Example358159 -Node: Using History Interactively363409 -Node: Bash History Facilities364093 -Node: Bash History Builtins367092 -Node: History Interaction371020 -Node: Event Designators373725 -Node: Word Designators374947 -Node: Modifiers376586 -Node: Installing Bash377990 -Node: Basic Installation379127 -Node: Compilers and Options381819 -Node: Compiling For Multiple Architectures382560 -Node: Installation Names384224 -Node: Specifying the System Type385042 -Node: Sharing Defaults385758 -Node: Operation Controls386431 -Node: Optional Features387389 -Node: Reporting Bugs397453 -Node: Major Differences From The Bourne Shell398651 -Node: GNU Free Documentation License415510 -Node: Indexes440706 -Node: Builtin Index441160 -Node: Reserved Word Index447987 -Node: Variable Index450435 -Node: Function Index464615 -Node: Concept Index471916 +Node: Top897 +Node: Introduction2817 +Node: What is Bash?3033 +Node: What is a shell?4147 +Node: Definitions6685 +Node: Basic Shell Features9636 +Node: Shell Syntax10855 +Node: Shell Operation11881 +Node: Quoting13174 +Node: Escape Character14474 +Node: Single Quotes14959 +Node: Double Quotes15307 +Node: ANSI-C Quoting16585 +Node: Locale Translation17838 +Node: Comments18734 +Node: Shell Commands19352 +Node: Simple Commands20224 +Node: Pipelines20855 +Node: Lists23598 +Node: Compound Commands25327 +Node: Looping Constructs26330 +Node: Conditional Constructs28793 +Node: Command Grouping39715 +Node: Coprocesses41194 +Node: GNU Parallel43026 +Node: Shell Functions46999 +Node: Shell Parameters52205 +Node: Positional Parameters56618 +Node: Special Parameters57518 +Node: Shell Expansions60855 +Node: Brace Expansion62949 +Node: Tilde Expansion65730 +Node: Shell Parameter Expansion68078 +Node: Command Substitution82210 +Node: Arithmetic Expansion83565 +Node: Process Substitution84497 +Node: Word Splitting85617 +Node: Filename Expansion87561 +Node: Pattern Matching89845 +Node: Quote Removal93543 +Node: Redirections93838 +Node: Executing Commands103258 +Node: Simple Command Expansion103928 +Node: Command Search and Execution105858 +Node: Command Execution Environment108194 +Node: Environment111178 +Node: Exit Status112837 +Node: Signals114507 +Node: Shell Scripts116474 +Node: Shell Builtin Commands118989 +Node: Bourne Shell Builtins121023 +Node: Bash Builtins141623 +Node: Modifying Shell Behavior170268 +Node: The Set Builtin170613 +Node: The Shopt Builtin181026 +Node: Special Builtins196825 +Node: Shell Variables197804 +Node: Bourne Shell Variables198241 +Node: Bash Variables200272 +Node: Bash Features228652 +Node: Invoking Bash229551 +Node: Bash Startup Files235500 +Node: Interactive Shells240603 +Node: What is an Interactive Shell?241013 +Node: Is this Shell Interactive?241662 +Node: Interactive Shell Behavior242477 +Node: Bash Conditional Expressions245852 +Node: Shell Arithmetic250092 +Node: Aliases252909 +Node: Arrays255457 +Node: The Directory Stack260541 +Node: Directory Stack Builtins261325 +Node: Controlling the Prompt264293 +Node: The Restricted Shell267039 +Node: Bash POSIX Mode268864 +Node: Job Control279215 +Node: Job Control Basics279675 +Node: Job Control Builtins284394 +Node: Job Control Variables288924 +Node: Command Line Editing290080 +Node: Introduction and Notation291751 +Node: Readline Interaction293374 +Node: Readline Bare Essentials294565 +Node: Readline Movement Commands296348 +Node: Readline Killing Commands297308 +Node: Readline Arguments299226 +Node: Searching300270 +Node: Readline Init File302456 +Node: Readline Init File Syntax303603 +Node: Conditional Init Constructs323790 +Node: Sample Init File326315 +Node: Bindable Readline Commands329432 +Node: Commands For Moving330636 +Node: Commands For History331779 +Node: Commands For Text336068 +Node: Commands For Killing339457 +Node: Numeric Arguments341938 +Node: Commands For Completion343077 +Node: Keyboard Macros347268 +Node: Miscellaneous Commands347955 +Node: Readline vi Mode353759 +Node: Programmable Completion354666 +Node: Programmable Completion Builtins362127 +Node: A Programmable Completion Example372013 +Node: Using History Interactively377265 +Node: Bash History Facilities377949 +Node: Bash History Builtins380950 +Node: History Interaction384947 +Node: Event Designators387911 +Node: Word Designators389130 +Node: Modifiers390767 +Node: Installing Bash392169 +Node: Basic Installation393306 +Node: Compilers and Options395997 +Node: Compiling For Multiple Architectures396738 +Node: Installation Names398401 +Node: Specifying the System Type399219 +Node: Sharing Defaults399935 +Node: Operation Controls400608 +Node: Optional Features401566 +Node: Reporting Bugs411823 +Node: Major Differences From The Bourne Shell413017 +Node: GNU Free Documentation License429869 +Node: Indexes455046 +Node: Builtin Index455500 +Node: Reserved Word Index462327 +Node: Variable Index464775 +Node: Function Index480234 +Node: Concept Index493391  End Tag Table diff --git a/doc/bashref.pdf b/doc/bashref.pdf index 45284f780b8750840a583ceca8d02d8ee796e5e6..fff99af93ab5013e634901b45ed09ef2d2be4574 100644 GIT binary patch literal 734389 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

    g5{K=nEXkm(PjPXvf9Zx;$| zeTTBvF$73En*s>)&}HI&L6+KJ%-IikNwUlB!w3jer&#XpVTVqb9MHrkOn#;P!yY6d z>e%#%-PHOKJ`#ir*5kW;HyKbV^yaJe@@Hog)iET-P6Y7&nYi%jXE9O__F5j-J^B$A z`{-YlW6wK?qI+Lkc~r0`AqI_REp?$EBB_9)B05PEl9`>Z9KJL5W-^JnJJa8s{jWA3 z7Tel(Ei`HX=hI4RTVkY zOwt%f&yAC#fRyv}8fi;%io>r@Un#{%n}t*wPG2AhS~Rc0o7VV18NmpCO?6yx;<$du z7>j&z=c7~N=n*Tk;Cpvh)Ft=Zu6pUy!1^7zK(#<+lzuCL6@6lXenaQL^t!kKjk!_PPCJ5qzDfk)o{h`vvd+#o%1Ld~fnBnE%GCPE6|(Dckvd?aH?hREbTGK+#g!SLhy zNFJb>=E(H->2LIq`HP|)h$#a@cSD8;u%!5`3ee@{G{*FEQc0#IELg;b1F8M4h!<97 z^Z{KPNtwcP=lU6Vt`Gu;f5M9hr0azW{Us1Y1-#-E$UuGTs~K?ZAdpc7jfOeNt()kD z;i4Pp1ggzxgdNuw`H5K#nbjjIniEy3VOknH-nSsFxRDQ2OcH3ij+htgJH_P)k6H=% z`J*HZi~6vN)ggs}E#8pqsslKiD0hygCQYL3$R8d?y8FhiT`y0|IiBZCfzB(a6=A| zn4A1TCmYoZVrRe#4i!V!FGMhtC+1{d6-@F6jTMK^>25SN+-JT;h(lz!;qk`Uw=D0Y z!kr*`BJ4s%!Nx;Gb00*mXSB9Cu~-*_6F6lit=G{f@_Q6=X{Su}=>F*?Oi3~0?$Wi1 ztkm}7dcWaf$cZ|aTke#UmJ<=vPR7fyR9)uo+Ms0{w#<0^66tOuXMHzpta*HHJ@~vO zi~A~WJ)Csx9#5T&1~q)p`#Xtqy069q_o&iCKEvmRWKEl?bDFoB^_6IL%Uk!5x+?_n zxkdN43C|4%i~q%KKSlak6%_@ zrRO4~=il!&pDn!`pLfd7&gT;g2jARPkM^-F^vq=ytGX3`vgH<9EhXKfNt4N+F*`3t zb1@xiZNhBYN5@9C_3!M{-fj|$oBgjvx?dZs2hwJa^X7uEZ1;|Vb>>0M*I z$MNJiOz&3Ff+v4mJ2EBm77B>k=*`J5<#6yrMF{^nlR9TVT!&1%t6u zKgwOF2QhybzQ5!60FmNTQ^;EiC#WovoMy+%}$)FGnzYg z|7~{R(YWz(KOGJjeH2nt)qC#p)2D_YqQ|wi*q)ItzQ5GTJbpPT{4izY?g5;*bcTKO z1ybh&V$fhc+aDHvyRMjF|8=BVf&Atk;@noM1x@a zEsexr;n^d>&0|O2TmpWR%*Dlk6@APj#Kj&s2V2Tj#g*jp0t||Ywldf_XVFg7+~!tb z>9Dz8vi>tbGPquDn=8IncPPa1u#lpU%fNJ?oHM(@`GcEBRJSBXg zc+LS!+_29JiQBThZE2PiL)zNErX81E@P3@GZDUgXiLN1B}|?vyaIl%h`#p?o^=gj8X7s#nEfWwcE2@jFz97*RNV4fu7NK#mZ$BdwxcI%q88j7h z!sqZF{(9?o_+VD=>mW$v$IgK(a7c|WMh|{I1_%!1j#p@uKf_0bQ)uM8KR?bxOK@AK zbR#?S#ROBLFuwlW$@SWIGt<5~zV0Hi9&1=W2kx(W!gJ6wo|6NU2jBMlACKhW|1_LU&lk1;JE3&=Itixm=G+WaR3$9yt>NPZwa^GAEv zA*v(E@KtNV{OmlSyp1ZDYYs492;}FG580lybQJ4AZ)`i=@4v?xcDDc2Lg!%lAGgr2 zHKpPDssq(ZO8@hu#*-?4|@0Jle zVaV=g;@7GYF_lE#>*e>m7{&HV1RbHs_7It@mY&iOpwZZnfvAXe@FvsHsiffyf~tsh zy-`+HxNbxiQ5l*GI-OIA%v$)jHZw7_GM9Wp?)Zi~x$#xsb?+S2?QN{+`@MjSVsGic zYJMi|+^rEb^)zCtz22^J-LPY7GrihNIlngTSe2=Al_HeP4evKBQ9$gQ*3Cya#i)!1 z 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

    41dl$-(O2Q`TRT|>-nngpex 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 z

    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

    gbfX<{H>J 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 YVvThrnt42I`E2R!k05; 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%0Ay>bl4- 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

    JSVRi3FSIrSTI_=owMvMwh&gx@3D0NxvZ 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

    _&s86p}${Qkpr4nX=4~<%FSh_ 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ŊXp8L0g!t8#+))??c6r4i)BM{LX<< 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∋d-YidKCKCw*SEFwFSZ-}Cy5b8=qUG2ZIhAqM4_8z``(Jy-IL zA2PBlgPVJ2=Pc<(JL1@qThw`FT2%DvD7;Xm)5@b)md@N|>LK*T} zJ+?G(e^0FG?l>?2yhCOPs&ErMzkXO8Q8P(e7}mDEUwQ!=J<{kFs$#)X+iB?5j%03S zXn;M*_N}Y4-XAqZy?e#H6DJPtj+Nmo{e@fX!h&Jb8)#(*5?kbUFN!9(2mXn;$ZLW| z3#5&%>|&+0=@*-&_x$~ha)oB5wR!ojfW+L?2hy=B7O?mRxZG7OvGM* zKk+V#T!MjgWt$!@6V`7$pIto=%DgOoe!orC!@9awU5IxN(SeI?zy93mVTFh=Fp-9g_BYror%nnLblnR>`HJRDc%ByY_W%}jBnEiegl}e z+y9uEvHt(b%v?cLmVUn2D2QYPg-Q&Q7a2N>Ns6`O6B}Y|A+T+V1Up3pI=M-UL%`#a zNJIpMxI{X!6A*rxbN8P7{qDSHzjAY$eEHvecV0T`uDIpYc!m8$DK^1MBgGEh1%ZSX z`@c3fF9{6u!Mh^lvEl?DO zHt-;j0E3201d$engaix;2`l;nEuvWzFt39`fLcHUuq;qup!d7u++4;84j^!PXZPX+ z=pfh;NJvQs-l%cP&jE%A2n|pau%m_haqdwG4ZQOSv4TPlw*OLsq|pM0IHjPWIy*a| z0&werEMRnEv*6DohY16~7-(RQfP#ViV_}v7x%+>k$pH32un6PV_uzz^X=hQR0|6hv zyh%X*4IT<-D=J`sh1bEcsH_29at$i<4QTZN`tE`tX>Apd5- zLk|$(I%)vYEdHKF2k|fM*J*-+_Qbh41Qa-E^w0e!CtzTJ_}|?I`KNw?gu01({`xkG z7Us9|j|FgXLtz!g%gr*lp73LIL*B>1!VLkAgpiPmkcO0eg5AmsWHE|`RCF+zyud6zTW=z``2hF$jU2@jVHg&jsH1PQ5Nh3 z_C;}2L?75Mspa09-6;`Z5A>H z37gzMs$=|jVTqhMQh9VIP^sod%OxeZ$809{#*1F5sn-?d zcVw=p8`!kojnVNg_RhKb6rNyvEQTxCDj9^-9$%YSX zq%%cn*5%b%MzP1(1N*k*@Swka05PgqIqt$t6{Sb(&ygbRm#TT*m@9N*StREB*IMAl zRs~3#|K%sA^TSp%g88MY+||q=LSvBgDyA$q>BI+gljT7}w2DTMk^YfE3-UXSOvPPe zwZEmqkG04w;mqP^+G;-Vt7ZL%UCZJ|FJifnJGTTM`R~9@vW~#)8;DG^9`W+pU4^F> zp}<=F#VTJ!vn@KdyQlb+z|#15-=i8v{7N7728J3sV6^no_J{F4b<8~K(h7JVnjz)q zKd%A6wuj=tMTU!h#4vWX%Jxe8J4a?m4F$bmmDa~P1&F2CCTk)fjqdqdNeeF|IXcdW zE9u(_J@gbAD|GOWNox~yTP>)n=kpO#9@|^nn^(3NJK{Y%!W7hQwaK+mKOoS8uGZ;TxgWAe$J5k56{ zBMX9Ln$;;G@schiU5Se+8T2MkeQbSbzy?z$|8SI0wa$fPv5HlFKXD57=+zI&5g+17 zS|$uT5;Th{h<4w$&Q7V4e6nRQ)=V_%_^DPdzE?z_mI^1BYwTGi^|@ZHkW&>p3uUDI zKi(Am=Li10;uIViv*p55%q-pKN@I{dV%2mpsPvr;v+#^_-`psZ0E{R8qw6=!)Mumz zvlgF91bS!sIJ{Wr>J?QSTyKFmrFCO`=P7E#Q7l!ijuaG&FK)ov#O~S%ofH~N4d`gF zc_mbUYo$aR(n?p4Kt@!Pub5+^8&byv*~`R#KRyRZ(wb)LW|JgXs70nXN$j{-ogj)6 z)^vu{++I`2lQ0i}xR)w29}z#?A)`x2iF>t*4fkqoUOch;*N8|W&ooS}IdU7AKJ61| za)|IxKr0yMk=V|>-CQ>DEUyL%9`>~A85Q3~gLG-!*%t4omT%NuKzyGt{1c%gtt+$2 z4s>Zj?sh4{i>3yKdkRhG{ZfDvdiaEKvLuMj@UhB8Gd|v(ed~6~fZ(QC)fYeMEfoR01Vw&Acw%G4ny}dn z;$m&Zy+YFqd1I)%t0Sp+GO8*AzHvG)N;Sdi2yuUIyAUcia`V;ilJtY$WsSy?M~MY~(0)bkAtU6P)`5ASKnwJc z$4GFDFI4wLg8|o|^&GQ0Z`ej-BX#q3-!OYlOTO=S(i(BOz>llv0x&OdG48%t#8@adaGslh% zW(frBbT7SWEzN3w9=gZ@JQC*d?sD<{8!FXVLW33QFEG44)D;AiITDyG=I& z*O^Dc&->;Rl{+a8Rk&2q!ph_`_&k#uBgfAy8H6tXZN|XLi<6Qz?qgBSd8X;CVsH}?4h{@>#BcHkKBjb|n z8O$R?#lP>GUm2nXrTj>CG(WCFz8$eU0k6d{q}hjWx0~h+7%m8A;j=C-X?iLYH3;Gz z`%>nE`wdy%Rt^rivt2mPEiY{Q=uh@Brs> z>yw1d?jEc6zAN^Dqj9#s@hMh|w7u;*dO>)-qjJ6l!=nK!vPIIjFv5h3+9rNK6tSmo zO#pMr47Yoem)PoAj&fv{jzco|MscoYc~cjy5{AC;tri3?ctdYmi6@4THFU!u9g21| zUc9{sAG`soJWd;~eANeq$3d#yTP8xzBB`)Eu(_iS?;-VO=&~zIbtovQP<6d_V)z*6 zJ~VEz&$z6B(!Com5+5r5y2E?)B>b91|M%S$O(vk(`)ptwE=@Uh5@!dvB`3`Yl(kBO zdWm>5Dp@8ihypvT!&nM}Fddg1EM3k?)Ac(lyg=e#rT8bt^l8nq|w zN_Il5H_MCpw&O6*j-Yg&tz6HzXi{D;Z>ItE$?(YZ8$IxYpbJZ$yi2LPAqEknGF_Q( z&$D%`o#ru@`PClyl``M{69S#p;Bef+8nNM=1ppN&d{Oqb{k=KQHa+nO-LLI&u)kY^ zSjC;cIl^OV<&IUeM7X;(r{Mj;BVv?+rZ3^Rp(HZwk4rV$P7Mts3-I*yJ*sd8VgP1~X2uBxXEO!7?gW zhp@W6cZwDpzhe>4hdrohnoQj#HAZ)f zdn@5GN#`!Tpkv*^kLuij^lTg2IN7r#+!sv+k?`Ht8_>E~_mmSUOW2xHK*fO0#OV-U z1R)Od=)^!LmP?ok@w5r=EH?kPgEXFshQ<+XU+c9vYo$ylyW6Bg1(lP+#YRO&`ngZbA%y6s z4j$mc`hbUEHg3W!yttFUs$1~uXI!Qb?|&0&Kt>}q!J*)71ITz1+irz;!y-RsKNiON zG=xGGcff^JGk>TnH{g4`U8a|O^CneR{7<0|9l3Vu=@VT!I)$lP7e5a<($?jPM7iNe z)&A)9=98od4QTGrFJ=hZ3|lXHU?btRJ}t_w`uqeGgRG2yUe=<(!E?{*Yi}QyhCXJ{ z&9<~r95_nnc(78N&Hg1JGown(Lj~VM``04tuK|w}??xrsbeBu(lc`0bG5i()QIXd6 zf&m)FIv9X^&{zyKt~1S8!wR zm;}LxRN>isH9g8o%;$z3J4_6j@?V*w7DXsW-gfNuzUvPc3*~43Hbh7UBEcO=qVk@1 zC=Zu|iW(n~xW&QfAMX%3VW6T%uThlZHoNpDpU$rddj6{7 zC~3;!O4N#tBh|NFTcJ7lULTcTDPiu!M;#2*TIH$E_{d06W2?*soi9p(;Y z4L}yuKw7pdwDp`zRk4X_BVK(EYQ1)@R2h+NsjKoXEF&g?!DE!62+jCf)6(j9@g74$ z(0xj*iZxH5eMi$6XnCp2@&su1xxa3=xUP$Mod4V46=0oaMonZ>PF6m5bTi3UPLd9- z@4b*eA3XK47f%|P7Pzvy+z%I!gaO?^zN=dO<{ANi zbu#Zc_<*6WrP;%i_Xtc6UqzT)yI7K~x_N<3{0P z@s8?8GTTC4^Bk7QcKAevQ{)|28>#5r(!qML9o7s1gNJf3m0g%;!b4nV;UIo&FEnAR zsW+x&Q<{EBr~2(3`$|yCBeg^;b6$xE6tCjJp_%iS8KA$m3Vu|~M7@N0z)mGwsi(^v znik@B6I+F6jp(*%fbMumivhoql*ZS$G>$UF7~+KP+@z7R zDDlf__#zoSTD#h0)*DK>Dj46!-m_ROOZ1&TSOqNY>*}xWZc{1))ugC=V|M&L)Ri$@ zDO_jZI(BbNN>I`jFegY8>5LeuVP+T93bXK_y0Y2f?^BtagT5wG)X`1$AuP0*O$BI+ zvKD+_j2YUKB{`jW!|yx^5GGMP=1a!@SQ0!$B7OA(tTS?}MZ$M}AO`K@D-AIMP}1-0 zJo`W&VaEYcneOxW5FP6+V}o(A7FZ7NVdOGCwYj8t6gT@+n6}0-Ui(G_d&0A3iuTrD$jli z+&l!#w0ou2Z+Jd~dmR-X!laXDyW-dE!hxQ6us++9cXm5W+Ua*9rx?t%m-x`QSXL`Q zA7BxaQrsvfLe5Dm=gL*w%MD z#Gl0^C#R`U#knOvy0$x{`JU>rcB(Z&ur0CdOgl)3cdU-2XcJ0Mese-DI?LVEUB{`{ zR^N?(V~{s)di@^5(^GXHj-T0nk>o69&gxL&wt7bLH6I6vt)6((q@KkjRhN2|Bt2xq zpI^yWzP|fuzQut1WCr&tAM#;2Ne=67-htAWCiuENG;?y`31La~C{{e}6>Be8uE?^e zcu$V`3Stw;o>&wcHod$Z zx-`%qK;|)o#eaLBz)3=5324-xAhM z=#}Zq3{CIz3GgmYHygtVrG7!3q3U%OU7j@k`G_0up27rHbe6^oBMl2;*&rSgE=oHS zvezCSGZ>$JRcJ|M1&Kfym0$g;^ar~yQ-QJvQntbc$K_B@Lh~@|Tk=GXtp%fhG@tEQ z74p`0YL@=A`D3T&0Lg8n=CFR{lRX9ED-M!{6#d}l>v(rRC~wtdVZc44GPGVvmnOxU z9Gg9;rr(~URx$jZ*25t+QQQ7nBqaBLG_BnTWy|)e&G@K7(%WjHWE9(q|iy;52!pOI3 z3HAF%OhnlSzDT+o_BFjY%13o~I0zs=@?JfEuzs;suzu!sc6rO1D>XGw8FL50Tna7u zX%^E#L7pgm%Vcz=ipWbu0<*0#6=WWnk4hu0gr^GyqU%o+BQ{n~0&Ftd>)I7gd(VQO zOog2$q5KWWfa5UQTE~DEs{g~p>ldQ0-O;nTf1u|p>*6c z$zD2sb@t9qhQb=$G&FU(vqtZ<#F}Ey(X5yS@Scq{+V-qKb%< zlfCg~;g5j~!i}WO)8s--UR2o=;MGtOCBFr&bxj?N3X61~!C>@K+nMQh4?co-WZ{J* zWKMMF?L`!JyJlY7vw0(1NSjzybjdD711^r=K? zt+27Zch4@ZtslvH47B|&!giJSH^&>^jBp(~Cl0JC*P^h>6}SJzzZCks(D*JETz_8n z>x_aYlkL1?@fas@mbJ5CdJ-3}7803jP4UmGX+`vVv9YER_Rj7UPb)T65Aisb8kLNd zct!#yO?8X=QE(aX26)P3cJs}yxIj0P(YqOqX64l4K9>i+PW|_mgaVhub~G0?)>EEK z$)U0g8(6o^8r-Ne=ny^TF<+iQ*1M_3JJi9_IjDSFLP%<=O-vt4Vo#Ro=54<$B?b63 zPx6I`DU$o^4Mu|CfMiaT|Mv8n5;p_65b&d z6F-3+0usil41X)75lVPO9oHy!!NV0~kJ2v+xaI2>)cpjG-E7HaaBvqRW>_$Bu-t^Kx zF%+NeUmNft6SYzECzUH_g1B{*mz^7JN6Jb2wcOIrgpzoVR{lMh%8S+?0wVJdLgr07 zMVAY*Q0AH1fO`3~DTy6vbA8P&d;by_?@M&6^FC>UPL>T3Y6Qt5GZ&T*V&8pR2H*14 zt2thN083JAx!&V@Z+VmogXP3YRki%96zg{G;rrzZ~ziPWKtDJsxDcmBDtfx@aeYIE4O zAc`SF3Ozu+d=LRaX=zy;01&7Lz`!6992_u(Wa8txtdJpyAOWERhKN5<1pxs8ifDPn zkiq@teTIO}Dq;Zv2!eYBApsR22oMOMz{5YFK|~|~(Rl1-to#vhg|Hz42_!hs_9k*5 zE9%(XKn}nfz`n6C@?o8VzB8iZLVyhnz(s!_ zu7+$CZV5m@0vtJn1`sfik`ADn{t*DA4*`B!Wdh)uLtMjaJi+e+?%(YIfV_kJ>fYMF z)(I)B-es4e%5&Xa~S9BLdAUt{w|}=HmefFkI;i#1kXMPJnj==Eo9H!|c1C z5d<`5;{k+V-rsphFaTXf3q2AR#P*3D|EYpGPf0OYgSICjgZvXp{JxY&j0^~1T)Un4 zGjD=pXy=~3sxt%*)!h2V8r)pT*h2twbqp=1{0%kGA^CgQ5K;g@%ug?mPiFu)1Pbs7 zxOw+aVZV3z_YDX2?PN@L|KRkG8`y?HSimQr4PhET0v+iX3@{&|76HHR5BI%Hl!ySJ z{$G$H0ChMmir8b`B?kNOXP2I6LUTULbNBux4-j``{ZBDf99L-K8@c!SjsLg zu3tFkpV&Wq!+7N7g(rG|AuV+jF+eScXgGsESYM!zA}!i**5#Fpz9K6M1Tjb_25p!u zPtcH$fI2$<`Dj{pM3 z;csLhLPjg$AH5@b?4X4u{x5}~z=PGk5ORt~1OOodfn1XG6=NF2fHVNHf>ngLy=Acb zr-6M687KheCis4^*#F>iGeky!K4vp^hbw)*ME_;5E+T~VA%A5c=lj0vJ*Y4N9s+~J z3rLQ4#du#)g(JxfoM7&|&3KYuy~T(If;)v*W+Iie#qbfQY(KBfXtBUYm$HCI<}Wl` z&$OiI(1|;}bE#7*`2%7-vlCctv#RunE8^=0k2+(qRme!L>S}VxM;Ro11YM0zcVfF% zq$!Opw+m+lkG-n%^ho!!;#p-hRd~B)J3HDb>7`;*6!uL`&*;jwOI8i!4?%Z&=MhRS z2i8Rz8b$6d_lxQBk}HzUi3ODi?}S9u6?AfL4DDCm zRhvQzkXC^kLWX6cqxh3EMJav*1U%PIrZRdBJqh7_L|7jBBGWy+T)GX>$YQ^K=VKaV zp6ByRI2tR)R^N7mG?#hXD*MqIo|Bo4r)#LQj9xVMx8OEJKw_og&oRuvPNFB$Bj~Km zVN4B>XhgV$$lzMYlAP<&#uA0qgk z&ptZ)Ul6EKPj^)vsFYO1Wr6PQ7?xwx%{({37G+bP7HvwMv-+QmkgfjX@kw%A5HV(V zqg+6AM-!Z4Iq;ZrG2fTf{0P=Sn)@g~iU}}c^b)xmRh!~30}wZB8r#8z=ue4O2CeRZ zoi2Z{NPPxsM82xY>TkKoH-v?cQ~`y$)r~-Md;9MiC3T6#nMRAqbkT8gp(Ys5z4UqO z@o}ug?5oyBt25M#pH6hAhKj^8M7+BBhlJ6UrreJLtP&2H1N+qDNDMYpcCOd*NM6d@ zoK=gYiE$^3jO8-&vZenf2hyL|6K9g&4PWpaKPz`y73og=xk|H`sAg{@>eD)FNt*=k zU_Cee?E~*bf7MLDs6Ftv$3#!WAtTG%bJrz{+<;AYVIMnInm0ysuUFf#Ke4WQBQ={9ycZDQ6YJ2cuXN$9KJfUI5OR@ z5SkC%uH^P?FYDGQb${}=(r(2Cv}@Pszrc#XTx#a7`JU=)4Z?Pf7T~mlAjam_RF{2{ za>AGKDfne#(4>+ZG5i&HReCQ+w_Ri*`zc?R7>Yaz5{@#Z`#rsc zQz8^j(D88LGKS1Vm&~!D<%FTyC{aJ(SKY+sQoDUzT z9k-q<1eQ|SDKpxZt$YOR*~Nw25g04tX7&CZ^yT;u4Ryshn_iOMH(4a>&A@%N!MNcp z5h#P?d7m4cw_1b!DEhE%PDeM3BWaveu))RW2=X8e50#I5fz=ibTJh`b0_=#NpVlie zZt;lP_gLwYs$0*&%hqFcx(P8GZE10o@DTIbLv&be$99rwDN?Cy5q=ey)nfbcNUL&v z&S2s+O?T=|9`sQ?s=pME%TUX!Oye^I{8_-5z7u2qrT%dN-`w=L$4 zyUp1dYFG{$33HQ<$<9fU5u+?o6yC79!~0e%7kyRnpOBceM|2AJ$_sKB%9$5nt3HsS`!!c3`sOsW5Hqqii}bKCgqH#QqMSRN~+cmeQN_4quW&cx+R>WG}g44WTvWqwJ21dD*bNDGAeQV}9*k zIs?f*Fx-dPB;a%z!!1lI!%G^0fLW~>+O=Eh{WFtkznk$ zI)_`&Jb_gnbUuEP&_t1*=a?S`uv>H8pd6t`kQe8zaMa@9oVzq&(sJ>XXN-vuph2Nz zBGG0rzUaS$;C>E_|9)=iM$m%Kx)T}0Umr$|SWWO_in1jpEY}Bc#D8-<6uR@J^(f=W+Wtj1nYcsr-x47C< z8vFd`WY%D%YoD9Tm7$)K7W_79rqohebPI_<~LC!zB-H}^`Pi~`TLGvEjeirX0#U9TfLH`Ho4tpzdvdDfA z8@Mi62~zCulOcWNM;`#QAt1qtYu^i(-|L7w)wJyfS`kyJ>JZ~t8c)Cs`87JRqsTA& z6mR~x^%loZ%gW?F{$oS3$7K>l15|uSrRS4~#d3lSM0VZwAg|mh;CWg2a2bsy(`TL}rRSP1)aL>ed*-8{ z&nxsI%QjkY&LxK7FYit2{G<3U6qIrK_~)WwCyH@HHG+997{6{=SodEc>HCAH%8|d4 zpEBM)M9Wk~lu!G5xz*y5sQX^F$GqStQANg%*a<|zfL!{j#LA)U8UhU^V~TSr zC&Amp;cK-t1*~y~iO@~LBu1yKy>^%C8wxZT8x23|mI8v~fwcva!v?C|k?W|seJLB_ zdu`$!9urobEkl%7JwjAmJ43i=qDvYD$EIwA+3k=t`*kVn6E>VPa1C-efaXy-fsgml z0YXbcb%+9W?a=0CGse%*XpmfqEATs1CfQ0_o7)0`YGdoojb$p+(b5=u-P)cbiix*# zIDN6+NwPXp+7T@Fac`siHcgzBxuJ}PA7wU^DTx81r_6N}d?2^|hz32?NU5C`@`Jw$ zP5t9*WKn^BdX7JlnD&3CFV=@cos31KSn@G<#qg3jKzY-vuAzXAWya2lY0NmtgZy#Y zej{hFZ`&z`=b6i~1#aSs`iRZ~kfdv$BZunWunK#{dbSVs0*VrkK1?G6L%V&$aP1sF z7459ou$!{&B6iPsa0xo2-o6VCgmR;cI}z@l8vnDz&C4v(jQ(8me!6qMJ~SDBk>>rP za(N59Ox-i|>J{f^*bH}zQicL0Ga_dmjFbdfY{|{a$I-A2yS}IX60Zwx%eXWwtL)v5o>hV9@#0Xq? zm7f-gBMp4r^t5jKLPZJ#w1bhH8yo(Mb4dh%YriBY2>|-~F_{X@`sIf-r~`)A?wKU{ z=~v+@o}m@Dl*;)lk7T8ayZd7zL9ymQCFO|=;>ZB4L-0ofoEzlIpKOk03Do2ciJQEe zeqO%<7saoYyE3Drt4th1&ZMO8ZJ{f?6WyA#-^1188<;x+Q9z_=)(LW3gO^JapCN5B z@$=-hyXv0DXFC>~qmfCU;$6sgm;w>;Nchaflso9;Q)S?dSy*dHw8Bwj+#G-! zb=bX{_{-93Kaz1G!k7C;IrY&{e8wwuZPuQ;ts?>)MLlJ!k}Q2|lc&4|jmNslg8!a& zjrz}%Jf4zE(;8G|5&6G@E~hV8o#?)AE7-*I+*b_~iBjT1wpC2{VI(lIAM_e;k2&Y-F*6Ca0Bj~T(FI|087u-&q4xEoTTfM5! z2d$06`2hRriCLR0VdmNiP33H(c<5~T*uKKTpB?wWoA245sNcv)K-8L1peV*4JQHec z?e5Gly*sTsT4}8#f1sft3htFTUF6BGVC?yEG7{zHYG_dsbv2P=UYE8eQb;=C(>(&m z6)14V!#v*Rha^_~ql;j}k>w{%*%v3$Cd8Oin@B+~Xk1K8l8`&KcZb2uu~*U;NMQHz z7_kDP5Zp-i)G`u1f(8AUqeIl^!gQIdGY+K3%znLkZ~~&Hue5!8%s%b{xnWDZt4^UD z)^<_``L%G@P?vt*aJtBaPv4+QEO5t|acVIHNnaez`k|OxK&S{&O;AQG(wxkLi%>c+ zXNai^9#t3!t~2$!>3a=DZ zwi31*la7O3$o}OxCcnFT7tAvi`yIHpNwah_Y_>Z{vHO}x?T($Tv@MoZC3Xiq4#OcDLE95UF0j(R}o6nStm7DifyF%^#3bY*HU%r>-5UC6`x9`ir{pAe4)> zMp)cK9l~o}EoeB}+v1r<{~D)`LboHalb1lMn16Kb(8R&*IiXchuz9LHoV?EH){%Ja z89Mo+uU4ZVL1-OI?e6clM6+b~!|PAN`LdPl1q_b=LdN)#twtfQd~?$1bCN#3G6A_rOz>PMSOy z$}e%T72{Ba!mn5mrSPe892+?{DYE&cVr~|Jp@J)&aj9$PJnmSvLW(aks}^fXuO!Wl z1+)q(9$XzoXOBT>pt7r~Y-;%GUlOq+H9y$Ej7Bq4k!{}Vc0-Jw5ZK$YXr51mMb4R# z`K!^`4UyB)QMFd@szCnRY^;ScCeC};(}%ZWjE9y0s|u?ga{QTKUEmH3d_~upha(;X7^QNX%hxhbdHLGDY ztT_5}5b0SIwF`S}SpJbN-K0y|zX;DQcaXQGgx9N>WbwNf$0W371$}uET;r z%0hl=ejCqZc-8&t;UIwk`*=8#{9}+Qj&muu%=Goyiuet25{!{+CR_1E)!}xLa zuloA>hI!c`j?&%Z>2S%{4(iT&>}$@a%j+hJaw&NWFoBP@6dnB`j@R<`l26tU5C1Fq zzp0&1M!^(aeHNI9dhh8^E!Ie>kkTk@`qUYow1HYCFT?l6b9iB|@lfPCC5ETwdo=qf zY-s&pH-TePMWJwLHa|clq^dfRntv_zPp7!rin{d%0Z8UC*_%qwf^yT88Rgfyn!`A|eDI@P5t=MG~C`t6(CP9MrY2IfEf4o-pV|EF!n z@&B;R7};5v{?{mDBw%D={Kx#i-T&J+V`OFHVEq5YdPlc`%Ijz}(?){8--2+ocXf4n z+4HE|yFu0tu&{%;t?kzi~stmj@hA^33QAJ!06h_Pwwuh zz~u!mCglWeCZF-=0V1Cv51ii7!Ex~m1rD(VfJ-YAZ4LM+I*Z1SEiZyhY~^2>6G1w^ zal}Vi{!WvfbK`-5xwE~E5pA7~ag8$rT7Cgwn>za+^D!TJegV}S>b=FlKQICI{w{~1 zKM8o5h9>8?wQ4hiqYIM*2#_GCr37+*6%ysZ&Px#R>O@|Az9FX!afH6QqU z2^)Y3_^I#WH{v&CeDSqTpBNdL3)_oW3tmdg$v>ln1tFh;aBTnjRvP?YBg@Z;x$%uL zcqE%6OJg%DBN)f`$TkE4VKvM@Ae;NV8;%Ti%}p*Y26he2zfGc}I_7-3sIAP%&5d;c zo1C0|zX#+dXOK+)&D(+Zw+Y|+7N@3{Pw;e&&CJZ7&ESeCo}$j0k|1b#&1-!0c*x(j z8Ju$%eKSMD!(&rW09*imH)QBhy^9s@>i|Dm#y`d&*Zm_CJ2Uuyz&1eVMiyWoKLKx! zjEQWbv=*fYN=w zzdnn=6I08xtD8q{UwUU#6xEcKg+$U{Z?S(m$cPP2;O+}e41nhv>lpykeZr%Vp7$Si zSfs>Le&*kZ)HYV8;QPN>wB<5?L+da2fbu^~ILrQjr;7E!6=)FopR|rTWUge$^Yo{G zW)**^kAG$NdK$lWM1On1B-+(Af10JARzH7D*2YE_HxF^Z;>~ok`GE0lz%cjS${oLH`X9nAO>1aSAJXO7bFH3aLg)=&a4gZTC{#!D}FK=EhV(_6SEVK zYb`+e;J7n?n!qus6X5eJ2Ox>ZdQ$xJ$KP$m?KKfO7j=k624?^m9GqAl{XuY;!Rvs! z)A<_Apq+oDh5*DtH91TaAOM@W@cq-Xh`(zQj`cy#PgBoqhXDT~zeTeFL>KnLq5COb zu^oUhM*c*yr2#}E_QEmyDL$|p05D2?iB$oLp6!Og^pihg__dAwh!M~`_8^8ue%XK= z6yE=nQ2s=;3FsvI5W}M$?LZC-AF%`4%YQ`)=q&$7`urd1;Xldzf26zr8D8Uu$QB;; zY6lX@^oiaOco=PcEl~7)#rcg-jU8T)fGqBpDvR&ShAliZ{^5ovU;JPPvRTkjlrRBK zaQOsB($MfB^OE)t)6dBm)MaRSc5`$5 z0UjO!djGDN0Dj*ulCjCZ5y(b5CY$EBK7b++<)NDU7heV*suu0>DwmTXm&)lV7N zW#XC*WF-9uaKl$%if_{Y-fn#M6T0)4Z0dXJz6tE17UF!PJDa543n;6Q|f9*eAu$6jnAJFw*F+S_*KlQ&VJXHkHcyj@}FFtLK z-$sqij9&$yW#+KGu}|m@fSljX^Iue=Df*%urupUdPree34PW|i`WwgZrbj)$Tfgc* z7t`O8V7}P|%w?Lgy&e!y4nP~4KWg7sJzoAbKG`JPA9x7Ky9aO(mW3xa4tX-U z{G+{+->1TV4h|qWB~N;Fj`Pz$@V{3>Fc8k*nf>%LTN(FY8Y^Heduq^qPDOtV1AIci zLQE-{yH*noLnnxkWD%X0Ph+rSS_j1kc*!d^4wcviCWU5oMX8?Y^Q#~yt$Dk0U=CDE ze4G2|W%XcW(6PZ+pOE|a7c0T8J$bm@EI_>ct^R%~gmVt|2ZD-|LVa#mNzQdw^g5W( z8Gi-cS|fx}_sX9!yqY|cZ29J?+-vMkaA6>u8My$dU^m;i9f$M|6X;A* z@InmoNQ)*FNf%oy+D2WhE0R3O$srMhKWqVf$O}q~A&2@Cgb|x6X9$pXIznH7XESRExHzsX+ZQzO;6z_0bfj4#)dCwyw;2hBoiV0e*DEC9i($m&RS&;!G3t`v`hF zu$f}oLu7|9q2#~>pp+|~*oD)`lo>T#mlUUJ}>EAJa zDZOIfM55(HhB^e#PH8R!Td*^A_pJ!R2CE*{lAoS{w4qfUhUN&BJ1`G-4mz&#C{jGE z0$`g0N}|uQP}N}!N%4doAGEHc(1VOatQQk|_|T}rh@JU7)p_jCn6fRE%iBg8&!~~_ zaKskl?$|(JB0#|29QHDA?RHXABF>HQ)-AZR)!IWMV8*=Fj$kHX@01_rZXFe+lTc!V z-yPd{)}YO#JqyVWC9Rj9AvKg@{v5ozucnf)bt;-MI7|)_z5A{K^~&E8cMH`G=xtm2 z5LDk~lK7--!VY;**SF>#DjS*XWPdjHlrM*kZ#*cf;cc zo$DD5Af$1m0HGu)`0A!m7Y(~-$&EE^JWQc@kbEpp>zo&BbjI2bpy`g*ZWe*aw-AtF zl=yq8J>Qw3oX=#&%I^33Sd04C~u>q$X!43COdDU$>+<}0f-_ns}m!r_W+Tev_ zvERScVSXC2F}`Ct2~KE;)$v463Uo$f>BFE3hQw9igch5vkd58ngUQByuTPn9#WEjO zRcFS@!T8KLnJyPXm=bZ({G|6Yg`wl*GKk)JJg}GRY*m#))T!;x9cF-6B4$+P>NDyg zxHd=&LGdNHk{K{xxQ=$EKRb7O-UAHt8SZt6p^-f9E;ZRoA?2mdo<~^ePXO>Z1yOB& z8l%w8&rRa)*0S~ko#C*NjKwXlgF!vORC_aHSP&ToPW6WpHWZj0vR;RkaYk6mW^qO^ z=4lMbi^;bzqD3k`iDkIVt#9xLFPhZ2LD1#$rX!nc^ZPo}Hu&&a0)oO-%Et23o6W^m zXNOc-?@Lvb{ktxr)jPg6*50ob=?yM!f5qe5=Pc( z6IMa?wH56v0fvVf`q8ngbcD{yC5XxX`*3wsa?-p;Ywt8Bvb32PyryS_UWcQ%BiAoH zG{>rLBav#|{^jetFDF9rz1j)s^O?M1pE4D4Fd6dd>=kkRAnE^>Jv-;r?wg6TTU%pE zJcjESPPuYHeEE$)mr2$X{B?YB?K=t9|2;xR*EygwbX019>B5;L9JjoLPF^y;`_hQb zkVHU2cjMa7mp-5n%#{tZ)T$xXESUV!FxRoH9R6IJ4sCrIBzSIJY|Y|63uEWIc3>Uo z;y+A`$~x%WA$!{0`Q8OlI>|1YVFP$m!y9aB3C* z9ZW%Gi&5s(9~YfFG}W^&WFY`CZ2ryBQW7#B*` zqFqNI-2J+}`lG)nUfrGhnAwRbeO;IY#0KsCwTU<2RP!GwbQZQ|L<{*K-3Cq6DW+%5 zmgaqb15w+9)h|5K2>r%6@lj?EGm^QdRkR)qk7QA@)&5{8vP(*m=dQ$ja;;{ifsXLq z6*YjZ4D90xEHJd7^2Ev|ilzw%pUS{uW$_ID6+4}0Zb5Wi-2Y}C}723ldn&>XA zWe63I?vR|ge^t~Ou3nFD&fGYd>kOfkh{7r>gufLvvFIUR zx%Xs4di{*IR*+Y|2uGLU@>2P#m%zvFf}JaI%))9vE2N?*9Xd2%DwPIAuPeQoGZk)c zp+G>tlxm@Y(TVn-Q0Rka+)V-fYD9syN-y4Zq(Xovox4=uni59l)oRA}sO6O{p4K3X z6IBL&XHm@kRfQ6g=v@CwNzE%5iHs(;-^5P%(oBaASZG7MTJ{(>5KTilg+eiUD3>g>?PoxfTL@)Moq`PWtuxXff6GZ21>yV%jj&92yP4H_kINK!o>0l0ZeSn-U z?T%K92OA5XMZI=Ps(mpa%>JtuvBpg4JtDRoTwhonj{mlL_bi z+w=so1v%L@)Z2E+D-caKqYcrV8mw$|d>LZQsqz}>ZTh6M_$&}-ik9{fWTNcP3?R2K zmGQPG4hD)r94lVRaw=>)V(k#PDouEoezr(|{#dgL0bBPI_3wna3PSfrU$WG7lWn@YCy8i5#2ueeO-fBN;y?6rY?cQ-e*;#k2Zv^M(!Sr zi<-F6sgTeCsSz`MG!@;6)=w&SF76o{Ba5nF7{;xMOTeMBbRuy#a!oq*Bpd<*X;1|I zGKJP`le~M=yCLrG2HkBt2)ou)1S5I(9dLczQAt17FzqvkH#H2xc0~50F`7!r&ETAx z;q4142%J!PV>EGn>IBIYeH;j>hLX-SbNm2OD^OU9-@nau>iQ|iKr3Eg;_eDBHMF%D zqT)nq))p<(%609+6`$VMx0@GTbRna1;L-@Oq?W{3_yN3dvw;!=vld^JIpd?r#Jen% zNHrFGmcIpEGvA;OX7|QUeCcs(J2Y8**u}>A2gf ziTf@X9-t|uCl!^BBz#4xw3;t>%ET)1kJr?tD*AwiWz!`tq+HBUnIM@!kF7;AeZfja zlnL)T`J0C_JOA2NeeH9=3?%#qmo^qlNsX_%XsX}{9`4OH4?0tGhDPb|r=7WiL_RFJ z$-e0@KQrbhgB|f%cB~)9b{Qg##AwY1F$=OgW>_YvXI-VAjkAl^f(nhQIzmnS0YBG( zZA*TY46TdC3w7W4{Me!CQuTx-Zu6ps+aWx;>` zJTdg*sAn1ZH^$AKUxE|`K;+1DJLTQGd3eM!>vJST$NihK$lbcRmygKJ#Og|j7m){p z$u+5IE0Kg%Z7jjm0wo62CCx6gO?#%W4{@Jm+gX?;xd}#f!`$W%mCH=OkX}VTKEeJX zQN$zg@u3+qWtdy9Z*g|i?b_U`6FBrqYqg2m`!n9sIGz?8T|C|qd27$7jQD#yZn(r1 zODg_uoM-ZPnvdc-r_NMhZ#D8NSOBQNa1bQSoO(E=`3)eGIn@154VN8J3cQvas-R3$X zeKP_VADQBNKa{b?NX#(i&uy`#!8wsw??8tPcEXcp@1tFFfinn`B ztxH}T3_h;kurgDKC;t4`r>SR3&yAFX(UOG6SOfy=m@hYoJ{B~%U@xjw3Kj$QRU@k; zZL`)1Q`FU$cyMjj+_ngod70J`3to-5Y)=Qlq9gn{v=DFOZg4>XA9!}f6^VLVHS+5x zk&-1{(pcWzv=Ck6hukBr^DE?DhC7?hg%(`7Q!O53v#+0I(4Txvem&OpuUbH^J=h>@ z&K>B1{ZGD1zS6-QeORq}dA#|3(+{`F3{ys*Wd#c!bem~}!w@-@5fCUtb~#3e8Xr8i z?mO~hqQQ5&r=GW(x|5io21Ot0G0Jza&_C00?*~hFXR+O0r5g~SNv}h!%amj(6RBVm z&=r%K@?FDERE!oNw2Jv2aaY0Pxw^KQh7^C~#~IZH0R8p7>D^=hIPRQpuIiO4^sBDS zxBPo=mDpvtPyeeCjlUU!8a3%}ro7I+JvkKRq^qZSMr22%WaoSqI)}JbM~$M3yX$Ju#xuExmM=;T-$Bw&W?T$klr9 z?V^s3$vHsbD8Zv>mq=`knhG?dsX;g;;#cS0i&GA_*r1f^A^U+C)Vj8l4%Wku*NC^@*6;4Jhw^WO$gGTkiyO_2Fit|6% zNVw~r(%Nj;uCJxCsyCZ3|7ID7Y~vf_)V5T*TWXdc6jQUOI8xSGBa4)I1!C$aCAW>a z^}zcgt(RgYIzBl!d#TH&pCr^ANK zE-W%NzMY_lfK-=%Fw?@g9d8YR=%PP{>iP5mv&k_J8=rP7X=?2ee@UZ9aEihhz?Z{9 z!ru_5A8-p5pN^4JecTI*#7{R*?as!_4p*Eo6H09JT;3k=>|M-}@gwaE5Z#v!xOm|I zcieUU;w6&on0D-@dgGHTQ8cA$g2R03Oky2FXwXHhh#yNsHul)nVI`JU;KsUPJHt10XC>WAW?Aq@`(ax5u#JrLcpu44M>iA2n&pl zFckE(*M3Qy=|g{p`8?5`)^ISlp_1MUP8+7{THKp82uF(wqE}&)05> zK740!3?JY|N{;+)KaTgq$I@?QFUL>FawAF=$(&;z)L8O(@m2>4&E5zj-yvtU)5Dct#?0mqWyJ#0?8w2 zNM{vXj?AKZY}7YY&Sz2{u5wL7=S=C&cP{Af^yo1%AM%Fw!xVNqLU5}xoQlhB+(+LH z*WK9yP2$db?~L=wrzPmM1=r^YX~tLm9JNvti;+JW+xg>%m&H_AdC;|+ zj8M-20<_f#s;<7G`J78=v>pK8-IE%CJ*@1u{Dt&!-D%iNgOxk;0YJlZJA`HCKbVYU z!cod#Nn&z-ste0I$BwAGJ97;6@*-~D|6U|6=~?g@W~O{^J19rU|ZwF z{C|XO_3@8nE!Q@0H$vLyK4e?`Xk4|g6Zk|rc+U*q2DdCYB7i3EW^R(kpc7YV47In$ z7o3*^`IW9iHO6(`0VoJNdEjR1stsy%s`7Ibk!{LNRBkIO$7IHIIPbcCWTIUy@eTCV zv8v(SB$0A$RGULmH(lH;cw3|3O_dUx)oamZ3(+}H0=%A|e}trhmfS-ia>vyFeJ`5D zR+3~-eibD=$r9!=U3-bG*!c+(>02)ZZ#PduscO7gg@0%G!|h}sfySj#fD&#W{k8r# zWqp^HM!hf4^CYUzPKoV9VqvoGHdt9-v*?jv9<(&aXafmY_ysbdVEnGAYUXiP2J2+B z)HcpE)iXbFN3_x!Qk@BX4qKB_l-$nThr|yJ-zmycB51z05bfg3>}?=X!7EaSvyQw1 zz!7y^Xe$mTD-x35Gwi7K*>)*RqF!^BT;%WTBIb-I+vPrYh?;IQh7$h?^?}* z{c!tA*lFx-CL=ujyG^ONUoMiD^=!j#n7CFzP$rC*^r=9UoF1OpN8AZA)zhY~6R1 zfopi(3J$N${{DJwiITSD%v>a5_!+gclfs3;lOnq`HQ_oSM3C(h2@Bwn^QhWfV~qmO zV;(CwVC$b;o3CT3ava4ER@T!Lo8@h;DMRY(l66Nq((`ct5Lq=tftkw6@k+|FEDiWR z2w((N9#V4-@ zu-s!K-B(NkeT!r`{v+jmng>WFMH~j!V7Ob!+Id)m>9$e)J;O)27-fiZF}Y^J(r57u z5997+#bU>(h5XV|Gn%2bz4I8=Of=lIO>oQ5viR$cP4rply(90cp$|&2d54=Xr5YcuX>aLqlfmb~((-Z_Nca(SNp9qHcKDiM zgRO3L?vBXiS-A$}X#x!uSKl_V*p7^hS^+XR95py>7M?<(J|wnpulSMbtwXV+tl5y& z)%UhTjipRO4?W>f(-<55OLc18=9S%UDYeo^vO2K9&1QVJJhc$~T)~Y@?(~Pqil`8u zewlEzb|`||WfHz3Ke|CrSJN4_DHAg+YQA)dB>Kl0`)F!*C}fSn zw&f){icB`&!+bV-ZK)bh@KuQKoUE!#2wLt1wTm|3cCRE^jvN6m)CBc+=;+AeG54{~BH1Ae z(7kT$hSo&I7tJTx4EU6SxN%+_8|dv*?;%umSs(fTgWMBV!2uwhfa zIRs{~TZR(S$F4=-$bhFr@-|Ut*lD_Nv=?4idZ1bu^Xzo3qoR#N6nixg zyBWJ79W)QT=%u}Ep1PiVV{S%o#Bzz($A4hsVvD zh?lU;LmR-#TG~PJ@~3<391DRdTe_lNl6t@F`~PKS3_Sq9J##?-4+dvNnxe0Sbka{o z@=ZGWLiUGo*AU>4(LixlT2S{|92naaG~?WLNebd-8gSOtpM=tJwi0zIk7ZE=TXr4R z1h+$}H11hinkvj3QK(ZJfB(LGDDxZM^c0e7i$Ax$E4(!~0ekowr&fjFMDKsTjXGc5 z<|N1f>Z_j%WQzDp-Z#`aOM!rjwNjj?7zLE#pLhp*X}vF<^gq>ck*hY2j^U4%E906& zPGe~3jDfnmeOH3xnpM;7pondXjyOFxFR zgMKY=p-C&{Di!c9d67sG!Kd&vEokn#YCr9bykJ{KxKwl0P1c2h%3K@2^z1NKtBP9O za~P&WU1{Ga%)lWhjgMG;HN0uGKr^JsaYVf*k_TIkIc!Hb4tV}9ntC4sSXs@Iy6rC1 zCb29&%s(CDY)W}-X=s8YlN$=&QWEa;f2*jz1OmW`e-m-j=$eJd*xix#aoOOT&#t|& zW^zRl7F*U`&*!g+H3yI#(z&;U31IgadnL~m{aO*AIzC&4Xd~?)CUE4O2K8Mpi*(EG zZPj5hkQbIuQ7FfG=*pXo6i!3Vzs)@5>}OI?nKE~ox()wM$LI6@kBQo)pirhYLlhoP!-HbV9V{ux??JvFZ zd=FCrM1Mds@Vrtc)y`gNL3wl!Z`Q4^T9l)6qIW2}i zJ)byQ!ueG4fmtmf5$-8YcW-WjW<3XzCG4^+T?9%j;WL^CCkM)oe!sY+e* z#B*X-3~8)Imrl@Pd$DIS2oq;+|l8i?N+c8K=7P)wuX8GIeSa=s3o_v7WV!K+&`mFkwooVNu zwjgH}x* ztS`g_!r)A1Q5BwVxYuC2g?VA?XRu5$oM;~la*`OWc9Py-{kwqwA4}|ic>5rYDo16q zN)rI7l=qu555%0brZVt|fRmJ3E|1tPR_S(74CyavdtF}jRY4XLqjXXW4y#m7?GY~s zThH+r&PhtkhZWVOAe@yAjM=C4{@hNAcUWU}5~DJtGMx7Mn{l)+FvCslBenc6r88ak znA5S+^2o2e3f)_PvvCBuBmo5;?{%HHGRg*NyemreOK zK73U@*mU!o4V50+VJKxI1QHD5jSJtW8A*Z*xZW{i zMEv%*BX9N9hJ}+$F-)arl!1#BXWn%Z#@!msylEzM_XwoU8&fg~hs1jSTQEp<$Ud|q zL{4dNQh&Txt$wqe*p#Cy;as4p;6CBQfl&;!16A;$$pr(n(1Ii4=048&q#a`fY{?^{4n1U!ut$Dys6!K?FMp)aV)e#>nliuMwadl7u^qSdVQej z^m)o9hn#3b*KF-bw)~5Nf0aY=l`h?{>77Qjl_T{;N+Tw1>9TDuVPiCG)6}R|9}+jM zxn%OlCkwO@G}HJTj(=kO7ei|>91`b;|7nSBIE8)Xd(>&7wR+qXp1~&Z+blWRJ6R@E zChJjfJ_H-?SkmC`*kvA2V4D$uT7*`B+e2l%x#%5cc~z@qBrwMG<hd@o3{; zS@bV^rH;_ppd6b`;1M5lx7Zq=kpvI!!1aafP%R^qlOh?)i6Dv5&5hZnN1Lh)UeCe8 z$SUzve%gbhs2?q1DU_-Gnk#+rhsPg|6rJUwv9I`lc|O9@2G^m<9)W9%h`g>m`dE_c zNk=0}$%IgVI8c71uJ0%S#PhpkSi~-{95xObwZ0=kSEZu}C;a2ZkMB+8)~txrofLfl z)s{{kuI}cxsZurb(-P(c@_}2;lw4}Qz&evXJg5GC@wgQurd>r!vGRQo+%y%4UnGR; z@;5TO4dQem)kNu0?xn{fOa8AF*w;tW$j7#A+{AsbPe@T8T)5y=aTL`bacZ;)cQnBj z*+R7{-YBxY(ilF&G<(8kT100xCqv|?lOk3OaTZIg;8>8asf?p6SF6u1VWk_O3@MuM zk+h_qFX(FAzE6<}dNt%siTvgi!YVAS?Lj*6^ISTO0CW4^6~zsT0`90Qbuj;8G24zw z43X-Gik}V-#xluq2FLcgyI-@NayEPXJtQFt{UAMca1-eRjEx}r0a3gYYszlB&QVO-A zIPocg*O7l13+&~6HdTz1d@+v4@k`3T<6{gLw$c)TnQ+o^_>8mPFmEndU~85Z^dkqM z7{iRh<<4w53tig1e(*lQUTh#00BB--_@q)=vS7VV2_xER$*j^^o>AYRY z@N-pu^CN5dj!yQwzucYbh)rUuuv1FmE4k#pU@#|LXgEF8W9%w!^(A5Wg(H6JTTINS zZGj}|M4!B`!Ez~KqkTzt`N!`rmZAAl_3)e!8nsMsHG112z*CCZqa%KcFh2Vc==NIY z7#hWdsU{$5T(opZ+<4m6XM2FfEbFwffZYk(QHFOvh>|53RUy(ZTdT-_{p-)+H>FFu zkC1t8VoRW}o{SBI>&E#9-Uq2SQ7Tt1TDdw=VSH$ zZHIeKma5MU%QOob{$X5ktIf5Ptf8!+HFO*G`uB678lZtq(11K4e00{Ti|fIcMduO$ zdpWnOuAsrH<%uO}i`mTB6CY#TJ`$r?BY^8v!?oQ5r}JpHE5XVV zFem-o8e_=uxrv7^!!J`D+1aGbf#2dv57sDz1?@coUY&OLAck&zlLdu+}D@bzEs&Mq18~S2s)Bj!h_kokwj{$PsA83 zC8-g5YgQ@itWp&>3` z;#v;z#8BGuy0U%=^$gwlrXGe5T8pU3C!}d$HUJmj=I}9HAh`^cCn9FX61?f3MD)db z_X%R8-`O)FX(5=dXK=3BJs=yrXE&s$7r0F}WgA`z*0(S*Uku2g?jx&s z#U;G1g|3L|>X>-AhfH+kvql+_3VSMkQV!{OcWOFJ^HSx1aWRO!_k>i~R{CD3Z-&L{ z+~@Zl+m>^>X}ss}MoW-`PRS4@&|3KNN;ccR97uH%hkZ{5v@clxXtflI;yuf7okj6^tNK0P5KvAGie#LV4PYu zGM4uXm+eEz%9x&Pv7C;Q(GkGaR@)Y+7;0yqGoKjFb7sqpnoCAv7c5!MYoA%{JaV-% zWwDg+zHe8w>Wt+LYIaAB5KBR*Fe98inKAm@Zc)bv>9`{zbX8S2?ED^ zp54uokNk(3IQ6m^?&B3f&`()B-i6qhPWFu(?c^dr3zERL6l9kv%>E7VL6Z(+nPt#` z4e;mu8I2nI?m3@()~J`*{c@2maJ@eN!T&HFRnKI6EZNw58l`^lkd)B&aM7#Ul05~9 zUdu@#BYYb=`$>o*omJ}W8|`hwli&6L_<3tHl^-YMA5!?W###R%i+|eMq$^SL6oEdQ zQk1-gud_w-GzBlU5_`=YQe%(t*pn~IHW@S+9ld)`A&XNR?x>1!OEbY9C7N_@-*vD% z#Jv%(^paDA;GWQwi)!0rl1Jucs)WAts+OpJd$_B~l0-;;_v6DzW+HmVl3WQ}N)ny@ zMg1@G{0M~5F;Rxu;6!9F zt|MH!Ibb9l|GF6>3KB0OfZq? zTL<%ph1x$doXr_;1@SQ1?MXdaasZd?7wH7z-Mg_0CL<}vP)?y)BUhv&% z`!#49z9v(Vsb?#$iR zI)j}iUuWU43b+=ZclIK`kkXZ0;2oIYwM{F8!B^Jo_E@(oCqMGrE+T8#Kj1Ge*peQd z-MJCcRhO32+JS)49yt@ho_E#AquCirCD9c}Ws@afv6}ISPTZ+{?09nr#|}E$ zs-wA-j=8V-gCQXpnko-s(EQ(|iQVxJU!?@k6!yEcr#Tlp zWH@+Ka#^wZQ&}iJe#_bbBVahnOrP#r; zY37R6g5qqm=WFulZDlFje}pVzR|@P4VwJ~onCX(z*I%baEnEjfT1)`aO`b z;@^UJSa&<%YzZ!9&5C68a>@y#5xThYy;9jDibsXzOJYYsvjB3A9rg51{u;N*tjU4G zsPtOfEvvENcm$%>6DXlD;FSDl;I_wRNs!quiU=Xt1?Y&!{|s3&QLi&0Q%XuRc~w zpIIS~SpT@buJKew+|e>_7C=x2D3Ys=I8AVgY{5BLT+Xi1ShXWO6b>cUtIA`x7!mL(Gr5z9naUjzJL3amp%`QxE z#|HI|d6E|2wl$(d_Rx~L#>j)3X1ow{fG84~OY8_QmI|;DS`4{N2Q`wDWv@wcP5<4p z@s1sg`{EE_%{Z=X1`ah8J?kHbc-jn^3oxZ{m)|dP`OXaw^RW1U z@$6Ew;h(wU&4%HpYv9kOw@y7>eB-FzBR3JDYas*5{+ zQl-0pCvf~Dz%a0C=!-N|m?haRWRy+mN_6m9gVd6wMjXmxo81)TP`09KL+TG|j6;hk zcr2$B0$~fYI>HiaIF;b2@m#uhkN(~<SRauh}fv3_XhuttaWK-MWX2rjP*7jT2pnJ+-;TMMxb57d_smSOr6T* z0-SD0SS~*7*5~~R33r9IFL+XRG3$F2;#WxO$#gy&((rb{ufkssK&875@zHDPO(=$# z=>{R$H?1564z?j_7Tm2F<13Cx89mg>z3V5gwO(m!_-#2_lBcph`YFuD^KArmguU9d zQ(U5UX2^29V05#6dTJ37gQGi<&wR^$p3pv3)`rcpfT$MtiHh$hC?&VJr5Oh%IPGdD z(XgShUH=kN)yoL_Fjf_8_Rn~2Ge5I3?n#Kgcj2qs#e1q|!g_Ah%sd#!?acZk^A=o* zX2!$ufO;-A_@U;}wdj)nU%ve;<*&Fz(Q&GdOy55O%YTKAoue@)OJdtDu7s130BF6h zh-_|}?NONa`sZJP8Y}pL<#{DGaWt%K7Pxq0Ihv)+8@l<=ec9bbEtly#s^YeC!J2TN z01doTb0?LKTZFwhW3NG;#lw*F4vFv%X-79q^*q>dKipM1O}HRF2?GhY`#rRA#a)SCaV<6 z!NOLK=L#<77Obq7>ni#T4Ak4b!PGb(=h(2EIMMk)%rixVn5hCPAOG!eqp5E|zhGt) zDgYMqFstE>b-p3CG^`^n9?nZ;IV}-VppQK4l{}6E-OgNDW^5Kk?}cTVbu;Yp@=uFK z89z-0V)YD&5i{bfS2nxm^P{zF&AjEe?P49& z+(>RWgDIkllkYIFKYdoLNAX4#4+}EsGsat+|KppSXFdPu_J5O~4UZa4BVE3&!GxtY z+#O`4HHC`Bs_A|>V-Z~n3omfmB3p?c`%}+s><8fm@zI0^3Qg{^93{b$6m z=3TFr4b`_6Po`_ix!rF2b8Ft(&oLRbYy=|YE*-{fF+W(UOL7K{w_JQUI{Wxi`cTy^ zlhCrDCRNF?bYWc&S*40f`$cMkIJVoydY6D$FW>2;b8zAA26QWeRj^&9;&;f>=(Ega zT-#e7X(~iwfU06Mbjtdz$W;O8O-_tB2g@cM4>0%PY#G)-v)S{kUTD7#Wd>UzcxHdm z)dA-&{b?8w(5j$ze?D87?Ha-b{C^lbhu~b;XiLYoZ9DnmoY=N)+qP}nwr%sowv!VZ z{olc@>Ol{B_zw2)t=fC7RqJ6lZ{qLU44~!X`le>&3VjI^d7X7gbN&677A?lYE$MGbdisk>mGicbBvWx zv2kR$FI7_61~u{K+kgRk#{q?%MCgsSme(Y_t>E7Pcv0>9-vqeW{b!Zf&#ltZvv_9f zW(*AX*|G8q9f4(|z8h@BC=Kz5n?EWozXmvf1Ep|KG}CF!moXqoI>#%kBA5F_BrJ~| z46JS5L#fidS+WG~!k90^H^hW?aWr{T@vFTsoY2#Z{AX`GLMJ5F9grh zc|>q*IpMTK-!3gO%ctZYE=X)+e+mLH{M zj|lk_m;bZ;+oaDM_1NHWIm$I!*R66<&R*msiuys@+4KZ6)uSxJI~K&%jE?Q6Dn zfhI8W&)&<+bv655+0kx;oK{5$S*6U_4H4LW;Poj}BufuGTjMEJlxpv@OWCYYT<$uL z^#u>q)I!KcJHK`86pc?fCeUu6X%}(TOItU!My9B42e3 zrN7WFAj#!RlmC<0y48u@c4-yzDk&XbY-p|rDwS_ z$jVX{Y%?P7msP=8I zmV}Qkytb)_&T_pslDN6#*UirY-1eEo#f6Ip`_m*9e-?2hJyA54xe(x$Rmg=48eNXO zf0T{B*!UHM@Qfd1$c-TRdvbcDT|9&wc);kg`yIE?@Pw~d;D*740c1h!+uOcPgaO>V z4?8COs?DrVB~US%RJ3xd?7~Ir5&Z(WbV{;z&~XHI{}e8D%3)M##AzDy860%LD~(q3 zSqI~tm8fcrc6%%g)kYAqUMG6Wr?!RCTJA|j=V<)fz2}_n0_%UV`!-zi&pf(ZHqE72 zCtkZPsOM_S98OBIj%jgF4_#F5hiip+Y6%>zr6`MhQ47D0!(B@c){{(P*mMpWxSm{`b`+8MzQMl=H`#Y=Ut#q|$sXsAlT%u|?<1Y13*@kY}IR)iQ+^V<1p4$R!7 zzVIRl>g;1ABxy)ec_=@0pu+x|t}Bbb{#And%Z6aw18E*{VEV>qAoUA$VOm61?Dn;k z2`MCtoOS5Q!E*i!Rzsn@L0X)Hia$M?x|Ghe5!dEgMUTo-Vl%z3Swjp!eDDM-a*n?FnVEQm?kTQb_tdJ#oAHv??n@$~3eL6*`27y66 z0tQs>9;g=`@&jM#qwpgh<6r%;@-w=NI1dL$rrVuk_cUp5w5%F%)Y{i=ycRPOlN#B2D9Fv@f%>P@gMNqqKuI|}Gr@%2@J@=^77B!6&kldqoc4dcx#uJ7}(0}qd)dQ-%o=JweFw+b*O`A(7W(gu!=CK$F<93l>nTTZW3D8j1SHh zC6MFvzm%$hK28YdoRxKp7j~tEK6MxwdYe%aU=Euwh^MnxCAH!FzeUF7r@cC#8g$$C4T1D9L32>U0?_s~5nwyLH z{DSeGxN2{A^ZCQBpdC}i-p0}bEr}(0x1r|-d*f}F->=E*7?$t)TSN@qVe-SOX4hb# zU#`pR)Y%_^vyl`{V`yZP-u#wj&2#3dcy}$nQWq;|+W?)0`KmiEzr#wt<{zY7oNJdqk72%T zYoguDeomZxawk#Br6grUZ;?4LGU76;13VQki;gd^K)5MsO@Xh>7aS7n!AJ#NEfv@0 z@{vr0FTlj(e%WN$a#7_6(E#odMVhQ$&rp(ltO$IKSY;d@uKFSIOhSkNbP1-M@hT6i z2c)#alhcS?gCab1Z)TL**@QW^E;96JJj=9k@gN_D?z68Qc1HX*Fb@+v+r3GC>huVY zjKdBx?{UuqzCZIL?B1cS*F^;QyChAeuzo5fcslQDPw3-)_*pr>p`IV5Y-B(Qm^gd? zZZJ)*w0dvm_90%NZ5*r)qWUHT4{f(DZcY&ZXN~)mgqBdvei zq2Apfotj1NzabqM%gqC&GXnJ{@A1jUC3&(yFB8ZtpQ}VH4GUcn0XXLat87|Oth?q5 z6F_r&#E}j^4GIrra-n}1Ipe6ZQbah_oOjRM7DjVrBlfN6yH8g0P@KI&F=~34n}o#A z{JbKRDQEc{x2Cm>B&qD5l`H%jp5X%$UkGP(8Bn@+(5}V;O!etg9T1~Yy_|*qOhR7! ze|o$Bg{l#n$&x?_s_6xf&JK^_itE4w7GWB_EW$YGu%?!HzKBNzq7{*FXLOWJ(OAyf zL*G(X^Bhat@?t<_ANAf{>UgW?^N?uNeHen<1uOFfyCWP`4#xV0D-AjJ0@S!)yp%)Q zHs)dKZCs`=nl>f*N4mA&y+F*==|9^2J9$|qrMY05e~LaCZwbye_ApmWv<)AZ9#GqG zfrBd;M8?_-%wpG^0E{vbg1{_jQ28BW-sHU#Ht{&pizl80iAWt8Hhr}diX(N{w1$gZ zaEtV!k9s?BJPwEZgfrTa{cFl+I|-{nWw|$XJW-DZ>Iqg8fneMRWfSc|Z1ZDrI3B&? zo$0Jtx~QTp;^5>`QP!-L<~=wcSGDmD6uqGkC>6})6cO(n(8dU51H?E??$@%uhf(qmrnHy07<35E<*GXOQ^F#c{Om#snMO=8%I-4Eeic{ zY?RLRPKmWwdgeNi?xaM!TTBP!9u>dZOremHf@;&}iqjynixgk6A0|$cJi(k)`8Xz{XU!3J?q2Yy;c)46;P!NT_Az_@*g?X-l{<%=oG zZ0OE3_8qIPe7F+co=MX{sU-lRJhGX|gjt_+X*lP7){eua8EzQIfoLSFsEwxk zO3e(P$}}w*kwEuQ=ZzNC>}j~ler7P4g}G8d>@mQ6dGB-%woj>89YI_ykdhq0$)jyJ z-&ZB%yt?$2%vYx$_7c-7QDauf4XLfN!G?AjK;B<2<(+L`3auVlU-!=jV++*=)IEc8 z8f6=5yL)T<1ta_Q03nyS(aOxw$J(Z?8Af3wBYRu145U*#u&LnuL{lHjnQXORl!QB zGao5dK_5%x`{<}euHb}r!aZry2Nz@^3h#zRqdp=Pph`_!u6Q+bUm4Pj-DM)423p@v zCaWy=YE}~6qzZsbQEn9)9oeTIL6a~L4D62q6*=18?qXNK9zi;fOFVyyn_&3{c7+s> zSrcXjr(q2&JoO^9`PM(-ySvlIs<9NG+to}m{e@oQ;L%Td+^ju1RcKNuNe+(+u&4?@ zVkv;Ev-H#1PGGaZ=r#&zi}kZ?2jYmojhg#1TdMPu+>UoiO%>O1^1V$l`m@F@gXdH@ zP2ok-*}m&k|GER^pfSS%<=iTCq4ASY3TinHget%4yDwhCuKC)1H4rE2<`ur|%Pf~D z3}&JuxnGn$5&Tism8zuR5GpTs<>y_WR7WbH4j=d4Y+nXimFFAL{4FtLmobA~9s$5j zq3zg0I(-moz(YX2klOPVC`H=wF-p?}>ql#Svl~;4Jpf4NcG9@n(E0*VA zRA06+83pbUc2Do%#mJC8gecWkTJi8Fj(erUM}|NoCh{C>f9@vzD`DGf*CMB?g|eB> z&)edn=soc*%p|Q6t~)pV4(HZQ3yyn*`Hvv7;w<-Nm~58l<%Z-C6>>Z9cCb!{MOtK?HPY zkL$Mlinp$CT)|Ej!Vd84-PvB<3Yj_Hdl?7!6uf&V>z`nzxke~mW;1c7Dv>+Jf8J)n zM7g5lD{{Z9R?k}a?T;+nvy%BUScNCy|1#Rb;mi$K>^n-eOc95<)tuY9%&v_68A~i= z!q%Q(8@4qFHfV@Y50YQYZ@*1rEL7lXbzl*tNI@WlL$7h(A-{sMU1ZoZMQjIRzKCIa zr2A>~XHOR}az|aig91~C4671`xCF3+68t z`DSY)`revfk#_uW3vrj^jXtaR@z9`Z0h=rWfw!Y1@6&~lZ6tE#R+s_X9<8YM94j~~ zSKujad8HnsK(}tAEgz(j&JG7hBlG-<9tW#N^k?7KRAo1d0A6FW2L|FOsCh&lK-4A^ zWb$0C-8-gFM8jj_Y5dy6MaehY#XG4&Or=MmsJ>wa@4eL{p_(xILX3x>_Mm`UyEj z=++ePI>D}$8QNvP_OD*QN?vR%dmM=QFSB=?s1Z|llrS*!XrFbYI2`N9CPz^rC$`mP z(?2Wsd+YA8hVzXAYsb?>c$Iiy1Qka0*wJO)I!Y!B;@+wh?zZGB>Z7ACbT=sI9*$O} z2xKqEOk%&@rCKOova>w;90xfr)h+CykV;+fwzJf8uBFO*XmK9QOO!8|fRD{XMHSby zAy5$6fPP1fUya&@-%iZlq1XP5y@6U-U}yWoi_$Z<;3aw-vGGTn} zAcsUCOfvidTm&%L6&vlTiTHUNEy&jDR(wE>e+D@(uJOWlc~}EV;iBQtKN{=-RmaDB zy?Vp&n`W}>u2=rP+7&|>-hQp4G$H4vRCi9ni=hNt8|K)*>aouE^6Zmt{~Y+eRokHb zoF@!xzxRmxS*gncmdczTY9)WXrgENBo2*hfYg&D(XQLd~w2zo`6BDL#*7q*fDzl>X zJ8zffmgunW5vZ;GFCR3-MxZvuB_vaSOBCo#>yy2Vnk$ISSR;_XmL&nsp z9eLcsK~2~_^5+`7lTSibMkAlHSw8U;*$P%xn}MSe3_ACJ4eRc;gyE^}`|22k#P%o4Q8=iAm6G7v&aO9act& zI|>cYKqCfdhFA}SY6LsAB%3wAPFSa#ui<%5eMMNylaD#kvD2oI2%OB$X~$xh>rM-4yzT4`CgfP==_9fF;4whTkMN zNmGw#imClpov#7zPbgSQG68)lcL}c6>dvY);uZln zb>fVKju@2RUPp+rV6)t-TnA;FEx4R?Lp9ng5_}{ij`&^O3arM!G{36Ze&b`6>}@qN z;ulQDysr6XyF@a&EAVGGR&xq^28?L*<-K}9-RR^LCHOM30 zrdKtbLiFArI~hhV=o@wLUkKd1zPgpHUdwAfG$qHS=ut3CI`mig&%qoJM^&kixB}OF z52LLdw$k$xJaCYEl%;i1#k7pE^sc_QcCN~ZgT5@kP{IO8NWVA4P05Jgaj#0^b3Vy}NdZ@eqD8PTY91R&GL@Ce{_k`lL4q0oZjLXE1>T92yoh7ROQ` zvU_tI^3?6;8DwPDHdw4=U|W~nfFY7eu}x8L-b4N|kwkwX`PmO@II&UGF7%^22c6vS zR1|CJGt@V*Q{GL0mL#{enn&CO*4z{$?sIw3g5w@nkl6!q3G>J0seY8{SuN5@e%}dl zI_vKPKhN@ujJyYQ$y*gTaR(v<vIjHL@hANfq}Uj+7OCF<{U}+kKj~cr2gjI zHN9|+kcWNyF&$HUZ#6akTL+6yAh_(5Jjq|<8f&Ys0MXVr`vD%Yn2X)P@eS9&T*a~C z!zE4iAl;G4)^+B}VrP|A(bDG!r^Dk^kmcCQWS6O61m>u`Fl|SkjdR>9t$8ox;-EG+ zq-gWQm6Z8JSH|B-`#pvo-@F8-9v=p@rGaCzG@tbYg*zENRZh^*;Tb+<&ezVRc>{ne zEAazUE6U=84EhDVB$J6mNV}lTGiUV`5QX{Lst*ocp(bTcZ|c&@)4-)nYjEYvzmp8| ztsmaLel-{}i!^NO%(XLS1Ie5i&dgul#(C+=iwMoc_dylu!BV51+EpMrgS7t2aQvzv z9tCp!B<-eDs%<^R6dCKTne7Q9?t93f>X`|@wN@&THbRd^X1@Bh;>{~A3a(KJ{%n6f zVL?OdqN}$X`lhex^j*B=rz{(rRKhHTPn$k&NfrMSD(P?}3|D|S!xrc2#9C^c?Nmt{ zV?M_u$Jvo@1IzN)bsgOAd=x|etA=Kdlbqg9!b9!f36i)+Qp4O;YWIHe%mUBeEZ-2Q z`sw~%cw?jINXwJjn3r>}$UV`swLauUujf3aD0OEk#+p)2=NlN;EGO6IUFHH0km4uJ zf7Cp{NW;+_H^aZTULc8CVa)V%!2|Q{lWMVAW#k}@k`0D^{qsB^`9O>#gyq#&K2_!h zw?VU%?_q1|rsui3JjQG^pGiB=95q0&;wK>_%^en^Fo2iVdri#b-50SJ8~#Y+-HNpJ zZzEj{*6E&z(>|>i?uy#OuCQi3^(4lT=az@GT0TWG!_{|*I$19(f_x|-8r3tM* zI`DmS{kJV@_`BrEXGrKpLS(e0tv+V%VCm0=4+Cga{XRc*(4y)4*^!t{m3h}JQQx9k z!*n(@rQ8JrqRLjsEZ3+8D_Wh30aiCM%=PU0#OY9g$9eQ=r$!j+9-&!7r_k8)OI`m# z)05j_nop00!9iC3KpQZ@9g{Mp4}@Q0yULbpj_e=8IR3lEEzbPSr~p-daK?1jEz;n` zkmhGEk(ZoLK6u!e7+G z3}A+2S7JKX4>A24zi~93W0Sq8(hgy4=M#@j*A8IP-zMA3NplMvfA@;4&y zB1KPkh+k%3xG4UYv+2Q0x!7#x?6~*CBs52NOQc`X0w==-;$y9AFc8m95DCixFz6v` zNjL3$828R_tB~)Dl@wMF8ht|XKi+x5B-iD{U_sEw?J-CLG{11M!^XPDOz`JT@e>h( z76PhuUU(dmU&#)79sdM4n(^L$@#yBptkp039D-|XZd92Xz2{`5?>C~R0d>asT*9x` z?S&iQ5>#zg(Djf=)YD{|YJ5hz5&pGTHWnrHx@*G07Bb4YeK zP~E1ip|x+rQII%VGy)X4>ANBQ{w|13o=2&W@%YeQ$!55x7pK>mY5{&#aip#LDI8HL z0U}v-k0`&2L|vS@^&akf1Y+ZG1_?IOver&{-L7dpL8S9fM$?zMKdH41X$_$6nzXSA z6KYEEC^gwQ7Ad5Q{`L_T0`*`;+W+W{$herQG~vQ( zae1`fbV{?-xTR0q=Rle)W)jZd<(*i-bH{{>1dK`d3#3)6^^a*)oHhd7jt|F=fF4Gw ztm8npNk2vyvE6n1#y$KNG6iURHVEtyD__u`b0iB55C}^g#4f5#JZnOE@}I2qx-VhU zohjH?Sd`J7F@GB(j^k%8K0cHdD>)&4n`;5w!jcD*ZWmd4?raRA$cCsPak@&n#p+@L zM{;!VfVz`jP)KGv}_n#irexT;{aBUZjZbVZ- zIH6HV=MP18D(hADjq6oJ(kqI!3GmT(zfIax@v_KuPwM~oN_zogSy+o>Ev3!)_zCKS z?DOiS$+n$x_T>FF#zHA}vvY#8m(yzpuIk*isFTl)B_gCLZ`y)cO!1oROsG;53~A>*_H8glRgGI46@D0j zmE9ESmmVsw^Q~}ny;>+6p~Kx;Bp@KFb;)9w8o6DTU{44gf=r1Y6!;mPU>CHq{gWnz zlELaau$62DGGnQltVt?@qK-<>nS8}_@;+|s&%?c4f?qt9D{{M-9y3L&|&7MTwV1{ugl|8O^SU91~<~zl_4N|H&M6*l#6vowckio2%swOvJK^F!`wCo zE=^3~=Mcs8=)JG#P2q<+%@Ywn@N@(HtD};MWK>%|a78!FRJ9RMGNXQf2zeSVOJyBI zO&LS!S=unDidbC{+PAiU@1;%?+~nNxnJ>dr=@v2J7?(A#Vk6kI17>FLPgqgShOR2n z)bBT)b*%nD-=O(86r1xQIk`^kpgBDGUK`3+yxD0@99u^5!ywF3`E`0RE zqJwqz?A&>9nD=oWj8N-nt;@WmuZZ*5c4ISLFp{AT%|!Ff((ZFm+HUGKkQYV4Ir-{6QV;BX_^Dm zr)7>kgU%Mla>eGh^!5h#$u%-W+v~_xo9cagTbc3P9mDrm6+AUwkw`lEhSgij9=?+A z`exexKA9_tujF8flh<>-zLrJ7j{f8>;h@3>0HnVisWT6WksFn^N%tL>lS)#%)21!4 z8!kcVPKVT$PaTPz$$w|~TkYlfP!>`_Xj-2fM{}mPblLS*daA+mn`y;q>wD0SojZ}a z?(Hb0gNA{sfpGf5OX`D2mo9YZt>Onj%JN?z4w2MM<^k5^_TNi1qw&9AtREDp!?lo- z7k~a+TyCgad}Q&zO`YXSn-ehW2Saf?)*OViqP1kj^7X%ZfEk+O8j)?rWI5DDiu#Tk zLEl`+-AHd&^iqU09(i2YQAm&-dFnJ*Hj6d|UVyl9tTI$ePNYmNluvABucx zAIp4C80wsXdCWxfBhif*N#Gn{;tg(Xq1(dCyUJb2u^jc*nG!R1Q@CjuAqeKstGyI1 zG^_%!!bt>$a!p_2@ImG7Q5i++|_FBu@ZGY7fDa)YT! zu)@9dSWzQFbac$BhCL(n>rX(D>-euWE59+Aun0b_uy|uLqa-#v;`p=PC z+`zJYUAL2WuZ>z;8{J!;zmK+NmgZJ3nBdClkPvJ<(&Fj`Dd+xld?F71CZ__JK)9r& zq>z{ZpmQi7uM7>QFLa%izrb(pNf(Uw;@^F{2rmdg&4@4p`qF^?aehvFb5ahXfze6y z^Q&+B(O)r#|FBic(x{jL%nRE~2)FW2h|CMugkO#ia%luW_+#;d#vn{T&#!xoz403? zt?kYCU&cSL2P{-HG*yzYf4^kk`e_Uey%7UA@L@3n;xc2A2Sz4_5cc2R?!NaF(PHU- zmBEh)^{IIP-au>oqkb+I{xEKz^B2lL=FAm9zdUI@-{T`7z$yL^I_ZhAi^oUd7r&1g zzc&xR_FcbG55Fw?zwHE$>bTkctttMMzy2*^ZE5Uzzl;7e)z#DE*V7yRHUT@oY%4%N z&2>)yL6X$BeydZRm_OEmiFur}f7ut8G`E*PEvhUojEwH*E51n8KdlFC=xzd{UgpyL zb*X^3Da6Kpi$B+CP_N>phu@6}e${~a(@y=%(V78`9N*U685`@sVsdi-Ik<%4UxDjD zyE25<7BEk5-a)`{Pi`*^gbV?QUVT6SZ_1ATx#V2<0ivh$bHWh>1Eil|PGGpAUs1dn zAc#r+2=D=-XGljNtmB^oME-aF|L{o#clslfZ_FkB3*s^-{O6=)Q-n{*qL2L%SERv< zginQlpI|`zw`NALOH>&At#4lLQpGNa{ z*sgEd0evrT^>Y7r|BQ@ZSU(k$d&aj#r)mGe_%F5JAVQJaUvU16%`aF#h1PG-OumSX zZ|dXWm0M%0pVD6gtKV_};oQrw^tWQ?aR0veM%;fRroYi>f5kWE{GGl-1MCL;O@Eo( ze>xg|IDL>l|1QUmnmaT)fc#Y36OMLwZ2e9j6#K3D4WqnXIhT1W=?jFR#jC~AY1NTn3AZM(u&VK#WRRL#PKgV&FlPb zm8`T4GhaOz>?E_7y`$8!X0UPywXh4=N8=B->Y#5vhdAN0fb|{50)u6feOz6RMAZ9v z{Ovaifh(wK^^qa}YsyRYy6L|DwAqExa*->j^y%b7Of#lKM4`_4ongfy18>6FzuU6~ zr*c13DawU`_q?$NG*4@L=5aoHkJ|KV79MwhlJAn(U_`%gc0S=-dY=rM*xvK+UJF}? z$>PxV2qw%#cH3Bl(4PdZ<|!qvsk+MgG28#pqn5AQFhn6B?nu5Im1Qme0e>Pjfd2>h z1G7^aHi{GBzivs{Uw?5!p3GC3d!$oh}Q5s2pd2Kqjx$7b`-KB@+TFBim}E9$}bG# zYSy9^xD+Wp zu4l6ea@4B5Rw_zU1)w@hXl#WD|z22z15+b%BJip(R}%EF(eHUGty+z z6(yd9`vQ@j@jQn3B&@?vB{LG#X;{ty-DK4a|Glo(T6u^(k~iOtSC>x0WM*=L9RTUl zTpkR10lys{4h=V9zjCYX1g2l}MtaZe2RlVs8EO$dfr_?Oh0B$sX$Ny~?~8>U%oiC$ zs@idh7zfqOD=x>>(cD)In~d0F4+!&IxA{hY&n+=EDLAu9{!zqJuiwAR>Y##cY0ba@ zyHhMQ@;W*(u#x(u|AZ38CY^}Td6tKzddaYFei(CKf2#(LvseFN0e1j6u?F+?C*7; zyHfjZ@BjU%{otRqgBn~mybrWtk|Ez{4RZ@OU74a1;8Up=SKAvQGZhL>p*l?&)-7hD z@vlAs`FkkpMH+g=Rp($bVp^`=6+tczFp=$~nTM{h?M{F}4h>fZRaoPTsbLA0bo1_} zVo~Fvi;F#Rsv(c^xt8r5Pe!k4t(4Jck1N;nPb zRG<^`6DY^}H>J?80TK_Q**){L2x!Wp)Y6tRc#&M~J22cDuaE*2i!uoB)RL(Oe5L$b z^?^8(IPhowN{?Q9sYshte<+T*>rL>&HVUXmb@Tlb6_|+2Nr(kC>m>mme@t&o# z-PD)h0i8$P`MLJr6?pu<&s^uSYUp)W>(Bdm!JsOahXRKgWA;Vm&7PNycw0lN>rUy8 zL3s-PZFT(%)%Oqs(CYS`r@qm0LVPT+>`H5Y2M0wP>f=%je%nZz~C3UF|2)_8hpaM=n?D?ws zxP2m0o>d9TAoDa%OXNAb{b@D>CrG4U_0=mQqg5!b6Okb1Cx#cw);dnQmAskdd)`vv zR3zlzD=}%Y+u1%5I?tv7Z_;ujxNj&|GMkjtgSNO%pP*CbU`BSo5bu8q4G-f`-Sqy};rQUE*ZDR)@}hNg zMm_8aUu_y{++N_`gHxw0a)i=chL(fuB8tey^h|>sB$SIK$TRcl_fZ4X$0$SBJ82Sb zp$&cNsl(Wtvx&d|{1ll7Z*VkL=R3lIuqRmF*i3(@v&RtmkYi}pXcN8t zqplB0h$QPhf75HUJ;i(^%k3bo*F<%2l3YueYc@vdsZtH0g=*xI4K4Lak4<*+8Q~b<|QW%Jll(Bqm3T<+7 zDr-WgYJ|dob5QfV|D=o3Q<+4PA=zocpy$|66a@(M#j2ZC;RxiX8zk~#S?iuZV;k=D z_J^M0Zkxd1p};`AVN9q2bCx;g;bs0Y_oa zWja>(9&_NCTgJTf=`E{0ErFV%1{wscSLmu1JyfbMUN|m|{z>m+tQJHO)EBnr$Q}VG zXO7D7<_3D!bv#5X$0&|+8JeiL&!Mwz`E-~OulvIutFe%S`}0Ls7bku&$UWW=7w0@# zT4et1zbX%Xs;>xH!Ib1+DINmH#StrLz`;3!S;t=lzD9(#lnr;6`WW!r&hpabEv2Vx z7yc>x+%@%l|CkFoPLYCj5WpX6&ua!0I?K>#butoOvN4{;mDmxU1K3#G9_i>jrvxod5}3m5+o%;^8gz^mqbAsu@ps(*Gl%oT=(5MuutL6YbvLJ}fA;7ueWL7L z(+L-?x}F3Wi6C=(w+ug=+3_i`2)8kEMnC%3Q>j;W_lMQNf|}-d)yx4OdWZW;&ZHfDxjAgI$H&|e_j0+x`Lk9*Jh;3{>hS5vQC5&LIs5WeLxjFy z7JCugif}U29R`?ITn;fvuHRgK$#;&?qB;&?sH)3fr-V*6iEwVNbvjSw1_u}T+|lw9 zc+-lz>F$Ls(P!bp6b!;bSfQUa0bkuKNU~J)Qv@r+9>+p(_ipT@%7IGUZoThqtEOOD zB;+O&LlYwza}TFr%e{J`)>Vp(!Ab!om7otHCPiNl$RWl?Y;d|RgF$I&WLE$St4Fu@ ziNi{Yy-T(@gBD38RzuTsG9Q%c0McJOw8aYoaf;B02Q(pi_YBZLhLhOj5U*IY5sP5( zX%PoWbQa|(!8;bYT~eJlp*5X}n+Bzj=0tCBJ#+KGZIKKFGwABHa+{ zq#^!Y?Q!U=F)S=E_qEp`qFHkre?CE|iYMb}e(L?Ai05_38F-tVD%&x!Dsud6`ua1* zwrFBvdG8+8b&S?$*Ra|d+>&s?vuML1TXqrgfPcxJN zYk`Unn(v9KckrmZNa}52vT8%)oLJxA@3?wtk_ZzOBLc)9si-k_Nh@IdKckPy3+w{3 z#VJ#iz6SE0>w|DT_!wY*9E~dAVOOfYTA;uNrEKTh{k8~yzBu? zOI2pZFYx@|TJrVYV1{9-^MBL0kJ4 zUpy-}C}nhVsXViQ=})=H3CC9+Wj@ukqEwr?fQwRTbf4~|T-fcuf`6LcyYl^EPn6t~ zg+@TP<<vB!e@B!}&XGr}dg*FWkQ@ zZPULp{@%I=HQO_b!tpTH6mfV-oKAco zc7HIfGna1psRXTko9MxpAs~^QuVLT)^T+MQpF@8sKN@{stj#3?Q!>@m)hx z*NV-Fy*+#`1shNQ39iLvYfSgT`U2b^KM}SA>=X6Ctf!fk!)DZGV$ZTIo$?TfTH%Q4 zpF*-)10)g3ZC%KkmU70;!yu9jlGzh$=!TaVJx%;W5_@tN(5)H1YR5&eM%(=#%w$Le z+8+Jzrm&t0%DLTxnZLTzu1+Y{ouV@H!(bbhES^p@l&Y(7fnDLPPraf}B*~d>_OJd= zr43jL_-LZ<|6%MLqC|(bEm}5j*|u%lwr$(CZR?hA*|u%lwtv0G>%GQLV~??uG;-2N za@IJRQ$mzUeyqyb8T;8q8t#b8Zt7uWg~)iwbm7c5$_M$3zB4wT-Tw%evH9^fGC#G8 z+4j}Vy|=8(3(i&SEH77_RKPSv4G;igO})M5VC{x9AJ3~p~3*d?g5 ze=q1zi;xP^G4%9??=%qO<+);?H{$`FcX*Yx7kK2r$MrSD0{!4H{+6)T*{G0UEn39J znUy(HVZFX8_O;|iyO#VQd8OM<*+dLQO8uhBcYCsV=MaQEA&b4$*l< zfMN~zO>s@Lx4B>iub{f?PA0VBlA$9Ci{SOYjHN?>U6EFCC&5Sz=yVO4WS$W{Tl;myGpbjj~Hal)7On zCxXXDx#W#gD`f#fLj9p@Mj_k=g=hopado?@>#$M`Wt+$X84lI;_NS97m}Fo|wi zPF)JyQAPM7*Sk>4%0~a=^>2;|@qtn=tl8g$>LR}RL>Wkb zPx&mSMmxT=BDIdbwo}0cfg+nWpGVM*3?8#L)9k}&qLit*DI<_3F3!w!OmaU>K@Px zakRa&CR$?aUCOJViX_lUH6Lqmj;XCsCbBPKa6C0X-#cwUI~zIEVD2}$%8SO4_s93c zHluKMYVt)nS!}6O2mmK{AG;EquiMI$Gqzg+h;fOQ02Y^ieWAaI7 zm#}5;fEFk>il&P1{LO-Oc_MnZq|yqwf?ut&eWvs5_XjPE6Hi#9`= z6Gp$6`E_)WK17rGe#5dFF!B$FE&_#-Zvs{Rw1;)nu5$#g27>RMJpgS4j2N=P^XJ{e z-oJVk!Bmz8dD0(T4&8sgSMPgdCbby6OpD<~$`xWxR0U7OP;vG~1|mw^6*+`oYwGJ9 zgooYSEg?J`B<>c4!I+lY3Q26X!T^gb5u-HugnNcG2iqTkoNU#@%JzP z8M;MqqCJj!Bss0$-wPDBzH)Ve2cxp5&w=s=o2M~?e_A&vJX$9+Zp@@ReKOA)^f6c2 z-}Kr-(JnsU|*chFPW*)6)B%A+jczeTwWB*r%U#GF|+?*$#%e)xJ@l2)Pyt%0(@g zaQ#v`>>5AU+DeEmQDMC_V96l-V+!2Fr#~M68qoEDQqJTo8jtD&{&RKS#?mVa3=v=U z?)(V-y@ru9tL0F9K}#tN16QPql&1z<$5+~a)V9f_KOj?LgY;Q7y2{$92xZB1#)>qH zsIL8Y&649pxd0eN#Y8!WkNEFW!Uy9~xIX~LuZ-QD8q4;?2s1ctQ154#OoPuB%wGrF zG!8pv_~dr-=WQtj;~7d@ql+kUF(F>_~K_plvgV%QvH~G$g1x<9|^GJ z5Y(vebI4GW_X_LZEPz11A8 zp|7uX8(OX$^;Rm%SMc+!G|3I-(w+c+TUgF5Dq(e2SA z`=Xj+t)$fn0Ri`YklMuK--H4aQcZ^brtiAM794xG8xiu+rPc|iMzjO)i?&3@@3}_G zr5%zZ_TO8e#f-%rHIZUbflSGF5l!bLW(l^Ck*a!bu@KtjIUvTp7!rSh;BU~bUI7WO!SsL{JiGqNZ=|6#ptWVU;nYMu&D2AK-oHVRLyqh)y9 zOkslf!h@__aG6cX*Sb=Bg|4(*km@+I@ZWG9FC2bo-!l$9$^5`dGVltTqWiliC|5H$ z+o3E%t`8grd*jZ|*vM!X^9Ag|%L8w4r={s&O7ATnCA2+%>-uj+3Y|$sTA1JjToM!T zdmc0xw17aSrT8*uoD2k2dYD^2U96by(!nQ6e0Vg+aHz~}0{A>OC93eVyID_;cqS4&y zMzxCS5aga6;T=+iGEZAHqh8PAm@tf;dNC23$(7Dig{PgcQ9DozZ$X>)K3|c=8wMi# z4f38apWR4gh-CAZ+o}N~(`Cpw0dYbfIfKiotT!y?Vjq^x{_z|>32gA)q5Vh&bwWIK z&)`J-S=Lu}?U=7z9$&HSC+72VdEOL~jvu|~#R79TQCd&%F<&sYJ@0Ppkt`j+8_3r8 zoc^o9>VSOUAQyq7grlWmXLBBEF8#*h&xb(vv38_%R|D2M!{wT~{dhW<^%?M0gfN5wAsS*KbEb|4c5!?Z z5YtV!ndkaviz=h(1+ac6uGr}Qs7tA(BjYla$Tr9Jy6Mix}d|@BR^#`b`eEDf*Ha7P6Ys=LY6Ro_WRh~_}EP1S{&^`Q9P4!@rT1-s? zC&Kj?eDf8_UngriOQnE`zNH@Szr*9o@>`xUXdRuu4rillQ+0o;LL>5%)gF0W=qwbM zkeZQykokhZMfVosx>pLOE0)@e2w^*rEJ)R8lHt`K=-3-gyf-+99!er0=a9s`pIrR8 zIA^2VK65&8(-y5H8=3>kH_p-WbT4;qj1FSs{D_CqWt?sZ23>M_WytJjb+XeZxU`Am zIaLwy1n3Z+iBZNO8*BnWEP zmNH)9RU^QeMaUN~jk&U-b%eKpErt`CYY(TqPp>ziuSD?RH>fF!reh*lR@Q8==vqzZ zYcu+w6g>W&>Hm0R`N+rWrn8L9Wf+eLfT0m>(bk`WzTcvysZEKgz$QDc>w)0L)yB0> zaxMmIlaDCG4d_fHl`_+=) zPoY#n#^t|yTjBTvKhz8lo{nCk*+}Qh-@-L9(*w8%;=`b#wS?*f1!|X99?zv8EXNi) zg@G#Ka|P}`53a-4?WMuSnK~1vp3}SessM6umEIT~UpP@3CJsxrm>0IcbQ|)RD8Vff z+wqGNg~0z<$i#T?WH{4^KAd?TTRlv+XDejfVo|ln;Il@-Dm1$5R>MKD9`JADNBbZA z{k_wKKsbyjbQR<<0&7Sd;9s_%W1N>{V;Ux?JjSIVk_=8u+|+J*Q%t5Icj2l$@YXgU z7Lbonx#7{sx$;R6u1?}DnskBR^_h6G!2?B?C3f*@+PnEPUhzZuhiw`aj*{7BNsL-C zfL}m8fs_xHdU~($WjmR#9{{jJjMMQU9Wnnu*C%Q|r& z!FmV}4;(y&oxN|2|A`yt2a=vKH+QJ|voPEs=pow1^zc0s1~BMH_%)zY+&-pUT$9im zYPu0w^cYAo7`un*bG!g7O<@5S5O%-oVs8gE-@ZI}VIG7+h}T_UWk;t$`+`zo?pu*Qxgo<-3o`5gT)1c{ z!VNP54_{5#mRCmla5f3LWLak(ZJ4Wnm1rLba(kTobDU=?=f?FP%PWrtwED2!_m46! zli%X7PNe<0KsPl_MJb7L#&ke?m;B3ctLAl?(C-tjn&1u1mtB4Te0WQG>8NOOk^>s8Aqi48b7w`I8!Am>c0LUgLszZX z=bEe`eTa7KzT4=eK>=HK4tOMjlk1gBax?b1$37>NO75Tmd#fqeK#MjwT)#CuX$|M z*z>a#j7N=Eqd#9e%|k2x6E@pS9NiT8Z?w_UCMsXQ9Bt>+xW8(!{XG`TuGZ!wHu!!n z81)TypX@HkRam*BG|^M(%B)JJv%;q5!KE$Mo){0-G89@0aVpBAdRwe@)yP{01Eno$ zb)G_p8Qm~zgxhazeyFd+l7B+_))MbzxcJA%+2cePx&nj@V=0t@e9DEAN7YS`8N%%? z+GJce>nx9zx>wf#umC+-$#VxU0M;!e6bTIn`~z5|9eV$M5kTE3 zYqq28>p|VbO65nt_US-S&i8_dAN{B_B6L*fCVnsG2G5Rq`BO{$=e6m4 z#(agC$`*h9o9RLAYA zN#*$IEhNW}mXSw47}3zMI7z~iJ&=Wi00;STZ!VG!@hE-y30LZzXs(m@8q}RQ6qkKoi##Y1j)YSD9ntHnqxvU9W0EHa0HQlnGc?303*5zz<}d^lg-X&L5+{szfi1^t4LTBs`~5F@p8O7I=m0 zErWfZ-=Dm02QWH;nR5r{Lyv#a#+ymp(|SlDJfSRxo?`Li<&M30bg30-L>y%R`0mA; zvQLIIp`jkJZJv}LHwrD2AkXYMYhtFfy7--kc2ZoAo2w5*aqBl;})RJk|B2v9|NUDu{Z}eZV;POw!|YdK*InrD&_xI$hLkpqTF_@xlyE zrDnIVvIHrPd&ujP=)lP4S5j&Nh;dj+FBSmEKHuU(4=>fX$`jm}VVqcWNX58c^;WhH zw`t7l4gQClZaiU(k)d`Z(2uPg#Y<9{gU>g+`%3Z)#r0dOw{}eTSk!=f9f}RPg7(cA zSk4%#Eyow7J?>qmfYdd(r;KSRB!Czz{o=InsnnJNV&z~s>GaO!Da(JME-45G^Lx`C zr;J|A2{+U;h-C?$?IjkZJEOLU-Otr)wubdJ3kfLJni#N4(qthmSFrsMWmb()yIC@_ zz8tNHv{t%}l@6(+50-jfemveS`7Y7s=GjjiPbXnw*D?G^b5oFqDiTXnd{j%BEU%;| z-sG8grvNx@qn5nFpSzt`su?~E*IsCp7%>0MJh~_|3MQWud%GGp;%XzC&piPfl82u( z>`mH)IF(K-Eel%`Wkbflpjvg|uILAVj_-C*DiJ8K^uug^O`BB7gsuml;H1UiXjF!E zioR&@bLjUQYE|~}7i~kwl3Z4pYw9A)RP8$KCy&HM1F_XswZ79ES!Bt=Q3K@YC&9Rd z?U&XW&AzU{@u%ZdRB?LPPn$S+DD*M7il;)<@yO$BbJ!Rn4@@?w1@K=(BcZ)z(>a8q*EDiI>?zj>D8$bsKBX(4zjJ z?Z1A<>WjoLPa0Ec?(gXiwaZq!OA|fKzO_c9oDhN3QQN++sGEQ&1UO^`Y>M8(&LY^( z9*ppk=ssty6sAh6o5)*rq|~h`xj$P^8PYb*P;X?zXYuGF#}^HSerIrK=&>D_K1LAk z@vk$Dx)J(og1OW{xd~_^(V{x4urEY3cM?5mHi-^yKXgf{fdS6fga_K=4GLR^9BNoYJbk@+ zNz6;+n8#pv)t_yMXOxC=I~%id?=sT0t)P6>zwl$^gY6w;OkZoNOKZ0(bwX4c^64dw z-z)2tm@jnnFl(g6`GDF{s&+=6{rSw-7+nGswRfH|UEH*-*DvB1NJC#%>bf0 zX1BY*=UWi^v2W#tl1zl7NZaaX5+mFEL@RI$4RFhRC?YnaG%-@ZtN71Gc*vDx`YF>j za}lF9U5&i=W=DyQgZs`v9Y_s+pGz#(XKj*bRxsMsYJ%R=hRTJ{)t}T-5n9J zGUDxPB78QTRhU;im#S6G1xE+%3~;uust7NLIdS`psaX|he%77E+hYD;svL@`p>vX{ ztuaQZ&anh$CS2oL=i*Y?&p0vkpjxc*2B#3% z@mjv3JRD{mG16?cbT!#`I+J;dogK|lJmz-@=nF|Kt;g?nnG{54`5Gt*NJ>HPKhiS7;S)aeI_q!vFsVvNUP@S?e$xhr4;3XzU$Se1 zLja`uXhKgF;xl9Eh@I~kR)-Qm9#-1VPAG6(KHa#_URti2=jut3q3p|!8mF(7m2wuj zU>W}0wp-9$`obX=Zg(+gE(=;WTV9%J|oM`t~cEh>R@I>%67cRA|0jR^PzUl zg??Fui863OKAlP#p-C|2&D@}wIKGzY{_c+<;P3c1mnlO&NKdN!OD&gGwg8^bits zsBf?ApXRQ?-1POdBhZfqCoBM@S{+_lbq-njPg87IHaCV=@`UQ0pcQzR*^*I&?Fj*9 ztABwlv4u3v6iI#2IYa1M)G)*;m?XcuZN+7x@k_+LFVfz#Bzsb_KHgDp*<2#J|tW7Io#gqc@!J% z{IoC85RdjDWYklmn3SEbBbp1=KRXj?# zV*iCdy7b`D;u*;IGo|ZHaK0_(v5=BCe3)R>EVFX1VwZm?M3sk*B%?aYuqVNB`qaNn z8eDP%NYqW!$pQrmMGE79wpKf9&n5Z9G@ z`<|`C0SM7<1s{_n@qTWAuEPc$AgqvF#Mh=LNpl|OyHAPU*ld$Xnx|_BD>?Aof;&u*9zKDEdK6 z>XwjA^qQXH5l_<8=u<@pzR3#`YP{k9$eCx6Y%p{8kyTT;tdHkPDCgl)9#4RQSh%kW zV6s~vx=JvcvUcc#6bg-7%ZBBrYSX3d z0I>{L=qfX9bbeP6Vz|K^{p?Cqeoh8HqpOa$b#+z?U-JO7UrwS2S&o*#aiJHuQpX|aBNc4)~Hjy%Lvx6srR|tF#*hTj%`D7ZOgOY zeKCJyPT7Q@)a{BVFPhUcTx{y`kf&vnltXhr4*Jta+tS(NNW8n$|5eikQUB2WeM+(_ z3`=Wy37tFSGxw@g&CQlK&HNZYlaBQ~8m$GfovSPTYbUC?e+Wr8yl)1SXirqfeB=d` zyOR~7jW1J$9Xp57S}wwxSc%t8g`WzhDfnBu*#bLQ6f@8jf9?A-&Me{6XOFxGiMuez z^nfrKzGe@!fKt+8MiN1xyw}qEaa{G#U{hv&7!zv^T3;M-tzuOVM&30(jaa9_Gx*er zN;7p}Fz3V`jjd)tW4A&}t5{v--xj2$yspf{SOWFpyJmF`$8+dJZ5;)AXbwXdbwWX( z6onaV0Vp6@vn|(L-F_;s;wa(#Kvw^j`JB@Kmdv$NCwLG zUQ`Y|dqF^;;rJRh*D~{WnDhEx@D~-{7H)#+O^$;a;$Q(DSPdQ-!9BC+l;1cgK0~UyO`i<({3yC@acl6$ZYN^E4YkfMxKcFB zbdI~(`>31 zwfO-jXm;-;-dHbFz>@G;_XnFqo-u2^Ojbx60j;9=jmJ7y!xvn_KvsYpxEeH~3SeA* z>%H@rle7fnQ>fQ$Q`DV-1~+xULtu#28CH(4fZ4cTHqLUH1;IT1o$auE+Yv~Gz6_vT z4Am5v8QAl{_|oTO7{?D^)QOj85#(@&A03~5Wqz^3l8zmz4Yz|Udf9NhV+Z6P-%Buh zfvc&i0m(F{gV<<{lv#_-D%V9*?{k%Fx;mv)Ct;4DrbV(xbgntY$uh|T>=q9 zS?#VVk$yxIEXKv@q1Er&qgk{lcTisjE!(psDjpYx_a*&t2F(tmd33bU10L8gfnV1j zWCGw`BYlv4`L{BIddyH)J!;bofi)p|vroV5qt*njxU6L4+_n>En~ESqKhIsoaciAb zKY_7t-WAwuw?FAiVRHfaDlqk3Yi1nG+fTf~{V3RTwO*F5+qKDNBq3WDSShI#ER7!sMB{kd| zAtpLmL?Z+*wkICd#>9)%+LTH+PXD+VZ3RM@i4V=yR*^3zCR&fZN=2=%@2L>TosAG0 zB2f)+LkvE{Irr}otKgn?su~XFK;s`fcZ8+7)7t9#5x8kb>-(YsnO5wc`GNj!!w04f z?^zJ*9K$!z&R#cv)aV!+R-hb=>Z3lO4xf>$O9K%PP)^s*uPvL7qsmwR?#*x@EeQwRgyHp z09l-3QUC}qqN--wuIIUU*+kNP)pZ?Fj5%`qp4k(|<`%!Ew;at%88$|gTQswk$XnG_ z5j+vlvVnxncCR`|W_g$o`XOB%t7xP5a$TK*q0d@z-J@ChMi>yG5ek%~BO)1C6AJAE(6EKGWIE#P#8wBDPVq z)A|&Ek&yqMT(ikej+v<8HK-Tzg4VIiNxHTlJ!shoWDuM1Y7$5N_p~Xai}o)4qpevs zizVQmt^(5Bmpy)la=iJgn~m~sf%&#F8KTw#E6S zj$Pgh{?2sfQ1chRJ+U5qRS;xuWY7X;|Di_q*V^+J+2Ev@F!R@NVHmi=r}c^Tww!H` zsIbv`o_9%*@rDXXF;_y;tEinGm+%6EfQh_4h0mbgzomJ%y`Tv0zxF-1<_cA~qnSke zs&tN!Wu;wSPm+swP9?BY91#Sm^B0w&m&3v^_2F@kExTPJiuVPG-5rq~y%p^bICius z>}}|9f^-;@HC1ZQFk&IS77?$JGeQzL$+h^^Tr=VKQ3&=Hwf8ntDnX{e2BiCZ_wm58 zm_7CjB)mPCx0zH|(uGx%QvOqy!*y5hnQ6%ZBnq_*JH`Vu<9CEv5$ zWdf;otaBu+&9fxjlhcaj?aj8T-y~S3KxHkngXXAwZc9&K<5!Hqy}kHkl<-ntR5V6l za(}0Waz;`m(#~HOK?}gKu=02&=dB!~b(pWJF0HK1gMPY~-@&6CzsQz2x#?) z&S1)WaA2lu9Q27wphmP*yl$pLM!qJ`OW;gSL-VPK+A#jHyI(^|@q9`;i28>IxflJ& zwAKim`7S^z_U<~ct}{0xtdP`e6nk7RE~^YG_NDU!Rc}08uo=OrsSwhDh73=kS<;P1A*h9Z)dBnr`R~DK8u>u z+4%!2rn!r(VpD*G4NzLp9Y+~(efWOvV&CCv{4~h7nZu~-!6SZ~wkGSzfm6E+bl$uY z2SJGLC*$3bG)zP|(7WX+VhRQ&1$z)uJwx@!CFZ@_hJsW%RUCEZ>m@=^4GTLu3>$Vm zem1*%b8*43P-}LKNt|#yW7B#Dq671D|6VVyy|#`K2>vH}@s5tHL^k%EDxHGv4Fet3V z&lE)dyjf!9jh-`8gv=f&eJb;YO6{>$qQQG+YQG1hE0NxhgW62+&rQx^^@kGfy6$6? zS2u}h9^p9n{Eh=m2l+XRCp82u%)f$DL7HP=73Kj#Z;VVTkzcWkcV{*EYb!~un7>#g z%w;l00zJ=(D*jKcIgN;HOduC55;FR|46nbZCY&UMv=nfTh~YdLz*h3b_A}K}&5@=Y zQ=W|ElV*OZE8=KpP7~gry#hM_Tu#&uV+HgMu~pdv(nM=-m*)mq?8b<-@VS$@j_NJ^OD;5#Q?5$Gp#E5W-#P zbZU+@{Ko6{@C8mQy>0@t<_O4bQBs;d2dtD!JjcEuY*7+DvXoXB`5J(yQ^Nq4?|pF8 zCrD>3z|9w#97~GmhfRP@mo6)MzKl>}X~dq3@oVMU8(~I;#AnH2nEiQ*x48)*G(?<| z=sIBoSrjDA!zAnC3mRfv1JOE*W42-LV)>J6Yn{bZC@JS2mW!GQTHVPzzY3b|LE|k8 zI;ugq7RJy`u087(_1is*bSkEpEh?o3k8OZ6envt9V#03V)}MVhi)8MCAkZ zCMMgI72pex+kjQqQ@?P`wB8+4;%rxz+)luA3&3h7(!5sfC$OJ#!R{LUh>}87CR4WO zOG=kG)upSZrg6nO24+>jAe=(Ae5EkqB=k6@|y3vH=l;ay6RU#DLD4my+RIljbhVtZGSN3a+}2h$>k)> zuJeawvF6-Z853+ETq;dO$4rpoIK;!n4szfyx{_XpYf>p#3Zd11m>R_<+E~d5ZkiLn z*yvCRm19v#8G!kV7`M~0aJ=$6H!Z`ad`p>uBxcY+-F3n$40L}!>`6Fn2xDu2O4pbY ztZ)H1hBg;*I}AMmqoaJ$IA+Lgp01UY;O9^U=BCcMvCxPogO9EHr3YPz9{#AiY@oEp z1q6)_+8!_(R>hTofL9!*U{`FBq(C6i76KI7S-+Znr9e|{J(sD{lpC+&CSKlHd2Uq) z1sf#G;@~KBH*^(xQ2x-B+X*r!{3DoW_1)P!w%_Yt#kWH7F~TqGg)MRjCMo`vS4ivz z@&1Kt8N9jmS<|NL$5grwcC-z^6Z;+)!o|mFtm3|x={T6%%8f-W;>HY}8ZEsI)sTnA0%U!-b#@s6Wnxa85aga)rRXUFW(LZe(yS8&pz~L?g!jy&yw?N;uY#3%U0BF=^v!D2+S`ykT?TOsJKT2svidR2 zA47V(xg$Aj!Us7%yBdl3CJ`cwdLN2tn_>7J@9YQstZWuOfXc<%}+me5zA;OLO%006?6>a=O0;Q$NihiW$B=%Dl;wKS#v_f6*k=Xp;06Q!s5=!kv#jMj$ z3&w57aio?hJH`dPxsA*nYkCIpF|YzVCNJHjztA zBRcN&CYAKi2+Hndsf25zdV1u0Qo%QX+P%|kg318;#uoElrzAxKb+N^JC;nnDzf~iv zpM6ci2i?^Z2XYP1$=w{FVLI9$&|in0UtDoR(S0@UFMMyUK_n*=Ph}!pt-Ne}hL(Ll zRXI;F6O&O$!DFJ77i{gKU8r(x2DlVEceMwZAu(w1cFE!PWLdbboAD$Sc-MxhGeN&d z8OOqcnClE_=`c#Mn^bh)8hW#eZ<*$nu-GJDm6<{o-TTIavQEK8BH=k%jsHi;sB$ zmDk>y_lE{|bAzDghq(UF26KIlyUEfD9=3a3(-+v$(GfgBbwYgd@l)XyRbi0(tXt`I zgQ-a9L4pZrq$QO9w>kz17MO;Ij9*+-A~OJ&Uv5TNN^S;1O0vTG+8FdR4m(vD<#gBF z)@tA_EF>Oyw)aej)Oz>PmfXk+INrG#h@Ku0U7Z7CmHq4tF#7Qk`-h>?Wfuejt2G@9 z*w`E}v6+=$OkI&ci^~n%Nr|cKh5P3X3ZJbIfZpEzpTf@-9Kt^^&U7q{RRCj{>`DLS z8;ls3Dgeo5(PMtHmmf%hX`ACi;}Hq5lk;;)EBz~Rs|)>cDFIk}7B@ymB>#}y+}xNT9Dqh}fUW4s({IWAOIz?yt+Cs**Di27IW8?O z|1mEtemf_m-48x>IWb@~{NAxXjMJ;PvVA|u)Br$zYuiH*dXUV_jo$CrZ(6X-&w-nl z8~tmr*+M@&J}`hUJ-?r?(g$9H;bvCV>z=8fZbMEB7f=ZThYCNf?^;Fq*=5*WiGgv5 zd;{YGaC&-rM!?nW9`_$RY!BcEzl+xawf^Bj)ZRO}wwsg3yhNSv9Kd@&v|ymyo;qWj z9Wpcs{2!jv^+)PQ(HlINpS+PTyR;uarEj(5pA~_h9+U`9Esd{gvY(ONA2B<98{4Dr z+M$m_POdJyfat3a+SN}zC6-;jN-AJxR=4Kw9!*HHpcfm2e+)i(=9qArrptbV$FYUS zw){pOPGm$4exb*BZR2_urY5$)$t^C-KNo<&`3CuAKYZ;kI8624e&Ouha>qNAyB|8UW5fei7dUssK5=c80*SkYA*(06DjI`v9{MpJ}V7fX;3nmiZYl=~wV(_dW5-R{t5&JnaYOceDKn@BPB|LC4tBVs~t7_WYgyV{=FQLB#vz z)rac0>vfR&TTWDe%f+%^^7r;TUc!&%(6igM+r~@F0p9t``qg*uOaIl+Z}~Bg+Ut@W z;k)gUEZZr&%^e+^1bpRs{kWdxXj}i@yWI|ZzeoA|w;tP4D|&+Dsa@a{0TU(@Hs z^DEYm8BI(!4)(U5f*&96j@vWe=gS8IgflQ^AMNxSrUR(PB1jXDH(IY#$y$!Su_$^g zR8N5F24bJXni>SczHg`Lc$_-IY35dx`zAk+DYdUvqw+{`%c9PUWX$fMc9m5SJ;P?{ zbEfc-2d8VYtLbLa`Q_rGSv>>m5VxHowqw^`UO{hRbI;~ih6DNVS6lggcmE}JWYu0U zDy}mjB@k3rP7Wk4^IskOqAtaMn);^ALiE&n zbBKXCi!#HAH!DH7s@fD^61^~IvT+d4PShT~GFtI`Z3PGEfAApHN(ZM8Q(l)eNBuKl0SR~1NAjqZj^P&kw zz-^_;2YV1);yB5z0R5)n+u0V+o%M)ZREJnX36&PytYTilG!TE!JAek7maEb zt5q?RkqZE7Bkc$f59GmUb9^bmxn%s9x8AdeykGsMQI#G+gfa>3p8Q;(afP7%wss8} z{?4A1OjUh~UC`L>&fctr16nv~MgAjP1kX^S|A~^yVqq~F@GrI6)n3mXOqNd%UHyqX}GC9$dPBPfRs+W%nh8q!v9}d!C2t`GcaM=IyqK-HcmR zj%pi1H^z#ma`S`1OqfWo5$AQD$u=OsGsz|Vy-5Epw5hJCj@R0_Q^{sl%G1u=-Ghvq7Z|Cc3U;jLre9J zJ=Z8wXKZZB1cfl$&>*C`H*jZNo`8hQ-tDu&6=kQ&=N}V~@SM)x>jn6ZGup!AACT1N zbxC3eB0=LiP;=G+cXYjUm%0s>O%2!vV-oOJgA^eb4ZRe{Rj1D)dZT2baZ-bxTh4Wn z{=X^n#MpAf^?GKYgn3+sp*vF#u!bVf5vPN#O6E8n&g!c^lImZec5b+W>?(Yf| zW=S5o6UqRp9L=sli&#^Wjh)P#ZK!+2tR`I;ZViU(249Z#m{#$=V{))4@x(*7=H zUZN`<1g381><3@_Brbxi#;)ex0HQU;RAS&1ED#GGFMtgSy1GJLw7JX+8M^Gg>Xecn zT%e2EAYrG+Uk2D4b0jF5p`QL$WkR%(HD(TTT4U4vD|BecDBH6zjm@7%E2=*5gN=2U zTgCSN3r<6URvR5@j@kgiMeuzm+=`&J0si#tSi!nGx#*tVPab8ob@|L`c+R(CO^}Ry z%ntg~?NQ&p1f8uBZ%ws!{eRsqyZ~?~2cdu+DHbw>kn&RXAAAu1#0=q#X3Lv2My*Hs?%%31k2V;-ByDmof=3wTU$Kl5R5tQ5wwVL~k74 z!z@RrVAqoEWCFoQib`pE0YeoX`+E;TR+wrO{}wM z?}{)`Z$!RMpy{U;R01e`hAgIwx0p;>-3sy~C`)qJDD1B~;Q>M$ zj(IP3XE;( z-6B*odm&OKf!Z_EOy6^zJ198d9;!WhGzKH5rBjc9raBVP6y8(6$OTD9$r*H*@!ey@ zwyF3lPwEvC9T*Tb>P&UIyhRXsT1$LtAcC{2%kyYE5)5r*-&~oJd@yx!_{Gk@IO;7~ zZtX#PhWQLrp7B;XsWYBQ;Q5vtIFz@;s`Jn7tmbgf8NvQd>n(*(6tp9N$S&f;Zi-~% zDqnha^QvQv4q)?g4J5o{#Rm;5y?Lk_ zpk1p(9vflz0iVtp>50)YFDG$1%IdBdB8U}pNC?b zA&C`zoc4JC#ISQ5Ms^~Qe%9XvaKY&`rGtISh91)=`JK#)k26b=mj_11u~&^IbL!KY z)aF}!UvX=U6+ha;(=pA35N%M>WKOk#pP5dZ@jjFL+x|?6h`#BKLDQ($jSWGN7foM? z_c`X)$wf8q;ViG|jtq>Inef(vDuiii9Y8?m9U#BZ$E*tmA;fZ4^B~ z@2_j68`4(Kr25LGl_Gp80~a3ETD=(U>dHvviyqB{Ivr9wsmMb>w#q`8iXPlT`{fF( zShQ}SJ!Yh8;6L=cd#)|1C%D_dp1<9T<8<$_t=eeT?gzDdQTCmJsrHIW8?(}f-*uNh@&VI?8rxW*ORTmpDQMS8oU ziWkCfhr*?#Vd*5y+$o&hz1%Ltam;2|VgDjA^)7{hu_>GhY(hgxDTyr%SguM32RSHu zFPIJMjZoYPE2OOuVlP@R&hNLrb*R4A)kopY;6E_CfgWrT5}vp;LfbVu9%BPt-{=Cg z5(ANQGjQyLBgORf9P8b4_O7!9KRf3TjIm+JJ!33jsV?|v8_Dvw>U5}G|6~1~Vr-m5 zsi^4LzA`RHi}ufr4*fBG=&u9UY2=Xq8#BGexjArUJ7Mg|I7e5;-3NoX7&{B-u$s^r z$W^gO{4pQ#`vSJ?%{dFWGKE|pd%?K@!5kMBVa8vQR+A=911*aeWe=y9@*q<2{c@5~ z<2T{tn|$2}46XZucuYX~KgP~sOB8KewrSh8ZQHhO+qP}nwz<-_ZQIVgyZ8#H@P1;p zXfa3hPB#z$v9;X{(4e2_6621~i%Vw9meZC{UZql?*~&H1BQk4QS85ne=8aX`Ne57K z!D4eVOFv9BHVvb(N>Cs5rd_qO+NmgPPDc)B!9{4I52mPB85Nn~M(e6iJ(V0*GUj+lhT+H#xW~k`#)lk8%vJrb z=t*6V_Xz$$oCZo#RZlOvdEIdq_6soP!PZ>el3yCeXC?icu<~cNtNvGS*O$98qr~c3 z-1!N~oY^y65eT|*R771`ol})C&3h8lrDQSyWN%9BR0jdn$}oaJQ9A=IJS8L>Ft^YJ zQePU>Ek0D>6;_ba_w{FS8|1kRVZ!7ACJ%GSQReBQ=$W}E7*q<7MM@TFF2BvlDepgH zg3*#Hu$Pr$Vi>2AluDPtyEy#r~A7<&pWAM68&T+C23 zVp{{p3zR0;zDz3ywRO~`X@!URVq+W@-PFh61H51JM+l76$%UR2 zwYfp8(#nM!-v&@5vwbmlXMh?|R7-&zEIO6@+$U4`kK4CvzRekP|FhTrhy<)Edw5Q> zwxM4G=nY@ln`>!#?TOOr=?i4~)PAWnI}-}KoK>c*0I1rv^`}IbvM%A#z%zUQo%OsM z>j&~ts5Aa;-LR;}t=sB?LN>I(l$GCFCfC@NZsTeCya(o-fx`5|gn9L2f|V2_8FrVO5~@JbD9a-cW+~-M z)2li}ZkIus7+PE^cIRBROYujML*DU0Fx*`mpeweo1gTLS4}8d?Nl~n^JV2=B$VF1QNETDotDtDUWE3$jqT z^Qr8;?0QZ2eptHov;~>J#5iqbM3RL9%5vn?bVBFhYfNieZfQfBzi?N8=$MwL6C04^ z_$h=C+}YsJ>fvDtE|DCr5}02$%%gJ)S$wg9;eiYh8|jX081U+Ps8sM^mCE%Y)&pK3 zGT*#j7vx%Ro;*+A&uVA)PNQMuVB;qLThZ5;^Q7Xh6uH$Tz{OvR2E!|&fO^kMJD$va;me87Up@n`J*B}tA~K1tqBc^eIS;0h5&Ml)WZ zRN*8^MjcuD>m`-W>AMi%ZYcEm{J8oAt4zzF4HEE}0hDq&Lt2Bk(B)2--bWMnBB-Zt zCH7mmH(MrfLMds3YHn-R;TdBn`V1kx1YLXQO3S=eqTx1)le)NJCA=SQjg4pu z?x!rqG0%&oZw}t1XmjjpXtzx#nkyz#47?rz0-CNl52RKLk0RM#(}p;w zcR5Ly)yzAam`s=;VZTIlBnCZSwu+;fC)YBx^|#4__TSxHi82hjCx)qX)49L5`*?&& z`kE=NS~Z6fu#))@b^p@(?A6pxU%o%c+&>AsOqfdjv{KfTny7SE>ZV?Ts;c6~@2He@ zK-+X$UoAuVy2M-0%GsP)$L>4$EaB|nVvCZo{iY3MJdEkO6QQKM_jn>#UlDxU<2Ml` z;NqA%OgJV^_Vc(KjLJ0R+S-81Hi}jdBcJP2`yS)4xGlRm9l@DuEB!;_7Ux?)CRxUe znSq?1B`7?QvKi?0UY99R&hZ}*WuatVFPG6-VNrxCs=ydweHYENo7 z8r?by6MwTdzQX`NBB4K1R_j)Ht7Gbt0)fZ673NGDh&t zj{tZ4aFOXANc!F!#<|m(g)D4`C>Ju$1XOzg+~gwQwxv{XCY$_R+) zJEU?L6FhWC!|WdI1NZ2Q3jNM{!=;_0avvbGb>?3r}T0$a{aSnK8|W)o@9;Kg|WX~9|im-ES& zJop3<*+qc6&P@2$uN+bF^n4{P7g7$b+OcjPJdl5&)Z9KyWl>XF!{*byL=!r3HSBmEA?noJ zp%bn3808^n@Or!ziizTqDfA$(X(J9w~s@{IF;J0}OAQuyD z*l`CQ?9R(^;c>vV_VSONu8o_|+wUjDO-iQWB?*Gs(P%7*y>_#_kA1@6-Y&u37Y|Jz zp6JJ0nNT#@WE}J8Lm&9T&9ZJxj8Rmf9Hh82zDB(odU)-gWn;L2q%E@40EIOmT;YSt zd8Cuw*7)muX~rK-WNn?s`>a?}pLbYmzkSoua0TC(o58DRodRzCfKuJo;I^kyM@p3~iq~qUaa4g918=N+MW)y;gbK>S2VRT&XmK~Z0-A{zRvR;kWd_S;^`n=7mz224H#-<- z{Wg=q`TA)q47}mY0n;;oR?6fkcA>D*S+XEiw+-B9gfO0ozjrV|%{AK!AzeOJ8{lgz zS~*nWg&fkC9~~li8H+OgSCCiKOVKV5o6s^l2EAC_mDZQp@x6 zq$Emi2jhREs)R=FCoTFF`F18J4Bc5o^dYSi`650VUtZGiPs;1lF^aauecjGoX3rQq ztka53cbKAm7(JXOiB=J(a|sbIM;=d+EzK-3!b`5#f79*Kv2K+9KzOzrN7$=k3SH4F zU39qJns1ksrqDEJUU!}6hrYbcRCPM~Vz$T&pG;%T^KcOe*J=w%rtrC!xXuo0!SKD- zWR@&d`vV=ggl`kUfYhK+2MXjjf&#db1>G*fXsZa)a2|GRW~b{T9Uaq&MFP8h*?W&m z*D?;#hF5TVSlJq1032HUUptsBjofM>Z%avH?BZ(pK2*}A7ZW!A=71I{1m5zz?Q)v;l-M#5g&2rk5xa+jJ~yGWd4Po|2Z zdlMkW)l%~{ah!4=yn!G{9|*CWQwAz-3qVGFswHetbp|Mtj60StSX#TQ9f5dvGQ@m~Xj(-7nadd|ll8w!UatOS}v-^?|UBnswi7XI&x znrt~5ir*E9;xRwRibMYn38e~!hoiCt?PW>9368DxUrTTeq4esRX2e=Gnid!DR;@pJ zQC!S&_ElG01Hy>h;aFoAtJ~gZRH_+bk)km zuEU9eT7K7S_H~5oCkel$@V0p$yAiX(A%}tug5-sHt+nr>iARcKb2g%odpUDz=8UVbikEL`K`=tVRttqXJgg)kG7fxPCs*aJ?RQ z@KA9LmRaR0{q=vJxJu4oX=#K2#7F2ZcOh-UB}k4MlI?tii2g5B<-?!Ueq>ZoT7{%i z+_vMs-|USqa+}qHeA=_uboHTeS_?WmgwQSOW$Xk0qEqwVkqV{>bFoY-Ffez$y+fn- zNERBk$^w7FrNb+^i)Ow?)RvyrBR#M^RDAaw?Fgv^%qN^K@9f=V3WRHFhLk@HvxvHQ z#xz)6C7!*p%>ilX9|snl~Lw@`NTb!fk_4XN8%>TKaQFx6dt8xp*-lim?1WD zKjqCn#w_jS34A6jNuvc;iB>m$oFAJT{u|xkS> z1=${VD;xCyv%rz2U=jM#USR6?{|V^{?4{7Ix2ltwemivzTP5kAL|G7D*n)j21?_lX z4u3$70ln_uJnSYVA?7xguu&4++uOr9qtE!zK)dpLahsCs5Xe z)^&0#7^jt{&%UvimKfyd1%0(BBAq-@zWGi#BJ8?_m>V}+!b9hv1&$`>mi(J+DuOvy zTpdIk#CzjaL{qv~niCC`adm?u7ma9eT7Iaz9!cidYESVFVW@iHT1bL4M0`j3Zh|M6 zVex5$Rq`&av3wQ@(S6^MBz!DDjE8#wr`(L_GZ$vNz4^8N!&5wg+#JyPa?JKwePM1_ zQ&E@Cvl`=cWdz0M2VloLxZnkgB^(wd#Y1e6W5;NxuEZYEd;m$MF?G+D;tXBVB`>iIyj#n)Y?Px?rUQYVw0=SfHa)dPY>u&pCl z1V7($PA~aij0Dg|k>QK@Dk-2iPv7@RT(!K#GD3`kIf)&QK!sS}8ga!`7gR6se!2A{ zxWt#K#08{;AbG-wFUb<}wy+8wv}J-BAIUWtI770R0Lo?~9VT=`&H6}2YTjBAMHgP7#Q(T5XA<1$Y|5UccfvZ76Ef&Dy!O_;qZ z-IdD7i&Cs>Z+&J7-dmrgbc9%H*)m&}Nu3yiGodDw0^$#$3AVao_$U;K*%dYDjR1NP zTD*l(_66Ip;?(|+mx*&4qUkz~ilqW`g>O|h(tB>#4kl|0?9Q+dse3_qi^*}t8Wrw% z7I%m)4qI5JhtXK}R?fPG2*HvC?kj7IWD^9{`AfGwCOHg+*3y);F|xw zQcuZ}X�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%0AOnDxNNPNuV5-{p37^fcD%Z_ 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

      R6N|8LI(M~@G{?jeLW~*HVBM~Nj-B~a7ys|t zr{(vT7bATsG3$Rb_H@Xn5Sfp2kLghB z5918Tr5)O@M^+EXosXQhwKFi8Q%Ui3;hH=CgajNHTPvhB3j9W(A$`m_g9Zn#N7P|m z_Yyl{*wFe`XRd?c8>77nG1qHz>mtI{^@#8KEsBIM57#Kiu&?HSXsg8J0zZ9Y*M=IE zP=RvtUUuFyd&z>?SPObc=lr*A#Sc-G%Wa>hG1feS1r_5X)SMZbY6qilYGK_M^3IKvU_?C30tv%@g-&+otj1tvSYx&0T@ zD@6>ksG|rph&#vGS9JF0W3|&|N^6?i=5zx(dYE<&S#}`Wqkb3P<{ZD>k0FU6#6k7ib zr2Yw_{t2qS0gz*T{r!*pe4hp&9;h>D22hd)zysVX9-678IH)L%d3|vb_3+G(|Gy9K zGk~kFuWo7IGT@;rfmuD~JYGJCa|_UhAWtTs4d5l5seXLbnxFJMq((<47gT+tr@MPS zz>T&#PByK`c?JNUz8bYZ);Q?#H5?Q8wR;M^koPhU09UkEznPz+pDBd(UwV`L zjEtZh;`v=@Ydgq#fUQ6PDyGQ)27R^C0Qo&1^n&>{QNaK3&*4C}fMf`P{6gSB#>4vn z0SGaFlk%c6nAaCpLPkKXzo^Al^-Kv&Qd`;6oa>u_H@Z3r{v!V)#lSEHE$>9VG6&FTQO9Hm5>nO zbQtwh{7s`IJlKc4H#h}iaI$v-iA@V7T0RQcTJ zzw?&?(CN1tgm9^uzZX>n!UW#6@uOFpO^wh9efXN% z`iF*eO$7W3l2H|?GgJMW8PhkB+4nk)W(}|CVh{Mor2#N~ZEgJ*2ChNJj6HsF0E9Ww zr%o__`@L4w+>;UXQAc{Te+meYlM|pjZXGXixPJ=vUN79bfOGt@h5)RtagD1@NChD7 z>I(o3Zg#9kdvX9)ANfc06XOn0jns!o@2~R6eh6GI`6K!bpnBnlNRREWa>{N9UO)LO ziUY8^)`v*$uX4*C=&tr2L$HhLM;z`}vIlXf^YK4RALtK)-BrJ$2zPeA{}o#Pr|`pm z7NashagQ>gW94e`AW zh6E}<3KPQ`%$3cl=__q^cHjwq2-VsO?lWz6F{%lY&hw{4rGA= zG;^bU9Z0A8w|?#=>iQcTP!U(jEFW_m&G_IGJmU-haj)yUPUW?4f{kG9Z~V#WSL%-+ zDqbk#C#s#0Fq3m#==67QxZPLb`q~%$dQGVQw-$xGnBWwywbgGFh7(!CZw;&ws5<|T zVwr$*q_Ph7x!pPzul{feK!*wy;iKi>04HV|A9V@vOB(2lRT)6W>B z13=xc>o9b^F)W+BFABiH=FZgY^NOVHo0w#LW%%-*+dNz*jK6t(gD`^Y*HqY>LueQN z_3wfo{fmG3&lTVCrd~)C|55f`IQfhoYyH42u7e=NrP<|+m~k9CYURT1urD5a{G<-~ zNpDNLFC4Cxz-eiZG;rI&5BU!nm;CR)Lqx}B;TRvpp4JIpK5&8A|4o1zga6)jJN_jC zcKj_U*oGsbkGK5TF~w*9%`G+v7k=KLITAK@YH|ksVz7$K=ZdSysN>rV*re3C{Y6-{(|}PETPjDzEhF z0LOWs`M=kW;6NThG6?DEInp6RHP^y?yQ@&iU-fr0P;yIl7i3G!UNu~Aox8-u#0%>t zV07Jj5#_KhMznVlOS{mt2>&jemRG|Oc60Abj|ScrICO1H%YZ#BuOV7%*5tr$31 zlzESokMl=)#q#nF9ThX=*TC~zC~JQI>AW{&!{&uv{(J}MxKl?TiSX| `yhs(E7S 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

      ql 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%0AW~%K>Xs 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

      ~2Lo>Cvko0jML9&7) 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, 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 +%%BeginFont: SFRM1440 +%!FontType1-1.0: SFRM1440 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecrm1440, tcrm1440, larm1440, lbrm1440, lcrm1440, rxrm1440. 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 +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Roman) def +/FamilyName (Computer Modern) def /ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def +/isFixedPitch false def +/Weight (Medium) 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 124 /bar put -readonly def +/FontName /SFRM1440 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-178 -319 1370 944}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 -DF250B59AD14D02D2991E2D0CF2D0022EF52D78780A34D2A5EBDB458198535BE -8B67CE5E1C9152A21FBB14C4E72828182A77418DF5E3439ED90AC7529AF0E761 -A8FF0676364C61692CCAD317817EDCC17260FF7E2BD3FBD5B6BB078C8D5E78E2 -E2344C0FC14382F41601EE374DBBB0C2465AED57BC4ADF0622B22B2B9DEE8A65 -41F49237821D3C04AC267AE38B4847CA255747D41718122F35239FD328634281 -701854F90CF39734734FD82C4A893B68CA3DD5F353A5416BC710F8B627AB30E2 -CBE1887C4F4A8892FEE7FEC1FC2FD27005C3B416E3146D5C0F157710504DD523 -DD7196888D0DAD10D8BA80034973346DA10C42C39F13C7A1CC3A206874DAC8F4 -FF91066FE31954D26803547C6D73CF884ABA4E9919F94C61BE31389F338670CD -EDD348C3147161C8A013BD73075E9D5453BB63F0D1C1FAF2D3508999293EFE73 -1938DEAAF8E9912B570CFA85337C0097B65F0BD87BC2985088EBC9C82C603762 -36C212F08216BCF7409C3C0C45EA3B3A70F355C88B00991913B8B37B394A51B0 -F31480B8864B519B46A664D84DA0DFAA5EF761088C8D753BB68DEDAB413082EF -A3D13D88404B22353D13CADE3FE1A4C4C84B22D6E01883DB55B1070FF8DF4AED -629BB76EDE1DCE72DD5E67DC7A65A823BD897435159D2A19EF6C1B8140DF6FA3 -B134DF24C97EBE566E371DAE070410144971C9591FC918AF87D5282DDB0B5646 -4FEDE6C79EB2442F59D3C9078750AD6BC35A5ECADC438496B1AD5DAC09445A54 -7DED15E0B678EB9310B3576A4962D846B405B019F7D9601A0435B34CEDB468F2 -249228EFB45311A50211148FBDCA8141406B7AF8A7F1712E15149114134BFB10 -D10CF434EC53D2E1482B3CAA38A50F3712C0FB9AA1452F468595BAA7C16BEB59 -B2F3C6771FECA7C8B2608C37FBB7142D61F31E86F5B712FE3B7DFB52153C6CC9 -95AC0DC8764DB20787FC4366FB90441976CECD1FF9D4ECB82FBED648C292401D -DC2B6A71FAFF6D22C8FAEF0928C7280E8B0DB146EC742F8A479138642430AC85 -F6933F11D5171C0BDCA8DD5155489C4E9066882EDC00B078108B4A3C605C165F -184C4198F9FCBBD65FDF7B7AFED6768C847E3C5E9788402902976DBCD5FB3CE3 -3D592281A1B5A17F0E648ED88529D43D525DF5FD966F9707C264A5AA7F703546 -F103259FC2F77CD379FF00A34BE6385EAA9DA5A06C7801F000EC795747997CC9 -C31D4EDA25CD2037DBD53DA48F51FBB2A757971D33F0C3EBF1F6B051F6D995F0 -082CA7139AA8C990D10197A25C613C199A634B63C5E8B8EBB91272F510D13162 -47A2ABB34D5741CD9E45022A81934C3CC7A8042BBF28A3E9BA7718E08AC91E35 -9C1864328AB297AFBF2DD62A13EE850B12DA21E621AECFD642FD70A42520E854 -9BC128C75DAB4B316F3FC8A944E6102B2F6700FAE355319F079027274E610266 -83C4F35A4FE9689BE48536E93D0C6C5F6011707F95E5DAE8DA8256B7CC81F688 -4184B8E96CBCF86E99E515AF5F90B209228DB44EC8618D12F602591F010A2669 -2BA8E81C1E18161D532D0C61DC696860227170A05406A52A6D89BF19FC952FF8 -D47D8E6333C1828A7E7E3B8BB1C7A85C35AA50AC0CC070E540D8F0BF951C6F87 -4B8A4E41D65350806F04B06F3F98E881649F3895D83A27B5A4F2D4DBC8EC483E -5E43E196A6448A82B881F7EFF91D6C99C287E3439C5E6ACA6A53070CD1FA6384 -068F78E11E6F596E080C84EB0CD85422B46339CC8B5598D0D699C506ED02884E -3C9B9EE27357AB5D42096F +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E4875AA6B96583CD5632BAD9EB3D511DF934CD36447A31 +D420FA313B5721C37085F478B27E13191957AD30B8B082BCE733AF8402AA3B7D +EC69807BBAA8142AF1CE151D99F5A59AD18798F94781EFAD48BEC8C62C05C56A +336D71AB584F6DF014C56523108606FADE931125496247870E980A65AB33C0C6 +D5B074864D0F58CBE333EFA1201AF335FBDBFB1CC8B1294856C250F222BFB8BE +5DE74F808904F7678552F213C674497F829E96812D340939F73737731D289801 +54E5A8F7F5067ACD9D768F4649B51E54513F2F7878141FC719627C23FC5FBBB6 +3F663343D902E95C56C559B588088227B22378FAAB29392FA62933283D2FB2EA +FDAEC6C1A94ABA0B5BEFA1E728A2052434BFBF6D9759D02A2C6092D4EF794241 +CC28BC939A424AFA193F96530985EE89E2731F6A99BC84C6551A3FEA1342509D +D389F786C8EAF972B8C98B79003B6C71E6696518BE4CAD2A317C5D29621031B4 +00A035445D8CFB67D6C136B3F6D82396E11A3679BC82498519C27601236F1FCA +073DA7817B529424CAF49A0AEE8FF7520C0F204A3B1725F46C2C6953C20E93B6 +2F3EED0EEDF87A350CB841516107D9571503A3D62A2F81840070D43392160783 +D111F3463760EBE634515DA1A1B6C3A5D14FC475F277BAC792FB69B4219E9BF5 +E6F8520584096A7B7BFE439A1604C2BBBB9140A4F4728B4B553A27E1AF52181D +701E90C4FBB16EA8DB39B562E5A2932D45893081D52E020A1FCBC44DC204F4A5 +BEE47F9D25876644CC856B1FC225B61124B89B896C39CDAB0ACCA8277F827382 +6F58A0C8456DC41217219D894B42968FB2EC75D5518B6C4413BAC889532F0B0B +A8D728949CEA00D4A1FD757B3A2336D472842ACF8EB9869044947C67D9AC7BBF +7386DDE209A8DC9F18085952818F67FDC6088D9C8BC51BA6DC0FA37A0F81EDB8 +6F259FA8C0FA3D55BC44529889E72E407C89ACF658631A0508FD7991088644B4 +C958031B52421F9CE73A0479A3175231EFD9E0F7A7B08380E9BAF015730B175B +93C380D1D0F3EB929B7182691BE7E2116CE295CA4331ABD7ECAD7D2DD46FE3E0 +5D3893ED100135901FD42B4E11BEB2689A13E86F1E68635DD81E5A720082E802 +89B440A111B2CDC6BFE79E5B2EB0C528FA0E958F0E981EC29C3B02A9186D7907 +A0CC29251E567958BA95DE609A421581433DD50AF96A82A5ADEFD1C9540D87A8 +D74A7709AF84AD36753784ED8267D3C2521A32C7A9D5BE01E0AF3B349200639C +90C8BF2E26920AC410A9C5D1EB85C0ADD16BAA83B6C0BFE82483D3B719DC19AC +89155140691E3E37F861C53A6F39441B5F229828B198DF5BF6286060DCB64433 +F43499E4AB973F84655311A644ED0921B41B9AE7A8060CB1F45E824FB3497C63 +0A13CB5902294E66186E4496A825447734DF4AB581803488B912E7DCD6007527 +B4CFDC5AD5D1DB430007AE929F969EE332CCF235DAF977D387E47BE0EE337118 +8CFAAC0907E16B0BEAECC3B39221867AE6464BE9AB4CE591B2E24B45AD2C70E2 +A183065810D6AC3DE8EA9F66615113F1E683A4475CE5817491ECBDD4A4818AED +EAFEAB8B93FBDB335D02FAF9276958EFAEE1057C45D313419D195068076D77B2 +C0FF6EA8D6F3F0A899D17E04B8B2141EE335 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -502,7 +446,6 @@ D47D8E6333C1828A7E7E3B8BB1C7A85C35AA50AC0CC070E540D8F0BF951C6F87 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark -{restore}if %%EndFont %%BeginFont: CMR9 %!PS-AdobeFont-1.0: CMR9 003.002 @@ -524,7 +467,6 @@ FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup /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 @@ -1143,7 +1085,6 @@ FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup /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 @@ -1379,7 +1320,6 @@ FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup /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 @@ -1892,7 +1832,6 @@ FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup /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 @@ -2568,7 +2507,6 @@ FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup /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 @@ -3497,7 +3435,6 @@ FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup /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 @@ -3848,6 +3785,135 @@ B8C0C194C26F5E122DF5E4153316C971460C3B3B336C1B72 cleartomark {restore}if %%EndFont +%%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 +/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 +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 +DF250B59AD14D02D2991E2D0CF2D0022EF52D78F043D6D7FEEC3E77B6982B1C0 +8CE51E4D3C8342C08ABD84EFCC8239883D8E66CB0FB0BFE8699155B179CCD63E +884C502F7F0496A01360C67D7A9BFC8533346485646AF058A743472B3276FB96 +EC4C82188A4A67763ABCE6AF7898C3B924A01118DCE34C77F22E62BB4C4CB561 +75C93226142D43D5ECB9F43C3A275A52F9E5AE4C9BB9E614082AAEAC5E7453DE +B3F71F9FB747033E227E84E853E75E79771B71495CACE8F911329274CE752AFC +46C993132BA8CF6B9DA2CFC11A0BD57C9A4BC11B7A6D68A4C346D9768E6A6204 +4227F51932162DA350878EF80D0F4084C82CC61F3223010D771EBE7DEC1B80CF +327393AAD4C689BF6A791CA2925878C51069C4F06ABFA42B66860082301FCA71 +EA52BED540116A9B12D9741A4C078F207F92B78923C7965A47A3130CCAEF480F +6B4AD58077FBECC4F99F53BC1F4F24CF3777182A7ADC32FE3260C774E5244912 +470697609A0726EECB72390E6C5C5A1204521D45316989E3C0B4D398958D4363 +3C7A4524B500241161C55C4D8C4CB06034BD825AA2CF2A6895BB9A30BFF00422 +553E4346A53B271C70DE5D0A5AEB92F81CAC1A0E75E47229AA80C8DB09EE3B19 +6E9D3EC0E7ECAB7B879C652282A376C52E5BBF5D4BAF051A0A995460B7F427E9 +521743E74783312E8D7100DE1F31C1C7C85DA33D8D0A626E6E6184DDD538EA7F +46D50247225E036DB3E6072395C88026D429659DFCFC6416D22A9BE285EEA910 +F7B1B74275B8B043721A829F2D4FE6140E5AFB78F0CFCC27FF27ACE773131462 +48B271781695D31C909FED024B2F3220C206B63601A1B02DBBE2C5D94D027982 +F9E7EA6D4B0A812D28855CF62D372A040F138069F7C28BE3344262EA72795CAC +2CC8E21D1A666ABFED384875FD2D098066FF0CD902AD6725AECFE61B2CD83860 +82E587B8893F5E09B155EBD813030499E534C050D6902E5F8BA296030512ACCE +BF19933ECDDA6DAAA1848686DAC81EC429CA7AB1A73B7DFEC0750B404F601F1E +6755F07C0784A56E403C5962905E9147E44E8042C3858E4A91F7B8A71143263C +21DC47E481DF1A38EC4A9F682FE059FE80F257576FEF3A3300A36BC27273152A +78019783D0BC34AB29353EDAEDF48FF6C5DC27C1633CE1CE2C03509992549B87 +75AE1100939A6A2F5AA2BC7C534357687DA72129B9C9F2E511BD95452F10DF8C +A698CEE0BCAF726111B63C4838F05AC5B2EB43D04115145CDBF2EDCC1EFAB612 +5E35EF5CCC5F4296536DC96F1326B86C65DE657BA06E5B97BB7C4F8ED11DF9CD +969FA4302F06A5D43B48D40D3DE360F6A7B8F329022CF5B13A33980E8BE54325 +17FE37C9D78E73A74B5734231ADF0594A2E5F2DAD9BCB682A0F5C59507032DE3 +AD0C62E50C258F1F820ADF788D6611CBE6D1988D09D07F8813D6A3EDEBE034C8 +05F7EDC5DD2E4C15B60FE9284E267C8F7DF53F3CC13C131201DE819049324E53 +499FE93874A92EF07AD0121B8FDA88F7D60DE52E2B20AF958A77421F221F8B29 +B2188307F484E1832988059E5A68C52AA7E840D805E646F17DFFDCE1A2A8C0B5 +2CF6F218A06EE1E2543461030E9697624B086FC6619205C04230CC8DADA60721 +F5C4622673ACA45BEABBE3941E7F40080D652567DED98AA3404A4384DA3006A4 +E8A9298AC3FEF04C92A273 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +{restore}if +%%EndFont %%BeginFont: SFRM1095 %!FontType1-1.0: SFRM1095 0.3 %%CreationDate: Wed Sep 12 2001 @@ -4130,7 +4196,6 @@ FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup /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 @@ -4219,6 +4284,7 @@ dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put +dup 123 /endash put readonly def currentdict end currentfile eexec @@ -4413,419 +4479,421 @@ C528A198B8EC8654AD69CCB5C209964A2B25D6DA9BA0FFB366D19D8C69701D7E 8ECBEA88569601C80ACCC2D5487DDBDC27DC463A53A8E59F9EC17D0ECB7D2188 B6CEC6BBCEE631DBB9959A9855B997481B5D88B8BA29995053CF42C5518A3E8C AD21553A0F6BC3483624B013D3537F7C85D7C558A9C772554CFC1C3FE7A70633 -318A99533A1AD864430BEAB8A5D4290194F13FC1EEB80C2005998C0126EA9C07 -9DF7B66876309A37685C8555A6CE41C0EE4BF759159FB90FD85AB248BDAA0417 -4245331D416A4ECD2C10905CDCD95169CBBCEAA3E45A70778A746B11D7974C6C -616C217475E1632707B465B622DC2BE08B366A43F3B1F55E1384532F37F5CBC1 -8B2840EB834739DC02C8A477A0E0B5B1DE8F7944DDFFE6B4BA18D9DFFC2A9A7A -78E3BC3A0CBA942C110DD323775ACBAB430724E21575298C6D19663A9F4DFAE8 -AB299158B24294CACB53584FA5931C45205AF58AC7D6075890B8377997E18CC0 -C65436BB7790279B58D2E3C7BCF91EE077B0EEFFB07A403D702B9DA567AC51CE -FE7054FCC281CC34CD04E539FB17299816486830EBBB9DB3AA76247D50FAE981 -65CF044E39923C4E2173A9FE6E38A21CA36F70FB9FA6D2E2246B402D4BB5F150 -48434F9B4F2C2FC1E7C19C30374AC31C2EA87732DA14B6E925DD0F34E48941DE -796C44890144DD9691AE6F0381F174714B9E17A44CED61B9FFE40DA5986D29A6 -587781B9D3AC5CB19BC448E3CE9661EDA021755BC8DF86B3F766B0FFCC6504ED -82B4B8B53B62B399406D1658A37579EE7CAD4ED2554EA16F53122BDB72C89E96 -390332C0EDAE62DC139A6091E640D555E6D7C5AD81CEA20CB8B1272ADA2105FF -FD816EA361C24DCF0BB660E2228DAD143C5E0C101D34F9E1FD23466F672DBBA2 -586DC5BEDEBB112CC621B8778580EEF6B8EFF9BD99F335F43523E09E2062AD1F -DCEA3169348EB141776FA49800CF1173899E5D331768C864E998CE2078C1868B -5F3D166C13AD2C17639BE80856AFBD3B2C8EB89FD41E998A0AEB832AD421FB40 -1AE013CBB43D3D13647A2E27C41470ECC344534289FFF79162D7322C3EF5AD08 -345ECB050186836AA02A47D934D3FEF1BCBA503B9214949974A9C206055BE582 -42632173653D9A62EF76D442ECF4DEBE87030B9C366C7280BE342FF8D0A2DCC8 -A5C6993F0338A71D54F3AAB1CDFFB6AE9ACA6DB5E29024CD357054EC0A149893 -31AF86ABF24E2F7492E461DC9E399E815264D4A06F6DA4364432A12A8492A88F -DC7C433D4D884FF56DC2FC982F8FA87D69D59C4281C8B9529B3D41B854B00032 -8258AFF0063BB4DE1F824D6A526F7F196F21A01E503DB7FB20614F6AD61C84AF -13C23624346FF7A14EE8C073F7FDC888D43F917B353E56BD9C6E69D82ADCDBA6 -AC5EC3523627CF71FD5302B0BEA306EAA6FDBFB2168252D4C4D345775F5AB141 -9233B18ED9373D56FA74DA7A39CB7A90FC6DF98AC03BECD64FCDC2A85041C4B3 -48E999BCE6425C6A0B26574D99AFB5F61B500F600C0E9D5835B0296420FB81DE -14310596E2C64313849B8CE782437D712F8987B3033FD2FEF0A7AA0E26D33D28 -AC6E45A65F03530ACD022F2496B9F500FB274669061791AD5862D1AC84ED0012 -FCBBEC5BDE13D2907F1593011E0F92E558DA86BCE9C464C3037E3B63A3A67B54 -A3CA185B9E87AF9D76D67D100C59BBA1B530CF0E191D013D0DE94B0F9C50ED21 -D7930F0EE3A56EBAC215B0E1C9F85BE211E9164C990E7D4B1072DF49AA02D927 -53A129CD1144A6E4F8C1D23CB2D6FC87A2240B16C9E54BA04E33201A8BEE54C2 -F8798C93FA35EB287004DF64FA5C6AC4F7274F312F6264E94F2215A39CB8F6C3 -563AF9DE8F41D67AE31B326AB9C6607FCB47652F642118977AF4BE0A5E48ED98 -68F717085F0602B309777AD2E4044E1FCAF55EDF8327AE7FBB78AA15A4AF7C51 -5D521D1C6155DF31E7C7CDEC35B5AB7956F7FD06A8FC259A4845C5BA0A293028 -BF5FEC5984BB3702AAD0096C832BB1812A49FDB0D8B4ED1A02D24E82FFD80696 -79B1D2EDEA6D1F10CBF1649320FC04CDA340CB047A276DC388BCA1E39FD11980 -B0676294E4B690D371E3B8DE6F2A6C65861A161BAFBF18900D50D8F5B802D241 -F119E63504AACF61722EC2A9199A7F3C4DB29593C4C3321C1AADB9CF077B7BDB -17E5C1842B9D58DCF916C7DD7B848CDAED357E874D9788C648775A9725973A8B -046CE0FC513437C9436D5278915F74956D7C9B33DFFFEFEEA13176D5E9C7EED8 -E9350EEE1451FFB840E5B8B23A0B065CC861A91ACC2268D2CEDE02799D369AD5 -B9BF63A092F045D25B39FE41758D342B87EFB59F6EFF26F009A5D5411424E027 -EEC7FB8DCB92B707FD2DC7A41FE17E6722BE107873749FBC39B1B02E0E926FC9 -9ABF2343B114AE78DC9987FF435B351002570D9D5A831B96A6FDECAD60B523CB -7BCC09642E31877EF538B6DA969BC71A152139CFF5C656197B0051485A3E621C -B1E9357CD5D9D067C2B0F6E1DE201534EBA84182840CBCA07564BE64BDB09A88 -5C7B39B6FC6E32A2B4F5F22A250609FD5AB034E79FB9B8CDFCF306D878975696 -79D0403D07D02D94C7836B542AA0A163406A81B4B2286A7A3342787C56A13AA5 -B9376622404830BC533CAFC715EFB19518B239ACB7E94637829E3BC6EE7B455F -16DAD8DC390637F1781CA7A11A3FDD7BD3FC9F66656E90596401B633612BEC56 -F5C727D7BD9A3C6303F409C302EFF0280DC344D432C96548A7165F3463D9EB42 -F0BBA79E2AD7C748571732FB1437454179A5F62A790FA31B49492AD4D3A30EE8 -CC221C9F501A58E97E028A15B2598D0CDDB2BBD43D80C69B69637B0CBF24A2F2 -E5841B0FAF27D855A4C22D8FD6F07821B3DD76DBCBC76CB0647E862497F022A0 -367CD77D2BDC6DC109BA966540D94F15F55BAD3C0C2D3114748540E6BE9CF5F1 -31591307B1FA1BC1608635A76845967C4AB1F3190F07C5CC085EB16291C6B8C5 -0046511F7B428757B62FA04C038DF7F2AB09173ECE9BB93293A8BA18B25087CF -20600A85099BF39E6D4E2ED40350BCC6743036D7E5AD9AC8C81C53AD3C5F9D94 -2EACAF71E3256BB90BD1D956BFEE1F7655EEE5728A90BD5C90CEF59FA7CE811A -A708FBD232A38267A6D8A3166CC04E073414B729A70BA253BEA7BC97D77B40FF -4FB239DDB790DF1CC9658004202391FC6E394875C577C1FDC0CFA3E305E5C003 -36D0DC031675AA408BF3FAB297485F413002A79249F6D5DA9825879F2467933C -91B127E329E8E6A02993E92B9DDB3BB4F93E4DB927449A29DE84474086C994E5 -4D15E4A486197F4394920F810396C9F906E8FC0AFFB54B032F3D047156B49030 -3119CC2D5504B057D86D957BA326E961501846829EEA8B847F1FFE4DB8C547D6 -396A1516CF68E589861B56C3F5B6377E22195E3FA866ECE9AA8373A84BFA3554 -553446468572F84A6C7D35059DA21546EA5D0A60A747CC0C2E6E29F1DD7ADD2C -6F756959A5DB3CA09F4134FEF64C2DE432AEBAD846EF2E84920FB3D085BAF23A -7E91F3C016F560EFA44FC34D79B0FAAE2658626F830A59DD723A391329B0134F -F6DC21AAB7FD9CBBA5BC1C625AA6C2BC7D9C12894874A24EC5A90111EEE65E02 -3892B8B22BCF79D983CC56FBF48B7D8DBB0EA0471461A14541F2830160E96B29 -6545EBB30DD19646AB2898FBE1D5962735A99046BED138D650620A35F39FDC72 -42EC7A5CCFE733DA53A6E23373FB2B49D52EC20277393128BE44EBCBB4D7C37D -E924B1F166A0C7ED01E33994FBD2004928082EF54BE02A8357C218637CBC59B3 -476265DFEA687DEFBD0E4BE9264F25F7EE02347A164E9A36B62D5E1EDCEE907F -392A1F2969F52446DA4CCEE43FA9E9BF4310B7A764B90B6FE1350D60F6F21D0D -185DCAC079FF7A45C2A60E65561514CF4928B8523C8368BB4E368AC2F7203A1C -49150748497BBA696E9DFB2FD0617EADFEC5706B4FBAB17E13CCBC9CC1FD283F -F99734D174E503AC25247D76FC76B1AD3A78DAA8AD3A0CE6A3ED326C96043B17 -BAADF2985D521A26ED378841F41FAE21C29339143F904EDC5CA27CA82B0BBC8C -647D31968E47A57322926336F7D5F69CF8CE237FA1E69108E29123A80E65C769 -90156286FE39B33353E85F540649DF392A458ECED452A6973C6D994CD728522A -FE47E7C1617B4F3233150E265FBDF30DBD9DE574D7B938BE61CCA3D275C5D76B -89B3CEFCCD927F9781320882BD26627CA7BFB69B3B76ABD9533F085254F21637 -FBAAE05DB5A50BAA63395D70821126327011E2DFD713323378F55A24DFCB2C2E -129BA5CFAB9315ED4DCE755F1A79013FE4D490F955609FBFB7DB8EC0AC6EBEF5 -DB76FC9DF8F4957F275621DEEDE9125C5B3FBD32174F4FE78C2563C0E00209CB -393B3ACEB8DE30AA20DD26B6894E316872689D5954CF95FD0E5D292F29DF1ED4 -0B0746E862F7F4D9916D82E82CFF6BFC8E2277A2E43F57D152D54C56123EC368 -B9BE0CC8BEA71A1AB5CF35C2CF7AA39AA539B56781DEAF53E245415454B530A3 -08B5C59950A279AE37A48C95EA86FF8339ABF4720AA68FD68B078B246373AF6F -E409295C5E1B6E7B733B1C1FADD4863FCE5E373B3E8439FBBF3AA45F30FBC656 -15BFFE5748E6C3B5FA9F3FAEE38263E5A5504D88A31CFA5B00E253062B681D0D -7CEFAD5B0FF85B58BD4A0509CA4B342DE63D25B935F9AB6DE5A30463DC59EFA0 -DABFCAD726EE8342A3FD62997C3A7ABC8AEBCF22DE843BB456E3987904A421DF -76D9D3337F9396D94A6A9496A4B5011C97F6D7262927238A579B29B08CEF0E72 -09C760D2B8D26D32CD36409C8866DCE819E59989530A3BCF2E374D7D0DABF73C -D365C0EB1EB94F356F72CA27BBFBB45FE5FCD2DE0B79D4E17398593B4515FF21 -618FAEBF277D59E5C5B72D6A1F6739AF3E223BA4CCB15D619C322E36AB334DFE -50F72B9217965D2DF82C4274E98CDC2753F48D1901765709ACD6E270E3F78956 -1528FD58DFDDD0D859F9DCA28306B67014263719016BC9298C4EFDBB7F4CCEC4 -E56C2D9B407F0AEA035DEDC80B4EB576AD60C5368295F6D249E74F686B8D0281 -32B91C1BD7DB446408EDAA43DA867703C9956056C700347557BF693335289143 -F70FBBBEE55DDC1571435DBE799B45B689FEDFADB3C756D67FC290A71AE1BD0F -44D918CAA1B3622247E4798F4A6D6F89F6A36B467322CA2D3B9BD3483DF80A0F -7E09D321708BAF010640A28F916E44396C0140FB96E6121FCE625F81566B06B2 -8F9516262397C4C0DD8FD22D072C28D257AE2132B7658EDC786857B9057E3759 -A27EE1E770BC0745D9BF5F0F9A2C2F457BCD31036EFAF67219B9C79981A68074 -D3EB41251AA58ADB9392B56DBF091AD17A51A291ED8FFFAB28BA0627D4A0E90B -B489573EDB53E6F150348285460928A848DB92143FCCC84F525D51F2A36D4274 -F9A543E5FA4CF3EA68A49FDC679F5961212FAEAD82BEBD924A926E9DC6BB450A -09E969D4C2DFC5723473B70C023613DA4CEA344B7233CEB3D00C6F0945EE11D7 -E0F701E2C8427FCBB0D57C4ED46424E4CFAB43A4E5AA36D1A38D3B045DD1DF64 -8B9BC4A96333CD95206F436486180F113767AE8ABBFC3D400C80ED653D7BC095 -CCE6DD2ECC53106F65E7736335AB2685D6A51A94061C4CDF3DFF06E6D879A91C -949D2C2CA8666151836E124F686FAEF0FB42859A172E2D0F8D081E1A73A5F6C6 -E61C586B43B28EB7D08ECD915CDBB1CE735C0FC08A850176DF9704DB9BF71AC6 -29D21D3374BEAE9D51C81DEB509918A6637E0E00794B05540EDA577F379B09B4 -19E10C6629A33E029ADB3A4934F05454745C6A17CC6F1359FABFB5AB53B2F910 -B5F397291E6A463A5AC971965FDA9FC053EAA894E1FE04A24F47EB19FFE67A3B -2A5DFE539C57004C2B1AC8C0A59764F91CC6E9FAD6158427F82B9E1C77F715ED -B7EC1202D698A6913D3EBCD6CEFD098076A6827DCBED5812B5F969AE9D4BA95A -F12C40519E33EF065C9C69496C2042267E20ADC4BF0C8DCCF5FFF524E5ECDF22 -B31A066015FD4A5E8DCF4C484A11E39A53C813C87CCBC147912B9EA28C535602 -B7C5D5882F4FB764EE060C3D363D5563865F67CC8EC87165A37D00DB05287364 -84EFE9A54C36D8EF6F4B86A79D79903B77469F48288261F83970F7B56CC0E6AC -60B1F2AD9BDFEE0372C4E5DA1EC2DED6D8FC0230D2875A58D127D2599954ECF6 -962CFEE9C966FD747F60F3A9E02D219BD3031B041669CED09F9DECB766806A69 -19EAD473044DD90156E552925DE0844F7B8913F83CEED2B03E27DBD811B6497F -CEFF454F02330D3F0DBB6F742FD650D8FC64BB8ECD63421002E486CCE5AD262C -E26BCA5323B70AAD8699467A1A720F87F86BA0E289E463F772CDB7894E6D7808 -BEAFE9E0A69CA4A4BCA8DF61C7260BA3658C8678CA2A3CEEDAB05599E1BEDBDE -B213CC753C946A22BD0A545590F53642F89299BACFC5F1936F9EE63388670F8D -7AFF3E514BC93BC357F1A037D0DF7A511AF561366C1BD53C203606F06ACC61A7 -9565308A39A1EAE5E9809EE7D948795EAA763B05B6027D2F597607DB8EB5B545 -EA8F935A00086D86EF34DD686E7FA152FF18766F9F680070A0FD20995B09753B -3EE773684F79D01C7F40DC742FAB74716753DE9848C0AE8E96203692C2137D2F -6889EB67827ED0FA63709951A68D9C426D3598EB0CF3F8B8AADE80C2EE0FC92F -96005CEF73FAD0BD11F23B003E7094C72C702727C315BBACA116E29F61C37B32 -D39A19D53DEAE15279C9A2FB1DF92E989B4EE2974D78738B0E39C57E44131EB7 -42F7C271EEA410273698F4C02FA17EF7A33C216FE37849737D62A9A339595F5A -1A330346B6500F33C4C37A9E1CD824B3D34947BC5FD36DBDA232559005C2B14F -C4D9B2CA6467E4BF0E835D9A29053127EC8F19B0935DC4AF2F3997C59B1BE5AD -6B4E8F50B75A501F60715783CD39DDA3616165AAF4F904680E2C01B66AE2EEDD -6DC49B5D4378F381A086E3DBDB8E6790FE69AAA2385E653928DDF995656AEC06 -61E73AE147CA437524B559D6EE05D68C1F8ECE741DD6E99C1C3F8946F9B9A002 -C534775EEA9D77A594326AA4B50C234C965BD32EC7F7E9CE813E24EA47C452D2 -E8A6F2A20B0ECFCA3209011E3328B5E458056782BB79EF56485D7E6F796E50B5 -B0E5375F09C46590A9912913F9C702E294633F5AEF12AE2AE0E279794ABE5F23 -25F777B4DAD76416CBA671CF7C295E1B539FA057681F86E6882BFCFAAE205BC5 -7C0A6D0DA33A4EDE00EB08BB3B863664BCE2E70BE0AECC9E9F7B9CD9C921324D -C88D67922DEB40A3DDC0096CE0261C3366BF374717D6761942460D115C9C3F31 -053A1D5105D6D1F8938222720E8FECCD989F95A33290CF0B48A41FE6AA8A135A -F52E439552DF6334711E9E47603D471F6F6E13C1B16BBDFF6BE2BF2EDAAB15A4 -CDE92BE381E945F8C9D3454D4B5789D1C70851934961FC16682021BB8711F61C -0A5C1E236D891EC50BC4B2BA6D8A2C6983057A10F36E52AB407E852822EE91CA -5F54DB15A878DCB322ADE1142636D912678D42A68C07719CE59360BC08ACE64D -31196B5CBA3C03F62930F8E23FCAFE7CB64E8451CAE1F29C093CC4249699654E -B64649C3AB8ECA5ECDF9B2206AE64953F20ADE3D43EDAEA9A4D041A05C5FF7D6 -C02A8BB1FB32280BFDC1794647F11C7CF83FB1E9D7C3283AB3DB8A2B8E50FA58 -59AF00AE5134AE93BB3689A9446E55D42DAF400AA41C5532BB9490C00720D309 -E279614BABCCD807F0649982B356228F2B5A7FCA0CAB90969C23B71DD27A9796 -D096B860743AF9F9734233180983C4218D5234AD1E28BB2489DE60D8CBD23D2D -A2990C3A2310091FA37B80BD6C5B963DC989042D254953EB7AE64D1C965F1ADE -3EEC885838F428458EEE082EED5DA4F267792F890BC757447327BFE0A7BD11A8 -CA512B4A118E191E4F0E9AF7CF3B2184D49A3CC5751E59CFADC9A955DAC0C0EB -2C6F9CD152E90D780EF52B1D7DE430C66CE9DD188EFEB2EB3249B6B59467AF14 -6809310C1157E226FD7C94BCF528F741F745E3940C1F1B9CEB731DE7C5BEE08E -83A157EDD5380C618336CED69A064B2B8091B5F76CF63536F17CF81AFB04A225 -DA54D3EE177EBA1B804B7949BC4B8758C584D67C821633B563D72BD9F834017A -26E32DFC18BBDB6FD96DE9BE41254E676EA376EEBA85C15AB5AB88B773978F79 -BD31844F188F4D372B1810F9DD89961A2EDB3E129C80121FD1035E619F36081E -CC276BDE9146156681A7482B0CD3A7E963BCCE935C3E69F77035C2320736930D -C935A27D293348A28937BFD30395075BE40F1C5474CBC7D65BEE830271FBCCD9 -DFAAB5567DC25D131547E4ECBE55B03EFED0E44277559DB19FAA37C164B85DE9 -432D7364145D7E5DC443E920AACB0CF6931719E08EE784B25D848AA9CFBE5539 -761F88B94C9886394A7C1D9B0AAEB8612E11FC84CD3EDC25E8485BA5690086D3 -E39C038A53184DF677721C03276C629D414067B4AB0F6E5B1AE6FBC292FF71B0 -BCAA67C86E452CED1749AC2AA1D02CBC7B5BB9C564EE1FB3B45B2DCF9E1F9B2C -D5DF634277817342C527618AC1B86BF15D4E248CE50D5EA773A118EA6A37D658 -57954885B158B4A434CAC9457756BAC356EFBA3B00E9268CBADB61DD1AF33CDF -A1DCA6B8D96757925E509DD7B0D33BE0C21045CDE0DEA92FD943B1D0E2811F62 -3F061B367DE01BDFABDF2EF3FCF0491819D25619AABADEC9965FBFAD1D58A802 -F8F253F46AB4756ADFC1B3DD64326FBE340A71021DCADEFC44743C99A9CC8575 -3B0C7F25CA9FEA918F82AA648FEC525EBB75B1AA47216050C74088FA42091BAF -3D95286800E400535A83D504A353CC016A269D13E4C74E79FDCEDC4B56905217 -9018D85ACE1B989D55731515706CF39AFF2ABBFA8489F42447E7560C3294FF60 -F58785664096508D35EB80F81A39493426F3C1C070D946C77362C925897E5D05 -21EE4B210B79B3431300CCE5EA39355FEA878857CB789D16B957E39F995CF488 -892FF7FD7CFF4AE95B5B32583AD35710EFCF4C5CAE1F96AE7BA8DEC42CD57C31 -BCD3318F0F7117FCEC41E4BFE543CCFC69D57C0149EFE6075EBC81592E534564 -C7480C20EFFCB57D3F7EFBD3952F5599A8AC376CD2BBD4EBB12B44D9D9863569 -560D2D59520DBB6A2613D3174BC810C89514E0828323A9164D20832D2C75153B -BF388B98239B4AC9751AD57C2A25C5631EE7BCE893995F10306766D483FD867B -C29386B3BFAB3C5F9A07E56C8D6D45336265078428FFEF66E957602C0A4040FC -291B8648491AF5CAEDC6D40758E436432C0BF40A93F96CF1B4E9492DE1D142C7 -47C422EAFB4AD732A345B3BFC2C615A10B59F29FD8C58B6A0CBAFE329D9178C1 -744D14FAE70E94754EC67E41B837C14AC865630F8C9CD1E9BB8E97EC953BACC5 -0B4B5B4F04C75635E2830876E2AE7D0EB0B2CFBADF5B6E41231960F37553C42F -5F5E83B41AD4A75C8296C3ED321333ACADA874EA607FC84615E06EDDBB31B456 -8593F57DBC39EB41A1C0DD4539B7933829AC1B116B8661DFE674EBE05B068D1D -C4209B86051F6B585D66AFE23A5501DEFF3EA0C229F218D861FAAE80403606ED -1310B5F1EEBA5B1B83A6A959ACDBFE22D46BE01B07B8B7FB5B0CDF1E66E2FD90 -118A192A9B1E97B5D1D9165A948744A1B960DA72AF308E496E9D5FB2EECA8119 -808ADF470941702DB7235CE46FD7CF378A3CAA8D6970B15578A12F894297E27B -7E203AF7F93D6D2B194523B2D51064A3272582712ED56A12987BE676E20BCF79 -D9A507162F330F648A4236A1283DFA6C602F87A4C1A1AF205DC57128FF70BEF2 -50039CACA401D3A9002EDAA9DC6F72CEA7B30E032AD42EAE66789C13680682DD -C3CE5D10483745E6B12E963683CD1C5B2F86884A0E59F2D04AF9DED9E822DB1F -E5F14CD13AD39ECC1E8745B05B879834A8BBAF4578686557958B2257D0B34356 -D89D751E2BBA14F3755273479DC653ED01F6052639DDA9F6CBD9A4A319357F91 -B2D2BF5292B32BE971F2EAB21C651CA38FB9BF1B7C3F3BB46536F63F61BE88B9 -F8E20A197C1B94FF572D53B4BA8EBC6898AEE82464570EEEAC49D2ED9C653877 -773B3ED7E9C597952A6379F83F4177C133A6E770435FA67EC39AF6F9BDBC5849 -A1D27E68F5540EF421A081BE87F4C3C0178A3BA6BE166BB18B669E2FBE8AD2F2 -80A1979B7356E82388B51A98243BB9D6C29B2653E104B916E6B1A90F96885ABC -5A48B448448946E274150F1AD1816CE4D56D59CF148AF178947E52FA1EBFC874 -0931E0315C5037F24F139CC9E039A184EBB036ECA2033A70D9D14DEC4EEA2B9F -A0F132F6E63CBAEB544683469D3A5866F65E13CDD80623E5499584CCE7DE8AED -A85B1F7F53567BF58497ECE9A32E7B1EFBD9FDC256D724CBB7EBFDE3924EF67B -E944CB5396696625CE74F971CA520204D8D9EDE5A440CAE121A208DD3BBB0AAC -EF332B272870F26C605DD0974DA9BA728BB155303F5C5751B9B7B1FBE515EF05 -D481B9FCD96E6F3DFBFAFE846828ACB2AE66C90C6689E66790F1D142B3D4331F -59896FA02F4588D2C4A1666D6B3E6330059159C133B5F80C1FEA6983B3A7D65E -ECB180A121C6117D53C1DAEA9E4FAD13B0B3804208F11F175593673477427338 -FE402CC01CD6D8B46908E190BF08A477D7C65B58241EA83F584490FE1D18CC18 -18503402228FF42B65ED61368C7CC198CA98A3E269EDCF1742F59528EB81FB5B -017D5F3158B2224EEC7A2C21CD2A701D834F602760229B9CF2FFC290405D7D21 -394F7CFD9D7B5413DC52B36E2AA18BC769B4DA6912B2452CDE7CF15746864CE1 -A45E9E9268822265D1380A3CA82F651F9F8584F3C75D366C6BB96A732E23E0A2 -E1E1F0E4FA87B119E547047F4341638B7D9386C0F8F2810E03A461512EDD9C61 -2EA6E18D0BB04A3CEBB75498A4D826043CA86CB57FE14A00A4FA5517850E1511 -6D7E0664F97CA7C495D01D02908BAAE8160B0B0325E73B3C85A34838979B1F42 -70EB7B0FBAA076DCCE4D1ADDDCD332F42E4FD943515FFCDF34735034F13B5803 -42F0605590B3A8A23C0D6308A621EE8837C79290F3341ED3958355F0B4927AF6 -85BCA5A62FAD45E72442F541EC9A89A9937ACD7904C9D3066E059CA6E20CCFC5 -7983FAFC88F6844C274A8F42D34F052CF6C4930E6871A4F76B573CDC48B10DD2 -5980DF5663CDD00B7701C7DC0D72A535713E6CF18EF5BE8F7D315F7393890BC2 -5A641672A904E7CB8B407E0766E104E5C4DC3DD88F6A8EB255423F0F0E73247F -C4AAA97C03F2FE4AD4D10EFF0721308C6EE85F53E0EAD35F0F64567C84D5D202 -872A60C87EEBB3B6E85AC3D20E9DB260F37BD182AB50DA996406BE0B0F579EFA -7D81AB4B77CE39120C3573941386275027D72288CC873817D6E94C7BC657EAD4 -D76DA726352C2BC7B20E357DD64B3443BC80D978B2630A2AFB2293801662BE9D -D8DF886C0A4567F351400785B66D70412EDE4B53696F345F7E62738762121BD5 -0121BF06267D8534D9D02261944143F7470A2D7D70B6C30B55A9A103406D8CCC -5813E8C3CE294AFAA420C35935BEC915ECF17C495D79A9CB8DDB75E8A1C6A525 -1B1B420AE8E0159DF7AF26D635C93953ADA11C2228E0443907EB72B805644363 -65EF866ABAFD03CFDC540D3B00CC0AF1AC1BAD7D6B16E99216B3F20A4F09C559 -055D34CC6E88532735409162A53B077C37B06CA194AFE26656F180118B1A48AD -737B56AAA87A494E9B2F34D3ACBFC61C0C9620A76C0A0AA8CDB2B2B0E28D4739 -7432829128E83DEA68D6D4DBCA1648897882C8EF4C2FC6895FBBB6A230563CB7 -AC766E4C7BCEFEB342F9A5FDE6B6846FB50DBB5EEF8C6AB4F839618106250CB8 -C0EDAF9BCEEF07FC68D3E13135DDCF20EC52D6A25E533FB9E29F84CFDE8A78D0 -B5C63AFDBA8B1C4F74FF7127C7B49241B69EB9B7B126F5C575ADFFA29B27B4E1 -716BE3FA246B6500F278919D571C81EE27AC3CF8696871796A560761D477BF2E -71690CBEF553D4AF7AF6CBA53635C89A0BA6844C308478A476A42B13DCD01DD7 -73C4B2D0DFF0C0E1FE6B36B7F091307DDE52E330DC8BFEADFAA60B9193CFD6D8 -C3C1172922D6E46FC2CDE41CD0FCD1B88D485E0FE87B9458B9247C82060D33C9 -B19A7DAE9AD65579A99EFCAD02BE6390860FFC7C4E3F96235327397361B0BE9D -7B2F2EE5D47731E86DB99ACFE39AC140AEA0EB6FED70362FAE64391914233E8B -19E23092C71ED360FBF6E445E34D8972352E5D34E11B00F027B068E431C2E8EA -68A511EDCD103577D38CD594BC86789644F3DBAF2FA1FE1E4073C29BF4E39E62 -0020FD146794CB5B6090E5BF13B02355A7689A824B564B95845E51C03048B476 -32CFFB922E878699CE93E25394EB242BD21D77CA71D28EA7B6939A37DE1DD8D6 -C1BFA07F113631DFEF0CD8ADF418EDDF1D1BC0718F554CA3351AC97DF5F6C40A -B4073F62C3E604F76770D9563F149B50DE4819D8C03077FA1E2DE8AFC505EF4B -591B5A8D761B3018D5C5DD3D26329C3AEB150A34AAF84E5E1D0590BA2A17BF5B -E36A4193D13FD446339D3C9A1D4C336846C1CA17337F014BC0F52747878BDFBE -4DC8D2B871BAA9DA59718E9FABDE91AF2467BF2A322C5D9FDCD4D90AEAF2DF56 -A4446FD1C71E9FEFDDDB6940C33EFF3D60177C9681A94EFB154B1AE000292D6D -3B6B9CDDC1982FBEFF024B195AB1066645F80DD1418A70F8CA518A219EE35AE4 -D046C9560B162713FF31F2A5619E834957CB1CE9B561215711FE48927A370F53 -06FF00FA14506E42912FCE82DF59B8E1697014E9708A2EEFD0ADA95ABC545596 -FF2DA33F77D87E10B990872423FED32E3B5623166DD0A579664A46CFD8F95E20 -E35B03760E964331ED2F7FA937F9BB078F71F31ACDE4EB5050C9F8EFF4223FE2 -5E9670292E319C371791B51C7CB90681D8302BAFB9A1DA864C0C87F694ED93CD -D46A5BAFCC9579A5019A9249CF72771FD412E735D8199A48E04103CF78468E5A -AA222D2F1C9280EF55DFA685959400282E286BB56538807F5C87B193224A889C -680E05F93BB9210653613BCE43CB292AA4BEAC36C5591B5026EDE95BA780BCD4 -62422499D61B7F2A888712264BCC0B4B8B4DD28036F4950FC9DBC7FC525F5B89 -3924EFA75F7F50423B506A5F8D46E8BD5D0C5147F2AD7C9BCF57A93F8B188D6E -0BC266CDF09C0B78D7DD79B659B4F9336B98D2CFE2A0DD15CB79D87FA528EE52 -7C5CF1E83FD5403E42DA8E753051CF34C72CF5901CFA96E2F4021EF63622CA73 -F416404FEDD730D7DD28075299514670AB74CDF77609B432E3A8ABF6CDF34BE8 -82C866F9EEA56C7D36758D27E7DA6D26A37041D7DC19A8D6FE1CDCDE1A2FE3DE -51D29AC8CE19F6885A6A8906C9F3D54224028FCBD2D34C225D7165ACE46B797C -3C8B6840895554D460F6C7CB4A4AC0B0B1A8CE7016E2CFDF56072C7CC6E0913E -E924D4CF20226948F2BB641023E9C77824CC393163794A7C34E9925AF03F9E5F -E0AE47FBBF6086BEE6ABFBB0702788A63F8C5174ABDDAE23C0FB989D53EB4AE3 -9699A447724DFE258636E6DCA1B6D7A2D434C0415967C672B1F843856F87BBB9 -666328FC7FBCD4F6D120565BBE9F15203DBDA16D0B9F44E4DC1E1FB4BE45BA00 -63891961DB1EA0E711B6A13AF3BDCE301BDD9CA172E2CAF4F5BB67A1E28BA76E -8F574B86B036D79F24CDDC1FED51604C497C55479B16319471606F74CA153356 -09060F16951F28921F61C65097DC59A8A3BEB9E47C036FEB2ADB906C4339D227 -28463D527C20044AA1251DE1563CD4C897A62693E4F1FB78888C7159A8EAD8D1 -B06779571B340F6A131E1D4911BED7BC25D6DAE32928119C9C76664E53413BFE -62711326E3A3EF13E1B62F8E84E5744807BEF8F5C7035CCC2D693585ADC56A78 -D4FE6B027F4ACB9E098B0E6418045226B5F6F2349BD0450CD1A567C7E8ABC433 -8C4C850D60FC770C33910356567198F239CEC1D061A5C0D31980C379C93768F0 -728E92AD4DFE86E9F23EF4B7435939734EC22F02B029C1D4330DB135E3B8B092 -D2616EB4AB01BB854A5281F9F2CD67F6FBA75C3E5E7F70999DDE833979C7B3B4 -BF16433EFF4E9B234A85EFAA4BAEC9C47CA9C7BEAAA6D87458CCF2E12A38CDE5 -4D4CB4F60F851689C0DED75CC8701881BE66ECE19CA9791E9959215631B19C75 -5A35F948833D1228FF297D7800FEBD3F7A2B5F039D9CC39092101603F0CE8B76 -F1EF3FB06907054ED6A67D1C9E34769D36B19A12320B1C16B30DF6CF1B17CEDF -834FD6902344BA4145D7120C94882C75E30F02D96D8D7313BAB167A8A1CD4E70 -D022F26AC307F1FF2D098C1E6D89B9228B960054248374A313AD567C902B6814 -263B20792737EA1B42A228795AEFE63EC95BD7F06EE15AC1D0355D57AAE276B5 -FF364A28929E7621BC14719A265064CF6625976210806979280850CE81F1D1B0 -363B275C7A6D6BD8D56A5DF05A4CA41184BEE1D18496C3BB96DC3386FDB41E06 -F8409B79B1971B6FD73977C36A8C0A7742E7429E389CD6EF5FE87CBC16549B93 -5D31B5DE762D3BA5DDB12664314E094CD3D1E3B854B223038B3AB373C41EFA8C -3BF4D37160927CFF10954D279B2C5AD85E6E6DD56BABB683FC01D824C546E2E7 -A7FF73A1CC6330E05D3465A34440FF5581CF574F9F335CBB0F836628117819D9 -A8E4A579141A7E47EA1001A63FCA77DA6E55219BD89C64A75BE45FACB2F2E48C -A7375404E79BC059AE2839C0FFBCC8F945678D95055046696F3F2B6D8B2D7539 -BBF07A064EFA2B75EBF04A6D780A6A496A6F25593220D413AE1E37D0A08A8713 -19D6A2500B3C6467FEE0940586E4B2C524F7C8C92924EEF47EC0ABC373DC1F43 -D3AE4879D6D4495DFEDCA0EAA8134F41D5329EAA414956F1398615D779F13AF6 -338D3255646B5BA8D9C75D24A5FA1F9B0B91EFD97236F9EA50286D83C6F1EE43 -B040FD84E62469D9CA5A946A9567D2706D33CB19BCCBFB19A9CE3CCBEFC058FD -CFE63199D28E2841B458BA5E2CC0330094594FD4BAAA432B62E6F03C114E9D89 -7929597C7A8B16EE964614972FD47CD357E32D9E7581D407EB5FA16CB0D06517 -A3C9C88B756AF52975D8F419E5FFCF778499597748EA8EB85234BCAEB1AE8D2B -BB70E887569E9FC08D981B3C76E5CEF81B0B32953B92AA61DE5EFAA5310C2F20 -5E2ABE8D48AE0230986FDBA94C8D0006C0DCA86B3CD91B979B5D68277FFB26A6 -046D331FEADDD50592D143CE3628AD080B314ABC5EFA22B58B65B629E173AEE0 -55890CEC63AE5C4ACA0594F055ED0F8400A367212541A3E6164B00AE6070499F -1538603A87CBF4606E305005EE95335C411F2B396231F1B3756CE8B6EC95595F -8C66A933F2EB729A381FD502B02470741F5F7D2909C6881697772023480FE87A -E06E7FF3C7B165B53DE3531A35AC1C8C3EEAE32F44471249DA431B381F3042C1 -3D2E9750A33CB1416738B014EEFE93664B6856ABDD56FA5757EDD96949DC870A -FDA5561452DA2B61C0126916D5B8DC5D776B6495920F8A56F9754A74A47F171A -3697C75E6DE088AC7B7D7B3E8823DBBE4B66FBC2ECD8B907B428C0A5ADD93930 -45B92D9EEF1F64D9B364B4CDAF486C96B38304CAB171686B3F07019B87120B19 -64ADBC525F2261601C7BC5B17E0A1ABD4066EE6705697AE8C0992807CA3C8489 -70A76918BBBDFC662726E201C3EFF3A4626CDA05745446493CDFDC5D6C812DD5 -8CB7D705649C363FC0B111F3A6C7C0F233F79BBAEE2793C1A55561CA16B85B93 -69F84D39B401F72A8E4FE159DA89A217CA0B413F44B7592F16EBD523353E45D9 -F6DD625A39848DC224CB982A6B9F535D4A27E0BC3B2BF8EF45657E1EFBD0EBB8 -9BFBCD6E0FF339913592F43F0841F7FF864C296DD12580F0803FEDB1DA850D00 -9A8B3868F409581D04D73D356561D2E2E8020B5F62872C45381AE760D00DE6AC -C62396DAE0585B6F0ECF75A1012A63A4D54073E2D80D3CC5743B3BD03D2B1D52 -933CD3E003F28333A88AB2F091D16424C4C9EE3BCCB901E40349C6E33858B246 -BC8788B03E7B983374A37E8618B8377E0556FC76C6C87B6B8F4763D21E00F892 -4B37190E27C266CF556A12338EE1335BC5890E9D86D1B248FB67A10C358D2DB9 -AB3FCD5288973C84880DE54D5512CE587A61933AFAB1669A0D2BDBBA85E0F8C5 -2C6D6E58871999D177C9B30AAB9CEC401EFC7BC457B8A00196D228CA0E12C709 -228419492684F9CFA0B7F764D2675B672E83A7E0F39AFC997B56C6E70A447795 -ACE4D67B2832C0689189CB6A9FDE481CD3A2CAB2BFE336B929AB0954251583C1 -72402167F089E58610DF14536C155092B6998BE9CD99736E122FD3A3FBCE1953 -EBA1ABE66038DFE8C440C98B77CF80E9CB60E3144C0D80AC23DBF8537D690162 -576A2120C201D3F2E4C38D466F7A9FF33C7A8DD9E39AB1E2DD0C044897655FC7 -6B996EEFB09D6E0536C59320F8971BB5E500970356A296220233B11E19BAB3A8 -03F82CE41B3751753C320025C53F1E6304EE6D9727FB9E61AE7D125D4F656F90 -35F8AB032DD3FDB56B3F99F7828E95DF01C1F094DECCDD3AC4CE2FECF037B4A8 -6DF94FD6738E8D487A4C76A82C223ECE7A50519E6C9CF02CB92EBE0FA1BF6BDF -8CC79E6197F8E5EDC387660068C235010232B0ABEA843D722E265DA77D67FDAF -2C0277C9BF9914C322A06EB63CF8D33CBC17C7C619A16D2A0553A2DE83192009 -E9228B7A1D17837E5F99772D0A684E50896859C1DD87B51D090AD6FC0D661F14 -9EA1EDCD97EB9200E4DDC04356EC05453DA0DB84C558C55C3B7CD0C8DE5F511F -733E0AD84D1FD19474D58338D2FC530F11FB36FC72D529B4992606CE8D623850 -20B07D3B2AC91C7538A52BBE3DF079B0AB4DCC1EA2D51E3CB6321D2F92769893 -3A7D0AAAFD015AB189C1BDC9F8AF96185865E66F633A6BD74DD553B1D1B0FB66 -89CAAE8C7D0DD7A7EDC1F49E143B5AC0851330E64239DB148910C96834F9570A -65736B1E973E0DC7B65531B9A36DC5725058C466CAA1A4EF667FC9AA5A3707C8 -4D5543F8933E3DD5E0B1B8C242CA7E8892BBF6CCD481AAA99B96522FA77C1227 -A7534D02E08FCE557A93BE74E8084CFDC916566C47CDE46989517FCCA718AF98 -7FF243F5D75FAFA39D49DD87150D8F62F91A869F12F53790D0F5818DC6842E51 -26D98AD2B3A25B04D7E19D4198B02E57444DCC86D3C62FE9E0D7129DAD344D1B -F4C1EC4C8B096311109F5EB48A5EC3F4931EA134388F2B46B99F58410BACB788 -F4470FB91C8118C2A0212D5F8A4024B3B6DCB37BD1D216056B1E8763A0669EE9 -76835BB2234E86EFE2D6E4D7D882BFCFFCF29D4C553195A130C956CBA0B0ECFD -699D14A277369E5A7A5F4C482681A23FC8C7523E4BA4BA8383994007125A06B7 -C21068BB8946DC829473503EC92C873E63B9CB8631D76365C619F110AD5EBB28 -1D690D791B69BF643559E753FEE9A611815846A2F45699BA4F1768F162ABE615 -AD05C737E64E3E0E5E2A92A030D29051F74C8D6B2BC5308820EFA5FE40279C41 -1D21332BDFEA24AF7143192D6146D9AF64BF827FB2A23F7FC66D0656A986D477 -D98F41AFDB453C3C762E1D729DB377A01E9D22EFFE6E5F39ECF66FBAE371392D -D04C813F16764D194F60629538745909675CC6B087275FEC0C6DA3970135F43B -54B3DEAACE34F3F5DE1813D6E445D15E230277B91F47DA19539DD198A9349340 -5888F8D44F26AC106E9D7D7BDD133DD32CDD56736126A4CF401252BDA1C2240A -AD1653664A317A99B117BE4840A7F8A03A329846A0B927ABD28ACBAFBAACC426 -6E78328BFC11F47BE45195B5692A4EDE6FFB01FE2AB1B2678C39EEA39C74C576 -BE5D26667013087FECF4D6E397B54EFD44FEFFCA1ED10D1CEB2093C8FF01718F -6E420C769B60BC91D4A28EAA6DF03C61869E96146CA42FEF5EC2ECAC9C2B3DE2 -E43F86CEDFB029B5455503B63766C4EF624D9A04508DDBB5C38C0DE662AB1FD3 -31EF92E1C39C8B1DF11D00A4A0908A3F6000A3A7FCF6F73C5738AB3271A5B75E -CE01D536CAE4D86FEA334727961F1AF27A454947C737B44A3F528520B60B6200 -E81554075F94FD00C4A0852F44068CD096BCA5D6D3703BB886B8B5EC9B9E3B0C -D5CEB91337B3B3A9E5173C2ACD3A3E3AB4A1B9BFAE1054640DFABD1F6B0C22BF -363CB43B26262AF3BF8DE092B180FDC6C9BF4ACDED6C3BD0F7BA3D3684EACD5B -235E557FF4CF03FB3335E7EAD0846C5753C68E510670D6DAE77E0BA5101E5C89 -A68847444E4B6CBD8A1ED036AABD5C76D7902F1CC3AAB4B7F65AF3097F9BBFCC -3D79313CDF148613C31E5DD7B1DD974EF7EA50EA012F77DC1067323AA92553C5 -DDD670D1C5CA695290DF0579EA6335F7E34EE8EEBB219B75706106A0F2554F5A -7D26D6E4A642CD3CE3580C69784E95235F5356C99909494ADF969A3DB253DE9D -EA60768AE4AEDA02B9AEC2033D7784083105148ABD3CFBC816EB988B01F652C5 -A8C74C5FDDBFA5A13FFAEC90C77D932A9C41578D7DC49B11AD98DF75E7B7304E -30BC2E8E0281B6D2FD57D00DB836384BEFBA8F517F6DDD7F9E030019F27F237D -E5DBD0DB7D3A0A8DD34842FCF33770454A12DF553220F15F8916F064CDFBF9EB -67FC0BF6BEA776851431277A23D6228F6D4A51857B72E165FAEDA87B1631CE28 -E6B0827F64FDB35CF48AEE923C80B53AFB84169EF6F1574A5643BB76B7331024 -55A7F52F64A41052134BC5AD2DC092B21B033C1C4024B03B360799368594AECD -C42D45591F9875D46D5EE20EE703F1AD1C205E45D9845AD224C7D3F0EBB66F78 -ED96C162CD2CE58B5C18BB5D7938E06A860F7211B8B38FE9B849F58F8E809489 -7C6579EFB9632A0911E28DBFA491BB655A7C2AA6A833CBE87E740D3D2C +318A99508F5D2FB656B5A91E94F80F74C7472F507428AADC375AB9F18CCED8EE +9DD57456CA8DB8D3B133596CFF2D510746BFA00B23F4001A3D0E8A24476C497F +A14422160995F3378EC9A74A5D72D776BF8BF91146E73518E61C94AC5C7ACEE7 +783E29B29962E638F75366A0C0235475327F024CC6C824A52A6C25E669546A39 +C3459E06945AF250269C9F7B541B1EDA04DF9B9C7B442CC7484595E7B1A860C2 +EE36E1F845BC6E79C445E11925A881A0D3A9849030954BC5FBFED8D254AB3307 +A399E20BC127C05EC76D54C928A3CE1F99F672A8F47C8520C5D444D1EACEE114 +A71EBF58CA1088DEF117A723C391F62C0AF3985BCFD5526503360C33B1DB957C +039360854589686E27DCA9375B709FF2F8F5EAED9564F979A245AE2498556344 +69E2A27804B51D5C52844E3582CFA648E82492354EE0A312AFCC4E90866F63CD +173E4CC6A74D82568D0CD88E078BEB0A5232202C7F74C3A8C80DA4CA4BE6C421 +15B80B4A2A50F91F7841F60C5EBB4DC67ABB15A3A285214E20B5090E25EC9C7A +2A8F1C9F2FD755368F61370634A37A2EBDC4B8728D2439D55B73596A2D5B28BB +A83A38BFCE4B84AA3D8D373C53DCF5DBB5A327D9364288907C0ABC0D5E6B1D1F +7E57E3E21ECD67DD9E3F0E86E00BAE52ABF645D6FE70EEBAD9C853FE34801A46 +8F6BAB6A2C22BAE5DED459A3F06096ECBA2D20C707A5F47FA067FCEC8C8D6466 +9E478B07712A577400F5FFC65EC107578C4E6F28961509BB7C41E49F5E45FC1F +ED4AF951E8BF1B261E06E4D8AC3B4CD60AA0FC495E73E6203605E5473047818A +46C98482D55F198EFECEA05092BF11A982798FACA6AC540293AA90208B56E2B4 +05A05AA45B2F8A67CA109A6987A670340523EAABC230E0034454E773C31543EB +C1C2A99CBD1DC7532E2D2169C3C25B5853E2F0148E4AB501112B8BF210A5B39C +1C4E8991DD2DDCC634D3D63415B5C7DFC564102751C1BCA38AEAA8F4E69D603C +13A5B5A81BAACDBF724AAF76189BF3DB6239A7E19A1B2D6DB4943910A0FEC76B +233994CDB5A903872A55E51561F06A6B999E0F91C9FEA20E0176612E869FC157 +CA648E8C2C4859D3C17905352F1E950675D8C56369B50BC8C75413021319BE2D +C982926A6CFC9FDFD4BD728E8FC1B6FA1074FD7271C136B260C013A9A33CDFED +A82DB154C0423B391E7BDD9C5B35D92D3C4F5CA5C773AD3712840EF3BD5F3C0C +9BF19092B9296CFDA740566999ABF31B92E8AA5A92D29840D33625338A3E7C02 +5854A6B272591E3B581BFCFC1620C9C0F0B128B0B69CF0FE34E56B191FF65DD0 +59BB27457FB4CAE161551620278082F048A6BE2B9073ACF7A6BFAC7D1F9F7F0B +3DBB05CBA5BE5424E1A07BA58458074101EB3731E775802C97133C9FEAE5494F +C0EAA6D6CF2DDBC064CE7696F610A3DD93024161BFF27FA1D8075A295BE3B80F +CC225A257619628F07D9D740349854CBF43BD72E25F63249470C6AD3E171C6AE +149931C1434F22B467BC377604669C077F5806E9193F9E16A737C19BD3FD5C3B +7420A718C022EF57CFC7D7BDFE22C3FE896EF34BFDC09A6D5A6E559D6E1F4D31 +8A6B69C544385C1CB338D352749ED74FD1A051ED6579D5F1673522CB02BC25D4 +5A9A51D740B3A9B6AA52F2B9532A32F4C22FECE7BE96873ACFA2836063BABD50 +D4D0647FCF2FC9975A2ADAB86FE1AB14A5FB4C3A576387A993E9EAD3D401D3B9 +F231F890215B7192A71327BE72F2405E94E47EB82C9A7479B00C6122A94DFEB3 +293F1F328765B0AB7A2D4B51C48E5E2B6E7C96C765EFB49FEBCB593DF1A90284 +4C0723CBD625288D62D821F47FC3C28473B3C5DD3322C8D16C4EBEA14523376A +844F4E51F255B2C1FEFDE840EF9F3E5812411FDB55185100403155B295C63B3A +DBC92BAC9D6973F0D609CD11CC3C3BE89C92CDB21B6C976164FCE64C78C7DCFC +DC64B362067DB28BA59ECB57C2A5880EDCE8DF84606B2A87979DB086E06ABE21 +2663D35368F31CE867F91BF71FF831CE0E38084F98D501095CD4706C2B82FD59 +4E1501EDA7B03CCA974AA84EE5B39FED998FFC3D641B2634D72D92AE5B8BE9BF +64FBCA1B8A80969285372EBCF24A27AE19B48009B144376992058FC36C23CC5A +6E4A0CF12337A9EB8AF4EB6694621877CAD1C713A85940DCCE4FA1EFB2CAC5A1 +5FC3CBB1E61418DE140D044900F52A6BACC68CECF39C9491756BD3153D07768E +9D271FDF798A9BE772E9D6203CB03206020B45BF76810C0315448861A5A2030F +DA8EC1254C22D7CC89684B5AAA2141B7FE3AA4EA3BF55D907B8AD5FDD7488DF2 +A92B28261638A4862130B2EDC13E78F97B9E61B0E933F0AA0EDF58A66BE288FE +84C209CC1881C5E57ACB026EE9EEA1CBCD4A4B02E7FDEE62BF76D885E26B2297 +2C274B7FB21A9B660E934FEA1471473999B90DF953DCFB6D68DF5D2E021349D3 +14314662237C892EE094D4735D2858FFCD6DD748530645E493C98D80A8285CE5 +6715A6328533B1397C3705CD56E0C75387838B370112A8B235ADC17A0A56E03C +D175FB1AC49115DF3A8068BFAE58E8CBBCE530216BBBD0F9F3944427571544F2 +8C62339695952397AB33C31BB14D2B0C9F3ADA35ADFA8E4C4B60412A4ED03363 +7EB00119980897F8FAD36DD39AAEB4D841CB7FD8A232A277AF527D50DE49C5BD +936E0784FA8D2E9820110C5BA10584B294B2791FD0E49A687753DEE31EA923DE +BBD92D8C08FBACD88FE0677BCAB4938C5902229AE85756DA918D1EAAC6290FF7 +D9F6060953B2BEF26E8C07CC430D70EB307F1C727A57F3D46BD6267A03FF3437 +E1D2A9716E3C4054FC42D3C0246721BDC61D4A5BDD65016F90D55BE8FB63BFD7 +06B527A49F84B91FB321607879A9669EDFBA9668D1B4DBD407A7D53F7EF6CC40 +83B4F1A930BA2432BF2C984C4EA14CBFB7030CD0BC1DE50473BE03E04BE50DD1 +7FB991971A7410A7EE4118F6FE4198835C448B709D612075D0187F1D064A55D0 +BF3AEBDEAC29A16EB33EB458F44B0664E74A58EA5BDD24B9EE38374F68E2A923 +8E6EF9E9F26315A22BFE353D875F5ADDF0821009F568476C9642BD3B942090F9 +39B7902DA57E8C13BDD10ED0E137F3521D1B29F287FD6CDFA7D26E2EAF839C7A +38F06ACD6D713FCBFF0510C4C35038553E463A0761F0A23DC9030F6CC4FF96BF +99AF97F7D9267593812BE751607032E736626FAE21BA2912CB67547A5624F9FF +3253923D889FEADC594F8975A032E566CEB10E876AF5047937881C262732BFB8 +1F73C6FD56077C00902C6EBB852D1747B8FFFB1468E8204A9400C4AAF7F7504B +89244B5317C1DB608BAF91FABC56827754D6AB01EB4188C1DD73EB4258F962F6 +D18B5C14089225B509D23D5CD4C1DC4EBDEAD354A1B108466BDC3DD86535C7D5 +9DC062AC8F099821864264F13C4AB2441E7ACD2C47AF331AAEE509B0BA31A92F +18CCEE565B5CE02FF94D635AAAFD9497FD00E8CFD213D22F06BE684D43369131 +24DA92CD0D50373B137892A8B6A9D619094621247B06BE1E433FDB25CBEDDE0C +A7DBFF7A6CCD6DD55186F56A089E3901136B014C0F5AC86C819D5824292E6FBB +17704445C90AC7BE8252FEB750B78804B33B2CDA000073A5530C7A7F2A4AE279 +4D627939E1DF094EFFD5FCE391C4CF81949BF45203819647EDEC018D18CC1D5A +C0C1B1FE3D2BCBABEA21861E2F2FE5DA884F134A93F17F001DE4D595014F3E76 +D4ABF5249A652CA8B53ECE9461924FD87EA819F5F68893EED1A7A1FE4F231514 +3E69D4993A48F014F7E4FAAFF2D8685DF2FF50A41F309F5626E6328EBE3D7793 +6B8EB46F10997C63901343326BC91D6945666C8B3362A1A94A73AAD158E38E2D +1436AF6B3AD32B064A6FFFBEAE70AD11ABCE5ACBF810974EED6623FF916F947E +8897C2171970FE02EF18874092950F75632A916FC6EE77883AF461597245F0AE +8C9C7005217A59C63F192A57B8CB74D07048E7A25F294418AAAB0ED28B0229D4 +2571A21B6B46570EC066319191D8B155B903598F4942F692E3547AFE51D76191 +3A16F163FCB3A73C36471EE438FD549754C91190553CAD1FCC0BA3B1C1921470 +78784DBF40B54294F9EC7EC7F5A8D574CF9CF9D22B5AFA790BA5659631FA3059 +E2E1953F58FB83780B1C99407D48B75A13999CC536089B8AED30485E52DC4985 +82D1A5790B451407C982AD06399DABB46A1A4AFAB1FB85F11B558723706CA227 +37FA6429311FC4A178800ED5DAFFE353929EE385E7AC9E04E4FC63C66296C1E6 +3C5E2DEDD62975D7743C6D35155A5A8367EF7395E4092F095745C3192A5A66A9 +7AE6B45029753FB2230B881A5F7B0A393AB2193B15C06535458598458618C70A +CA5EAAA28AAFE895B5D4CF0A6B2E3C2573F790EB4E0B91C69E1E17FA78B77CC1 +376510918CDF6E955F231BD7DBE1D4B0C1B663DDDBBCD1D95024181273D58215 +A7455285B8DE11E9795DC15B579EA328D21E9E2F8F276D3D7DD7DD69A5BED0A9 +351216C84EBFDB27DA7A3E151B42BFD9165B491D670014B3FA0274F15863F51C +54C322A69313804D6960AA6F0CD14A970F28182796656266DF384B25F627CF3B +5D51F9831719A33AE20EB9CD0511871B416E3DDD76916219B7C93431CF22C76B +DBBF4D6E85432A920C532D8EED18515C4352A52E0B3CECCBADFC1C1133267F2E +D66668799BCCA45FB84FEC96E1BE5F9F62784043B71C05383C353CC53F04162A +9D8419FF16DF736F4CEDF9EC973C501587145DB5E1F1ED63838CD8312011F19F +94F8BDA1CF1225204B9510B972ABAA4F6E9A92A86787127AD97A42BD3952C5D5 +3C588E96FBC8B48C088979F3881BE01C85B53BD456E0EAC91B8A899BFE0E5C1B +D6E38EB78BBA172D26B7F1F6E90F029AFD3CCC6E3B101777F6E045D8892C2005 +12CEE278F85797C382624E847BDC406BDFC013F099F6236C6B4C21D85F205D3E +6FFE140165D3176467E7B241E4BCEDCB0850B03E2810045E79E3190BC6D251C9 +8A2D9CA4314B334868DD0B63DB9D00CCE4D80B4D359E54E9E81F01799905F8A5 +FC2860201F49F53045CAF0D9DDF9EEA4B00221BE2EEEB189D5E1CB6B15DC91E2 +DA3C7A24A571BB9517F8FAC84F7DD0A41F53148D61BC69C6BA042714A69340D2 +86F5874B6653A43EFFD735CBAF59B539B91C1B05E6699A74B1995D5E6AB5601F +9A606A94F85F32DE43ACF78E3E2B75411565BCD9A90491E29E22DB3596F92BA6 +F7C2DE622841483492295376FCE5EE8BA0B13D54740109D82F686810A03CED91 +CA7442086B0E3A5DCC22F11FAADA1474AE0B6A893B3CA6065343D21B834F7239 +48B88675A71B046352293E2FA73932485BFFE08C8CF502F6BE95E999660D8B2A +0FA634AB11C8C4765CB478F19595D5AC0EEAC22E20BD6F30B1A1E3B10805CE25 +FA694E5DEA8DC007C05D654BA6593C846B1FB7548A7ADB2579811D5785EAD68B +AD679E1B61F5FF45E4F8684C7EB447EBB9C9F19C1D346A1D321F2D49E84FD923 +5C54CAA7F85B97232B8CEE6BD06F88F71755AFBD86D0CD6FA10ACF67CE92B40C +605C488E397A2CC9C206C3D96133EF0CCBAEA910F86DD04D645AB8D40F440439 +3D5F0DE8C89DD451C007793ACB6592E65441A9F49BAADB4C33EEF1BB685A74A1 +25BFB78143CF48AE6E4220532452C6437E8FA281C961C9D205DB1B9ECE54A7B2 +02128113842C8454CDD922610DEDEC6AFA3605F800A2C66B1E014EE0520FA2EC +E033F8E7BA6C6A64334D877426070CC64F4A30CF382F2FA2511FCC4E8F32B68B +10D7EEC8A2D3FEB524B64E1ACC9A5D888916D1C52CB3358E4064926E46A0E80A +D7D379A531BE1B3679CD227B51E6D6C02FF46437C0689E7E5346D47AF8694844 +8DD0BA48D36677A4E612DF41F5109385E07B96AE023621BEEFA0A691E2AA2B90 +E8CADEA34F5570B8B23BC40420ED1D6B2561C28A147E099EEDA54721E38D48EF +4C685E67F4228E94F657486A8066269822E58B38B3BC343F9D5F57987579C683 +1568DB43597420CE2BACAC2BB30614464BA2D6CD239CAA21F4CABD42E0025967 +017314B488D7E5EE80E110F82477CCEE750ED06A76054A57FEA3E58EDA4E3C3E +E420DAF021E8ED0D4EF74864A7A1E824C4FF703ECE2C7A1E6BBEDCF03E07B370 +4E1165A4EDD682BE80FFB57B031CF2F1AA3A087FD8F0097423DD6C5CB7534B5D +657B06513CBA6B7003EEF17DE1694B408603A07E466032CE47A12D891803588E +B1C2A4654A823859C31F6A9C1E43A6CD1BC33ED401C057ACF6226FB683A81D5A +9275BE95DC05E58600D03387859171860B5CC021542EC0F9A1D09564CD5D1AB9 +AB4D7912746DB575690193F7AF9F1E8796C9D768C36CC1E7881B7DAF0B577A49 +3120506D2C28E487509CE32C3AF08DDAD24E3661C510A118B1E6532BBF715A0D +6823411E2F423322A0AE1278664A2A391525C51407FC44082FA112B052D18241 +C4BD149FD298430464B8805A392636365F16B552C3A8C85FB4391779C219E8C8 +7666533C8173D05FBD8380AF078D402E8ECD110D8211100B61C2B3AD289F2ED8 +06513E48847DEC3265DDA8589CE2D08462D88BC1DE42C42C7B85C5814FDE1A22 +185627E533C6D6FEF2F08829E4308401F9A3688E43966F682E008CBCEA1FAA78 +AF167872B047977087BABE9CBD0D32C5BEE00DBA8FB601CA91632BCBCF931FB2 +6A7545A1B85240B4CC322AB87215F7FD0861E2E15D6610793D37343DDD37CFE2 +DA8FE76F21F89D36681AA6A43DC0A18AEE2B8890A7888DEBDC7706B0950C5941 +1B4E0DA58D126082D077CDED69545AEC02608232764F1BD76E619096084F6A40 +E2C90B7DCC3EC1B44B0A9D57CF9A26175839B5E794DDF3D971A66BD17066F96B +8F5BCD802920130F76E434A76F8FAE8CE36A682B88013043CD4FC58F0E43957E +6BAD3CD19DA0CDDC20A1A59232EBA4B3D7BFBDFB03B340476C88C8D1E2610162 +AFA87AE597856905EA9E3BF9A9F876708E4EE74EA2B873CD6334EF39934E82EF +57FED286EC865B17F0458D8C80EEA530A48AE583D90327BEF4D5572C2D6302B7 +2826CDC8273D472681AADF689B1C35468B4BD921176E2E6110B701CEE8849057 +1308F271EB8865D933305FAC772D81DBB57AB63B9FE4A099FC5C12A3D0C3B53E +5734D8F9A6363E7A495DA00171614BB09EAC3DBDF70FF4BE66A1B7CBDB0EE947 +A66EFB7FE439A044014FE080B3456E6882885826AB7F7607B83420EB3F1938BC +CD256A898830737E39B674A2AA18FFEF4A5060294EB206535C95C56EBDE03FC6 +58A99B4F468DFA4BE4F63E1355C57B9365CFC853D4DA74774E8C6EC887F1BA26 +5D1850271128267EAD0C2B707BC18382C8F1C30F45DE1BA668B694AA78AFBB5D +C8948DA576469BA18204F616F978E606BE2B07BD972F3247351D3F8119EFA501 +7C471171B70EF45ED3557A26501F599B7606A1F3D3F543C840B38AB2A9AE7D3F +9AA1633E6DE860AB2378329FB9513F1B479B9C553EE43B4565E49D4FB7E39CD2 +998D5FC63EEDA03C1CFB5CC07F3203AACA07C853B69DABD3B48FF745B79AE1F4 +E6013DA04F13E069648104D5A38A2678F31BB1DD166D07578DA08A3476E773E0 +9C23D8E05016ED76A0CCA6BC01BF814996AAF260249389C47CC8CE66B454A5E9 +2643DC04C42CFB12FBB9ADB0E78C79C982D7F24B2FB4E5D32EE804FFEDC9FDC0 +B9984261D8124B3086B2303636C1DCD552AB7CD18AE2E6BFE248D02882014F5D +659C48DB8AE75DD1C5589272EC3D33A552089E26F80142AD0CC676F70A94E2A8 +70BD0F2DE0F1BEAA038C6EE73CF58AA15BE408EFFDE8BC1B2645E1C13272EEB2 +45E63EC4B4E34DE3F1BF7E8530DDDCAD1DB9477E253BB0CDD7DB76423668F37B +6D8CF668643783F562D1A88F831885F92165158476A408B5891AE6583B10E0A8 +2DC1178398D7DDD886B05FEEEF6505C499EAE9A4ED51099D3D424879E7BBD4AA +61C14D18B0239F63C1E6A3D559D232C4833E09C36B5E7A22ADC68E1963610666 +1A6BDFB86A6693CC2CB647A4E339C09BF17FDD40BF22CD952491A5F5A66B9732 +017B68D7961C360A317C013F335CD54FAED7A0F75C75C25C575DE3E65E3F0FDE +C30C7FA545BAA0A3A1A22BB859C16F58E93FB0CA74E98E3899D7923C055AE485 +E75FE2C05DFF8874F452796F95BAB9CBD271423DB40C6087626C5122454C6A9C +BBF205BC00D07D9830F8AD3A76A5A228E9911583358D2122F959B233A8F590FE +BB916539D2AF54A10C52AC6541B1C1CE997480908E02A722256EDB75BEC4E962 +1CE8BDDABF01A673F31775C408EAA2A5FED6AAC014B05C36F3C54D9AD2DCD025 +BB70733EA2185F9FD618788854DF25427E870D37224C6B6617E3FA0C251C3FB0 +6B358CA539D752088A0945DF665D6488E37017EBCC6502CABE9CE267BA87A6DA +E48B1F12FAA0BF3C12FA2E860259C6586FA7843F584CDA55404C88D283141685 +41812C6FEFA7A66AE6C731929D09CE093EC6712749285DC2FD2512F40EC1B114 +70B7613B43D761CB6A02F570A059331ADFA10921C3A3C4E6BE9637FC8B690F23 +138A098D8E1EC01EFF56C86D246BE7270FFAA7C512C6FBD96E3C472F939C1893 +C8A3394C34045B700CF10355913744AF99463D6E2573106B2FB9ED07B79ECEDA +F9F6D041B6061CFD8E02887E5C5B0194243F3DCB40909C3C03333A279E0D9A9B +037B84BD6F7300D0E5EAF980EE53B7FD883886528D521DDE4F74536C7F1C5BA8 +6CF279C90DDBB82DDD1EED77FDB05E8350DA91080BCEE5E3C84F003325433D10 +D03C08B43EF95318EA3748DB9BF84D57A712C0308E80F5A54A38F0B2F7AA403B +C57BD4BB6243F7A0B09AB0C885735D9861115ACA7567ADEA6FEC6F59973584BD +43B3AFD18824327CD6C21D4FE1F16F6C67D01B97FBB6F70DB5D7D6E46FDE0D09 +DBC1E45DCF82E9FB3D465175DCBBF254C59447D3C3DF1F66E0EF8CB6653EA52E +4C1D346D33499D2CF129D9704D74AC399DA2A23092216969B5B8D8B520F05DB0 +345E1BE31E211BE01A1B1FEDCD9F2699E9533385D29F0C80F990CA5A874EC60D +8CDBC045FC2E2F6E7A2E426C485DD04C4052A80568951B7C5B7A7FDF8DD163A3 +CA1D6A36A80B7CB4401674E6E1B9E8F2DEF2ACBF87879AF5131DBDF6A0458B01 +3243CAFB8284DF8C4F946C328B453A363103665491D387CB40A493B9159F46F1 +E95207F8E71D827A15A895EB17899D2C0FD610B9C3D3F8378310602034DA6BB4 +6131CE208D659FD3AEB590D2CA5918ABD2C10E16DC378CC922D605C66850C6FF +2CA7BB0A1538BE6DD5CCBE51CA7509A995F2FBA6D2813AFFFB625604D25D5BE3 +4B677D6CC459FED33F0A58E740A1EF93455D2B7CD3B6D7ABEE83D3BC3823F2AA +FA77DA4784BB1DBDA4083D991F9104BB62EFE168D1BA37A2E3EA54BFE6FC2C94 +47078B5E340D2237B312258AA715FE854291D40061B6AA9F9907146EB2FA3B1E +A1CCF2C8D2FB8230406FEBA3D184317B4F7F777410261D500F55751A0A445DCF +8B100FE5B149B2D2880C3390422BBB8E8C6B8A8B773072A0091C1BBF8415B329 +D16FE300AD05CB4B62C90ED22ECCE09B5786547455213BDCA572889B926E3DC2 +6FCA839E42D5519C1C2CDCF412755B645AF3BC38897CE7750B8E47F6E352702C +9C554B0E2ADB99F2A0CDF93DCF419AA331BA310ACD315C11912F4F8898EE964D +C1E9B8606981B25AEB7E411114D74B37952C0528E51447675CD888D80A0F15C6 +21A42FC33BB3346D51B6BA20B726EC79F582A90EC43EE690F0A83B83D2E23F3E +4F5C12E8BD48F1CFD04A189937925596C040562F4DA681B185BEABB00F7EEF7E +1E44F8ADFC6792AFC7C3C809338A6B1C046917289139040D382F60652624775E +6C6214AF5BE1D81A2A23CF2380BF6A13E88E87E2F1095B60798AB4F657A26671 +FE1C598578506C804FD43FFBFB76DF8D4C8E647F9D021C46011E70880A8AEDA8 +CBF3F181533340999B7620066A460E564C3C23FA8B29CC1BC8D337E2B1E49ED6 +9D10EAD96A52AB4D06982F4C48873C6F4872054695F253B592B83A1BC90A4BA9 +8371C4D319DD261B9A0AB13F74274E5B376A3288FF60C93421F114B51355E725 +FB265D39C00AABB2DE4300968FBE7F652C4EC71A7EBD58A20F2B4C1E2D1E3646 +902A0F815E9D67B50861D6CC2AE3AB45BDDF3782D685ED8E41C0D8F1FA37F238 +00A8A3ACAD22D898CF8E95855558179BC84D199C6C79A3EE2651167A4067A9A3 +49109AE7F53B59EEB1F57DFD4A00077DFC2BD2CB1E3169F0A348D4DDD2D9BFDB +A31951065B0230504FEC2975FB5015838759745EEA1347DE8591A58783F1EA48 +C7A7456E94BD2ECB916B85160277F98FDEC95DEFA7FC19532AF90C6AB3399C55 +86BF03B871A4C4386714AC62E44857919EEB2658D1AD72570D70F1F9926D6B3A +D12988299F620196898ADC3125C5A7D11765025B237983BA1DB66418B484B022 +EA1018CB14150269A089EE9CB3EAF08D4F7E15E29048F729B9D39A15C00B8715 +F030F927C8AC027A3B040CCD0CA1FFC5C6BCBD00457BDDB418BA3805C30AC43B +A8DAAE706D404E22DFEB24AF9874D741C9DA45B3163C259E8DBFFB6ECECE2B97 +6BD4335015222631F5D86490C0F9BD7C22ABD32D6DD412DF772548B38399EC08 +0E28700A2ADAE8F0D50EFC4CA8642E0E996D72BFCDEE1CFB252A6F4D8E03347E +F6328BF18282ECBC88DE3FF382726F910FAC2DD599E63EF7C3068C1CD785D101 +16B7671ECE1E0D30CCA1C6F2D3AB5E81E309696DBE4973F71D240C207CF73CAA +D620DBE563AC9B2000A628E8657A45A24030432AC74B5ABDD022CCF6AB855E1A +61619EB4DBB848A6C2ED5745005938EC8F516979806AF5E714704027A0CECE87 +4C44DAE80608392EE0EE0E39555ACADF1D3A873D35CA84D87ECC2AC41937CB62 +B250E3C1AB878BA32AE2E161D13FA536A305B352E3E0210636A81C6655CFED25 +A2B75AAA6FB0D2FCF696358223E78DBC2B9BCA15271F7612769ADC00BA66A2FA +8E38ACEB99E18B7B4A5C2B7977169EC141121F0664EAD87EDDA372BE22988222 +27D477A6A4715C71091CB2F01C6B3176160BEE79CC8FC854166DBB093A49DCF5 +E45AB3B20EF3223684E83C8FFB2D5DE9CB49754799E038B748E75C99EBA6D69B +36E162CC3860E33896371D0164C14138181F2E00FFC08E2A3619E1820A560C7F +63B054216AC8CBA7B034AEEA8E735705AEBB0D78F17856E1A0476DA6E543E985 +4F7AAD98E3ABB2D7B4B1629FB0E24B9FF10F06192AC8475CF8C35EE3E635BEF6 +ACA79F1847FB84C4B20E6067BC0593C7C39657E08A3CFF64915F887D5B99356D +91C0722A917B347945E1A867B062C016EBB7D924F11C74873EB4656B61A41CCE +DA1780D204D28B6F0CDCB1E059B3517A5AB44D45B43221DC53FC699BBDC4F2D2 +865C697EAA3B49D2AF5A4CBB66244196A3D8A09C8815FFDA307DA47760CFAD34 +434D00946C23BE41A6292220F0CC19CED3277801C9C1C3CBFC755A261B4ADA4A +0C9C3E7F8ADB77A5C68021775619D9CE770B4FE975CD468BC5CED173CE1356CD +A26E6AE273197511E50A014B19A5B79C7B75A57B08185B20AED966A4C9DB4426 +1294A5BF040A05A4FE60FB202C7CD2BE018DA7702CDE728193B72F03C3C0F1EE +58CEF81EF167CE9F8967B4DB7A3A3BC0868B8542DFF05D46DA08CA79F62ABDC4 +39373C66A08D536491CCB5EE828E410576057488E85A47D5D9F99F748E19AC88 +E207C21EB573B9429A7086A93CA63467B3EDFE08931BF575DB82B76AA9C05E00 +29C7D4F53CA16E6DD53BF23A0991B1C5B4902E4DDD5178E55C2BAEA308C5877A +3A21D1184FDAF68ADF993920AAD2EDB045E98C990584EFED9250A332BBC01217 +DD58CCBF7DB9C0E51473CA37655DECE639C28E04EB47E5B52DCA10E92BF83F08 +AF3EC395D0A74BCD4377EB7AFBD1F0B521F6D8F0741A07BE28D6A8C235B90B7E +B448354C9FD450F98270B3083515004B56718E81C4C6654E40B692780D83695C +3F456A401A6D24740C67A485AA8B616B94B23EB889AE93CE66F5CD6916E32C66 +809F5D3C4D52195D1335F89D1AEA6C07A1AC8E8F30AC662E11541536C50A6763 +5D8C71FA8E0EA2BB0141FCADA7AF9CA0A69AC758DF87159707038D81DD706B6D +123D53212F77FBF6AC06A7771FE86D254F9E6B29045CB60628EF491A26226D02 +D799A4B2E1E4DC25BB157BBDFD0958E1A4617EFF11145D3EB94A389F514D1247 +4B6A4CDE1DDF18A826C0BA8FBDCA2045C3BD3465C371248428A4CE147069B2DE +63E85D5F92038E8986DF08510C6FF1DCD615A7164A287A8C8C869C4B1151820C +8BE898107D19E768E66125C6A6BCA28D1A99BD7E6F58F60DA14E77ABA2001B54 +899B488C4DE7DA167A762CA3CAB0E8D157F6BED3679F019546F0322A7F6ED7E0 +D6AB34BF0F646E07A4C08EABC1DC40062E17386A406F88FF43C3AD322E8A85B3 +9EC8C24C751ECCA65BC7A2ABC5BC0E8C883ED0FE37DC111181650CC6DF943495 +5F0DEE475D1CFED3C23655E6053A884DC41E8A4D194A02051E5F7F38C625FF89 +5894F611575CF75A533095881952BAB2C81BD8C303C903C81D937E4D72A28261 +2167382EB3632D975CADB689A7DD5419F12E32DE2345CFAD7A85A9ACE0E63BB5 +3C49A690274EBCC5CDE015218223D2FAE1A1E7344932BD8CD076FE564F523B92 +6B50380301C36A67A264AC735C9B038CFD7D897ADAEC00EC65E174F47EF1EF0E +F4A1C83EAEC77CD415ADBFF5E3AF7769661AD8506C356C20595B1BBB7BFF1808 +92015E73FEBB58376DB5368C54BD47B486330BD22F9E1804A05B350671BA373D +737BD0BBF7E78ECE5C76FCE2B1DA10BDC7074164DCE3D2940F1CDBD02A996EB9 +7F4227B2446C7BDC11AA79B727696467941A4C2E3D51E3EAF366EAC7857F8180 +AB05461898B99098E955BFA09A8371FCF1EB671DE86C89776B7C90AFB9A4EE02 +39B35FFDE25BE1585476BDE88912D1E2D4C1083BA56BA4346B90EE84E6CE5BDD +A7CB599B4D716F7F25668D8C559E2347F20311D49CC7D3D4AA0117D017F065D6 +E43EB82320EEE8B29B7C7B83A6CF79D3A20B16393235FCE7F9D0D5592A80B33C +E664FD2F2B0FFDF29C89F7F5A5B0EA96456CC42DE1C2BC36E791BDEE54293D48 +BAD9DFA71606A78B5C2B8120A45F17A394F417C60CC181EB7ACA7D461A1A8095 +2372E368C1869D19E4A1A23607B6C2B0FAEF474C703492E7C1D68A3248CB8F77 +FB17BDF28A502BACFB2E4601BE018D24EC2CEAA4537271B2B9BB7807CF447BDF +5A7DF27A00D96C481ABE0B02EC0B61606505E357FBC1BF8F1A198A184BFC8B88 +1ECCF1EEAFADC8D299F72370BF10AF53EDCA219DBBE145E0F1FF317515BEC422 +623045574C79B689412F5E7E5B66FB463E11C507DCFAF31AC1AC380F35CB7DA3 +FF9A0B82402DE0696CA50B4CAF93667A489C1640867AD454CB797645710D9929 +4857D74A887D7E458109B90202A50ED46F0375F71482C7C6BC14E5CA6B001206 +62A44754C351B56B41AA8324EECF26A80E7D3FD85086741E70FD33C8BBD546C6 +3AA832DD5BDB976D17B28481B7DAF12DEF348DDFAAC53E3455F82DEB8056C13E +931F9159178FF1C744AA7882E7D49D88398EB3D023A272B8A89FB5659AF715D3 +0809BB26F3EF80A788CF54449988A73B416219862845F904E091951992A279F8 +33FF4A4CC37F9AFD5521E41F6FF1F12B1D9C7C0482BB38D1BE007DDCCCC37C9E +1F7F34B5ECEC3E6DDF6F6EDFD95605BF60F55F2B1D345430A89813FE189F391E +844C44571502F66FC3A56B222DFEF0D676041A660E6D741D8F72967DDE8C0A3E +96BC0FE3243DC07CBC1F0E99619BEA04EE85039B404122E496AA7BE34A4775AD +E4A310C1C020AFC6E74279DBDD0F6F374691D8E3B6EEC90B11AABD20E59F8595 +3397C7E9BA2052454250585469A67EF40741A9F09BA2A2A04885CED6AAAC081D +0475A63CA91BFA5D6A3770C1CF80F9D01521A51D815ABB1F31A89EA13412BA42 +7F1916165E012C0A94135C485E42A5161C7B94A02724B5E6D196D42BE3F408A1 +C11D207F5EA2CC3F2DEDBACF246719BD222861389AAC1ACFB94496CDFC5F3348 +4ED4336E52D03342822CC7E267C2C9694D9C07448ED043C56C57123B08124AB6 +8EC0700E42478E6F0FEFBB0549B2BE787570D2AED16C44AACBD6933A925055A2 +022517A427181398FF7ADAAF7910954360EB4403E16A92D7203A4587ADB06169 +EADDEBC7EA4AD684C2FCB0C1008CA92508C4B755E93401568145C5555C8B794E +F9FE03CDD2D904FF6B3C4429188DE0ACA011BC44D0ADAC60939EEDBAB25AD69D +48A5E171F88DC43B1511C6883DA9AEA734590F09FB58793D0BA23CC46DFE5FE8 +A9C82D1411002EC457793FE7DA76D29FB65F026587DB905A1EE651AF6E4F2122 +A8561A524984E0FA2FBDFEB7A8A4935DF29E126C1CF41ED66412FCDA7D07053F +EEDB110E865CED746D2530704C3D906DA828873B6AF2FC2D9E9EFD835D71BEB4 +A0C889B6156AE539B48E0D8026F5A8FD0DEB71FF8EAFC66BEA2130B9005645C7 +6FCA01DE45783C2D7B75EE9A9A6A8F5BA5F1B13EBDAF2F246D701507DADB5518 +CA8E75918A1975617EDD5F5701AC7FDD1365F9408E3BA2171D4903A78D223BB8 +0CA0E842DDBBA3C6B41D2339A7C620692F10C4FA9E8C950AAC4E86607955BD81 +A4E3B0131984BEF21770B436B286B93456646004854BA2055C3DE31CDF212205 +883E2D4DDF58152F192E50B4663F0F9779B455C665ACD6F40E7948351BD9F78F +24550832F18950ED308B402D5FC6327CFE094F1090871431A59C7238CF1AA562 +3A976BCD5808405E7BCC3DED691D332C9B279C849936CD65A6FEBCF58CC2311A +054CBD1D630459B59071379C3865C3C6A14E22B5B0381F44372DF1DBC8727B1C +59A733C294C4322E243223A986FB8D2BF832755B5CEED304E6B3699998B223E8 +E28EA70BEA1358C2CEB7AB07112D30B83197B263E56937CDD0F074EC29FAE7BC +8D6A89133CE8F837D64B703BC40EB64F2DCC73C763A0D31F3C058B5E9443EEB7 +52874573C500ACAE072071AF89FB9C4F4641AECCD14F7315150E5947731C8963 +55403D9A4A92EFAAAC4F5F6E95B4751351C4177271712F85495397CCFCCEE992 +98E7DBADAE9D3C1F273AA78F75012CA5AA357DB035655B3D98ACC2988169E894 +C573D80D60010DFE08394A6D05932944E07BAF050AEC00E45E04A424C6C351C1 +511DB1E856616281570F6DB61D75078B2D1DB18629731358D8663C615782D63D +E6D7D9464CD95D8B446E563D684D16914B0CA2978C473CB514A5A06D25522569 +9CD74C4E46C95DCA19C8AE79ECF576A677BBEE3510F93C4176A4B5F1A4F24E36 +E0C5CEB30DCED55B7B051C01AB5251CB839AC2E371944C169D9CA4AE4B91450C +5503BFFCEBFE1AFE8574E2020D3DF2BC16BEDEEEB76C7FBE3FEF7F085BBF4BCF +2513333E3A01DCA64322049010D1802D1E50B50E39768F960BA243AE4A79C12A +54D8F7CB63476916E634273F76663E4496466DB6BC16CE9E74727C9EE9FE79FD +B27EF3DF0E46EA9C028AA3FE5470E983BB251AC803FC07164644F385B6BA347F +3FC80E540BB262BB5E0CA619CBED3C8A4311B9C2B0EB70DAAAB4DBD04CA642A9 +53FA5B77D48384A8FE1F706DAE7DC478145A2F97FE5075092149C536F32A83C8 +32DEB9CBF5177AB311222565F16AAC5109F31F7C84321824ED15CF558D65BCA4 +9A73C570753D325F081EE9A3A78AA2F18258C5DFB32739242C0297C185C22200 +34C6F979B51240A7B1A3326677929904B567550051B4D548F3AAA253111F7316 +D3C84FC22E64F65882773C7AC585041DFFE3A6A15F365D825FA0C43DE16DB215 +243E53975DFAB3C1FA30D6CB8B52B9C55FEF96526624D5D8807AA901B16293F3 +AE0C4E03E6E22ABD78342AF9837A380BB99B68ADF493C1FB18CC4B968D707AB7 +B744D296FFEB8F2178B7C47D94DEDEAA916AABF76FA32BC0B86E2526F66ECF17 +6FE4A289C2571DE0F86B9B44459726C41C6C648838F928A8E6FA682A43DEA7FC +3C724137DAEBD60591A73E72F2A92373103808D3973501F08647028F83F2A9FF +400344095BCEC1EDA8A93325FDD58769ECB58511436843AFC403B5ACA14B7F22 +AD9D64C888F1A8F4E2FAD374804A72E16C0DCC0F2F56B91B3908FAF52A2C6DAD +EB9BF87C40FE29015B6E655F40FAC45FEE240C5DE731CF7B54C0F48027697146 +3A6FF6ADE84F6CC90E3799331799DA11AA92F445929BF4A95E9C5F4BD4D63CA1 +C84FE7BE3CDCA2ADF4DCEA99EBCD25D7724760516259D45DDC9D6CDF7E538128 +F3D92F8676AC2D0CFC3687AFB29E8BAE8671ADE209AECC9CED20037759EAB6AE +42E1B41111C9BB92D422CD344E7CB85A7403788C7765AAFA62CBA09A5522A6A5 +0EBE06D0ACD23E77BEF1A15A9E99A4713E67E7C08467C6B2890EEE9AA1F0558F +EC24065FBFB04573E13C52137EACC7A931791A5D5F675AB42E9B716DECB6308D +EF96E59E36E8D40B99A1E6D9F2DA7F32C1E47091733341D89DD109FCA2AFD4B6 +2D65D6366EAFE4A5BB0891B9344557DB94F065B3CD7D75874AD92F24454C2B21 +C4D2600AAD92684996A07B4DBC73BF4A3A01620373202E31B7495DCA42DA4B50 +6464003C1431AF808D30E08C4AF67E5CAE26F78188000AA0E8C97151491BF1C4 +94B1CDD72126412E0673ACD9B9322C3EBAA2AA1D039EFB53BD2C708873BF77A4 +7C89B9A48EFAB9E55ABE4FBB6FE868A9B2D86F96A5DB527514C6361DEAB44B53 +BC93CE3D3546324D72B13FDCB33F519812C1D9D66ECC126F8C3724F4D194DCD6 +3FA6E6F06B2509FCEF85C6A80F9C2ADC3D15A9562D2A65C4D1392FF915679CA4 +36E048D8C93D540DFE0265952094E7E6C8CB33BDCD517247FB81D564670F3964 +E65AD1F253EC49752D8ABF2CE12B2425551E7F03D5AFF08A7AF854E99322B8AD +4C2A300672CB3A06B668A11B752BBE824C07531EB46698EE6C6B65112CB77F0A +FEFA9A531F51D29EE7F45E8D0C73ADA57B32099FE3F0DD59BB97BCEF2CBA4E84 +D892E8B6880397808D46E78E05F42AACF717A2DDEC317BE5E5FFCAEA963032AE +515B76D34F880C049F3DF624FB85DAAFE31882A2D7CC9C29E7EF28E2AA4C46A2 +FE2B035FF8303879C436EA4A2BC67DF287FF0C3430E9566857F0CAF38CDFD955 +559249751A61BB9ABB4946A31881ADED4F938C6468318A97B9F1D60A59C996C9 +C8154F002185DDE6063E67449A6E0A9D9155EF95A7EEC84568EC8DEC4E3E9D6D +5E3E37F01FA5CD500715E0777C0B8FC6940C4BB4E6BE1CBFF8D7F461CCEF1641 +9FBBE9EF79801121137F5336350701ECC4A2ED838874BA412944545B2395C1CC +6873816AFAB5F4B71E978EBA442C309799F81E66312BD6585FDF500075CCD649 +DA023880E008D9E046660FEE0C93B5FF18722BDF423C5D820DCE694C6803B83B +101E61412650B945C63348D5053C3F97B6D38821A262600A8231E151718268DE +4DCB22329C49DF12D9135872A03CD900DAF07D8F3A396A39FC9A5FD04C8AD26D +4A41211D509B31D9032418D372A90CA0AF2E16DB8996E659CF103EC725BC4820 +9ACFB3C8D5155D87A2AFCE311BA6A18F95E37A9218BB5A45620FA20FD485FBC6 +DFBA5A3FA163833657572CC295C5BE868D584046555006623FAACB6602F612B5 +E6DA8CF67C8C7664992B8062C25E877B578194A33F29039ABD44B3DF14980E77 +18F51B2AC035CF9CC17F6C6C3D75D2FF145B14CBC4F9A551D5050B7E52C855E7 +B5D02F32D2807518958AF87E7380B6968C51A54C735000F02DD66B2E837EE0FD +BAD9D9603E517B55B8A9765B5C6301040A83E56AE013786CB760C98DB9537966 +8D9AE205EE938ACEAE707397C3BE2980B090C3B50C814A247F82B3267FD63506 +A21E253CA1FE7DA323C9AEE3F8BFAB2D9DF4A01F18DD530E3C618C889B219610 +E313775F33870ED4791EAFA21B649142534100060E28CA081A2391F1458F3ECD +CAB0BB41419C90D0C9CA95C5A4631A01DF76F52DDE04C6570F22578D556AB841 +A38FFC5A97300AAAB48177442755D76247F84BF57284B05E5D8DE15D0F69D689 +0264FCC502E5A8D8FC2DE3F7823A0363F1BDEC4B694282D0850CCCBFFD84F4AC +06CEB968973837652E674C1F953725039933EB7988BA490D4D8567EE3BAE7BD0 +21CC586C3CDD38F79B0A3A94FB81FACD7D9ED04B4007345A4C7A47860E38F965 +8CB23565121D1E7A0D0F3F3B7DA86BC3BDF2B4CF412BEBE667E6C427F3F86E63 +DCF7920FECF73F2E421E54F6F0A8E84A8BDE2D0B9C5E441F4C428CE8622360CF +6D319385106B2590E0D1A8B6C56DFDE8874A3F30D6DC25C1ECB02356D488BAA8 +C2BA0E8CFF8EF6DA75E2EEA6D27E822F511BBA288F7AB46B3C519FA75B676B55 +72E553764D23EC460CB17BAB327FACE33450E14D8329F2339600F0366869153A +D775A0F12471286F485A65054859B96A00723E1C451C6A8A05C88B32D10AB013 +94D834F675EE8DE2A26910F924583509BBAB4B1DCC5B1FC8781D80E8CF024EAE +BED6FE0FBBE088F73987477FCE10B4055C28199A91BFDCE080B5F52A1DD5EF9E +8506B78DE1DAAA88DCDE13C048AAC003735970A5A74E469EA21D2078FF721966 +FEC29EB8D667540184E3CE37797EBA575CFE7F484C71F16D84ACFCC11A769250 +585B7E825E70BC5AF10B9DA5D4E0D7661B486DE2B1357259D473A57598E257B3 +993F51D3FC6E6EEB9F4792150179796020914877D26AEB07C527CAA4468AC50B +56D8BF2F137F59E55AF7E778DB993EA55FF446CEE4E8E5D87852F211CC342557 +D2F3647F6BC423260E2AC6398D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -4857,7 +4925,6 @@ FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup /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 @@ -5246,7 +5313,6 @@ FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup /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 @@ -5482,7 +5548,6 @@ FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup /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 @@ -5718,7 +5783,6 @@ FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup /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 @@ -5974,7 +6038,6 @@ FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup /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 @@ -6045,6 +6108,7 @@ 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 @@ -6232,412 +6296,416 @@ 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 +84F4ED39D8127CBCAF9AD48E9CBD10A67A2CD0CF93D61B05DA38E98D5DD8A805 +FB9774EDA40EA0BB44E1795C5826022F3D20F30569D86C3FA13E1E4024BDE38D +4D3D1BA8B063146DD129739FAB9FBEF85236DAEBB462BD424F7E97B2310556B6 +5B13C70CD7423B6DD024E053FB603801A398761BC030C7889ED6D24A1F05C48A +D5239EDC8BE23B4883D7312096DAA334A3F3E1567B92F3766867E9910C8F685C +9DD1FCE797555BEEC6C8D2E3FD919B81A951EF6D6C42F88844BB8714EA87AD0D +0DECBF323B05DDB409AC534A5087E7C18A839CDCE0A6AAAA79B8E35C68F21375 +9A2A80C092141FDAC6C5ACC84B5F31D70C35B4708A664F06AC8C7EDF9BCB2421 +21ED066E07B1070694AD4C976CE867F5C953E2740CA3E3B0941E270676C7C892 +52C991B67220CA89F7E8417E8F718666A1744E7A5777E370EE148A7853DBB174 +21A597F2FCBC7B6D45D3D56B997568AF83FBB42CAADC7AD151EBA769D11ADB0A +CB6D59F82F70AA275D606D1BF29CB10EEFD1FA9FC35B97A1EAC17B519BCFBB64 +A6FA812023BFDA1E346A73A678A2F1EC7BF4AE861F420746AB464C05758268AE +A8CC1D1484D908C8A610F58D1B46A641F5482D0C8B70169EB6711E8DDD7E3B8C +589483F94B5E6657B8EF887C36E503EC83BA302F11473D6DB4904546EC5CB9B5 +4DBC948F26C63B41A493073EA3B9F1184D6901F0308B4A6996F91FC314FFA54C +921F102839D5D4530502E3EFD9F1B0F4B557D19DDA4EFF711262A15FCFF137BB +16BD2253F1E9AE6FFF3090AB3259FBBEBA165B0081EFC32EAA0A87D6050C5B26 +7DA8B4A6FC94ED80BBD9B3348EA511263F33567AA6C268E10DF72CCDD21B4550 +03473C8C5F3E3D281352BC940D27CBBD087C13AC70F72F557754FB53421C1CF1 +5D6CFA7F86869AB323167785FE3DAE8688EBF312203907234C3872A69F25944F +108FA20DC643FA98929F4423B4CD1CEDAC1A365185E86FDD4E3978154AF581F8 +17BFD9BAE8FE55844C4077E3502DE33F70B669768CC7ABC2C408102FDDD41939 +21595BF555AEFAFEB319937A7DFF06AD2253F97F7E5FCC866D1827806E588358 +B2B26362169574670FE1302AAB6D0B8BD86801413D72687A6EEC5498FC26F95B +97389FA20EB48D356290336BBE9F8F8602FD3538348AC68FFC6F0216B31C5962 +ACC612AB7BC54EE4E7DBFFE7B23F7B2E0D36CE482EA53DB47A05BBB5E87E9AC3 +AA819B5CA86B87533B13FBD2197C36B4D5CE7A969D7AFBA704240DF7D42CF30F +17FADF284CB303F2CC4F4DFEA2C72F09781C8F6B3E79FD1D5C65DC134AFF8F5D +7B598F7777C446BCDBCCCEE9A283A3EF356EAB27D8BC5364A375C209A71A26BD +2B5DD2F4E5D756094DE321E692AC61883C75E4B7539CFB5354096A9ACD19AF45 +8AC6ED314C48C0D7817A4BBC95120B07CF712C7B68C4C6283F3B8F657CC871CC +B905DC6A6180F458C389801E8FA25DDEF47BD1086EC66E109D4B0B4AD4BECB2A +1C826ABC6094EFFF1EF56B1210BBD37C1C4316D7EF1DE61BF69B1D8D5E173D50 +91F1A93F985DE8C180A045F486CA799206EFB861D2E98E0776CF110B7BDF5BFA +F545D6B2DB7E75444F3A05164A8C30CE8A57A362F7384B6BE1154EDA5F89EE08 +369718561620C73A0EED657D7F91ACA6E41168A0CA783BDF70391F8DCA06FE07 +98F5D12F72852B00699847EE3255344844210630D29D27DCC8A976A64D2FF312 +DCBE50763405AA5431E300B8C458057AABE08F1E7F70B54C8F4321FC9413B5DB +5F472C0DE7FC6C32CC44D755F11410529BCB9136EE7E0BD4627C2C7B96E8CB57 +DD736FAA0E254368142B1C970B3ECB40570FE2DA6B6AD7F5E81562577377461F +B2655437AB83B83509A64E91BDF8A245AF86631E781F9AD82253C2BDA83FAF81 +85E7517FEA4A481E859516C17E1ED3BA72C4357FAE66877BC3586819D845E008 +5F74493B89013285343490B9EFE8B478535291E729A83FA30482AB0BF98438AB +83FB5D81D8C2FD6D6E4E740241368A5DAF63E2A32F2F132B305738071F98015B +7D76AAB04F4036B0208B865E511CC97944B6634867745B6C54716CC4CEA64266 +CDD55806650C9611F3CCD7FC5487DFD2009F9E9B92FC9EBF8F703645F39AFA49 +B55126A4D1B9B064DC45FAFD2EEE133E8EF4ECEBE3A9F6A446D0E172F58729D3 +09D37C475F0D5D2C6CD2B9012A748A418127F95999E25FBC40FEFF6A8008744E +6B6D86F46D22337BBC50E20B1C5A6EC464290A2D6A7CB919B40DED3EE6821F41 +7ED82B3AD610AD4D7A1CC4D19C1CABF5E8046BFBAF71F04635E7179E38B76750 +6FE54C73524097B555686D4A63AB9FEEC20CF17AB794AF7B93261771FEEBF472 +3006F2733A606FCD2877C004D9FB2055CF109DAAF0C8B180C74EA4082AA108D6 +854ED8978906996332A4D478B222533C081A8E9955B56EAA0D1A972368EAE511 +BE53D657F089C2E3F356135D9B8B2000AF99B5C463048A7E88DF50022C2BE1C6 +FF935374C06C8C092942A5C533BBC534E16F9DC06F2342EE1065AC56B725DA38 +A1EBA2FABC78ED3990D392EDC999C4C63DA920D31FBC134D79EC4325E5D009AE +43D13C00BA3348B8A60A8B85395602AE26419937BBB0B8E13B58B0D5DC13E257 +746BC9182DC47C13258739493F4852CC5BB75F4E6F08FC66D22DD065948A58F7 +017AB351156FB2600CB85B3BC4CB59252C9021C98DE29D997C72FE682615FE90 +467C6AC1CD1DEA6FAA5EA476D4D6ABB7BAD66F56F8050CB0A3689E033B2A2910 +ECE37B6A089A78FED58A210DA9F3D87A9420CEB3F86995C2811CD6366F1AE470 +8C7DB8DAD5744BEC588D40D86117F0A6640E10F7AAD07AF223FB165F948685C0 +49213D3AAF79FAFE1B0B97CCCD057FAB7EAEC5405EC412A50BAA0AE40B2F4241 +5D1B30C1D9742D978F1177058CC9F9796D1339FD762A0E2692809D796986A1B1 +7BF9E8EF8C9889106D049EA8CB9C05726E81D70433162B139674F9B57BCA9232 +A565A353E7880B9EF007F6BFCA038D207283E7C7B2E87D4744277B2DBC0CAADB +2F86C4CD08265ED6C2DCBC742C4B2E86C5830BEDDDE0EEE5785B621425EE6ACD +B15DCC79C715129ED6B3FBBF244BDE61B14BF471E406976B74307CF9285D73F2 +B7569B900B5873A8B834890C3B664CC18A905FFC355CA45678991A6033EBF272 +CD0571AE7CFDEFA886BE510DEC65053049A42BA19F2122288692BAF0E2F97738 +4F07FB7CA6E6F51E3F604E0092E699E43D3646433A552CABAB110430EBD2B27F +24F93DDF1E499395D759731BC8ED2E3A1BE88956ECE4F3D6DCDC54447EF69391 +D4B31346B24C6F015B473C072AFA3F17956654C8916899253A8764A10C349B24 +22B01AB946D8FAE6F40446B4F38AB25C02D0C635DC60B031A01DFAC57E35F30F +F72BAAFA4C985940CE41275B4838191AFC5D5E89F2BF0C41DE6AFB0F3CE342B0 +AE77C45DA6BBE9D6F07A18FF63C83ED1CF9C510362793EDB27662EB1B722881D +EE49B48F9E373CBC2B6AAF3094144D65D393D0C4BB3C3E2464994B0EA88F30E4 +D8FE8CAB7A8B11B6A06EDBB9CCD0E272BEA67AAF821F398D149390ABF0D1B277 +32581AF647C5A898D8AF65F41F74829A41DF8067D94F98551C2EA8F9D40968B2 +8E43CE4DEB56A555798111497FE15AAF3D9949C7FCEE1F220DEF8097BDF35A7C +888CD93BF4581A95A9435E8693FA4E4967B9463AF438E68F7E1DF331F49735D4 +1A15BFC4A24F4561B2C395D2B07E9BDD06DEFD9DE8A195A0B300FB544747175B +05B815CFFD2E2ACF24D94275632691B91B91CA35B28FCE35F6D414375041A4F2 +0BD5F49A69BD6BD427A5A0FBC0B80AF3384FDC0DD761194135C6A1F18EE2F508 +60F8B9286EFD2D439DB909D4B44E1E45997C1EB056567E82153B4702538B7847 +ED5BCCDEE2635C3D19AACAC7163951063355505C388368F9DBA8FB45421000F1 +D7873E3D396B27F2E66AFC2176D3D801A43E764E5E76FE380127D76C05A4775F +B8A57C8A7951CD127DD4D5E66A314C6A00B0390604F7C28E3A2EB60701F1427A +9BDB4FBB89F3D77B9AA4A01C81BC4E4F959322CB7D7B6D97A9F5549658653F9A +A64B159DF99997779EA7731467657A817B86A8F7B71F6D1E66523E1BFF9541BE +A66DA601DD30F1DA91CAACF9BA3E12469A20CE3D04A6004119C9591CC9ED0F7A +C687A6D89DC0B8BFC524B9A0EBCE7A06B77B07DD05054754D99B2ACF9F49BE30 +94F31A6E08D6ABFE7EE0B02B6EF5F42F7F402A1384CE1446D8E6B28A37DC607C +4DD3D4462E4195DF11A816B4B3722FA00E2342A542196CA971E5D262634DE4B0 +F98F6A1E35535ABBC875582E97A67B003C305306A2E3033442A68B0884E6D6D2 +D7D750944D16C6688E81B78EE9CEA560E0507D4204CF5E2B072826A435AF6245 +81B3F5CB5C7C49D40D8F7C5587844DCF5AFFB60B748D227026B8422BEA2E1DC6 +44686ADFA22D85E907C1E9C13D418A4DA79A7254E289F84759324116F589317B +8C98A295BFABAF32CA01A39A94DC0415EAA25DF3DE69009F5551E97B0EC20124 +29EBA419052C142FA185AA98BC15CB217630149168D61A008B6184C87A6BDA12 +18504C14D1D5BDC88B80A4520ACB63E3D30E5BDA19459D04011B403582FCC967 +6C7FA5615F09C514DEE08C9F7C983A32C397A279175F4F7B3D3B41AC29385651 +65D394CDB4066B79BCA4CF0C6E4F6EB730C6A3A9CE03FD8D7969CFAC7D3B9A57 +5D1E26E4AEED11FEC5BC6FED2CE3FB2CEC00EC7640CD5A07B6A3068BE26E82AB +5C4603C67ED001474D8211E6489F8097FEF2CA3800F7C9F273687A4EB01ACE10 +0AD80E8F5E82C5AB1E19C98AE0D146BF3E6F163065A572169848D09E1D060B28 +65219807987195FD501181781DC8D48A6C90B368979D2BC728755A537F45F270 +24BC58484C6C41B2F3273E2B705EBBA5C21562504E89C7819CD5265711710317 +19F284E2780A4C9D77070BD9757565FB2C3C16472E33795E156DB4D11A2583EE +AC431F6520CD8BC2ADBD66F7010A5BB813A1200DEB0C4CC6833198606E994F21 +B694E0A978E9B74C4C3392009DD32755F77EC96AFC6B193878406E9E6DB0AE97 +20537F71F8C5016668BEB87247F69825C9815282DB49B0D014E79D7AD30C8896 +3371C904DF85293980545FDFBD257860768246C8C169AC98EB5F37FB93F339FC +9303A1976AD8ADD1F056B0F1F77FEF36BECC121506FFDF9B10845544394C40D7 +4C5FFE7A351DEA8729C86782915A79708D6FB969DA3AB2656C3A806B96F5672B +CBF8779388ABC8AC35A80C2F382C8160BD3355858C6D7D02948447604178CB75 +6A1CE44DF1DC170E79142F243F012B42DEE7D1612B3B3B4602A2A1653873040F +E7B5648159871AD26DAE8082FF47EDF61754095DFB375E0F949534107E4C66E6 +F2689F929E8DF0190FA28D9A536C22B62837A271E565E3DD0B06FC407B0B9D28 +32B12E4102DF1A19B82AD6A84DA0D0EDB8A267A319E584AF8E6D68DD448AF5B9 +65447ACAA6CA37167F7A20F2B101BAF5CF63B9F30499A4203C2197F88236F85A +7EAAD802EDD89F703587512E74BAA070830EA0C3BC5E211D602D278DBAA5A455 +0F8E0C9434E4F68C42FE202EF74091F54CC6E5E33E54C456B52870FA92361F67 +351F2CB1D8C97C93347D9BFC50320EEB243A1CD38DC36E45404266A824F0A4B0 +F16884B07D4F49FB376FADDFE1B7BE4C1C8373B8C7A62C06BF7D61A319D04B66 +933C875E626744163580C23292EFFE3209C9CD34E5D6DDA80F99E99005EA4D9B +4A00D502658553F86F33E3CB5A263D06DE92BD6886E1252AC749805CF84F4BBB +6E09C439837CF6CC143C9BBE479C32BB93522EC70293723203A64DACD5FD0781 +861E0259D443B88769572A6C5C64EAD4D81A6C602E67FAB56014FB466CF7177F +268768AFD9B949EA8F155638906350C1858180EB7D4D6F3D74E4FE1267C2A6AD +6A2106751EDF62BBBB69954F1FD2A94EDC8F40867A0F6FD70BDD6D56E62F765B +D57E984A76986D0F3480B71D27B2451BA385D2D06D873815E90031284F8501A4 +2E0988C453670739FB48D28182C44C225C41BA5AAACE8B1861E6CA916D5ED948 +D628DF37F76921E21B6A582459B482CE3D3D9D1F32A9804FDC96921CF734FB63 +7153965E87F03F7F601668843BE4CACF6E7557249AB3768F8936988B6B5CD8C7 +955185ABD780F9EE31CA4B868B3B9974F6B6492378D20446AD8B46702B76AFBA +135891B67A3579A00D84E3672B3F3AFD2BB3182B60A9761245A39579BF0CEE01 +F2CD0E00CCFA6FF2ED703B0B962B020780A98D34A7E130DDEA7D5222A65487B7 +CFEA16C6AA66784BCF276F34B04B0310308C2237DA15B209695A46EED9AE838A +36BC86252BDE7716000E47AF3876D7EE7520EF52E52D4B50E38E57D327F5D9A3 +8C273487E4D43CF0A013E006FDD3DEB2C898D0A5602DFC7B128E8AF2FF3839BC +3CC50100638AC513B742F429CDBB470D55A0016058A7C321B6FEA82F505AE5FC +C48512EBAF90688329D3279A558A5C7ED0D012A104AFF17285E62D222CD2D890 +68CA620BB2E96EEB254A95A914EBFF0781D998FCB259AC821BFDF2DA7DF43165 +67735FB62B79652D7163FC58BA2184AD4115A9D4A87B5DB7B86770091A9F4447 +B18B58A5FC520F5C5593066D5C02E7DCB08D379CFDD2F2005C08691C5FA7D172 +C6E1037FE022050EAACB1FBC04C895145970C7B06C26BA3D23DBB1118E59EB5F +841BF631FC8746CA5DAFB2E8B0BFF2904A42923EE34B1FA02C73B2C2BA02F300 +C079936892969DABA0221BA300E3CF85D5756B1152C31AAF025CF2BC98E95E34 +8E6DE60A0A3DD95C2EFB04CFA318BA0130052AD7717C87992ECF9D2E9D5540D4 +EC543DCBD7213D0B980C40BD3C08523D81796723BC616ABB30663FEA33CDA534 +71275B5FD9DBB95CAEB0D8550E461BC0F76A8FF1F53F0B89E1F2883A5954CEDD +558613E103DF8F06742A3C6DF1A8CD8C6A2AA1C89097F97781899633014F7CE5 +B394E5C4CF51AF70259A760270D0E90FB0C6014943BF89684486EC2E7D6FFCE9 +0626F7DA3DA67D3C4F92453A1246483FB6165510D7BC3E95239173AE85CF7224 +DCE1A51582D4F5066A476B78557993B5FF7AC99BDBBC06AE9D6538647E6E599D +F65F50B1A182B39F72BA9C3FBD3C461FC2E720B72EA5F92A5B379D61EDD01558 +3E1B23962389E133ED530DF302E67ACE9F33E47BB48B02C9514E5752470059BA +C2A8FBC11F57BBA443E9AA6CB1788C20400115DCBB3FE7879D60F3FCACA6ECAD +82593B9F185A129C1F19BC9601ECE070DE45F9E62B1082BE638C6C123125BDBC +401F55E85DEEB89C48906344498D9C50E77CE8CDB83417FE377B75CDA898A27E +93120B88DFFAB4D271D795F191135587670300D7D72F6B0DDBC8BD29D98491B1 +4E533CA9EDD1ECA586FC1132B6AB61AA3F7DC9492BFC0C51990B70CC017351BA +CB65FF8F553B98FC75CE7AD09464D04B27624747FB762975E14C6F4FAC997664 +F5999FE7CF31F5937B7FFF0A36932DAE5B47E3602C1D4E43A6A376C0C2CF8D0C +A083D80171209BDC0E8E28DA33E5ED0ED93E948E55BCF761ACA5E3A97CD42879 +48FF419888C975215D8D61DC57084F9FF210127C168865E22F6EE7E645C3A80E +6C5E58D146E2834D49A33C2222D019323997637E1CB53510B6071C3E76D8C456 +130CD6039DF3CBDDD65B2C4240DCD6123B88C5EDDAF3A18C7E2AAC385FE45821 +36BD12057D84A28BC6A985EB7C00A21CBD71B3EDFB34FCCD25FBE07BEFA0D819 +69BB7B6E75FEA9B401D185A5334A392F80C7EE168D22C3DDF2EFE04B252121E5 +2317915AD3C17B63BF15186140E06782EB0FE2CD781AAF200C141FD0DDF59C7F +95FA1974C74CBB540FC773BE9D480558F04D8A6E77A5C4C03FFA26449FB52CC4 +F1EDB91E380CE5B7ADC606E91DB4B23AF1E91143233A9CE96252216A5D2C4668 +BC27EE74A6714918653A3216D9AF4CE72A1CF6D7014E494A1B0381B2D563101E +71D4CC02715AB87B9A12224EAC1385E815E585A216989099DBC3A23D57C2F214 +CBBBFA6A621FF9B38307D5177EE81038AF0CBDCB9BFAB16E9DE948E03B227B5F +8D7423B3FEF8401705FEF6C06DFEB53BC6A2171CB19573AE2A7DA6B0E1898CBA +7BF47DE71CA764FB1CE182D172E652D2EA078A4D9F3C38236B03E4DEFB70112B +2D9F9087A1B8852044455FBB22098045EE18CB43DC59D76953502F5C7F3EC9A6 +0CD82E4044B2D1C5F86940D642021BD3C80948FE9BE1B152BE0310237F195923 +74A7D9D787F43A9FB313EDD14EC948B185CDFF74E3AA4C818CB448056AF70F7E +038D45F563F7C93F7CD8CA8A11A350EAD4A8920AB4F8622DE5C63BE56EB5F259 +2C0BE381813D0E6CAFC19A0C4AE1705804E1A7C6F6BC0296320B3F6B19C0A17E +C7A9F71E5B36453675BCDCA540990422168F25A537F8037B685BD556D3DE9709 +A58FE953DA52E53995EED70997F311393BF306E5E71BC6D0EB9C0D2B6EA61AA9 +465BBB3AAAE2096BB90790D0FC8B919E8DC0BEAED5AE1C577A431BC636FCBC98 +2ACC75B27C5B0F5F4F7652DB2AE91C7EBECF5580C687C513220F6EC2616D2654 +9260DBD025A3BCFB7168B184C3EB0DF518E442CA5DBCCF154E205FB1C28218E1 +5978102C4BAA2F213C9ACAE75DA361B5654FFF070F85B729B707DB21E1542932 +EDC13798EAFC927388A71BF457D5C5AF37D8139A1D6573F26B2A45BCFC926069 +DAC568906DFFBD4F8CDFBB9FD48D5EEA56B6DA0D475B5A5A0D0D1C63BDC7713D +5267E398B7240AF38F204F649225BC595F6F01AACAD87D087550157C1AC5DB0E +7B4B77475FB051EA26162169B16B7DCF838A3386C7D1DCB8D6DACD12BCF380FC +35A8979DB4D342D5A754D94B49ADE540869A4EF7B9DA6DD98B38E99439E27C0E +CDF0D0FF7D1212C8072750EF4B915EA3258C4BE93934CCE6D5259C6CE0819126 +47F0EE4CB12F14D16403BEE96FDBCE958DC4A0E1B70A6AF85449A1772E340248 +E4653840B230B0BF8484029F159BA598A65133368C4961D601914E91D7FBFE49 +8B6F4D07FFA68939C63CC2861ED29A3F3C9BF3999074A715A93C68C30AD52BAB +60381DC7B40B870109E4800ECC93D5E6D4D3B412103B7425563A167B4E41A7D0 +8E66017DC8C6E44332995CD0E003B9FD48139C658E444B0961C31B023BD5133D +C5BF74E94E136A3BE016CBC60F9FC51AF41BB7A8C71F6649CBADA3DB2260B5BF +2BD404D215FDADCC6A677B58B16627AB99F55AEFAA013D6A3D034F3DB9C08174 +F3334286460CF3AA37E11BE02BE4FA2B0B4FD6648D2095334784CDA45E92E449 +3BBF7953D2F740DE3210E051C37A6AD41899836D74F62BDDDCCAC160C1003BA2 +79170D7CA435CEAAF1FA559AA87A3EF99538ED219F994FF4EB9675528E63ABC0 +3A8EBA027CEA773D4893BE72EF5C0FC3B7D4BB2AE2CE26A2ABA8D3C77AE4F9EA +8E2541565028DCD3682C8CF5140D025536F2EB52D4BD9C00C2CF99751E7EB429 +D8A416C6025774FE2D4847BCCD4B7618771978B4B49EBACC6E1F9CC3FBEBCECD +7900B5F3E889845282B3E0EEC2D4BD41AE775F614724D9CC2C83C110FAB4D653 +D9E6FD9530A952450144250F29D19E94517D066C4C66980F0136860FAC91DFD3 +A73EB9087083E9909B4862B07ADDB4DBED95C2794CD2998F9B6D0BF6D52BC1A9 +772D6D5FD498A1DF12F5EC47F60CBE437037089B5CCAE4BA830AF3DD60FF128B +5C618E23C6D065B96DDBF6CDE360CBD7BC114C06EB9DDFB6604CF98D60176A09 +B5C9D9C0132B14DEE93F8E62E3FC64FF07E18438D417C9FF0FEFE11B41CA96ED +2B4B633EC23A52EF39847CD1AEFC37923DAE488791CA961556A5CD8FFF7AA02C +A74186E0827A74640069B5D02CD5CE6BC83089915EDEA034189AA296DF1D5661 +B424FAC4AB5EB5D48D0ED8D81CEE2C4A548FCBF69E8BCF19AE9E4C1FFE6B466D +570AA4922688E5A7171B8158AB3B793B35ECA4C66FD276FAED922144F44B8107 +7AA10EC3989CD46487D1F20AB9478FAB49E3C969C27ADD6B1E1FDAEBCB37CBA3 +0E0068C6C94F08F228F1DBEECB3A9305202983DEDBDFA7D821799E2DBCBF138F +8646BD18DFB505E8C6D72A6F4E05C3AD34382616C557814D1846C82E64B2514D +9D2F2F9D800471BA87FF062E3F85DE5718F64A840A4F47673D3E69070D87BB44 +6F987936ECFA3550F86094268B259EE96B2CE8D824FD7F32328C154237105D8B +75678C4C1637E32E2E882C09F035567935562EF87E0CDDF225E5D116FAB09DB1 +E661BCC21A76AEA642F13E5149032CAAABB90DF368022FE4A9831149643CEDFC +3296FEBBAAD249A649BB13578459C7850367D9B3502F8751B77758C1200C9222 +731945D041C117EF61F811982E2140A597F12EB8A6DC93953C48224B8CCFDCCC +440DB9EF0376177FFB266ADF9530365FDE2964DF2B9609668161816622894ABC +F54431F1F04DCB1F60E125E8FD4E8A92B5B12CC282C05571A1F03188C387A5DC +E895AB569E5DDA99C48BDAB90EC15CA3D8F177AAC3A51296A32C4175B6BFB279 +CDCFA114A67337B3C6801ECB992CF91FC96034F0AAFD60CAC43E86B34EA9F73C +F82C83A1DD81EF6688C2E36446A77583A20DF928149C4B66119956EFB21F3A25 +6ABE9BE47307A3E34A65DD50CEAF224079550F354578ED24451EFD1293C1081B +D3FA8B291CA0561D2449B534B56112D5AB04D8FC85B6BB33E10C9D0C3F7E214F +B19DA8E6EFD1FB3DEAD2756C42E4720C3317DBAC8DFFE9165DDB9B1F406B1BF8 +F22968A0D907655328C9ACB2F2D1916F5AC92A1C250EB2E0C31725AF6B3EACC5 +03F9D8EDC24A78F2AEE8664D6AD2292DDB07535623DB79B22ADFCA4E1B740062 +4A6D18D881B77AAA510454E49883C869876BD68662E8D7F5A04E479753FDB1B2 +655F8DF21C6D8EF1A71E7DC0E0C1AAF7A12A2AC800339A74E15ADE48E083DBBD +8FC2E0A43BC42FC47C709E8CBB0739BCEA6B653237C3B86C528E77E32163579F +3F8D6C7FAA7F32916C4762237CFD08CA35ADD9CAB6DD101CE342EC47247DF6EC +A5BC7DDF0DCDD51CB834D90CE7356F4D65BEEF8A49E5C042A9001887DA2F53B6 +18A7511B03050558301D81C17462C0C15B1A40CD8F2DE4BD29338AE4A995CECB +48666D3BDB3BC6C57237AA181C23357472EEC77E59889518642E51317B040D5E +B71BB638C92BA3FC11E2C5C041C8E23DE6604DC8F0FF3932A48759DBAE0032B2 +1E8801FD4FD596976599C501E3D92281282A83FC9B4384EE6F9A15ED484DF6D7 +155533F40B40AA8092359F27B36D949CF465DB78EC35EFDD9E38DAF9173429E1 +269F4A41EB64A5C3696C29574CDE851F301DC4AA7615BCB92728741291EAAD33 +ACDEA046404087697361EC681F778BD338CE55935FBE931618BFC6004BBB313E +7415EDC1DF5DED2D49A27D61D12D1BBA04333F37CC842F310952ADE546F087F4 +F204A63AFB47C980331D395A60E30D6D903423062977A37B0985C9C1B5009520 +2C4DDD235726340CCA561949B85971239050A21C9EA0419C3A5E6A2E25806B9B +921FF36793077F8AA94CE291EFA15FA1DD6482B6B9B3B9CDC08FF34C8A758A05 +83A02526F9EFEDC27947A5E5C73843ACB1D47CE72B828D933F8F8357B557943C +636C42E32508CBF894659372E925C9268B76CE85E9D46BC9D35D27DF020C4FC5 +39862BD7E54E264D5421647D80BB75CAF5AE3A45E62271B93CB6F36AC62B1D3A +95399EBEC46D48139A8F6F406D0F8775C53F6A140137C494E475D817107580FC +A4089392CE25D5B6A4C0A6824CF65E44CCDC5C8BDDB463818E8011AA45D52BC9 +D0CE5DCBE80DBC9A5618CEB776E4224ABB2666DDC3CC196AEDC0781F8461FCF1 +D7F6B06096CBE4D8A350431177FB2B47D147AD557E8AC5F3E6AE23731F26ED9A +17E5A53D16A6E88A16FFFD1658D2B377920D18991946F87584E840BABDACB851 +D7D85B8D438F1368D5C68916415FE59247C3252485EE000DCB3502D8C1E0B1B6 +F584019ACA31D279DCEEAF9A2AAB5DBC6B4D224F52F4E4F4EA1492DCCFE705DC +CAE7CF0EFF03E6DCA5FE36B76D98F3D8DB56E62173D0F710D5D4607AA93DEC1C +22BC0764EAADF52D98620B7F8C8D73C85FD3E458294AFDDD7D1D0740F4C0D272 +9520DBFC59E21C0FF41951EB5A3ED2D49BB493AFA66841FEC2ED44A7D69CB0F2 +6A6C845202D99F2C002569A1D7EE794E48BB125008565D446B105EA8C03E798B +D76FB87CEC5F68B91E0B42D99A082C0B0E5846405F3E510C75A8C00D695CB096 +ED8478F4F87EC3BB52AA8D2D98A6A99F395A9D0EEEE045DF42F60350E8913592 +74F45C7F6D64BB608B3A187B4A9B700F00715CCAD7AD2C52892BA657A3EE35A8 +924C8D65DEE11F2E85F724582439DB550E353C9AC4739DC2946D5B9FD8DECF3B +0298C6600870AECAA7285001B8B5EB24B5C0BA2611E043A168A895CCBA924F5A +C05DB83BFB5A862DEACCE962E4206DDA6A171A9EBF270AF538AD7E2ED3CA24D6 +148AD0985F16EC1A1B41D226B1FF3D995BEB53767ED704C3CBFACEF2354D8523 +4068DC22CECDDB09FD818676D9CF1828FF76AF43967CE2E7623EA8328397BE77 +C538302A2BE4301571826978DC416F75C9F32EB4AA6DC539B833460701192E5A +37BA93FAC640125231C637995A140DD004D3456168547953F67F0CD214B2DF55 +07E78C0410A7F677B4EC97D62BA66724C32CF290D02E83A63858C861AD00824D +FCC6AC1A44D5084C372ED46A82587FFFD3B122FF92E97E62CC81335F9E8BE580 +420EA8E4584C08056BC52DF2EAEAA3DDE1AB0582F4BD8A6D8ACF40032F589A05 +9A0660DB944A097F5B700A1DFE0978EC0C19C85921DA9880DC56C2ED8BFCB882 +0FFE804CE9F518DF1F6E4CA67F46A450A2EBE8C05C48C39EB50F87DC16D60A6F +899C17DBBB9AEDBE5C04478C2CD4C07A8D6CA094D340E1BFAEBBAAB8EB193FB4 +5530C2CA6C1B4915B8C6F35252C1C1B783EE547C9FAC2B5509995154FE7B9CAB +6A095287357FBADF597D7C1AF9A92B667489A3804C4DB63C480FA993C84F6E4A +A348C48D19182D7962FB9B0C907737F2F7AC41BA1C27D0499157BA114837222B +934910E2117D3E56A43CBBA1592C6365BBFE662FEA2C5F242649EFED3CC711C0 +7D9F882226C6A0FC3854A51A7ECDDA030FAFED1601BA4EEDCEC2A29C0E364333 +D9BFBDC5657C270DF4B4750F42C9AC17BE5267FCC6274EDF6ED0F506707F9136 +167DD356301A66FCAB21126F0E6EA028FD5DA17B1B71A3BA3E78F64ECDDADFC4 +37B68DED62676749851FE9DCB88100126B7F24984817093BD8209965E20771AC +2C0C8FEE82A5D53BD85A1B4EB56C1890B1BD482AF7E586CB3CFC2A0C95B0ACEF +5E13E17052D4E576244E124B1C6F2C620BFB3852DF17EE59D7F6255BB2767B00 +0CC5B17297B3BFCF9729A1A96CB1DED678DAF3D2DB6A899ED16298D5BF3B123E +C1E5C185B50F27F5CAC509FF8E9F314BCE9E8ED45BC9A2BE4F606230841A7927 +773FFC17806CD8FA016254540FF15BD640B8AB67BB5D3AC4AD6B2E6727676B09 +50056FDB57E02263D01EA34A35F8FB0B45284B3A8F57D7C5E5FC349DA0C0EF80 +3B9A3916C5A212BECB5CDF090E21A053C1384569E0102042519262F61D9B6A79 +F43F585F1B59679301B9014DECFD0620A44DEE9282095B876A9CB85F809B13B9 +E5D8308DA9D815EFE446AF23BD05DD4A8F0AB3319AED7358DECFA6BE9B86B52D +4DA2E9B5D9B7142E82A4B2E73A221E6856791B10384B85CAAD75508AD199B3EE +F6AE89EDAB93A770F82942EC1CF9EB19311DB57E2C7554D95AC307F59311EA39 +17A7DA41B9C497ACED2F09C74168AF371C0A98B426E42174FFADC8518F41FFAC +54378844951F5B3A61556F7BED402437F1A388C8F767C1AC766A74A48B8F6677 +46E17E995C332EE33AA0A7E4A4F64ACE7E0D48FF7FE16F31984DC570F78CEEC1 +E1589B060D0E90E252CA904870020399057D8BDC37515A5F1A004C9BBE461F66 +89D85434A447903AA464C063AFF870614589C11A6D0DC414B06BF2952FCB3A0A +DD2AF3C521E93917447D9F2F32705F54DA8B1EAC58B60C4EC674536C146A7B49 +827FF69ACE907FB2D0045C9B4DED752764A16A6AD3D77084E7D47A53EE4F480F +5C044AE87835AEA2320DB09E4369155414CF6EA7EB5D7B5AC7F750F039443BFC +8BE881A5D52B87E6B78388C0B5B3999F79F740354C5BD03D23A8A1B9683E0D25 +1C28C7C8CCB52B1D52D1B150754C331C7FDC159C7CE99F9BB65425254684B1C2 +936E6B694E2676803C768E249AAEC756ACA64277C98FAFA55D90E89803D0C2BE +A734DFE45BC1B637B7DC481FCF134E63CF14D8D231AEBD08B0956F43A7D9747A +64B0A1F52FF199D0A80B11CD6C598AF94AADE9D22A59567A0560899ECA0E6AAB +73C006686AF063D32ECB50C0E790F287CEF50292799B6017CDCD9FDA5097EE29 +D3ACFAC2D3F2448DBB2DF00496381A15DA2963B774A9B965DF1F1DA5439DBC20 +3865794FDE3C938625C0B37BD0E4E9CA8E8E92E6F3D4813BA4F9C8EFDB4179F2 +2E47E5C2E029B71112CE6B0EC0AF1DF745003120BE1BE08532844A819110F2E2 +46A71CDFD7C01CEE4C23057575EADAB8841E0E2EA8D18E44F2380119FB629445 +10F6322F34E11159D1D004723BA320F188F1102C31F992C7662BC2D86C9723A2 +1E20A734FFD8D0EE5BDA9FAE7ACD5F7E4463F8E9F3824F7206BB1C2E1AC0654E +61E7E03BE000F6BF393E84EFFC6C04FB56873A646405A44FFBE750D2DFB704FE +3E6CAA11B535CA9D643AAAF96C5A9486EF5FB5E496DAC28199159353A01EF27B +2C81484B627A16A9FA473679768BDB8867DE84B5868F9F08EEFE61FF22EAE460 +F80AD742C3BC581F463BF564484DAF52FDD6A36AB9CB63A198FAC614272C49CF +89AA153986D2EEFE4AB482A0DEB39DC5391BBFA6470A8E0AB156AB98E2B6F990 +54D6C73C036171991F9B216269EF5F1F54CD7777978B9B6869EBE8C5CEF83B83 +06604699B377CC80DD569F130BE202F6AFC9EFD5795BC44CA2A3BCD3C2636C0F +FE8BCDBEB019E3396329997B1A80F9681A230B35A5C440B5149141C28DCA8A9A +94C19EBCFF8362FB5C2BCA7D4949EE87C57225E0F65FB39884EA7D0E47D41ED7 +BB42AEA45E5239E73A7041F80E200830BAACE26A0AFC2D06D996C52399380F7E +0BA391A98CEB560166DF661A505847EC9098555DA591FD3B2B7423B268790497 +78ABCC4F11EFFEFD38DCB6BFAB7DC5AAC48C237B03CE9E50B62AAFD915FF80CD +7D6867C23991644C598DA9B02520D326EA1081C6752256DA88EB71320C296A93 +A9F86CF1BAC22B20AAF03C835E9C920545F8387CBD4CE5C5BC9668AD66E234FC +EE6C446A5779916919D477C867A0D5E9E9F06701B6C98B4E7F00A4655FAE8E74 +E8447BC98E9824927D841AF8BC80D70BC6B5B59F657D6E93917FF18D5A314D69 +A7A7E8D458A728DC3DBE2EFF94A1DE11ADC7B9B8EEFEB07BB46D6ED8E1F9472B +EF4BBDBBD0ACE61389B02864D4A188F0C72056D86CFFAA21099A6E01AC6200D6 +E68860A6A358145C8CADD00E2A9846464663AAB709D90A43CAC347780B26E89E +D554C05EFFD39FC0E4283654065E21F9D2F0A22D29F49DEE2567DDC967BF400A +59B94F63C93149E641BF85C5640789BCD53BAD6E945047CE139188229DB04A38 +1CDCEACB38A99A95C2E024B9FD65F8C4435B2C884AB0F8412AE77918819F4C3D +52551CB3B2B1F57992A18B26BDE8159130CCA792382D60F2ABBE375CF9FAE52D +FB79D84624370F96209BB34378FD2FE08E7417BA17DE9E5D10516A10A53691EC +E074DDA3619C4E1231BE99FBFB829EA1645E2D96A996051CF8F580015C9C448A +E3715AA997173E3CB6A6E0B40821B1B909E5B0E4BA8C88D875C47548CDBF7D3D +9E3AE43B618F7617FD5D11D4226D0BA08A0E77C03BFFEA700333DC02215E57D1 +AD4D87CF31584F9E8128773B052A8031125DE3C342EA28508092112E7C4DC936 +EE2C3DBD213ADFBB93577DBC4B4C640AC8F7E3F5858CB73BB35942827D5DE8BA +14B1CEBA65C69E174693C9C0EDB23E5A03C45FE39DF99D9A339DB94082B7439B +660E84AE79A8BD4E3B500C47E34EAE6D5EF0A51714EEFB7F2CC4D51F19EE7612 +D6AC19FFE4C1EBDD2F1F6A19D839FCF77D6D5B1EA670A97A8E6C32165E7295B9 +C97F8E11EA41DEE8633EC9F6264E0629607E5DDBBC7EFBA49A76BF8F6EC91CF0 +BF37884358D84A21658589E353722AA5A7D694EA544F3070EC8B214209422FE8 +E50940790941C491F6844DF7088C1E7871038235BBFC91305B55E30844FCDD1E +F8EBE9D5BC5A52CE04B8070AA5242DC6731026687997A84F357C08658EF69ED2 +89618E034E1E799BBF4CB8F5352279DFBF730CD7511E5F82BD32190A61D79716 +49DC960844C835929106B6125A7039B96407B31D2FAA07E6F4A12459B1A1BFC5 +A5E8735A4A0B7E66CBBC19BB0F914CB26B8DCF8417706E4DA36AB4E57E6BC1BB +E7F423C759A9F7196AD891A898D0C24EC1494179A575B8D77A85D9CDAD6F5A99 +6EB2F9A4359E24CF29558D47571A5E7A23B031BC7EBD00BF4EE0830F77609CF6 +3EAE4F283AF38FDF6A625F5BC968907A14781FE795EDBF6328EC24F94752266A +DFE9B18D17A82BE9BCF55FE1A63B6C2D8F24F27EBAEDFABBA58F1293105D38E7 +4A9B9CCEC8C201771DEC7F1DDC23D0E8F6DD366AF4D35EB6463CB9C369EDA95C +C54BDF6135D897B65653470638865DD717C77982D46B332E5AFC3E5B4AE9704F +195857E43926CA296B49A93CFE6F24028BC610A8C7063F3C79423E65CDD2F697 +4B1075D25EDA4E56C8EED787A57B8A8E210B67BA464955FBE58DE885808AAB1A +7517E1D682031E5FD04AEDF8CCD2DA488AD7896CE0BB63DD941430720AE88404 +A171D6A4425DFEECC1556C0C9E8DA6B7AE9619F61B401F13A57A158A62ED22E8 +3F319B0AE93FB4F52466F86BBB20F0DF2534AFBD1292ED7FA189DF0B30B5A54B +8EE0D9F65CEED0E689539255A234E78F29A3ED496FA280440AA832AB6D814B12 +BCF3EFAE32E3401564D0A238948868D6996A1B281114DEA1580F419E239CB9A9 +B1B1FFCE1850FCABAFCB605CF218A9DA2F05F417748711CC4BAE1A95608E1D63 +B5A464D3537234CCDA314EA65A650F0DA569DB6745005D392A5756352ABEF049 +52941F1B7A642E31ED01494A40B8ABFDE1E2BC025438FA95C5C1296C0A3231A2 +65FF888A46958EABA844E001DAA376AED4B7B14F5626882D95B95B4BDFCCFBBE +0F174937DFEEF6319F1466EF8B63031B7A54A7D363D51068726731AC9B53EF81 +01325EFE17924654D68062BE04BA26F8318EECE37BB9E258112956A73FDDE15E +78C46E9859D69FAA0B7BDA9C124F4541221CDD6F980B45EED340C027756F9A0F +BD15B2B730E14C6FD94C4E93292BF79266FF9C0E8AEEE2B32279C16898ACF9CA +8DEAE9A80561DF6A988F1F888AA03E94D1261CFCF386E3372F612FC84CD104D4 +DBD88E9D7F920411996AE86AD63AA5A5F764EE734DA099A0C126FB9056AE971C +905067D685BE29AE40CC39B06193D36CD046995D7FE0B8B156A195BFB666CB91 +D840D73D58D11CC78704BE7A22BCCBB976BE490CEEA0AB0CC718CE0D2BE09CC4 +6B1C4CBBF734754E50DD3CB48ED8C6D72C05B67CCF82B1FE6062189219E49E24 +D29A21BB286C8A0C7CE7EAFE66EEFA932D9479AEC7188908CA4A634113B5A9AD +DE7F1668E4B4403AF97702BF7E44A2476C125ADF3A767E2C7DA173724D138EC3 +991DA4DCA989A0904470862721713A6E916E9CE6F4EF99EC2A952F81C7B3FCFE +6303E88F5A8BC8DC9531E0EB03BB4D6C76CE52E21C9EA78EF952E966E0641098 +3829311BFF5737A625308EAA464C657EC8E4ADF9C08394BDFCB3E73A93DCFB0A +4BB6063A45FE5FA5502A95C2AECBCD52240A2944B4E02B4D66784A843BB17F09 +709DFAB6DB9155D129C9810125E03F6EB91B26CEC3683FD559B3134AB266C099 +75B77472C25342A2E6B1F00312F3AF8949FBB2249BBB80C86EF5D6E47F7DC55D +33F693AAC8E630A3A171724895A7BBA861F672B5487848C017054816B6D0D6BA +D9F31AD23110D124005EEB48CFCCFC41932399FF666300EADCAC159E137269C0 +05BF08D7C7407A3397A1A27A80C88D75B4490EE552E8CF0AC12B07F1345729FD +CA11B5DA5C8760FCBABAF342CD7B47A6B47A76FF745946698962767AD8082E9D +2339757DD6CF2B75A4611127A9661603162ED04BC5532B11E18FCD5927051365 +5CF6E70589764CAF6511C3709BBDD45B52B95E0207C77D9A48C655DEC2362D97 +2733C636041CBB4C168386ACE810CE194C618EDF971041325AB1E205976001E1 +4B3D09A8124E903E63EC50795717075116D496F94167F749BA69A72A71F1CE47 +A62CEF962D8449B3686897898E090D609AAADACDA275B5368DCE859D2694C9A0 +0AE5280C19ABA7577F8CD1969E4922A816B246ADA9B971EC77346C09E093749D +0AB067228EC4F958DB6E447355FC0F61894EEEBD7894601C4902BA0E6A8BA561 +1DB2852F9A21AF990C121C7604EBF9C64B0F88D9878F612D3D2085A795236112 +617BC42ED71C 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -6669,7 +6737,6 @@ FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup /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 @@ -7452,52 +7519,53 @@ cleartomark {restore}if %%EndFont TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi) -@start /Fa 131[62 124[{}1 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 1[39 39 39 2[39 19[39 27[39 39 2[39 45[{}20 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 130[45 -1[45 123[{ T1Encoding ReEncodeFont }2 91.3242 /SFRM1095 -rf /Fj 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 -/Fk 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 7[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 31[68 72 11[{}62 -109.091 /CMBX12 rf /Fl 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 /Fm 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 /Fn 197[25 58[{}1 90.9091 /CMMI10 -rf /Fo 197[33 58[{}1 119.552 /CMMI12 rf /Fp 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 /Fq 200[0 -21[91 17[45 1[91 12[71{}5 90.9091 /CMSY10 rf /Fr 134[48 +@start /Fa 130[55 1[55 123[{ T1Encoding ReEncodeFont }2 +116.231 /SFRM1440 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 1[39 39 39 2[39 +19[39 27[39 39 2[39 45[{}20 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 130[45 1[45 123[{ + T1Encoding ReEncodeFont }2 91.3242 /SFRM1095 rf /Fj +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 /Fk 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 7[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 31[68 72 11[{}62 109.091 +/CMBX12 rf /Fl 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 /Fm 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 /Fn 197[25 58[{}1 90.9091 /CMMI10 rf /Fo +197[33 58[{}1 119.552 /CMMI12 rf /Fp 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 /Fq 200[0 21[91 +17[45 1[91 12[71{}5 90.9091 /CMSY10 rf /Fr 133[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 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 /Fs -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 +3[30 8[45 21[76 1[51 53 11[{}57 90.9091 /CMSL10 rf /Fs +132[67 1[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 1[37 1[67 5[67 112 1[41 20[75 78 11[{}73 119.552 /CMBX12 rf /Ft 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 @@ -7527,21 +7595,21 @@ ifelse %%Page: 1 1 TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5 b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31 -b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(4.3,)g(for)f -Ft(Bash)g Fu(V)-8 b(ersion)31 b(4.3.)3180 1697 y(F)-8 -b(ebruary)30 b(2014)150 4935 y Fs(Chet)45 b(Ramey)-11 -b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 -5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F) --11 b(oundation)p 150 5141 3600 17 v eop end +b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(4.4,)g(for)f +Ft(Bash)g Fu(V)-8 b(ersion)31 b(4.4.)3118 1697 y(Septem)m(b)s(er)f +(2016)150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 +b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 +y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 +b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f (description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f -(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(4.3,)c(2)e(F)-8 -b(ebruary)31 b(2014\).)150 4523 y(This)26 b(is)g(Edition)h(4.3,)i(last) -e(up)s(dated)e(2)i(F)-8 b(ebruary)26 b(2014,)k(of)d Fr(The)f(GNU)h -(Bash)f(Reference)i(Man)m(ual)p Fu(,)g(for)150 4633 y -Ft(Bash)p Fu(,)h(V)-8 b(ersion)31 b(4.3.)150 4767 y(Cop)m(yrigh)m(t)602 -4764 y(c)577 4767 y Fq(\015)f Fu(1988{2014)35 b(F)-8 +(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(4.4,)c(7)e(Septem)m(b)s +(er)g(2016\).)150 4523 y(This)h(is)h(Edition)g(4.4,)i(last)f(up)s +(dated)d(7)i(Septem)m(b)s(er)g(2016,)i(of)e Fr(The)f(GNU)i(Bash)f +(Reference)h(Man)m(ual)p Fu(,)150 4633 y(for)d Ft(Bash)p +Fu(,)g(V)-8 b(ersion)31 b(4.4.)150 4767 y(Cop)m(yrigh)m(t)602 +4764 y(c)577 4767 y Fq(\015)f Fu(1988{2016)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f @@ -7557,554 +7625,554 @@ b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 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 Fu(i)150 299 y Fp(T)-13 -b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fs(1)135 b(In)l(tro)t -(duction)13 b Fo(:)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 Fs(1)275 778 y Fu(1.1)92 -b(What)31 b(is)f(Bash?)22 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)52 b Fu(1)275 888 y(1.2)92 b(What)31 -b(is)f(a)h(shell?)13 b Fn(:)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 Fu(1)150 1130 y Fs(2)135 b(De\014nitions)13 -b Fo(:)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 Fs(3)150 1400 y(3)135 b(Basic)45 -b(Shell)g(F)-11 b(eatures)27 b Fo(:)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 Fs(5)275 1537 y Fu(3.1)92 b(Shell)30 b(Syn)m(tax)25 -b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)55 -b Fu(5)399 1646 y(3.1.1)93 b(Shell)30 b(Op)s(eration)c -Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)56 b Fu(5)399 1756 -y(3.1.2)93 b(Quoting)15 b Fn(:)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 Fu(6)524 1866 y(3.1.2.1)93 b(Escap)s(e)30 -b(Character)11 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(6)524 1975 y(3.1.2.2)93 -b(Single)31 b(Quotes)d Fn(:)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 Fu(6)524 -2085 y(3.1.2.3)93 b(Double)31 b(Quotes)26 b Fn(:)16 b(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)56 -b Fu(6)524 2194 y(3.1.2.4)93 b(ANSI-C)30 b(Quoting)d -Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)57 b Fu(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 Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h -(:)38 b Fu(7)399 2413 y(3.1.3)93 b(Commen)m(ts)26 b Fn(:)15 -b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)56 b -Fu(7)275 2523 y(3.2)92 b(Shell)30 b(Commands)21 b Fn(:)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 Fu(8)399 -2633 y(3.2.1)93 b(Simple)30 b(Commands)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)57 -b Fu(8)399 2742 y(3.2.2)93 b(Pip)s(elines)18 b Fn(:)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 Fu(8)399 -2852 y(3.2.3)93 b(Lists)30 b(of)h(Commands)15 b Fn(:)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 Fu(9)399 2961 y(3.2.4)93 b(Comp)s(ound)28 b(Commands)22 -b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)54 b Fu(9)524 3071 y(3.2.4.1)93 b(Lo)s(oping)30 -b(Constructs)8 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)h(:)f(:)g(:)38 b Fu(10)524 3181 y(3.2.4.2)93 b(Conditional)31 -b(Constructs)18 b Fn(:)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 Fu(10)524 3290 y(3.2.4.3)93 b(Grouping)30 b(Commands)15 -b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)45 -b Fu(14)399 3400 y(3.2.5)93 b(Copro)s(cesses)18 b Fn(:)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 Fu(15)399 3509 y(3.2.6)93 -b(GNU)31 b(P)m(arallel)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)55 -b Fu(15)275 3619 y(3.3)92 b(Shell)30 b(F)-8 b(unctions)29 -b Fn(:)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 Fu(17)275 3729 y(3.4)92 b(Shell)30 b(P)m(arameters)17 -b Fn(:)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 Fu(18)399 -3838 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)20 -b Fn(:)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 Fu(19)399 3948 y(3.4.2)93 b(Sp)s(ecial)30 -b(P)m(arameters)16 b Fn(:)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 Fu(20)275 4057 -y(3.5)92 b(Shell)30 b(Expansions)17 b Fn(:)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 Fu(21)399 4167 y(3.5.1)93 b(Brace)31 -b(Expansion)21 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50 b Fu(21)399 -4276 y(3.5.2)93 b(Tilde)30 b(Expansion)10 b Fn(:)15 b(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)40 b Fu(22)399 4386 y(3.5.3)93 b(Shell)30 b(P)m(arameter)i -(Expansion)18 b Fn(:)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 Fu(23)399 4496 y(3.5.4)93 b(Command)29 b(Substitution)12 -b Fn(:)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 Fu(28)399 4605 y(3.5.5)93 b(Arithmetic)31 b(Expansion)19 -b Fn(:)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 Fu(29)399 4715 y(3.5.6)93 b(Pro)s(cess)30 -b(Substitution)d Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +b(able)53 b(of)h(Con)l(ten)l(ts)150 649 y Fs(1)135 b(In)l(tro)t +(duction)31 b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)44 b Fs(1)275 786 y Fu(1.1)92 +b(What)31 b(is)f(Bash?)10 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)57 b Fu(29)399 4824 y(3.5.7)93 -b(W)-8 b(ord)31 b(Splitting)20 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)49 -b Fu(29)399 4934 y(3.5.8)93 b(Filename)32 b(Expansion)13 -b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)43 b Fu(30)524 5044 y(3.5.8.1)93 b(P)m(attern)31 -b(Matc)m(hing)d Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)23 b Fu(1)275 896 y(1.2)92 b(What)31 +b(is)f(a)h(shell?)22 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)35 b Fu(1)150 1147 y Fs(2)135 b(De\014nitions)31 +b Fo(:)20 b(:)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(:)g(:)h(:)43 b Fs(3)150 1425 y(3)135 b(Basic)45 +b(Shell)g(F)-11 b(eatures)19 b Fo(:)h(:)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(:)32 b Fs(5)275 1562 y Fu(3.1)92 b(Shell)30 b(Syn)m(tax)13 +b Fn(:)j(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)56 b Fu(30)399 5153 y(3.5.9)93 b(Quote)31 -b(Remo)m(v)-5 b(al)9 b Fn(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +27 b Fu(5)399 1671 y(3.1.1)93 b(Shell)30 b(Op)s(eration)14 +b Fn(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(5)399 +1781 y(3.1.2)93 b(Quoting)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 -b Fu(31)275 5263 y(3.6)92 b(Redirections)26 b Fn(:)15 -b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)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(:)37 b Fu(6)524 1890 y(3.1.2.1)93 +b(Escap)s(e)30 b(Character)19 b Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)33 b Fu(6)524 +2000 y(3.1.2.2)93 b(Single)31 b(Quotes)16 b Fn(:)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(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 +b Fu(6)524 2110 y(3.1.2.3)93 b(Double)31 b(Quotes)14 +b Fn(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)28 b Fu(6)524 2219 y(3.1.2.4)93 +b(ANSI-C)30 b(Quoting)15 b Fn(:)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(:)29 b Fu(6)524 +2329 y(3.1.2.5)93 b(Lo)s(cale-Sp)s(eci\014c)32 b(T)-8 +b(ranslation)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)30 +b Fu(7)399 2438 y(3.1.3)93 b(Commen)m(ts)14 b Fn(:)i(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)55 -b Fu(31)p eop end +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(7)275 2548 y(3.2)92 +b(Shell)30 b(Commands)9 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)23 b Fu(8)399 2658 y(3.2.1)93 b(Simple)30 +b(Commands)15 b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b Fu(8)399 +2767 y(3.2.2)93 b(Pip)s(elines)26 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)40 b Fu(8)399 2877 y(3.2.3)93 +b(Lists)30 b(of)h(Commands)23 b Fn(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)36 +b Fu(9)399 2986 y(3.2.4)93 b(Comp)s(ound)28 b(Commands)12 +b Fn(:)i(:)h(:)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(:)25 b Fu(9)524 3096 y(3.2.4.1)93 b(Lo)s(oping)30 +b(Constructs)16 b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)29 b Fu(10)524 3205 y(3.2.4.2)93 b(Conditional)31 +b(Constructs)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +39 b Fu(10)524 3315 y(3.2.4.3)93 b(Grouping)30 b(Commands)22 +b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)36 +b Fu(14)399 3425 y(3.2.5)93 b(Copro)s(cesses)26 b Fn(:)15 +b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(15)399 +3534 y(3.2.6)93 b(GNU)31 b(P)m(arallel)13 b Fn(:)k(:)f(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)26 b Fu(15)275 3644 y(3.3)92 b(Shell)30 +b(F)-8 b(unctions)16 b Fn(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)29 b Fu(17)275 3753 y(3.4)92 b(Shell)30 b(P)m(arameters)c +Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 b +Fu(18)399 3863 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8 +b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)21 b Fu(19)399 3973 y(3.4.2)93 b(Sp)s(ecial)30 +b(P)m(arameters)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(20)275 4082 +y(3.5)92 b(Shell)30 b(Expansions)24 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)38 b Fu(21)399 4192 y(3.5.1)93 b(Brace)31 +b(Expansion)9 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b +Fu(21)399 4301 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b +Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(22)399 4411 y(3.5.3)93 +b(Shell)30 b(P)m(arameter)i(Expansion)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(23)399 4521 y(3.5.4)93 +b(Command)29 b(Substitution)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(29)399 4630 +y(3.5.5)93 b(Arithmetic)31 b(Expansion)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b +Fu(29)399 4740 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15 +b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)28 b Fu(30)399 4849 y(3.5.7)93 b(W)-8 +b(ord)31 b(Splitting)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 +b Fu(30)399 4959 y(3.5.8)93 b(Filename)32 b(Expansion)22 +b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)35 b Fu(30)524 5068 y(3.5.8.1)93 b(P)m(attern)31 +b(Matc)m(hing)14 b Fn(:)k(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(31)399 5178 y(3.5.9)93 +b(Quote)31 b(Remo)m(v)-5 b(al)17 b Fn(:)g(:)e(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)30 +b Fu(32)275 5288 y(3.6)92 b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)27 b Fu(32)p +eop end %%Page: -2 4 TeXDict begin -2 3 bop 3699 -116 a Fu(ii)399 83 y(3.6.1)93 -b(Redirecting)31 b(Input)23 b Fn(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)52 -b Fu(33)399 193 y(3.6.2)93 b(Redirecting)31 b(Output)26 -b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)56 b Fu(33)399 302 y(3.6.3)93 b(App)s(ending)28 -b(Redirected)k(Output)12 b Fn(:)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 Fu(33)399 412 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h -(and)f(Standard)h(Error)d Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)58 -b Fu(33)399 521 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and) -h(Standard)f(Error)19 b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)48 -b Fu(34)399 631 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)c -Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)56 b Fu(34)399 741 y(3.6.7)93 -b(Here)31 b(Strings)c Fn(:)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 Fu(34)399 850 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)16 -b Fn(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 -b Fu(34)399 960 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)19 -b Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)49 -b Fu(35)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 Fn(:)e(:)e(:)h(:)f(:)h(:)f(:) -49 b Fu(35)275 1179 y(3.7)92 b(Executing)31 b(Commands)17 -b Fn(:)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 Fu(35)399 1289 y(3.7.1)93 -b(Simple)30 b(Command)f(Expansion)23 b Fn(:)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 Fu(35)399 1398 y(3.7.2)93 b(Command)29 -b(Searc)m(h)i(and)f(Execution)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)56 -b Fu(36)399 1508 y(3.7.3)93 b(Command)29 b(Execution)i(En)m(vironmen)m -(t)8 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38 b Fu(36)399 1617 -y(3.7.4)93 b(En)m(vironmen)m(t)18 b Fn(:)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 Fu(37)399 1727 y(3.7.5)93 b(Exit)31 b(Status)c -Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)57 b -Fu(38)399 1836 y(3.7.6)93 b(Signals)15 b Fn(:)g(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +b(Redirecting)31 b(Input)11 b Fn(:)j(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 +b Fu(34)399 193 y(3.6.2)93 b(Redirecting)31 b(Output)15 +b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)44 b Fu(38)275 1946 -y(3.8)92 b(Shell)30 b(Scripts)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)53 b Fu(39)150 2188 y Fs(4)135 -b(Shell)45 b(Builtin)g(Commands)22 b Fo(:)e(:)g(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)67 -b Fs(41)275 2325 y Fu(4.1)92 b(Bourne)30 b(Shell)g(Builtins)e -Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)57 b Fu(41)275 2435 y(4.2)92 -b(Bash)30 b(Builtin)h(Commands)24 b Fn(:)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 Fu(48)275 2545 y(4.3)92 b(Mo)s(difying)30 b(Shell)g(Beha)m(vior)9 -b Fn(:)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 Fu(58)399 2654 y(4.3.1)93 b(The)30 -b(Set)g(Builtin)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)f(:)g(:)h(:)f(:)28 b Fu(34)399 302 y(3.6.3)93 b(App)s(ending)28 +b(Redirected)k(Output)20 b Fn(:)14 b(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)33 b Fu(34)399 412 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h +(and)f(Standard)h(Error)16 b Fn(:)e(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)29 +b Fu(34)399 521 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and) +h(Standard)f(Error)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40 +b Fu(34)399 631 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15 +b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(35)399 741 y(3.6.7)93 +b(Here)31 b(Strings)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 +b Fu(35)399 850 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25 +b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 +b Fu(35)399 960 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d +Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +40 b Fu(36)399 1069 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f +(for)f(Reading)h(and)f(W)-8 b(riting)29 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f +(:)41 b Fu(36)275 1179 y(3.7)92 b(Executing)31 b(Commands)24 +b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)55 b -Fu(58)399 2764 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)13 -b Fn(:)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 Fu(62)275 2873 y(4.4)92 b(Sp)s(ecial)30 -b(Builtins)21 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)50 -b Fu(68)150 3116 y Fs(5)135 b(Shell)45 b(V)-11 b(ariables)19 -b Fo(:)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 Fs(69)275 3253 y Fu(5.1)92 b(Bourne)30 b(Shell)g(V)-8 -b(ariables)22 b Fn(:)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 Fu(69)275 -3362 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)16 b Fn(:)h(:)f(:)f(:)h(:)f +g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(36)399 1289 y(3.7.1)93 +b(Simple)30 b(Command)f(Expansion)11 b Fn(:)k(:)g(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)24 b Fu(36)399 1398 y(3.7.2)93 b(Command)29 +b(Searc)m(h)i(and)f(Execution)15 b Fn(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +28 b Fu(37)399 1508 y(3.7.3)93 b(Command)29 b(Execution)i(En)m +(vironmen)m(t)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(37)399 +1617 y(3.7.4)93 b(En)m(vironmen)m(t)26 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)39 b Fu(38)399 1727 y(3.7.5)93 b(Exit)31 +b(Status)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 +b Fu(39)399 1836 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(39)275 +1946 y(3.8)92 b(Shell)30 b(Scripts)12 b Fn(:)i(:)i(:)f(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b Fu(69)150 3605 y -Fs(6)135 b(Bash)44 b(F)-11 b(eatures)13 b Fo(:)20 b(:)g(:)f(:)g(:)h(:)f -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 b Fs(80)275 -3742 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)d Fn(:)16 -b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)h(:)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 -Fu(80)275 3851 y(6.2)92 b(Bash)30 b(Startup)g(Files)20 -b Fn(:)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 Fu(82)275 -3961 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)11 b Fn(:)16 -b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Fu(83)399 -4071 y(6.3.1)93 b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)17 -b Fn(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)47 b -Fu(83)399 4180 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m(e?) -14 b Fn(:)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 Fu(84)399 4290 y(6.3.3)93 b(In)m(teractiv)m(e)33 -b(Shell)d(Beha)m(vior)23 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)52 b Fu(84)275 4399 y(6.4)92 b(Bash)30 -b(Conditional)h(Expressions)22 b Fn(:)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 Fu(85)275 4509 y(6.5)92 -b(Shell)30 b(Arithmetic)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)55 b Fu(87)275 4619 y(6.6)92 b(Aliases)12 b Fn(:)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 Fu(88)275 4728 y(6.7)92 b(Arra)m(ys)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(40)150 2197 +y Fs(4)135 b(Shell)45 b(Builtin)g(Commands)14 b Fo(:)20 +b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)27 b Fs(42)275 2334 y Fu(4.1)92 b(Bourne)30 +b(Shell)g(Builtins)16 b Fn(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)29 +b Fu(42)275 2443 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13 +b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)47 -b Fu(89)275 4838 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)e -Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 b Fu(90)399 4947 y(6.8.1)93 -b(Directory)32 b(Stac)m(k)f(Builtins)14 b Fn(:)i(:)g(:)f(:)g(:)h(:)f(:) +(:)f(:)g(:)h(:)f(:)26 b Fu(49)275 2553 y(4.3)92 b(Mo)s(difying)30 +b(Shell)g(Beha)m(vior)18 b Fn(:)f(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(60)399 +2663 y(4.3.1)93 b(The)30 b(Set)g(Builtin)14 b Fn(:)i(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)27 b Fu(60)399 2772 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21 +b Fn(:)16 b(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(64)275 2882 y(4.4)92 +b(Sp)s(ecial)30 b(Builtins)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)22 b Fu(70)150 3132 y Fs(5)135 b(Shell)45 +b(V)-11 b(ariables)11 b Fo(:)20 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(71)275 3269 y Fu(5.1)92 +b(Bourne)30 b(Shell)g(V)-8 b(ariables)10 b Fn(:)17 b(:)e(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)44 b Fu(90)275 -5057 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)24 b -Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +23 b Fu(71)275 3379 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26 +b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 +b Fu(71)150 3630 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32 +b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +44 b Fs(82)275 3767 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16 +b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)29 +b Fu(82)275 3876 y(6.2)92 b(Bash)30 b(Startup)g(Files)f +Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)54 b Fu(92)275 5166 y(6.10)92 b(The)30 -b(Restricted)h(Shell)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)53 -b Fu(93)275 5276 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)9 -b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(94)p eop -end +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(84)275 +3986 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)19 b Fn(:)d(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(85)399 4095 y(6.3.1)93 +b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)25 b +Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 +b Fu(86)399 4205 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m +(e?)22 b Fn(:)d(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)35 b Fu(86)399 4315 y(6.3.3)93 b(In)m(teractiv)m(e)33 +b(Shell)d(Beha)m(vior)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(86)275 4424 y(6.4)92 b(Bash)30 +b(Conditional)h(Expressions)10 b Fn(:)k(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(87)275 4534 y(6.5)92 +b(Shell)30 b(Arithmetic)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)26 b Fu(89)275 4643 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 +b Fu(90)275 4753 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)38 +b Fu(91)275 4863 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16 +b Fn(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(93)399 4972 +y(6.8.1)93 b(Directory)32 b(Stac)m(k)f(Builtins)23 b +Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +36 b Fu(93)275 5082 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13 +b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(94)275 5191 y(6.10)92 +b(The)30 b(Restricted)h(Shell)11 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)24 +b Fu(95)275 5301 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)17 +b Fn(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)30 b Fu(96)p eop end %%Page: -3 5 TeXDict begin -3 4 bop 3674 -116 a Fu(iii)150 83 y Fs(7)135 -b(Job)45 b(Con)l(trol)24 b Fo(:)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 Fs(97)275 220 y -Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)17 b Fn(:)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 Fu(97)275 330 y(7.2)92 b(Job)30 b(Con)m(trol)h -(Builtins)25 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)55 b Fu(98)275 -439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 b(ariables)17 -b Fn(:)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 Fu(100)150 657 y Fs(8)135 -b(Command)45 b(Line)g(Editing)19 b Fo(:)i(:)e(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)63 -b Fs(101)275 794 y Fu(8.1)92 b(In)m(tro)s(duction)30 -b(to)h(Line)f(Editing)24 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)54 b Fu(101)275 904 y(8.2)92 b(Readline)31 -b(In)m(teraction)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +b(Job)45 b(Con)l(trol)35 b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)48 b Fs(100)275 220 y +Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)23 b Fn(:)16 +b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(100)275 330 y(7.2)92 +b(Job)30 b(Con)m(trol)h(Builtins)11 b Fn(:)k(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)56 b Fu(101)399 -1013 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)26 -b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)55 -b Fu(102)399 1123 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i -(Commands)24 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)55 b -Fu(102)399 1233 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)16 -b Fn(:)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 -Fu(103)399 1342 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)9 -b Fn(:)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 Fu(103)399 1452 y(8.2.5)93 b(Searc)m(hing)31 -b(for)f(Commands)f(in)h(the)h(History)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)57 b Fu(103)275 -1561 y(8.3)92 b(Readline)31 b(Init)f(File)20 b Fn(:)d(:)e(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)50 b Fu(104)399 1671 y(8.3.1)93 b(Readline)31 -b(Init)f(File)i(Syn)m(tax)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 +b Fu(101)275 439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 +b(ariables)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)42 b Fu(104)399 1781 y(8.3.2)93 b(Conditional)31 -b(Init)f(Constructs)25 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)56 b Fu(111)399 1890 y(8.3.3)93 b(Sample)30 b(Init)g(File)12 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(103)150 +690 y Fs(8)135 b(Command)45 b(Line)g(Editing)11 b Fo(:)20 +b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)k Fs(104)275 827 y Fu(8.1)92 b(In)m(tro)s(duction)30 +b(to)h(Line)f(Editing)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(104)275 936 y(8.2)92 +b(Readline)31 b(In)m(teraction)14 b Fn(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)27 +b Fu(104)399 1046 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13 +b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)26 +b Fu(105)399 1156 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i +(Commands)13 b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)27 +b Fu(105)399 1265 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24 +b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 +b Fu(106)399 1375 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17 +b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)30 b Fu(106)399 1484 y(8.2.5)93 b(Searc)m(hing)31 +b(for)f(Commands)f(in)h(the)h(History)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(106)275 +1594 y(8.3)92 b(Readline)31 b(Init)f(File)8 b Fn(:)17 +b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(107)399 1704 +y(8.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)21 +b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)34 +b Fu(107)399 1813 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14 +b Fn(:)h(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27 +b Fu(115)399 1923 y(8.3.3)93 b(Sample)30 b(Init)g(File)20 +b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(116)275 2032 y(8.4)92 +b(Bindable)30 b(Readline)h(Commands)19 b Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(119)399 2142 y(8.4.1)93 +b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)16 b Fn(:)h(:)e(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(119)399 +2252 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f +(History)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)39 b Fu(120)399 2361 y(8.4.3)93 b(Commands)29 b(F)-8 +b(or)31 b(Changing)f(T)-8 b(ext)9 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)23 b Fu(121)399 2471 y(8.4.4)93 b(Killing)31 +b(And)e(Y)-8 b(anking)10 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(122)399 +2580 y(8.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)25 +b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(124)399 +2690 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8 +b(or)31 b(Y)-8 b(ou)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33 +b Fu(124)399 2800 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)42 b Fu(112)275 2000 y(8.4)92 -b(Bindable)30 b(Readline)h(Commands)11 b Fn(:)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 Fu(115)399 2109 y(8.4.1)93 -b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)e Fn(:)16 b(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(126)399 2909 y(8.4.8)93 +b(Some)30 b(Miscellaneous)j(Commands)14 b Fn(:)f(:)j(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 b Fu(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 Fn(:)g(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)47 b Fu(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 Fn(:)c(:)e(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)27 b Fu(126)275 3019 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e +Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -51 b Fu(117)399 2438 y(8.4.4)93 b(Killing)31 b(And)e(Y)-8 -b(anking)22 b Fn(:)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 Fu(118)399 2548 y(8.4.5)93 b(Sp)s(ecifying)30 -b(Numeric)g(Argumen)m(ts)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)47 -b Fu(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 Fn(:)k(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)42 -b Fu(120)399 2767 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)21 -b Fn(:)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 Fu(121)399 2876 y(8.4.8)93 b(Some)30 -b(Miscellaneous)j(Commands)24 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)55 -b Fu(122)275 2986 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)20 -b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(128)275 +3128 y(8.6)92 b(Programmable)30 b(Completion)25 b Fn(:)15 +b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 +b Fu(129)275 3238 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14 +b Fn(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(131)275 +3347 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)8 +b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(134)150 3598 y +Fs(9)135 b(Using)45 b(History)h(In)l(teractiv)l(ely)28 +b Fo(:)22 b(:)d(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g +(:)h(:)41 b Fs(137)275 3735 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 +b(acilities)9 b Fn(:)19 b(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(137)275 +3845 y(9.2)92 b(Bash)30 b(History)h(Builtins)d Fn(:)16 +b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)50 b Fu(124)275 -3096 y(8.6)92 b(Programmable)30 b(Completion)16 b Fn(:)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 Fu(124)275 3205 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)c -Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)56 b Fu(126)275 -3315 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)20 -b Fn(:)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 Fu(130)150 3533 y Fs(9)135 -b(Using)45 b(History)h(In)l(teractiv)l(ely)39 b Fo(:)19 -b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)80 -b Fs(133)275 3670 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 -b(acilities)21 b Fn(:)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 Fu(133)275 3779 -y(9.2)92 b(Bash)30 b(History)h(Builtins)19 b Fn(:)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 Fu(133)275 3889 y(9.3)92 b(History)31 b(Expansion)21 -b Fn(:)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 Fu(135)399 3999 -y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)10 b Fn(:)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 Fu(135)399 4108 y(9.3.2)93 b(W)-8 b(ord)31 -b(Designators)17 b Fn(:)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 Fu(136)399 4218 -y(9.3.3)93 b(Mo)s(di\014ers)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)57 b Fu(137)150 4436 y Fs(10)135 b(Installing)46 -b(Bash)24 b Fo(:)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 Fs(138)275 4573 y Fu(10.1)92 b(Basic)32 b(Installation)20 -b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50 b Fu(138)275 4682 -y(10.2)92 b(Compilers)30 b(and)g(Options)8 b Fn(:)15 -b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)38 b Fu(139)275 4792 y(10.3)92 b(Compiling)30 -b(F)-8 b(or)32 b(Multiple)f(Arc)m(hitectures)21 b Fn(:)c(:)e(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)52 b Fu(139)275 4902 y(10.4)92 b(Installation)32 b(Names)13 -b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)43 b Fu(139)275 5011 y(10.5)92 -b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s(e)12 b Fn(:)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 Fu(139)275 -5121 y(10.6)92 b(Sharing)30 b(Defaults)15 b Fn(:)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 Fu(140)275 5230 y(10.7)92 b(Op)s(eration)30 -b(Con)m(trols)24 b Fn(:)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 Fu(140)275 -5340 y(10.8)92 b(Optional)31 b(F)-8 b(eatures)10 b Fn(:)17 -b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +h(:)f(:)h(:)f(:)41 b Fu(137)275 3954 y(9.3)92 b(History)31 +b(Expansion)10 b Fn(:)k(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)40 b Fu(140)p eop end +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)23 +b Fu(139)399 4064 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19 +b Fn(:)e(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)g(:)h(:)32 b Fu(140)399 4174 y(9.3.2)93 b(W)-8 +b(ord)31 b(Designators)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(140)399 +4283 y(9.3.3)93 b(Mo)s(di\014ers)15 b Fn(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)29 b Fu(141)p eop end %%Page: -4 6 -TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(App)t(endix)44 -b(A)160 b(Rep)t(orting)46 b(Bugs)35 b Fo(:)20 b(:)f(:)g(:)h(:)f(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)80 b Fs(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 Fo(:)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 Fs(146)275 623 y Fu(B.1)92 b(Implemen)m(tation)31 b(Di\013erences)h -(F)-8 b(rom)31 b(The)e(SVR4.2)j(Shell)13 b Fn(:)i(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)43 b Fu(150)150 865 y Fs(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 Fo(:)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 Fs(152)150 1268 y(App)t(endix)44 b(D)159 b(Indexes)15 -b Fo(:)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 Fs(160)275 -1405 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h(Commands)16 -b Fn(:)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 Fu(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 Fn(:)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 Fu(161)275 1624 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 -b(ariable)32 b(Index)20 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(10)135 +b(Installing)46 b(Bash)16 b Fo(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)h(:)f(:)29 b Fs(142)275 220 y Fu(10.1)92 b(Basic)32 +b(Installation)8 b Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 +b Fu(142)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17 +b Fn(:)d(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)30 b Fu(143)275 439 y(10.3)92 b(Compiling)30 +b(F)-8 b(or)32 b(Multiple)f(Arc)m(hitectures)10 b Fn(:)16 +b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(143)275 549 y(10.4)92 +b(Installation)32 b(Names)22 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)35 +b Fu(143)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s +(e)21 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)34 b Fu(143)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24 +b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)50 b Fu(161)275 1733 y(D.4)92 b(F)-8 b(unction)31 -b(Index)16 b Fn(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(144)275 +878 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12 b Fn(:)k(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)47 -b Fu(163)275 1843 y(D.5)92 b(Concept)30 b(Index)d Fn(:)15 -b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)57 b Fu(165)p -eop end +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f +(:)h(:)f(:)25 b Fu(144)275 987 y(10.8)92 b(Optional)31 +b(F)-8 b(eatures)19 b Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)32 +b Fu(144)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46 +b(Bugs)21 b Fo(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)35 b Fs(149)150 1498 y(App)t(endix)44 +b(B)125 b(Ma)7 b(jor)46 b(Di\013erences)g(F)-11 b(rom)284 +1639 y(The)45 b(Bourne)f(Shell)35 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:) +f(:)g(:)h(:)f(:)h(:)47 b Fs(150)275 1776 y Fu(B.1)92 +b(Implemen)m(tation)31 b(Di\013erences)h(F)-8 b(rom)31 +b(The)e(SVR4.2)j(Shell)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)35 b Fu(154)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36 +b(F)-11 b(ree)35 b(Do)t(cumen)l(tation)i(License)25 b +Fo(:)20 b(:)29 b Fs(156)150 2305 y(App)t(endix)44 b(D)118 +b(Indexes)27 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) +h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)40 +b Fs(164)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h +(Commands)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38 +b Fu(164)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 +b(ords)20 b Fn(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34 +b Fu(165)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 +b(ariable)32 b(Index)27 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) +h(:)f(:)g(:)42 b Fu(166)275 2771 y(D.4)92 b(F)-8 b(unction)31 +b(Index)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h +(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 +b Fu(168)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b +Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b +Fu(170)p eop end %%Page: 1 7 -TeXDict begin 1 6 bop 150 -116 a Fu(Chapter)30 b(1:)41 -b(In)m(tro)s(duction)2592 b(1)150 299 y Fp(1)80 b(In)l(tro)t(duction) -150 602 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150 762 y -Fu(Bash)38 b(is)g(the)g(shell,)i(or)d(command)h(language)h(in)m +TeXDict begin 1 6 bop 3705 -116 a Fu(1)150 299 y Fp(1)80 +b(In)l(tro)t(duction)150 604 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150 +763 y Fu(Bash)38 b(is)g(the)g(shell,)i(or)d(command)h(language)h(in)m (terpreter,)h(for)e(the)g Fm(gnu)f Fu(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 +b(The)150 873 y(name)33 b(is)g(an)g(acron)m(ym)g(for)g(the)g(`)p Ft(Bourne-Again)27 b(SHell)p Fu(',)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 +(Bourne,)h(the)g(author)150 983 y(of)f(the)f(direct)h(ancestor)h(of)e (the)h(curren)m(t)f(Unix)g(shell)h Ft(sh)p Fu(,)f(whic)m(h)g(app)s -(eared)g(in)g(the)h(Sev)m(en)m(th)g(Edition)150 1091 +(eared)g(in)g(the)h(Sev)m(en)m(th)g(Edition)150 1092 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 Ft(sh)g +1221 y(Bash)f(is)g(largely)i(compatible)f(with)f Ft(sh)g Fu(and)g(incorp)s(orates)g(useful)g(features)g(from)g(the)g(Korn)g (shell)150 1330 y Ft(ksh)37 b Fu(and)h(the)g(C)g(shell)g Ft(csh)p Fu(.)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 Fm(ieee)150 -1439 y(posix)c Fu(Shell)g(and)g(T)-8 b(o)s(ols)35 b(p)s(ortion)f(of)g +1440 y(posix)c Fu(Shell)g(and)g(T)-8 b(o)s(ols)35 b(p)s(ortion)f(of)g (the)h Fm(ieee)f(posix)f Fu(sp)s(eci\014cation)j(\()p -Fm(ieee)e Fu(Standard)f(1003.1\).)56 b(It)150 1549 y(o\013ers)31 +Fm(ieee)e Fu(Standard)f(1003.1\).)56 b(It)150 1550 y(o\013ers)31 b(functional)f(impro)m(v)m(emen)m(ts)i(o)m(v)m(er)g Ft(sh)d Fu(for)i(b)s(oth)e(in)m(teractiv)m(e)k(and)d(programming)g(use.)275 -1679 y(While)h(the)g Fm(gnu)f Fu(op)s(erating)h(system)g(pro)m(vides)f +1678 y(While)h(the)g Fm(gnu)f Fu(op)s(erating)h(system)g(pro)m(vides)f (other)h(shells,)g(including)f(a)h(v)m(ersion)g(of)g Ft(csh)p Fu(,)f(Bash)150 1788 y(is)j(the)h(default)f(shell.)49 b(Lik)m(e)34 b(other)g Fm(gnu)f Fu(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 +1897 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 Fq(\000)g Fu(indep)s(enden)m -(tly-supp)s(orted)150 2008 y(p)s(orts)j(exist)h(for)f +(tly-supp)s(orted)150 2007 y(p)s(orts)j(exist)h(for)f Fm(ms-dos)p Fu(,)f Fm(os/2)p Fu(,)i(and)f(Windo)m(ws)g(platforms.)150 -2231 y Fs(1.2)68 b(What)45 b(is)g(a)h(shell?)150 2390 +2236 y Fs(1.2)68 b(What)45 b(is)g(a)h(shell?)150 2395 y Fu(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 +b(term)h(macro)150 2505 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 +(larger)f(expres-)150 2615 y(sions.)275 2743 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 +(language.)55 b(As)35 b(a)g(com-)150 2853 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 Fm(gnu)g Fu(utilities.)44 b(The)150 -2958 y(programming)30 b(language)h(features)f(allo)m(w)h(these)g +2962 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) +b(con)m(taining)g(com-)150 3072 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)j(status)g(as)g +b(new)f(commands)h(ha)m(v)m(e)i(the)150 3182 y(same)j(status)g(as)g (system)g(commands)f(in)g(directories)i(suc)m(h)e(as)h Ft(/bin)p Fu(,)g(allo)m(wing)h(users)e(or)g(groups)g(to)150 -3287 y(establish)d(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 +3291 y(establish)d(custom)f(en)m(vironmen)m(ts)h(to)g(automate)h(their) +f(common)f(tasks.)275 3420 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 +3529 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 +b(shells)c(execute)g(commands)150 3639 y(read)30 b(from)g(a)h(\014le.) +275 3768 y(A)41 b(shell)g(allo)m(ws)h(execution)h(of)e Fm(gnu)g Fu(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 +(hronously)-8 b(.)150 3877 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 +(input;)g(asyn-)150 3987 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 +(reads)g(and)f(executes)150 4096 y(additional)35 b(commands.)50 b(The)33 b Fr(redirection)h Fu(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 +g(con)m(trol)i(of)f(the)g(input)150 4206 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 +4316 y(commands')30 b(en)m(vironmen)m(ts.)275 4444 y(Shells)k(also)i (pro)m(vide)g(a)f(small)h(set)f(of)g(built-in)g(commands)g(\()p Fr(builtins)t Fu(\))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 +4554 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 Ft(cd)p Fu(,)e Ft(break)p Fu(,)150 4662 +b(example,)i Ft(cd)p Fu(,)e Ft(break)p Fu(,)150 4663 y Ft(continue)p Fu(,)28 b(and)i Ft(exec)f Fu(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 +(ma-)150 4773 y(nipulate)d(the)g(shell)g(itself.)41 b(The)27 b Ft(history)p Fu(,)g Ft(getopts)p Fu(,)f Ft(kill)p Fu(,)i(or)g -Ft(pwd)f Fu(builtins,)h(among)g(others,)h(could)150 4881 +Ft(pwd)f Fu(builtins,)h(among)g(others,)h(could)150 4883 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 +4992 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 @@ -8124,61 +8192,61 @@ 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 Fu(Chapter)30 b(2:)41 -b(De\014nitions)2662 b(3)150 299 y Fp(2)80 b(De\014nitions)150 -552 y Fu(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 Ft(POSIX)240 -b Fu(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 -Fm(posix)g Fu(1003.1)j(standard.)150 995 y Ft(blank)240 -b Fu(A)30 b(space)h(or)g(tab)f(c)m(haracter.)150 1161 -y Ft(builtin)144 b Fu(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 Ft(control)d(operator)630 1546 y -Fu(A)20 b Ft(token)f Fu(that)i(p)s(erforms)e(a)i(con)m(trol)g +TeXDict begin 3 8 bop 3705 -116 a Fu(3)150 299 y Fp(2)80 +b(De\014nitions)150 552 y Fu(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 Ft(POSIX)240 b Fu(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 Fm(posix)g Fu(1003.1)j(standard.)150 995 +y Ft(blank)240 b Fu(A)30 b(space)h(or)g(tab)f(c)m(haracter.)150 +1161 y Ft(builtin)144 b Fu(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 Ft(control)d(operator)630 +1546 y Fu(A)20 b Ft(token)f Fu(that)i(p)s(erforms)e(a)i(con)m(trol)g (function.)37 b(It)21 b(is)f(a)h Ft(newline)d Fu(or)j(one)f(of)h(the)f (follo)m(wing:)630 1655 y(`)p Ft(||)p Fu(',)31 b(`)p Ft(&&)p Fu(',)f(`)p Ft(&)p Fu(',)h(`)p Ft(;)p Fu(',)g(`)p -Ft(;;)p Fu(',)f(`)p Ft(|)p Fu(',)h(`)p Ft(|&)p Fu(',)f(`)p -Ft(\()p Fu(',)h(or)g(`)p Ft(\))p Fu('.)150 1821 y Ft(exit)e(status)630 -1931 y Fu(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 Ft(field)240 b Fu(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 Ft(filename)96 b Fu(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 Ft(job)336 -b Fu(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 Ft(job)f(control)630 3141 y Fu(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 Ft(metacharacter)630 3526 y Fu(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 Ft(blank)630 3635 y Fu(or)30 b(one)h(of)g(the)f(follo)m -(wing)i(c)m(haracters:)42 b(`)p Ft(|)p Fu(',)31 b(`)p -Ft(&)p Fu(',)g(`)p Ft(;)p Fu(',)g(`)p Ft(\()p Fu(',)f(`)p -Ft(\))p Fu(',)h(`)p Ft(<)p Fu(',)g(or)f(`)p Ft(>)p Fu('.)150 -3801 y Ft(name)288 b Fu(A)37 b Ft(word)f Fu(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 Ft(Name)p Fu(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 Ft(identifier)p Fu(.)150 -4186 y Ft(operator)96 b Fu(A)38 b Ft(control)28 b(operator)36 -b Fu(or)h(a)i Ft(redirection)27 b(operator)p Fu(.)61 -b(See)38 b(Section)g(3.6)h([Redirec-)630 4295 y(tions],)f(page)f(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 Ft(metacharacter)p Fu(.)150 4570 -y Ft(process)f(group)630 4680 y Fu(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 +Ft(;;)p Fu(',)f(`)p Ft(;&)p Fu(',)h(`)p Ft(;;&)p Fu(',)f(`)p +Ft(|)p Fu(',)h(`)p Ft(|&)p Fu(',)f(`)p Ft(\()p Fu(',)h(or)f(`)p +Ft(\))p Fu('.)150 1821 y Ft(exit)f(status)630 1931 y +Fu(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 Ft(field)240 b Fu(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 Ft(filename)96 +b Fu(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 Ft(job)336 b Fu(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 Ft(job)f(control)630 +3141 y Fu(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 Ft(metacharacter)630 3526 y Fu(A)23 b(c)m(haracter)h(that,)h(when)d +(unquoted,)h(separates)h(w)m(ords.)37 b(A)23 b(metac)m(haracter)i(is)e +(a)g Ft(space)p Fu(,)630 3635 y Ft(tab)p Fu(,)29 b Ft(newline)p +Fu(,)e(or)i(one)h(of)f(the)h(follo)m(wing)g(c)m(haracters:)42 +b(`)p Ft(|)p Fu(',)29 b(`)p Ft(&)p Fu(',)h(`)p Ft(;)p +Fu(',)g(`)p Ft(\()p Fu(',)g(`)p Ft(\))p Fu(',)g(`)p Ft(<)p +Fu(',)f(or)h(`)p Ft(>)p Fu('.)150 3801 y Ft(name)288 +b Fu(A)37 b Ft(word)f Fu(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 Ft(Name)p +Fu(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 Ft(identifier)p Fu(.)150 4186 y Ft(operator)96 b Fu(A)38 +b Ft(control)28 b(operator)36 b Fu(or)h(a)i Ft(redirection)27 +b(operator)p Fu(.)61 b(See)38 b(Section)g(3.6)h([Redirec-)630 +4295 y(tions],)f(page)f(32,)i(for)d(a)g(list)h(of)f(redirection)h(op)s +(erators.)58 b(Op)s(erators)35 b(con)m(tain)j(at)f(least)630 +4405 y(one)31 b(unquoted)e Ft(metacharacter)p Fu(.)150 +4570 y Ft(process)f(group)630 4680 y Fu(A)i(collection)k(of)c(related)h +(pro)s(cesses)g(eac)m(h)g(ha)m(ving)g(the)g(same)f(pro)s(cess)g(group)g Fm(id)p Fu(.)150 4846 y Ft(process)e(group)h(ID)630 4955 y Fu(A)h(unique)g(iden)m(ti\014er)h(that)f(represen)m(ts)h(a)g Ft(process)d(group)h Fu(during)g(its)i(lifetime.)150 @@ -8205,76 +8273,75 @@ Ft(operator)p Fu(.)150 1484 y Ft(word)288 b Fu(A)28 b(sequence)g(of)g b(W)-8 b(ords)28 b(ma)m(y)g(not)g(include)630 1594 y(unquoted)i Ft(metacharacters)p Fu(.)p eop end %%Page: 5 11 -TeXDict begin 5 10 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(5)150 299 -y Fp(3)80 b(Basic)54 b(Shell)e(F)-13 b(eatures)150 603 -y Fu(Bash)21 b(is)g(an)f(acron)m(ym)i(for)e(`)p Ft(Bourne-Again)27 +TeXDict begin 5 10 bop 3705 -116 a Fu(5)150 299 y Fp(3)80 +b(Basic)54 b(Shell)e(F)-13 b(eatures)150 601 y Fu(Bash)21 +b(is)g(an)f(acron)m(ym)i(for)e(`)p Ft(Bourne-Again)27 b(SHell)p Fu('.)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 +(Unix)f(shell)150 710 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 +(are)i(a)m(v)-5 b(ailable)150 820 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 -Fm(posix)f Fu(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 +Fm(posix)f Fu(sp)s(eci\014cation)i(for)f(the)150 929 +y(`standard')k(Unix)g(shell.)275 1086 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 +b(commands,)32 b(con)m(trol)i(struc-)150 1196 y(tures,)k(shell)e (functions,)h(shell)g Fl(p)-5 b(ar)g(ameters)p Fu(,)41 b(shell)36 b(expansions,)i Fl(r)-5 b(e)g(dir)g(e)g(ctions)p -Fu(,)40 b(whic)m(h)c(are)h(a)f(w)m(a)m(y)h(to)150 1308 +Fu(,)40 b(whic)m(h)c(are)h(a)f(w)m(a)m(y)h(to)150 1306 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 Fs(3.1)68 b(Shell)45 b(Syn)l(tax)150 1735 y Fu(When)40 +1580 y Fs(3.1)68 b(Shell)45 b(Syn)l(tax)150 1740 y Fu(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 +1849 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 -Ft(#)p Fu('\),)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) +Ft(#)p Fu('\),)h(and)e(the)150 1959 y(rest)i(of)f(that)h(line.)275 +2116 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 +2225 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 +b(arious)23 b(w)m(ords)150 2335 y(and)30 b(c)m(haracters.)275 +2492 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 +2602 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 +2711 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 +2821 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 Fk(3.1.1)63 b(Shell)41 b(Op)s(eration)150 3187 +3043 y Fk(3.1.1)63 b(Shell)41 b(Op)s(eration)150 3190 y Fu(The)c(follo)m(wing)h(is)f(a)h(brief)e(description)i(of)f(the)g (shell's)h(op)s(eration)f(when)f(it)i(reads)f(and)f(executes)j(a)150 -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(39\),)k -(from)41 b(a)i(string)330 3564 y(supplied)30 b(as)h(an)g(argumen)m(t)h +3299 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h +(follo)m(wing:)199 3456 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g +(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(40\),)k +(from)41 b(a)i(string)330 3566 y(supplied)30 b(as)h(an)g(argumen)m(t)h (to)g(the)f Ft(-c)g Fu(in)m(v)m(o)s(cation)i(option)f(\(see)g(Section)g -(6.1)g([In)m(v)m(oking)g(Bash],)330 3673 y(page)f(80\),)h(or)e(from)g -(the)h(user's)f(terminal.)199 3820 y(2.)61 b(Breaks)43 +(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(82\),)h(or)e(from)g +(the)h(user's)f(terminal.)199 3821 y(2.)61 b(Breaks)43 b(the)g(input)f(in)m(to)h(w)m(ords)f(and)g(op)s(erators,)k(ob)s(eying)d -(the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3929 y(Section)27 +(the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3931 y(Section)27 b(3.1.2)i([Quoting],)f(page)f(6.)40 b(These)26 b(tok)m(ens)i(are)f (separated)g(b)m(y)f Ft(metacharacters)p Fu(.)36 b(Alias)330 -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(88\).)199 4185 y(3.)61 +4040 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i +(Section)f(6.6)g([Aliases],)i(page)e(90\).)199 4186 y(3.)61 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 +4296 y(mands],)30 b(page)h(8\).)199 4442 y(4.)61 b(P)m(erforms)40 b(the)h(v)-5 b(arious)40 b(shell)h(expansions)f(\(see)h(Section)g(3.5)g -([Shell)g(Expansions],)h(page)f(21\),)330 4550 y(breaking)35 +([Shell)g(Expansions],)h(page)f(21\),)330 4551 y(breaking)35 b(the)g(expanded)g(tok)m(ens)h(in)m(to)g(lists)f(of)g(\014lenames)h -(\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4660 y(pansion],)30 +(\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4661 y(pansion],)30 b(page)h(30\))h(and)e(commands)g(and)g(argumen)m(ts.)199 -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 +4807 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)g +(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(32\))g(and)e(re-)330 +4916 y(mo)m(v)m(es)c(the)e(redirection)h(op)s(erators)g(and)f(their)g (op)s(erands)f(from)h(the)h(argumen)m(t)f(list.)199 5062 y(6.)61 b(Executes)31 b(the)g(command)f(\(see)h(Section)g(3.7)h -([Executing)f(Commands],)f(page)h(35\).)199 5208 y(7.)61 +([Executing)f(Commands],)f(page)h(36\).)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(38\).)p +y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(39\).)p eop end %%Page: 6 12 TeXDict begin 6 11 bop 150 -116 a Fu(Chapter)30 b(3:)41 @@ -8286,131 +8353,136 @@ 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 +795 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 +(meaning)150 905 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 +b(When)39 b(the)h(command)f(history)150 1015 y(expansion)i(facilities)j (are)e(b)s(eing)f(used)g(\(see)h(Section)h(9.3)f([History)h(In)m -(teraction],)j(page)c(135\),)47 b(the)150 1122 y Fr(history)30 +(teraction],)j(page)c(139\),)47 b(the)150 1124 y Fr(history)30 b(expansion)h Fu(c)m(haracter,)h(usually)f(`)p Ft(!)p Fu(',)g(m)m(ust)f(b)s(e)g(quoted)h(to)g(prev)m(en)m(t)g(history)g -(expansion.)41 b(See)150 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)37 +(expansion.)41 b(See)150 1234 y(Section)22 b(9.1)g([Bash)f(History)h(F) +-8 b(acilities],)26 b(page)c(137,)j(for)20 b(more)h(details)h +(concerning)g(history)f(expansion.)275 1364 y(There)37 b(are)h(three)f(quoting)h(mec)m(hanisms:)56 b(the)38 b Fr(escap)s(e)g(c)m(haracter)p Fu(,)j(single)d(quotes,)i(and)d(double) -150 1469 y(quotes.)150 1655 y Fk(3.1.2.1)63 b(Escap)s(e)41 -b(Character)150 1802 y Fu(A)36 b(non-quoted)f(bac)m(kslash)h(`)p +150 1474 y(quotes.)150 1665 y Fk(3.1.2.1)63 b(Escap)s(e)41 +b(Character)150 1812 y Fu(A)36 b(non-quoted)f(bac)m(kslash)h(`)p Ft(\\)p Fu(')g(is)f(the)h(Bash)g(escap)s(e)f(c)m(haracter.)58 b(It)36 b(preserv)m(es)f(the)h(literal)h(v)-5 b(alue)36 -b(of)150 1911 y(the)27 b(next)g(c)m(haracter)h(that)f(follo)m(ws,)i +b(of)150 1921 y(the)27 b(next)g(c)m(haracter)h(that)f(follo)m(ws,)i (with)d(the)h(exception)g(of)g Ft(newline)p Fu(.)38 b(If)26 -b(a)h Ft(\\newline)d Fu(pair)i(app)s(ears,)150 2021 y(and)k(the)h(bac)m +b(a)h Ft(\\newline)d Fu(pair)i(app)s(ears,)150 2031 y(and)k(the)h(bac)m (kslash)g(itself)g(is)g(not)g(quoted,)g(the)f Ft(\\newline)f Fu(is)h(treated)i(as)f(a)g(line)g(con)m(tin)m(uation)h(\(that)150 -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 Fk(3.1.2.2)63 -b(Single)42 b(Quotes)150 2464 y Fu(Enclosing)24 b(c)m(haracters)h(in)e +2140 y(is,)f(it)g(is)f(remo)m(v)m(ed)h(from)f(the)h(input)e(stream)i +(and)f(e\013ectiv)m(ely)j(ignored\).)150 2331 y Fk(3.1.2.2)63 +b(Single)42 b(Quotes)150 2478 y Fu(Enclosing)24 b(c)m(haracters)h(in)e (single)h(quotes)g(\(`)p Ft(')p Fu('\))g(preserv)m(es)g(the)f(literal)i (v)-5 b(alue)24 b(of)g(eac)m(h)g(c)m(haracter)h(within)150 -2573 y(the)31 b(quotes.)42 b(A)31 b(single)h(quote)f(ma)m(y)g(not)g(o)s +2588 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 Fk(3.1.2.3)63 b(Double)42 b(Quotes)150 3016 y Fu(Enclosing)24 +(preceded)i(b)m(y)g(a)150 2697 y(bac)m(kslash.)150 2888 +y Fk(3.1.2.3)63 b(Double)42 b(Quotes)150 3035 y Fu(Enclosing)24 b(c)m(haracters)h(in)f(double)f(quotes)h(\(`)p Ft(")p Fu('\))g(preserv)m(es)g(the)g(literal)h(v)-5 b(alue)24 -b(of)g(all)g(c)m(haracters)h(within)150 3125 y(the)34 +b(of)g(all)g(c)m(haracters)h(within)150 3145 y(the)34 b(quotes,)h(with)f(the)g(exception)h(of)f(`)p Ft($)p Fu(',)h(`)p Ft(`)p Fu(',)g(`)p Ft(\\)p Fu(',)g(and,)f(when)f(history)g -(expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3235 -y(The)25 b(c)m(haracters)h(`)p Ft($)p Fu(')g(and)f(`)p -Ft(`)p Fu(')g(retain)h(their)f(sp)s(ecial)h(meaning)f(within)g(double)g -(quotes)h(\(see)g(Section)g(3.5)150 3345 y([Shell)j(Expansions],)g -(page)h(21\).)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 -Ft($)p Fu(',)43 b(`)p Ft(`)p Fu(',)h(`)p Ft(")p Fu(',)g(`)p -Ft(\\)p Fu(',)f(or)e Ft(newline)p Fu(.)69 b(Within)41 -b(double)f(quotes,)150 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 Ft(!)p -Fu(')g(app)s(earing)f(in)h(double)f(quotes)i(is)f(escap)s(ed)g(using)f -(a)h(bac)m(kslash.)55 b(The)150 4002 y(bac)m(kslash)31 -b(preceding)f(the)h(`)p Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 -4130 y(The)41 b(sp)s(ecial)h(parameters)f(`)p Ft(*)p -Fu(')h(and)f(`)p Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g -(when)f(in)g(double)g(quotes)h(\(see)150 4240 y(Section)31 -b(3.5.3)h([Shell)f(P)m(arameter)h(Expansion],)e(page)h(23\).)150 -4426 y Fk(3.1.2.4)63 b(ANSI-C)40 b(Quoting)150 4573 y -Fu(W)-8 b(ords)43 b(of)f(the)h(form)f Ft($')p Fj(string)p -Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8 b(.)79 b(The)42 -b(w)m(ord)g(expands)f(to)j Fr(string)p Fu(,)h(with)150 -4682 y(bac)m(kslash-escap)s(ed)f(c)m(haracters)h(replaced)f(as)g(sp)s -(eci\014ed)f(b)m(y)g(the)g(ANSI)g(C)g(standard.)79 b(Bac)m(kslash)150 -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 Ft(\\a)384 b Fu(alert)31 -b(\(b)s(ell\))150 5084 y Ft(\\b)384 b Fu(bac)m(kspace)150 -5230 y Ft(\\e)150 5340 y(\\E)g Fu(an)30 b(escap)s(e)h(c)m(haracter)h -(\(not)f(ANSI)f(C\))p eop end +(expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3254 +y(When)e(the)h(shell)g(is)g(in)f Fm(posix)g Fu(mo)s(de)g(\(see)i +(Section)f(6.11)i([Bash)e(POSIX)e(Mo)s(de],)k(page)e(96\),)i(the)e(`)p +Ft(!)p Fu(')150 3364 y(has)28 b(no)g(sp)s(ecial)h(meaning)g(within)f +(double)g(quotes,)h(ev)m(en)g(when)f(history)g(expansion)g(is)g +(enabled.)40 b(The)150 3474 y(c)m(haracters)h(`)p Ft($)p +Fu(')e(and)g(`)p Ft(`)p Fu(')g(retain)h(their)f(sp)s(ecial)h(meaning)f +(within)g(double)g(quotes)h(\(see)g(Section)g(3.5)150 +3583 y([Shell)29 b(Expansions],)g(page)h(21\).)41 b(The)28 +b(bac)m(kslash)i(retains)f(its)h(sp)s(ecial)f(meaning)g(only)g(when)f +(follo)m(w)m(ed)150 3693 y(b)m(y)41 b(one)f(of)h(the)g(follo)m(wing)h +(c)m(haracters:)63 b(`)p Ft($)p Fu(',)43 b(`)p Ft(`)p +Fu(',)h(`)p Ft(")p Fu(',)g(`)p Ft(\\)p Fu(',)f(or)e Ft(newline)p +Fu(.)69 b(Within)41 b(double)f(quotes,)150 3802 y(bac)m(kslashes)25 +b(that)h(are)f(follo)m(w)m(ed)h(b)m(y)e(one)h(of)g(these)g(c)m +(haracters)h(are)f(remo)m(v)m(ed.)40 b(Bac)m(kslashes)26 +b(preceding)150 3912 y(c)m(haracters)35 b(without)e(a)h(sp)s(ecial)f +(meaning)h(are)f(left)h(unmo)s(di\014ed.)47 b(A)34 b(double)f(quote)g +(ma)m(y)h(b)s(e)f(quoted)150 4022 y(within)h(double)h(quotes)g(b)m(y)g +(preceding)g(it)g(with)g(a)g(bac)m(kslash.)55 b(If)35 +b(enabled,)h(history)f(expansion)g(will)150 4131 y(b)s(e)f(p)s +(erformed)g(unless)g(an)h(`)p Ft(!)p Fu(')g(app)s(earing)f(in)h(double) +f(quotes)i(is)f(escap)s(ed)g(using)f(a)h(bac)m(kslash.)55 +b(The)150 4241 y(bac)m(kslash)31 b(preceding)f(the)h(`)p +Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4371 y(The)41 +b(sp)s(ecial)h(parameters)f(`)p Ft(*)p Fu(')h(and)f(`)p +Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g(when)f(in)g(double)g +(quotes)h(\(see)150 4481 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h +(Expansion],)e(page)h(23\).)150 4672 y Fk(3.1.2.4)63 +b(ANSI-C)40 b(Quoting)150 4819 y Fu(W)-8 b(ords)43 b(of)f(the)h(form)f +Ft($')p Fj(string)p Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8 +b(.)79 b(The)42 b(w)m(ord)g(expands)f(to)j Fr(string)p +Fu(,)h(with)150 4928 y(bac)m(kslash-escap)s(ed)f(c)m(haracters)h +(replaced)f(as)g(sp)s(eci\014ed)f(b)m(y)g(the)g(ANSI)g(C)g(standard.)79 +b(Bac)m(kslash)150 5038 y(escap)s(e)31 b(sequences,)g(if)f(presen)m(t,) +h(are)g(deco)s(ded)f(as)g(follo)m(ws:)150 5189 y Ft(\\a)384 +b Fu(alert)31 b(\(b)s(ell\))150 5340 y Ft(\\b)384 b Fu(bac)m(kspace)p +eop end %%Page: 7 13 TeXDict begin 7 12 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299 -y Ft(\\f)384 b Fu(form)30 b(feed)150 488 y Ft(\\n)384 -b Fu(newline)150 678 y Ft(\\r)g Fu(carriage)32 b(return)150 -868 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)150 1057 -y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 1247 y Ft(\\\\)384 -b Fu(bac)m(kslash)150 1436 y Ft(\\')g Fu(single)31 b(quote)150 -1626 y Ft(\\")384 b Fu(double)30 b(quote)150 1816 y Ft(\\)p -Fj(nnn)288 b Fu(the)31 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 -b(alue)31 b(is)f(the)h(o)s(ctal)g(v)-5 b(alue)31 b Fr(nnn)e -Fu(\(one)i(to)g(three)g(digits\))150 2005 y Ft(\\x)p -Fj(HH)288 b Fu(the)36 b(eigh)m(t-bit)i(c)m(haracter)f(whose)f(v)-5 -b(alue)36 b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36 b -Fr(HH)46 b Fu(\(one)37 b(or)f(t)m(w)m(o)630 2115 y(hex)30 -b(digits\))150 2304 y Ft(\\u)p Fj(HHHH)192 b Fu(the)33 -b(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f(whose)e(v)-5 -b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 b(alue)630 -2414 y Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)f(hex)g(digits\))150 -2604 y Ft(\\U)p Fj(HHHHHHHH)630 2713 y Fu(the)j(Unico)s(de)f(\(ISO/IEC) +y Ft(\\e)150 408 y(\\E)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)h +(\(not)f(ANSI)f(C\))150 572 y Ft(\\f)384 b Fu(form)30 +b(feed)150 735 y Ft(\\n)384 b Fu(newline)150 898 y Ft(\\r)g +Fu(carriage)32 b(return)150 1061 y Ft(\\t)384 b Fu(horizon)m(tal)32 +b(tab)150 1224 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 +1387 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1551 y Ft(\\')g +Fu(single)31 b(quote)150 1714 y Ft(\\")384 b Fu(double)30 +b(quote)150 1877 y Ft(\\?)384 b Fu(question)31 b(mark)150 +2040 y Ft(\\)p Fj(nnn)288 b Fu(the)31 b(eigh)m(t-bit)h(c)m(haracter)g +(whose)e(v)-5 b(alue)31 b(is)f(the)h(o)s(ctal)g(v)-5 +b(alue)31 b Fr(nnn)e Fu(\(one)i(to)g(three)g(digits\))150 +2203 y Ft(\\x)p Fj(HH)288 b Fu(the)36 b(eigh)m(t-bit)i(c)m(haracter)f +(whose)f(v)-5 b(alue)36 b(is)g(the)g(hexadecimal)h(v)-5 +b(alue)36 b Fr(HH)46 b Fu(\(one)37 b(or)f(t)m(w)m(o)630 +2313 y(hex)30 b(digits\))150 2476 y Ft(\\u)p Fj(HHHH)192 +b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f(whose)e +(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 b(alue)630 +2586 y Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)f(hex)g(digits\))150 +2749 y Ft(\\U)p Fj(HHHHHHHH)630 2858 y Fu(the)j(Unico)s(de)f(\(ISO/IEC) g(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g -(hexadecimal)g(v)-5 b(alue)630 2823 y Fr(HHHHHHHH)42 -b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g(digits\))150 3012 +(hexadecimal)g(v)-5 b(alue)630 2968 y Fr(HHHHHHHH)42 +b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g(digits\))150 3131 y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p Fr(x)38 -b Fu(c)m(haracter)150 3217 y(The)30 b(expanded)f(result)i(is)f +b Fu(c)m(haracter)150 3296 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 Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 -b(T)-10 b(ranslation)150 3593 y Fu(A)28 b(double-quoted)g(string)f +(presen)m(t.)150 3499 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 +b(T)-10 b(ranslation)150 3646 y Fu(A)28 b(double-quoted)g(string)f (preceded)h(b)m(y)f(a)h(dollar)h(sign)e(\(`)p Ft($)p Fu('\))i(will)f(cause)g(the)g(string)g(to)g(b)s(e)f(translated)150 -3703 y(according)f(to)f(the)g(curren)m(t)g(lo)s(cale.)41 +3756 y(according)f(to)f(the)g(curren)m(t)g(lo)s(cale.)41 b(If)24 b(the)h(curren)m(t)g(lo)s(cale)h(is)f Ft(C)g Fu(or)g Ft(POSIX)p Fu(,)f(the)h(dollar)h(sign)f(is)g(ignored.)150 -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 +3865 y(If)30 b(the)g(string)h(is)f(translated)h(and)f(replaced,)h(the)g +(replacemen)m(t)h(is)e(double-quoted.)275 4004 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f(b)m(y)f(the)g Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39 b(Others)150 -4087 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the) +4113 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the) g(v)-5 b(alue)37 b(of)g(the)h Ft(TEXTDOMAIN)c Fu(shell)j(v)-5 -b(ariable,)150 4196 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p +b(ariable,)150 4223 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p Ft(.mo)p Fu('.)43 b(If)31 b(y)m(ou)h(use)f(the)h Ft(TEXTDOMAIN)c Fu(v)-5 b(ariable,)33 b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 -4306 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 +4332 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 b(to)g(the)f(lo)s(cation)i(of)e(the)h(message)g(catalog)i(\014les.)38 -b(Still)23 b(others)f(use)g(b)s(oth)150 4416 y(v)-5 b(ariables)31 +b(Still)23 b(others)f(use)g(b)s(oth)150 4442 y(v)-5 b(ariables)31 b(in)f(this)g(fashion:)41 b Ft(TEXTDOMAINDIR)p Fu(/)p -Ft(LC_MESSAGES)p Fu(/LC)p 2528 4416 28 4 v 34 w(MESSA)m(GES/)p +Ft(LC_MESSAGES)p Fu(/LC)p 2528 4442 28 4 v 34 w(MESSA)m(GES/)p Ft(TEXTDOMAIN)p Fu(.mo.)150 4645 y Fk(3.1.3)63 b(Commen)m(ts)150 4792 y Fu(In)21 b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m (teractiv)m(e)j(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments) 16 b Fu(option)150 4902 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h (enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e -(62\),)i(a)d(w)m(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p +(64\),)i(a)d(w)m(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p Ft(#)p Fu(')g(causes)h(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m (haracters)g(on)f(that)h(line)g(to)g(b)s(e)f(ignored.)150 5121 y(An)43 b(in)m(teractiv)m(e)j(shell)e(without)f(the)g @@ -8418,7 +8490,7 @@ Ft(interactive_comments)38 b Fu(option)44 b(enabled)f(do)s(es)g(not)g (allo)m(w)150 5230 y(commen)m(ts.)56 b(The)34 b Ft (interactive_comments)c Fu(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g (in)m(teractiv)m(e)j(shells.)55 b(See)150 5340 y(Section)30 -b(6.3)f([In)m(teractiv)m(e)j(Shells],)d(page)h(83,)g(for)e(a)i +b(6.3)f([In)m(teractiv)m(e)j(Shells],)d(page)h(85,)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 @@ -8444,17 +8516,17 @@ b(page)e(3\).)54 b(The)35 b(\014rst)e(w)m(ord)i(generally)g(sp)s (eci\014es)g(a)g(command)f(to)h(b)s(e)f(executed,)j(with)150 1600 y(the)31 b(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that)h (command's)f(argumen)m(ts.)275 1736 y(The)h(return)h(status)g(\(see)i -(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(38\))g(of)g(a)g(simple)f +(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(39\))g(of)g(a)g(simple)f (command)g(is)h(its)150 1846 y(exit)38 b(status)f(as)g(pro)m(vided)f(b) m(y)h(the)g Fm(posix)f Fu(1003.1)j Ft(waitpid)c Fu(function,)j(or)f (128)p Ft(+)p Fr(n)g Fu(if)g(the)g(command)150 1956 y(w)m(as)31 b(terminated)g(b)m(y)f(signal)h Fr(n)p Fu(.)150 2157 -y Fk(3.2.2)63 b(Pip)s(elines)150 2304 y Fu(A)35 b Ft(pipeline)e -Fu(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 2413 -y(`)p Ft(|)p Fu(')31 b(or)f(`)p Ft(|&)p Fu('.)275 2550 -y(The)f(format)i(for)f(a)h(pip)s(eline)f(is)390 2686 -y Ft([time)46 b([-p]])h([!])g Fj(command1)e Ft([)j(|)f(or)g(|&)g +y Fk(3.2.2)63 b(Pip)s(elines)150 2304 y Fu(A)21 b Ft(pipeline)d +Fu(is)j(a)g(sequence)g(of)g(one)g(or)g(more)g(commands)f(separated)h(b) +m(y)g(one)g(of)g(the)g(con)m(trol)h(op)s(erators)150 +2413 y(`)p Ft(|)p Fu(')31 b(or)f(`)p Ft(|&)p Fu('.)275 +2550 y(The)f(format)i(for)f(a)h(pip)s(eline)f(is)390 +2686 y Ft([time)46 b([-p]])h([!])g Fj(command1)e Ft([)j(|)f(or)g(|&)g Fj(command2)f Ft(])h(...)150 2822 y Fu(The)25 b(output)f(of)i(eac)m(h)g (command)f(in)f(the)i(pip)s(eline)e(is)i(connected)g(via)f(a)h(pip)s(e) e(to)i(the)f(input)f(of)h(the)h(next)150 2932 y(command.)40 @@ -8479,21 +8551,21 @@ h(it)150 3752 y(\014nishes.)51 b(The)34 b(statistics)i(curren)m(tly)e (output)g(format)g(to)150 3971 y(that)j(sp)s(eci\014ed)e(b)m(y)h Fm(posix)p Fu(.)49 b(When)33 b(the)g(shell)g(is)h(in)e Fm(posix)h Fu(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150 -4081 y(Mo)s(de],)40 b(page)f(94\),)i(it)d(do)s(es)f(not)h(recognize)i +4081 y(Mo)s(de],)40 b(page)f(96\),)i(it)d(do)s(es)f(not)h(recognize)i Ft(time)c Fu(as)i(a)g(reserv)m(ed)g(w)m(ord)f(if)h(the)g(next)g(tok)m (en)g(b)s(egins)150 4191 y(with)33 b(a)g(`)p Ft(-)p Fu('.)49 b(The)33 b Ft(TIMEFORMAT)d Fu(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(set) g(to)h(a)g(format)f(string)g(that)h(sp)s(eci\014es)f(ho)m(w)g(the)150 4300 y(timing)38 b(information)g(should)e(b)s(e)h(displa)m(y)m(ed.)62 b(See)38 b(Section)g(5.2)g([Bash)g(V)-8 b(ariables],)41 -b(page)d(69,)i(for)e(a)150 4410 y(description)27 b(of)g(the)h(a)m(v)-5 +b(page)d(71,)i(for)e(a)150 4410 y(description)27 b(of)g(the)h(a)m(v)-5 b(ailable)29 b(formats.)40 b(The)26 b(use)h(of)g Ft(time)f Fu(as)i(a)f(reserv)m(ed)g(w)m(ord)g(p)s(ermits)f(the)h(timing)150 4519 y(of)38 b(shell)g(builtins,)i(shell)e(functions,)i(and)d(pip)s (elines.)63 b(An)38 b(external)h Ft(time)e Fu(command)h(cannot)g(time) 150 4629 y(these)31 b(easily)-8 b(.)275 4765 y(When)29 b(the)h(shell)h(is)f(in)f Fm(posix)g Fu(mo)s(de)h(\(see)h(Section)f -(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(94\),)g Ft(time)150 +(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(96\),)g Ft(time)150 4875 y Fu(ma)m(y)26 b(b)s(e)f(follo)m(w)m(ed)j(b)m(y)d(a)h(newline.)39 b(In)25 b(this)h(case,)i(the)d(shell)h(displa)m(ys)g(the)g(total)h (user)e(and)g(system)h(time)150 4984 y(consumed)33 b(b)m(y)h(the)h @@ -8509,12 +8581,12 @@ TeXDict begin 9 14 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)275 299 y(Eac)m(h)25 b(command)g(in)g(a)g(pip)s(eline)g(is)g(executed)h(in)f (its)g(o)m(wn)h(subshell)e(\(see)i(Section)g(3.7.3)h([Command)150 -408 y(Execution)36 b(En)m(vironmen)m(t],)i(page)e(36\).)58 +408 y(Execution)36 b(En)m(vironmen)m(t],)i(page)e(37\).)58 b(The)36 b(exit)g(status)g(of)g(a)g(pip)s(eline)g(is)f(the)h(exit)h (status)f(of)g(the)150 518 y(last)27 b(command)f(in)f(the)i(pip)s (eline,)f(unless)g(the)g Ft(pipefail)e Fu(option)i(is)g(enabled)g (\(see)h(Section)g(4.3.1)h([The)150 628 y(Set)34 b(Builtin],)j(page)e -(58\).)53 b(If)34 b Ft(pipefail)e Fu(is)i(enabled,)h(the)g(pip)s +(60\).)53 b(If)34 b Ft(pipefail)e Fu(is)i(enabled,)h(the)g(pip)s (eline's)f(return)f(status)h(is)h(the)f(v)-5 b(alue)35 b(of)150 737 y(the)d(last)h(\(righ)m(tmost\))h(command)e(to)h(exit)g (with)e(a)i(non-zero)f(status,)h(or)f(zero)h(if)f(all)h(commands)f @@ -8543,10 +8615,10 @@ Ft(&)p Fu(',)h(the)e(shell)h(executes)h(the)f(command)150 b(is)h(kno)m(wn)f(as)h(executing)h(the)f(command)g(in)f(the)h Fr(bac)m(kground)p Fu(.)150 2355 y(The)f(shell)h(do)s(es)f(not)h(w)m (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 +(status)i(is)g(0)g(\(true\).)40 b(When)150 2464 y(job)d(con)m(trol)i +(is)e(not)g(activ)m(e)j(\(see)e(Chapter)f(7)g([Job)g(Con)m(trol],)j +(page)e(100\),)j(the)d(standard)e(input)g(for)150 2574 +y(async)m(hronous)43 b(commands,)k(in)d(the)f(absence)i(of)f(an)m(y)g (explicit)h(redirections,)j(is)43 b(redirected)h(from)150 2684 y Ft(/dev/null)p Fu(.)275 2816 y(Commands)19 b(separated)j(b)m(y)f (a)g(`)p Ft(;)p Fu(')g(are)h(executed)g(sequen)m(tially;)k(the)21 @@ -8575,7 +8647,7 @@ 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) +(Section)g(3.6)g([Redirections],)j(page)d(32\))g(asso)s(ciated)g(with) 150 4878 y(a)g(comp)s(ound)e(command)i(apply)f(to)h(all)h(commands)e (within)g(that)h(comp)s(ound)e(command)i(unless)150 4988 y(explicitly)32 b(o)m(v)m(erridden.)275 5121 y(In)20 @@ -8638,7 +8710,7 @@ Fj(commands)e Ft(;)j(done)630 3794 y Fu(First,)38 b(the)f(arithmetic)h (expression)e Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38 b(according)f(to)g(the)g(rules)f(de-)630 3904 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g(6.5)g([Shell)g(Arithmetic],)j(page)d -(87\).)77 b(The)42 b(arithmetic)630 4014 y(expression)33 +(89\).)77 b(The)42 b(arithmetic)630 4014 y(expression)33 b Fr(expr2)41 b Fu(is)34 b(then)f(ev)-5 b(aluated)35 b(rep)s(eatedly)f(un)m(til)g(it)g(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 4123 y(time)23 b Fr(expr2)30 @@ -8652,7 +8724,7 @@ b(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f(in)630 4452 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m (y)h(of)g(the)f(expressions)g(is)h(in)m(v)-5 b(alid.)275 4613 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h -(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(41\))g(ma)m(y) +(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(42\))g(ma)m(y) 150 4723 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150 4923 y Fk(3.2.4.2)63 b(Conditional)42 b(Constructs)150 5095 y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h @@ -8687,10 +8759,10 @@ Ft([|)h Fj(pattern)p Ft(]...)m(\))g Fj(command-list)e Ft(;;]...)h(esac)630 1933 y(case)20 b Fu(will)i(selectiv)m(ely)j (execute)e(the)e Fr(command-list)k Fu(corresp)s(onding)20 b(to)i(the)g(\014rst)f Fr(pattern)630 2042 y Fu(that)42 -b(matc)m(hes)g Fr(w)m(ord)p Fu(.)73 b(If)41 b(the)g(shell)g(option)h -Ft(nocasematch)c Fu(\(see)k(the)g(description)f(of)630 +b(matc)m(hes)g Fr(w)m(ord)p Fu(.)73 b(If)41 b(the)g Ft(nocasematch)d +Fu(shell)j(option)h(\(see)g(the)g(description)f(of)630 2152 y Ft(shopt)34 b Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)f -(Builtin],)k(page)e(62\))g(is)g(enabled,)g(the)g(matc)m(h)g(is)630 +(Builtin],)k(page)e(64\))g(is)g(enabled,)g(the)g(matc)m(h)g(is)630 2262 y(p)s(erformed)29 b(without)i(regard)g(to)g(the)g(case)h(of)f (alphab)s(etic)g(c)m(haracters.)44 b(The)30 b(`)p Ft(|)p Fu(')h(is)g(used)630 2371 y(to)e(separate)g(m)m(ultiple)g(patterns,)g @@ -8781,13 +8853,13 @@ b(fname)g(in)i(*;)870 2675 y(do)870 2785 y(echo)f(you)g(picked)f Ft(\)\))630 3425 y Fu(The)33 b(arithmetic)i Fr(expression)f Fu(is)f(ev)-5 b(aluated)35 b(according)g(to)f(the)g(rules)f(describ)s (ed)g(b)s(elo)m(w)630 3535 y(\(see)j(Section)f(6.5)h([Shell)f -(Arithmetic],)i(page)f(87\).)55 b(If)34 b(the)h(v)-5 +(Arithmetic],)i(page)f(89\).)55 b(If)34 b(the)h(v)-5 b(alue)35 b(of)g(the)g(expression)g(is)630 3644 y(non-zero,)27 b(the)f(return)e(status)i(is)g(0;)h(otherwise)f(the)g(return)e(status)i (is)g(1.)39 b(This)25 b(is)g(exactly)630 3754 y(equiv)-5 b(alen)m(t)32 b(to)870 3886 y Ft(let)47 b(")p Fj(expression)p Ft(")630 4019 y Fu(See)25 b(Section)h(4.2)h([Bash)e(Builtins],)i(page)f -(48,)i(for)c(a)i(full)f(description)g(of)g(the)h Ft(let)e +(49,)i(for)c(a)i(full)f(description)g(of)g(the)h Ft(let)e Fu(builtin.)150 4175 y Ft([[...)o(]])870 4308 y([[)47 b Fj(expression)e Ft(]])630 4440 y Fu(Return)25 b(a)h(status)f(of)h(0)g (or)g(1)g(dep)s(ending)e(on)h(the)h(ev)-5 b(aluation)27 @@ -8795,7 +8867,7 @@ b(of)e(the)h(conditional)h(expres-)630 4550 y(sion)j Fr(expression)p Fu(.)41 b(Expressions)29 b(are)i(comp)s(osed)f(of)g (the)h(primaries)f(describ)s(ed)f(b)s(elo)m(w)h(in)630 4659 y(Section)36 b(6.4)h([Bash)f(Conditional)g(Expressions],)h(page)f -(85.)57 b(W)-8 b(ord)36 b(splitting)h(and)e(\014le-)630 +(87.)57 b(W)-8 b(ord)36 b(splitting)h(and)e(\014le-)630 4769 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j(the)f(w)m (ords)g(b)s(et)m(w)m(een)h(the)f Ft([[)g Fu(and)f Ft(]])p Fu(;)i(tilde)630 4879 y(expansion,)e(parameter)g(and)f(v)-5 @@ -8816,13 +8888,13 @@ Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e(righ)m(t) h(of)g(the)g(op)s(erator)630 408 y(is)31 b(considered)g(a)h(pattern)f (and)g(matc)m(hed)h(according)g(to)g(the)g(rules)f(describ)s(ed)f(b)s (elo)m(w)h(in)630 518 y(Section)d(3.5.8.1)h([P)m(attern)f(Matc)m -(hing],)h(page)f(30,)g(as)f(if)g(the)g Ft(extglob)d Fu(shell)j(option)g +(hing],)h(page)f(31,)g(as)f(if)g(the)g Ft(extglob)d Fu(shell)j(option)g (w)m(ere)630 628 y(enabled.)46 b(The)31 b(`)p Ft(=)p Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p Ft(==)p -Fu('.)46 b(If)31 b(the)h(shell)h(option)f Ft(nocasematch)630 -737 y Fu(\(see)42 b(the)f(description)g(of)h Ft(shopt)d +Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630 +737 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d Fu(in)i(Section)h(4.3.2)h([The)e(Shopt)f(Builtin],)45 -b(page)d(62\))630 847 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s +b(page)d(64\))630 847 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s (erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 956 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28 b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(\(`)p Ft(==)p @@ -8842,9 +8914,9 @@ b(is)g(0)g(if)f(the)h(string)g(matc)m(hes)g(the)g(pattern,)g(and)f(1)h (otherwise.)41 b(If)29 b(the)630 1755 y(regular)e(expression)g(is)h (syn)m(tactically)i(incorrect,)f(the)e(conditional)i(expression's)e (return)630 1864 y(v)-5 b(alue)40 b(is)g(2.)68 b(If)39 -b(the)h(shell)f(option)h Ft(nocasematch)d Fu(\(see)j(the)g(description) +b(the)h Ft(nocasematch)c Fu(shell)k(option)g(\(see)g(the)g(description) g(of)f Ft(shopt)f Fu(in)630 1974 y(Section)32 b(4.3.2)g([The)f(Shopt)f -(Builtin],)i(page)g(62\))g(is)f(enabled,)g(the)g(matc)m(h)h(is)e(p)s +(Builtin],)i(page)g(64\))g(is)f(enabled,)g(the)g(matc)m(h)h(is)e(p)s (erformed)630 2084 y(without)36 b(regard)g(to)h(the)f(case)h(of)f (alphab)s(etic)h(c)m(haracters.)59 b(An)m(y)36 b(part)g(of)h(the)f (pattern)630 2193 y(ma)m(y)31 b(b)s(e)f(quoted)h(to)g(force)g(the)g @@ -8909,1918 +8981,2006 @@ y(slashes)27 b(are)g(used)f(b)s(oth)g(b)m(y)h(the)f(shell)h(and)f (regular)h(expressions)g(to)g(remo)m(v)m(e)h(the)f(sp)s(ecial)630 408 y(meaning)h(from)f(the)h(follo)m(wing)i(c)m(haracter.)41 b(The)27 b(follo)m(wing)j(t)m(w)m(o)f(sets)f(of)g(commands)g(are)630 -518 y Fl(not)40 b Fu(equiv)-5 b(alen)m(t:)870 655 y Ft(pattern='\\.') -870 874 y([[)47 b(.)h(=~)f($pattern)e(]])870 984 y([[)i(.)h(=~)f(\\.)g -(]])870 1203 y([[)g(.)h(=~)f("$pattern")e(]])870 1313 -y([[)i(.)h(=~)f('\\.')f(]])630 1450 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h +518 y Fl(not)40 b Fu(equiv)-5 b(alen)m(t:)870 649 y Ft(pattern='\\.') +870 868 y([[)47 b(.)h(=~)f($pattern)e(]])870 978 y([[)i(.)h(=~)f(\\.)g +(]])870 1197 y([[)g(.)h(=~)f("$pattern")e(]])870 1307 +y([[)i(.)h(=~)f('\\.')f(]])630 1438 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h (matc)m(hes)g(will)f(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f -(not,)h(b)s(ecause)f(in)g(the)630 1559 y(second)39 b(t)m(w)m(o)i(the)e +(not,)h(b)s(ecause)f(in)g(the)630 1547 y(second)39 b(t)m(w)m(o)i(the)e (bac)m(kslash)h(will)f(b)s(e)g(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e -(matc)m(hed.)68 b(In)39 b(the)630 1669 y(\014rst)31 b(t)m(w)m(o)h +(matc)m(hed.)68 b(In)39 b(the)630 1657 y(\014rst)31 b(t)m(w)m(o)h (examples,)h(the)e(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g -(meaning)f(from)g(`)p Ft(.)p Fu(',)h(so)g(the)630 1779 +(meaning)f(from)g(`)p Ft(.)p Fu(',)h(so)g(the)630 1766 y(literal)f(`)p Ft(.)p Fu(')e(matc)m(hes.)42 b(If)28 b(the)i(string)f(in)g(the)g(\014rst)g(examples)g(w)m(ere)h(an)m(ything) -g(other)f(than)630 1888 y(`)p Ft(.)p Fu(',)g(sa)m(y)g(`)p +g(other)f(than)630 1876 y(`)p Ft(.)p Fu(',)g(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)g(w)m(ould)g(not)h(matc)m(h,)h(b)s(ecause) e(the)g(quoted)g(`)p Ft(.)p Fu(')h(in)e(the)i(pattern)630 -1998 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 2135 y(Expressions)23 b(ma)m(y)h(b)s(e)e +1986 y(loses)i(its)g(sp)s(ecial)g(meaning)f(of)h(matc)m(hing)g(an)m(y)g +(single)g(c)m(haracter.)630 2116 y(Expressions)23 b(ma)m(y)h(b)s(e)e (com)m(bined)i(using)f(the)h(follo)m(wing)h(op)s(erators,)g(listed)f -(in)f(decreasing)630 2244 y(order)30 b(of)g(precedence:)630 -2409 y Ft(\()g Fj(expression)e Ft(\))1110 2519 y Fu(Returns)i(the)h(v) +(in)f(decreasing)630 2226 y(order)30 b(of)g(precedence:)630 +2378 y Ft(\()g Fj(expression)e Ft(\))1110 2488 y Fu(Returns)i(the)h(v) -5 b(alue)31 b(of)g Fr(expression)p Fu(.)42 b(This)30 b(ma)m(y)i(b)s(e)e(used)g(to)i(o)m(v)m(erride)g(the)1110 -2628 y(normal)e(precedence)h(of)g(op)s(erators.)630 2793 -y Ft(!)f Fj(expression)1110 2902 y Fu(T)-8 b(rue)30 b(if)g -Fr(expression)g Fu(is)h(false.)630 3067 y Fj(expression1)c -Ft(&&)j Fj(expression2)1110 3177 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g +2598 y(normal)e(precedence)h(of)g(op)s(erators.)630 2750 +y Ft(!)f Fj(expression)1110 2860 y Fu(T)-8 b(rue)30 b(if)g +Fr(expression)g Fu(is)h(false.)630 3012 y Fj(expression1)c +Ft(&&)j Fj(expression2)1110 3122 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g Fr(expression1)38 b Fu(and)29 b Fr(expression2)38 b Fu(are)31 -b(true.)630 3341 y Fj(expression1)c Ft(||)j Fj(expression2)1110 -3451 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38 +b(true.)630 3274 y Fj(expression1)c Ft(||)j Fj(expression2)1110 +3384 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38 b Fu(or)30 b Fr(expression2)38 b Fu(is)30 b(true.)630 -3615 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g +3536 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g (ev)-5 b(aluate)27 b Fr(expression2)32 b Fu(if)25 b(the)g(v)-5 -b(alue)25 b(of)g Fr(expression1)630 3725 y Fu(is)30 b(su\016cien)m(t)h +b(alue)25 b(of)g Fr(expression1)630 3646 y Fu(is)30 b(su\016cien)m(t)h (to)g(determine)g(the)f(return)g(v)-5 b(alue)31 b(of)f(the)h(en)m(tire) -g(conditional)h(expression.)150 3929 y Fk(3.2.4.3)63 -b(Grouping)43 b(Commands)150 4076 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m +g(conditional)h(expression.)150 3838 y Fk(3.2.4.3)63 +b(Grouping)43 b(Commands)150 3985 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m (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 4186 +(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 4094 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 4296 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g +b(example,)150 4204 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 4463 y Ft(\(\))870 4600 y(\()47 b Fj(list)g Ft(\))630 -4737 y Fu(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i +150 4356 y Ft(\(\))870 4487 y(\()47 b Fj(list)g Ft(\))630 +4618 y Fu(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i (paren)m(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630 -4847 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 4956 +4728 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d +(Execution)i(En)m(vironmen)m(t],)g(page)f(37\),)630 4837 y(and)d(eac)m(h)h(of)g(the)f(commands)g(in)g Fr(list)j Fu(to)f(b)s(e)d(executed)j(in)e(that)h(subshell.)38 b(Since)28 -b(the)f Fr(list)630 5066 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5 +b(the)f Fr(list)630 4947 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5 b(ariable)29 b(assignmen)m(ts)g(do)g(not)g(remain)f(in)g(e\013ect)j -(after)e(the)630 5175 y(subshell)g(completes.)150 5340 -y Ft({})p eop end +(after)e(the)630 5057 y(subshell)g(completes.)150 5209 +y Ft({})870 5340 y({)47 b Fj(list)p Ft(;)g(})p eop end %%Page: 15 21 TeXDict begin 15 20 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)870 299 -y Ft({)47 b Fj(list)p Ft(;)g(})630 434 y Fu(Placing)30 -b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f(braces)g -(causes)h(the)f(list)h(to)g(b)s(e)f(executed)630 544 -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 653 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275 -815 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j +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 Fr(list)h Fu(is)d(required.)275 +668 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j (there)e(is)f(a)g(subtle)g(di\013erence)h(b)s(et)m(w)m(een)f(these)150 -925 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67 +778 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67 b(The)39 b(braces)g(are)h Ft(reserved)28 b(words)p Fu(,)40 -b(so)g(they)f(m)m(ust)150 1034 y(b)s(e)d(separated)h(from)f(the)g +b(so)g(they)f(m)m(ust)150 887 y(b)s(e)d(separated)h(from)f(the)g Fr(list)j Fu(b)m(y)e Ft(blank)p Fu(s)e(or)h(other)h(shell)f(metac)m -(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 1144 +(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 997 y Ft(operators)p Fu(,)23 b(and)h(are)g(recognized)i(as)e(separate)i (tok)m(ens)f(b)m(y)f(the)g(shell)h(ev)m(en)g(if)f(they)g(are)h(not)f -(separated)150 1254 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.) -275 1390 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h +(separated)150 1107 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.) +275 1236 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h (constructs)g(is)f(the)h(exit)g(status)f(of)h Fr(list)p -Fu(.)150 1591 y Fk(3.2.5)63 b(Copro)s(cesses)150 1738 +Fu(.)150 1426 y Fk(3.2.5)63 b(Copro)s(cesses)150 1573 y Fu(A)37 b Ft(coprocess)c Fu(is)k(a)g(shell)f(command)h(preceded)f(b)m (y)g(the)h Ft(coproc)d Fu(reserv)m(ed)j(w)m(ord.)59 b(A)36 -b(copro)s(cess)h(is)150 1847 y(executed)g(async)m(hronously)g(in)f(a)h +b(copro)s(cess)h(is)150 1683 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 1957 y(`)p Ft(&)p Fu(')d(con)m(trol)h(op)s(erator,)g +(with)g(the)150 1793 y(`)p Ft(&)p Fu(')d(con)m(trol)h(op)s(erator,)g (with)f(a)g(t)m(w)m(o-w)m(a)m(y)i(pip)s(e)d(established)h(b)s(et)m(w)m -(een)h(the)f(executing)h(shell)f(and)f(the)150 2066 y(copro)s(cess.)275 -2203 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390 -2339 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g -Ft([)p Fj(redirections)p Ft(])150 2475 y Fu(This)39 b(creates)j(a)e +(een)h(the)f(executing)h(shell)f(and)f(the)150 1902 y(copro)s(cess.)275 +2032 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390 +2162 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g +Ft([)p Fj(redirections)p Ft(])150 2292 y Fu(This)39 b(creates)j(a)e (copro)s(cess)h(named)f Fr(NAME)p Fu(.)70 b(If)40 b Fr(NAME)46 b Fu(is)40 b(not)g(supplied,)i(the)e(default)h(name)f(is)150 -2584 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23 +2401 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23 b(not)g(b)s(e)e(supplied)h(if)g Fr(command)k Fu(is)d(a)g(simple)f -(command)g(\(see)i(Section)f(3.2.1)150 2694 y([Simple)39 +(command)g(\(see)i(Section)f(3.2.1)150 2511 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 -2804 y(command.)275 2940 y(When)j(the)i(copro)s(cess)f(is)g(executed,) +2621 y(command.)275 2750 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 3049 y([Arra)m(ys],)32 -b(page)g(89\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h +b(ariable)44 b(\(see)g(Section)g(6.7)150 2860 y([Arra)m(ys],)32 +b(page)g(91\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h (executing)g(shell.)44 b(The)31 b(standard)f(output)150 -3159 y(of)g Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to)i +2970 y(of)g Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to)i (a)f(\014le)g(descriptor)f(in)g(the)h(executing)h(shell,)f(and)g(that)g -(\014le)150 3269 y(descriptor)i(is)f(assigned)h(to)g +(\014le)150 3079 y(descriptor)i(is)f(assigned)h(to)g Ft(NAME)p Fu([0].)45 b(The)31 b(standard)g(input)f(of)i Fr(command)j Fu(is)d(connected)h(via)f(a)g(pip)s(e)150 -3378 y(to)39 b(a)g(\014le)f(descriptor)g(in)g(the)g(executing)i(shell,) +3189 y(to)39 b(a)g(\014le)f(descriptor)g(in)g(the)g(executing)i(shell,) g(and)e(that)h(\014le)f(descriptor)g(is)g(assigned)h(to)g -Ft(NAME)p Fu([1].)150 3488 y(This)31 b(pip)s(e)g(is)h(established)g(b)s +Ft(NAME)p Fu([1].)150 3298 y(This)31 b(pip)s(e)g(is)h(established)g(b)s (efore)g(an)m(y)g(redirections)g(sp)s(eci\014ed)g(b)m(y)f(the)i -(command)e(\(see)i(Section)g(3.6)150 3597 y([Redirections],)25 -b(page)e(31\).)39 b(The)21 b(\014le)h(descriptors)g(can)g(b)s(e)f +(command)e(\(see)i(Section)g(3.6)150 3408 y([Redirections],)25 +b(page)e(32\).)39 b(The)21 b(\014le)h(descriptors)g(can)g(b)s(e)f (utilized)i(as)f(argumen)m(ts)h(to)f(shell)g(commands)150 -3707 y(and)33 b(redirections)g(using)g(standard)f(w)m(ord)h +3518 y(and)33 b(redirections)g(using)g(standard)f(w)m(ord)h (expansions.)49 b(The)33 b(\014le)g(descriptors)g(are)g(not)h(a)m(v)-5 -b(ailable)35 b(in)150 3817 y(subshells.)275 3953 y(The)27 +b(ailable)35 b(in)150 3627 y(subshells.)275 3757 y(The)27 b(pro)s(cess)h(ID)h(of)f(the)h(shell)f(spa)m(wned)g(to)h(execute)h(the) e(copro)s(cess)h(is)f(a)m(v)-5 b(ailable)31 b(as)d(the)h(v)-5 -b(alue)29 b(of)150 4062 y(the)k(v)-5 b(ariable)33 b Ft(NAME)p -850 4062 28 4 v 39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g +b(alue)29 b(of)150 3867 y(the)k(v)-5 b(ariable)33 b Ft(NAME)p +850 3867 28 4 v 39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g (ma)m(y)h(b)s(e)f(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 -4172 y(to)e(terminate.)275 4308 y(Since)20 b(the)g(copro)s(cess)h(is)g +3976 y(to)e(terminate.)275 4106 y(Since)20 b(the)g(copro)s(cess)h(is)g (created)g(as)g(an)f(async)m(hronous)g(command,)i(the)f -Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 4418 y(returns)29 +Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 4216 y(returns)29 b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h(copro)s(cess)g(is)f -(the)h(exit)g(status)g(of)f Fr(command)p Fu(.)150 4619 -y Fk(3.2.6)63 b(GNU)41 b(P)m(arallel)150 4765 y Fu(There)30 +(the)h(exit)g(status)g(of)f Fr(command)p Fu(.)150 4406 +y Fk(3.2.6)63 b(GNU)41 b(P)m(arallel)150 4553 y Fu(There)30 b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g(parallel)h(that)h(are)e (not)h(built)g(in)m(to)g(Bash.)41 b(GNU)31 b(P)m(arallel)i(is)150 -4875 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 5011 +4662 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 4792 y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j(can)d(b)s(e)g (used)g(to)h(build)f(and)g(run)f(commands)h(in)h(parallel.)150 -5121 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h(command)f(with)g +4902 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 5230 y(usernames,)27 b(hostnames,)h(or)e(lines)h +(\014lenames,)150 5011 y(usernames,)27 b(hostnames,)h(or)e(lines)h (read)f(from)h(\014les.)39 b(GNU)27 b(P)m(arallel)i(pro)m(vides)d -(shorthand)g(references)150 5340 y(to)38 b(man)m(y)g(of)g(the)g(most)g +(shorthand)g(references)150 5121 y(to)38 b(man)m(y)g(of)g(the)g(most)g (common)g(op)s(erations)g(\(input)f(lines,)j(v)-5 b(arious)38 -b(p)s(ortions)f(of)h(the)g(input)e(line,)p eop end +b(p)s(ortions)f(of)h(the)g(input)e(line,)150 5230 y(di\013eren)m(t)f(w) +m(a)m(ys)h(to)f(sp)s(ecify)f(the)h(input)f(source,)i(and)e(so)h(on\).) +54 b(P)m(arallel)36 b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150 +5340 y(commands)30 b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f +(di\013eren)m(t)g(instances)g(of)g(Bash.)p eop end %%Page: 16 22 TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)150 299 -y(di\013eren)m(t)35 b(w)m(a)m(ys)h(to)f(sp)s(ecify)f(the)h(input)f -(source,)i(and)e(so)h(on\).)54 b(P)m(arallel)36 b(can)f(replace)h -Ft(xargs)d Fu(or)i(feed)150 408 y(commands)30 b(from)g(its)h(input)e -(sources)h(to)i(sev)m(eral)f(di\013eren)m(t)g(instances)g(of)g(Bash.) -275 553 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 663 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s -(duction)i(to)g(its)g(use.)275 807 y(F)-8 b(or)37 b(example,)i(it)e(is) -f(easy)h(to)g(replace)h Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g -(\014les)f(in)h(the)f(curren)m(t)g(directory)150 917 -y(and)30 b(its)h(sub)s(directories:)390 1061 y Ft(find)47 -b(.)g(-type)f(f)i(-name)e('*.html')g(-print)g(|)h(parallel)f(gzip)150 -1205 y Fu(If)30 b(y)m(ou)h(need)f(to)h(protect)h(sp)s(ecial)f(c)m -(haracters)g(suc)m(h)g(as)f(newlines)h(in)f(\014le)g(names,)h(use)f -(\014nd's)f Ft(-print0)150 1315 y Fu(option)i(and)f(parallel's)h -Ft(-0)f Fu(option.)275 1460 y(Y)-8 b(ou)34 b(can)g(use)f(P)m(arallel)j -(to)e(mo)m(v)m(e)h(\014les)f(from)f(the)h(curren)m(t)f(directory)h -(when)f(the)h(n)m(um)m(b)s(er)e(of)i(\014les)150 1569 -y(is)c(to)s(o)i(large)f(to)g(pro)s(cess)f(with)g(one)h -Ft(mv)f Fu(in)m(v)m(o)s(cation:)390 1714 y Ft(ls)47 b(|)h(parallel)d -(mv)i({})h(destdir)275 1858 y Fu(As)28 b(y)m(ou)h(can)g(see,)g(the)g -Fi({})g Fu(is)g(replaced)g(with)f(eac)m(h)i(line)f(read)f(from)g -(standard)g(input.)39 b(While)29 b(using)150 1968 y Ft(ls)g -Fu(will)h(w)m(ork)g(in)f(most)h(instances,)h(it)f(is)g(not)g -(su\016cien)m(t)g(to)h(deal)f(with)f(all)i(\014lenames.)40 -b(If)30 b(y)m(ou)g(need)f(to)150 2077 y(accommo)s(date)j(sp)s(ecial)f -(c)m(haracters)h(in)e(\014lenames,)h(y)m(ou)f(can)h(use)390 -2222 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f(-name)f('.*')h(-print0)f(|)h -(parallel)f(-0)h(mv)g({})g(destdir)150 2366 y Fu(as)31 -b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 2511 y(This)e(will)i(run)e(as)h -(man)m(y)h Ft(mv)e Fu(commands)h(as)h(there)f(are)h(\014les)f(in)h(the) -f(curren)m(t)g(directory)-8 b(.)42 b(Y)-8 b(ou)31 b(can)150 -2620 y(em)m(ulate)h(a)f(parallel)g Ft(xargs)e Fu(b)m(y)h(adding)g(the)h -Ft(-X)f Fu(option:)390 2765 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f -(-name)f('.*')h(-print0)f(|)h(parallel)f(-0)h(-X)g(mv)g({})g(destdir) -275 2909 y Fu(GNU)31 b(P)m(arallel)i(can)e(replace)h(certain)g(common)g -(idioms)f(that)g(op)s(erate)h(on)f(lines)g(read)g(from)f(a)i(\014le)150 -3019 y(\(in)e(this)h(case,)g(\014lenames)g(listed)g(one)f(p)s(er)g -(line\):)390 3163 y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 -3273 y(do-something1)d("$x")j("config-$x")390 3382 y(do-something2)d(<) -k("$x")390 3492 y(done)f(<)g(file)g(|)g(process-output)150 -3636 y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g -(of)g(lam)m(b)s(das:)390 3781 y Ft(cat)47 b(list)g(|)g(parallel)f +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)275 299 +y(F)-8 b(or)33 b(a)g(complete)h(description,)g(refer)e(to)i(the)f(GNU)g +(P)m(arallel)i(do)s(cumen)m(tation.)48 b(A)33 b(few)f(examples)150 +408 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s(duction)i(to)g(its)g +(use.)275 541 y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g +(replace)h Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g(\014les)f(in)h +(the)f(curren)m(t)g(directory)150 650 y(and)30 b(its)h(sub)s +(directories:)390 783 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html')g +(-print)g(|)h(parallel)f(gzip)150 915 y Fu(If)30 b(y)m(ou)h(need)f(to)h +(protect)h(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h(in)f +(\014le)g(names,)h(use)f(\014nd's)f Ft(-print0)150 1025 +y Fu(option)i(and)f(parallel's)h Ft(-0)f Fu(option.)275 +1157 y(Y)-8 b(ou)34 b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h +(\014les)f(from)f(the)h(curren)m(t)f(directory)h(when)f(the)h(n)m(um)m +(b)s(er)e(of)i(\014les)150 1267 y(is)c(to)s(o)i(large)f(to)g(pro)s +(cess)f(with)g(one)h Ft(mv)f Fu(in)m(v)m(o)s(cation:)390 +1399 y Ft(ls)47 b(|)h(parallel)d(mv)i({})h(destdir)275 +1532 y Fu(As)28 b(y)m(ou)h(can)g(see,)g(the)g Fi({})g +Fu(is)g(replaced)g(with)f(eac)m(h)i(line)f(read)f(from)g(standard)g +(input.)39 b(While)29 b(using)150 1641 y Ft(ls)g Fu(will)h(w)m(ork)g +(in)f(most)h(instances,)h(it)f(is)g(not)g(su\016cien)m(t)g(to)h(deal)f +(with)f(all)i(\014lenames.)40 b(If)30 b(y)m(ou)g(need)f(to)150 +1751 y(accommo)s(date)j(sp)s(ecial)f(c)m(haracters)h(in)e(\014lenames,) +h(y)m(ou)f(can)h(use)390 1883 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f +(-name)f('.*')h(-print0)f(|)h(parallel)f(-0)h(mv)g({})g(destdir)150 +2016 y Fu(as)31 b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 +2148 y(This)e(will)i(run)e(as)h(man)m(y)h Ft(mv)e Fu(commands)h(as)h +(there)f(are)h(\014les)f(in)h(the)f(curren)m(t)g(directory)-8 +b(.)42 b(Y)-8 b(ou)31 b(can)150 2258 y(em)m(ulate)h(a)f(parallel)g +Ft(xargs)e Fu(b)m(y)h(adding)g(the)h Ft(-X)f Fu(option:)390 +2390 y Ft(find)47 b(.)g(-depth)f(1)i(\\!)f(-name)f('.*')h(-print0)f(|)h +(parallel)f(-0)h(-X)g(mv)g({})g(destdir)275 2523 y Fu(GNU)31 +b(P)m(arallel)i(can)e(replace)h(certain)g(common)g(idioms)f(that)g(op)s +(erate)h(on)f(lines)g(read)g(from)f(a)i(\014le)150 2632 +y(\(in)e(this)h(case,)g(\014lenames)g(listed)g(one)f(p)s(er)g(line\):) +390 2765 y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 +2874 y(do-something1)d("$x")j("config-$x")390 2984 y(do-something2)d(<) +k("$x")390 3093 y(done)f(<)g(file)g(|)g(process-output)150 +3226 y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g +(of)g(lam)m(b)s(das:)390 3358 y Ft(cat)47 b(list)g(|)g(parallel)f ("do-something1)d({})48 b(config-{})d(;)i(do-something2)e(<)i({}")g(|)g -(process-output)275 3925 y Fu(P)m(arallel)31 b(pro)m(vides)e(a)h +(process-output)275 3491 y Fu(P)m(arallel)31 b(pro)m(vides)e(a)h (built-in)g(mec)m(hanism)g(to)g(remo)m(v)m(e)h(\014lename)e -(extensions,)i(whic)m(h)e(lends)g(itself)150 4035 y(to)i(batc)m(h)g -(\014le)g(transformations)f(or)g(renaming:)390 4179 y +(extensions,)i(whic)m(h)e(lends)g(itself)150 3600 y(to)i(batc)m(h)g +(\014le)g(transformations)f(or)g(renaming:)390 3733 y Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g -(>{.}.bz2)e(&&)j(rm)f({}")150 4324 y Fu(This)28 b(will)i(recompress)e +(>{.}.bz2)e(&&)j(rm)f({}")150 3865 y Fu(This)28 b(will)i(recompress)e (all)i(\014les)f(in)g(the)g(curren)m(t)g(directory)g(with)g(names)g -(ending)f(in)h(.gz)h(using)f(bzip2,)150 4433 y(running)37 +(ending)f(in)h(.gz)h(using)f(bzip2,)150 3975 y(running)37 b(one)i(job)f(p)s(er)f(CPU)h(\(-j)p Ft(+)p Fu(0\))i(in)e(parallel.)66 b(\(W)-8 b(e)40 b(use)e Ft(ls)g Fu(for)h(brevit)m(y)g(here;)j(using)c -Ft(find)g Fu(as)150 4543 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h +Ft(find)g Fu(as)150 4084 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h (the)h(face)g(of)f(\014lenames)h(con)m(taining)g(unexp)s(ected)f(c)m -(haracters.\))57 b(P)m(arallel)150 4653 y(can)31 b(tak)m(e)h(argumen)m +(haracters.\))57 b(P)m(arallel)150 4194 y(can)31 b(tak)m(e)h(argumen)m (ts)e(from)g(the)h(command)f(line;)h(the)f(ab)s(o)m(v)m(e)i(can)f(also) -g(b)s(e)f(written)g(as)390 4797 y Ft(parallel)46 b("zcat)g({})h(|)h -(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)275 4941 +g(b)s(e)f(written)g(as)390 4326 y Ft(parallel)46 b("zcat)g({})h(|)h +(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)275 4459 y Fu(If)24 b(a)i(command)f(generates)h(output,)g(y)m(ou)g(ma)m(y)f(w)m (an)m(t)h(to)g(preserv)m(e)g(the)f(input)f(order)h(in)g(the)g(output.) -150 5051 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390 -5196 y Ft({)47 b(echo)g(foss.org.my)e(;)i(echo)g(debian.org;)e(echo)h +150 4568 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390 +4701 y Ft({)47 b(echo)g(foss.org.my)e(;)i(echo)g(debian.org;)e(echo)h (freenetproject.org;)d(})k(|)h(parallel)d(traceroute)150 -5340 y Fu(will)31 b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m +4833 y Fu(will)31 b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m (v)m(o)s(cation)h(that)e(\014nishes)e(\014rst.)40 b(Adding)30 -b(the)g Ft(-k)g Fu(option)p eop end +b(the)g Ft(-k)g Fu(option)390 4966 y Ft({)47 b(echo)g(foss.org.my)e(;)i +(echo)g(debian.org;)e(echo)h(freenetproject.org;)d(})k(|)h(parallel)d +(-k)i(traceroute)150 5098 y Fu(will)31 b(ensure)e(that)i(the)g(output)f +(of)g Ft(traceroute)e(foss.org.my)f Fu(is)k(displa)m(y)m(ed)g(\014rst.) +275 5230 y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i +(run)d(a)i(sequence)h(of)f(shell)g(commands)f(in)h(parallel,)h(similar) +f(to)150 5340 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 +b(It)35 b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f +(\014lenames,)h(create)g(a)g(series)f(of)g(shell)p eop +end %%Page: 17 23 TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)390 299 -y Ft({)47 b(echo)g(foss.org.my)e(;)i(echo)g(debian.org;)e(echo)h -(freenetproject.org;)d(})k(|)h(parallel)d(-k)i(traceroute)150 -430 y Fu(will)31 b(ensure)e(that)i(the)g(output)f(of)g -Ft(traceroute)e(foss.org.my)f Fu(is)k(displa)m(y)m(ed)g(\014rst.)275 -560 y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i(run)d -(a)i(sequence)h(of)f(shell)g(commands)f(in)h(parallel,)h(similar)f(to) -150 670 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35 -b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f(\014lenames,)h -(create)g(a)g(series)f(of)g(shell)150 779 y(commands)27 -b(to)h(op)s(erate)h(on)e(them,)h(and)f(feed)h(that)g(list)g(of)g -(commnds)e(to)j(a)f(shell.)40 b(P)m(arallel)29 b(can)f(sp)s(eed)150 -889 y(this)i(up.)40 b(Assuming)30 b(that)h Ft(file)e -Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h(one)f(p)s(er)g -(line,)390 1020 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150 -1150 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)150 299 +y(commands)27 b(to)h(op)s(erate)h(on)e(them,)h(and)f(feed)h(that)g +(list)g(of)g(commnds)e(to)j(a)f(shell.)40 b(P)m(arallel)29 +b(can)f(sp)s(eed)150 408 y(this)i(up.)40 b(Assuming)30 +b(that)h Ft(file)e Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h +(one)f(p)s(er)g(line,)390 540 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150 +672 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h (shell)g(\(since)g(no)f(explicit)i(command)e(is)h(supplied)e(as)i(an) -150 1260 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h -(jobs)f(at)h(a)g(time.)150 1484 y Fs(3.3)68 b(Shell)45 -b(F)-11 b(unctions)150 1644 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m +150 781 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h +(jobs)f(at)h(a)g(time.)150 1016 y Fs(3.3)68 b(Shell)45 +b(F)-11 b(unctions)150 1175 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m (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 1753 y(the)f(group.)55 b(They)35 +(single)g(name)g(for)150 1285 y(the)f(group.)55 b(They)35 b(are)g(executed)h(just)f(lik)m(e)h(a)g Ft(")p Fu(regular)p Ft(")f Fu(command.)54 b(When)35 b(the)h(name)f(of)g(a)h(shell)150 -1863 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e +1395 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 -1973 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25 +1504 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 2082 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m -(terpret)g(them.)275 2213 y(F)-8 b(unctions)30 b(are)h(declared)g -(using)f(this)g(syn)m(tax:)390 2343 y Fj(name)47 b Ft(\(\))g +(text;)j(no)c(new)150 1614 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m +(terpret)g(them.)275 1745 y(F)-8 b(unctions)30 b(are)h(declared)g +(using)f(this)g(syn)m(tax:)390 1877 y Fj(name)47 b Ft(\(\))g Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275 -2474 y Fu(or)390 2605 y Ft(function)i Fj(name)g Ft([\(\)])h +2008 y Fu(or)390 2140 y Ft(function)i Fj(name)g Ft([\(\)])h Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275 -2735 y Fu(This)31 b(de\014nes)h(a)h(shell)g(function)g(named)f +2271 y Fu(This)31 b(de\014nes)h(a)h(shell)g(function)g(named)f Fr(name)p Fu(.)48 b(The)32 b(reserv)m(ed)h(w)m(ord)f -Ft(function)f Fu(is)h(optional.)49 b(If)150 2845 y(the)39 +Ft(function)f Fu(is)h(optional.)49 b(If)150 2381 y(the)39 b Ft(function)f Fu(reserv)m(ed)h(w)m(ord)g(is)g(supplied,)i(the)e (paren)m(theses)h(are)f(optional.)69 b(The)39 b Fr(b)s(o)s(dy)45 -b Fu(of)40 b(the)150 2954 y(function)h(is)h(the)g(comp)s(ound)e +b Fu(of)40 b(the)150 2491 y(function)h(is)h(the)g(comp)s(ound)e (command)h Fr(comp)s(ound-command)j Fu(\(see)e(Section)h(3.2.4)g([Comp) -s(ound)150 3064 y(Commands],)33 b(page)h(9\).)49 b(That)33 +s(ound)150 2600 y(Commands],)33 b(page)h(9\).)49 b(That)33 b(command)f(is)h(usually)g(a)g Fr(list)j Fu(enclosed)e(b)s(et)m(w)m (een)f Fi({)h Fu(and)e Fi(})p Fu(,)i(but)e(ma)m(y)150 -3174 y(b)s(e)26 b(an)m(y)i(comp)s(ound)d(command)i(listed)h(ab)s(o)m(v) -m(e.)41 b Fr(comp)s(ound-command)29 b Fu(is)e(executed)h(whenev)m(er)f -Fr(name)150 3283 y Fu(is)k(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 Fm(posix)g -Fu(mo)s(de)g(\(see)i(Section)f(6.11)150 3393 y([Bash)36 -b(POSIX)f(Mo)s(de],)j(page)e(94\),)j Fr(name)i Fu(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 3502 y(\(see)24 b(Section)g(4.4)g([Sp)s(ecial)g -(Builtins],)h(page)f(68\).)40 b(An)m(y)23 b(redirections)h(\(see)g -(Section)g(3.6)g([Redirections],)150 3612 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 3743 y(A)44 b(function)g -(de\014nition)h(ma)m(y)g(b)s(e)f(deleted)h(using)f(the)h -Ft(-f)f Fu(option)h(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)150 -3852 y(Section)31 b(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(41\).) -275 3983 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 4092 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 4202 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 -4333 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 -4442 y(the)38 b(b)s(o)s(dy)d(of)j(the)f(function)g(m)m(ust)g(b)s(e)g -(separated)h(from)f(the)g(b)s(o)s(dy)f(b)m(y)h Ft(blank)p -Fu(s)f(or)h(newlines.)62 b(This)150 4552 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 4661 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 4771 -y(using)i(the)g(braces,)h(the)g Fr(list)i Fu(m)m(ust)d(b)s(e)g -(terminated)h(b)m(y)f(a)h(semicolon,)h(a)e(`)p Ft(&)p -Fu(',)h(or)g(a)f(newline.)275 4902 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 5011 y(rameters)42 b(during)e(its)i +2710 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v) +m(e,)j(with)d(one)g(exception:)60 b(If)39 b(the)h Ft(function)e +Fu(reserv)m(ed)150 2819 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m +(theses)h(are)f(not)h(supplied,)g(the)f(braces)g(are)h(required.)63 +b Fr(comp)s(ound-)150 2929 y(command)39 b Fu(is)c(executed)h(whenev)m +(er)f Fr(name)41 b Fu(is)35 b(sp)s(eci\014ed)g(as)g(the)h(name)f(of)h +(a)f(command.)56 b(When)35 b(the)150 3038 y(shell)d(is)h(in)f +Fm(posix)f Fu(mo)s(de)h(\(see)h(Section)g(6.11)h([Bash)f(POSIX)e(Mo)s +(de],)j(page)f(96\),)h Fr(name)j Fu(ma)m(y)c(not)g(b)s(e)150 +3148 y(the)k(same)g(as)g(one)g(of)g(the)f(sp)s(ecial)i(builtins)e +(\(see)h(Section)h(4.4)g([Sp)s(ecial)f(Builtins],)i(page)e(70\).)61 +b(An)m(y)150 3258 y(redirections)32 b(\(see)g(Section)h(3.6)f +([Redirections],)i(page)e(32\))h(asso)s(ciated)g(with)e(the)h(shell)f +(function)h(are)150 3367 y(p)s(erformed)d(when)g(the)i(function)f(is)g +(executed.)275 3499 y(A)44 b(function)g(de\014nition)h(ma)m(y)g(b)s(e)f +(deleted)h(using)f(the)h Ft(-f)f Fu(option)h(to)g(the)g +Ft(unset)e Fu(builtin)h(\(see)150 3608 y(Section)31 b(4.1)h([Bourne)e +(Shell)g(Builtins],)h(page)h(42\).)275 3740 y(The)26 +b(exit)i(status)g(of)f(a)h(function)f(de\014nition)g(is)g(zero)h +(unless)f(a)g(syn)m(tax)h(error)f(o)s(ccurs)g(or)g(a)h(readonly)150 +3849 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46 +b(When)32 b(executed,)h(the)f(exit)h(status)g(of)f(a)g(function)150 +3959 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed) +i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 4091 y(Note)22 b(that)f(for)f +(historical)i(reasons,)h(in)e(the)g(most)g(common)g(usage)g(the)g +(curly)f(braces)h(that)g(surround)150 4200 y(the)38 b(b)s(o)s(dy)d(of)j +(the)f(function)g(m)m(ust)g(b)s(e)g(separated)h(from)f(the)g(b)s(o)s +(dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)150 +4310 y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m +(ords)g(and)f(are)i(only)f(recognized)i(as)e(suc)m(h)g(when)f(they)i +(are)150 4419 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e +(whitespace)h(or)g(another)g(shell)g(metac)m(haracter.)41 +b(Also,)28 b(when)150 4529 y(using)i(the)g(braces,)h(the)g +Fr(list)i Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a) +e(`)p Ft(&)p Fu(',)h(or)g(a)f(newline.)275 4660 y(When)i(a)i(function)f +(is)g(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome) +g(the)h(p)s(ositional)g(pa-)150 4770 y(rameters)42 b(during)e(its)i (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 5121 y(sp)s(ecial)37 +(arameters],)i(page)c(19\).)75 b(The)150 4880 y(sp)s(ecial)37 b(parameter)f(`)p Ft(#)p Fu(')g(that)h(expands)e(to)i(the)f(n)m(um)m(b) s(er)f(of)h(p)s(ositional)h(parameters)f(is)g(up)s(dated)f(to)150 -5230 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35 +4989 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35 b(parameter)h Ft(0)f Fu(is)g(unc)m(hanged.)54 b(The)35 -b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 5340 +b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 5099 y Fu(v)-5 b(ariable)31 b(is)g(set)f(to)i(the)e(name)h(of)f(the)h -(function)f(while)g(the)h(function)f(is)g(executing.)p -eop end +(function)f(while)g(the)h(function)f(is)g(executing.)275 +5230 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en) +m(vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g +(and)150 5340 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 +b(the)36 b Ft(DEBUG)d Fu(and)h Ft(RETURN)g Fu(traps)g(are)i(not)f +(inherited)f(unless)h(the)p eop end %%Page: 18 24 TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)275 299 -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 408 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 -b(the)36 b Ft(DEBUG)d Fu(and)h Ft(RETURN)g Fu(traps)g(are)i(not)f -(inherited)f(unless)h(the)150 518 y(function)26 b(has)g(b)s(een)f(giv)m -(en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g Ft(declare)e -Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150 628 y Fu(option)f(has)e -(b)s(een)h(enabled)g(with)g(the)g Ft(set)f Fu(builtin,)i(\(in)f(whic)m -(h)f(case)j(all)f(functions)e(inherit)h(the)g Ft(DEBUG)150 -737 y Fu(and)33 b Ft(RETURN)f Fu(traps\),)j(and)e(the)h -Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f(unless)g(the)h -Ft(-o)c(errtrace)h Fu(shell)j(option)150 847 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(41,)i(for)c(the)i(description)f(of)150 956 y(the)c -Ft(trap)e Fu(builtin.)275 1095 y(The)38 b Ft(FUNCNEST)f -Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)f(v)-5 -b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150 -1204 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)150 299 +y(function)26 b(has)g(b)s(een)f(giv)m(en)i(the)g Ft(trace)d +Fu(attribute)j(using)f(the)g Ft(declare)e Fu(builtin)i(or)g(the)h +Ft(-o)i(functrace)150 408 y Fu(option)f(has)e(b)s(een)h(enabled)g(with) +g(the)g Ft(set)f Fu(builtin,)i(\(in)f(whic)m(h)f(case)j(all)f +(functions)e(inherit)h(the)g Ft(DEBUG)150 518 y Fu(and)33 +b Ft(RETURN)f Fu(traps\),)j(and)e(the)h Ft(ERR)f Fu(trap)h(is)g(not)g +(inherited)f(unless)g(the)h Ft(-o)c(errtrace)h Fu(shell)j(option)150 +628 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f +(Shell)g(Builtins],)i(page)f(42,)i(for)c(the)i(description)f(of)150 +737 y(the)c Ft(trap)e Fu(builtin.)275 885 y(The)38 b +Ft(FUNCNEST)f Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)f +(v)-5 b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150 +995 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 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 1314 y(to)31 b(ab)s(ort.)275 -1452 y(If)37 b(the)g(builtin)g(command)h Ft(return)d +(en)m(tire)g(command)150 1105 y(to)31 b(ab)s(ort.)275 +1253 y(If)37 b(the)g(builtin)g(command)h Ft(return)d Fu(is)j(executed)g(in)g(a)g(function,)h(the)e(function)h(completes)h -(and)150 1562 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f +(and)150 1362 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 1672 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) +(ciated)150 1472 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) g(b)s(efore)f(execution)i(resumes.)57 b(When)37 b(a)f(function)g -(completes,)150 1781 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s +(completes,)150 1581 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s (ositional)h(parameters)f(and)g(the)g(sp)s(ecial)h(parameter)f(`)p -Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 1891 y(v)-5 +Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 1691 y(v)-5 b(alues)26 b(they)f(had)g(prior)f(to)i(the)g(function's)f(execution.)40 b(If)25 b(a)h(n)m(umeric)f(argumen)m(t)h(is)f(giv)m(en)h(to)g -Ft(return)p Fu(,)150 2000 y(that)j(is)g(the)f(function's)h(return)e +Ft(return)p Fu(,)150 1801 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 2110 y(of)h(the)f(last)h(command)f(executed)i(b)s -(efore)e(the)g Ft(return)p Fu(.)275 2248 y(V)-8 b(ariables)31 +(exit)h(status)150 1910 y(of)h(the)f(last)h(command)f(executed)i(b)s +(efore)e(the)g Ft(return)p Fu(.)275 2058 y(V)-8 b(ariables)31 b(lo)s(cal)g(to)f(the)g(function)f(ma)m(y)i(b)s(e)e(declared)h(with)f (the)h Ft(local)f Fu(builtin.)40 b(These)29 b(v)-5 b(ariables)150 -2358 y(are)31 b(visible)g(only)f(to)h(the)g(function)f(and)g(the)g -(commands)g(it)h(in)m(v)m(ok)m(es.)275 2497 y(F)-8 b(unction)51 +2168 y(are)31 b(visible)g(only)f(to)h(the)g(function)f(and)g(the)g +(commands)g(it)h(in)m(v)m(ok)m(es.)275 2316 y(F)-8 b(unction)51 b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s(e)e(listed)h(with)f(the)h -Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 2606 y +Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 2426 y Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g(command)h(\(see)h(Section)g -(4.2)g([Bash)f(Builtins],)i(page)f(48\).)59 b(The)35 -b Ft(-F)h Fu(option)g(to)150 2716 y Ft(declare)e Fu(or)i +(4.2)g([Bash)f(Builtins],)i(page)f(49\).)59 b(The)35 +b Ft(-F)h Fu(option)g(to)150 2535 y Ft(declare)e Fu(or)i Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g(\(and)g -(optionally)h(the)f(source)g(\014le)h(and)150 2825 y(line)c(n)m(um)m(b) +(optionally)h(the)f(source)g(\014le)h(and)150 2645 y(line)c(n)m(um)m(b) s(er,)g(if)f(the)h Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled\).)49 b(F)-8 b(unctions)33 b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150 -2935 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f +2754 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f (with)h(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d -Fu(builtin)i(\(see)150 3044 y(Section)c(4.1)g([Bourne)f(Shell)g -(Builtins],)i(page)f(41\).)47 b(Note)33 b(that)g(shell)f(functions)g -(and)f(v)-5 b(ariables)33 b(with)150 3154 y(the)d(same)g(name)g(ma)m(y) +Fu(builtin)i(\(see)150 2864 y(Section)c(4.1)g([Bourne)f(Shell)g +(Builtins],)i(page)f(42\).)47 b(Note)33 b(that)g(shell)f(functions)g +(and)f(v)-5 b(ariables)33 b(with)150 2973 y(the)d(same)g(name)g(ma)m(y) g(result)g(in)g(m)m(ultiple)g(iden)m(tically-named)i(en)m(tries)f(in)e -(the)h(en)m(vironmen)m(t)g(passed)150 3264 y(to)h(the)g(shell's)f(c)m +(the)h(en)m(vironmen)m(t)g(passed)150 3083 y(to)h(the)g(shell's)f(c)m (hildren.)41 b(Care)30 b(should)g(b)s(e)f(tak)m(en)j(in)e(cases)h -(where)f(this)g(ma)m(y)h(cause)g(a)g(problem.)275 3402 +(where)f(this)g(ma)m(y)h(cause)g(a)g(problem.)275 3231 y(F)-8 b(unctions)33 b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 b(The)32 b Ft(FUNCNEST)f Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g -(to)i(limit)g(the)f(depth)f(of)150 3512 y(the)27 b(function)f(call)i +(to)i(limit)g(the)f(depth)f(of)150 3341 y(the)27 b(function)f(call)i (stac)m(k)h(and)d(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f (in)m(v)m(o)s(cations.)42 b(By)27 b(default,)g(no)g(limit)150 -3621 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 3860 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 -4019 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) +3450 y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f +(calls.)150 3711 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 +3871 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) f(stores)g(v)-5 b(alues.)39 b(It)23 b(can)h(b)s(e)f(a)g Ft(name)p Fu(,)h(a)g(n)m(um)m(b)s(er,)f(or)h(one)f(of)h(the)f(sp)s -(ecial)150 4129 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39 +(ecial)150 3980 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39 b(A)23 b Fr(v)-5 b(ariable)30 b Fu(is)23 b(a)g(parameter)h(denoted)f(b) m(y)h(a)f Ft(name)p Fu(.)37 b(A)24 b(v)-5 b(ariable)24 -b(has)f(a)g Fr(v)-5 b(alue)150 4238 y Fu(and)33 b(zero)i(or)f(more)g +b(has)f(a)g Fr(v)-5 b(alue)150 4090 y Fu(and)33 b(zero)i(or)f(more)g Fr(attributes)p Fu(.)52 b(A)m(ttributes)35 b(are)f(assigned)g(using)g -(the)g Ft(declare)e Fu(builtin)h(command)150 4348 y(\(see)e(the)g +(the)g Ft(declare)e Fu(builtin)h(command)150 4200 y(\(see)e(the)g (description)f(of)h(the)f Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2) -g([Bash)g(Builtins],)g(page)g(48\).)275 4486 y(A)d(parameter)h(is)g +g([Bash)g(Builtins],)g(page)g(49\).)275 4348 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 4596 y(a)31 b(v)-5 +b(alid)28 b(v)-5 b(alue.)41 b(Once)150 4457 y(a)31 b(v)-5 b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f -(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 4734 +(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 4605 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 4873 y Fj(name)p -Ft(=[)p Fj(value)p Ft(])150 5011 y Fu(If)j Fr(v)-5 b(alue)40 +(statemen)m(t)h(of)e(the)h(form)390 4754 y Fj(name)p +Ft(=[)p Fj(value)p Ft(])150 4902 y Fu(If)j Fr(v)-5 b(alue)40 b Fu(is)35 b(not)g(giv)m(en,)h(the)f(v)-5 b(ariable)35 b(is)g(assigned)g(the)f(n)m(ull)h(string.)53 b(All)35 b Fr(v)-5 b(alue)5 b Fu(s)35 b(undergo)f(tilde)h(ex-)150 -5121 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36 +5011 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36 b(expansion,)f(command)g(substitution,)h(arithmetic)g(expansion,)150 -5230 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).) +5121 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).) 72 b(If)40 b(the)h(v)-5 b(ariable)41 b(has)g(its)g Ft(integer)e -Fu(attribute)i(set,)j(then)150 5340 y Fr(v)-5 b(alue)38 +Fu(attribute)i(set,)j(then)150 5230 y Fr(v)-5 b(alue)38 b Fu(is)33 b(ev)-5 b(aluated)34 b(as)f(an)g(arithmetic)h(expression)f (ev)m(en)h(if)e(the)h Ft($\(\(...)o(\)\))f Fu(expansion)h(is)g(not)g -(used)p eop end +(used)150 5340 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f +(page)h(29\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s +(erformed,)f(with)p eop end %%Page: 19 25 TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)150 299 -y(\(see)31 b(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f(page)h -(29\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s(erformed,)f -(with)150 408 y(the)35 b(exception)h(of)f Ft("$@")f Fu(as)h(explained)g -(b)s(elo)m(w.)54 b(Filename)36 b(expansion)f(is)g(not)g(p)s(erformed.) -53 b(Assign-)150 518 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g -(app)s(ear)f(as)g(argumen)m(ts)h(to)g(the)g Ft(alias)p -Fu(,)e Ft(declare)p Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p -Fu(,)150 628 y Ft(readonly)p Fu(,)41 b(and)f Ft(local)f -Fu(builtin)h(commands.)71 b(When)40 b(in)h Fm(posix)e -Fu(mo)s(de)i(\(see)g(Section)g(6.11)i([Bash)150 737 y(POSIX)36 -b(Mo)s(de],)k(page)e(94\),)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 -847 y(stances)31 b(of)g(the)f Ft(command)f Fu(builtin)h(and)f(retain)i -(these)g(assignmen)m(t)g(statemen)m(t)h(prop)s(erties.)275 -994 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 1104 y(arra)m(y)f(index)g(\(see)h(Section)g(6.7)g -([Arra)m(ys],)g(page)g(89\),)g(the)f(`)p Ft(+=)p Fu(')g(op)s(erator)g -(can)h(b)s(e)e(used)g(to)i(app)s(end)d(to)150 1213 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 Ft(+=)p Fu(')g(is)g(applied)g(to)h(a)g(v)-5 -b(ariable)37 b(for)f(whic)m(h)g(the)150 1323 y Fr(in)m(teger)46 -b Fu(attribute)38 b(has)f(b)s(een)g(set,)k Fr(v)-5 b(alue)43 -b Fu(is)38 b(ev)-5 b(aluated)39 b(as)f(an)f(arithmetic)i(expression)f -(and)f(added)150 1433 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 Ft(+=)p Fu(')g(is)h(applied)f(to)g(an)g -(arra)m(y)150 1542 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(89\),)h -(the)e(v)-5 b(ariable's)25 b(v)-5 b(alue)150 1652 y(is)32 -b(not)f(unset)h(\(as)g(it)g(is)f(when)g(using)g(`)p Ft(=)p -Fu('\),)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 1761 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 1871 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 Fr(v)-5 b(alue)39 b Fu(is)150 -1980 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 2128 y(A)41 b(v)-5 -b(ariable)42 b(can)f(b)s(e)f(assigned)i(the)f Fr(nameref)58 -b Fu(attribute)42 b(using)f(the)g Ft(-n)f Fu(option)i(to)g(the)f -Ft(\\)p Fu(fBde-)150 2237 y(clare)p Ft(\\)p Fu(fP)j(or)f -Ft(\\)p Fu(fBlo)s(cal)p Ft(\\)p Fu(fP)h(builtin)e(commands)h(\(see)h -(Section)h(4.2)f([Bash)g(Builtins],)j(page)d(48\))g(to)150 -2347 y(create)37 b(a)e Fr(nameref)p Fu(,)h(or)f(a)h(reference)f(to)h -(another)g(v)-5 b(ariable.)55 b(This)34 b(allo)m(ws)j(v)-5 -b(ariables)35 b(to)h(b)s(e)f(manipu-)150 2457 y(lated)c(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)150 -2566 y(is)i(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 -2676 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 -2785 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 2895 y(its)f(\014rst)e(argumen)m(t,)i -(running)390 3042 y Ft(declare)46 b(-n)h(ref=$1)150 3190 -y Fu(inside)31 b(the)h(function)f(creates)i(a)g(nameref)e(v)-5 -b(ariable)32 b Fr(ref)49 b Fu(whose)32 b(v)-5 b(alue)32 -b(is)g(the)f(v)-5 b(ariable)33 b(name)e(passed)150 3299 -y(as)42 b(the)g(\014rst)f(argumen)m(t.)74 b(References)43 -b(and)e(assignmen)m(ts)h(to)g Fr(ref)59 b Fu(are)42 b(treated)h(as)f -(references)g(and)150 3409 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 -Ft($1)p Fu(.)275 3556 y(If)38 b(the)i(con)m(trol)g(v)-5 -b(ariable)40 b(in)f(a)g Ft(for)g Fu(lo)s(op)g(has)g(the)g(nameref)g -(attribute,)k(the)c(list)h(of)f(w)m(ords)g(can)150 3666 -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 3775 y(list,)e(in)e(turn,)g(when)f(the)i -(lo)s(op)f(is)h(executed.)47 b(Arra)m(y)33 b(v)-5 b(ariables)33 -b(cannot)g(b)s(e)e(giv)m(en)j(the)e Ft(-n)g Fu(attribute.)150 -3885 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 3995 y(Namerefs)36 b(can)f(b)s(e)g -(unset)g(using)g(the)h Ft(-n)e Fu(option)i(to)g(the)g -Ft(unset)e Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)150 -4104 y(Shell)43 b(Builtins],)j(page)e(41\).)79 b(Otherwise,)45 -b(if)e Ft(unset)e Fu(is)i(executed)h(with)e(the)h(name)g(of)g(a)g -(nameref)150 4214 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 4426 y Fk(3.4.1)63 -b(P)m(ositional)41 b(P)m(arameters)150 4573 y Fu(A)28 +y(the)35 b(exception)h(of)f Ft("$@")f Fu(as)h(explained)g(b)s(elo)m(w.) +54 b(Filename)36 b(expansion)f(is)g(not)g(p)s(erformed.)53 +b(Assign-)150 408 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s +(ear)f(as)g(argumen)m(ts)h(to)g(the)g Ft(alias)p Fu(,)e +Ft(declare)p Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 +518 y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g +(\()p Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f +Fm(posix)f Fu(mo)s(de)150 628 y(\(see)c(Section)f(6.11)h([Bash)g(POSIX) +d(Mo)s(de],)j(page)f(96\),)i(these)e(builtins)f(ma)m(y)i(app)s(ear)e +(in)g(a)h(command)150 737 y(after)i(one)g(or)f(more)h(instances)g(of)f +(the)h Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g +(statemen)m(t)150 847 y(prop)s(erties.)275 994 y(In)29 +b(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m(t)h(is)e +(assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5 +b(ariable)31 b(or)150 1104 y(arra)m(y)24 b(index)f(\(see)h(Section)g +(6.7)g([Arra)m(ys],)i(page)e(91\),)i(the)e(`)p Ft(+=)p +Fu(')f(op)s(erator)g(can)h(b)s(e)f(used)f(to)i(app)s(end)e(to)i(or)150 +1213 y(add)k(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5 +b(alue.)41 b(This)28 b(includes)g(argumen)m(ts)i(to)f(builtin)g +(commands)f(suc)m(h)h(as)150 1323 y Ft(declare)e Fu(that)i(accept)h +(assignmen)m(t)f(statemen)m(ts)h(\()p Fr(declaration)h +Fu(commands\).)40 b(When)28 b(`)p Ft(+=)p Fu(')h(is)f(applied)150 +1433 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h +Fr(in)m(teger)32 b Fu(attribute)24 b(has)g(b)s(een)f(set,)j +Fr(v)-5 b(alue)29 b Fu(is)24 b(ev)-5 b(aluated)25 b(as)f(an)g +(arithmetic)150 1542 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5 +b(ariable's)30 b(curren)m(t)g(v)-5 b(alue,)31 b(whic)m(h)e(is)h(also)h +(ev)-5 b(aluated.)42 b(When)29 b(`)p Ft(+=)p Fu(')h(is)150 +1652 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26 +b(using)f(comp)s(ound)f(assignmen)m(t)i(\(see)g(Section)g(6.7)g([Arra)m +(ys],)h(page)f(91\),)150 1761 y(the)33 b(v)-5 b(ariable's)33 +b(v)-5 b(alue)33 b(is)g(not)g(unset)f(\(as)h(it)g(is)g(when)e(using)i +(`)p Ft(=)p Fu('\),)g(and)f(new)g(v)-5 b(alues)33 b(are)g(app)s(ended)e +(to)150 1871 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h +(than)f(the)g(arra)m(y's)h(maxim)m(um)f(index)f(\(for)i(indexed)e(arra) +m(ys\),)j(or)150 1980 y(added)c(as)i(additional)g(k)m(ey-v)-5 +b(alue)26 b(pairs)f(in)g(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8 +b(.)40 b(When)24 b(applied)h(to)h(a)g(string-v)-5 b(alued)150 +2090 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31 +b(expanded)e(and)h(app)s(ended)f(to)i(the)f(v)-5 b(ariable's)32 +b(v)-5 b(alue.)275 2237 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f +(assigned)i(the)f Fr(nameref)45 b Fu(attribute)29 b(using)f(the)g +Ft(-n)f Fu(option)i(to)g(the)f Ft(declare)e Fu(or)150 +2347 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h +([Bash)f(Builtins],)h(page)f(49\))h(to)f(create)i(a)e +Fr(nameref)p Fu(,)g(or)g(a)150 2457 y(reference)f(to)g(another)f(v)-5 +b(ariable.)40 b(This)24 b(allo)m(ws)j(v)-5 b(ariables)26 +b(to)g(b)s(e)e(manipulated)h(indirectly)-8 b(.)40 b(Whenev)m(er)150 +2566 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g +(assigned)h(to,)g(unset,)f(or)g(has)f(its)i(attributes)f(mo)s(di\014ed) +f(\(other)150 2676 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f +(attribute)i(itself)7 b(\),)29 b(the)d(op)s(eration)h(is)g(actually)h +(p)s(erformed)d(on)150 2785 y(the)31 b(v)-5 b(ariable)31 +b(sp)s(eci\014ed)f(b)m(y)g(the)h(nameref)f(v)-5 b(ariable's)31 +b(v)-5 b(alue.)42 b(A)30 b(nameref)g(is)h(commonly)g(used)e(within)150 +2895 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5 +b(ariable)31 b(whose)f(name)h(is)f(passed)g(as)g(an)g(argumen)m(t)h(to) +g(the)f(function.)150 3005 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5 +b(ariable)31 b(name)f(is)h(passed)e(to)j(a)e(shell)h(function)f(as)h +(its)f(\014rst)g(argumen)m(t,)h(running)390 3152 y Ft(declare)46 +b(-n)h(ref=$1)150 3299 y Fu(inside)31 b(the)h(function)f(creates)i(a)g +(nameref)e(v)-5 b(ariable)32 b Fr(ref)49 b Fu(whose)32 +b(v)-5 b(alue)32 b(is)g(the)f(v)-5 b(ariable)33 b(name)e(passed)150 +3409 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30 +b(and)e(assignmen)m(ts)i(to)g Fr(ref)p Fu(,)f(and)g(c)m(hanges)h(to)g +(its)f(attributes,)i(are)150 3518 y(treated)g(as)f(references,)g +(assignmen)m(ts,)h(and)e(attribute)i(mo)s(di\014cations)f(to)h(the)f(v) +-5 b(ariable)30 b(whose)g(name)150 3628 y(w)m(as)h(passed)f(as)g +Ft($1)p Fu(.)275 3775 y(If)h(the)g(con)m(trol)i(v)-5 +b(ariable)32 b(in)g(a)f Ft(for)g Fu(lo)s(op)h(has)f(the)g(nameref)h +(attribute,)g(the)g(list)g(of)g(w)m(ords)f(can)h(b)s(e)150 +3885 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f +(reference)g(will)g(b)s(e)f(established)h(for)g(eac)m(h)h(w)m(ord)e(in) +h(the)g(list,)150 3995 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g +(executed.)41 b(Arra)m(y)30 b(v)-5 b(ariables)30 b(cannot)h(b)s(e)e +(giv)m(en)h(the)g(nameref)g(attribute.)150 4104 y(Ho)m(w)m(ev)m(er,)39 +b(nameref)d(v)-5 b(ariables)36 b(can)g(reference)g(arra)m(y)g(v)-5 +b(ariables)37 b(and)e(subscripted)f(arra)m(y)i(v)-5 b(ariables.)150 +4214 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h +Ft(-n)e Fu(option)i(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)h(Section) +g(4.1)h([Bourne)150 4323 y(Shell)43 b(Builtins],)j(page)e(42\).)79 +b(Otherwise,)45 b(if)e Ft(unset)e Fu(is)i(executed)h(with)e(the)h(name) +g(of)g(a)g(nameref)150 4433 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m +(t,)h(the)g(v)-5 b(ariable)31 b(referenced)f(b)m(y)g(the)h(nameref)f(v) +-5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 4645 y Fk(3.4.1)63 +b(P)m(ositional)41 b(P)m(arameters)150 4792 y Fu(A)28 b Fr(p)s(ositional)h(parameter)35 b Fu(is)28 b(a)g(parameter)g(denoted) g(b)m(y)g(one)g(or)g(more)g(digits,)h(other)g(than)e(the)h(single)150 -4682 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are) +4902 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are) g(assigned)h(from)e(the)i(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in) -m(v)m(ok)m(ed,)150 4792 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using) +m(v)m(ok)m(ed,)150 5011 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using) e(the)h Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41 -b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 4902 y(referenced)34 +b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 5121 y(referenced)34 b(as)h Ft(${N})p Fu(,)g(or)f(as)h Ft($N)e Fu(when)h Ft(N)g Fu(consists)h(of)f(a)h(single)g(digit.)54 b(P)m(ositional)37 -b(parameters)d(ma)m(y)150 5011 y(not)j(b)s(e)f(assigned)h(to)g(with)f +b(parameters)d(ma)m(y)150 5230 y(not)j(b)s(e)f(assigned)h(to)g(with)f (assignmen)m(t)i(statemen)m(ts.)61 b(The)36 b Ft(set)g Fu(and)g Ft(shift)f Fu(builtins)h(are)h(used)f(to)150 -5121 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h -(Builtin)g(Commands],)h(page)f(41\).)68 b(The)39 b(p)s(ositional)150 -5230 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 -5340 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(17\).)p +5340 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h +(Builtin)g(Commands],)h(page)f(42\).)68 b(The)39 b(p)s(ositional)p eop end %%Page: 20 26 TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)275 299 -y(When)27 b(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299 +y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h(shell)g +(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150 +408 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(17\).)275 +540 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f (than)g(a)g(single)h(digit)g(is)f(expanded,)g(it)h(m)m(ust)150 -408 y(b)s(e)h(enclosed)h(in)f(braces.)150 605 y Fk(3.4.2)63 -b(Sp)s(ecial)41 b(P)m(arameters)150 752 y Fu(The)d(shell)g(treats)h +650 y(b)s(e)h(enclosed)h(in)f(braces.)150 844 y Fk(3.4.2)63 +b(Sp)s(ecial)41 b(P)m(arameters)150 991 y Fu(The)d(shell)g(treats)h (sev)m(eral)g(parameters)f(sp)s(ecially)-8 b(.)65 b(These)38 b(parameters)h(ma)m(y)f(only)g(b)s(e)g(referenced;)150 -862 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150 -1018 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h +1101 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150 +1255 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h (parameters,)h(starting)f(from)f(one.)59 b(When)36 b(the)g(ex-)630 -1128 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s -(ositional)f(parameter)g(expands)f(to)i(a)630 1237 y(separate)e(w)m +1365 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s +(ositional)f(parameter)g(expands)f(to)i(a)630 1474 y(separate)e(w)m (ord.)56 b(In)35 b(con)m(texts)i(where)e(it)h(is)g(p)s(erformed,)g -(those)g(w)m(ords)f(are)h(sub)5 b(ject)35 b(to)630 1347 +(those)g(w)m(ords)f(are)h(sub)5 b(ject)35 b(to)630 1584 y(further)h(w)m(ord)h(splitting)h(and)f(pathname)g(expansion.)61 -b(When)38 b(the)f(expansion)g(o)s(ccurs)630 1457 y(within)25 +b(When)38 b(the)f(expansion)g(o)s(ccurs)630 1694 y(within)25 b(double)h(quotes,)h(it)f(expands)f(to)i(a)f(single)g(w)m(ord)f(with)h -(the)g(v)-5 b(alue)26 b(of)g(eac)m(h)h(param-)630 1566 +(the)g(v)-5 b(alue)26 b(of)g(eac)m(h)h(param-)630 1803 y(eter)32 b(separated)h(b)m(y)e(the)h(\014rst)f(c)m(haracter)i(of)f (the)g Ft(IFS)f Fu(sp)s(ecial)h(v)-5 b(ariable.)45 b(That)32 -b(is,)g Ft("$*")630 1676 y Fu(is)f(equiv)-5 b(alen)m(t)32 +b(is,)g Ft("$*")630 1913 y Fu(is)f(equiv)-5 b(alen)m(t)32 b(to)g Ft("$1)p Fj(c)p Ft($2)p Fj(c)p Ft(...)m(")p Fu(,)f(where)g Fr(c)37 b Fu(is)31 b(the)g(\014rst)f(c)m(haracter)j(of)e(the)g(v)-5 -b(alue)32 b(of)f(the)630 1785 y Ft(IFS)e Fu(v)-5 b(ariable.)41 +b(alue)32 b(of)f(the)630 2022 y Ft(IFS)e Fu(v)-5 b(ariable.)41 b(If)29 b Ft(IFS)g Fu(is)h(unset,)f(the)h(parameters)g(are)g(separated) -g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 1895 +g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 2132 y(n)m(ull,)i(the)f(parameters)h(are)g(joined)f(without)g(in)m(terv)m -(ening)i(separators.)150 2052 y Ft(@)432 b Fu(\($@\))35 +(ening)i(separators.)150 2286 y Ft(@)432 b Fu(\($@\))35 b(Expands)e(to)i(the)g(p)s(ositional)g(parameters,)h(starting)f(from)f -(one.)53 b(When)34 b(the)g(ex-)630 2161 y(pansion)41 +(one.)53 b(When)34 b(the)g(ex-)630 2396 y(pansion)41 b(o)s(ccurs)g(within)f(double)h(quotes,)k(eac)m(h)d(parameter)g -(expands)e(to)i(a)g(separate)630 2271 y(w)m(ord.)50 b(That)34 +(expands)e(to)i(a)g(separate)630 2506 y(w)m(ord.)50 b(That)34 b(is,)g Ft("$@")f Fu(is)g(equiv)-5 b(alen)m(t)35 b(to)g Ft("$1")29 b("$2")g(...)o Fu(.)51 b(If)33 b(the)h(double-quoted)f(ex-) -630 2380 y(pansion)38 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)e +630 2615 y(pansion)38 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)e (expansion)g(of)g(the)g(\014rst)f(parameter)h(is)g(joined)630 -2490 y(with)i(the)h(b)s(eginning)e(part)i(of)f(the)h(original)g(w)m -(ord,)i(and)d(the)h(expansion)f(of)g(the)h(last)630 2600 +2725 y(with)i(the)h(b)s(eginning)e(part)i(of)f(the)h(original)g(w)m +(ord,)i(and)d(the)h(expansion)f(of)g(the)h(last)630 2834 y(parameter)31 b(is)f(joined)g(with)f(the)i(last)g(part)e(of)i(the)f (original)h(w)m(ord.)40 b(When)30 b(there)h(are)f(no)630 -2709 y(p)s(ositional)e(parameters,)h Ft("$@")d Fu(and)h +2944 y(p)s(ositional)e(parameters,)h Ft("$@")d Fu(and)h Ft($@)f Fu(expand)h(to)h(nothing)f(\(i.e.,)j(they)e(are)f(remo)m(v)m -(ed\).)150 2866 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m +(ed\).)150 3098 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m (um)m(b)s(er)e(of)h(p)s(ositional)i(parameters)e(in)g(decimal.)150 -3022 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status) +3253 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status) f(of)g(the)g(most)h(recen)m(tly)g(executed)g(foreground)630 -3132 y(pip)s(eline.)150 3289 y Ft(-)432 b Fu(\($-,)24 +3362 y(pip)s(eline.)150 3517 y Ft(-)432 b Fu(\($-,)24 b(a)e(h)m(yphen.\))37 b(Expands)20 b(to)i(the)f(curren)m(t)h(option)f (\015ags)h(as)f(sp)s(eci\014ed)g(up)s(on)f(in)m(v)m(o)s(cation,)630 -3398 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i +3626 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i (set)f(b)m(y)f(the)h(shell)g(itself)g(\(suc)m(h)g(as)g(the)g -Ft(-i)630 3508 y Fu(option\).)150 3665 y Ft($)432 b Fu(\($$\))31 +Ft(-i)630 3736 y Fu(option\).)150 3890 y Ft($)432 b Fu(\($$\))31 b(Expands)d(to)j(the)e(pro)s(cess)h Fm(id)f Fu(of)h(the)g(shell.)41 b(In)28 b(a)i Ft(\(\))f Fu(subshell,)h(it)g(expands)e(to)j(the)630 -3774 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g -(not)g(the)f(subshell.)150 3931 y Ft(!)432 b Fu(\($!\))51 +4000 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g +(not)g(the)f(subshell.)150 4154 y Ft(!)432 b Fu(\($!\))51 b(Expands)32 b(to)i(the)g(pro)s(cess)f Fm(id)h Fu(of)f(the)h(job)f (most)h(recen)m(tly)h(placed)f(in)m(to)g(the)g(bac)m(k-)630 -4040 y(ground,)26 b(whether)g(executed)g(as)h(an)f(async)m(hronous)f +4264 y(ground,)26 b(whether)g(executed)g(as)h(an)f(async)m(hronous)f (command)h(or)g(using)g(the)g Ft(bg)f Fu(builtin)630 -4150 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g -(page)h(98\).)150 4307 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the)g -(name)g(of)f(the)h(shell)g(or)f(shell)h(script.)83 b(This)44 -b(is)g(set)h(at)h(shell)630 4416 y(initialization.)d(If)27 +4374 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g +(page)h(101\).)150 4528 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the) +g(name)g(of)f(the)h(shell)g(or)f(shell)h(script.)83 b(This)44 +b(is)g(set)h(at)h(shell)630 4638 y(initialization.)d(If)27 b(Bash)h(is)g(in)m(v)m(ok)m(ed)h(with)e(a)i(\014le)e(of)h(commands)g -(\(see)g(Section)h(3.8)g([Shell)630 4526 y(Scripts],)g(page)g(39\),)h +(\(see)g(Section)h(3.8)g([Shell)630 4747 y(Scripts],)g(page)g(40\),)h Ft($0)e Fu(is)h(set)g(to)g(the)f(name)h(of)f(that)h(\014le.)41 -b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 4635 y +b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 4857 y Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)g -(page)f(80\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630 -4745 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i +(page)f(82\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630 +4966 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i (if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31 b(it)g(is)f(set)630 -4855 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 5011 -y Ft(_)432 b Fu(\($)p 716 5011 28 4 v 41 w(,)41 b(an)e(underscore.\))67 +5076 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m(ok)m(e)h(Bash,)f +(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 5230 +y Ft(_)432 b Fu(\($)p 716 5230 28 4 v 41 w(,)41 b(an)e(underscore.\))67 b(A)m(t)40 b(shell)f(startup,)i(set)f(to)g(the)f(absolute)h(pathname)f -(used)f(to)630 5121 y(in)m(v)m(ok)m(e)43 b(the)e(shell)g(or)g(shell)g +(used)f(to)630 5340 y(in)m(v)m(ok)m(e)43 b(the)e(shell)g(or)g(shell)g (script)g(b)s(eing)f(executed)i(as)f(passed)g(in)f(the)h(en)m(vironmen) -m(t)630 5230 y(or)34 b(argumen)m(t)g(list.)52 b(Subsequen)m(tly)-8 -b(,)34 b(expands)f(to)i(the)f(last)h(argumen)m(t)f(to)g(the)g(previous) -630 5340 y(command,)g(after)f(expansion.)48 b(Also)34 -b(set)g(to)f(the)g(full)g(pathname)g(used)f(to)i(in)m(v)m(ok)m(e)h(eac) -m(h)p eop end +m(t)p eop end %%Page: 21 27 TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)630 299 -y(command)29 b(executed)h(and)f(placed)g(in)g(the)h(en)m(vironmen)m(t)f -(exp)s(orted)g(to)h(that)g(command.)630 408 y(When)g(c)m(hec)m(king)i -(mail,)g(this)e(parameter)h(holds)f(the)g(name)h(of)f(the)h(mail)g -(\014le.)150 639 y Fs(3.5)68 b(Shell)45 b(Expansions)150 -799 y Fu(Expansion)27 b(is)i(p)s(erformed)d(on)i(the)g(command)g(line)h -(after)f(it)h(has)f(b)s(een)f(split)h(in)m(to)i Ft(token)p -Fu(s.)38 b(There)28 b(are)150 908 y(sev)m(en)j(kinds)e(of)i(expansion)f -(p)s(erformed:)225 1042 y Fq(\017)60 b Fu(brace)31 b(expansion)225 -1176 y Fq(\017)60 b Fu(tilde)31 b(expansion)225 1309 -y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5 b(ariable)31 -b(expansion)225 1443 y Fq(\017)60 b Fu(command)30 b(substitution)225 -1577 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 -1710 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 1844 -y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 2002 -y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25 +y(or)34 b(argumen)m(t)g(list.)52 b(Subsequen)m(tly)-8 +b(,)34 b(expands)f(to)i(the)f(last)h(argumen)m(t)f(to)g(the)g(previous) +630 408 y(command,)g(after)f(expansion.)48 b(Also)34 +b(set)g(to)f(the)g(full)g(pathname)g(used)f(to)i(in)m(v)m(ok)m(e)h(eac) +m(h)630 518 y(command)29 b(executed)h(and)f(placed)g(in)g(the)h(en)m +(vironmen)m(t)f(exp)s(orted)g(to)h(that)g(command.)630 +628 y(When)g(c)m(hec)m(king)i(mail,)g(this)e(parameter)h(holds)f(the)g +(name)h(of)f(the)h(mail)g(\014le.)150 878 y Fs(3.5)68 +b(Shell)45 b(Expansions)150 1037 y Fu(Expansion)27 b(is)i(p)s(erformed) +d(on)i(the)g(command)g(line)h(after)f(it)h(has)f(b)s(een)f(split)h(in)m +(to)i Ft(token)p Fu(s.)38 b(There)28 b(are)150 1147 y(sev)m(en)j(kinds) +e(of)i(expansion)f(p)s(erformed:)225 1287 y Fq(\017)60 +b Fu(brace)31 b(expansion)225 1425 y Fq(\017)60 b Fu(tilde)31 +b(expansion)225 1562 y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5 +b(ariable)31 b(expansion)225 1700 y Fq(\017)60 b Fu(command)30 +b(substitution)225 1837 y Fq(\017)60 b Fu(arithmetic)32 +b(expansion)225 1975 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 +2112 y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 +2281 y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25 b(expansion;)j(tilde)e(expansion,)g(parameter)g(and)f(v)-5 -b(ariable)26 b(ex-)150 2111 y(pansion,)j(arithmetic)i(expansion,)f(and) +b(ariable)26 b(ex-)150 2391 y(pansion,)j(arithmetic)i(expansion,)f(and) f(command)g(substitution)g(\(done)g(in)h(a)f(left-to-righ)m(t)k -(fashion\);)150 2221 y(w)m(ord)d(splitting;)h(and)f(\014lename)h -(expansion.)275 2355 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,) +(fashion\);)150 2500 y(w)m(ord)d(splitting;)h(and)f(\014lename)h +(expansion.)275 2641 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,) 47 b(there)d(is)f(an)h(additional)g(expansion)f(a)m(v)-5 -b(ailable:)69 b Fr(pro)s(cess)150 2464 y(substitution)p +b(ailable:)69 b Fr(pro)s(cess)150 2750 y(substitution)p Fu(.)50 b(This)33 b(is)h(p)s(erformed)e(at)j(the)f(same)g(time)g(as)g (tilde,)i(parameter,)f(v)-5 b(ariable,)35 b(and)f(arith-)150 -2574 y(metic)d(expansion)g(and)e(command)i(substitution.)275 -2707 y(Only)k(brace)i(expansion,)h(w)m(ord)e(splitting,)j(and)d +2860 y(metic)d(expansion)g(and)e(command)i(substitution.)275 +3001 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m +(haracters)h(presen)m(t)e(in)g(the)g(original)i(w)m(ord)e(are)150 +3110 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g +(themselv)m(es)i(\()p Fr(quote)f(remo)m(v)-5 b(al)t Fu(\).)275 +3251 y(Only)35 b(brace)i(expansion,)h(w)m(ord)e(splitting,)j(and)d (\014lename)g(expansion)g(can)h(c)m(hange)h(the)e(n)m(um)m(b)s(er)150 -2817 y(of)h(w)m(ords)f(of)g(the)h(expansion;)i(other)e(expansions)f +3360 y(of)h(w)m(ords)f(of)g(the)h(expansion;)i(other)e(expansions)f (expand)g(a)h(single)g(w)m(ord)f(to)h(a)g(single)g(w)m(ord.)58 -b(The)150 2927 y(only)32 b(exceptions)i(to)f(this)f(are)h(the)f +b(The)150 3470 y(only)32 b(exceptions)i(to)f(this)f(are)h(the)f (expansions)g(of)h Ft("$@")e Fu(\(see)i(Section)g(3.4.2)h([Sp)s(ecial)f -(P)m(arameters],)150 3036 y(page)e(20\))h(and)d Ft("${)p +(P)m(arameters],)150 3580 y(page)e(20\))h(and)d Ft("${)p Fj(name)p Ft([@]}")e Fu(\(see)32 b(Section)f(6.7)g([Arra)m(ys],)h(page) -f(89\).)275 3170 y(After)41 b(all)i(expansions,)h Ft(quote)29 +f(91\).)275 3720 y(After)41 b(all)i(expansions,)h Ft(quote)29 b(removal)40 b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m(v)-5 -b(al],)47 b(page)42 b(31\))h(is)150 3279 y(p)s(erformed.)150 -3477 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 3624 y +b(al],)47 b(page)42 b(32\))h(is)150 3830 y(p)s(erformed.)150 +4035 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 4182 y Fu(Brace)32 b(expansion)f(is)f(a)i(mec)m(hanism)f(b)m(y)f(whic)m(h)h (arbitrary)f(strings)h(ma)m(y)g(b)s(e)f(generated.)43 -b(This)30 b(mec)m(h-)150 3733 y(anism)35 b(is)h(similar)f(to)h +b(This)30 b(mec)m(h-)150 4292 y(anism)35 b(is)h(similar)f(to)h Fr(\014lename)g(expansion)f Fu(\(see)i(Section)f(3.5.8)h([Filename)g -(Expansion],)f(page)g(30\),)150 3843 y(but)26 b(the)h(\014lenames)g +(Expansion],)f(page)g(30\),)150 4401 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 -3953 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f +4511 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f (either)g(a)h(series)f(of)g(comma-separated)i(strings)d(or)h(a)h -(sequence)150 4062 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i +(sequence)150 4620 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i (braces,)g(follo)m(w)m(ed)h(b)m(y)e(an)g(optional)h Fr(p)s(ostscript)p -Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 4172 y(pre\014xed)28 +Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 4730 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 -4281 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) -m(t.)275 4415 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59 +4840 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) +m(t.)275 4980 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59 b(The)36 b(results)g(of)h(eac)m(h)g(expanded)f(string)g(are)h(not)g -(sorted;)150 4525 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 4658 y Ft(bash$)46 -b(echo)h(a{d,c,b}e)390 4768 y(ade)g(ace)g(abe)275 4902 -y Fu(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g -Ft({)p Fj(x)p Ft(..)p Fj(y)p Ft([..)p Fj(incr)p Ft(]})p -Fu(,)e(where)i Fr(x)29 b Fu(and)23 b Fr(y)30 b Fu(are)24 -b(either)g(in)m(tegers)150 5011 y(or)42 b(single)h(c)m(haracters,)48 -b(and)41 b Fr(incr)p Fu(,)46 b(an)c(optional)i(incremen)m(t,)i(is)c(an) -h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 5121 -y(supplied,)f(the)f(expression)f(expands)f(to)i(eac)m(h)h(n)m(um)m(b)s -(er)d(b)s(et)m(w)m(een)i Fr(x)47 b Fu(and)41 b Fr(y)p -Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 5230 y(in)m(tegers)33 -b(ma)m(y)e(b)s(e)g(pre\014xed)f(with)h(`)p Ft(0)p Fu(')h(to)g(force)g -(eac)m(h)g(term)g(to)g(ha)m(v)m(e)g(the)g(same)g(width.)42 -b(When)31 b(either)150 5340 y Fr(x)43 b Fu(or)36 b Fr(y)44 -b Fu(b)s(egins)36 b(with)g(a)h(zero,)i(the)e(shell)g(attempts)g(to)g -(force)g(all)h(generated)f(terms)g(to)g(con)m(tain)h(the)p -eop end +(sorted;)150 5090 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m +(ed.)41 b(F)-8 b(or)31 b(example,)390 5230 y Ft(bash$)46 +b(echo)h(a{d,c,b}e)390 5340 y(ade)g(ace)g(abe)p eop end %%Page: 22 28 TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)150 299 -y(same)36 b(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)275 299 +y(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g +Ft({)p Fj(x)p Ft(..)p Fj(y)p Ft([..)p Fj(incr)p Ft(]})p +Fu(,)e(where)i Fr(x)29 b Fu(and)23 b Fr(y)30 b Fu(are)24 +b(either)g(in)m(tegers)150 408 y(or)42 b(single)h(c)m(haracters,)48 +b(and)41 b Fr(incr)p Fu(,)46 b(an)c(optional)i(incremen)m(t,)i(is)c(an) +h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 518 +y(supplied,)f(the)f(expression)f(expands)f(to)i(eac)m(h)h(n)m(um)m(b)s +(er)d(b)s(et)m(w)m(een)i Fr(x)47 b Fu(and)41 b Fr(y)p +Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 628 y(in)m(tegers)33 +b(ma)m(y)e(b)s(e)g(pre\014xed)f(with)h(`)p Ft(0)p Fu(')h(to)g(force)g +(eac)m(h)g(term)g(to)g(ha)m(v)m(e)g(the)g(same)g(width.)42 +b(When)31 b(either)150 737 y Fr(x)43 b Fu(or)36 b Fr(y)44 +b Fu(b)s(egins)36 b(with)g(a)h(zero,)i(the)e(shell)g(attempts)g(to)g +(force)g(all)h(generated)f(terms)g(to)g(con)m(tain)h(the)150 +847 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h (necessary)-8 b(.)57 b(When)35 b(c)m(haracters)i(are)f(supplied,)g(the) -150 408 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g +150 956 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g (lexicographically)h(b)s(et)m(w)m(een)e Fr(x)30 b Fu(and)24 -b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 518 y(default)32 -b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e Fr(x)39 -b Fu(and)31 b Fr(y)40 b Fu(m)m(ust)32 b(b)s(e)g(of)g(the)h(same)f(t)m -(yp)s(e.)47 b(When)32 b(the)g(incremen)m(t)150 628 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 -737 y(as)i(appropriate.)275 873 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 982 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 1092 -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 1201 y(T)-8 b(o)37 b(a)m(v)m(oid)g(con\015icts)g(with)f -(parameter)h(expansion,)g(the)g(string)f(`)p Ft(${)p -Fu(')g(is)g(not)g(considered)g(eligible)i(for)150 1311 -y(brace)31 b(expansion.)275 1446 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 1556 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 1666 y(brace)d(expansion)f(is)g -(left)h(unc)m(hanged.)275 1801 y(A)25 b Fi({)h Fu(or)f(`)p -Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted)h(with)f(a)g(bac)m(kslash)h(to)g -(prev)m(en)m(t)g(its)g(b)s(eing)f(considered)g(part)g(of)h(a)g(brace) -150 1911 y(expression.)51 b(T)-8 b(o)34 b(a)m(v)m(oid)i(con\015icts)e -(with)g(parameter)g(expansion,)h(the)f(string)g(`)p Ft(${)p -Fu(')g(is)g(not)g(considered)150 2020 y(eligible)e(for)e(brace)h -(expansion.)275 2156 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 2265 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 2401 y Ft(mkdir)46 b -(/usr/local/src/bash/{old,n)o(ew,)o(dist)o(,bug)o(s})275 -2536 y Fu(or)390 2672 y Ft(chown)g(root)h(/usr/{ucb/{ex,edit},lib/)o -({ex?)o(.?*,)o(how)o(_ex})o(})150 2872 y Fk(3.5.2)63 -b(Tilde)41 b(Expansion)150 3019 y Fu(If)29 b(a)h(w)m(ord)g(b)s(egins)f -(with)g(an)h(unquoted)f(tilde)h(c)m(haracter)h(\(`)p -Ft(~)p Fu('\),)g(all)g(of)f(the)g(c)m(haracters)h(up)d(to)j(the)f -(\014rst)150 3128 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m(haracters,)h -(if)e(there)g(is)f(no)h(unquoted)e(slash\))i(are)g(considered)g(a)g -Fr(tilde-pre\014x)p Fu(.)150 3238 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 3348 y(follo)m(wing)28 -b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s(ossible)g -Fr(login)h(name)p Fu(.)39 b(If)27 b(this)g(login)h(name)f(is)g(the)g(n) -m(ull)g(string,)150 3457 y(the)35 b(tilde)g(is)g(replaced)g(with)f(the) -h(v)-5 b(alue)35 b(of)g(the)g Ft(HOME)e Fu(shell)i(v)-5 -b(ariable.)54 b(If)34 b Ft(HOME)g Fu(is)h(unset,)g(the)g(home)150 -3567 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 -3676 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 3812 -y(If)g(the)h(tilde-pre\014x)f(is)h(`)p Ft(~+)p Fu(',)g(the)g(v)-5 -b(alue)33 b(of)g(the)g(shell)g(v)-5 b(ariable)34 b Ft(PWD)d -Fu(replaces)j(the)f(tilde-pre\014x.)47 b(If)150 3921 -y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p Fu(',)h(the)f(v)-5 -b(alue)31 b(of)g(the)f(shell)h(v)-5 b(ariable)31 b Ft(OLDPWD)p -Fu(,)e(if)h(it)h(is)g(set,)g(is)f(substituted.)275 4057 -y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the)e(tilde)g(in)g(the)g -(tilde-pre\014x)g(consist)g(of)g(a)h(n)m(um)m(b)s(er)d -Fr(N)p Fu(,)j(optionally)150 4166 y(pre\014xed)22 b(b)m(y)h(a)h(`)p -Ft(+)p Fu(')f(or)h(a)f(`)p Ft(-)p Fu(',)j(the)d(tilde-pre\014x)g(is)h -(replaced)f(with)g(the)h(corresp)s(onding)e(elemen)m(t)j(from)e(the)150 -4276 y(directory)36 b(stac)m(k,)i(as)e(it)g(w)m(ould)f(b)s(e)g(displa)m -(y)m(ed)h(b)m(y)g(the)f Ft(dirs)g Fu(builtin)g(in)m(v)m(ok)m(ed)i(with) -e(the)g(c)m(haracters)150 4386 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 4495 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 Ft(+)p Fu(')g(or)150 -4605 y(`)p Ft(-)p Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 -4740 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 4876 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 4985 -y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p Ft(=)p -Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g(also)h(p)s -(erformed.)52 b(Consequen)m(tly)-8 b(,)37 b(one)150 5095 -y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g(assignmen)m(ts)g -(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p Fu(,)e(and)h Ft(CDPATH)p -Fu(,)g(and)h(the)g(shell)150 5205 y(assigns)j(the)f(expanded)g(v)-5 -b(alue.)275 5340 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:)p eop end +b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 1066 +y(default)32 b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e +Fr(x)39 b Fu(and)31 b Fr(y)40 b Fu(m)m(ust)32 b(b)s(e)g(of)g(the)h +(same)f(t)m(yp)s(e.)47 b(When)32 b(the)g(incremen)m(t)150 +1176 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s +(et)m(w)m(een)g(eac)m(h)g(term.)41 b(The)29 b(default)g(incremen)m(t)h +(is)f(1)h(or)f(-1)150 1285 y(as)i(appropriate.)275 1425 +y(Brace)36 b(expansion)g(is)f(p)s(erformed)f(b)s(efore)h(an)m(y)h +(other)g(expansions,)h(and)e(an)m(y)g(c)m(haracters)i(sp)s(ecial)150 +1535 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f +(result.)45 b(It)32 b(is)g(strictly)g(textual.)46 b(Bash)32 +b(do)s(es)f(not)h(apply)150 1645 y(an)m(y)27 b(syn)m(tactic)i(in)m +(terpretation)g(to)f(the)f(con)m(text)i(of)e(the)g(expansion)g(or)g +(the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)150 1754 +y(T)-8 b(o)37 b(a)m(v)m(oid)g(con\015icts)g(with)f(parameter)h +(expansion,)g(the)g(string)f(`)p Ft(${)p Fu(')g(is)g(not)g(considered)g +(eligible)i(for)150 1864 y(brace)31 b(expansion.)275 +2004 y(A)e(correctly-formed)i(brace)f(expansion)f(m)m(ust)h(con)m(tain) +h(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150 +2113 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5 +b(alid)33 b(sequence)g(expression.)48 b(An)m(y)33 b(incorrectly)h +(formed)150 2223 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275 +2363 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted) +h(with)f(a)g(bac)m(kslash)h(to)g(prev)m(en)m(t)g(its)g(b)s(eing)f +(considered)g(part)g(of)h(a)g(brace)150 2473 y(expression.)51 +b(T)-8 b(o)34 b(a)m(v)m(oid)i(con\015icts)e(with)g(parameter)g +(expansion,)h(the)f(string)g(`)p Ft(${)p Fu(')g(is)g(not)g(considered) +150 2582 y(eligible)e(for)e(brace)h(expansion.)275 2723 +y(This)f(construct)h(is)g(t)m(ypically)i(used)d(as)h(shorthand)f(when)g +(the)h(common)g(pre\014x)f(of)h(the)g(strings)g(to)150 +2832 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m(v)m +(e)i(example:)390 2972 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o +(ew,)o(dist)o(,bug)o(s})275 3112 y Fu(or)390 3253 y Ft(chown)g(root)h +(/usr/{ucb/{ex,edit},lib/)o({ex?)o(.?*,)o(how)o(_ex})o(})150 +3457 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 3604 y +Fu(If)29 b(a)h(w)m(ord)g(b)s(egins)f(with)g(an)h(unquoted)f(tilde)h(c)m +(haracter)h(\(`)p Ft(~)p Fu('\),)g(all)g(of)f(the)g(c)m(haracters)h(up) +d(to)j(the)f(\014rst)150 3714 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m +(haracters,)h(if)e(there)g(is)f(no)h(unquoted)e(slash\))i(are)g +(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 3824 y(If)38 +b(none)g(of)g(the)h(c)m(haracters)g(in)f(the)h(tilde-pre\014x)f(are)h +(quoted,)h(the)f(c)m(haracters)h(in)d(the)i(tilde-pre\014x)150 +3933 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s +(ossible)g Fr(login)h(name)p Fu(.)39 b(If)27 b(this)g(login)h(name)f +(is)g(the)g(n)m(ull)g(string,)150 4043 y(the)35 b(tilde)g(is)g +(replaced)g(with)f(the)h(v)-5 b(alue)35 b(of)g(the)g +Ft(HOME)e Fu(shell)i(v)-5 b(ariable.)54 b(If)34 b Ft(HOME)g +Fu(is)h(unset,)g(the)g(home)150 4152 y(directory)e(of)g(the)f(user)g +(executing)i(the)e(shell)h(is)f(substituted)g(instead.)47 +b(Otherwise,)33 b(the)g(tilde-pre\014x)150 4262 y(is)d(replaced)h(with) +f(the)h(home)f(directory)h(asso)s(ciated)h(with)e(the)h(sp)s(eci\014ed) +e(login)j(name.)275 4402 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p +Ft(~+)p Fu(',)g(the)g(v)-5 b(alue)33 b(of)g(the)g(shell)g(v)-5 +b(ariable)34 b Ft(PWD)d Fu(replaces)j(the)f(tilde-pre\014x.)47 +b(If)150 4512 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p +Fu(',)h(the)f(v)-5 b(alue)31 b(of)g(the)f(shell)h(v)-5 +b(ariable)31 b Ft(OLDPWD)p Fu(,)e(if)h(it)h(is)g(set,)g(is)f +(substituted.)275 4652 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the) +e(tilde)g(in)g(the)g(tilde-pre\014x)g(consist)g(of)g(a)h(n)m(um)m(b)s +(er)d Fr(N)p Fu(,)j(optionally)150 4761 y(pre\014xed)22 +b(b)m(y)h(a)h(`)p Ft(+)p Fu(')f(or)h(a)f(`)p Ft(-)p Fu(',)j(the)d +(tilde-pre\014x)g(is)h(replaced)f(with)g(the)h(corresp)s(onding)e +(elemen)m(t)j(from)e(the)150 4871 y(directory)36 b(stac)m(k,)i(as)e(it) +g(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)g(the)f +Ft(dirs)g Fu(builtin)g(in)m(v)m(ok)m(ed)i(with)e(the)g(c)m(haracters) +150 4981 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g +(an)f(argumen)m(t)h(\(see)h(Section)f(6.8)h([The)e(Directory)i(Stac)m +(k],)150 5090 y(page)c(93\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans) +e(the)h(tilde,)h(consists)f(of)g(a)f(n)m(um)m(b)s(er)f(without)i(a)f +(leading)h(`)p Ft(+)p Fu(')g(or)150 5200 y(`)p Ft(-)p +Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 5340 y(If)e(the)i(login) +g(name)g(is)f(in)m(v)-5 b(alid,)31 b(or)g(the)f(tilde)h(expansion)f +(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)p +eop end %%Page: 23 29 TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)150 299 -y Ft(~)432 b Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft($HOME)150 -474 y(~/foo)240 b($HOME/foo)150 649 y(~fred/foo)630 759 -y Fu(The)30 b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f -(directory)h(of)g(the)f(user)g Ft(fred)150 934 y(~+/foo)192 -b($PWD/foo)150 1109 y(~-/foo)g(${OLDPWD-'~-'}/foo)150 -1284 y(~)p Fj(N)384 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g -(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 -1459 y Ft(~+)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e) -g(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p -Fu(')150 1634 y Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m -(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p -Fj(N)p Fu(')150 1849 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f -(Expansion)150 1996 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m -(tro)s(duces)d(parameter)h(expansion,)j(command)d(substitution,)i(or)e -(arithmetic)150 2105 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 2215 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 2324 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 -2474 y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f -(brace)g(is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m -(y)f(a)150 2584 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 2694 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275 -2844 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)275 299 +y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m(k)m +(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m(wing) +150 408 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p +Ft(=)p Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g +(also)h(p)s(erformed.)52 b(Consequen)m(tly)-8 b(,)37 +b(one)150 518 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g +(assignmen)m(ts)g(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p +Fu(,)e(and)h Ft(CDPATH)p Fu(,)g(and)h(the)g(shell)150 +628 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 761 +y(The)29 b(follo)m(wing)j(table)g(sho)m(ws)e(ho)m(w)g(Bash)h(treats)g +(unquoted)e(tilde-pre\014xes:)150 919 y Ft(~)432 b Fu(The)30 +b(v)-5 b(alue)31 b(of)f Ft($HOME)150 1077 y(~/foo)240 +b($HOME/foo)150 1235 y(~fred/foo)630 1345 y Fu(The)30 +b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f(directory)h(of)g(the) +f(user)g Ft(fred)150 1503 y(~+/foo)192 b($PWD/foo)150 +1661 y(~-/foo)g(${OLDPWD-'~-'}/foo)150 1819 y(~)p Fj(N)384 +b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m +(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 1977 y Ft(~+)p +Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m +(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 2135 +y Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g +(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p Fj(N)p Fu(')150 +2332 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f(Expansion)150 +2479 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m(tro)s(duces)d +(parameter)h(expansion,)j(command)d(substitution,)i(or)e(arithmetic)150 +2589 y(expansion.)d(The)22 b(parameter)h(name)f(or)g(sym)m(b)s(ol)h(to) +g(b)s(e)e(expanded)h(ma)m(y)h(b)s(e)f(enclosed)h(in)f(braces,)i(whic)m +(h)150 2699 y(are)31 b(optional)g(but)f(serv)m(e)h(to)h(protect)f(the)g +(v)-5 b(ariable)31 b(to)g(b)s(e)f(expanded)g(from)g(c)m(haracters)i +(immediately)150 2808 y(follo)m(wing)g(it)f(whic)m(h)f(could)g(b)s(e)g +(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275 2942 +y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f(brace)g +(is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m(y)f(a) +150 3051 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,)j(and)c +(not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,)150 +3161 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275 +3295 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p Fi({)p Fr(parameter)7 b Fi(})p Fu(.)74 b(The)41 b(v)-5 -b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 2953 y(substituted.)43 +b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 3404 y(substituted.)43 b(The)31 b Fr(parameter)39 b Fu(is)31 b(a)h(shell)f(parameter)h(as)g (describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.4)h([Shell)150 -3063 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(89\).)42 -b(The)29 b(braces)150 3172 y(are)j(required)g(when)f +3514 y(P)m(arameters],)e(page)f(18\))h(or)e(an)g(arra)m(y)h(reference)f +(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(91\).)42 +b(The)29 b(braces)150 3624 y(are)j(required)g(when)f Fr(parameter)39 b Fu(is)32 b(a)h(p)s(ositional)f(parameter)h(with)f -(more)g(than)g(one)g(digit,)i(or)e(when)150 3282 y Fr(parameter)37 +(more)g(than)g(one)g(digit,)i(or)e(when)150 3733 y Fr(parameter)37 b Fu(is)31 b(follo)m(w)m(ed)h(b)m(y)e(a)h(c)m(haracter)h(that)f(is)f (not)h(to)g(b)s(e)f(in)m(terpreted)g(as)h(part)f(of)h(its)f(name.)275 -3432 y(If)36 b(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)44 -b Fu(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 3542 y(v)-5 b(ariable)30 -b(indirection.)41 b(Bash)30 b(uses)f(the)g(v)-5 b(alue)30 -b(of)g(the)f(v)-5 b(ariable)30 b(formed)f(from)g(the)h(rest)f(of)h -Fr(parameter)150 3651 y Fu(as)c(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 -3761 y(of)34 b(the)f(substitution,)i(rather)e(than)g(the)h(v)-5 -b(alue)34 b(of)g Fr(parameter)40 b Fu(itself.)51 b(This)33 -b(is)g(kno)m(wn)g(as)h Ft(indirect)150 3871 y(expansion)p -Fu(.)78 b(The)43 b(exceptions)i(to)f(this)f(are)h(the)g(expansions)g -(of)f($)p Fi({)p Fu(!)p Fr(pre\014x)6 b Fu(*)p Fi(})45 -b Fu(and)e($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p Fi(})150 -3980 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41 b(The)28 -b(exclamation)j(p)s(oin)m(t)f(m)m(ust)f(immediately)h(follo)m(w)g(the)g -(left)f(brace)h(in)f(order)f(to)150 4090 y(in)m(tro)s(duce)i -(indirection.)275 4240 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m +3867 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42 +b Fu(is)35 b(an)g(exclamation)i(p)s(oin)m(t)e(\(!\),)i(and)d +Fr(parameter)42 b Fu(is)34 b(not)i(a)150 3977 y Fr(nameref)p +Fu(,)i(it)f(in)m(tro)s(duces)f(a)h(lev)m(el)h(of)f(v)-5 +b(ariable)37 b(indirection.)59 b(Bash)37 b(uses)f(the)g(v)-5 +b(alue)37 b(of)g(the)f(v)-5 b(ariable)150 4086 y(formed)22 +b(from)f(the)h(rest)h(of)f Fr(parameter)29 b Fu(as)22 +b(the)g(name)h(of)f(the)g(v)-5 b(ariable;)26 b(this)c(v)-5 +b(ariable)23 b(is)f(then)g(expanded)150 4196 y(and)34 +b(that)h(v)-5 b(alue)35 b(is)g(used)f(in)g(the)h(rest)g(of)g(the)g +(substitution,)g(rather)g(than)f(the)h(v)-5 b(alue)35 +b(of)g Fr(parameter)150 4305 y Fu(itself.)52 b(This)33 +b(is)g(kno)m(wn)h(as)g Ft(indirect)28 b(expansion)p Fu(.)48 +b(If)33 b Fr(parameter)41 b Fu(is)34 b(a)g(nameref,)h(this)e(expands)g +(to)150 4415 y(the)d(name)g(of)g(the)h(v)-5 b(ariable)30 +b(referenced)g(b)m(y)g Fr(parameter)37 b Fu(instead)31 +b(of)f(p)s(erforming)f(the)h(complete)h(indi-)150 4524 +y(rect)i(expansion.)46 b(The)32 b(exceptions)i(to)f(this)f(are)h(the)f +(expansions)g(of)h($)p Fi({)p Fu(!)p Fr(pre\014x)6 b +Fu(*)p Fi(})33 b Fu(and)f($)p Fi({)p Fu(!)p Fr(name)5 +b Fu([@])p Fi(})150 4634 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41 +b(The)28 b(exclamation)j(p)s(oin)m(t)f(m)m(ust)f(immediately)h(follo)m +(w)g(the)g(left)f(brace)h(in)f(order)f(to)150 4744 y(in)m(tro)s(duce)i +(indirection.)275 4877 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m (w,)i Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j -(parameter)e(expansion,)150 4349 y(command)30 b(substitution,)g(and)g -(arithmetic)i(expansion.)275 4500 y(When)h(not)h(p)s(erforming)e +(parameter)e(expansion,)150 4987 y(command)30 b(substitution,)g(and)g +(arithmetic)i(expansion.)275 5121 y(When)h(not)h(p)s(erforming)e (substring)h(expansion,)h(using)g(the)f(form)h(describ)s(ed)e(b)s(elo)m -(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 4609 y(Bash)d(tests)h(for)e(a)i +(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 5230 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 4719 +b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 5340 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 4828 y(for)36 b(b)s(oth)g -Fr(parameter)7 b Fu('s)37 b(existence)h(and)e(that)i(its)f(v)-5 -b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h(is)e(omitted,)k -(the)150 4938 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150 -5121 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p -Ft(})630 5230 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m -(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k Fu(is)c(substituted.)40 -b(Otherwise,)630 5340 y(the)31 b(v)-5 b(alue)30 b(of)h -Fr(parameter)37 b Fu(is)31 b(substituted.)p eop end +(the)h(op)s(erator)g(tests)p eop end %%Page: 24 30 TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)150 299 -y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 408 -y Fu(If)33 b Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h(the)f -(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h -Fr(parameter)p Fu(.)630 518 y(The)c(v)-5 b(alue)32 b(of)f +y(for)36 b(b)s(oth)g Fr(parameter)7 b Fu('s)37 b(existence)h(and)e +(that)i(its)f(v)-5 b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h +(is)e(omitted,)k(the)150 408 y(op)s(erator)31 b(tests)g(only)f(for)g +(existence.)150 569 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p +Fj(word)p Ft(})630 679 y Fu(If)g Fr(parameter)37 b Fu(is)30 +b(unset)g(or)h(n)m(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k +Fu(is)c(substituted.)40 b(Otherwise,)630 788 y(the)31 +b(v)-5 b(alue)30 b(of)h Fr(parameter)37 b Fu(is)31 b(substituted.)150 +948 y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 +1058 y Fu(If)i Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h +(the)f(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h +Fr(parameter)p Fu(.)630 1167 y(The)c(v)-5 b(alue)32 b(of)f Fr(parameter)38 b Fu(is)31 b(then)g(substituted.)42 b(P)m(ositional)33 -b(parameters)e(and)f(sp)s(ecial)630 628 y(parameters)h(ma)m(y)g(not)f +b(parameters)e(and)f(sp)s(ecial)630 1277 y(parameters)h(ma)m(y)g(not)f (b)s(e)g(assigned)h(to)g(in)f(this)g(w)m(a)m(y)-8 b(.)150 -786 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630 -896 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h +1437 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630 +1547 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h (the)f(expansion)g(of)g Fr(w)m(ord)k Fu(\(or)c(a)h(message)g(to)g(that) -f(e\013ect)630 1005 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h +f(e\013ect)630 1656 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h (is)f(written)g(to)h(the)f(standard)f(error)h(and)f(the)h(shell,)h(if)f -(it)h(is)f(not)630 1115 y(in)m(teractiv)m(e,)33 b(exits.)42 +(it)h(is)f(not)630 1766 y(in)m(teractiv)m(e,)33 b(exits.)42 b(Otherwise,)30 b(the)h(v)-5 b(alue)31 b(of)f Fr(parameter)38 -b Fu(is)30 b(substituted.)150 1273 y Ft(${)p Fj(parameter)p -Ft(:+)p Fj(word)p Ft(})630 1383 y Fu(If)35 b Fr(parameter)42 +b Fu(is)30 b(substituted.)150 1926 y Ft(${)p Fj(parameter)p +Ft(:+)p Fj(word)p Ft(})630 2036 y Fu(If)35 b Fr(parameter)42 b Fu(is)36 b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i -(otherwise)e(the)h(expansion)630 1492 y(of)31 b Fr(w)m(ord)i -Fu(is)e(substituted.)150 1650 y Ft(${)p Fj(parameter)p -Ft(:)p Fj(offset)p Ft(})150 1760 y(${)p Fj(parameter)p -Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 1870 +(otherwise)e(the)h(expansion)630 2145 y(of)31 b Fr(w)m(ord)i +Fu(is)e(substituted.)150 2305 y Ft(${)p Fj(parameter)p +Ft(:)p Fj(offset)p Ft(})150 2415 y(${)p Fj(parameter)p +Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 2524 y Fu(This)f(is)h(referred)f(to)h(as)g(Substring)f(Expansion.)41 b(It)31 b(expands)f(to)h(up)f(to)h Fr(length)g Fu(c)m(harac-)630 -1979 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42 +2634 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42 b Fu(starting)36 b(at)g(the)f(c)m(haracter)i(sp)s(eci\014ed)d(b)m(y)h -Fr(o\013set)p Fu(.)55 b(If)630 2089 y Fr(parameter)32 +Fr(o\013set)p Fu(.)55 b(If)630 2744 y Fr(parameter)32 b Fu(is)26 b(`)p Ft(@)p Fu(',)g(an)f(indexed)g(arra)m(y)h(subscripted)e (b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(or)g(an)f(asso)s -(ciativ)m(e)j(ar-)630 2198 y(ra)m(y)g(name,)h(the)f(results)g(di\013er) +(ciativ)m(e)j(ar-)630 2853 y(ra)m(y)g(name,)h(the)f(results)g(di\013er) g(as)g(describ)s(ed)f(b)s(elo)m(w.)40 b(If)28 b Fr(length)g -Fu(is)g(omitted,)i(it)f(expands)630 2308 y(to)e(the)g(substring)f(of)g +Fu(is)g(omitted,)i(it)f(expands)630 2963 y(to)e(the)g(substring)f(of)g (the)h(v)-5 b(alue)27 b(of)g Fr(parameter)33 b Fu(starting)28 b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)630 -2418 y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the) +3072 y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the) g(v)-5 b(alue.)53 b Fr(length)34 b Fu(and)g Fr(o\013set)j -Fu(are)e(arithmetic)630 2527 y(expressions)30 b(\(see)h(Section)g(6.5)h -([Shell)e(Arithmetic],)i(page)f(87\).)630 2661 y(If)39 +Fu(are)e(arithmetic)630 3182 y(expressions)30 b(\(see)h(Section)g(6.5)h +([Shell)e(Arithmetic],)i(page)f(89\).)630 3317 y(If)39 b Fr(o\013set)k Fu(ev)-5 b(aluates)41 b(to)f(a)g(n)m(um)m(b)s(er)f (less)h(than)f(zero,)k(the)d(v)-5 b(alue)40 b(is)g(used)e(as)i(an)g -(o\013set)630 2771 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h +(o\013set)630 3426 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h (the)g(v)-5 b(alue)34 b(of)g Fr(parameter)p Fu(.)51 b(If)33 -b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 2880 +b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 3536 y(n)m(um)m(b)s(er)23 b(less)h(than)g(zero,)j(it)d(is)h(in)m(terpreted)f (as)g(an)h(o\013set)g(in)f(c)m(haracters)h(from)f(the)g(end)g(of)630 -2990 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38 +3646 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38 b Fu(rather)30 b(than)h(a)g(n)m(um)m(b)s(er)f(of)g(c)m(haracters,)j -(and)d(the)h(expansion)630 3099 y(is)39 b(the)g(c)m(haracters)i(b)s(et) +(and)d(the)h(expansion)630 3755 y(is)39 b(the)g(c)m(haracters)i(b)s(et) m(w)m(een)f Fr(o\013set)i Fu(and)c(that)i(result.)67 -b(Note)40 b(that)g(a)g(negativ)m(e)h(o\013set)630 3209 +b(Note)40 b(that)g(a)g(negativ)m(e)h(o\013set)630 3865 y(m)m(ust)27 b(b)s(e)g(separated)g(from)g(the)g(colon)i(b)m(y)e(at)h (least)g(one)f(space)h(to)g(a)m(v)m(oid)h(b)s(eing)e(confused)630 -3319 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 -3453 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f -(expansion)g(on)g(parameters)h(and)630 3562 y(subscripted)29 -b(arra)m(ys:)630 3696 y Ft($)47 b(string=01234567890abcdefgh)630 -3806 y($)g(echo)g(${string:7})630 3915 y(7890abcdefgh)630 -4025 y($)g(echo)g(${string:7:0})630 4244 y($)g(echo)g(${string:7:2})630 -4354 y(78)630 4463 y($)g(echo)g(${string:7:-2})630 4573 -y(7890abcdef)630 4682 y($)g(echo)g(${string:)e(-7})630 -4792 y(bcdefgh)630 4902 y($)i(echo)g(${string:)e(-7:0})630 -5121 y($)i(echo)g(${string:)e(-7:2})630 5230 y(bc)630 -5340 y($)i(echo)g(${string:)e(-7:-2})p eop end +3974 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 +4109 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f +(expansion)g(on)g(parameters)h(and)630 4219 y(subscripted)29 +b(arra)m(ys:)630 4354 y Ft($)47 b(string=01234567890abcdefgh)630 +4463 y($)g(echo)g(${string:7})630 4573 y(7890abcdefgh)630 +4682 y($)g(echo)g(${string:7:0})630 4902 y($)g(echo)g(${string:7:2})630 +5011 y(78)630 5121 y($)g(echo)g(${string:7:-2})630 5230 +y(7890abcdef)630 5340 y($)g(echo)g(${string:)e(-7})p +eop end %%Page: 25 31 TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)630 299 -y Ft(bcdef)630 408 y($)47 b(set)g(--)h(01234567890abcdefgh)630 -518 y($)f(echo)g(${1:7})630 628 y(7890abcdefgh)630 737 -y($)g(echo)g(${1:7:0})630 956 y($)g(echo)g(${1:7:2})630 -1066 y(78)630 1176 y($)g(echo)g(${1:7:-2})630 1285 y(7890abcdef)630 -1395 y($)g(echo)g(${1:)g(-7})630 1504 y(bcdefgh)630 1614 -y($)g(echo)g(${1:)g(-7:0})630 1833 y($)g(echo)g(${1:)g(-7:2})630 -1943 y(bc)630 2052 y($)g(echo)g(${1:)g(-7:-2})630 2162 -y(bcdef)630 2271 y($)g(array[0]=01234567890abcdef)o(gh)630 -2381 y($)g(echo)g(${array[0]:7})630 2491 y(7890abcdefgh)630 -2600 y($)g(echo)g(${array[0]:7:0})630 2819 y($)g(echo)g -(${array[0]:7:2})630 2929 y(78)630 3039 y($)g(echo)g(${array[0]:7:-2}) -630 3148 y(7890abcdef)630 3258 y($)g(echo)g(${array[0]:)e(-7})630 -3367 y(bcdefgh)630 3477 y($)i(echo)g(${array[0]:)e(-7:0})630 -3696 y($)i(echo)g(${array[0]:)e(-7:2})630 3806 y(bc)630 -3915 y($)i(echo)g(${array[0]:)e(-7:-2})630 4025 y(bcdef)630 -4171 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p +y Ft(bcdefgh)630 408 y($)47 b(echo)g(${string:)e(-7:0})630 +628 y($)i(echo)g(${string:)e(-7:2})630 737 y(bc)630 847 +y($)i(echo)g(${string:)e(-7:-2})630 956 y(bcdef)630 1066 +y($)i(set)g(--)h(01234567890abcdefgh)630 1176 y($)f(echo)g(${1:7})630 +1285 y(7890abcdefgh)630 1395 y($)g(echo)g(${1:7:0})630 +1614 y($)g(echo)g(${1:7:2})630 1724 y(78)630 1833 y($)g(echo)g +(${1:7:-2})630 1943 y(7890abcdef)630 2052 y($)g(echo)g(${1:)g(-7})630 +2162 y(bcdefgh)630 2271 y($)g(echo)g(${1:)g(-7:0})630 +2491 y($)g(echo)g(${1:)g(-7:2})630 2600 y(bc)630 2710 +y($)g(echo)g(${1:)g(-7:-2})630 2819 y(bcdef)630 2929 +y($)g(array[0]=01234567890abcdef)o(gh)630 3039 y($)g(echo)g +(${array[0]:7})630 3148 y(7890abcdefgh)630 3258 y($)g(echo)g +(${array[0]:7:0})630 3477 y($)g(echo)g(${array[0]:7:2})630 +3587 y(78)630 3696 y($)g(echo)g(${array[0]:7:-2})630 +3806 y(7890abcdef)630 3915 y($)g(echo)g(${array[0]:)e(-7})630 +4025 y(bcdefgh)630 4134 y($)i(echo)g(${array[0]:)e(-7:0})630 +4354 y($)i(echo)g(${array[0]:)e(-7:2})630 4463 y(bc)630 +4573 y($)i(echo)g(${array[0]:)e(-7:-2})630 4682 y(bcdef)630 +5011 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p Fu(',)i(the)e(result)g(is)g Fr(length)h Fu(p)s(ositional)f(parameters)h -(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 4281 y(A)36 +(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 5121 y(A)36 b(negativ)m(e)j Fr(o\013set)g Fu(is)e(tak)m(en)g(relativ)m(e)i(to)e (one)g(greater)g(than)f(the)h(greatest)h(p)s(ositional)630 -4390 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5 +5230 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5 b(aluates)30 b(to)e(the)g(last)h(p)s(ositional)g(parameter.)40 -b(It)28 b(is)g(an)630 4500 y(expansion)i(error)g(if)h +b(It)28 b(is)g(an)630 5340 y(expansion)i(error)g(if)h Fr(length)f Fu(ev)-5 b(aluates)32 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i -(than)f(zero.)630 4646 y(The)i(follo)m(wing)i(examples)f(illustrate)h -(substring)d(expansion)i(using)f(p)s(ositional)h(param-)630 -4755 y(eters:)630 4902 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f -(7)h(8)f(9)h(0)f(a)h(b)f(c)g(d)h(e)f(f)h(g)f(h)630 5011 -y($)g(echo)g(${@:7})630 5121 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h -(g)f(h)630 5230 y($)g(echo)g(${@:7:0})p eop end +(than)f(zero.)p eop end %%Page: 26 32 TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)630 299 -y Ft($)47 b(echo)g(${@:7:2})630 408 y(7)g(8)630 518 y($)g(echo)g -(${@:7:-2})630 628 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 -737 y($)g(echo)g(${@:)g(-7:2})630 847 y(b)g(c)630 956 -y($)g(echo)g(${@:0})630 1066 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h -(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 1176 y($)f(echo)g(${@:0:2}) -630 1285 y(./bash)f(1)630 1395 y($)h(echo)g(${@:)g(-7:0})630 -1677 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y) +y(The)32 b(follo)m(wing)i(examples)f(illustrate)h(substring)d +(expansion)i(using)f(p)s(ositional)h(param-)630 408 y(eters:)630 +573 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f(7)h(8)f(9)h(0)f(a)h +(b)f(c)g(d)h(e)f(f)h(g)f(h)630 682 y($)g(echo)g(${@:7})630 +792 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h(g)f(h)630 +902 y($)g(echo)g(${@:7:0})630 1121 y($)g(echo)g(${@:7:2})630 +1230 y(7)g(8)630 1340 y($)g(echo)g(${@:7:-2})630 1450 +y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 1559 +y($)g(echo)g(${@:)g(-7:2})630 1669 y(b)g(c)630 1778 y($)g(echo)g +(${@:0})630 1888 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h(9)f(0)h(a)f +(b)h(c)f(d)g(e)h(f)f(g)h(h)630 1998 y($)f(echo)g(${@:0:2})630 +2107 y(./bash)f(1)630 2217 y($)h(echo)g(${@:)g(-7:0})630 +2491 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y) g(name)g(subscripted)f(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p -Ft(*)p Fu(',)h(the)e(result)g(is)630 1786 y(the)j Fr(length)g +Ft(*)p Fu(',)h(the)e(result)g(is)630 2600 y(the)j Fr(length)g Fu(mem)m(b)s(ers)f(of)h(the)f(arra)m(y)i(b)s(eginning)d(with)i Ft(${)p Fj(parameter)p Ft([)p Fj(offset)p Ft(]})p Fu(.)60 -b(A)630 1896 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h +b(A)630 2710 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h (relativ)m(e)g(to)g(one)f(greater)g(than)g(the)f(maxim)m(um)h(index)f -(of)h(the)630 2005 y(sp)s(eci\014ed)38 b(arra)m(y)-8 +(of)h(the)630 2819 y(sp)s(eci\014ed)38 b(arra)m(y)-8 b(.)65 b(It)38 b(is)g(an)h(expansion)f(error)f(if)i Fr(length)f Fu(ev)-5 b(aluates)40 b(to)f(a)g(n)m(um)m(b)s(er)e(less)630 -2115 y(than)30 b(zero.)630 2287 y(These)23 b(examples)i(sho)m(w)e(ho)m +2929 y(than)30 b(zero.)630 3093 y(These)23 b(examples)i(sho)m(w)e(ho)m (w)h(y)m(ou)g(can)g(use)f(substring)f(expansion)i(with)f(indexed)g -(arra)m(ys:)630 2459 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7) -f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))630 2569 -y($)f(echo)g(${array[@]:7})630 2679 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h -(e)f(f)h(g)f(h)630 2788 y($)g(echo)g(${array[@]:7:2})630 -2898 y(7)g(8)630 3007 y($)g(echo)g(${array[@]:)e(-7:2})630 -3117 y(b)i(c)630 3226 y($)g(echo)g(${array[@]:)e(-7:-2})630 -3336 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630 -3446 y($)g(echo)g(${array[@]:0})630 3555 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f -(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 3665 -y($)g(echo)g(${array[@]:0:2})630 3774 y(0)g(1)630 3884 -y($)g(echo)g(${array[@]:)e(-7:0})630 4166 y Fu(Substring)25 +(arra)m(ys:)630 3258 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7) +f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))630 3367 +y($)f(echo)g(${array[@]:7})630 3477 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h +(e)f(f)h(g)f(h)630 3587 y($)g(echo)g(${array[@]:7:2})630 +3696 y(7)g(8)630 3806 y($)g(echo)g(${array[@]:)e(-7:2})630 +3915 y(b)i(c)630 4025 y($)g(echo)g(${array[@]:)e(-7:-2})630 +4134 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630 +4244 y($)g(echo)g(${array[@]:0})630 4354 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f +(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 4463 +y($)g(echo)g(${array[@]:0:2})630 4573 y(0)g(1)630 4682 +y($)g(echo)g(${array[@]:)e(-7:0})630 4956 y Fu(Substring)25 b(expansion)g(applied)h(to)h(an)f(asso)s(ciativ)m(e)j(arra)m(y)d(pro)s -(duces)f(unde\014ned)f(results.)630 4338 y(Substring)32 +(duces)f(unde\014ned)f(results.)630 5121 y(Substring)32 b(indexing)i(is)f(zero-based)i(unless)e(the)h(p)s(ositional)g -(parameters)g(are)g(used,)g(in)630 4448 y(whic)m(h)29 +(parameters)g(are)g(used,)g(in)630 5230 y(whic)m(h)29 b(case)i(the)f(indexing)g(starts)g(at)g(1)g(b)m(y)g(default.)41 b(If)29 b Fr(o\013set)k Fu(is)d(0,)g(and)f(the)h(p)s(ositional)630 -4557 y(parameters)h(are)f(used,)g Ft($@)g Fu(is)g(pre\014xed)g(to)h -(the)f(list.)150 4792 y Ft(${!)p Fj(prefix)p Ft(*})150 -4902 y(${!)p Fj(prefix)p Ft(@})630 5011 y Fu(Expands)24 -b(to)h(the)g(names)g(of)g(v)-5 b(ariables)26 b(whose)f(names)f(b)s -(egin)h(with)f Fr(pre\014x)p Fu(,)i(separated)f(b)m(y)630 -5121 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Ft(IFS)f -Fu(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29 b(`)p Ft(@)p -Fu(')g(is)g(used)f(and)h(the)g(expan-)630 5230 y(sion)35 -b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5 -b(ariable)36 b(name)f(expands)g(to)g(a)h(separate)630 -5340 y(w)m(ord.)p eop end +5340 y(parameters)h(are)f(used,)g Ft($@)g Fu(is)g(pre\014xed)g(to)h +(the)f(list.)p eop end %%Page: 27 33 TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)150 299 -y Ft(${!)p Fj(name)p Ft([@]})150 408 y(${!)p Fj(name)p -Ft([*]})630 518 y Fu(If)26 b Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v) --5 b(ariable,)29 b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices) -g(\(k)m(eys\))h(assigned)630 628 y(in)c Fr(name)p Fu(.)39 -b(If)24 b Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 -b(,)27 b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 -b(set)h(and)f(n)m(ull)g(otherwise.)630 737 y(When)39 -b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f(the)i(expansion)f(app)s(ears)g -(within)f(double)h(quotes,)k(eac)m(h)d(k)m(ey)630 847 -y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 1011 -y Ft(${#)p Fj(parameter)p Ft(})630 1121 y Fu(The)40 b(length)g(in)g(c)m -(haracters)i(of)e(the)h(expanded)e(v)-5 b(alue)41 b(of)f -Fr(parameter)47 b Fu(is)40 b(substituted.)630 1230 y(If)i -Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p +y Ft(${!)p Fj(prefix)p Ft(*})150 408 y(${!)p Fj(prefix)p +Ft(@})630 518 y Fu(Expands)24 b(to)h(the)g(names)g(of)g(v)-5 +b(ariables)26 b(whose)f(names)f(b)s(egin)h(with)f Fr(pre\014x)p +Fu(,)i(separated)f(b)m(y)630 628 y(the)k(\014rst)f(c)m(haracter)j(of)e +(the)g Ft(IFS)f Fu(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29 +b(`)p Ft(@)p Fu(')g(is)g(used)f(and)h(the)g(expan-)630 +737 y(sion)35 b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5 +b(ariable)36 b(name)f(expands)g(to)g(a)h(separate)630 +847 y(w)m(ord.)150 1066 y Ft(${!)p Fj(name)p Ft([@]})150 +1176 y(${!)p Fj(name)p Ft([*]})630 1285 y Fu(If)26 b +Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v)-5 b(ariable,)29 +b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices)g(\(k)m(eys\))h +(assigned)630 1395 y(in)c Fr(name)p Fu(.)39 b(If)24 b +Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 b(,)27 +b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 b(set)h(and)f(n)m(ull)g +(otherwise.)630 1504 y(When)39 b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f +(the)i(expansion)f(app)s(ears)g(within)f(double)h(quotes,)k(eac)m(h)d +(k)m(ey)630 1614 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 +1833 y Ft(${#)p Fj(parameter)p Ft(})630 1943 y Fu(The)40 +b(length)g(in)g(c)m(haracters)i(of)e(the)h(expanded)e(v)-5 +b(alue)41 b(of)f Fr(parameter)47 b Fu(is)40 b(substituted.)630 +2052 y(If)i Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p Ft(@)p Fu(',)k(the)c(v)-5 b(alue)43 b(substituted)f(is)h(the)g(n)m(um)m -(b)s(er)f(of)h(p)s(ositional)630 1340 y(parameters.)i(If)32 +(b)s(er)f(of)h(p)s(ositional)630 2162 y(parameters.)i(If)32 b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m (y)g(`)p Ft(*)p Fu(')h(or)g(`)p Ft(@)p Fu(',)g(the)g(v)-5 -b(alue)630 1450 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i +b(alue)630 2271 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i (elemen)m(ts)i(in)d(the)h(arra)m(y)-8 b(.)43 b(If)30 -b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 1559 +b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 2381 y(arra)m(y)37 b(name)g(subscripted)f(b)m(y)h(a)g(negativ)m(e)i(n)m(um)m (b)s(er,)f(that)f(n)m(um)m(b)s(er)f(is)g(in)m(terpreted)i(as)630 -1669 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f +2491 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f (index)g(of)g Fr(parameter)p Fu(,)50 b(so)c(negativ)m(e)630 -1778 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f +2600 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f (arra)m(y)-8 b(,)32 b(and)e(an)g(index)g(of)g(-1)h(references)g(the)630 -1888 y(last)g(elemen)m(t.)150 2052 y Ft(${)p Fj(parameter)p -Ft(#)p Fj(word)p Ft(})150 2162 y(${)p Fj(parameter)p -Ft(##)p Fj(word)p Ft(})630 2271 y Fu(The)g Fr(w)m(ord)k +2710 y(last)g(elemen)m(t.)150 2929 y Ft(${)p Fj(parameter)p +Ft(#)p Fj(word)p Ft(})150 3039 y(${)p Fj(parameter)p +Ft(##)p Fj(word)p Ft(})630 3148 y Fu(The)g Fr(w)m(ord)k Fu(is)d(expanded)f(to)i(pro)s(duce)e(a)h(pattern)g(just)f(as)i(in)e -(\014lename)h(expansion)g(\(see)630 2381 y(Section)k(3.5.8)h([Filename) +(\014lename)h(expansion)g(\(see)630 3258 y(Section)k(3.5.8)h([Filename) g(Expansion],)g(page)f(30\).)56 b(If)35 b(the)h(pattern)f(matc)m(hes)i -(the)e(b)s(e-)630 2491 y(ginning)28 b(of)g(the)h(expanded)e(v)-5 +(the)e(b)s(e-)630 3367 y(ginning)28 b(of)g(the)h(expanded)e(v)-5 b(alue)29 b(of)f Fr(parameter)p Fu(,)h(then)f(the)g(result)g(of)h(the)f -(expansion)g(is)630 2600 y(the)36 b(expanded)f(v)-5 b(alue)36 +(expansion)g(is)630 3477 y(the)36 b(expanded)f(v)-5 b(alue)36 b(of)g Fr(parameter)43 b Fu(with)35 b(the)h(shortest)g(matc)m(hing)h -(pattern)f(\(the)g(`)p Ft(#)p Fu(')630 2710 y(case\))26 +(pattern)f(\(the)g(`)p Ft(#)p Fu(')630 3587 y(case\))26 b(or)f(the)g(longest)g(matc)m(hing)h(pattern)f(\(the)g(`)p Ft(##)p Fu(')g(case\))h(deleted.)39 b(If)24 b Fr(parameter)32 -b Fu(is)25 b(`)p Ft(@)p Fu(')630 2819 y(or)j(`)p Ft(*)p +b Fu(is)25 b(`)p Ft(@)p Fu(')630 3696 y(or)j(`)p Ft(*)p Fu(',)i(the)e(pattern)h(remo)m(v)-5 b(al)29 b(op)s(eration)g(is)f (applied)h(to)g(eac)m(h)g(p)s(ositional)g(parameter)g(in)630 -2929 y(turn,)i(and)g(the)h(expansion)g(is)g(the)g(resultan)m(t)g(list.) +3806 y(turn,)i(and)g(the)h(expansion)g(is)g(the)g(resultan)m(t)g(list.) 45 b(If)32 b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(v)-5 -b(ariable)630 3039 y(subscripted)39 b(with)g(`)p Ft(@)p +b(ariable)630 3915 y(subscripted)39 b(with)g(`)p Ft(@)p Fu(')h(or)g(`)p Ft(*)p Fu(',)j(the)d(pattern)h(remo)m(v)-5 b(al)41 b(op)s(eration)f(is)g(applied)g(to)h(eac)m(h)630 -3148 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 3313 +4025 y(mem)m(b)s(er)30 b(of)g(the)h(arra)m(y)g(in)f(turn,)f(and)h(the)h +(expansion)f(is)g(the)h(resultan)m(t)g(list.)150 4244 y Ft(${)p Fj(parameter)p Ft(\045)p Fj(word)p Ft(})150 -3422 y(${)p Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630 -3532 y Fu(The)k Fr(w)m(ord)k Fu(is)c(expanded)g(to)h(pro)s(duce)e(a)i +4354 y(${)p Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630 +4463 y Fu(The)k Fr(w)m(ord)k Fu(is)c(expanded)g(to)h(pro)s(duce)e(a)i (pattern)f(just)g(as)h(in)f(\014lename)h(expansion.)55 -b(If)630 3641 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s +b(If)630 4573 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s (ortion)e(of)h(the)g(expanded)g(v)-5 b(alue)43 b(of)g -Fr(parameter)p Fu(,)630 3751 y(then)c(the)g(result)g(of)h(the)f +Fr(parameter)p Fu(,)630 4682 y(then)c(the)g(result)g(of)h(the)f (expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f Fr(parameter)46 -b Fu(with)39 b(the)h(shortest)630 3861 y(matc)m(hing)31 +b Fu(with)39 b(the)h(shortest)630 4792 y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Ft(\045)p Fu(')g(case\))h(or)e(the)h(longest)h (matc)m(hing)f(pattern)g(\(the)g(`)p Ft(\045\045)p Fu(')g(case\))630 -3970 y(deleted.)49 b(If)32 b Fr(parameter)40 b Fu(is)33 +4902 y(deleted.)49 b(If)32 b Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 -b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 4080 y(eac)m(h)38 +b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 5011 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f(turn,)h(and)e(the)h(expansion)g(is)h -(the)f(resultan)m(t)h(list.)61 b(If)630 4189 y Fr(parameter)38 +(the)f(resultan)m(t)h(list.)61 b(If)630 5121 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h (`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 -b(al)630 4299 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m +b(al)630 5230 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m (b)s(er)e(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g -(is)630 4408 y(the)h(resultan)m(t)g(list.)150 4573 y -Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p -Ft(})630 4682 y Fu(The)37 b Fr(pattern)g Fu(is)g(expanded)g(to)h(pro)s -(duce)e(a)h(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630 -4792 y Fr(P)m(arameter)46 b Fu(is)38 b(expanded)f(and)g(the)i(longest)g -(matc)m(h)g(of)f Fr(pattern)g Fu(against)h(its)f(v)-5 -b(alue)39 b(is)630 4902 y(replaced)34 b(with)e Fr(string)p -Fu(.)49 b(If)33 b Fr(pattern)g Fu(b)s(egins)g(with)f(`)p -Ft(/)p Fu(',)j(all)f(matc)m(hes)g(of)f Fr(pattern)g Fu(are)h(re-)630 -5011 y(placed)28 b(with)f Fr(string)p Fu(.)40 b(Normally)28 -b(only)f(the)h(\014rst)e(matc)m(h)j(is)e(replaced.)40 -b(If)27 b Fr(pattern)g Fu(b)s(egins)630 5121 y(with)34 -b(`)p Ft(#)p Fu(',)h(it)g(m)m(ust)f(matc)m(h)h(at)f(the)h(b)s(eginning) -e(of)h(the)g(expanded)f(v)-5 b(alue)35 b(of)f Fr(parameter)p -Fu(.)630 5230 y(If)g Fr(pattern)g Fu(b)s(egins)g(with)g(`)p -Ft(\045)p Fu(',)h(it)g(m)m(ust)f(matc)m(h)h(at)g(the)f(end)g(of)g(the)h -(expanded)e(v)-5 b(alue)35 b(of)630 5340 y Fr(parameter)p -Fu(.)41 b(If)29 b Fr(string)37 b Fu(is)29 b(n)m(ull,)h(matc)m(hes)h(of) -e Fr(pattern)h Fu(are)g(deleted)g(and)f(the)g Ft(/)g -Fu(follo)m(wing)p eop end +(is)630 5340 y(the)h(resultan)m(t)g(list.)p eop end %%Page: 28 34 TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)630 299 -y Fr(pattern)34 b Fu(ma)m(y)g(b)s(e)f(omitted.)51 b(If)33 -b Fr(parameter)41 b Fu(is)33 b(`)p Ft(@)p Fu(')h(or)g(`)p -Ft(*)p Fu(',)g(the)g(substitution)f(op)s(eration)630 -408 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 518 -y(sultan)m(t)f(list.)59 b(If)36 b Fr(parameter)43 b Fu(is)36 -b(an)g(arra)m(y)h(v)-5 b(ariable)37 b(subscripted)e(with)h(`)p -Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)h(the)630 628 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 737 y(expansion)g(is)h(the)f -(resultan)m(t)h(list.)150 931 y Ft(${)p Fj(parameter)p -Ft(^)p Fj(pattern)p Ft(})150 1040 y(${)p Fj(parameter)p -Ft(^^)p Fj(pattern)p Ft(})150 1150 y(${)p Fj(parameter)p -Ft(,)p Fj(pattern)p Ft(})150 1259 y(${)p Fj(parameter)p -Ft(,,)p Fj(pattern)p Ft(})630 1369 y Fu(This)36 b(expansion)g(mo)s -(di\014es)g(the)g(case)i(of)f(alphab)s(etic)g(c)m(haracters)h(in)e -Fr(parameter)p Fu(.)59 b(The)630 1479 y Fr(pattern)33 -b Fu(is)g(expanded)e(to)j(pro)s(duce)d(a)j(pattern)e(just)g(as)h(in)g -(\014lename)g(expansion.)47 b(Eac)m(h)630 1588 y(c)m(haracter)32 -b(in)e(the)g(expanded)f(v)-5 b(alue)31 b(of)f Fr(parameter)37 -b Fu(is)30 b(tested)h(against)h Fr(pattern)p Fu(,)e(and,)g(if)630 -1698 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 -1807 y(to)f(matc)m(h)g(more)f(than)g(one)g(c)m(haracter.)44 -b(The)30 b(`)p Ft(^)p Fu(')i(op)s(erator)f(con)m(v)m(erts)h(lo)m(w)m -(ercase)i(letters)630 1917 y(matc)m(hing)i Fr(pattern)f -Fu(to)h(upp)s(ercase;)h(the)e(`)p Ft(,)p Fu(')g(op)s(erator)g(con)m(v)m -(erts)i(matc)m(hing)f(upp)s(ercase)630 2027 y(letters)e(to)f(lo)m(w)m -(ercase.)50 b(The)32 b(`)p Ft(^^)p Fu(')h(and)f(`)p Ft(,,)p -Fu(')g(expansions)h(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)630 -2136 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)150 299 +y Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p +Ft(})630 408 y Fu(The)37 b Fr(pattern)g Fu(is)g(expanded)g(to)h(pro)s +(duce)e(a)h(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630 +518 y Fr(P)m(arameter)46 b Fu(is)38 b(expanded)f(and)g(the)i(longest)g +(matc)m(h)g(of)f Fr(pattern)g Fu(against)h(its)f(v)-5 +b(alue)39 b(is)630 628 y(replaced)34 b(with)e Fr(string)p +Fu(.)49 b(If)33 b Fr(pattern)g Fu(b)s(egins)g(with)f(`)p +Ft(/)p Fu(',)j(all)f(matc)m(hes)g(of)f Fr(pattern)g Fu(are)h(re-)630 +737 y(placed)28 b(with)f Fr(string)p Fu(.)40 b(Normally)28 +b(only)f(the)h(\014rst)e(matc)m(h)j(is)e(replaced.)40 +b(If)27 b Fr(pattern)g Fu(b)s(egins)630 847 y(with)34 +b(`)p Ft(#)p Fu(',)h(it)g(m)m(ust)f(matc)m(h)h(at)f(the)h(b)s(eginning) +e(of)h(the)g(expanded)f(v)-5 b(alue)35 b(of)f Fr(parameter)p +Fu(.)630 956 y(If)g Fr(pattern)g Fu(b)s(egins)g(with)g(`)p +Ft(\045)p Fu(',)h(it)g(m)m(ust)f(matc)m(h)h(at)g(the)f(end)g(of)g(the)h +(expanded)e(v)-5 b(alue)35 b(of)630 1066 y Fr(parameter)p +Fu(.)41 b(If)29 b Fr(string)37 b Fu(is)29 b(n)m(ull,)h(matc)m(hes)h(of) +e Fr(pattern)h Fu(are)g(deleted)g(and)f(the)g Ft(/)g +Fu(follo)m(wing)630 1176 y Fr(pattern)k Fu(ma)m(y)h(b)s(e)e(omitted.)50 +b(If)33 b(the)g Ft(nocasematch)d Fu(shell)j(option)h(\(see)g(the)f +(description)630 1285 y(of)28 b Ft(shopt)e Fu(in)h(Section)i(4.3.2)g +([The)e(Shopt)g(Builtin],)i(page)g(64\))g(is)e(enabled,)i(the)e(matc)m +(h)i(is)630 1395 y(p)s(erformed)f(without)j(regard)e(to)i(the)f(case)i +(of)e(alphab)s(etic)g(c)m(haracters.)42 b(If)30 b Fr(parameter)37 +b Fu(is)630 1504 y(`)p Ft(@)p Fu(')31 b(or)g(`)p Ft(*)p +Fu(',)g(the)g(substitution)f(op)s(eration)h(is)g(applied)f(to)i(eac)m +(h)g(p)s(ositional)f(parameter)g(in)630 1614 y(turn,)g(and)g(the)h +(expansion)g(is)g(the)g(resultan)m(t)g(list.)45 b(If)32 +b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(v)-5 b(ariable)630 +1724 y(subscripted)23 b(with)g(`)p Ft(@)p Fu(')i(or)f(`)p +Ft(*)p Fu(',)h(the)g(substitution)e(op)s(eration)i(is)f(applied)g(to)g +(eac)m(h)i(mem)m(b)s(er)630 1833 y(of)31 b(the)f(arra)m(y)h(in)f(turn,) +g(and)f(the)i(expansion)f(is)h(the)f(resultan)m(t)h(list.)150 +1987 y Ft(${)p Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 +2096 y(${)p Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 +2206 y(${)p Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 +2315 y(${)p Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 +2425 y Fu(This)36 b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f +(alphab)s(etic)g(c)m(haracters)h(in)e Fr(parameter)p +Fu(.)59 b(The)630 2534 y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s +(duce)d(a)j(pattern)e(just)g(as)h(in)g(\014lename)g(expansion.)47 +b(Eac)m(h)630 2644 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 +b(alue)31 b(of)f Fr(parameter)37 b Fu(is)30 b(tested)h(against)h +Fr(pattern)p Fu(,)e(and,)g(if)630 2754 y(it)j(matc)m(hes)h(the)g +(pattern,)f(its)h(case)g(is)f(con)m(v)m(erted.)49 b(The)33 +b(pattern)g(should)f(not)h(attempt)630 2863 y(to)f(matc)m(h)g(more)f +(than)g(one)g(c)m(haracter.)44 b(The)30 b(`)p Ft(^)p +Fu(')i(op)s(erator)f(con)m(v)m(erts)h(lo)m(w)m(ercase)i(letters)630 +2973 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p +Ft(,)p Fu(')g(op)s(erator)g(con)m(v)m(erts)i(matc)m(hing)f(upp)s +(ercase)630 3082 y(letters)e(to)f(lo)m(w)m(ercase.)50 +b(The)32 b(`)p Ft(^^)p Fu(')h(and)f(`)p Ft(,,)p Fu(')g(expansions)h +(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)630 +3192 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30 b(the)e(`)p Ft(^)p Fu(')g(and)g(`)p Ft(,)p Fu(')g(expansions)g(matc)m -(h)h(and)f(con)m(v)m(ert)i(only)630 2246 y(the)37 b(\014rst)g(c)m +(h)h(and)f(con)m(v)m(ert)i(only)630 3302 y(the)37 b(\014rst)g(c)m (haracter)i(in)e(the)g(expanded)g(v)-5 b(alue.)61 b(If)37 b Fr(pattern)g Fu(is)h(omitted,)i(it)e(is)f(treated)630 -2355 y(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m +3411 y(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m (ery)f(c)m(haracter.)61 b(If)37 b Fr(parameter)43 b Fu(is)37 b(`)p Ft(@)p Fu(')g(or)f(`)p Ft(*)p Fu(',)j(the)e(case)630 -2465 y(mo)s(di\014cation)29 b(op)s(eration)f(is)g(applied)g(to)h(eac)m +3521 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 -2575 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65 +3630 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65 b(If)37 b Fr(parameter)46 b Fu(is)38 b(an)g(arra)m(y)g(v)-5 -b(ariable)39 b(subscripted)630 2684 y(with)26 b(`)p Ft(@)p +b(ariable)39 b(subscripted)630 3740 y(with)26 b(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)f(case)h(mo)s(di\014cation)f(op)s (eration)h(is)e(applied)h(to)h(eac)m(h)g(mem)m(b)s(er)e(of)h(the)630 -2794 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 3027 y Fk(3.5.4)63 b(Command)41 -b(Substitution)150 3174 y Fu(Command)f(substitution)h(allo)m(ws)i(the)e -(output)g(of)h(a)f(command)g(to)h(replace)g(the)g(command)f(itself.)150 -3284 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 3452 y Ft($\()p Fj(command)p -Ft(\))150 3621 y Fu(or)390 3789 y Ft(`)p Fj(command)p -Ft(`)150 3958 y Fu(Bash)45 b(p)s(erforms)f(the)h(expansion)f(b)m(y)h -(executing)i Fr(command)h Fu(and)c(replacing)i(the)f(command)g(sub-)150 -4067 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.)150 -4177 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 4286 y(command)23 b(substitution)g Ft($\(cat)29 -b Fj(file)p Ft(\))22 b Fu(can)i(b)s(e)f(replaced)g(b)m(y)h(the)f(equiv) --5 b(alen)m(t)25 b(but)e(faster)h Ft($\(<)29 b Fj(file)p -Ft(\))p Fu(.)275 4455 y(When)k(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 4565 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e -(`)p Ft($)p Fu(',)j(`)p Ft(`)p Fu(',)f(or)e(`)p Ft(\\)p -Fu('.)64 b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g -(a)150 4674 y(bac)m(kslash)k(terminates)f(the)h(command)e -(substitution.)72 b(When)41 b(using)f(the)i Ft($\()p -Fj(command)p Ft(\))c Fu(form,)43 b(all)150 4784 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 -4952 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 5062 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m -(kslashes.)275 5230 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 5340 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)p +3850 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h(expansion)f(is)g(the)h +(resultan)m(t)g(list.)150 4003 y Ft(${)p Fj(parameter)p +Ft(@)p Fj(operator)p Ft(})630 4113 y Fu(The)d(expansion)h(is)f(either)h +(a)g(transformation)g(of)g(the)g(v)-5 b(alue)29 b(of)g +Fr(parameter)35 b Fu(or)29 b(informa-)630 4222 y(tion)e(ab)s(out)f +Fr(parameter)33 b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5 +b(alue)26 b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27 +b Fr(op)s(erator)630 4332 y Fu(is)j(a)h(single)g(letter:)630 +4485 y Ft(Q)432 b Fu(The)30 b(expansion)h(is)g(a)g(string)f(that)i(is)f +(the)g(v)-5 b(alue)31 b(of)g Fr(parameter)37 b Fu(quoted)31 +b(in)1110 4595 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i +(input.)630 4748 y Ft(E)432 b Fu(The)48 b(expansion)h(is)g(a)g(string)g +(that)h(is)f(the)g(v)-5 b(alue)49 b(of)g Fr(parameter)56 +b Fu(with)1110 4858 y(bac)m(kslash)36 b(escap)s(e)f(sequences)h +(expanded)e(as)h(with)g(the)g Ft($'...)o(')f Fu(quoting)1110 +4967 y(mec)m(hansim.)630 5121 y Ft(P)432 b Fu(The)22 +b(expansion)h(is)g(a)g(string)g(that)g(is)g(the)g(result)g(of)g +(expanding)f(the)h(v)-5 b(alue)24 b(of)1110 5230 y Fr(parameter)31 +b Fu(as)24 b(if)f(it)h(w)m(ere)g(a)g(prompt)f(string)h(\(see)g(Section) +h(6.9)g([Con)m(trolling)1110 5340 y(the)31 b(Prompt],)f(page)h(94\).)p eop end %%Page: 29 35 TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)150 299 -y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 446 y Fu(Arithmetic)25 -b(expansion)g(allo)m(ws)g(the)g(ev)-5 b(aluation)26 b(of)f(an)f -(arithmetic)i(expression)e(and)g(the)g(substitution)150 -555 y(of)31 b(the)f(result.)41 b(The)30 b(format)g(for)g(arithmetic)i -(expansion)e(is:)390 691 y Ft($\(\()47 b Fj(expression)e -Ft(\)\))275 826 y Fu(The)33 b(expression)g(is)h(treated)g(as)g(if)g(it) -g(w)m(ere)g(within)f(double)h(quotes,)h(but)e(a)h(double)f(quote)h -(inside)150 935 y(the)k(paren)m(theses)g(is)g(not)g(treated)h(sp)s -(ecially)-8 b(.)65 b(All)38 b(tok)m(ens)h(in)f(the)g(expression)f -(undergo)g(parameter)150 1045 y(and)26 b(v)-5 b(ariable)28 -b(expansion,)g(command)e(substitution,)i(and)e(quote)i(remo)m(v)-5 -b(al.)41 b(The)26 b(result)h(is)g(treated)h(as)150 1154 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)630 299 +y Ft(A)432 b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g(form) +g(of)h(an)f(assignmen)m(t)h(statemen)m(t)h(or)1110 408 +y Ft(declare)h Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 +b(will)e(recreate)i Fr(parameter)36 b Fu(with)1110 518 +y(its)31 b(attributes)g(and)e(v)-5 b(alue.)630 680 y +Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f(consisting)h(of)g +(\015ag)g(v)-5 b(alues)30 b(represen)m(ting)h Fr(pa-)1110 +789 y(rameter)7 b Fu('s)31 b(attributes.)630 951 y(If)e +Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p +Ft(*)p Fu(',)g(the)g(op)s(eration)g(is)g(applied)f(to)i(eac)m(h)g(p)s +(ositional)f(parameter)630 1060 y(in)24 b(turn,)g(and)f(the)h +(expansion)g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23 +b Fr(parameter)31 b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630 +1170 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p +Ft(*)p Fu(',)h(the)e(op)s(eration)h(is)g(applied)f(to)h(eac)m(h)h(mem)m +(b)s(er)e(of)h(the)f(arra)m(y)630 1279 y(in)30 b(turn,)g(and)f(the)i +(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 1415 +y(The)22 b(result)g(of)g(the)h(expansion)f(is)g(sub)5 +b(ject)22 b(to)h(w)m(ord)f(splitting)g(and)g(pathname)g(expansion)630 +1524 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 1726 y +Fk(3.5.4)63 b(Command)41 b(Substitution)150 1873 y Fu(Command)f +(substitution)h(allo)m(ws)i(the)e(output)g(of)h(a)f(command)g(to)h +(replace)g(the)g(command)f(itself.)150 1982 y(Command)29 +b(substitution)h(o)s(ccurs)h(when)e(a)i(command)f(is)g(enclosed)h(as)g +(follo)m(ws:)390 2119 y Ft($\()p Fj(command)p Ft(\))150 +2255 y Fu(or)390 2392 y Ft(`)p Fj(command)p Ft(`)150 +2529 y Fu(Bash)20 b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i +Fr(command)h Fu(in)d(a)h(subshell)e(en)m(vironmen)m(t)i(and)f +(replacing)150 2638 y(the)40 b(command)g(substitution)f(with)h(the)g +(standard)f(output)g(of)h(the)g(command,)i(with)e(an)m(y)g(trailing)150 +2748 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g +(not)g(deleted,)j(but)d(they)g(ma)m(y)h(b)s(e)e(remo)m(v)m(ed)i(during) +150 2857 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g +(substitution)h Ft($\(cat)e Fj(file)p Ft(\))g Fu(can)h(b)s(e)g +(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 2967 +y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)275 +3103 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g +(substitution)g(is)g(used,)h(bac)m(kslash)f(retains)h(its)f(literal)150 +3213 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p +Ft($)p Fu(',)j(`)p Ft(`)p Fu(',)f(or)e(`)p Ft(\\)p Fu('.)64 +b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g(a)150 +3323 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72 +b(When)41 b(using)f(the)i Ft($\()p Fj(command)p Ft(\))c +Fu(form,)43 b(all)150 3432 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the) +f(paren)m(theses)h(mak)m(e)g(up)f(the)g(command;)h(none)f(are)h +(treated)g(sp)s(ecially)-8 b(.)275 3569 y(Command)22 +b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 b(T)-8 +b(o)23 b(nest)g(when)f(using)h(the)g(bac)m(kquoted)h(form,)g(escap)s(e) +150 3678 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275 +3815 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f +(quotes,)i(w)m(ord)f(splitting)h(and)f(\014lename)g(expansion)150 +3925 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 +4126 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 4273 +y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5 +b(aluation)26 b(of)f(an)f(arithmetic)i(expression)e(and)g(the)g +(substitution)150 4382 y(of)31 b(the)f(result.)41 b(The)30 +b(format)g(for)g(arithmetic)i(expansion)e(is:)390 4519 +y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 4655 y Fu(The)33 +b(expression)g(is)h(treated)g(as)g(if)g(it)g(w)m(ere)g(within)f(double) +h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 4765 +y(the)k(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8 +b(.)65 b(All)38 b(tok)m(ens)h(in)f(the)g(expression)f(undergo)g +(parameter)150 4875 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g +(command)e(substitution,)i(and)e(quote)i(remo)m(v)-5 +b(al.)41 b(The)26 b(result)h(is)g(treated)h(as)150 4984 y(the)j(arithmetic)g(expression)f(to)h(b)s(e)f(ev)-5 b(aluated.)42 b(Arithmetic)31 b(expansions)g(ma)m(y)g(b)s(e)e(nested.) -275 1290 y(The)34 b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e +275 5121 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 1399 y(Arithmetic],)32 b(page)f(87\).)42 +g(6.5)h([Shell)150 5230 y(Arithmetic],)32 b(page)f(89\).)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 -1509 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s -(ccurs.)150 1709 y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150 -1856 y Fu(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 Fm(fif)n(o)p -Fu(s\))i(or)f(the)150 1965 y Ft(/dev/fd)28 b Fu(metho)s(d)i(of)h -(naming)f(op)s(en)g(\014les.)40 b(It)31 b(tak)m(es)h(the)e(form)g(of) -390 2100 y Ft(<\()p Fj(list)p Ft(\))150 2235 y Fu(or)390 -2370 y Ft(>\()p Fj(list)p Ft(\))150 2506 y Fu(The)c(pro)s(cess)f -Fr(list)k Fu(is)e(run)d(with)i(its)h(input)e(or)h(output)g(connected)h -(to)g(a)g Fm(fif)n(o)f Fu(or)g(some)g(\014le)h(in)f Ft(/dev/fd)p -Fu(.)150 2615 y(The)i(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 2725 y(expansion.)40 b(If)29 b(the)g -Ft(>\()p Fj(list)p Ft(\))f Fu(form)g(is)i(used,)f(writing)g(to)h(the)f -(\014le)h(will)f(pro)m(vide)h(input)e(for)h Fr(list)p -Fu(.)41 b(If)29 b(the)150 2834 y Ft(<\()p Fj(list)p Ft(\))24 -b Fu(form)h(is)h(used,)g(the)g(\014le)g(passed)g(as)g(an)f(argumen)m(t) -i(should)e(b)s(e)g(read)g(to)i(obtain)f(the)g(output)g(of)150 -2944 y Fr(list)p Fu(.)41 b(Note)31 b(that)f(no)g(space)g(ma)m(y)g(app)s -(ear)f(b)s(et)m(w)m(een)h(the)g Ft(<)f Fu(or)h Ft(>)f -Fu(and)g(the)h(left)g(paren)m(thesis,)h(otherwise)150 -3054 y(the)g(construct)f(w)m(ould)g(b)s(e)g(in)m(terpreted)h(as)f(a)h -(redirection.)275 3189 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 3298 y(v)-5 b(ariable)31 -b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.) -150 3498 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 -3645 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g -(expansion,)g(command)g(substitution,)g(and)f(arithmetic)150 -3755 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 3890 y(The)e(shell)g(treats)i -(eac)m(h)g(c)m(haracter)g(of)f Ft($IFS)e Fu(as)i(a)g(delimiter,)h(and)e -(splits)g(the)h(results)f(of)h(the)g(other)150 3999 y(expansions)22 -b(in)m(to)i(w)m(ords)e(using)h(these)g(c)m(haracters)h(as)f(\014eld)f -(terminators.)39 b(If)22 b Ft(IFS)g Fu(is)h(unset,)h(or)e(its)h(v)-5 -b(alue)150 4109 y(is)36 b(exactly)j Ft()p -Fu(,)32 b(the)37 b(default,)h(then)e(sequences)h(of)67 -b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 4219 -y Ft()28 b Fu(at)k(the)f(b)s(eginning)f(and)h(end)f(of)h(the)g -(results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)150 -4328 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f -(at)h(the)f(b)s(eginning)f(or)h(end)f(serv)m(es)h(to)h(delimit)f(w)m -(ords.)150 4438 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 -b(alue)43 b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f -(the)h(whitespace)f(c)m(haracters)150 4547 y Ft(space)26 -b Fu(and)h Ft(tab)g Fu(are)h(ignored)g(at)h(the)f(b)s(eginning)f(and)g -(end)g(of)h(the)g(w)m(ord,)g(as)g(long)g(as)g(the)g(whitespace)150 -4657 y(c)m(haracter)34 b(is)f(in)f(the)h(v)-5 b(alue)33 -b(of)f Ft(IFS)g Fu(\(an)h Ft(IFS)e Fu(whitespace)j(c)m(haracter\).)49 -b(An)m(y)32 b(c)m(haracter)i(in)f Ft(IFS)e Fu(that)150 -4767 y(is)f(not)h Ft(IFS)f Fu(whitespace,)h(along)g(with)f(an)m(y)h -(adjacen)m(t)h Ft(IFS)d Fu(whitespace)i(c)m(haracters,)h(delimits)f(a)g -(\014eld.)150 4876 y(A)h(sequence)h(of)f Ft(IFS)f Fu(whitespace)i(c)m -(haracters)h(is)e(also)h(treated)g(as)g(a)f(delimiter.)47 -b(If)32 b(the)g(v)-5 b(alue)33 b(of)f Ft(IFS)150 4986 -y Fu(is)e(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275 -5121 y(Explicit)44 b(n)m(ull)f(argumen)m(ts)g(\()p Ft("")g -Fu(or)h Ft('')p Fu(\))f(are)g(retained.)80 b(Unquoted)43 -b(implicit)h(n)m(ull)f(argumen)m(ts,)150 5230 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 -5340 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.) -p eop end +5340 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s +(ccurs.)p eop end %%Page: 30 36 TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)275 299 -y(Note)31 b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g -(is)f(p)s(erformed.)150 503 y Fk(3.5.8)63 b(Filename)41 -b(Expansion)150 650 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d -(the)i Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h -(4.3.1)g([The)e(Set)h(Builtin],)150 759 y(page)d(58\),)i(Bash)d(scans)h -(eac)m(h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p -Ft(*)p Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39 -b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 869 y(app)s(ears,)h +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)150 299 +y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150 446 +y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i(a)e(pro)s(cess's)g +(input)f(or)h(output)g(to)h(b)s(e)f(referred)f(to)i(using)f(a)g +(\014lename.)150 555 y(It)d(tak)m(es)i(the)f(form)f(of)390 +696 y Ft(<\()p Fj(list)p Ft(\))150 836 y Fu(or)390 976 +y Ft(>\()p Fj(list)p Ft(\))150 1116 y Fu(The)e(pro)s(cess)h +Fr(list)j Fu(is)d(run)e(async)m(hronously)-8 b(,)30 b(and)e(its)i +(input)e(or)h(output)f(app)s(ears)h(as)g(a)g(\014lename.)41 +b(This)150 1226 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h +(to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g(of)g(the)h +(expansion.)38 b(If)150 1335 y(the)28 b Ft(>\()p Fj(list)p +Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f(will)h +(pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41 b(If)26 +b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 1445 y(is)g(used,)g(the) +f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h(should)e(b)s(e)h(read)h(to) +g(obtain)g(the)f(output)g(of)h Fr(list)p Fu(.)40 b(Note)25 +b(that)150 1555 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m +(een)i(the)f Ft(<)f Fu(or)h Ft(>)f Fu(and)g(the)h(left)h(paren)m +(thesis,)f(otherwise)h(the)f(construct)150 1664 y(w)m(ould)j(b)s(e)g +(in)m(terpreted)g(as)h(a)f(redirection.)59 b(Pro)s(cess)36 +b(substitution)g(is)h(supp)s(orted)d(on)i(systems)g(that)150 +1774 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p +Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g(naming)g(op)s(en)g +(\014les.)275 1914 y(When)36 b(a)m(v)-5 b(ailable,)40 +b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m(ultaneously)i +(with)g(parameter)g(and)150 2024 y(v)-5 b(ariable)31 +b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.) +150 2229 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 +2376 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g +(expansion,)g(command)g(substitution,)g(and)f(arithmetic)150 +2485 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h +(quotes)h(for)f(w)m(ord)g(splitting.)275 2625 y(The)e(shell)g(treats)i +(eac)m(h)g(c)m(haracter)g(of)f Ft($IFS)e Fu(as)i(a)g(delimiter,)h(and)e +(splits)g(the)h(results)f(of)h(the)g(other)150 2735 y(expansions)22 +b(in)m(to)i(w)m(ords)e(using)h(these)g(c)m(haracters)h(as)f(\014eld)f +(terminators.)39 b(If)22 b Ft(IFS)g Fu(is)h(unset,)h(or)e(its)h(v)-5 +b(alue)150 2845 y(is)36 b(exactly)j Ft()p +Fu(,)32 b(the)37 b(default,)h(then)e(sequences)h(of)67 +b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 2954 +y Ft()28 b Fu(at)k(the)f(b)s(eginning)f(and)h(end)f(of)h(the)g +(results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)150 +3064 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f +(at)h(the)f(b)s(eginning)f(or)h(end)f(serv)m(es)h(to)h(delimit)f(w)m +(ords.)150 3173 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 +b(alue)43 b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f +(the)h(whitespace)f(c)m(haracters)150 3283 y Ft(space)p +Fu(,)29 b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g +(the)f(b)s(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as) +g(the)150 3393 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5 +b(alue)27 b(of)g Ft(IFS)e Fu(\(an)i Ft(IFS)e Fu(whitespace)i(c)m +(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 3502 +y Ft(IFS)c Fu(that)h(is)g(not)f Ft(IFS)g Fu(whitespace,)j(along)f(with) +e(an)m(y)h(adjacen)m(t)h Ft(IFS)e Fu(whitespace)h(c)m(haracters,)i +(delimits)150 3612 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f +Ft(IFS)g Fu(whitespace)h(c)m(haracters)h(is)e(also)h(treated)h(as)f(a)f +(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 3721 y(of)31 +b Ft(IFS)e Fu(is)h(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275 +3862 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g +Fu(or)g Ft('')p Fu(\))f(are)h(retained)h(and)e(passed)g(to)i(commands)e +(as)i(empt)m(y)f(strings.)150 3971 y(Unquoted)37 b(implicit)i(n)m(ull)f +(argumen)m(ts,)i(resulting)d(from)g(the)h(expansion)g(of)g(parameters)f +(that)i(ha)m(v)m(e)150 4081 y(no)32 b(v)-5 b(alues,)33 +b(are)f(remo)m(v)m(ed.)47 b(If)32 b(a)g(parameter)h(with)e(no)h(v)-5 +b(alue)33 b(is)f(expanded)f(within)h(double)f(quotes,)j(a)150 +4190 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f +(passed)g(to)i(a)f(command)g(as)g(an)f(empt)m(y)i(string.)40 +b(When)150 4300 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as) +i(part)f(of)g(a)g(w)m(ord)g(whose)g(expansion)g(is)h(non-n)m(ull,)h +(the)e(n)m(ull)150 4409 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69 +b(That)39 b(is,)j(the)e(w)m(ord)f Ft(-d'')f Fu(b)s(ecomes)i +Ft(-d)e Fu(after)i(w)m(ord)f(splitting)h(and)f(n)m(ull)150 +4519 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 4659 y(Note)31 +b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g(is)f(p)s +(erformed.)150 4864 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150 +5011 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d(the)i +Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h(4.3.1)g +([The)e(Set)h(Builtin],)150 5121 y(page)d(60\),)i(Bash)d(scans)h(eac)m +(h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p Ft(*)p +Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39 +b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 5230 y(app)s(ears,)h (then)f(the)h(w)m(ord)f(is)h(regarded)g(as)g(a)g Fr(pattern)p Fu(,)g(and)g(replaced)g(with)f(an)h(alphab)s(etically)h(sorted)150 -979 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(30\).)43 -b(If)150 1088 y(no)26 b(matc)m(hing)i(\014lenames)e(are)h(found,)f(and) -g(the)h(shell)f(option)h Ft(nullglob)d Fu(is)j(disabled,)g(the)g(w)m -(ord)f(is)g(left)150 1198 y(unc)m(hanged.)40 b(If)30 -b(the)g Ft(nullglob)e Fu(option)i(is)h(set,)f(and)g(no)g(matc)m(hes)h -(are)g(found,)e(the)h(w)m(ord)g(is)g(remo)m(v)m(ed.)150 -1307 y(If)i(the)g Ft(failglob)e Fu(shell)i(option)h(is)f(set,)h(and)f -(no)g(matc)m(hes)h(are)g(found,)e(an)h(error)g(message)h(is)f(prin)m -(ted)150 1417 y(and)e(the)g(command)g(is)h(not)f(executed.)42 -b(If)30 b(the)g(shell)h(option)g Ft(nocaseglob)c Fu(is)k(enabled,)f -(the)h(matc)m(h)g(is)150 1527 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 -1666 y(When)23 b(a)h(pattern)f(is)h(used)f(for)g(\014lename)h -(expansion,)h(the)e(c)m(haracter)i(`)p Ft(.)p Fu(')f(at)g(the)g(start)g -(of)g(a)g(\014lename)150 1775 y(or)f(immediately)i(follo)m(wing)g(a)f -(slash)f(m)m(ust)h(b)s(e)f(matc)m(hed)h(explicitly)-8 -b(,)27 b(unless)c(the)g(shell)h(option)g Ft(dotglob)150 -1885 y Fu(is)33 b(set.)51 b(When)33 b(matc)m(hing)h(a)g(\014lename,)h -(the)e(slash)h(c)m(haracter)h(m)m(ust)e(alw)m(a)m(ys)i(b)s(e)e(matc)m -(hed)h(explicitly)-8 b(.)150 1994 y(In)30 b(other)g(cases,)i(the)e(`)p -Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8 -b(.)275 2134 y(See)28 b(the)g(description)g(of)g Ft(shopt)e -Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i(page)g(62,)g(for)f -(a)g(descrip-)150 2243 y(tion)j(of)f(the)h Ft(nocaseglob)p -Fu(,)d Ft(nullglob)p Fu(,)g Ft(failglob)p Fu(,)h(and)g -Ft(dotglob)g Fu(options.)275 2383 y(The)j Ft(GLOBIGNORE)f -Fu(shell)i(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(used)f(to)i(restrict)g -(the)g(set)f(of)h(\014lenames)f(matc)m(hing)i(a)150 2492 -y(pattern.)k(If)25 b Ft(GLOBIGNORE)e Fu(is)j(set,)h(eac)m(h)g(matc)m -(hing)g(\014lename)f(that)g(also)h(matc)m(hes)f(one)g(of)g(the)g -(patterns)150 2602 y(in)39 b Ft(GLOBIGNORE)d Fu(is)j(remo)m(v)m(ed)h -(from)e(the)h(list)h(of)f(matc)m(hes.)67 b(The)39 b(\014lenames)g -Ft(.)f Fu(and)h Ft(..)f Fu(are)h(alw)m(a)m(ys)150 2711 -y(ignored)33 b(when)e Ft(GLOBIGNORE)f Fu(is)j(set)g(and)f(not)h(n)m -(ull.)48 b(Ho)m(w)m(ev)m(er,)35 b(setting)f Ft(GLOBIGNORE)c -Fu(to)j(a)g(non-n)m(ull)150 2821 y(v)-5 b(alue)34 b(has)f(the)h -(e\013ect)h(of)f(enabling)g(the)g Ft(dotglob)e Fu(shell)h(option,)j(so) -e(all)g(other)g(\014lenames)g(b)s(eginning)150 2930 y(with)43 -b(a)h(`)p Ft(.)p Fu(')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 3040 y(`)p Ft(.)p Fu(',)c(mak)m(e)g(`)p -Ft(.*)p Fu(')e(one)g(of)g(the)h(patterns)f(in)g Ft(GLOBIGNORE)p -Fu(.)58 b(The)37 b Ft(dotglob)e Fu(option)j(is)f(disabled)g(when)150 -3150 y Ft(GLOBIGNORE)28 b Fu(is)i(unset.)150 3354 y Fk(3.5.8.1)63 -b(P)m(attern)40 b(Matc)m(hing)150 3501 y Fu(An)m(y)24 -b(c)m(haracter)h(that)f(app)s(ears)f(in)g(a)h(pattern,)i(other)e(than)f -(the)h(sp)s(ecial)g(pattern)g(c)m(haracters)h(describ)s(ed)150 -3610 y(b)s(elo)m(w,)31 b(matc)m(hes)g(itself.)42 b(The)29 -b Fm(nul)h Fu(c)m(haracter)i(ma)m(y)e(not)h(o)s(ccur)f(in)g(a)h -(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s(es)150 3720 -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 3829 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 3969 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 4135 y Ft(*)432 -b Fu(Matc)m(hes)31 b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g -(string.)41 b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630 -4245 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h -(\014lename)g(expansion)g(con)m(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p -Ft(*)p Fu('s)630 4354 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc) -m(h)i(all)f(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630 -4464 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p -Ft(/)p Fu(',)h(t)m(w)m(o)g(adjacen)m(t)h(`)p Ft(*)p Fu('s)e(will)g -(matc)m(h)h(only)f(directories)630 4573 y(and)k(sub)s(directories.)150 -4737 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.) -150 4902 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g -(the)g(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters) -i(separated)e(b)m(y)g(a)630 5011 y(h)m(yphen)k(denotes)i(a)g -Fr(range)g(expression)p Fu(;)f(an)m(y)h(c)m(haracter)h(that)f(falls)g -(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 5121 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 5230 y(set,)31 b(is)f(matc)m(hed.)42 -b(If)30 b(the)g(\014rst)g(c)m(haracter)i(follo)m(wing)g(the)e(`)p -Ft([)p Fu(')h(is)f(a)h(`)p Ft(!)p Fu(')f(or)g(a)h(`)p -Ft(^)p Fu(')g(then)f(an)m(y)630 5340 y(c)m(haracter)c(not)f(enclosed)g -(is)g(matc)m(hed.)40 b(A)25 b(`)p Fq(\000)p Fu(')f(ma)m(y)i(b)s(e)e -(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)p eop -end +5340 y(list)k(of)f(\014lenames)g(matc)m(hing)h(the)f(pattern)g(\(see)h +(Section)f(3.5.8.1)j([P)m(attern)e(Matc)m(hing],)h(page)f(31\).)43 +b(If)p eop end %%Page: 31 37 TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)630 299 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)150 299 +y(no)26 b(matc)m(hing)i(\014lenames)e(are)h(found,)f(and)g(the)h(shell) +f(option)h Ft(nullglob)d Fu(is)j(disabled,)g(the)g(w)m(ord)f(is)g(left) +150 408 y(unc)m(hanged.)40 b(If)30 b(the)g Ft(nullglob)e +Fu(option)i(is)h(set,)f(and)g(no)g(matc)m(hes)h(are)g(found,)e(the)h(w) +m(ord)g(is)g(remo)m(v)m(ed.)150 518 y(If)i(the)g Ft(failglob)e +Fu(shell)i(option)h(is)f(set,)h(and)f(no)g(matc)m(hes)h(are)g(found,)e +(an)h(error)g(message)h(is)f(prin)m(ted)150 628 y(and)e(the)g(command)g +(is)h(not)f(executed.)42 b(If)30 b(the)g(shell)h(option)g +Ft(nocaseglob)c Fu(is)k(enabled,)f(the)h(matc)m(h)g(is)150 +737 y(p)s(erformed)e(without)h(regard)h(to)g(the)f(case)i(of)e(alphab)s +(etic)h(c)m(haracters.)275 876 y(When)23 b(a)h(pattern)f(is)h(used)f +(for)g(\014lename)h(expansion,)h(the)e(c)m(haracter)i(`)p +Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g(\014lename)150 +985 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s(e)f +(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option)g +Ft(dotglob)150 1095 y Fu(is)33 b(set.)51 b(When)33 b(matc)m(hing)h(a)g +(\014lename,)h(the)e(slash)h(c)m(haracter)h(m)m(ust)e(alw)m(a)m(ys)i(b) +s(e)e(matc)m(hed)h(explicitly)-8 b(.)150 1205 y(In)30 +b(other)g(cases,)i(the)e(`)p Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h +(treated)g(sp)s(ecially)-8 b(.)275 1343 y(See)28 b(the)g(description)g +(of)g Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i +(page)g(64,)g(for)f(a)g(descrip-)150 1453 y(tion)j(of)f(the)h +Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(failglob)p +Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 1592 y(The)j +Ft(GLOBIGNORE)f Fu(shell)i(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(used)f +(to)i(restrict)g(the)g(set)f(of)h(\014lenames)f(matc)m(hing)i(a)150 +1701 y(pattern.)k(If)25 b Ft(GLOBIGNORE)e Fu(is)j(set,)h(eac)m(h)g +(matc)m(hing)g(\014lename)f(that)g(also)h(matc)m(hes)f(one)g(of)g(the)g +(patterns)150 1811 y(in)36 b Ft(GLOBIGNORE)d Fu(is)j(remo)m(v)m(ed)h +(from)e(the)i(list)f(of)g(matc)m(hes.)59 b(If)36 b(the)g +Ft(nocaseglob)d Fu(option)k(is)f(set,)i(the)150 1920 +y(matc)m(hing)i(against)g(the)f(patterns)f(in)h Ft(GLOBIGNORE)d +Fu(is)j(p)s(erformed)e(without)h(regard)h(to)h(case.)66 +b(The)150 2030 y(\014lenames)41 b Ft(.)f Fu(and)g Ft(..)h +Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)e +Fu(is)i(set)i(and)e(not)h(n)m(ull.)72 b(Ho)m(w)m(ev)m(er,)150 +2139 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5 +b(alue)30 b(has)f(the)g(e\013ect)i(of)f(enabling)f(the)h +Ft(dotglob)d Fu(shell)i(option,)150 2249 y(so)j(all)h(other)f +(\014lenames)g(b)s(eginning)f(with)h(a)g(`)p Ft(.)p Fu(')g(will)h(matc) +m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s(eha)m(vior)g(of)h +(ignoring)150 2359 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p +Ft(.)p Fu(',)f(mak)m(e)h(`)p Ft(.*)p Fu(')f(one)h(of)f(the)g(patterns)g +(in)g Ft(GLOBIGNORE)p Fu(.)37 b(The)29 b Ft(dotglob)150 +2468 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d +Fu(is)k(unset.)150 2672 y Fk(3.5.8.1)63 b(P)m(attern)40 +b(Matc)m(hing)150 2819 y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s +(ears)f(in)g(a)h(pattern,)i(other)e(than)f(the)h(sp)s(ecial)g(pattern)g +(c)m(haracters)h(describ)s(ed)150 2928 y(b)s(elo)m(w,)31 +b(matc)m(hes)g(itself.)42 b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y) +e(not)h(o)s(ccur)f(in)g(a)h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s +(es)150 3038 y(the)38 b(follo)m(wing)g(c)m(haracter;)43 +b(the)37 b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m +(hing.)63 b(The)36 b(sp)s(ecial)150 3147 y(pattern)30 +b(c)m(haracters)i(m)m(ust)f(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s +(e)d(matc)m(hed)i(literally)-8 b(.)275 3286 y(The)29 +b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m(e)f(the)g(follo)m +(wing)h(meanings:)150 3452 y Ft(*)432 b Fu(Matc)m(hes)31 +b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g(string.)41 +b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630 +3561 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h +(\014lename)g(expansion)g(con)m(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p +Ft(*)p Fu('s)630 3671 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc) +m(h)i(all)f(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630 +3780 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p +Ft(/)p Fu(',)h(t)m(w)m(o)g(adjacen)m(t)h(`)p Ft(*)p Fu('s)e(will)g +(matc)m(h)h(only)f(directories)630 3890 y(and)k(sub)s(directories.)150 +4054 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.) +150 4217 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g +(the)g(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters) +i(separated)e(b)m(y)g(a)630 4327 y(h)m(yphen)k(denotes)i(a)g +Fr(range)g(expression)p Fu(;)f(an)m(y)h(c)m(haracter)h(that)f(falls)g +(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 4436 y(c)m(haracters,)d +(inclusiv)m(e,)f(using)d(the)h(curren)m(t)f(lo)s(cale's)j(collating)g +(sequence)e(and)f(c)m(haracter)630 4546 y(set,)31 b(is)f(matc)m(hed.)42 +b(If)30 b(the)g(\014rst)g(c)m(haracter)i(follo)m(wing)g(the)e(`)p +Ft([)p Fu(')h(is)f(a)h(`)p Ft(!)p Fu(')f(or)g(a)h(`)p +Ft(^)p Fu(')g(then)f(an)m(y)630 4655 y(c)m(haracter)c(not)f(enclosed)g +(is)g(matc)m(hed.)40 b(A)25 b(`)p Fq(\000)p Fu(')f(ma)m(y)i(b)s(e)e +(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 4765 y(\014rst)32 b(or)h(last)h(c)m(haracter)h(in)e(the)g(set.)50 b(A)33 b(`)p Ft(])p Fu(')g(ma)m(y)h(b)s(e)e(matc)m(hed)i(b)m(y)f -(including)g(it)g(as)h(the)630 408 y(\014rst)25 b(c)m(haracter)i(in)e +(including)g(it)g(as)h(the)630 4875 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 518 y(determined)h(b)m(y)h(the)g(curren)m -(t)f(lo)s(cale)j(and)d(the)h(v)-5 b(alues)27 b(of)g(the)g -Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 628 y Fu(shell)31 -b(v)-5 b(ariables,)31 b(if)f(set.)630 758 y(F)-8 b(or)34 +(range)g(expressions)f(is)630 4984 y(determined)h(b)m(y)h(the)g(curren) +m(t)f(lo)s(cale)j(and)d(the)h(v)-5 b(alues)27 b(of)g(the)g +Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 5094 y Fu(shell)31 +b(v)-5 b(ariables,)31 b(if)f(set.)630 5230 y(F)-8 b(or)34 b(example,)g(in)f(the)g(default)g(C)f(lo)s(cale,)k(`)p Ft([a-dx-z])p Fu(')31 b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p -Ft([abcdxyz])p Fu('.)630 868 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m +Ft([abcdxyz])p Fu('.)630 5340 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m (haracters)h(in)e(dictionary)i(order,)76 b(and)67 b(in)g(these)h(lo)s -(cales)630 977 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e -(equiv)-5 b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m -(t)f(b)s(e)f(equiv)-5 b(alen)m(t)630 1087 y(to)34 b(`)p -Ft([aBbCcDdxXyYz])p Fu(',)c(for)j(example.)49 b(T)-8 -b(o)33 b(obtain)h(the)f(traditional)h(in)m(terpretation)h(of)630 -1196 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 -1306 y(the)c Ft(LC_COLLATE)e Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i -(v)-5 b(ariable)30 b(to)g(the)f(v)-5 b(alue)30 b(`)p -Ft(C)p Fu(',)g(or)f(enable)h(the)630 1416 y Ft(globasciiranges)c -Fu(shell)31 b(option.)630 1546 y(Within)23 b(`)p Ft([)p -Fu(')h(and)e(`)p Ft(])p Fu(',)j Fr(c)m(haracter)g(classes)j -Fu(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f(the)i(syn)m(tax)f -Ft([:)p Fr(class)t Ft(:])p Fu(,)630 1656 y(where)30 b -Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h(follo)m(wing)h(classes)f -(de\014ned)e(in)h(the)h Fm(posix)f Fu(standard:)870 1786 -y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g(lower) -870 1896 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630 -2026 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m(y)f(c)m -(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 b(The)41 -b Ft(word)630 2135 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h -(letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p -Ft(_)p Fu('.)630 2266 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p -Ft(])p Fu(',)i(an)e Fr(equiv)-5 b(alence)26 b(class)j -Fu(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h -Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 2375 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 2485 -y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h -Fr(c)p Fu(.)630 2615 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p -Ft(])p Fu(',)j(the)d(syn)m(tax)h Ft([.)p Fr(sym)m(b)s(ol)t -Ft(.])e Fu(matc)m(hes)i(the)g(collating)i(sym)m(b)s(ol)d -Fr(sym)m(b)s(ol)p Fu(.)275 2767 y(If)29 b(the)g Ft(extglob)f -Fu(shell)h(option)h(is)g(enabled)f(using)g(the)h Ft(shopt)e -Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 2876 -y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58 -b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fr(pattern-list)j -Fu(is)d(a)g(list)g(of)150 2986 y(one)d(or)f(more)h(patterns)f -(separated)h(b)m(y)f(a)h(`)p Ft(|)p Fu('.)47 b(Comp)s(osite)33 -b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150 -3095 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 -3247 y Ft(?\()p Fj(pattern-list)p Ft(\))630 3356 y Fu(Matc)m(hes)h -(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150 -3507 y Ft(*\()p Fj(pattern-list)p Ft(\))630 3617 y Fu(Matc)m(hes)h -(zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.) -150 3768 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3878 -y Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m -(en)i(patterns.)150 4029 y Ft(@\()p Fj(pattern-list)p -Ft(\))630 4138 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) -150 4290 y Ft(!\()p Fj(pattern-list)p Ft(\))630 4399 -y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g -(patterns.)150 4590 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 -b(al)150 4737 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f -(unquoted)f(o)s(ccurrences)h(of)g(the)h(c)m(haracters)g(`)p -Ft(\\)p Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p Ft(")p Fu(')150 -4847 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 5071 y Fs(3.6)68 -b(Redirections)150 5230 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h -(its)f(input)e(and)h(output)h(ma)m(y)g(b)s(e)f Fr(redirected)k -Fu(using)c(a)i(sp)s(ecial)f(no-)150 5340 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,)p eop end +(cales)p eop end %%Page: 32 38 TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)150 299 -y(op)s(ened,)28 b(closed,)i(made)e(to)h(refer)f(to)h(di\013eren)m(t)f +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)630 299 +y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e(equiv)-5 +b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m(t)f(b)s(e)f +(equiv)-5 b(alen)m(t)630 408 y(to)34 b(`)p Ft([aBbCcDdxXyYz])p +Fu(',)c(for)j(example.)49 b(T)-8 b(o)33 b(obtain)h(the)f(traditional)h +(in)m(terpretation)h(of)630 518 y(ranges)e(in)f(brac)m(k)m(et)i +(expressions,)g(y)m(ou)f(can)g(force)g(the)g(use)f(of)h(the)g(C)f(lo)s +(cale)i(b)m(y)f(setting)630 628 y(the)c Ft(LC_COLLATE)e +Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i(v)-5 b(ariable)30 +b(to)g(the)f(v)-5 b(alue)30 b(`)p Ft(C)p Fu(',)g(or)f(enable)h(the)630 +737 y Ft(globasciiranges)c Fu(shell)31 b(option.)630 +873 y(Within)23 b(`)p Ft([)p Fu(')h(and)e(`)p Ft(])p +Fu(',)j Fr(c)m(haracter)g(classes)j Fu(can)c(b)s(e)e(sp)s(eci\014ed)h +(using)f(the)i(syn)m(tax)f Ft([:)p Fr(class)t Ft(:])p +Fu(,)630 983 y(where)30 b Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h +(follo)m(wing)h(classes)f(de\014ned)e(in)h(the)h Fm(posix)f +Fu(standard:)870 1119 y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g +(digit)g(graph)g(lower)870 1228 y(print)g(punct)g(space)f(upper)h(word) +190 b(xdigit)630 1364 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h +(an)m(y)f(c)m(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 +b(The)41 b Ft(word)630 1474 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h +(letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p +Ft(_)p Fu('.)630 1610 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p +Ft(])p Fu(',)i(an)e Fr(equiv)-5 b(alence)26 b(class)j +Fu(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h +Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 1720 y(whic)m(h)29 +b(matc)m(hes)i(all)f(c)m(haracters)h(with)e(the)h(same)g(collation)h(w) +m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 1829 +y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h +Fr(c)p Fu(.)630 1965 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p +Ft(])p Fu(',)j(the)d(syn)m(tax)h Ft([.)p Fr(sym)m(b)s(ol)t +Ft(.])e Fu(matc)m(hes)i(the)g(collating)i(sym)m(b)s(ol)d +Fr(sym)m(b)s(ol)p Fu(.)275 2129 y(If)29 b(the)g Ft(extglob)f +Fu(shell)h(option)h(is)g(enabled)f(using)g(the)h Ft(shopt)e +Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 2239 +y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58 +b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fr(pattern-list)j +Fu(is)d(a)g(list)g(of)150 2348 y(one)d(or)f(more)h(patterns)f +(separated)h(b)m(y)f(a)h(`)p Ft(|)p Fu('.)47 b(Comp)s(osite)33 +b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150 +2458 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 +2622 y Ft(?\()p Fj(pattern-list)p Ft(\))630 2731 y Fu(Matc)m(hes)h +(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150 +2894 y Ft(*\()p Fj(pattern-list)p Ft(\))630 3003 y Fu(Matc)m(hes)h +(zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.) +150 3166 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3275 +y Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m +(en)i(patterns.)150 3437 y Ft(@\()p Fj(pattern-list)p +Ft(\))630 3547 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) +150 3709 y Ft(!\()p Fj(pattern-list)p Ft(\))630 3819 +y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g +(patterns.)150 4021 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 +b(al)150 4168 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f +(unquoted)f(o)s(ccurrences)h(of)g(the)h(c)m(haracters)g(`)p +Ft(\\)p Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p Ft(")p Fu(')150 +4278 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g(the)f(ab)s(o)m(v)m +(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 4523 y Fs(3.6)68 +b(Redirections)150 4682 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h +(its)f(input)e(and)h(output)h(ma)m(y)g(b)s(e)f Fr(redirected)k +Fu(using)c(a)i(sp)s(ecial)f(no-)150 4792 y(tation)d(in)m(terpreted)f(b) +m(y)f(the)h(shell.)40 b(Redirection)27 b(allo)m(ws)h(commands')f +(\014le)f(handles)g(to)i(b)s(e)e(duplicated,)150 4902 +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 408 y(from)39 b(and)g(writes)h(to.)69 b(Redirection)40 +(reads)150 5011 y(from)39 b(and)g(writes)h(to.)69 b(Redirection)40 b(ma)m(y)g(also)h(b)s(e)e(used)g(to)h(mo)s(dify)f(\014le)g(handles)g -(in)g(the)h(curren)m(t)150 518 y(shell)e(execution)h(en)m(vironmen)m +(in)g(the)h(curren)m(t)150 5121 y(shell)e(execution)h(en)m(vironmen)m (t.)65 b(The)37 b(follo)m(wing)j(redirection)f(op)s(erators)f(ma)m(y)g -(precede)h(or)f(app)s(ear)150 628 y(an)m(ywhere)30 b(within)f(a)h +(precede)h(or)f(app)s(ear)150 5230 y(an)m(ywhere)30 b(within)f(a)h (simple)f(command)h(or)f(ma)m(y)i(follo)m(w)g(a)f(command.)40 -b(Redirections)30 b(are)g(pro)s(cessed)150 737 y(in)g(the)h(order)f -(they)g(app)s(ear,)g(from)g(left)h(to)g(righ)m(t.)275 -880 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 990 y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f -Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)74 b(In)41 b(this)g(case,)k -(for)c(eac)m(h)i(redirection)f(op)s(erator)150 1100 y(except)30 -b Ft(>)p Fu(&-)f(and)f Ft(<)p Fu(&-,)h(the)g(shell)g(will)h(allo)s -(cate)h(a)e(\014le)h(descriptor)e(greater)j(than)d(10)i(and)e(assign)i -(it)f(to)150 1209 y Fi({)p Fr(v)-5 b(arname)5 b Fi(})p -Fu(.)45 b(If)31 b Ft(>)p Fu(&-)g(or)h Ft(<)p Fu(&-)f(is)h(preceded)f(b) -m(y)g Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(,)33 b(the)f(v)-5 -b(alue)32 b(of)g Fr(v)-5 b(arname)36 b Fu(de\014nes)31 -b(the)h(\014le)150 1319 y(descriptor)e(to)h(close.)275 -1462 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 1572 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g -(is)g(`)p Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g -(standard)f(input)f(\(\014le)150 1681 y(descriptor)33 -b(0\).)49 b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f -(redirection)g(op)s(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection) -g(refers)150 1791 y(to)e(the)g(standard)e(output)h(\(\014le)h -(descriptor)f(1\).)275 1934 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 2043 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 2153 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 2263 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 -2406 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 -2549 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 2692 y -Fu(directs)28 b(b)s(oth)f(standard)g(output)g(\(\014le)h(descriptor)f -(1\))i(and)e(standard)f(error)i(\(\014le)g(descriptor)f(2\))h(to)h(the) -150 2802 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 -2945 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 3088 y Fu(directs)28 -b(only)f(the)h(standard)e(output)i(to)g(\014le)f Fr(dirlist)p -Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h(made)f(a)h(cop)m -(y)150 3198 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g -(standard)g(output)g(w)m(as)g(redirected)h(to)g Fr(dirlist)p -Fu(.)275 3341 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 3450 y(in)k(the)h(follo)m(wing)g(table:)150 -3623 y Ft(/dev/fd/)p Fj(fd)630 3732 y Fu(If)f Fr(fd)j -Fu(is)d(a)h(v)-5 b(alid)31 b(in)m(teger,)h(\014le)e(descriptor)h -Fr(fd)i Fu(is)d(duplicated.)150 3901 y Ft(/dev/stdin)630 -4010 y Fu(File)i(descriptor)e(0)h(is)f(duplicated.)150 -4178 y Ft(/dev/stdout)630 4288 y Fu(File)i(descriptor)e(1)h(is)f -(duplicated.)150 4456 y Ft(/dev/stderr)630 4565 y Fu(File)i(descriptor) -e(2)h(is)f(duplicated.)150 4734 y Ft(/dev/tcp/)p Fj(host)p -Ft(/)p Fj(port)630 4843 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 -b(alid)41 b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c -Fr(p)s(ort)j Fu(is)f(an)f(in)m(teger)i(p)s(ort)630 4953 -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 -5121 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630 5230 -y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 b(hostname)h(or)f(In) -m(ternet)h(address,)i(and)c Fr(p)s(ort)j Fu(is)f(an)f(in)m(teger)i(p)s -(ort)630 5340 y(n)m(um)m(b)s(er)23 b(or)h(service)h(name,)h(Bash)e -(attempts)h(to)g(op)s(en)f(the)g(corresp)s(onding)f(UDP)i(so)s(c)m(k)m -(et.)p eop end +b(Redirections)30 b(are)g(pro)s(cessed)150 5340 y(in)g(the)h(order)f +(they)g(app)s(ear,)g(from)g(left)h(to)g(righ)m(t.)p eop +end %%Page: 33 39 TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)275 299 -y(A)30 b(failure)h(to)g(op)s(en)e(or)i(create)h(a)e(\014le)h(causes)g -(the)f(redirection)h(to)g(fail.)275 439 y(Redirections)f(using)e -(\014le)i(descriptors)f(greater)h(than)f(9)h(should)e(b)s(e)h(used)f -(with)h(care,)h(as)g(they)f(ma)m(y)150 548 y(con\015ict)i(with)f -(\014le)h(descriptors)f(the)g(shell)h(uses)f(in)m(ternally)-8 -b(.)150 753 y Fk(3.6.1)63 b(Redirecting)40 b(Input)150 -900 y Fu(Redirection)35 b(of)f(input)f(causes)i(the)f(\014le)g(whose)g -(name)g(results)g(from)g(the)g(expansion)g(of)g Fr(w)m(ord)k -Fu(to)d(b)s(e)150 1010 y(op)s(ened)d(for)g(reading)g(on)g(\014le)h -(descriptor)f Ft(n)p Fu(,)h(or)f(the)g(standard)g(input)f(\(\014le)i -(descriptor)f(0\))h(if)f Ft(n)g Fu(is)h(not)150 1119 -y(sp)s(eci\014ed.)275 1259 y(The)c(general)j(format)e(for)h -(redirecting)g(input)e(is:)390 1399 y Ft([)p Fj(n)p Ft(]<)p -Fj(word)150 1604 y Fk(3.6.2)63 b(Redirecting)40 b(Output)150 -1751 y Fu(Redirection)31 b(of)g(output)f(causes)h(the)f(\014le)h(whose) -f(name)g(results)h(from)e(the)i(expansion)f(of)h Fr(w)m(ord)i -Fu(to)f(b)s(e)150 1861 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h -(descriptor)f Fr(n)p Fu(,)g(or)g(the)h(standard)e(output)h(\(\014le)h -(descriptor)f(1\))h(if)g Fr(n)e Fu(is)i(not)150 1970 -y(sp)s(eci\014ed.)40 b(If)30 b(the)g(\014le)h(do)s(es)f(not)h(exist)g -(it)g(is)f(created;)i(if)e(it)h(do)s(es)f(exist)h(it)g(is)g(truncated)f -(to)h(zero)g(size.)275 2110 y(The)e(general)j(format)e(for)h -(redirecting)g(output)f(is:)390 2250 y Ft([)p Fj(n)p -Ft(]>[|])p Fj(word)275 2390 y Fu(If)g(the)h(redirection)g(op)s(erator)g -(is)g(`)p Ft(>)p Fu(',)g(and)f(the)h Ft(noclobber)d Fu(option)j(to)g -(the)g Ft(set)f Fu(builtin)g(has)h(b)s(een)150 2500 y(enabled,)h(the)g -(redirection)h(will)f(fail)h(if)e(the)i(\014le)e(whose)h(name)g -(results)g(from)f(the)h(expansion)g(of)g Fr(w)m(ord)150 -2609 y Fu(exists)f(and)f(is)g(a)h(regular)g(\014le.)41 -b(If)30 b(the)h(redirection)g(op)s(erator)g(is)f(`)p -Ft(>|)p Fu(',)h(or)f(the)h(redirection)g(op)s(erator)g(is)150 -2719 y(`)p Ft(>)p Fu(')36 b(and)f(the)g Ft(noclobber)e -Fu(option)j(is)g(not)g(enabled,)h(the)e(redirection)h(is)g(attempted)g -(ev)m(en)h(if)e(the)h(\014le)150 2829 y(named)30 b(b)m(y)g -Fr(w)m(ord)k Fu(exists.)150 3033 y Fk(3.6.3)63 b(App)s(ending)42 -b(Redirected)e(Output)150 3180 y Fu(Redirection)23 b(of)e(output)h(in)f -(this)h(fashion)f(causes)h(the)g(\014le)g(whose)f(name)h(results)f -(from)g(the)h(expansion)g(of)150 3290 y Fr(w)m(ord)28 -b Fu(to)e(b)s(e)e(op)s(ened)g(for)h(app)s(ending)e(on)i(\014le)g -(descriptor)g Fr(n)p Fu(,)g(or)g(the)g(standard)f(output)h(\(\014le)g -(descriptor)150 3399 y(1\))31 b(if)f Fr(n)g Fu(is)h(not)f(sp)s -(eci\014ed.)40 b(If)30 b(the)h(\014le)f(do)s(es)g(not)h(exist)g(it)g -(is)f(created.)275 3539 y(The)f(general)j(format)e(for)h(app)s(ending)e -(output)h(is:)390 3679 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)150 -3884 y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g -(Standard)g(Error)150 4031 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s -(oth)f(the)g(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f -(the)g(standard)f(error)150 4141 y(output)d(\(\014le)h(descriptor)f -(2\))h(to)g(b)s(e)f(redirected)h(to)g(the)f(\014le)h(whose)f(name)h(is) -f(the)g(expansion)h(of)f Fr(w)m(ord)p Fu(.)275 4281 y(There)f(are)i(t)m -(w)m(o)h(formats)e(for)h(redirecting)g(standard)e(output)h(and)g -(standard)f(error:)390 4421 y Ft(&>)p Fj(word)150 4561 -y Fu(and)390 4701 y Ft(>&)p Fj(word)150 4841 y Fu(Of)h(the)g(t)m(w)m(o) -i(forms,)e(the)h(\014rst)e(is)i(preferred.)39 b(This)30 -b(is)g(seman)m(tically)j(equiv)-5 b(alen)m(t)32 b(to)390 -4981 y Ft(>)p Fj(word)46 b Ft(2>&1)275 5121 y Fu(When)41 -b(using)g(the)h(second)f(form,)k Fr(w)m(ord)f Fu(ma)m(y)e(not)g(expand) -f(to)h(a)g(n)m(um)m(b)s(er)f(or)g(`)p Ft(-)p Fu('.)75 -b(If)41 b(it)h(do)s(es,)150 5230 y(other)27 b(redirection)g(op)s -(erators)f(apply)h(\(see)g(Duplicating)h(File)f(Descriptors)h(b)s(elo)m -(w\))f(for)f(compatibilit)m(y)150 5340 y(reasons.)p eop -end +y(Eac)m(h)45 b(redirection)h(that)f(ma)m(y)h(b)s(e)e(preceded)g(b)m(y)h +(a)h(\014le)f(descriptor)f(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e) +150 408 y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f +Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)74 b(In)41 b(this)g(case,)k +(for)c(eac)m(h)i(redirection)f(op)s(erator)150 518 y(except)30 +b Ft(>)p Fu(&-)f(and)f Ft(<)p Fu(&-,)h(the)g(shell)g(will)h(allo)s +(cate)h(a)e(\014le)h(descriptor)e(greater)j(than)d(10)i(and)e(assign)i +(it)f(to)150 628 y Fi({)p Fr(v)-5 b(arname)5 b Fi(})p +Fu(.)45 b(If)31 b Ft(>)p Fu(&-)g(or)h Ft(<)p Fu(&-)f(is)h(preceded)f(b) +m(y)g Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(,)33 b(the)f(v)-5 +b(alue)32 b(of)g Fr(v)-5 b(arname)36 b Fu(de\014nes)31 +b(the)h(\014le)150 737 y(descriptor)e(to)h(close.)275 +877 y(In)c(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g +(descriptor)f(n)m(um)m(b)s(er)g(is)g(omitted,)i(and)f(the)f(\014rst)g +(c)m(har-)150 986 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g +(is)g(`)p Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g +(standard)f(input)f(\(\014le)150 1096 y(descriptor)33 +b(0\).)49 b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f +(redirection)g(op)s(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection) +g(refers)150 1205 y(to)e(the)g(standard)e(output)h(\(\014le)h +(descriptor)f(1\).)275 1345 y(The)h(w)m(ord)h(follo)m(wing)i(the)f +(redirection)g(op)s(erator)f(in)g(the)h(follo)m(wing)h(descriptions,)f +(unless)e(other-)150 1455 y(wise)21 b(noted,)i(is)e(sub)5 +b(jected)21 b(to)h(brace)f(expansion,)i(tilde)f(expansion,)h(parameter) +e(expansion,)i(command)150 1564 y(substitution,)31 b(arithmetic)h +(expansion,)f(quote)h(remo)m(v)-5 b(al,)33 b(\014lename)e(expansion,)g +(and)f(w)m(ord)h(splitting.)150 1674 y(If)f(it)h(expands)e(to)i(more)g +(than)f(one)h(w)m(ord,)f(Bash)h(rep)s(orts)e(an)h(error.)275 +1813 y(Note)h(that)g(the)g(order)f(of)g(redirections)h(is)g +(signi\014can)m(t.)41 b(F)-8 b(or)31 b(example,)h(the)e(command)390 +1953 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 2092 y +Fu(directs)28 b(b)s(oth)f(standard)g(output)g(\(\014le)h(descriptor)f +(1\))i(and)e(standard)f(error)i(\(\014le)g(descriptor)f(2\))h(to)h(the) +150 2202 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 +2341 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 2481 y Fu(directs)28 +b(only)f(the)h(standard)e(output)i(to)g(\014le)f Fr(dirlist)p +Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h(made)f(a)h(cop)m +(y)150 2590 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g +(standard)g(output)g(w)m(as)g(redirected)h(to)g Fr(dirlist)p +Fu(.)275 2730 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s +(ecially)h(when)f(they)g(are)g(used)g(in)g(redirections,)i(as)e +(describ)s(ed)150 2839 y(in)38 b(the)h(follo)m(wing)h(table.)66 +b(If)38 b(the)h(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)h(is)f +(running)f(pro)m(vides)h(these)150 2949 y(sp)s(ecial)27 +b(\014les,)g(bash)e(will)i(use)f(them;)h(otherwise)g(it)f(will)h(em)m +(ulate)h(them)e(in)m(ternally)h(with)f(the)g(b)s(eha)m(vior)150 +3059 y(describ)s(ed)j(b)s(elo)m(w.)150 3225 y Ft(/dev/fd/)p +Fj(fd)630 3335 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5 b(alid)31 +b(in)m(teger,)h(\014le)e(descriptor)h Fr(fd)i Fu(is)d(duplicated.)150 +3499 y Ft(/dev/stdin)630 3609 y Fu(File)i(descriptor)e(0)h(is)f +(duplicated.)150 3773 y Ft(/dev/stdout)630 3883 y Fu(File)i(descriptor) +e(1)h(is)f(duplicated.)150 4047 y Ft(/dev/stderr)630 +4157 y Fu(File)i(descriptor)e(2)h(is)f(duplicated.)150 +4321 y Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 4431 +y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 b(hostname)h(or)f(In) +m(ternet)h(address,)i(and)c Fr(p)s(ort)j Fu(is)f(an)f(in)m(teger)i(p)s +(ort)630 4540 y(n)m(um)m(b)s(er)23 b(or)i(service)h(name,)g(Bash)f +(attempts)h(to)f(op)s(en)f(the)h(corresp)s(onding)f(TCP)g(so)s(c)m(k)m +(et.)150 4705 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630 +4814 y Fu(If)41 b Fr(host)i Fu(is)f(a)g(v)-5 b(alid)41 +b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c Fr(p)s(ort)j +Fu(is)f(an)f(in)m(teger)i(p)s(ort)630 4924 y(n)m(um)m(b)s(er)23 +b(or)h(service)h(name,)h(Bash)e(attempts)h(to)g(op)s(en)f(the)g +(corresp)s(onding)f(UDP)i(so)s(c)m(k)m(et.)275 5091 y(A)30 +b(failure)h(to)g(op)s(en)e(or)i(create)h(a)e(\014le)h(causes)g(the)f +(redirection)h(to)g(fail.)275 5230 y(Redirections)f(using)e(\014le)i +(descriptors)f(greater)h(than)f(9)h(should)e(b)s(e)h(used)f(with)h +(care,)h(as)g(they)f(ma)m(y)150 5340 y(con\015ict)i(with)f(\014le)h +(descriptors)f(the)g(shell)h(uses)f(in)m(ternally)-8 +b(.)p eop end %%Page: 34 40 TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299 -y Fk(3.6.5)63 b(App)s(ending)42 b(Standard)f(Output)g(and)g(Standard)g -(Error)150 446 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g -(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g -(standard)f(error)150 555 y(output)d(\(\014le)h(descriptor)f(2\))h(to)g -(b)s(e)f(app)s(ended)f(to)i(the)f(\014le)h(whose)f(name)g(is)h(the)f -(expansion)h(of)f Fr(w)m(ord)p Fu(.)275 684 y(The)f(format)i(for)f(app) -s(ending)f(standard)h(output)g(and)f(standard)h(error)g(is:)390 -813 y Ft(&>>)p Fj(word)150 942 y Fu(This)g(is)g(seman)m(tically)j -(equiv)-5 b(alen)m(t)32 b(to)390 1071 y Ft(>>)p Fj(word)46 -b Ft(2>&1)275 1200 y Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g -(b)s(elo)m(w\).)150 1389 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150 -1536 y Fu(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 1645 y(line)31 b(con)m(taining)g(only)g -Fr(w)m(ord)i Fu(\(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 -1755 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 1884 y(The)e(format)i(of)g(here-do)s(cumen)m -(ts)f(is:)390 2013 y Ft(<<[)p Fq(\000)p Ft(])p Fj(word)772 -2123 y(here-document)390 2232 y(delimiter)275 2361 y -Fu(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h(command)f -(substitution,)h(arithmetic)g(expansion,)g(or)150 2471 -y(\014lename)38 b(expansion)g(is)g(p)s(erformed)e(on)i -Fr(w)m(ord)p Fu(.)62 b(If)38 b(an)m(y)g(c)m(haracters)h(in)e -Fr(w)m(ord)42 b Fu(are)c(quoted,)i(the)e Fr(de-)150 2580 -y(limiter)h Fu(is)32 b(the)h(result)f(of)g(quote)h(remo)m(v)-5 -b(al)33 b(on)f Fr(w)m(ord)p Fu(,)g(and)g(the)g(lines)g(in)g(the)g -(here-do)s(cumen)m(t)g(are)h(not)150 2690 y(expanded.)71 -b(If)40 b Fr(w)m(ord)k Fu(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 -2800 y(eter)c(expansion,)i(command)d(substitution,)i(and)e(arithmetic)i -(expansion,)g(the)f(c)m(haracter)i(sequence)150 2909 -y Ft(\\newline)28 b Fu(is)j(ignored,)f(and)g(`)p Ft(\\)p -Fu(')h(m)m(ust)f(b)s(e)g(used)f(to)i(quote)g(the)g(c)m(haracters)h(`)p -Ft(\\)p Fu(',)e(`)p Ft($)p Fu(',)h(and)f(`)p Ft(`)p Fu('.)275 -3038 y(If)21 b(the)i(redirection)g(op)s(erator)g(is)f(`)p -Ft(<<-)p Fu(',)i(then)e(all)h(leading)g(tab)g(c)m(haracters)h(are)e -(stripp)s(ed)f(from)h(input)150 3148 y(lines)33 b(and)f(the)h(line)h -(con)m(taining)g Fr(delimiter)p Fu(.)49 b(This)32 b(allo)m(ws)i -(here-do)s(cumen)m(ts)f(within)f(shell)i(scripts)e(to)150 -3257 y(b)s(e)e(inden)m(ted)g(in)g(a)h(natural)f(fashion.)150 -3446 y Fk(3.6.7)63 b(Here)41 b(Strings)150 3593 y Fu(A)30 -b(v)-5 b(arian)m(t)32 b(of)e(here)h(do)s(cumen)m(ts,)f(the)g(format)h -(is:)390 3722 y Ft(<<<)47 b Fj(word)275 3851 y Fu(The)21 -b Fr(w)m(ord)k Fu(undergo)s(es)c(brace)h(expansion,)i(tilde)e -(expansion,)i(parameter)e(and)f(v)-5 b(ariable)23 b(expansion,)150 -3960 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 -4070 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 4179 y(on)g(its)h(standard)f(input.)150 -4368 y Fk(3.6.8)63 b(Duplicating)41 b(File)g(Descriptors)150 -4515 y Fu(The)30 b(redirection)h(op)s(erator)390 4644 -y Ft([)p Fj(n)p Ft(]<&)p Fj(word)150 4773 y Fu(is)k(used)e(to)j -(duplicate)f(input)f(\014le)g(descriptors.)53 b(If)34 -b Fr(w)m(ord)k Fu(expands)c(to)h(one)g(or)g(more)g(digits,)h(the)f -(\014le)150 4882 y(descriptor)e(denoted)h(b)m(y)f Fr(n)g -Fu(is)g(made)h(to)g(b)s(e)f(a)g(cop)m(y)h(of)g(that)g(\014le)f -(descriptor.)50 b(If)33 b(the)h(digits)g(in)f Fr(w)m(ord)150 -4992 y Fu(do)c(not)h(sp)s(ecify)f(a)h(\014le)f(descriptor)g(op)s(en)g -(for)g(input,)g(a)h(redirection)g(error)f(o)s(ccurs.)40 -b(If)29 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)150 5101 y(to)31 -b(`)p Ft(-)p Fu(',)g(\014le)g(descriptor)g Fr(n)f Fu(is)g(closed.)43 -b(If)30 b Fr(n)g Fu(is)g(not)h(sp)s(eci\014ed,)f(the)h(standard)f -(input)g(\(\014le)h(descriptor)f(0\))150 5211 y(is)g(used.)275 -5340 y(The)f(op)s(erator)p eop end +y Fk(3.6.1)63 b(Redirecting)40 b(Input)150 446 y Fu(Redirection)35 +b(of)f(input)f(causes)i(the)f(\014le)g(whose)g(name)g(results)g(from)g +(the)g(expansion)g(of)g Fr(w)m(ord)k Fu(to)d(b)s(e)150 +555 y(op)s(ened)d(for)g(reading)g(on)g(\014le)h(descriptor)f +Ft(n)p Fu(,)h(or)f(the)g(standard)g(input)f(\(\014le)i(descriptor)f +(0\))h(if)f Ft(n)g Fu(is)h(not)150 665 y(sp)s(eci\014ed.)275 +805 y(The)c(general)j(format)e(for)h(redirecting)g(input)e(is:)390 +944 y Ft([)p Fj(n)p Ft(]<)p Fj(word)150 1149 y Fk(3.6.2)63 +b(Redirecting)40 b(Output)150 1296 y Fu(Redirection)31 +b(of)g(output)f(causes)h(the)f(\014le)h(whose)f(name)g(results)h(from)e +(the)i(expansion)f(of)h Fr(w)m(ord)i Fu(to)f(b)s(e)150 +1405 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h(descriptor)f +Fr(n)p Fu(,)g(or)g(the)h(standard)e(output)h(\(\014le)h(descriptor)f +(1\))h(if)g Fr(n)e Fu(is)i(not)150 1515 y(sp)s(eci\014ed.)40 +b(If)30 b(the)g(\014le)h(do)s(es)f(not)h(exist)g(it)g(is)f(created;)i +(if)e(it)h(do)s(es)f(exist)h(it)g(is)g(truncated)f(to)h(zero)g(size.) +275 1654 y(The)e(general)j(format)e(for)h(redirecting)g(output)f(is:) +390 1794 y Ft([)p Fj(n)p Ft(]>[|])p Fj(word)275 1934 +y Fu(If)g(the)h(redirection)g(op)s(erator)g(is)g(`)p +Ft(>)p Fu(',)g(and)f(the)h Ft(noclobber)d Fu(option)j(to)g(the)g +Ft(set)f Fu(builtin)g(has)h(b)s(een)150 2043 y(enabled,)h(the)g +(redirection)h(will)f(fail)h(if)e(the)i(\014le)e(whose)h(name)g +(results)g(from)f(the)h(expansion)g(of)g Fr(w)m(ord)150 +2153 y Fu(exists)f(and)f(is)g(a)h(regular)g(\014le.)41 +b(If)30 b(the)h(redirection)g(op)s(erator)g(is)f(`)p +Ft(>|)p Fu(',)h(or)f(the)h(redirection)g(op)s(erator)g(is)150 +2262 y(`)p Ft(>)p Fu(')36 b(and)f(the)g Ft(noclobber)e +Fu(option)j(is)g(not)g(enabled,)h(the)e(redirection)h(is)g(attempted)g +(ev)m(en)h(if)e(the)h(\014le)150 2372 y(named)30 b(b)m(y)g +Fr(w)m(ord)k Fu(exists.)150 2576 y Fk(3.6.3)63 b(App)s(ending)42 +b(Redirected)e(Output)150 2723 y Fu(Redirection)23 b(of)e(output)h(in)f +(this)h(fashion)f(causes)h(the)g(\014le)g(whose)f(name)h(results)f +(from)g(the)h(expansion)g(of)150 2833 y Fr(w)m(ord)28 +b Fu(to)e(b)s(e)e(op)s(ened)g(for)h(app)s(ending)e(on)i(\014le)g +(descriptor)g Fr(n)p Fu(,)g(or)g(the)g(standard)f(output)h(\(\014le)g +(descriptor)150 2942 y(1\))31 b(if)f Fr(n)g Fu(is)h(not)f(sp)s +(eci\014ed.)40 b(If)30 b(the)h(\014le)f(do)s(es)g(not)h(exist)g(it)g +(is)f(created.)275 3082 y(The)f(general)j(format)e(for)h(app)s(ending)e +(output)h(is:)390 3222 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)150 +3426 y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g +(Standard)g(Error)150 3573 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s +(oth)f(the)g(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f +(the)g(standard)f(error)150 3683 y(output)d(\(\014le)h(descriptor)f +(2\))h(to)g(b)s(e)f(redirected)h(to)g(the)f(\014le)h(whose)f(name)h(is) +f(the)g(expansion)h(of)f Fr(w)m(ord)p Fu(.)275 3822 y(There)f(are)i(t)m +(w)m(o)h(formats)e(for)h(redirecting)g(standard)e(output)h(and)g +(standard)f(error:)390 3962 y Ft(&>)p Fj(word)150 4101 +y Fu(and)390 4241 y Ft(>&)p Fj(word)150 4381 y Fu(Of)h(the)g(t)m(w)m(o) +i(forms,)e(the)h(\014rst)e(is)i(preferred.)39 b(This)30 +b(is)g(seman)m(tically)j(equiv)-5 b(alen)m(t)32 b(to)390 +4520 y Ft(>)p Fj(word)46 b Ft(2>&1)275 4660 y Fu(When)41 +b(using)g(the)h(second)f(form,)k Fr(w)m(ord)f Fu(ma)m(y)e(not)g(expand) +f(to)h(a)g(n)m(um)m(b)s(er)f(or)g(`)p Ft(-)p Fu('.)75 +b(If)41 b(it)h(do)s(es,)150 4769 y(other)27 b(redirection)g(op)s +(erators)f(apply)h(\(see)g(Duplicating)h(File)f(Descriptors)h(b)s(elo)m +(w\))f(for)f(compatibilit)m(y)150 4879 y(reasons.)150 +5083 y Fk(3.6.5)63 b(App)s(ending)42 b(Standard)f(Output)g(and)g +(Standard)g(Error)150 5230 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s +(oth)f(the)g(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f +(the)g(standard)f(error)150 5340 y(output)d(\(\014le)h(descriptor)f +(2\))h(to)g(b)s(e)f(app)s(ended)f(to)i(the)f(\014le)h(whose)f(name)g +(is)h(the)f(expansion)h(of)f Fr(w)m(ord)p Fu(.)p eop +end %%Page: 35 41 TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)390 299 -y Ft([)p Fj(n)p Ft(]>&)p Fj(word)150 440 y Fu(is)40 b(used)g(similarly) -h(to)g(duplicate)f(output)g(\014le)h(descriptors.)70 -b(If)40 b Fr(n)f Fu(is)i(not)f(sp)s(eci\014ed,)i(the)f(standard)150 -550 y(output)30 b(\(\014le)g(descriptor)g(1\))h(is)f(used.)39 -b(If)30 b(the)g(digits)h(in)e Fr(w)m(ord)34 b Fu(do)29 -b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g(op)s(en)150 -660 y(for)35 b(output,)h(a)g(redirection)g(error)e(o)s(ccurs.)55 -b(If)35 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)37 b(to)f(`)p -Ft(-)p Fu(',)h(\014le)e(descriptor)g Fr(n)g Fu(is)g(closed.)150 -769 y(As)f(a)g(sp)s(ecial)h(case,)h(if)e Fr(n)f Fu(is)h(omitted,)i(and) -e Fr(w)m(ord)j Fu(do)s(es)d(not)g(expand)f(to)i(one)f(or)g(more)g -(digits)h(or)f(`)p Ft(-)p Fu(',)150 879 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 1085 y Fk(3.6.9)63 b(Mo)m(ving)41 -b(File)h(Descriptors)150 1232 y Fu(The)30 b(redirection)h(op)s(erator) -390 1373 y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 -1515 y Fu(mo)m(v)m(es)i(the)f(\014le)g(descriptor)f Fr(digit)k -Fu(to)d(\014le)g(descriptor)g Fr(n)p Fu(,)f(or)h(the)g(standard)f -(input)f(\(\014le)j(descriptor)e(0\))150 1625 y(if)f -Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 b Fr(digit)33 -b Fu(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h -Fr(n)p Fu(.)275 1766 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s -(erator)390 1908 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p -Ft(-)150 2049 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f -Fr(digit)k Fu(to)e(\014le)f(descriptor)g Fr(n)p Fu(,)g(or)g(the)g -(standard)f(output)h(\(\014le)g(descriptor)g(1\))150 -2159 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150 -2365 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g -(Reading)e(and)h(W)-10 b(riting)150 2512 y Fu(The)30 -b(redirection)h(op)s(erator)390 2653 y Ft([)p Fj(n)p -Ft(]<>)p Fj(word)150 2795 y Fu(causes)39 b(the)g(\014le)g(whose)g(name) -g(is)g(the)g(expansion)g(of)g Fr(w)m(ord)j Fu(to)d(b)s(e)g(op)s(ened)f -(for)g(b)s(oth)h(reading)g(and)150 2905 y(writing)33 -b(on)f(\014le)h(descriptor)f Fr(n)p Fu(,)h(or)g(on)f(\014le)h -(descriptor)g(0)g(if)f Fr(n)g Fu(is)h(not)g(sp)s(eci\014ed.)47 -b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 3014 y(exist,)e(it)g(is)g -(created.)150 3257 y Fs(3.7)68 b(Executing)46 b(Commands)150 -3481 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150 -3628 y Fu(When)33 b(a)g(simple)g(command)g(is)g(executed,)h(the)g -(shell)f(p)s(erforms)e(the)i(follo)m(wing)i(expansions,)e(assign-)150 -3738 y(men)m(ts,)e(and)f(redirections,)h(from)f(left)h(to)g(righ)m(t.) -199 3879 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 3989 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 -4127 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 4237 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g -(21\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h -(the)e(\014rst)330 4346 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 4456 y(men)m(ts.)199 4594 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 -4732 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p -Fu(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es) -e(tilde)i(expansion,)g(parameter)330 4841 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 4951 y(b)s(eing)30 -b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 5121 y(If)32 -b(no)i(command)f(name)g(results,)h(the)g(v)-5 b(ariable)34 -b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m(viron-) -150 5230 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26 -b(are)g(added)f(to)h(the)f(en)m(vironmen)m(t)h(of)g(the)f(executed)h -(command)g(and)150 5340 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h -(shell)g(en)m(vironmen)m(t.)54 b(If)34 b(an)m(y)h(of)g(the)f(assignmen) -m(ts)i(attempts)f(to)h(assign)p eop end +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)275 299 +y(The)29 b(format)i(for)f(app)s(ending)f(standard)h(output)g(and)f +(standard)h(error)g(is:)390 442 y Ft(&>>)p Fj(word)150 +585 y Fu(This)g(is)g(seman)m(tically)j(equiv)-5 b(alen)m(t)32 +b(to)390 728 y Ft(>>)p Fj(word)46 b Ft(2>&1)275 871 y +Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g(b)s(elo)m(w\).)150 +1079 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150 1226 +y Fu(This)26 b(t)m(yp)s(e)g(of)h(redirection)g(instructs)f(the)g(shell) +h(to)g(read)f(input)g(from)g(the)g(curren)m(t)h(source)f(un)m(til)h(a)g +(line)150 1336 y(con)m(taining)h(only)e Fr(w)m(ord)k +Fu(\(with)c(no)g(trailing)h(blanks\))f(is)g(seen.)40 +b(All)27 b(of)f(the)g(lines)h(read)f(up)f(to)i(that)g(p)s(oin)m(t)150 +1445 y(are)k(then)f(used)f(as)i(the)g(standard)e(input)h(\(or)g(\014le) +h(descriptor)f Fr(n)g Fu(if)g Fr(n)g Fu(is)g(sp)s(eci\014ed\))g(for)h +(a)f(command.)275 1589 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f +(is:)390 1732 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p +Fj(word)772 1841 y(here-document)390 1951 y(delimiter)275 +2094 y Fu(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h +(command)f(substitution,)h(arithmetic)g(expansion,)g(or)150 +2204 y(\014lename)26 b(expansion)g(is)g(p)s(erformed)e(on)i +Fr(w)m(ord)p Fu(.)39 b(If)25 b(an)m(y)i(part)e(of)h Fr(w)m(ord)j +Fu(is)d(quoted,)i(the)e Fr(delimiter)33 b Fu(is)26 b(the)150 +2313 y(result)33 b(of)g(quote)g(remo)m(v)-5 b(al)34 b(on)f +Fr(w)m(ord)p Fu(,)g(and)f(the)h(lines)g(in)g(the)g(here-do)s(cumen)m(t) +g(are)g(not)g(expanded.)47 b(If)150 2423 y Fr(w)m(ord)26 +b Fu(is)c(unquoted,)h(all)g(lines)g(of)g(the)f(here-do)s(cumen)m(t)g +(are)h(sub)5 b(jected)22 b(to)h(parameter)g(expansion,)h(com-)150 +2532 y(mand)30 b(substitution,)g(and)g(arithmetic)h(expansion,)g(the)f +(c)m(haracter)i(sequence)f Ft(\\newline)d Fu(is)j(ignored,)150 +2642 y(and)f(`)p Ft(\\)p Fu(')g(m)m(ust)h(b)s(e)e(used)h(to)h(quote)g +(the)g(c)m(haracters)g(`)p Ft(\\)p Fu(',)g(`)p Ft($)p +Fu(',)g(and)f(`)p Ft(`)p Fu('.)275 2785 y(If)21 b(the)i(redirection)g +(op)s(erator)g(is)f(`)p Ft(<<-)p Fu(',)i(then)e(all)h(leading)g(tab)g +(c)m(haracters)h(are)e(stripp)s(ed)f(from)h(input)150 +2895 y(lines)33 b(and)f(the)h(line)h(con)m(taining)g +Fr(delimiter)p Fu(.)49 b(This)32 b(allo)m(ws)i(here-do)s(cumen)m(ts)f +(within)f(shell)i(scripts)e(to)150 3004 y(b)s(e)e(inden)m(ted)g(in)g(a) +h(natural)f(fashion.)150 3212 y Fk(3.6.7)63 b(Here)41 +b(Strings)150 3359 y Fu(A)30 b(v)-5 b(arian)m(t)32 b(of)e(here)h(do)s +(cumen)m(ts,)f(the)g(format)h(is:)390 3502 y Ft([)p Fj(n)p +Ft(]<<<)46 b Fj(word)275 3645 y Fu(The)21 b Fr(w)m(ord)k +Fu(undergo)s(es)c(brace)h(expansion,)i(tilde)e(expansion,)i(parameter)e +(and)f(v)-5 b(ariable)23 b(expansion,)150 3755 y(command)j +(substitution,)g(arithmetic)i(expansion,)f(and)e(quote)i(remo)m(v)-5 +b(al.)40 b(P)m(athname)27 b(expansion)f(and)150 3865 +y(w)m(ord)32 b(splitting)h(are)g(not)g(p)s(erformed.)46 +b(The)32 b(result)g(is)h(supplied)e(as)i(a)f(single)i(string,)f(with)f +(a)h(newline)150 3974 y(app)s(ended,)c(to)i(the)g(command)f(on)g(its)h +(standard)e(input)h(\(or)g(\014le)h(descriptor)f Fr(n)g +Fu(if)g Fr(n)g Fu(is)g(sp)s(eci\014ed\).)150 4182 y Fk(3.6.8)63 +b(Duplicating)41 b(File)g(Descriptors)150 4329 y Fu(The)30 +b(redirection)h(op)s(erator)390 4472 y Ft([)p Fj(n)p +Ft(]<&)p Fj(word)150 4615 y Fu(is)k(used)e(to)j(duplicate)f(input)f +(\014le)g(descriptors.)53 b(If)34 b Fr(w)m(ord)k Fu(expands)c(to)h(one) +g(or)g(more)g(digits,)h(the)f(\014le)150 4725 y(descriptor)e(denoted)h +(b)m(y)f Fr(n)g Fu(is)g(made)h(to)g(b)s(e)f(a)g(cop)m(y)h(of)g(that)g +(\014le)f(descriptor.)50 b(If)33 b(the)h(digits)g(in)f +Fr(w)m(ord)150 4835 y Fu(do)c(not)h(sp)s(ecify)f(a)h(\014le)f +(descriptor)g(op)s(en)g(for)g(input,)g(a)h(redirection)g(error)f(o)s +(ccurs.)40 b(If)29 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)150 +4944 y(to)31 b(`)p Ft(-)p Fu(',)g(\014le)g(descriptor)g +Fr(n)f Fu(is)g(closed.)43 b(If)30 b Fr(n)g Fu(is)g(not)h(sp)s +(eci\014ed,)f(the)h(standard)f(input)g(\(\014le)h(descriptor)f(0\))150 +5054 y(is)g(used.)275 5197 y(The)f(op)s(erator)390 5340 +y Ft([)p Fj(n)p Ft(]>&)p Fj(word)p eop end %%Page: 36 42 TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299 -y(a)39 b(v)-5 b(alue)39 b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 -b(an)c(error)g(o)s(ccurs,)j(and)c(the)i(command)f(exits)h(with)g(a)f -(non-zero)150 408 y(status.)275 538 y(If)33 b(no)g(command)g(name)h -(results,)g(redirections)g(are)g(p)s(erformed,)f(but)g(do)h(not)f -(a\013ect)i(the)f(curren)m(t)150 648 y(shell)d(en)m(vironmen)m(t.)41 -b(A)30 b(redirection)h(error)f(causes)h(the)g(command)f(to)h(exit)g -(with)f(a)h(non-zero)g(status.)275 778 y(If)26 b(there)i(is)f(a)h -(command)f(name)h(left)g(after)g(expansion,)g(execution)h(pro)s(ceeds)e -(as)g(describ)s(ed)f(b)s(elo)m(w.)150 887 y(Otherwise,)39 -b(the)e(command)g(exits.)62 b(If)37 b(one)g(of)g(the)h(expansions)f -(con)m(tained)h(a)g(command)f(substitu-)150 997 y(tion,)i(the)d(exit)h -(status)g(of)f(the)h(command)f(is)h(the)f(exit)h(status)g(of)f(the)h -(last)g(command)f(substitution)150 1107 y(p)s(erformed.)55 -b(If)35 b(there)g(w)m(ere)h(no)g(command)f(substitutions,)i(the)e -(command)h(exits)g(with)f(a)h(status)g(of)150 1216 y(zero.)150 -1406 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h(Execution)150 -1553 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h(in)m(to)h(w)m -(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g(and)f(an)150 -1663 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g(follo)m(wing)g -(actions)h(are)f(tak)m(en.)199 1793 y(1.)61 b(If)24 b(the)g(command)g -(name)g(con)m(tains)i(no)e(slashes,)i(the)e(shell)h(attempts)g(to)g(lo) -s(cate)h(it.)39 b(If)24 b(there)g(exists)330 1902 y(a)h(shell)g -(function)f(b)m(y)g(that)h(name,)h(that)f(function)f(is)h(in)m(v)m(ok)m -(ed)h(as)e(describ)s(ed)g(in)g(Section)h(3.3)h([Shell)330 -2012 y(F)-8 b(unctions],)31 b(page)h(17.)199 2142 y(2.)61 -b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e(function,)j(the)e -(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h(of)g(shell)330 -2251 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g(that)h(builtin) -f(is)g(in)m(v)m(ok)m(ed.)199 2381 y(3.)61 b(If)40 b(the)g(name)h(is)f -(neither)h(a)f(shell)h(function)f(nor)g(a)g(builtin,)j(and)d(con)m -(tains)h(no)g(slashes,)i(Bash)330 2491 y(searc)m(hes)c(eac)m(h)g -(elemen)m(t)g(of)g Ft($PATH)d Fu(for)i(a)g(directory)h(con)m(taining)g -(an)f(executable)h(\014le)f(b)m(y)g(that)330 2600 y(name.)56 -b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)f(remem)m(b)s(er)f(the)h(full) -f(pathnames)g(of)h(executable)h(\014les)e(to)330 2710 -y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f Fu(searc)m(hes)i(\(see)f(the)g -(description)g(of)f Ft(hash)g Fu(in)g(Section)i(4.1)f([Bourne)g(Shell) -330 2819 y(Builtins],)37 b(page)f(41\).)55 b(A)35 b(full)g(searc)m(h)g -(of)g(the)g(directories)h(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h -(if)g(the)330 2929 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f -(table.)39 b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g -(shell)g(searc)m(hes)330 3039 y(for)e(a)h(de\014ned)e(shell)h(function) -h(named)e Ft(command_not_found_handle)p Fu(.)32 b(If)23 -b(that)h(function)f(exists,)330 3148 y(it)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 3258 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 3367 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 3477 y(127.)199 -3607 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)g(successful,)g(or)f(if)g -(the)h(command)f(name)g(con)m(tains)i(one)f(or)f(more)g(slashes,)i(the) -330 3716 y(shell)g(executes)h(the)f(named)f(program)g(in)h(a)g -(separate)h(execution)f(en)m(vironmen)m(t.)55 b(Argumen)m(t)35 -b(0)330 3826 y(is)30 b(set)h(to)h(the)e(name)h(giv)m(en,)g(and)f(the)h -(remaining)f(argumen)m(ts)h(to)g(the)g(command)f(are)h(set)g(to)g(the) -330 3936 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 -b(.)199 4065 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g -(the)f(\014le)h(is)g(not)g(in)f(executable)j(format,)f(and)e(the)h -(\014le)g(is)g(not)330 4175 y(a)d(directory)-8 b(,)34 -b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fr(shell)g(script)h -Fu(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330 -4285 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(39.)199 -4415 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) -m(hronously)-8 b(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f -(to)330 4524 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 -4714 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 -4861 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t) -p Fu(,)h(whic)m(h)e(consists)h(of)f(the)h(follo)m(wing:)225 -4991 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f -(shell)h(at)g(in)m(v)m(o)s(cation,)j(as)c(mo)s(di\014ed)g(b)m(y)g -(redirections)h(supplied)e(to)330 5101 y(the)g Ft(exec)e -Fu(builtin)225 5230 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking) -h(directory)g(as)f(set)h(b)m(y)f Ft(cd)p Fu(,)g Ft(pushd)p -Fu(,)g(or)g Ft(popd)p Fu(,)g(or)g(inherited)g(b)m(y)g(the)h(shell)f(at) -330 5340 y(in)m(v)m(o)s(cation)p eop end +y(is)40 b(used)g(similarly)h(to)g(duplicate)f(output)g(\014le)h +(descriptors.)70 b(If)40 b Fr(n)f Fu(is)i(not)f(sp)s(eci\014ed,)i(the)f +(standard)150 408 y(output)30 b(\(\014le)g(descriptor)g(1\))h(is)f +(used.)39 b(If)30 b(the)g(digits)h(in)e Fr(w)m(ord)34 +b Fu(do)29 b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g(op)s(en)150 +518 y(for)35 b(output,)h(a)g(redirection)g(error)e(o)s(ccurs.)55 +b(If)35 b Fr(w)m(ord)j Fu(ev)-5 b(aluates)37 b(to)f(`)p +Ft(-)p Fu(',)h(\014le)e(descriptor)g Fr(n)g Fu(is)g(closed.)150 +628 y(As)f(a)g(sp)s(ecial)h(case,)h(if)e Fr(n)f Fu(is)h(omitted,)i(and) +e Fr(w)m(ord)j Fu(do)s(es)d(not)g(expand)f(to)i(one)f(or)g(more)g +(digits)h(or)f(`)p Ft(-)p Fu(',)150 737 y(the)d(standard)e(output)h +(and)g(standard)f(error)h(are)h(redirected)g(as)g(describ)s(ed)e +(previously)-8 b(.)150 938 y Fk(3.6.9)63 b(Mo)m(ving)41 +b(File)h(Descriptors)150 1085 y Fu(The)30 b(redirection)h(op)s(erator) +390 1220 y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 +1356 y Fu(mo)m(v)m(es)i(the)f(\014le)g(descriptor)f Fr(digit)k +Fu(to)d(\014le)g(descriptor)g Fr(n)p Fu(,)f(or)h(the)g(standard)f +(input)f(\(\014le)j(descriptor)e(0\))150 1465 y(if)f +Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 b Fr(digit)33 +b Fu(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h +Fr(n)p Fu(.)275 1601 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s +(erator)390 1736 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p +Ft(-)150 1872 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f +Fr(digit)k Fu(to)e(\014le)f(descriptor)g Fr(n)p Fu(,)g(or)g(the)g +(standard)f(output)h(\(\014le)g(descriptor)g(1\))150 +1982 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150 +2182 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g +(Reading)e(and)h(W)-10 b(riting)150 2329 y Fu(The)30 +b(redirection)h(op)s(erator)390 2464 y Ft([)p Fj(n)p +Ft(]<>)p Fj(word)150 2600 y Fu(causes)39 b(the)g(\014le)g(whose)g(name) +g(is)g(the)g(expansion)g(of)g Fr(w)m(ord)j Fu(to)d(b)s(e)g(op)s(ened)f +(for)g(b)s(oth)h(reading)g(and)150 2710 y(writing)33 +b(on)f(\014le)h(descriptor)f Fr(n)p Fu(,)h(or)g(on)f(\014le)h +(descriptor)g(0)g(if)f Fr(n)g Fu(is)h(not)g(sp)s(eci\014ed.)47 +b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 2819 y(exist,)e(it)g(is)g +(created.)150 3062 y Fs(3.7)68 b(Executing)46 b(Commands)150 +3286 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150 +3433 y Fu(When)33 b(a)g(simple)g(command)g(is)g(executed,)h(the)g +(shell)f(p)s(erforms)e(the)i(follo)m(wing)i(expansions,)e(assign-)150 +3542 y(men)m(ts,)e(and)f(redirections,)h(from)f(left)h(to)g(righ)m(t.) +199 3678 y(1.)61 b(The)38 b(w)m(ords)f(that)i(the)g(parser)e(has)h +(mark)m(ed)g(as)h(v)-5 b(ariable)39 b(assignmen)m(ts)g(\(those)g +(preceding)f(the)330 3788 y(command)30 b(name\))h(and)f(redirections)h +(are)f(sa)m(v)m(ed)i(for)e(later)h(pro)s(cessing.)199 +3923 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 +b(ariable)40 b(assignmen)m(ts)h(or)e(redirections)i(are)f(expanded)f +(\(see)h(Sec-)330 4032 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g +(21\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h +(the)e(\014rst)330 4142 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f +(the)g(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g +(are)g(the)h(argu-)330 4251 y(men)m(ts.)199 4386 y(3.)61 +b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m +(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(32\).)199 +4521 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p +Fu(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es) +e(tilde)i(expansion,)g(parameter)330 4631 y(expansion,)49 +b(command)d(substitution,)j(arithmetic)d(expansion,)k(and)45 +b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 4741 y(b)s(eing)30 +b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 4902 y(If)32 +b(no)i(command)f(name)g(results,)h(the)g(v)-5 b(ariable)34 +b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m(viron-) +150 5011 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26 +b(are)g(added)f(to)h(the)f(en)m(vironmen)m(t)h(of)g(the)f(executed)h +(command)g(and)150 5121 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h +(shell)g(en)m(vironmen)m(t.)54 b(If)34 b(an)m(y)h(of)g(the)f(assignmen) +m(ts)i(attempts)f(to)h(assign)150 5230 y(a)j(v)-5 b(alue)39 +b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j +(and)c(the)i(command)f(exits)h(with)g(a)f(non-zero)150 +5340 y(status.)p eop end %%Page: 37 43 TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)225 299 -y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h -(set)g(b)m(y)f Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f -(paren)m(t)225 434 y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m -(y)f Ft(trap)225 570 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h -(are)g(set)g(b)m(y)g(v)-5 b(ariable)30 b(assignmen)m(t)g(or)g(with)f -Ft(set)f Fu(or)i(inherited)f(from)g(the)330 680 y(shell's)i(paren)m(t)f -(in)g(the)h(en)m(vironmen)m(t)225 815 y Fq(\017)60 b -Fu(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e -(inherited)h(from)f(the)h(shell's)g(paren)m(t)f(in)h(the)330 -925 y(en)m(vironmen)m(t)225 1061 y Fq(\017)60 b Fu(options)33 -b(enabled)g(at)h(in)m(v)m(o)s(cation)h(\(either)f(b)m(y)f(default)g(or) -g(with)g(command-line)g(argumen)m(ts\))h(or)330 1170 -y(b)m(y)c Ft(set)225 1306 y Fq(\017)60 b Fu(options)31 -b(enabled)f(b)m(y)g Ft(shopt)f Fu(\(see)j(Section)f(4.3.2)h([The)e -(Shopt)g(Builtin],)h(page)g(62\))225 1441 y Fq(\017)60 -b Fu(shell)31 b(aliases)g(de\014ned)f(with)g Ft(alias)f -Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(88\))225 -1577 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f -Fm(id)p Fu(s,)55 b(including)49 b(those)i(of)e(bac)m(kground)h(jobs)f -(\(see)i(Section)g(3.2.3)g([Lists],)330 1687 y(page)31 -b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Ft($$)p Fu(,)g(and)g(the)h(v)-5 -b(alue)31 b(of)f Ft($PPID)275 1849 y Fu(When)k(a)g(simple)h(command)f -(other)g(than)g(a)h(builtin)f(or)g(shell)h(function)f(is)g(to)h(b)s(e)f -(executed,)i(it)f(is)150 1959 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g -(separate)h(execution)g(en)m(vironmen)m(t)g(that)f(consists)g(of)h(the) -f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 2068 y(noted,)31 -b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225 -2205 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e -(an)m(y)h(mo)s(di\014cations)h(and)e(additions)h(sp)s(eci\014ed)g(b)m -(y)g(redirections)g(to)330 2315 y(the)g(command)225 2450 -y Fq(\017)60 b Fu(the)31 b(curren)m(t)f(w)m(orking)g(directory)225 -2586 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 -2722 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33 -b(and)e(functions)h(mark)m(ed)g(for)g(exp)s(ort,)g(along)h(with)f(v)-5 -b(ariables)32 b(exp)s(orted)g(for)g(the)330 2831 y(command,)e(passed)g -(in)g(the)h(en)m(vironmen)m(t)g(\(see)g(Section)g(3.7.4)i([En)m -(vironmen)m(t],)e(page)g(37\))225 2967 y Fq(\017)60 b -Fu(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)h(are)f(reset)h(to)g(the) -f(v)-5 b(alues)32 b(inherited)e(from)h(the)g(shell's)h(paren)m(t,)g -(and)330 3076 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored) -275 3239 y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g -(en)m(vironmen)m(t)g(cannot)g(a\013ect)h(the)f(shell's)g(execution)150 -3349 y(en)m(vironmen)m(t.)275 3485 y(Command)35 b(substitution,)j -(commands)e(group)s(ed)f(with)i(paren)m(theses,)h(and)e(async)m -(hronous)g(com-)150 3595 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i -(subshell)e(en)m(vironmen)m(t)h(that)h(is)f(a)g(duplicate)h(of)f(the)g -(shell)g(en)m(vironmen)m(t,)150 3705 y(except)i(that)g(traps)f(caugh)m -(t)h(b)m(y)f(the)h(shell)f(are)g(reset)h(to)g(the)f(v)-5 -b(alues)35 b(that)g(the)f(shell)h(inherited)e(from)150 -3814 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 -b(Builtin)32 b(commands)g(that)h(are)g(in)m(v)m(ok)m(ed)h(as)e(part)g -(of)h(a)f(pip)s(eline)g(are)h(also)150 3924 y(executed)41 -b(in)f(a)h(subshell)e(en)m(vironmen)m(t.)72 b(Changes)40 -b(made)g(to)h(the)g(subshell)e(en)m(vironmen)m(t)i(cannot)150 -4033 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 -4170 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions) -g(inherit)g(the)g(v)-5 b(alue)31 b(of)f(the)h Ft(-e)e -Fu(option)150 4280 y(from)23 b(the)i(paren)m(t)f(shell.)38 -b(When)24 b(not)g(in)g Fm(posix)f Fu(mo)s(de,)i(Bash)f(clears)h(the)f -Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 4416 -y(If)f(a)h(command)g(is)g(follo)m(w)m(ed)h(b)m(y)f(a)g(`)p -Ft(&)p Fu(')g(and)f(job)h(con)m(trol)h(is)f(not)g(activ)m(e,)k(the)c -(default)g(standard)f(input)150 4526 y(for)35 b(the)g(command)g(is)g -(the)g(empt)m(y)h(\014le)f Ft(/dev/null)p Fu(.)52 b(Otherwise,)37 -b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 4636 -y(the)c(\014le)f(descriptors)g(of)h(the)f(calling)i(shell)f(as)f(mo)s -(di\014ed)g(b)m(y)g(redirections.)150 4837 y Fk(3.7.4)63 -b(En)m(vironmen)m(t)150 4984 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m -(ok)m(ed)h(it)g(is)f(giv)m(en)g(an)g(arra)m(y)g(of)g(strings)g(called)h -(the)f Fr(en)m(vironmen)m(t)p Fu(.)41 b(This)28 b(is)h(a)150 -5094 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g -Ft(name=value)p Fu(.)275 5230 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w) -m(a)m(ys)g(to)f(manipulate)f(the)h(en)m(vironmen)m(t.)69 -b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 5340 -y(scans)g(its)h(o)m(wn)f(en)m(vironmen)m(t)h(and)f(creates)i(a)f -(parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)p +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)275 299 +y(If)33 b(no)g(command)g(name)h(results,)g(redirections)g(are)g(p)s +(erformed,)f(but)g(do)h(not)f(a\013ect)i(the)f(curren)m(t)150 +408 y(shell)d(en)m(vironmen)m(t.)41 b(A)30 b(redirection)h(error)f +(causes)h(the)g(command)f(to)h(exit)g(with)f(a)h(non-zero)g(status.)275 +548 y(If)26 b(there)i(is)f(a)h(command)f(name)h(left)g(after)g +(expansion,)g(execution)h(pro)s(ceeds)e(as)g(describ)s(ed)f(b)s(elo)m +(w.)150 658 y(Otherwise,)39 b(the)e(command)g(exits.)62 +b(If)37 b(one)g(of)g(the)h(expansions)f(con)m(tained)h(a)g(command)f +(substitu-)150 767 y(tion,)i(the)d(exit)h(status)g(of)f(the)h(command)f +(is)h(the)f(exit)h(status)g(of)f(the)h(last)g(command)f(substitution) +150 877 y(p)s(erformed.)55 b(If)35 b(there)g(w)m(ere)h(no)g(command)f +(substitutions,)i(the)e(command)h(exits)g(with)f(a)h(status)g(of)150 +987 y(zero.)150 1191 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h +(Execution)150 1338 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h +(in)m(to)h(w)m(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g +(and)f(an)150 1448 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g +(follo)m(wing)g(actions)h(are)f(tak)m(en.)199 1587 y(1.)61 +b(If)24 b(the)g(command)g(name)g(con)m(tains)i(no)e(slashes,)i(the)e +(shell)h(attempts)g(to)g(lo)s(cate)h(it.)39 b(If)24 b(there)g(exists) +330 1697 y(a)h(shell)g(function)f(b)m(y)g(that)h(name,)h(that)f +(function)f(is)h(in)m(v)m(ok)m(ed)h(as)e(describ)s(ed)g(in)g(Section)h +(3.3)h([Shell)330 1807 y(F)-8 b(unctions],)31 b(page)h(17.)199 +1944 y(2.)61 b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e +(function,)j(the)e(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h +(of)g(shell)330 2053 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g +(that)h(builtin)f(is)g(in)m(v)m(ok)m(ed.)199 2190 y(3.)61 +b(If)40 b(the)g(name)h(is)f(neither)h(a)f(shell)h(function)f(nor)g(a)g +(builtin,)j(and)d(con)m(tains)h(no)g(slashes,)i(Bash)330 +2300 y(searc)m(hes)c(eac)m(h)g(elemen)m(t)g(of)g Ft($PATH)d +Fu(for)i(a)g(directory)h(con)m(taining)g(an)f(executable)h(\014le)f(b)m +(y)g(that)330 2410 y(name.)56 b(Bash)36 b(uses)f(a)h(hash)e(table)j(to) +f(remem)m(b)s(er)f(the)h(full)f(pathnames)g(of)h(executable)h(\014les)e +(to)330 2519 y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f +Fu(searc)m(hes)i(\(see)f(the)g(description)g(of)f Ft(hash)g +Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)330 2629 y(Builtins],)37 +b(page)f(42\).)55 b(A)35 b(full)g(searc)m(h)g(of)g(the)g(directories)h +(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h(if)g(the)330 +2738 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f(table.)39 +b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g(shell)g(searc)m +(hes)330 2848 y(for)e(a)h(de\014ned)e(shell)h(function)h(named)e +Ft(command_not_found_handle)p Fu(.)32 b(If)23 b(that)h(function)f +(exists,)330 2958 y(it)32 b(is)f(in)m(v)m(ok)m(ed)i(with)e(the)h +(original)g(command)f(and)g(the)h(original)g(command's)f(argumen)m(ts)h +(as)g(its)330 3067 y(argumen)m(ts,)h(and)e(the)i(function's)e(exit)i +(status)g(b)s(ecomes)f(the)g(exit)h(status)f(of)h(the)f(shell.)46 +b(If)31 b(that)330 3177 y(function)g(is)g(not)g(de\014ned,)f(the)i +(shell)f(prin)m(ts)f(an)h(error)g(message)h(and)f(returns)e(an)i(exit)h +(status)g(of)330 3286 y(127.)199 3423 y(4.)61 b(If)33 +b(the)g(searc)m(h)h(is)g(successful,)g(or)f(if)g(the)h(command)f(name)g +(con)m(tains)i(one)f(or)f(more)g(slashes,)i(the)330 3533 +y(shell)g(executes)h(the)f(named)f(program)g(in)h(a)g(separate)h +(execution)f(en)m(vironmen)m(t.)55 b(Argumen)m(t)35 b(0)330 +3643 y(is)30 b(set)h(to)h(the)e(name)h(giv)m(en,)g(and)f(the)h +(remaining)f(argumen)m(ts)h(to)g(the)g(command)f(are)h(set)g(to)g(the) +330 3752 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 +b(.)199 3889 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g +(the)f(\014le)h(is)g(not)g(in)f(executable)j(format,)f(and)e(the)h +(\014le)g(is)g(not)330 3999 y(a)d(directory)-8 b(,)34 +b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fr(shell)g(script)h +Fu(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330 +4109 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(40.)199 +4246 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async) +m(hronously)-8 b(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f +(to)330 4355 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 +4560 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 +4707 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t) +p Fu(,)h(whic)m(h)e(consists)h(of)f(the)h(follo)m(wing:)225 +4847 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f +(shell)h(at)g(in)m(v)m(o)s(cation,)j(as)c(mo)s(di\014ed)g(b)m(y)g +(redirections)h(supplied)e(to)330 4956 y(the)g Ft(exec)e +Fu(builtin)225 5093 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking) +h(directory)g(as)f(set)h(b)m(y)f Ft(cd)p Fu(,)g Ft(pushd)p +Fu(,)g(or)g Ft(popd)p Fu(,)g(or)g(inherited)g(b)m(y)g(the)h(shell)f(at) +330 5203 y(in)m(v)m(o)s(cation)225 5340 y Fq(\017)60 +b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h(set)g(b)m(y)f +Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)p eop end %%Page: 38 44 TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299 -y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)225 299 +y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f +Ft(trap)225 435 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h(are)g +(set)g(b)m(y)g(v)-5 b(ariable)30 b(assignmen)m(t)g(or)g(with)f +Ft(set)f Fu(or)i(inherited)f(from)g(the)330 545 y(shell's)i(paren)m(t)f +(in)g(the)h(en)m(vironmen)m(t)225 682 y Fq(\017)60 b +Fu(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e +(inherited)h(from)f(the)h(shell's)g(paren)m(t)f(in)h(the)330 +791 y(en)m(vironmen)m(t)225 928 y Fq(\017)60 b Fu(options)33 +b(enabled)g(at)h(in)m(v)m(o)s(cation)h(\(either)f(b)m(y)f(default)g(or) +g(with)g(command-line)g(argumen)m(ts\))h(or)330 1037 +y(b)m(y)c Ft(set)225 1174 y Fq(\017)60 b Fu(options)31 +b(enabled)f(b)m(y)g Ft(shopt)f Fu(\(see)j(Section)f(4.3.2)h([The)e +(Shopt)g(Builtin],)h(page)g(64\))225 1310 y Fq(\017)60 +b Fu(shell)31 b(aliases)g(de\014ned)f(with)g Ft(alias)f +Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(90\))225 +1447 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f +Fm(id)p Fu(s,)55 b(including)49 b(those)i(of)e(bac)m(kground)h(jobs)f +(\(see)i(Section)g(3.2.3)g([Lists],)330 1556 y(page)31 +b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Ft($$)p Fu(,)g(and)g(the)h(v)-5 +b(alue)31 b(of)f Ft($PPID)275 1722 y Fu(When)k(a)g(simple)h(command)f +(other)g(than)g(a)h(builtin)f(or)g(shell)h(function)f(is)g(to)h(b)s(e)f +(executed,)i(it)f(is)150 1832 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g +(separate)h(execution)g(en)m(vironmen)m(t)g(that)f(consists)g(of)h(the) +f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 1941 y(noted,)31 +b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225 +2080 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e +(an)m(y)h(mo)s(di\014cations)h(and)e(additions)h(sp)s(eci\014ed)g(b)m +(y)g(redirections)g(to)330 2189 y(the)g(command)225 2326 +y Fq(\017)60 b Fu(the)31 b(curren)m(t)f(w)m(orking)g(directory)225 +2462 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 +2599 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33 +b(and)e(functions)h(mark)m(ed)g(for)g(exp)s(ort,)g(along)h(with)f(v)-5 +b(ariables)32 b(exp)s(orted)g(for)g(the)330 2709 y(command,)e(passed)g +(in)g(the)h(en)m(vironmen)m(t)g(\(see)g(Section)g(3.7.4)i([En)m +(vironmen)m(t],)e(page)g(38\))225 2845 y Fq(\017)60 b +Fu(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)h(are)f(reset)h(to)g(the) +f(v)-5 b(alues)32 b(inherited)e(from)h(the)g(shell's)h(paren)m(t,)g +(and)330 2955 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored) +275 3120 y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g +(en)m(vironmen)m(t)g(cannot)g(a\013ect)h(the)f(shell's)g(execution)150 +3230 y(en)m(vironmen)m(t.)275 3368 y(Command)35 b(substitution,)j +(commands)e(group)s(ed)f(with)i(paren)m(theses,)h(and)e(async)m +(hronous)g(com-)150 3478 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i +(subshell)e(en)m(vironmen)m(t)h(that)h(is)f(a)g(duplicate)h(of)f(the)g +(shell)g(en)m(vironmen)m(t,)150 3588 y(except)i(that)g(traps)f(caugh)m +(t)h(b)m(y)f(the)h(shell)f(are)g(reset)h(to)g(the)f(v)-5 +b(alues)35 b(that)g(the)f(shell)h(inherited)e(from)150 +3697 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49 +b(Builtin)32 b(commands)g(that)h(are)g(in)m(v)m(ok)m(ed)h(as)e(part)g +(of)h(a)f(pip)s(eline)g(are)h(also)150 3807 y(executed)41 +b(in)f(a)h(subshell)e(en)m(vironmen)m(t.)72 b(Changes)40 +b(made)g(to)h(the)g(subshell)e(en)m(vironmen)m(t)i(cannot)150 +3916 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 +4055 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions) +g(inherit)g(the)g(v)-5 b(alue)31 b(of)f(the)h Ft(-e)e +Fu(option)150 4165 y(from)23 b(the)i(paren)m(t)f(shell.)38 +b(When)24 b(not)g(in)g Fm(posix)f Fu(mo)s(de,)i(Bash)f(clears)h(the)f +Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 4303 +y(If)f(a)h(command)g(is)g(follo)m(w)m(ed)h(b)m(y)f(a)g(`)p +Ft(&)p Fu(')g(and)f(job)h(con)m(trol)h(is)f(not)g(activ)m(e,)k(the)c +(default)g(standard)f(input)150 4413 y(for)35 b(the)g(command)g(is)g +(the)g(empt)m(y)h(\014le)f Ft(/dev/null)p Fu(.)52 b(Otherwise,)37 +b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 4522 +y(the)c(\014le)f(descriptors)g(of)h(the)f(calling)i(shell)f(as)f(mo)s +(di\014ed)g(b)m(y)g(redirections.)150 4726 y Fk(3.7.4)63 +b(En)m(vironmen)m(t)150 4873 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m +(ok)m(ed)h(it)g(is)f(giv)m(en)g(an)g(arra)m(y)g(of)g(strings)g(called)h +(the)f Fr(en)m(vironmen)m(t)p Fu(.)41 b(This)28 b(is)h(a)150 +4982 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g +Ft(name=value)p Fu(.)275 5121 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w) +m(a)m(ys)g(to)f(manipulate)f(the)h(en)m(vironmen)m(t.)69 +b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 5230 +y(scans)g(its)h(o)m(wn)f(en)m(vironmen)m(t)h(and)f(creates)i(a)f +(parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)150 +5340 y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s (cesses.)39 b(Executed)26 b(commands)g(inherit)g(the)g(en)m(vironmen)m -(t.)39 b(The)150 408 y Ft(export)c Fu(and)i(`)p Ft(declare)29 -b(-x)p Fu(')36 b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g -(to)h(b)s(e)e(added)h(to)h(and)150 518 y(deleted)21 b(from)f(the)h(en)m -(vironmen)m(t.)38 b(If)20 b(the)h(v)-5 b(alue)21 b(of)g(a)g(parameter)g -(in)f(the)g(en)m(vironmen)m(t)i(is)e(mo)s(di\014ed,)i(the)150 -628 y(new)31 b(v)-5 b(alue)32 b(b)s(ecomes)f(part)h(of)f(the)h(en)m +(t.)39 b(The)p eop end +%%Page: 39 45 +TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)150 299 +y Ft(export)35 b Fu(and)i(`)p Ft(declare)29 b(-x)p Fu(')36 +b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g(to)h(b)s(e)e +(added)h(to)h(and)150 408 y(deleted)21 b(from)f(the)h(en)m(vironmen)m +(t.)38 b(If)20 b(the)h(v)-5 b(alue)21 b(of)g(a)g(parameter)g(in)f(the)g +(en)m(vironmen)m(t)i(is)e(mo)s(di\014ed,)i(the)150 518 +y(new)31 b(v)-5 b(alue)32 b(b)s(ecomes)f(part)h(of)f(the)h(en)m (vironmen)m(t,)g(replacing)h(the)e(old.)44 b(The)31 b(en)m(vironmen)m -(t)h(inherited)150 737 y(b)m(y)f(an)m(y)g(executed)h(command)f +(t)h(inherited)150 628 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 847 y(mo)s(di\014ed)26 +(v)-5 b(alues)31 b(ma)m(y)h(b)s(e)150 737 y(mo)s(di\014ed)26 b(in)g(the)h(shell,)h(less)f(an)m(y)g(pairs)f(remo)m(v)m(ed)i(b)m(y)f (the)g Ft(unset)e Fu(and)h(`)p Ft(export)j(-n)p Fu(')e(commands,)g -(plus)150 956 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d -Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 1100 +(plus)150 847 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d +Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 991 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 -1210 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h +1100 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 -1320 y(page)g(18.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g +1210 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 1464 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g -(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(58\),)h(then)e(all)g -(parameter)150 1573 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m +(command.)275 1354 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g +(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(60\),)h(then)e(all)g +(parameter)150 1464 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m (vironmen)m(t)g(for)g(a)g(command,)f(not)h(just)f(those)i(that)f -(precede)g(the)150 1683 y(command)g(name.)275 1827 y(When)h(Bash)h(in)m +(precede)g(the)150 1573 y(command)g(name.)275 1717 y(When)h(Bash)h(in)m (v)m(ok)m(es)i(an)e(external)h(command,)f(the)g(v)-5 b(ariable)33 b(`)p Ft($_)p Fu(')f(is)g(set)h(to)f(the)g(full)g -(pathname)150 1936 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 2145 y Fk(3.7.5)63 -b(Exit)40 b(Status)150 2292 y Fu(The)26 b(exit)h(status)f(of)g(an)g +(pathname)150 1827 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g +(command)f(in)g(its)h(en)m(vironmen)m(t.)150 2035 y Fk(3.7.5)63 +b(Exit)40 b(Status)150 2182 y Fu(The)26 b(exit)h(status)f(of)g(an)g (executed)h(command)f(is)g(the)h(v)-5 b(alue)26 b(returned)f(b)m(y)h -(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 2401 +(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 2292 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 2511 y(shell)i(ma)m(y)g(use)f(v)-5 +(elo)m(w,)h(the)150 2401 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 -2621 y(commands)j(are)g(also)h(limited)g(to)g(this)f(range.)58 +2511 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 -2730 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 2874 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s +2621 y(sp)s(ecial)31 b(v)-5 b(alues)31 b(to)g(indicate)g(sp)s(eci\014c) +f(failure)h(mo)s(des.)275 2765 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s (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 2984 y(A)e(non-zero)h(exit)g(status)g +(status)f(has)f(succeeded.)150 2874 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 3093 y(there)34 +(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 2984 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 3203 y(failure)38 b(mo)s(des.)62 b(When)37 +b(arious)150 3093 y(failure)38 b(mo)s(des.)62 b(When)37 b(a)h(command)f(terminates)i(on)e(a)h(fatal)h(signal)g(whose)e(n)m(um)m -(b)s(er)f(is)i Fr(N)p Fu(,)i(Bash)150 3313 y(uses)30 +(b)s(er)f(is)i Fr(N)p Fu(,)i(Bash)150 3203 y(uses)30 b(the)g(v)-5 b(alue)31 b(128)p Ft(+)p Fr(N)42 b Fu(as)30 -b(the)h(exit)g(status.)275 3457 y(If)k(a)h(command)g(is)g(not)g(found,) +b(the)h(exit)g(status.)275 3347 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 3566 y(127.)42 b(If)30 b(a)h(command)f(is)g(found) +(a)j(status)f(of)150 3457 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 -3710 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f +3600 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 -3820 y(is)c(greater)i(than)e(zero.)275 3964 y(The)38 +3710 y(is)c(greater)i(than)e(zero.)275 3854 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 4073 +(commands)e(\(see)h(Section)h(3.2.4.2)h([Con-)150 3964 y(ditional)i(Constructs],)h(page)f(10\))g(and)e(some)i(of)f(the)g(list) g(constructs)g(\(see)h(Section)f(3.2.3)i([Lists],)150 -4183 y(page)31 b(9\).)275 4327 y(All)40 b(of)g(the)h(Bash)f(builtins)f +4073 y(page)31 b(9\).)275 4217 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 4436 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m +(a)g(non-zero)150 4327 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 4546 y(return)29 -b(an)i(exit)g(status)g(of)f(2)h(to)g(indicate)g(incorrect)h(usage.)150 +(constructs.)50 b(All)35 b(builtins)150 4436 y(return)e(an)i(exit)g +(status)g(of)f(2)h(to)g(indicate)h(incorrect)f(usage,)h(generally)g(in) +m(v)-5 b(alid)35 b(options)g(or)f(missing)150 4546 y(argumen)m(ts.)150 4755 y Fk(3.7.6)63 b(Signals)150 4902 y Fu(When)36 b(Bash)g(is)h(in)m (teractiv)m(e,)j(in)c(the)h(absence)f(of)h(an)m(y)f(traps,)i(it)e (ignores)h Ft(SIGTERM)d Fu(\(so)j(that)g(`)p Ft(kill)150 @@ -10831,12 +10991,12 @@ h(that)h(the)f Ft(wait)150 5121 y Fu(builtin)24 b(is)h(in)m Ft(SIGINT)p Fu(,)h(it)g(breaks)f(out)h(of)f(an)m(y)h(executing)h(lo)s (ops.)150 5230 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g Ft(SIGQUIT)p Fu(.)42 b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h -(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 5340 y(page)f(97\),)h -(Bash)e(ignores)h Ft(SIGTTIN)p Fu(,)e Ft(SIGTTOU)p Fu(,)g(and)g +(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 5340 y(page)f(100\),)h +(Bash)f(ignores)g Ft(SIGTTIN)p Fu(,)d Ft(SIGTTOU)p Fu(,)h(and)h Ft(SIGTSTP)p Fu(.)p eop end -%%Page: 39 45 -TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)275 299 +%%Page: 40 46 +TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)275 299 y(Non-builtin)31 b(commands)g(started)g(b)m(y)g(Bash)h(ha)m(v)m(e)g (signal)g(handlers)e(set)i(to)g(the)g(v)-5 b(alues)31 b(inherited)150 408 y(b)m(y)37 b(the)h(shell)g(from)f(its)h(paren)m(t.) @@ -10846,70 +11006,70 @@ Ft(SIGQUIT)e Fu(in)j(addition)f(to)i(these)f(inherited)f(handlers.)55 b(Commands)35 b(run)f(as)i(a)150 628 y(result)27 b(of)h(command)f (substitution)h(ignore)g(the)g(k)m(eyb)s(oard-generated)g(job)g(con)m (trol)h(signals)f Ft(SIGTTIN)p Fu(,)150 737 y Ft(SIGTTOU)p -Fu(,)h(and)g Ft(SIGTSTP)p Fu(.)275 883 y(The)h(shell)i(exits)g(b)m(y)f +Fu(,)h(and)g Ft(SIGTSTP)p Fu(.)275 882 y(The)h(shell)i(exits)g(b)m(y)f (default)g(up)s(on)f(receipt)i(of)f(a)h Ft(SIGHUP)p Fu(.)42 b(Before)32 b(exiting,)h(an)e(in)m(teractiv)m(e)j(shell)150 992 y(resends)41 b(the)i Ft(SIGHUP)e Fu(to)i(all)g(jobs,)i(running)c (or)h(stopp)s(ed.)76 b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g -Ft(SIGCONT)d Fu(to)150 1102 y(ensure)32 b(that)h(they)g(receiv)m(e)i +Ft(SIGCONT)d Fu(to)150 1101 y(ensure)32 b(that)h(they)g(receiv)m(e)i (the)e Ft(SIGHUP)p Fu(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell) g(from)g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 1211 y(to)i(a)g(particular)g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h (from)g(the)f(jobs)g(table)i(with)e(the)h Ft(disown)e -Fu(builtin)h(\(see)150 1321 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 -Ft(SIGHUP)d Fu(using)h Ft(disown)150 1431 y(-h)p Fu(.)275 -1576 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f +Fu(builtin)h(\(see)150 1320 y(Section)c(7.2)g([Job)e(Con)m(trol)i +(Builtins],)g(page)g(101\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i +Ft(SIGHUP)c Fu(using)i Ft(disown)150 1430 y(-h)p Fu(.)275 +1575 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f (set)i(with)f Ft(shopt)e Fu(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150 -1686 y(Builtin],)31 b(page)g(62\),)h(Bash)f(sends)e(a)i +1684 y(Builtin],)31 b(page)g(64\),)h(Bash)f(sends)e(a)i Ft(SIGHUP)e Fu(to)i(all)g(jobs)f(when)f(an)i(in)m(teractiv)m(e)i(login) -e(shell)g(exits.)275 1831 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g +e(shell)g(exits.)275 1829 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g (command)f(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic) -m(h)h(a)g(trap)150 1941 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g +m(h)h(a)g(trap)150 1939 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 2050 y(w)m(aiting)j(for)f(an)g(async)m +b(When)35 b(Bash)g(is)150 2048 y(w)m(aiting)j(for)f(an)g(async)m (hronous)g(command)g(via)h(the)f Ft(wait)f Fu(builtin,)i(the)g -(reception)g(of)f(a)g(signal)h(for)150 2160 y(whic)m(h)d(a)g(trap)g +(reception)g(of)f(a)g(signal)h(for)150 2158 y(whic)m(h)d(a)g(trap)g (has)g(b)s(een)f(set)h(will)h(cause)f(the)g Ft(wait)f Fu(builtin)h(to)g(return)f(immediately)i(with)f(an)g(exit)150 -2270 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 2518 y Fs(3.8)68 b(Shell)45 -b(Scripts)150 2678 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le) +2267 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 2524 y Fs(3.8)68 b(Shell)45 +b(Scripts)150 2683 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le) f(con)m(taining)h(shell)f(commands.)40 b(When)29 b(suc)m(h)g(a)h -(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 2787 y(non-option)c +(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 2792 y(non-option)c (argumen)m(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)f(neither)g(the)g Ft(-c)g Fu(nor)f Ft(-s)h Fu(option)g(is)g(supplied)f(\(see)150 -2897 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(80\),)i +2902 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(82\),)i (Bash)d(reads)g(and)f(executes)i(commands)f(from)f(the)i(\014le,)150 -3007 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f +3012 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f (creates)i(a)e(non-in)m(teractiv)m(e)j(shell.)46 b(The)31 -b(shell)i(\014rst)e(searc)m(hes)150 3116 y(for)d(the)g(\014le)g(in)g +b(shell)i(\014rst)e(searc)m(hes)150 3121 y(for)d(the)g(\014le)g(in)g (the)g(curren)m(t)f(directory)-8 b(,)30 b(and)d(lo)s(oks)i(in)e(the)i (directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)275 -3262 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f +3266 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f (sp)s(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g -(\014le,)150 3371 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j +(\014le,)150 3376 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 3481 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m +(remain-)150 3485 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 3590 y(parameters)31 b(are)f(unset.)275 -3736 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m +(the)f(p)s(ositional)150 3595 y(parameters)31 b(are)f(unset.)275 +3740 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m (y)e(using)g(the)h Ft(chmod)e Fu(command)h(to)h(turn)e(on)i(the)150 -3846 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h +3849 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h (\014le)f(while)g(searc)m(hing)h(the)f Ft($PATH)f Fu(for)h(a)h -(command,)h(it)150 3955 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 4101 -y Ft(filename)46 b Fj(arguments)150 4246 y Fu(is)30 b(equiv)-5 -b(alen)m(t)32 b(to)f(executing)390 4392 y Ft(bash)47 -b(filename)e Fj(arguments)150 4537 y Fu(if)30 b Ft(filename)d +(command,)h(it)150 3959 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 4103 +y Ft(filename)46 b Fj(arguments)150 4248 y Fu(is)30 b(equiv)-5 +b(alen)m(t)32 b(to)f(executing)390 4393 y Ft(bash)47 +b(filename)e Fj(arguments)150 4538 y Fu(if)30 b Ft(filename)d Fu(is)j(an)f(executable)j(shell)e(script.)40 b(This)29 b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e(e\013ect)150 4647 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 4756 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s +(that)f(the)150 4757 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s (ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f(description)g(of)g Ft(hash)f Fu(in)h(Section)h(4.1)150 4866 y([Bourne)30 -b(Shell)h(Builtins],)g(page)g(41\))h(are)e(retained)h(b)m(y)f(the)h(c)m +b(Shell)h(Builtins],)g(page)g(42\))h(are)e(retained)h(b)m(y)f(the)h(c)m (hild.)275 5011 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g (a)g(part)f(of)h(the)g(op)s(erating)g(system's)f(command)h(execution) 150 5121 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h @@ -10920,9 +11080,9 @@ b(Th)m(us,)30 b(y)m(ou)h(can)h(sp)s(ecify)e(Bash,)i Ft(awk)p Fu(,)e(P)m(erl,)150 5340 y(or)g(some)h(other)g(in)m(terpreter)g(and)e (write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h(in)f(that)h (language.)p eop end -%%Page: 40 46 -TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)275 299 +%%Page: 41 47 +TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41 +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)275 299 y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m(terpreter)g(consist)g(of)g(a) g(single)h(optional)f(argumen)m(t)h(follo)m(wing)g(the)150 408 y(in)m(terpreter)33 b(name)h(on)f(the)g(\014rst)f(line)i(of)f(the)g @@ -10939,210 +11099,218 @@ Ft(#!)e(/bin/bash)g Fu(\(assuming)i(that)h(Bash)f(has)g(b)s(een)f f(that)i(Bash)f(will)h(b)s(e)f(used)f(to)i(in)m(terpret)f(the)h (script,)g(ev)m(en)g(if)f(it)h(is)f(executed)150 1091 y(under)j(another)h(shell.)p eop end -%%Page: 41 47 -TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(41)150 299 y Fp(4)80 -b(Shell)53 b(Builtin)f(Commands)150 541 y Fu(Builtin)34 +%%Page: 42 48 +TeXDict begin 42 47 bop 3659 -116 a Fu(42)150 299 y Fp(4)80 +b(Shell)53 b(Builtin)f(Commands)150 499 y Fu(Builtin)34 b(commands)f(are)h(con)m(tained)g(within)f(the)h(shell)g(itself.)50 b(When)34 b(the)f(name)h(of)f(a)h(builtin)f(com-)150 -651 y(mand)26 b(is)i(used)e(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)f +608 y(mand)26 b(is)i(used)e(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)f (simple)h(command)f(\(see)h(Section)g(3.2.1)h([Simple)f(Commands],)150 -760 y(page)21 b(8\),)j(the)d(shell)g(executes)h(the)f(command)f +718 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 +b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g (functionalit)m(y)h(imp)s(ossible)e(or)h(incon)m(v)m(enien)m(t)h(to)f -(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 +(obtain)150 937 y(with)30 b(separate)h(utilities.)275 +1065 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 +1174 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 +1302 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 +1412 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f (con)m(trol)i(facilities)g(\(see)f(Section)h(7.2)f([Job)f(Con)m(trol)h -(Builtins],)150 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 Fm(posix)g Fu(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 Ft(-)p Fu(')f(accepts)i(`)p Ft(--)p Fu(')e(to)h(signify)f -(the)h(end)e(of)i(the)f(options.)50 b(The)33 b Ft(:)p -Fu(,)h Ft(true)p Fu(,)f Ft(false)p Fu(,)f(and)h Ft(test)150 -2295 y Fu(builtins)i(do)g(not)h(accept)g(options)g(and)f(do)g(not)h -(treat)g(`)p Ft(--)p Fu(')f(sp)s(ecially)-8 b(.)57 b(The)35 -b Ft(exit)p Fu(,)h Ft(logout)p Fu(,)f Ft(break)p Fu(,)150 -2405 y Ft(continue)p Fu(,)29 b Ft(let)p Fu(,)i(and)g -Ft(shift)f Fu(builtins)g(accept)j(and)e(pro)s(cess)g(argumen)m(ts)g(b)s -(eginning)g(with)g(`)p Ft(-)p Fu(')g(with-)150 2515 y(out)f(requiring)f -(`)p Ft(--)p Fu('.)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 Ft(-)p Fu(')h(as)f(in)m(v)-5 b(alid)25 b(options)g(and)e(require)h -(`)p Ft(--)p Fu(')g(to)h(prev)m(en)m(t)150 2734 y(this)30 -b(in)m(terpretation.)150 2970 y Fs(4.1)68 b(Bourne)45 -b(Shell)g(Builtins)150 3130 y Fu(The)22 b(follo)m(wing)j(shell)d -(builtin)h(commands)f(are)h(inherited)g(from)f(the)h(Bourne)g(Shell.)38 -b(These)22 b(commands)150 3239 y(are)31 b(implemen)m(ted)g(as)f(sp)s -(eci\014ed)g(b)m(y)g(the)h Fm(posix)e Fu(standard.)150 -3403 y Ft(:)h Fu(\(a)h(colon\))870 3512 y Ft(:)47 b([)p -Fj(arguments)p Ft(])630 3648 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g +(Builtins],)150 1521 y(page)37 b(101\),)i(the)d(directory)g(stac)m(k)h +(\(see)g(Section)g(6.8.1)g([Directory)h(Stac)m(k)f(Builtins],)h(page)e +(93\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h +([Bash)f(History)g(Builtins],)h(page)g(137\),)h(and)d(the)h +(programmable)150 1740 y(completion)32 b(facilities)g(\(see)g(Section)f +(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(131\).)275 +1868 y(Man)m(y)f(of)f(the)h(builtins)e(ha)m(v)m(e)j(b)s(een)e(extended) +g(b)m(y)g Fm(posix)g Fu(or)g(Bash.)275 1996 y(Unless)20 +b(otherwise)h(noted,)h(eac)m(h)g(builtin)e(command)g(do)s(cumen)m(ted)g +(as)h(accepting)h(options)e(preceded)150 2105 y(b)m(y)29 +b(`)p Ft(-)p Fu(')g(accepts)i(`)p Ft(--)p Fu(')e(to)h(signify)f(the)g +(end)g(of)g(the)h(options.)40 b(The)29 b Ft(:)p Fu(,)g +Ft(true)p Fu(,)g Ft(false)p Fu(,)f(and)h Ft(test)f Fu(builtins)150 +2215 y(do)34 b(not)h(accept)h(options)f(and)f(do)g(not)h(treat)h(`)p +Ft(--)p Fu(')e(sp)s(ecially)-8 b(.)54 b(The)34 b Ft(exit)p +Fu(,)h Ft(logout)p Fu(,)f Ft(return)p Fu(,)g Ft(break)p +Fu(,)150 2325 y Ft(continue)p Fu(,)22 b Ft(let)p Fu(,)i(and)e +Ft(shift)f Fu(builtins)h(accept)i(and)e(pro)s(cess)g(argumen)m(ts)h(b)s +(eginning)f(with)g(`)p Ft(-)p Fu(')h(without)150 2434 +y(requiring)41 b(`)p Ft(--)p Fu('.)74 b(Other)41 b(builtins)g(that)h +(accept)h(argumen)m(ts)e(but)g(are)h(not)g(sp)s(eci\014ed)f(as)g +(accepting)150 2544 y(options)25 b(in)m(terpret)f(argumen)m(ts)h(b)s +(eginning)e(with)h(`)p Ft(-)p Fu(')h(as)f(in)m(v)-5 b(alid)25 +b(options)g(and)e(require)h(`)p Ft(--)p Fu(')g(to)h(prev)m(en)m(t)150 +2653 y(this)30 b(in)m(terpretation.)150 2880 y Fs(4.1)68 +b(Bourne)45 b(Shell)g(Builtins)150 3040 y Fu(The)22 b(follo)m(wing)j +(shell)d(builtin)h(commands)f(are)h(inherited)g(from)f(the)h(Bourne)g +(Shell.)38 b(These)22 b(commands)150 3149 y(are)31 b(implemen)m(ted)g +(as)f(sp)s(eci\014ed)g(b)m(y)g(the)h Fm(posix)e Fu(standard.)150 +3295 y Ft(:)h Fu(\(a)h(colon\))870 3405 y Ft(:)47 b([)p +Fj(arguments)p Ft(])630 3532 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g (expanding)f Fr(argumen)m(ts)46 b Fu(and)c(p)s(erforming)f -(redirections.)76 b(The)630 3758 y(return)29 b(status)i(is)f(zero.)150 -3920 y Ft(.)g Fu(\(a)h(p)s(erio)s(d\))870 4029 y Ft(.)47 -b Fj(filename)f Ft([)p Fj(arguments)p Ft(])630 4165 y +(redirections.)76 b(The)630 3642 y(return)29 b(status)i(is)f(zero.)150 +3788 y Ft(.)g Fu(\(a)h(p)s(erio)s(d\))870 3897 y Ft(.)47 +b Fj(filename)f Ft([)p Fj(arguments)p Ft(])630 4025 y Fu(Read)34 b(and)f(execute)i(commands)e(from)g(the)h Fr(\014lename)39 b Fu(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 Fr(\014lename)37 +630 4134 y(con)m(text.)45 b(If)31 b Fr(\014lename)37 b Fu(do)s(es)31 b(not)g(con)m(tain)i(a)e(slash,)h(the)g Ft(PATH)e Fu(v)-5 b(ariable)32 b(is)f(used)f(to)i(\014nd)630 -4384 y Fr(\014lename)p Fu(.)52 b(When)34 b(Bash)g(is)h(not)f(in)g +4244 y Fr(\014lename)p Fu(.)52 b(When)34 b(Bash)g(is)h(not)f(in)g Fm(posix)f Fu(mo)s(de,)i(the)g(curren)m(t)f(directory)g(is)g(searc)m -(hed)630 4494 y(if)d Fr(\014lename)36 b Fu(is)31 b(not)h(found)d(in)i +(hed)630 4354 y(if)d Fr(\014lename)36 b Fu(is)31 b(not)h(found)d(in)i Ft($PATH)p Fu(.)41 b(If)31 b(an)m(y)g Fr(argumen)m(ts)k -Fu(are)c(supplied,)f(they)i(b)s(ecome)630 4604 y(the)e(p)s(ositional)h +Fu(are)c(supplied,)f(they)i(b)s(ecome)630 4463 y(the)e(p)s(ositional)h (parameters)g(when)e Fr(\014lename)35 b Fu(is)30 b(executed.)42 -b(Otherwise)30 b(the)g(p)s(ositional)630 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 Fr(\014lename)43 b Fu(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 Ft(source)p Fu(.)150 5204 y Ft(break)870 -5340 y(break)46 b([)p Fj(n)p Ft(])p eop end -%%Page: 42 48 -TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(42)630 299 y(Exit)45 -b(from)f(a)g Ft(for)p Fu(,)k Ft(while)p Fu(,)e Ft(until)p -Fu(,)h(or)d Ft(select)f Fu(lo)s(op.)83 b(If)44 b Fr(n)g -Fu(is)g(supplied,)j(the)e Fr(n)p Fu(th)630 408 y(enclosing)c(lo)s(op)f -(is)h(exited.)70 b Fr(n)40 b Fu(m)m(ust)g(b)s(e)f(greater)j(than)d(or)i -(equal)f(to)h(1.)70 b(The)40 b(return)630 518 y(status)31 -b(is)f(zero)h(unless)f Fr(n)g Fu(is)g(not)h(greater)g(than)g(or)f -(equal)h(to)g(1.)150 677 y Ft(cd)870 812 y(cd)47 b([-L|[-P)f([-e]])g -([-@])h([)p Fj(directory)p Ft(])630 946 y Fu(Change)27 -b(the)g(curren)m(t)f(w)m(orking)h(directory)g(to)h Fr(directory)p -Fu(.)40 b(If)26 b Fr(directory)35 b Fu(is)27 b(not)g(supplied,)630 -1056 y(the)f(v)-5 b(alue)26 b(of)f(the)h Ft(HOME)e Fu(shell)i(v)-5 +b(Otherwise)30 b(the)g(p)s(ositional)630 4573 y(parameters)40 +b(are)f(unc)m(hanged.)67 b(If)39 b(the)g Ft(-T)g Fu(option)g(is)h +(enabled,)h Ft(source)d Fu(inherits)h(an)m(y)630 4682 +y(trap)31 b(on)g Ft(DEBUG)p Fu(;)f(if)i(it)f(is)g(not,)h(an)m(y)g +Ft(DEBUG)e Fu(trap)h(string)g(is)g(sa)m(v)m(ed)h(and)f(restored)g +(around)630 4792 y(the)41 b(call)i(to)e Ft(source)p Fu(,)i(and)d +Ft(source)f Fu(unsets)i(the)g Ft(DEBUG)f Fu(trap)h(while)g(it)g +(executes.)74 b(If)630 4902 y Ft(-T)39 b Fu(is)g(not)h(set,)j(and)c +(the)g(sourced)h(\014le)f(c)m(hanges)i(the)e Ft(DEBUG)f +Fu(trap,)k(the)e(new)f(v)-5 b(alue)40 b(is)630 5011 y(retained)e(when)e +Ft(source)g Fu(completes.)63 b(The)37 b(return)f(status)h(is)h(the)f +(exit)i(status)e(of)h(the)630 5121 y(last)g(command)e(executed,)j(or)e +(zero)h(if)e(no)h(commands)f(are)h(executed.)61 b(If)36 +b Fr(\014lename)42 b Fu(is)630 5230 y(not)f(found,)h(or)e(cannot)h(b)s +(e)f(read,)j(the)e(return)e(status)i(is)g(non-zero.)71 +b(This)40 b(builtin)g(is)630 5340 y(equiv)-5 b(alen)m(t)32 +b(to)f Ft(source)p Fu(.)p eop end +%%Page: 43 49 +TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(43)150 299 y Ft(break)870 +428 y(break)46 b([)p Fj(n)p Ft(])630 558 y Fu(Exit)f(from)f(a)g +Ft(for)p Fu(,)k Ft(while)p Fu(,)e Ft(until)p Fu(,)h(or)d +Ft(select)f Fu(lo)s(op.)83 b(If)44 b Fr(n)g Fu(is)g(supplied,)j(the)e +Fr(n)p Fu(th)630 667 y(enclosing)c(lo)s(op)f(is)h(exited.)70 +b Fr(n)40 b Fu(m)m(ust)g(b)s(e)f(greater)j(than)d(or)i(equal)f(to)h(1.) +70 b(The)40 b(return)630 777 y(status)31 b(is)f(zero)h(unless)f +Fr(n)g Fu(is)g(not)h(greater)g(than)g(or)f(equal)h(to)g(1.)150 +927 y Ft(cd)870 1056 y(cd)47 b([-L|[-P)f([-e]])g([-@])h([)p +Fj(directory)p Ft(])630 1186 y Fu(Change)27 b(the)g(curren)m(t)f(w)m +(orking)h(directory)g(to)h Fr(directory)p Fu(.)40 b(If)26 +b Fr(directory)35 b Fu(is)27 b(not)g(supplied,)630 1295 +y(the)f(v)-5 b(alue)26 b(of)f(the)h Ft(HOME)e Fu(shell)i(v)-5 b(ariable)26 b(is)g(used.)38 b(An)m(y)25 b(additional)i(argumen)m(ts)e -(follo)m(wing)630 1166 y Fr(directory)39 b Fu(are)31 +(follo)m(wing)630 1405 y Fr(directory)39 b Fu(are)31 b(ignored.)41 b(If)30 b(the)h(shell)g(v)-5 b(ariable)31 b Ft(CDPATH)e Fu(exists,)i(it)g(is)g(used)f(as)g(a)h(searc)m(h)630 -1275 y(path:)39 b(eac)m(h)29 b(directory)g(name)f(in)f +1514 y(path:)39 b(eac)m(h)29 b(directory)g(name)f(in)f Ft(CDPATH)g Fu(is)h(searc)m(hed)g(for)g Fr(directory)p -Fu(,)h(with)f(alternativ)m(e)630 1385 y(directory)j(names)g(in)f +Fu(,)h(with)f(alternativ)m(e)630 1624 y(directory)j(names)g(in)f Ft(CDPATH)f Fu(separated)j(b)m(y)e(a)h(colon)h(\(`)p Ft(:)p Fu('\).)43 b(If)30 b Fr(directory)39 b Fu(b)s(egins)30 -b(with)630 1494 y(a)h(slash,)f Ft(CDPATH)f Fu(is)h(not)h(used.)630 -1629 y(The)g Ft(-P)h Fu(option)g(means)g(to)h(not)f(follo)m(w)h(sym)m +b(with)630 1733 y(a)h(slash,)f Ft(CDPATH)f Fu(is)h(not)h(used.)630 +1863 y(The)g Ft(-P)h Fu(option)g(means)g(to)h(not)f(follo)m(w)h(sym)m (b)s(olic)g(links:)44 b(sym)m(b)s(olic)32 b(links)g(are)g(resolv)m(ed) -630 1738 y(while)41 b Ft(cd)f Fu(is)h(tra)m(v)m(ersing)h +630 1973 y(while)41 b Ft(cd)f Fu(is)h(tra)m(v)m(ersing)h Fr(directory)49 b Fu(and)40 b(b)s(efore)g(pro)s(cessing)h(an)f -(instance)i(of)f(`)p Ft(..)p Fu(')f(in)630 1848 y Fr(directory)p -Fu(.)630 1983 y(By)34 b(default,)h(or)e(when)g(the)g +(instance)i(of)f(`)p Ft(..)p Fu(')f(in)630 2082 y Fr(directory)p +Fu(.)630 2212 y(By)34 b(default,)h(or)e(when)g(the)g Ft(-L)g Fu(option)h(is)g(supplied,)f(sym)m(b)s(olic)h(links)f(in)h -Fr(directory)42 b Fu(are)630 2092 y(resolv)m(ed)31 b(after)g +Fr(directory)42 b Fu(are)630 2321 y(resolv)m(ed)31 b(after)g Ft(cd)f Fu(pro)s(cesses)g(an)g(instance)h(of)g(`)p Ft(..)p -Fu(')f(in)g Fr(directory)p Fu(.)630 2227 y(If)35 b(`)p +Fu(')f(in)g Fr(directory)p Fu(.)630 2451 y(If)35 b(`)p Ft(..)p Fu(')f(app)s(ears)h(in)f Fr(directory)p Fu(,)j(it)f(is)f(pro)s (cessed)f(b)m(y)h(remo)m(ving)h(the)f(immediately)h(pre-)630 -2336 y(ceding)31 b(pathname)f(comp)s(onen)m(t,)h(bac)m(k)g(to)g(a)g +2560 y(ceding)31 b(pathname)f(comp)s(onen)m(t,)h(bac)m(k)g(to)g(a)g (slash)f(or)h(the)f(b)s(eginning)g(of)g Fr(directory)p -Fu(.)630 2471 y(If)i(the)i Ft(-e)e Fu(option)h(is)g(supplied)f(with)g +Fu(.)630 2690 y(If)i(the)i Ft(-e)e Fu(option)h(is)g(supplied)f(with)g Ft(-P)h Fu(and)f(the)h(curren)m(t)g(w)m(orking)g(directory)g(cannot)630 -2580 y(b)s(e)k(successfully)g(determined)g(after)i(a)e(successful)h +2800 y(b)s(e)k(successfully)g(determined)g(after)i(a)e(successful)h (directory)g(c)m(hange,)i Ft(cd)d Fu(will)h(return)630 -2690 y(an)30 b(unsuccessful)f(status.)630 2824 y(On)41 +2909 y(an)30 b(unsuccessful)f(status.)630 3039 y(On)41 b(systems)h(that)h(supp)s(ort)d(it,)46 b(the)c Ft(-@)g Fu(option)g(presen)m(ts)g(the)g(extended)g(attributes)630 -2934 y(asso)s(ciated)32 b(with)e(a)h(\014le)f(as)h(a)f(directory)-8 -b(.)630 3068 y(If)41 b Fr(directory)49 b Fu(is)41 b(`)p +3148 y(asso)s(ciated)32 b(with)e(a)h(\014le)f(as)h(a)f(directory)-8 +b(.)630 3278 y(If)41 b Fr(directory)49 b Fu(is)41 b(`)p Ft(-)p Fu(',)j(it)e(is)f(con)m(v)m(erted)h(to)g Ft($OLDPWD)d -Fu(b)s(efore)i(the)g(directory)h(c)m(hange)g(is)630 3178 -y(attempted.)630 3313 y(If)33 b(a)h(non-empt)m(y)g(directory)g(name)f +Fu(b)s(efore)i(the)g(directory)h(c)m(hange)g(is)630 3387 +y(attempted.)630 3517 y(If)33 b(a)h(non-empt)m(y)g(directory)g(name)f (from)g Ft(CDPATH)f Fu(is)h(used,)h(or)g(if)f(`)p Ft(-)p -Fu(')h(is)f(the)h(\014rst)f(argu-)630 3422 y(men)m(t,)28 +Fu(')h(is)f(the)h(\014rst)f(argu-)630 3626 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 3532 y(w)m(orking)k +(absolute)g(pathname)g(of)f(the)h(new)630 3736 y(w)m(orking)k (directory)g(is)f(written)g(to)i(the)e(standard)g(output.)630 -3666 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 3776 -y(erwise.)150 3935 y Ft(continue)870 4070 y(continue)46 -b([)p Fj(n)p Ft(])630 4204 y Fu(Resume)32 b(the)g(next)g(iteration)i +3866 y(The)f(return)g(status)h(is)f(zero)i(if)e(the)h(directory)g(is)g +(successfully)g(c)m(hanged,)g(non-zero)g(oth-)630 3975 +y(erwise.)150 4125 y Ft(continue)870 4254 y(continue)46 +b([)p Fj(n)p Ft(])630 4384 y Fu(Resume)32 b(the)g(next)g(iteration)i (of)e(an)g(enclosing)h Ft(for)p Fu(,)f Ft(while)p Fu(,)f -Ft(until)p Fu(,)g(or)h Ft(select)f Fu(lo)s(op.)630 4314 +Ft(until)p Fu(,)g(or)h Ft(select)f Fu(lo)s(op.)630 4493 y(If)f Fr(n)h Fu(is)g(supplied,)e(the)j(execution)g(of)f(the)g Fr(n)p Fu(th)f(enclosing)i(lo)s(op)f(is)f(resumed.)42 -b Fr(n)30 b Fu(m)m(ust)h(b)s(e)630 4423 y(greater)39 +b Fr(n)30 b Fu(m)m(ust)h(b)s(e)630 4603 y(greater)39 b(than)f(or)g(equal)g(to)h(1.)63 b(The)38 b(return)e(status)j(is)e -(zero)i(unless)e Fr(n)h Fu(is)g(not)g(greater)630 4533 -y(than)30 b(or)g(equal)h(to)g(1.)150 4692 y Ft(eval)870 -4827 y(eval)47 b([)p Fj(arguments)p Ft(])630 4961 y Fu(The)25 +(zero)i(unless)e Fr(n)h Fu(is)g(not)g(greater)630 4712 +y(than)30 b(or)g(equal)h(to)g(1.)150 4862 y Ft(eval)870 +4991 y(eval)47 b([)p Fj(arguments)p Ft(])630 5121 y Fu(The)25 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 5071 y(read)35 b(and)g(executed,)j +(command,)f(whic)m(h)g(is)f(then)630 5230 y(read)35 b(and)g(executed,)j (and)d(its)h(exit)g(status)g(returned)e(as)h(the)h(exit)g(status)g(of)g -Ft(eval)p Fu(.)54 b(If)630 5181 y(there)31 b(are)f(no)h(argumen)m(ts)f +Ft(eval)p Fu(.)54 b(If)630 5340 y(there)31 b(are)f(no)h(argumen)m(ts)f (or)h(only)f(empt)m(y)h(argumen)m(ts,)g(the)f(return)g(status)g(is)h -(zero.)150 5340 y Ft(exec)p eop end -%%Page: 43 49 -TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f -(Builtin)h(Commands)2079 b(43)870 299 y Ft(exec)47 b([-cl])f([-a)h -Fj(name)p Ft(])f([)p Fj(command)g Ft([)p Fj(arguments)p -Ft(]])630 440 y Fu(If)36 b Fr(command)k Fu(is)c(supplied,)h(it)g -(replaces)h(the)e(shell)h(without)f(creating)i(a)f(new)f(pro)s(cess.) -630 549 y(If)k(the)h Ft(-l)e Fu(option)i(is)g(supplied,)h(the)e(shell)h -(places)g(a)g(dash)f(at)h(the)f(b)s(eginning)g(of)h(the)630 -659 y(zeroth)36 b(argumen)m(t)h(passed)e(to)h Fr(command)p -Fu(.)57 b(This)35 b(is)h(what)f(the)h Ft(login)e Fu(program)i(do)s(es.) -630 769 y(The)i Ft(-c)g Fu(option)g(causes)h Fr(command)j -Fu(to)d(b)s(e)f(executed)h(with)f(an)g(empt)m(y)h(en)m(vironmen)m(t.) -630 878 y(If)c Ft(-a)g Fu(is)h(supplied,)f(the)h(shell)g(passes)f -Fr(name)41 b Fu(as)36 b(the)f(zeroth)i(argumen)m(t)f(to)g -Fr(command)p Fu(.)630 988 y(If)c Fr(command)j Fu(cannot)e(b)s(e)f +(zero.)p eop end +%%Page: 44 50 +TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f +(Builtin)h(Commands)2079 b(44)150 299 y Ft(exec)870 430 +y(exec)47 b([-cl])f([-a)h Fj(name)p Ft(])f([)p Fj(command)g +Ft([)p Fj(arguments)p Ft(]])630 562 y Fu(If)36 b Fr(command)k +Fu(is)c(supplied,)h(it)g(replaces)h(the)e(shell)h(without)f(creating)i +(a)f(new)f(pro)s(cess.)630 671 y(If)k(the)h Ft(-l)e Fu(option)i(is)g +(supplied,)h(the)e(shell)h(places)g(a)g(dash)f(at)h(the)f(b)s(eginning) +g(of)h(the)630 781 y(zeroth)36 b(argumen)m(t)h(passed)e(to)h +Fr(command)p Fu(.)57 b(This)35 b(is)h(what)f(the)h Ft(login)e +Fu(program)i(do)s(es.)630 891 y(The)i Ft(-c)g Fu(option)g(causes)h +Fr(command)j Fu(to)d(b)s(e)f(executed)h(with)f(an)g(empt)m(y)h(en)m +(vironmen)m(t.)630 1000 y(If)c Ft(-a)g Fu(is)h(supplied,)f(the)h(shell) +g(passes)f Fr(name)41 b Fu(as)36 b(the)f(zeroth)i(argumen)m(t)f(to)g +Fr(command)p Fu(.)630 1110 y(If)c Fr(command)j Fu(cannot)e(b)s(e)f (executed)h(for)f(some)g(reason,)h(a)g(non-in)m(teractiv)m(e)i(shell)d -(exits,)630 1097 y(unless)27 b(the)g Ft(execfail)e Fu(shell)i(option)h +(exits,)630 1219 y(unless)27 b(the)g Ft(execfail)e Fu(shell)i(option)h (is)f(enabled.)40 b(In)27 b(that)g(case,)j(it)d(returns)f(failure.)40 -b(An)630 1207 y(in)m(teractiv)m(e)d(shell)c(returns)g(failure)h(if)f +b(An)630 1329 y(in)m(teractiv)m(e)d(shell)c(returns)g(failure)h(if)f (the)h(\014le)g(cannot)g(b)s(e)f(executed.)52 b(If)33 -b(no)h Fr(command)630 1316 y Fu(is)27 b(sp)s(eci\014ed,)g(redirections) +b(no)h Fr(command)630 1439 y Fu(is)27 b(sp)s(eci\014ed,)g(redirections) h(ma)m(y)f(b)s(e)g(used)f(to)i(a\013ect)g(the)f(curren)m(t)g(shell)g -(en)m(vironmen)m(t.)40 b(If)630 1426 y(there)34 b(are)h(no)f +(en)m(vironmen)m(t.)40 b(If)630 1548 y(there)34 b(are)h(no)f (redirection)h(errors,)g(the)f(return)f(status)i(is)f(zero;)j -(otherwise)e(the)f(return)630 1536 y(status)d(is)f(non-zero.)150 -1708 y Ft(exit)870 1849 y(exit)47 b([)p Fj(n)p Ft(])630 -1990 y Fu(Exit)30 b(the)g(shell,)h(returning)d(a)j(status)f(of)g +(otherwise)e(the)f(return)630 1658 y(status)d(is)f(non-zero.)150 +1811 y Ft(exit)870 1943 y(exit)47 b([)p Fj(n)p Ft(])630 +2074 y Fu(Exit)30 b(the)g(shell,)h(returning)d(a)j(status)f(of)g Fr(n)f Fu(to)h(the)g(shell's)g(paren)m(t.)41 b(If)30 -b Fr(n)f Fu(is)h(omitted,)h(the)630 2099 y(exit)c(status)g(is)g(that)g +b Fr(n)f Fu(is)h(omitted,)h(the)630 2184 y(exit)c(status)g(is)g(that)g (of)g(the)g(last)g(command)f(executed.)41 b(An)m(y)26 -b(trap)h(on)f Ft(EXIT)f Fu(is)i(executed)630 2209 y(b)s(efore)j(the)h -(shell)f(terminates.)150 2381 y Ft(export)870 2522 y(export)46 +b(trap)h(on)f Ft(EXIT)f Fu(is)i(executed)630 2293 y(b)s(efore)j(the)h +(shell)f(terminates.)150 2447 y Ft(export)870 2578 y(export)46 b([-fn])g([-p])h([)p Fj(name)p Ft([=)p Fj(value)p Ft(]])630 -2663 y Fu(Mark)40 b(eac)m(h)h Fr(name)k Fu(to)40 b(b)s(e)f(passed)g(to) +2710 y Fu(Mark)40 b(eac)m(h)h Fr(name)k Fu(to)40 b(b)s(e)f(passed)g(to) i(c)m(hild)f(pro)s(cesses)f(in)g(the)h(en)m(vironmen)m(t.)70 -b(If)39 b(the)630 2772 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h +b(If)39 b(the)630 2819 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h Fr(name)5 b Fu(s)33 b(refer)g(to)i(shell)e(functions;)i(otherwise)f -(the)g(names)630 2882 y(refer)c(to)h(shell)g(v)-5 b(ariables.)41 +(the)g(names)630 2929 y(refer)c(to)h(shell)g(v)-5 b(ariables.)41 b(The)30 b Ft(-n)f Fu(option)i(means)f(to)h(no)f(longer)h(mark)f(eac)m -(h)i Fr(name)j Fu(for)630 2992 y(exp)s(ort.)52 b(If)33 +(h)i Fr(name)j Fu(for)630 3039 y(exp)s(ort.)52 b(If)33 b(no)h Fr(names)k Fu(are)c(supplied,)g(or)g(if)g(the)g Ft(-p)g Fu(option)g(is)g(giv)m(en,)j(a)d(list)h(of)f(names)630 -3101 y(of)d(all)h(exp)s(orted)e(v)-5 b(ariables)31 b(is)g(displa)m(y)m +3148 y(of)d(all)h(exp)s(orted)e(v)-5 b(ariables)31 b(is)g(displa)m(y)m (ed.)43 b(The)30 b Ft(-p)g Fu(option)i(displa)m(ys)e(output)h(in)f(a)h -(form)630 3211 y(that)25 b(ma)m(y)g(b)s(e)f(reused)g(as)h(input.)38 +(form)630 3258 y(that)25 b(ma)m(y)g(b)s(e)f(reused)g(as)h(input.)38 b(If)24 b(a)h(v)-5 b(ariable)25 b(name)g(is)g(follo)m(w)m(ed)h(b)m(y)e (=)p Fr(v)-5 b(alue)p Fu(,)27 b(the)d(v)-5 b(alue)630 -3320 y(of)31 b(the)f(v)-5 b(ariable)31 b(is)g(set)g(to)g -Fr(v)-5 b(alue)p Fu(.)630 3461 y(The)29 b(return)e(status)j(is)f(zero)h +3367 y(of)31 b(the)f(v)-5 b(ariable)31 b(is)g(set)g(to)g +Fr(v)-5 b(alue)p Fu(.)630 3499 y(The)29 b(return)e(status)j(is)f(zero)h (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 3571 y(is)k(not)g(a)h(v)-5 b(alid)33 +(of)f(the)g(names)630 3608 y(is)k(not)g(a)h(v)-5 b(alid)33 b(shell)h(v)-5 b(ariable)33 b(name,)i(or)e Ft(-f)f Fu(is)h(supplied)f -(with)h(a)g(name)g(that)h(is)f(not)h(a)630 3680 y(shell)d(function.)150 -3853 y Ft(getopts)870 3994 y(getopts)46 b Fj(optstring)f(name)i +(with)h(a)g(name)g(that)h(is)f(not)h(a)630 3718 y(shell)d(function.)150 +3871 y Ft(getopts)870 4003 y(getopts)46 b Fj(optstring)f(name)i Ft([)p Fj(args)p Ft(])630 4134 y(getopts)28 b Fu(is)i(used)g(b)m(y)g (shell)g(scripts)g(to)g(parse)g(p)s(ositional)h(parameters.)41 b Fr(optstring)d Fu(con-)630 4244 y(tains)k(the)g(option)f(c)m @@ -11170,9 +11338,9 @@ b(it)36 b(m)m(ust)f(b)s(e)g(man)m(ually)630 5230 y(reset)i(b)s(et)m(w)m (shell)f(in)m(v)m(o)s(cation)j(if)e(a)630 5340 y(new)30 b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)p eop end -%%Page: 44 50 -TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(44)630 299 y(When)41 +%%Page: 45 51 +TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(45)630 299 y(When)41 b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k Ft(getopts)39 b Fu(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 408 y(greater)32 b(than)e(zero.)41 b Ft(OPTIND)29 b Fu(is)h(set)h(to)g(the) @@ -11253,9 +11421,9 @@ b(alues)34 b(of)f(these)g(names)g(ma)m(y)h(not)f(b)s(e)f(c)m(hanged)630 5340 y(b)m(y)38 b(subsequen)m(t)g(assignmen)m(t.)65 b(If)38 b(the)h Ft(-f)f Fu(option)g(is)h(supplied,)g(eac)m(h)h Fr(name)j Fu(refers)38 b(to)p eop end -%%Page: 45 51 -TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(45)630 299 y(a)37 +%%Page: 46 52 +TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(46)630 299 y(a)37 b(shell)g(function.)59 b(The)36 b Ft(-a)g Fu(option)h(means)f(eac)m(h)i Fr(name)k Fu(refers)36 b(to)h(an)f(indexed)g(arra)m(y)630 408 y(v)-5 b(ariable;)28 b(the)f Ft(-A)e Fu(option)h(means)g(eac)m(h)h @@ -11278,1693 +11446,1763 @@ y(is)c(supplied,)f(one)h(of)g(the)g Fr(name)35 b Fu(argumen)m(ts)30 b(is)g(not)g(a)g(v)-5 b(alid)31 b(shell)f(v)-5 b(ariable)30 b(or)g(function)630 1285 y(name,)h(or)f(the)h Ft(-f)e Fu(option)i(is)g(supplied)e(with)h(a)h(name)f(that)h(is)f(not)h(a)g -(shell)f(function.)150 1450 y Ft(return)870 1587 y(return)46 -b([)p Fj(n)p Ft(])630 1724 y Fu(Cause)37 b(a)g(shell)h(function)f(to)g +(shell)f(function.)150 1462 y Ft(return)870 1606 y(return)46 +b([)p Fj(n)p Ft(])630 1749 y Fu(Cause)37 b(a)g(shell)h(function)f(to)g (stop)h(executing)g(and)e(return)h(the)g(v)-5 b(alue)37 -b Fr(n)g Fu(to)h(its)f(caller.)630 1833 y(If)h Fr(n)h +b Fr(n)g Fu(to)h(its)f(caller.)630 1858 y(If)h Fr(n)h Fu(is)g(not)g(supplied,)h(the)f(return)e(v)-5 b(alue)40 b(is)f(the)g(exit)g(status)g(of)g(the)g(last)h(command)630 -1943 y(executed)35 b(in)f(the)h(function.)53 b Ft(return)33 -b Fu(ma)m(y)i(also)g(b)s(e)f(used)f(to)j(terminate)f(execution)h(of)630 -2052 y(a)e(script)g(b)s(eing)g(executed)g(with)g(the)g +1968 y(executed)i(in)f(the)g(function.)72 b(If)41 b Ft(return)e +Fu(is)i(executed)h(b)m(y)f(a)h(trap)f(handler,)i(the)e(last)630 +2078 y(command)d(used)f(to)i(determine)f(the)g(status)g(is)h(the)f +(last)h(command)e(executed)i(b)s(efore)630 2187 y(the)28 +b(trap)f(handler.)39 b(if)28 b Ft(return)e Fu(is)h(executed)i(during)d +(a)i Ft(DEBUG)f Fu(trap,)h(the)g(last)g(command)630 2297 +y(used)f(to)h(determine)g(the)f(status)h(is)g(the)f(last)i(command)e +(executed)h(b)m(y)g(the)f(trap)h(handler)630 2406 y(b)s(efore)e +Ft(return)f Fu(w)m(as)i(in)m(v)m(ok)m(ed.)41 b Ft(return)25 +b Fu(ma)m(y)i(also)g(b)s(e)f(used)g(to)h(terminate)h(execution)g(of)630 +2516 y(a)34 b(script)g(b)s(eing)g(executed)g(with)g(the)g Ft(.)g Fu(\()p Ft(source)p Fu(\))f(builtin,)h(returning)f(either)i -Fr(n)e Fu(or)h(the)630 2162 y(exit)j(status)f(of)g(the)g(last)h +Fr(n)e Fu(or)h(the)630 2626 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 2271 y(of)i(the)g(script.)65 b(If)38 b Fr(n)g Fu(is)h(supplied,)h +630 2735 y(of)i(the)g(script.)65 b(If)38 b Fr(n)g Fu(is)h(supplied,)h (the)f(return)e(v)-5 b(alue)39 b(is)g(its)g(least)h(signi\014can)m(t)g -(8)f(bits.)630 2381 y(An)m(y)g(command)f(asso)s(ciated)j(with)d(the)h +(8)f(bits.)630 2845 y(An)m(y)g(command)f(asso)s(ciated)j(with)d(the)h Ft(RETURN)e Fu(trap)i(is)g(executed)g(b)s(efore)g(execution)630 -2491 y(resumes)29 b(after)h(the)g(function)g(or)g(script.)40 +2954 y(resumes)29 b(after)h(the)g(function)g(or)g(script.)40 b(The)29 b(return)g(status)h(is)g(non-zero)g(if)g Ft(return)e -Fu(is)630 2600 y(supplied)h(a)i(non-n)m(umeric)g(argumen)m(t)g(or)f(is) +Fu(is)630 3064 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 -2710 y(the)g(execution)g(of)g(a)f(script)h(b)m(y)f Ft(.)g -Fu(or)g Ft(source)p Fu(.)150 2874 y Ft(shift)870 3011 -y(shift)46 b([)p Fj(n)p Ft(])630 3148 y Fu(Shift)41 b(the)g(p)s +3173 y(the)g(execution)g(of)g(a)f(script)h(b)m(y)f Ft(.)g +Fu(or)g Ft(source)p Fu(.)150 3351 y Ft(shift)870 3494 +y(shift)46 b([)p Fj(n)p Ft(])630 3637 y Fu(Shift)41 b(the)g(p)s (ositional)h(parameters)g(to)g(the)f(left)h(b)m(y)g Fr(n)p -Fu(.)73 b(The)40 b(p)s(ositional)j(parameters)630 3258 +Fu(.)73 b(The)40 b(p)s(ositional)j(parameters)630 3747 y(from)34 b Fr(n)p Ft(+)p Fu(1)39 b(.)22 b(.)h(.)45 b Ft($#)34 b Fu(are)g(renamed)g(to)h Ft($1)k Fu(.)22 b(.)g(.)46 b Ft($#)p Fu(-)p Fr(n)p Fu(.)51 b(P)m(arameters)36 b(represen)m(ted)e -(b)m(y)g(the)630 3367 y(n)m(um)m(b)s(ers)25 b Ft($#)i +(b)m(y)g(the)630 3856 y(n)m(um)m(b)s(ers)25 b Ft($#)i Fu(to)g Ft($#)p Fu(-)p Fr(n)p Ft(+)p Fu(1)g(are)g(unset.)39 b Fr(n)26 b Fu(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 3477 y(equal)33 b(to)h Ft($#)p +c(less)i(than)g(or)630 3966 y(equal)33 b(to)h Ft($#)p Fu(.)47 b(If)33 b Fr(n)f Fu(is)h(zero)g(or)g(greater)h(than)f Ft($#)p Fu(,)g(the)g(p)s(ositional)g(parameters)g(are)h(not)630 -3587 y(c)m(hanged.)48 b(If)32 b Fr(n)g Fu(is)h(not)f(supplied,)h(it)g +4075 y(c)m(hanged.)48 b(If)32 b Fr(n)g Fu(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 3696 y(unless)e Fr(n)f Fu(is)i(greater)g(than)g +(zero)630 4185 y(unless)e Fr(n)f Fu(is)i(greater)g(than)g Ft($#)e Fu(or)i(less)f(than)h(zero,)g(non-zero)g(otherwise.)150 -3861 y Ft(test)150 3970 y([)870 4107 y(test)47 b Fj(expr)630 -4244 y Fu(Ev)-5 b(aluate)40 b(a)f(conditional)h(express)f(ion)g -Fr(expr)45 b Fu(and)38 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f -(1)630 4354 y(\(false\).)j(Eac)m(h)31 b(op)s(erator)f(and)f(op)s(erand) +4362 y Ft(test)150 4472 y([)870 4615 y(test)47 b Fj(expr)630 +4758 y Fu(Ev)-5 b(aluate)43 b(a)f(conditional)h(expression)f +Fr(expr)48 b Fu(and)41 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f +(1)630 4868 y(\(false\).)g(Eac)m(h)31 b(op)s(erator)f(and)f(op)s(erand) g(m)m(ust)h(b)s(e)f(a)i(separate)g(argumen)m(t.)41 b(Expressions)630 -4463 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s +4977 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s (elo)m(w)h(in)g(Section)h(6.4)h([Bash)e(Conditional)630 -4573 y(Expressions],)39 b(page)g(85.)64 b Ft(test)37 +5087 y(Expressions],)39 b(page)g(87.)64 b Ft(test)37 b Fu(do)s(es)g(not)h(accept)i(an)m(y)e(options,)i(nor)e(do)s(es)f(it)h -(accept)630 4682 y(and)30 b(ignore)h(an)f(argumen)m(t)h(of)f +(accept)630 5197 y(and)30 b(ignore)h(an)f(argumen)m(t)h(of)f Ft(--)g Fu(as)h(signifying)f(the)h(end)f(of)g(options.)630 -4819 y(When)g(the)h Ft([)f Fu(form)g(is)g(used,)g(the)g(last)i(argumen) +5340 y(When)g(the)h Ft([)f Fu(form)g(is)g(used,)g(the)g(last)i(argumen) m(t)e(to)i(the)e(command)g(m)m(ust)h(b)s(e)e(a)i Ft(])p -Fu(.)630 4956 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 -5066 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 5176 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 5340 y Ft(!)f Fj(expr)210 b Fu(T)-8 -b(rue)30 b(if)g Fr(expr)37 b Fu(is)30 b(false.)p eop -end -%%Page: 46 52 -TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(46)630 299 y Ft(\()30 -b Fj(expr)f Ft(\))133 b Fu(Returns)23 b(the)i(v)-5 b(alue)25 -b(of)f Fr(expr)p Fu(.)38 b(This)24 b(ma)m(y)h(b)s(e)e(used)h(to)h(o)m -(v)m(erride)g(the)g(normal)1110 408 y(precedence)31 b(of)f(op)s -(erators.)630 568 y Fj(expr1)f Ft(-a)h Fj(expr2)1110 -677 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g Fr(expr1)37 b -Fu(and)30 b Fr(expr2)38 b Fu(are)30 b(true.)630 837 y -Fj(expr1)f Ft(-o)h Fj(expr2)1110 946 y Fu(T)-8 b(rue)30 -b(if)g(either)h Fr(expr1)38 b Fu(or)30 b Fr(expr2)37 -b Fu(is)31 b(true.)630 1106 y(The)37 b Ft(test)f Fu(and)g -Ft([)h Fu(builtins)g(ev)-5 b(aluate)39 b(conditional)f(expressions)f -(using)g(a)g(set)h(of)f(rules)630 1215 y(based)30 b(on)g(the)h(n)m(um)m -(b)s(er)e(of)h(argumen)m(ts.)630 1375 y(0)h(argumen)m(ts)1110 -1484 y(The)f(expression)g(is)g(false.)630 1644 y(1)h(argumen)m(t)1110 -1753 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 1913 y(2)g(argumen)m(ts)1110 -2022 y(If)f(the)h(\014rst)f(argumen)m(t)h(is)g(`)p Ft(!)p -Fu(',)g(the)g(expression)g(is)g(true)f(if)h(and)f(only)h(if)g(the)1110 -2132 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 -2242 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f([Bash)g -(Conditional)g(Expres-)1110 2351 y(sions],)34 b(page)f(85\),)i(the)e -(expression)f(is)h(true)g(if)g(the)g(unary)e(test)j(is)f(true.)47 -b(If)1110 2461 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 -2570 y(false.)630 2730 y(3)e(argumen)m(ts)1110 2839 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 2949 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 -3059 y(Section)h(6.4)g([Bash)g(Conditional)g(Expressions],)i(page)e -(85\),)k(the)43 b(result)1110 3168 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 -3278 y(and)31 b(third)g(argumen)m(ts)i(as)f(op)s(erands.)44 -b(The)31 b(`)p Ft(-a)p Fu(')h(and)g(`)p Ft(-o)p Fu(')f(op)s(erators)i -(are)1110 3387 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 3497 -y(\014rst)j(argumen)m(t)h(is)g(`)p Ft(!)p Fu(',)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 -3606 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 3716 y(is)j(exactly)i(`)p -Ft(\()p Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)f(exactly)i(`)p -Ft(\))p Fu(',)h(the)e(result)f(is)1110 3826 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 3935 y(expression)30 b(is)h(false.)630 -4095 y(4)g(argumen)m(ts)1110 4204 y(If)h(the)i(\014rst)e(argumen)m(t)h -(is)g(`)p Ft(!)p Fu(',)h(the)f(result)g(is)g(the)g(negation)h(of)f(the) -g(three-)1110 4314 y(argumen)m(t)h(expression)f(comp)s(osed)h(of)f(the) -h(remaining)g(argumen)m(ts.)50 b(Oth-)1110 4423 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 4533 y(dence)e(using)e(the)i(rules)f -(listed)h(ab)s(o)m(v)m(e.)630 4692 y(5)g(or)f(more)h(argumen)m(ts)1110 -4802 y(The)43 b(expression)f(is)i(parsed)e(and)g(ev)-5 -b(aluated)45 b(according)f(to)f(precedence)1110 4912 -y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)630 -5071 y(When)40 b(used)f(with)g Ft(test)g Fu(or)h(`)p -Ft([)p Fu(',)j(the)d(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p -Fu(')h(op)s(erators)g(sort)g(lexicographically)630 5181 -y(using)30 b(ASCI)s(I)f(ordering.)150 5340 y Ft(times)p -eop end +Fu(.)p eop end %%Page: 47 53 TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(47)870 299 y Ft(times)630 -434 y Fu(Prin)m(t)37 b(out)h(the)g(user)e(and)h(system)g(times)h(used)f -(b)m(y)g(the)h(shell)f(and)g(its)h(c)m(hildren.)61 b(The)630 -543 y(return)29 b(status)i(is)f(zero.)150 704 y Ft(trap)870 -838 y(trap)47 b([-lp])f([)p Fj(arg)p Ft(])g([)p Fj(sigspec)g -Ft(...)o(])630 973 y Fu(The)d(commands)f(in)h Fr(arg)51 -b Fu(are)44 b(to)g(b)s(e)e(read)h(and)g(executed)h(when)e(the)h(shell)g -(receiv)m(es)630 1083 y(signal)36 b Fr(sigsp)s(ec)p Fu(.)57 -b(If)35 b Fr(arg)44 b Fu(is)36 b(absen)m(t)g(\(and)f(there)h(is)g(a)f -(single)i Fr(sigsp)s(ec)6 b Fu(\))35 b(or)h(equal)g(to)h(`)p -Ft(-)p Fu(',)630 1192 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s -(osition)g(is)f(reset)i(to)f(the)g(v)-5 b(alue)40 b(it)g(had)f(when)g -(the)h(shell)630 1302 y(w)m(as)33 b(started.)47 b(If)32 -b Fr(arg)41 b Fu(is)32 b(the)h(n)m(ull)f(string,)i(then)e(the)g(signal) -i(sp)s(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630 -1412 y Fu(is)g(ignored)h(b)m(y)f(the)g(shell)h(and)e(commands)h(it)h -(in)m(v)m(ok)m(es.)51 b(If)33 b Fr(arg)41 b Fu(is)33 -b(not)h(presen)m(t)f(and)g Ft(-p)630 1521 y Fu(has)g(b)s(een)g -(supplied,)f(the)i(shell)f(displa)m(ys)h(the)f(trap)g(commands)g(asso)s -(ciated)i(with)e(eac)m(h)630 1631 y Fr(sigsp)s(ec)p Fu(.)47 -b(If)31 b(no)i(argumen)m(ts)f(are)h(supplied,)e(or)i(only)f -Ft(-p)g Fu(is)g(giv)m(en,)i Ft(trap)d Fu(prin)m(ts)h(the)g(list)630 -1740 y(of)c(commands)f(asso)s(ciated)i(with)f(eac)m(h)h(signal)f(n)m -(um)m(b)s(er)e(in)i(a)g(form)f(that)h(ma)m(y)h(b)s(e)e(reused)630 -1850 y(as)f(shell)h(input.)38 b(The)26 b Ft(-l)f Fu(option)i(causes)f -(the)g(shell)h(to)g(prin)m(t)e(a)i(list)f(of)h(signal)g(names)f(and)630 -1960 y(their)33 b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47 -b(Eac)m(h)34 b Fr(sigsp)s(ec)39 b Fu(is)33 b(either)g(a)h(signal)g -(name)f(or)g(a)g(signal)630 2069 y(n)m(um)m(b)s(er.)39 -b(Signal)31 b(names)f(are)h(case)h(insensitiv)m(e)f(and)f(the)g -Ft(SIG)g Fu(pre\014x)f(is)i(optional.)630 2204 y(If)k(a)g -Fr(sigsp)s(ec)41 b Fu(is)35 b Ft(0)g Fu(or)g Ft(EXIT)p -Fu(,)g Fr(arg)43 b Fu(is)35 b(executed)h(when)e(the)h(shell)h(exits.)55 -b(If)35 b(a)g Fr(sigsp)s(ec)41 b Fu(is)630 2314 y Ft(DEBUG)p -Fu(,)32 b(the)g(command)g Fr(arg)40 b Fu(is)33 b(executed)g(b)s(efore)f -(ev)m(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630 -2423 y(mand,)d Ft(case)g Fu(command,)h Ft(select)e Fu(command,)i(ev)m -(ery)h(arithmetic)g Ft(for)d Fu(command,)j(and)630 2533 -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 -2642 y(the)i Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e -Fu(builtin)h(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 -2752 y(page)33 b(62\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the) -g Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38 -b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 2862 y(command)h -Fr(arg)41 b Fu(is)33 b(executed)g(eac)m(h)h(time)f(a)g(shell)g -(function)g(or)f(a)h(script)g(executed)g(with)630 2971 -y(the)e Ft(.)f Fu(or)g Ft(source)f Fu(builtins)g(\014nishes)h -(executing.)630 3106 y(If)20 b(a)i Fr(sigsp)s(ec)27 b -Fu(is)21 b Ft(ERR)p Fu(,)h(the)f(command)g Fr(arg)29 -b Fu(is)21 b(executed)h(whenev)m(er)e(a)i(pip)s(eline)e(\(whic)m(h)h -(ma)m(y)630 3216 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 -3325 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41 -b(to)g(the)g(follo)m(wing)h(conditions.)72 b(The)40 b -Ft(ERR)f Fu(trap)i(is)630 3435 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 -3544 y(follo)m(wing)30 b(an)e Ft(until)f Fu(or)i Ft(while)e -Fu(k)m(eyw)m(ord,)i(part)g(of)f(the)h(test)g(follo)m(wing)h(the)f -Ft(if)f Fu(or)g Ft(elif)630 3654 y Fu(reserv)m(ed)45 -b(w)m(ords,)j(part)c(of)h(a)g(command)g(executed)g(in)g(a)g -Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630 3764 -y(command)28 b(follo)m(wing)j(the)d(\014nal)h Ft(&&)f -Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f(in)h(a)g(pip)s(eline)f(but)g -(the)h(last,)630 3873 y(or)d(if)g(the)f(command's)h(return)f(status)h -(is)g(b)s(eing)f(in)m(v)m(erted)i(using)e Ft(!)p Fu(.)39 -b(These)25 b(are)i(the)f(same)630 3983 y(conditions)31 -b(ob)s(ey)m(ed)f(b)m(y)h(the)f Ft(errexit)f Fu(\()p Ft(-e)p -Fu(\))h(option.)630 4118 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 4227 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 4337 y(or)i(subshell)g(en)m -(vironmen)m(t)h(when)e(one)i(is)f(created.)630 4472 y(The)g(return)f -(status)i(is)f(zero)h(unless)f(a)h Fr(sigsp)s(ec)36 b -Fu(do)s(es)30 b(not)h(sp)s(ecify)f(a)g(v)-5 b(alid)31 -b(signal.)150 4632 y Ft(umask)870 4767 y(umask)46 b([-p])h([-S])g([)p -Fj(mode)p Ft(])630 4902 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f -(\014le)h(creation)g(mask)g(to)g Fr(mo)s(de)p Fu(.)40 -b(If)29 b Fr(mo)s(de)34 b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 -5011 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 5121 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f -(the)g Ft(chmod)e Fu(command.)40 b(If)28 b Fr(mo)s(de)34 -b Fu(is)28 b(omitted,)j(the)630 5230 y(curren)m(t)39 -b(v)-5 b(alue)40 b(of)f(the)g(mask)g(is)h(prin)m(ted.)66 -b(If)39 b(the)g Ft(-S)g Fu(option)g(is)h(supplied)d(without)j(a)630 -5340 y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m(ted)f -(in)g(a)g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g -Ft(-p)g Fu(option)h(is)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(Expressions)23 +b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h(follo)m(wing)h(op)s +(erators,)g(listed)f(in)f(decreasing)630 408 y(order)30 +b(of)h(precedence.)43 b(The)30 b(ev)-5 b(aluation)33 +b(dep)s(ends)28 b(on)j(the)g(n)m(um)m(b)s(er)f(of)h(argumen)m(ts;)g +(see)630 518 y(b)s(elo)m(w.)41 b(Op)s(erator)30 b(precedence)h(is)f +(used)g(when)f(there)i(are)f(\014v)m(e)h(or)f(more)h(argumen)m(ts.)630 +667 y Ft(!)f Fj(expr)210 b Fu(T)-8 b(rue)30 b(if)g Fr(expr)37 +b Fu(is)30 b(false.)630 817 y Ft(\()g Fj(expr)f Ft(\))133 +b Fu(Returns)23 b(the)i(v)-5 b(alue)25 b(of)f Fr(expr)p +Fu(.)38 b(This)24 b(ma)m(y)h(b)s(e)e(used)h(to)h(o)m(v)m(erride)g(the)g +(normal)1110 927 y(precedence)31 b(of)f(op)s(erators.)630 +1076 y Fj(expr1)f Ft(-a)h Fj(expr2)1110 1186 y Fu(T)-8 +b(rue)30 b(if)g(b)s(oth)g Fr(expr1)37 b Fu(and)30 b Fr(expr2)38 +b Fu(are)30 b(true.)630 1335 y Fj(expr1)f Ft(-o)h Fj(expr2)1110 +1445 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expr1)38 b +Fu(or)30 b Fr(expr2)37 b Fu(is)31 b(true.)630 1594 y(The)37 +b Ft(test)f Fu(and)g Ft([)h Fu(builtins)g(ev)-5 b(aluate)39 +b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules)630 +1704 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.)630 +1853 y(0)h(argumen)m(ts)1110 1963 y(The)f(expression)g(is)g(false.)630 +2112 y(1)h(argumen)m(t)1110 2222 y(The)f(expression)g(is)g(true)h(if)f +(and)g(only)g(if)h(the)f(argumen)m(t)h(is)f(not)h(n)m(ull.)630 +2371 y(2)g(argumen)m(ts)1110 2481 y(If)f(the)h(\014rst)f(argumen)m(t)h +(is)g(`)p Ft(!)p Fu(',)g(the)g(expression)g(is)g(true)f(if)h(and)f +(only)h(if)g(the)1110 2590 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50 +b(If)33 b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary) +1110 2700 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f +([Bash)g(Conditional)g(Expres-)1110 2809 y(sions],)34 +b(page)f(87\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e +(test)j(is)f(true.)47 b(If)1110 2919 y(the)33 b(\014rst)g(argumen)m(t)h +(is)f(not)g(a)h(v)-5 b(alid)34 b(unary)e(op)s(erator,)i(the)g +(expression)f(is)1110 3029 y(false.)630 3178 y(3)e(argumen)m(ts)1110 +3288 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 3397 y(second)f(argumen)m(t)g +(is)g(one)g(of)g(the)g(binary)f(conditional)i(op)s(erators)f(\(see)1110 +3507 y(Section)h(6.4)g([Bash)g(Conditional)g(Expressions],)i(page)e +(87\),)k(the)43 b(result)1110 3616 y(of)h(the)h(expression)f(is)g(the)g +(result)g(of)h(the)f(binary)g(test)h(using)e(the)i(\014rst)1110 +3726 y(and)31 b(third)g(argumen)m(ts)i(as)f(op)s(erands.)44 +b(The)31 b(`)p Ft(-a)p Fu(')h(and)g(`)p Ft(-o)p Fu(')f(op)s(erators)i +(are)1110 3836 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 3945 +y(\014rst)j(argumen)m(t)h(is)g(`)p Ft(!)p Fu(',)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 +4055 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 4164 y(is)j(exactly)i(`)p +Ft(\()p Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)f(exactly)i(`)p +Ft(\))p Fu(',)h(the)e(result)f(is)1110 4274 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 4384 y(expression)30 b(is)h(false.)630 +4533 y(4)g(argumen)m(ts)1110 4643 y(If)h(the)i(\014rst)e(argumen)m(t)h +(is)g(`)p Ft(!)p Fu(',)h(the)f(result)g(is)g(the)g(negation)h(of)f(the) +g(three-)1110 4752 y(argumen)m(t)h(expression)f(comp)s(osed)h(of)f(the) +h(remaining)g(argumen)m(ts.)50 b(Oth-)1110 4862 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 4971 y(dence)e(using)e(the)i(rules)f +(listed)h(ab)s(o)m(v)m(e.)630 5121 y(5)g(or)f(more)h(argumen)m(ts)1110 +5230 y(The)43 b(expression)f(is)i(parsed)e(and)g(ev)-5 +b(aluated)45 b(according)f(to)f(precedence)1110 5340 +y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)p +eop end %%Page: 48 54 TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(supplied,)32 -b(and)f Fr(mo)s(de)37 b Fu(is)32 b(omitted,)i(the)f(output)f(is)g(in)g -(a)g(form)g(that)h(ma)m(y)g(b)s(e)e(reused)h(as)630 408 -y(input.)62 b(The)38 b(return)f(status)h(is)g(zero)g(if)g(the)g(mo)s -(de)g(is)g(successfully)g(c)m(hanged)g(or)g(if)g(no)630 -518 y Fr(mo)s(de)d Fu(argumen)m(t)c(is)f(supplied,)g(and)f(non-zero)i -(otherwise.)630 660 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 770 y(the)f(umask)g(is)h(subtracted)f(from)f -Ft(7)p Fu(.)53 b(Th)m(us,)34 b(a)h(umask)e(of)i Ft(022)e -Fu(results)h(in)g(p)s(ermissions)630 879 y(of)d Ft(755)p -Fu(.)150 1054 y Ft(unset)870 1196 y(unset)46 b([-fnv])g([)p -Fj(name)p Ft(])630 1338 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 -b(ariable)35 b(or)f(function)f Fr(name)p Fu(.)52 b(If)33 -b(the)i Ft(-v)e Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e -Fr(name)630 1448 y Fu(refers)24 b(to)h(a)g(shell)f(v)-5 -b(ariable)25 b(and)f(that)h(v)-5 b(ariable)25 b(is)f(rem)m(v)m(o)m(v)m -(ed.)41 b(If)23 b(the)i Ft(-f)f Fu(option)g(is)h(giv)m(en,)630 -1557 y(the)37 b Fr(name)5 b Fu(s)37 b(refer)f(to)i(shell)f(functions,)h -(and)e(the)h(function)g(de\014nition)f(is)h(remo)m(v)m(ed.)61 -b(If)630 1667 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g -Fr(name)38 b Fu(is)c(a)f(v)-5 b(ariable)34 b(with)g(the)f -Fr(nameref)51 b Fu(attribute,)630 1776 y Fr(name)42 b -Fu(will)37 b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5 -b(ariable)37 b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect) -h(if)630 1886 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65 -b(If)39 b(no)g(options)h(are)f(supplied,)h(eac)m(h)h -Fr(name)j Fu(refers)39 b(to)h(a)630 1995 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 2105 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 2215 -y(is)e(zero)i(unless)d(a)i Fr(name)36 b Fu(is)30 b(readonly)-8 -b(.)150 2470 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150 -2629 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m -(h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h(b)s(een)f(extended)g(in)150 -2739 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g -(in)g(the)h Fm(posix)e Fu(standard.)150 2921 y Ft(alias)870 -3063 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p -Ft(])d(...)o(])630 3205 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f -(the)h Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f -(aliases)h(on)f(the)630 3315 y(standard)g(output)g(in)g(a)h(form)f -(that)h(allo)m(ws)h(them)e(to)h(b)s(e)f(reused)g(as)g(input.)39 -b(If)25 b(argumen)m(ts)630 3424 y(are)j(supplied,)e(an)i(alias)g(is)f -(de\014ned)f(for)h(eac)m(h)h Fr(name)33 b Fu(whose)27 -b Fr(v)-5 b(alue)33 b Fu(is)27 b(giv)m(en.)41 b(If)26 -b(no)h Fr(v)-5 b(alue)630 3534 y Fu(is)37 b(giv)m(en,)j(the)d(name)g -(and)g(v)-5 b(alue)37 b(of)h(the)f(alias)h(is)f(prin)m(ted.)61 -b(Aliases)38 b(are)f(describ)s(ed)f(in)630 3643 y(Section)31 -b(6.6)h([Aliases],)g(page)f(88.)150 3818 y Ft(bind)870 -3960 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870 -4070 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p -Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870 -4179 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870 -4289 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command) -870 4398 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name) -870 4508 y Ft(bind)i Fj(readline-command)630 4650 y Fu(Displa)m(y)22 -b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g([Command)f(Line)h -(Editing],)j(page)e(101\))g(k)m(ey)630 4760 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 4869 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 4979 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 5088 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 5198 y(argumen)m(t;)31 b(e.g.,)h(`)p Ft -("\\C-x\\C-r":re-read-init-f)o(ile)p Fu('.)630 5340 y(Options,)e(if)h -(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)p -eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(When)40 +b(used)f(with)g Ft(test)g Fu(or)h(`)p Ft([)p Fu(',)j(the)d(`)p +Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g(sort)g +(lexicographically)630 408 y(using)30 b(ASCI)s(I)f(ordering.)150 +559 y Ft(times)870 689 y(times)630 819 y Fu(Prin)m(t)37 +b(out)h(the)g(user)e(and)h(system)g(times)h(used)f(b)m(y)g(the)h(shell) +f(and)g(its)h(c)m(hildren.)61 b(The)630 929 y(return)29 +b(status)i(is)f(zero.)150 1080 y Ft(trap)870 1210 y(trap)47 +b([-lp])f([)p Fj(arg)p Ft(])g([)p Fj(sigspec)g Ft(...)o(])630 +1340 y Fu(The)d(commands)f(in)h Fr(arg)51 b Fu(are)44 +b(to)g(b)s(e)e(read)h(and)g(executed)h(when)e(the)h(shell)g(receiv)m +(es)630 1450 y(signal)36 b Fr(sigsp)s(ec)p Fu(.)57 b(If)35 +b Fr(arg)44 b Fu(is)36 b(absen)m(t)g(\(and)f(there)h(is)g(a)f(single)i +Fr(sigsp)s(ec)6 b Fu(\))35 b(or)h(equal)g(to)h(`)p Ft(-)p +Fu(',)630 1559 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s(osition)g +(is)f(reset)i(to)f(the)g(v)-5 b(alue)40 b(it)g(had)f(when)g(the)h +(shell)630 1669 y(w)m(as)33 b(started.)47 b(If)32 b Fr(arg)41 +b Fu(is)32 b(the)h(n)m(ull)f(string,)i(then)e(the)g(signal)i(sp)s +(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630 1778 +y Fu(is)g(ignored)h(b)m(y)f(the)g(shell)h(and)e(commands)h(it)h(in)m(v) +m(ok)m(es.)51 b(If)33 b Fr(arg)41 b Fu(is)33 b(not)h(presen)m(t)f(and)g +Ft(-p)630 1888 y Fu(has)g(b)s(een)g(supplied,)f(the)i(shell)f(displa)m +(ys)h(the)f(trap)g(commands)g(asso)s(ciated)i(with)e(eac)m(h)630 +1998 y Fr(sigsp)s(ec)p Fu(.)47 b(If)31 b(no)i(argumen)m(ts)f(are)h +(supplied,)e(or)i(only)f Ft(-p)g Fu(is)g(giv)m(en,)i +Ft(trap)d Fu(prin)m(ts)h(the)g(list)630 2107 y(of)c(commands)f(asso)s +(ciated)i(with)f(eac)m(h)h(signal)f(n)m(um)m(b)s(er)e(in)i(a)g(form)f +(that)h(ma)m(y)h(b)s(e)e(reused)630 2217 y(as)f(shell)h(input.)38 +b(The)26 b Ft(-l)f Fu(option)i(causes)f(the)g(shell)h(to)g(prin)m(t)e +(a)i(list)f(of)h(signal)g(names)f(and)630 2326 y(their)33 +b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47 b(Eac)m(h)34 +b Fr(sigsp)s(ec)39 b Fu(is)33 b(either)g(a)h(signal)g(name)f(or)g(a)g +(signal)630 2436 y(n)m(um)m(b)s(er.)39 b(Signal)31 b(names)f(are)h +(case)h(insensitiv)m(e)f(and)f(the)g Ft(SIG)g Fu(pre\014x)f(is)i +(optional.)630 2566 y(If)k(a)g Fr(sigsp)s(ec)41 b Fu(is)35 +b Ft(0)g Fu(or)g Ft(EXIT)p Fu(,)g Fr(arg)43 b Fu(is)35 +b(executed)h(when)e(the)h(shell)h(exits.)55 b(If)35 b(a)g +Fr(sigsp)s(ec)41 b Fu(is)630 2676 y Ft(DEBUG)p Fu(,)32 +b(the)g(command)g Fr(arg)40 b Fu(is)33 b(executed)g(b)s(efore)f(ev)m +(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630 2785 +y(mand,)d Ft(case)g Fu(command,)h Ft(select)e Fu(command,)i(ev)m(ery)h +(arithmetic)g Ft(for)d Fu(command,)j(and)630 2895 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 3004 y(the)i +Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e Fu(builtin)h(\(see)i +(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 3114 +y(page)33 b(64\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g +Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38 +b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 3224 y(command)h +Fr(arg)41 b Fu(is)33 b(executed)g(eac)m(h)h(time)f(a)g(shell)g +(function)g(or)f(a)h(script)g(executed)g(with)630 3333 +y(the)e Ft(.)f Fu(or)g Ft(source)f Fu(builtins)g(\014nishes)h +(executing.)630 3463 y(If)20 b(a)i Fr(sigsp)s(ec)27 b +Fu(is)21 b Ft(ERR)p Fu(,)h(the)f(command)g Fr(arg)29 +b Fu(is)21 b(executed)h(whenev)m(er)e(a)i(pip)s(eline)e(\(whic)m(h)h +(ma)m(y)630 3573 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 +3682 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41 +b(to)g(the)g(follo)m(wing)h(conditions.)72 b(The)40 b +Ft(ERR)f Fu(trap)i(is)630 3792 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 +3902 y(follo)m(wing)30 b(an)e Ft(until)f Fu(or)i Ft(while)e +Fu(k)m(eyw)m(ord,)i(part)g(of)f(the)h(test)g(follo)m(wing)h(the)f +Ft(if)f Fu(or)g Ft(elif)630 4011 y Fu(reserv)m(ed)45 +b(w)m(ords,)j(part)c(of)h(a)g(command)g(executed)g(in)g(a)g +Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630 4121 +y(command)28 b(follo)m(wing)j(the)d(\014nal)h Ft(&&)f +Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f(in)h(a)g(pip)s(eline)f(but)g +(the)h(last,)630 4230 y(or)d(if)g(the)f(command's)h(return)f(status)h +(is)g(b)s(eing)f(in)m(v)m(erted)i(using)e Ft(!)p Fu(.)39 +b(These)25 b(are)i(the)f(same)630 4340 y(conditions)31 +b(ob)s(ey)m(ed)f(b)m(y)h(the)f Ft(errexit)f Fu(\()p Ft(-e)p +Fu(\))h(option.)630 4470 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 4580 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 4689 y(or)i(subshell)g(en)m +(vironmen)m(t)h(when)e(one)i(is)f(created.)630 4819 y(The)g(return)f +(status)i(is)f(zero)h(unless)f(a)h Fr(sigsp)s(ec)36 b +Fu(do)s(es)30 b(not)h(sp)s(ecify)f(a)g(v)-5 b(alid)31 +b(signal.)150 4970 y Ft(umask)870 5100 y(umask)46 b([-p])h([-S])g([)p +Fj(mode)p Ft(])630 5230 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f +(\014le)h(creation)g(mask)g(to)g Fr(mo)s(de)p Fu(.)40 +b(If)29 b Fr(mo)s(de)34 b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 +5340 y(it)e(is)f(in)m(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s +(er;)e(if)g(not,)h(it)g(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f +(mo)s(de)p eop end %%Page: 49 55 TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y Ft(-m)30 -b Fj(keymap)66 b Fu(Use)54 b Fr(k)m(eymap)j Fu(as)d(the)g(k)m(eymap)g -(to)h(b)s(e)e(a\013ected)i(b)m(y)f(the)g(subsequen)m(t)1110 -408 y(bindings.)46 b(Acceptable)34 b Fr(k)m(eymap)i Fu(names)c(are)h -Ft(emacs)p Fu(,)f Ft(emacs-standard)p Fu(,)1110 518 y -Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p Fu(,)f Ft(vi)p -Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p Fu(,)f(and)1110 -628 y Ft(vi-insert)p Fu(.)64 b Ft(vi)38 b Fu(is)h(equiv)-5 -b(alen)m(t)41 b(to)e Ft(vi-command)p Fu(;)i Ft(emacs)c -Fu(is)i(equiv)-5 b(alen)m(t)1110 737 y(to)31 b Ft(emacs-standard)p -Fu(.)630 888 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g -(Readline)g(functions.)630 1039 y Ft(-p)384 b Fu(Displa)m(y)34 -b(Readline)f(function)g(names)g(and)f(bindings)f(in)i(suc)m(h)f(a)i(w)m -(a)m(y)f(that)1110 1148 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 1299 -y Ft(-P)384 b Fu(List)31 b(curren)m(t)f(Readline)h(function)f(names)g -(and)g(bindings.)630 1450 y Ft(-v)384 b Fu(Displa)m(y)25 -b(Readline)f(v)-5 b(ariable)25 b(names)f(and)f(v)-5 b(alues)24 -b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 1559 -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 1710 y Ft(-V)384 b Fu(List)31 -b(curren)m(t)f(Readline)h(v)-5 b(ariable)31 b(names)f(and)g(v)-5 -b(alues.)630 1861 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g -(sequences)f(b)s(ound)f(to)i(macros)g(and)f(the)g(strings)1110 -1970 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 2080 -y(Readline)d(initialization)i(\014le.)630 2230 y Ft(-S)384 -b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g(sequences)f(b)s(ound)f(to)i -(macros)g(and)f(the)g(strings)1110 2340 y(they)31 b(output.)630 -2491 y Ft(-f)f Fj(filename)1110 2600 y Fu(Read)h(k)m(ey)g(bindings)e -(from)h Fr(\014lename)p Fu(.)630 2751 y Ft(-q)g Fj(function)1110 -2861 y Fu(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h -(the)f(named)f Fr(function)p Fu(.)630 3011 y Ft(-u)g -Fj(function)1110 3121 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i -(the)f(named)g Fr(function)p Fu(.)630 3271 y Ft(-r)g -Fj(keyseq)66 b Fu(Remo)m(v)m(e)32 b(an)m(y)f(curren)m(t)f(binding)f -(for)h Fr(k)m(eyseq)p Fu(.)630 3422 y Ft(-x)g Fj(keyseq:shell-command) -1110 3532 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h -(whenev)m(er)f Fr(k)m(eyseq)j Fu(is)d(en)m(tered.)1110 -3641 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51 -b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 3751 -y(LINE)37 b Fu(v)-5 b(ariable)38 b(to)g(the)g(con)m(ten)m(ts)i(of)e -(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 3861 -y Ft(READLINE_POINT)e Fu(v)-5 b(ariable)39 b(to)h(the)e(curren)m(t)h -(lo)s(cation)h(of)f(the)g(insertion)1110 3970 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 Ft(READLINE_)1110 4080 y(LINE)29 b Fu(or)h -Ft(READLINE_POINT)p Fu(,)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 4189 y(editing)h(state.) -630 4340 y Ft(-X)384 b Fu(List)27 b(all)i(k)m(ey)f(sequences)f(b)s -(ound)e(to)j(shell)g(commands)e(and)h(the)g(asso)s(ciated)1110 -4450 y(commands)j(in)g(a)h(format)g(that)f(can)h(b)s(e)f(reused)f(as)i -(input.)630 4600 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 4751 y Ft(builtin)870 4881 y(builtin)46 b([)p -Fj(shell-builtin)e Ft([)p Fj(args)p Ft(]])630 5011 y -Fu(Run)35 b(a)i(shell)f(builtin,)i(passing)e(it)h Fr(args)p -Fu(,)h(and)e(return)f(its)i(exit)g(status.)59 b(This)35 -b(is)i(useful)630 5121 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 -5230 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 -5340 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f -(builtin)g(command.)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(mask)29 +b(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g Ft(chmod)e +Fu(command.)40 b(If)28 b Fr(mo)s(de)34 b Fu(is)28 b(omitted,)j(the)630 +408 y(curren)m(t)39 b(v)-5 b(alue)40 b(of)f(the)g(mask)g(is)h(prin)m +(ted.)66 b(If)39 b(the)g Ft(-S)g Fu(option)g(is)h(supplied)d(without)j +(a)630 518 y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m +(ted)f(in)g(a)g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g +Ft(-p)g Fu(option)h(is)630 628 y(supplied,)f(and)f Fr(mo)s(de)37 +b Fu(is)32 b(omitted,)i(the)f(output)f(is)g(in)g(a)g(form)g(that)h(ma)m +(y)g(b)s(e)e(reused)h(as)630 737 y(input.)62 b(The)38 +b(return)f(status)h(is)g(zero)g(if)g(the)g(mo)s(de)g(is)g(successfully) +g(c)m(hanged)g(or)g(if)g(no)630 847 y Fr(mo)s(de)d Fu(argumen)m(t)c(is) +f(supplied,)g(and)f(non-zero)i(otherwise.)630 977 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 +1086 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p +Fu(.)53 b(Th)m(us,)34 b(a)h(umask)e(of)i Ft(022)e Fu(results)h(in)g(p)s +(ermissions)630 1196 y(of)d Ft(755)p Fu(.)150 1347 y +Ft(unset)870 1477 y(unset)46 b([-fnv])g([)p Fj(name)p +Ft(])630 1607 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35 +b(or)f(function)f Fr(name)p Fu(.)52 b(If)33 b(the)i Ft(-v)e +Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 1716 +y Fu(refers)27 b(to)h(a)g(shell)f(v)-5 b(ariable)28 b(and)f(that)h(v)-5 +b(ariable)28 b(is)f(remo)m(v)m(ed.)41 b(If)27 b(the)g +Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 1826 y(the)37 +b Fr(name)5 b Fu(s)37 b(refer)f(to)i(shell)f(functions,)h(and)e(the)h +(function)g(de\014nition)f(is)h(remo)m(v)m(ed.)61 b(If)630 +1936 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g +Fr(name)38 b Fu(is)c(a)f(v)-5 b(ariable)34 b(with)g(the)f +Fr(nameref)51 b Fu(attribute,)630 2045 y Fr(name)42 b +Fu(will)37 b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5 +b(ariable)37 b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect) +h(if)630 2155 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65 +b(If)39 b(no)g(options)h(are)f(supplied,)h(eac)m(h)h +Fr(name)j Fu(refers)39 b(to)h(a)630 2264 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 2374 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 2483 +y(is)e(zero)i(unless)d(a)i Fr(name)36 b Fu(is)30 b(readonly)-8 +b(.)150 2715 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150 +2875 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m +(h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h(b)s(een)f(extended)g(in)150 +2984 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g +(in)g(the)h Fm(posix)e Fu(standard.)150 3135 y Ft(alias)870 +3265 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p +Ft(])d(...)o(])630 3395 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f +(the)h Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f +(aliases)h(on)f(the)630 3505 y(standard)g(output)g(in)g(a)h(form)f +(that)h(allo)m(ws)h(them)e(to)h(b)s(e)f(reused)g(as)g(input.)39 +b(If)25 b(argumen)m(ts)630 3614 y(are)j(supplied,)e(an)i(alias)g(is)f +(de\014ned)f(for)h(eac)m(h)h Fr(name)33 b Fu(whose)27 +b Fr(v)-5 b(alue)33 b Fu(is)27 b(giv)m(en.)41 b(If)26 +b(no)h Fr(v)-5 b(alue)630 3724 y Fu(is)37 b(giv)m(en,)j(the)d(name)g +(and)g(v)-5 b(alue)37 b(of)h(the)f(alias)h(is)f(prin)m(ted.)61 +b(Aliases)38 b(are)f(describ)s(ed)f(in)630 3833 y(Section)31 +b(6.6)h([Aliases],)g(page)f(90.)150 3984 y Ft(bind)870 +4114 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870 +4224 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p +Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870 +4333 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870 +4443 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command) +870 4552 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name) +870 4662 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj +(keyseq:readline-command)630 4792 y Fu(Displa)m(y)22 +b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g([Command)f(Line)h +(Editing],)j(page)e(104\))g(k)m(ey)630 4902 y(and)36 +b(function)g(bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g(to)h(a)f +(Readline)g(function)f(or)h(macro,)630 5011 y(or)44 b(set)h(a)g +(Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45 b(non-option)g(argumen)m(t) +f(is)g(a)h(command)f(as)g(it)630 5121 y(w)m(ould)e(app)s(ear)f(in)h(a)h +(Readline)g(initialization)i(\014le)d(\(see)h(Section)g(8.3)g +([Readline)g(Init)630 5230 y(File],)c(page)d(107\),)j(but)c(eac)m(h)h +(binding)f(or)g(command)h(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate) +630 5340 y(argumen)m(t;)31 b(e.g.,)h(`)p Ft +("\\C-x\\C-r":re-read-init-f)o(ile)p Fu('.)p eop end %%Page: 50 56 TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(50)150 299 y Ft(caller)870 -443 y(caller)46 b([)p Fj(expr)p Ft(])630 587 y Fu(Returns)34 -b(the)g(con)m(text)j(of)e(an)m(y)g(activ)m(e)i(subroutine)c(call)j(\(a) -f(shell)g(function)f(or)h(a)g(script)630 696 y(executed)c(with)f(the)h -Ft(.)f Fu(or)g Ft(source)f Fu(builtins\).)630 840 y(Without)45 -b Fr(expr)p Fu(,)j Ft(caller)43 b Fu(displa)m(ys)i(the)f(line)h(n)m(um) -m(b)s(er)f(and)g(source)g(\014lename)h(of)g(the)630 950 -y(curren)m(t)35 b(subroutine)g(call.)58 b(If)35 b(a)h(non-negativ)m(e)i -(in)m(teger)f(is)f(supplied)e(as)i Fr(expr)p Fu(,)h Ft(caller)630 -1059 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d -(name,)44 b(and)c(source)g(\014le)h(corresp)s(onding)e(to)630 -1169 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 -1278 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 -1422 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g -(is)g(not)g(executing)h(a)f(subroutine)e(call)j(or)f -Fr(expr)630 1532 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5 -b(alid)30 b(p)s(osition)h(in)f(the)g(call)i(stac)m(k.)150 -1710 y Ft(command)870 1854 y(command)46 b([-pVv])g Fj(command)g -Ft([)p Fj(arguments)f Ft(...)o(])630 1998 y Fu(Runs)32 -b Fr(command)k Fu(with)d Fr(argumen)m(ts)k Fu(ignoring)c(an)m(y)g -(shell)h(function)e(named)h Fr(command)p Fu(.)630 2107 -y(Only)39 b(shell)i(builtin)e(commands)h(or)g(commands)f(found)g(b)m(y) -h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 2217 y(executed.)59 -b(If)36 b(there)h(is)f(a)h(shell)f(function)g(named)g -Ft(ls)p Fu(,)h(running)e(`)p Ft(command)29 b(ls)p Fu(')35 -b(within)630 2326 y(the)c(function)f(will)h(execute)g(the)g(external)g -(command)g Ft(ls)f Fu(instead)g(of)h(calling)h(the)f(func-)630 -2436 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b -Ft(-p)h Fu(option)g(means)g(to)h(use)f(a)g(default)h(v)-5 -b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 2545 y(guaran)m(teed)f(to) -f(\014nd)e(all)j(of)f(the)g(standard)f(utilities.)52 -b(The)33 b(return)g(status)h(in)f(this)h(case)630 2655 -y(is)29 b(127)g(if)g Fr(command)j Fu(cannot)d(b)s(e)e(found)h(or)g(an)g -(error)h(o)s(ccurred,)f(and)g(the)h(exit)g(status)g(of)630 -2765 y Fr(command)34 b Fu(otherwise.)630 2908 y(If)e(either)h(the)f -Ft(-V)g Fu(or)g Ft(-v)g Fu(option)h(is)f(supplied,)g(a)h(description)f -(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 3018 y(The)f -Ft(-v)h Fu(option)g(causes)g(a)g(single)h(w)m(ord)f(indicating)g(the)g -(command)g(or)g(\014le)g(name)g(used)630 3128 y(to)40 -b(in)m(v)m(ok)m(e)h Fr(command)h Fu(to)e(b)s(e)e(displa)m(y)m(ed;)44 -b(the)39 b Ft(-V)f Fu(option)i(pro)s(duces)d(a)j(more)f(v)m(erb)s(ose) -630 3237 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e -(status)h(is)g(zero)h(if)f Fr(command)k Fu(is)c(found,)h(and)630 -3347 y(non-zero)31 b(if)f(not.)150 3525 y Ft(declare)870 -3669 y(declare)46 b([-aAfFgilnrtux])d([-p])k([)p Fj(name)p -Ft([=)p Fj(value)p Ft(])d(...)o(])630 3813 y Fu(Declare)29 -b(v)-5 b(ariables)28 b(and)e(giv)m(e)j(them)e(attributes.)40 -b(If)27 b(no)g Fr(name)5 b Fu(s)27 b(are)h(giv)m(en,)h(then)e(displa)m -(y)630 3922 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31 -b(instead.)630 4066 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f -(the)h(attributes)g(and)e(v)-5 b(alues)36 b(of)f(eac)m(h)i -Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 4176 y Fu(is)i(used)g(with)g -Fr(name)43 b Fu(argumen)m(ts,)e(additional)e(options,)i(other)d(than)g -Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 4285 y(ignored.)630 -4429 y(When)g Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k -Fu(argumen)m(ts,)f Ft(declare)38 b Fu(will)j(displa)m(y)f(the)h(at-)630 -4539 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 4648 y(tional)k(options.)52 b(If)34 -b(no)g(other)g(options)g(are)g(supplied)f(with)h Ft(-p)p -Fu(,)g Ft(declare)e Fu(will)j(displa)m(y)630 4758 y(the)e(attributes)h -(and)e(v)-5 b(alues)33 b(of)g(all)h(shell)f(v)-5 b(ariables.)50 -b(The)32 b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630 -4867 y(displa)m(y)d(to)g(shell)f(functions.)630 5011 -y(The)41 b Ft(-F)f Fu(option)i(inhibits)e(the)i(displa)m(y)f(of)g -(function)g(de\014nitions;)47 b(only)41 b(the)g(function)630 -5121 y(name)30 b(and)f(attributes)i(are)f(prin)m(ted.)40 -b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled)g(using) -630 5230 y Ft(shopt)24 b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f -(Builtin],)k(page)e(62\),)i(the)d(source)h(\014le)f(name)h(and)630 -5340 y(line)31 b(n)m(um)m(b)s(er)e(where)h(the)g(function)g(is)h -(de\014ned)e(are)i(displa)m(y)m(ed)g(as)f(w)m(ell.)42 -b Ft(-F)30 b Fu(implies)g Ft(-f)p Fu(.)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(Options,)30 +b(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 +454 y Ft(-m)e Fj(keymap)66 b Fu(Use)54 b Fr(k)m(eymap)j +Fu(as)d(the)g(k)m(eymap)g(to)h(b)s(e)e(a\013ected)i(b)m(y)f(the)g +(subsequen)m(t)1110 563 y(bindings.)46 b(Acceptable)34 +b Fr(k)m(eymap)i Fu(names)c(are)h Ft(emacs)p Fu(,)f Ft(emacs-standard)p +Fu(,)1110 673 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p +Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p +Fu(,)f(and)1110 782 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 +b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c +Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 892 y(synon)m(ym\);)30 +b Ft(emacs)f Fu(is)i(equiv)-5 b(alen)m(t)32 b(to)f Ft(emacs-standard)p +Fu(.)630 1047 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g +(Readline)g(functions.)630 1201 y Ft(-p)384 b Fu(Displa)m(y)34 +b(Readline)f(function)g(names)g(and)f(bindings)f(in)i(suc)m(h)f(a)i(w)m +(a)m(y)f(that)1110 1311 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 1466 +y Ft(-P)384 b Fu(List)31 b(curren)m(t)f(Readline)h(function)f(names)g +(and)g(bindings.)630 1620 y Ft(-v)384 b Fu(Displa)m(y)25 +b(Readline)f(v)-5 b(ariable)25 b(names)f(and)f(v)-5 b(alues)24 +b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 1730 +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 1885 y Ft(-V)384 b Fu(List)31 +b(curren)m(t)f(Readline)h(v)-5 b(ariable)31 b(names)f(and)g(v)-5 +b(alues.)630 2039 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g +(sequences)f(b)s(ound)f(to)i(macros)g(and)f(the)g(strings)1110 +2149 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 2259 +y(Readline)d(initialization)i(\014le.)630 2413 y Ft(-S)384 +b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g(sequences)f(b)s(ound)f(to)i +(macros)g(and)f(the)g(strings)1110 2523 y(they)31 b(output.)630 +2678 y Ft(-f)f Fj(filename)1110 2787 y Fu(Read)h(k)m(ey)g(bindings)e +(from)h Fr(\014lename)p Fu(.)630 2942 y Ft(-q)g Fj(function)1110 +3051 y Fu(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h +(the)f(named)f Fr(function)p Fu(.)630 3206 y Ft(-u)g +Fj(function)1110 3316 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i +(the)f(named)g Fr(function)p Fu(.)630 3471 y Ft(-r)g +Fj(keyseq)66 b Fu(Remo)m(v)m(e)32 b(an)m(y)f(curren)m(t)f(binding)f +(for)h Fr(k)m(eyseq)p Fu(.)630 3625 y Ft(-x)g Fj(keyseq:shell-command) +1110 3735 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h +(whenev)m(er)f Fr(k)m(eyseq)j Fu(is)d(en)m(tered.)1110 +3844 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51 +b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 3954 +y(LINE)37 b Fu(v)-5 b(ariable)38 b(to)g(the)g(con)m(ten)m(ts)i(of)e +(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 4064 +y Ft(READLINE_POINT)e Fu(v)-5 b(ariable)39 b(to)h(the)e(curren)m(t)h +(lo)s(cation)h(of)f(the)g(insertion)1110 4173 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 Ft(READLINE_)1110 4283 y(LINE)29 b Fu(or)h +Ft(READLINE_POINT)p Fu(,)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 4392 y(editing)h(state.) +630 4547 y Ft(-X)384 b Fu(List)27 b(all)i(k)m(ey)f(sequences)f(b)s +(ound)e(to)j(shell)g(commands)e(and)h(the)g(asso)s(ciated)1110 +4657 y(commands)j(in)g(a)h(format)g(that)f(can)h(b)s(e)f(reused)f(as)i +(input.)630 4811 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 4966 y Ft(builtin)870 5098 y(builtin)46 b([)p +Fj(shell-builtin)e Ft([)p Fj(args)p Ft(]])630 5230 y +Fu(Run)35 b(a)i(shell)f(builtin,)i(passing)e(it)h Fr(args)p +Fu(,)h(and)e(return)f(its)i(exit)g(status.)59 b(This)35 +b(is)i(useful)630 5340 y(when)29 b(de\014ning)h(a)g(shell)h(function)f +(with)g(the)g(same)h(name)f(as)h(a)g(shell)f(builtin,)g(retaining)p +eop end %%Page: 51 57 TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(51)630 299 y(The)36 -b Ft(-g)g Fu(option)h(forces)g(v)-5 b(ariables)37 b(to)g(b)s(e)f -(created)i(or)e(mo)s(di\014ed)g(at)h(the)g(global)h(scop)s(e,)630 -408 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f(a)g(shell)h -(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630 -518 y(cases.)630 654 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 764 y(i\014ed)j(attributes)h(or)f(to)h(giv) -m(e)h(v)-5 b(ariables)31 b(attributes:)630 926 y Ft(-a)384 -b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34 b(an)h(indexed)g(arra)m(y)g(v)-5 -b(ariable)36 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)1110 -1035 y(page)31 b(89\).)630 1198 y Ft(-A)384 b Fu(Eac)m(h)24 -b Fr(name)k Fu(is)23 b(an)g(asso)s(ciativ)m(e)j(arra)m(y)e(v)-5 -b(ariable)24 b(\(see)g(Section)g(6.7)g([Arra)m(ys],)1110 -1307 y(page)31 b(89\).)630 1469 y Ft(-f)384 b Fu(Use)31 -b(function)f(names)g(only)-8 b(.)630 1631 y Ft(-i)384 -b Fu(The)36 b(v)-5 b(ariable)37 b(is)f(to)h(b)s(e)f(treated)h(as)g(an)f -(in)m(teger;)41 b(arithmetic)c(ev)-5 b(aluation)1110 -1741 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(87\))h -(is)f(p)s(erformed)e(when)h(the)1110 1851 y(v)-5 b(ariable)31 -b(is)g(assigned)f(a)h(v)-5 b(alue.)630 2013 y Ft(-l)384 -b Fu(When)26 b(the)g(v)-5 b(ariable)27 b(is)f(assigned)g(a)g(v)-5 -b(alue,)28 b(all)f(upp)s(er-case)e(c)m(haracters)j(are)1110 -2122 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 2285 -y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k Fu(the)27 -b Fr(nameref)44 b Fu(attribute,)28 b(making)f(it)h(a)f(name)f -(reference)1110 2394 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 2504 y Fr(name)p Fu(.)39 b(All)26 -b(references)g(and)f(assignmen)m(ts)h(to)g Fr(name)p -Fu(,)h(except)g(for)e(c)m(hanging)1110 2613 y(the)43 -b Ft(-n)f Fu(attribute)i(itself,)j(are)c(p)s(erformed)f(on)g(the)h(v)-5 -b(ariable)44 b(referenced)1110 2723 y(b)m(y)h Fr(name)5 -b Fu('s)46 b(v)-5 b(alue.)86 b(The)45 b Ft(-n)f Fu(attribute)j(cannot)e -(b)s(e)g(applied)g(to)h(arra)m(y)1110 2833 y(v)-5 b(ariables.)630 -2995 y Ft(-r)384 b Fu(Mak)m(e)25 b Fr(name)5 b Fu(s)23 -b(readonly)-8 b(.)39 b(These)24 b(names)f(cannot)h(then)f(b)s(e)g -(assigned)h(v)-5 b(alues)1110 3104 y(b)m(y)30 b(subsequen)m(t)g -(assignmen)m(t)h(statemen)m(ts)h(or)f(unset.)630 3267 -y Ft(-t)384 b Fu(Giv)m(e)33 b(eac)m(h)h Fr(name)j Fu(the)32 -b Ft(trace)f Fu(attribute.)46 b(T)-8 b(raced)32 b(functions)g(inherit)g -(the)1110 3376 y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g -(the)h(calling)h(shell.)40 b(The)27 b(trace)i(attribute)1110 -3486 y(has)h(no)g(sp)s(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 -3648 y Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29 -b(is)f(assigned)h(a)f(v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m -(haracters)f(are)1110 3758 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 -3920 y Ft(-x)384 b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29 -b(exp)s(ort)h(to)g(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110 -4029 y(ronmen)m(t.)630 4191 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g -(`)p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f -(the)g(exceptions)h(that)630 4301 y(`)p Ft(+a)p Fu(')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 Ft(+r)p Fu(')g(will)g(not)g(remo)m(v)m(e)i -(the)630 4411 y(readonly)e(attribute.)41 b(When)30 b(used)f(in)g(a)h -(function,)g Ft(declare)e Fu(mak)m(es)j(eac)m(h)f Fr(name)35 -b Fu(lo)s(cal,)630 4520 y(as)f(with)f(the)g Ft(local)f -Fu(command,)i(unless)f(the)g Ft(-g)g Fu(option)h(is)f(used.)49 -b(If)33 b(a)h(v)-5 b(ariable)34 b(name)630 4630 y(is)c(follo)m(w)m(ed)i -(b)m(y)f(=)p Fr(v)-5 b(alue)p Fu(,)30 b(the)h(v)-5 b(alue)31 -b(of)f(the)h(v)-5 b(ariable)31 b(is)g(set)g(to)g Fr(v)-5 -b(alue)p Fu(.)630 4766 y(When)41 b(using)g Ft(-a)g Fu(or)h -Ft(-A)e Fu(and)h(the)h(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g(to)g -(create)h(arra)m(y)630 4875 y(v)-5 b(ariables,)28 b(additional)f -(attributes)g(do)f(not)h(tak)m(e)h(e\013ect)g(un)m(til)e(subsequen)m(t) -g(assignmen)m(ts.)630 5011 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 5121 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g -(using)f(`)p Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h -(assign)630 5230 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 5340 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)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(51)630 299 y(the)34 +b(functionalit)m(y)h(of)f(the)f(builtin)g(within)g(the)h(function.)50 +b(The)33 b(return)g(status)h(is)f(non-)630 408 y(zero)e(if)g +Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f(builtin)g(command.)150 +579 y Ft(caller)870 719 y(caller)46 b([)p Fj(expr)p Ft(])630 +859 y Fu(Returns)34 b(the)g(con)m(text)j(of)e(an)m(y)g(activ)m(e)i +(subroutine)c(call)j(\(a)f(shell)g(function)f(or)h(a)g(script)630 +969 y(executed)c(with)f(the)h Ft(.)f Fu(or)g Ft(source)f +Fu(builtins\).)630 1109 y(Without)45 b Fr(expr)p Fu(,)j +Ft(caller)43 b Fu(displa)m(ys)i(the)f(line)h(n)m(um)m(b)s(er)f(and)g +(source)g(\014lename)h(of)g(the)630 1218 y(curren)m(t)35 +b(subroutine)g(call.)58 b(If)35 b(a)h(non-negativ)m(e)i(in)m(teger)f +(is)f(supplied)e(as)i Fr(expr)p Fu(,)h Ft(caller)630 +1328 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d +(name,)44 b(and)c(source)g(\014le)h(corresp)s(onding)e(to)630 +1437 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 +1547 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 +1687 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g +(is)g(not)g(executing)h(a)f(subroutine)e(call)j(or)f +Fr(expr)630 1797 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5 +b(alid)30 b(p)s(osition)h(in)f(the)g(call)i(stac)m(k.)150 +1967 y Ft(command)870 2107 y(command)46 b([-pVv])g Fj(command)g +Ft([)p Fj(arguments)f Ft(...)o(])630 2247 y Fu(Runs)32 +b Fr(command)k Fu(with)d Fr(argumen)m(ts)k Fu(ignoring)c(an)m(y)g +(shell)h(function)e(named)h Fr(command)p Fu(.)630 2357 +y(Only)39 b(shell)i(builtin)e(commands)h(or)g(commands)f(found)g(b)m(y) +h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 2466 y(executed.)59 +b(If)36 b(there)h(is)f(a)h(shell)f(function)g(named)g +Ft(ls)p Fu(,)h(running)e(`)p Ft(command)29 b(ls)p Fu(')35 +b(within)630 2576 y(the)c(function)f(will)h(execute)g(the)g(external)g +(command)g Ft(ls)f Fu(instead)g(of)h(calling)h(the)f(func-)630 +2685 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b +Ft(-p)h Fu(option)g(means)g(to)h(use)f(a)g(default)h(v)-5 +b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 2795 y(guaran)m(teed)f(to) +f(\014nd)e(all)j(of)f(the)g(standard)f(utilities.)52 +b(The)33 b(return)g(status)h(in)f(this)h(case)630 2905 +y(is)29 b(127)g(if)g Fr(command)j Fu(cannot)d(b)s(e)e(found)h(or)g(an)g +(error)h(o)s(ccurred,)f(and)g(the)h(exit)g(status)g(of)630 +3014 y Fr(command)34 b Fu(otherwise.)630 3154 y(If)e(either)h(the)f +Ft(-V)g Fu(or)g Ft(-v)g Fu(option)h(is)f(supplied,)g(a)h(description)f +(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 3264 y(The)f +Ft(-v)h Fu(option)g(causes)g(a)g(single)h(w)m(ord)f(indicating)g(the)g +(command)g(or)g(\014le)g(name)g(used)630 3373 y(to)40 +b(in)m(v)m(ok)m(e)h Fr(command)h Fu(to)e(b)s(e)e(displa)m(y)m(ed;)44 +b(the)39 b Ft(-V)f Fu(option)i(pro)s(duces)d(a)j(more)f(v)m(erb)s(ose) +630 3483 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e +(status)h(is)g(zero)h(if)f Fr(command)k Fu(is)c(found,)h(and)630 +3593 y(non-zero)31 b(if)f(not.)150 3763 y Ft(declare)870 +3903 y(declare)46 b([-aAfFgilnrtux])d([-p])k([)p Fj(name)p +Ft([=)p Fj(value)p Ft(])d(...)o(])630 4043 y Fu(Declare)29 +b(v)-5 b(ariables)28 b(and)e(giv)m(e)j(them)e(attributes.)40 +b(If)27 b(no)g Fr(name)5 b Fu(s)27 b(are)h(giv)m(en,)h(then)e(displa)m +(y)630 4153 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31 +b(instead.)630 4293 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f +(the)h(attributes)g(and)e(v)-5 b(alues)36 b(of)f(eac)m(h)i +Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 4402 y Fu(is)i(used)g(with)g +Fr(name)43 b Fu(argumen)m(ts,)e(additional)e(options,)i(other)d(than)g +Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 4512 y(ignored.)630 +4652 y(When)g Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k +Fu(argumen)m(ts,)f Ft(declare)38 b Fu(will)j(displa)m(y)f(the)h(at-)630 +4762 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 4871 y(tional)k(options.)52 b(If)34 +b(no)g(other)g(options)g(are)g(supplied)f(with)h Ft(-p)p +Fu(,)g Ft(declare)e Fu(will)j(displa)m(y)630 4981 y(the)e(attributes)h +(and)e(v)-5 b(alues)33 b(of)g(all)h(shell)f(v)-5 b(ariables.)50 +b(The)32 b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630 +5090 y(displa)m(y)d(to)g(shell)f(functions.)630 5230 +y(The)41 b Ft(-F)f Fu(option)i(inhibits)e(the)i(displa)m(y)f(of)g +(function)g(de\014nitions;)47 b(only)41 b(the)g(function)630 +5340 y(name)30 b(and)f(attributes)i(are)f(prin)m(ted.)40 +b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled)g(using) +p eop end %%Page: 52 58 TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(52)630 299 y([Arra)m(ys],)47 -b(page)c(89\),)48 b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v) --5 b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630 -408 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 -518 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 -628 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g -Ft(-f)p Fu(.)150 785 y Ft(echo)870 918 y(echo)47 b([-neE])f([)p -Fj(arg)g Ft(...])630 1051 y Fu(Output)31 b(the)i Fr(arg)8 -b Fu(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated)g(with)f(a)h -(newline.)47 b(The)32 b(return)630 1161 y(status)f(is)f(0)h(unless)f(a) -h(write)g(error)f(o)s(ccurs.)41 b(If)30 b Ft(-n)g Fu(is)h(sp)s -(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 1270 -y(suppressed.)38 b(If)29 b(the)h Ft(-e)f Fu(option)h(is)f(giv)m(en,)i -(in)m(terpretation)g(of)e(the)h(follo)m(wing)h(bac)m(kslash-)630 -1380 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78 -b(The)42 b Ft(-E)g Fu(option)h(disables)g(the)g(in)m(terpretation)h(of) -630 1490 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 -1599 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e -(used)g(to)h(dynamically)h(determine)f(whether)f(or)630 -1709 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g -(b)m(y)f(default.)48 b Ft(echo)32 b Fu(do)s(es)g(not)i(in)m(terpret)630 -1818 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630 -1952 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f -(sequences:)630 2109 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 -2266 y Ft(\\b)384 b Fu(bac)m(kspace)630 2423 y Ft(\\c)g -Fu(suppress)28 b(further)h(output)630 2580 y Ft(\\e)630 -2689 y(\\E)384 b Fu(escap)s(e)630 2846 y Ft(\\f)g Fu(form)30 -b(feed)630 3003 y Ft(\\n)384 b Fu(new)30 b(line)630 3160 -y Ft(\\r)384 b Fu(carriage)32 b(return)630 3317 y Ft(\\t)384 -b Fu(horizon)m(tal)32 b(tab)630 3474 y Ft(\\v)384 b Fu(v)m(ertical)32 -b(tab)630 3631 y Ft(\\\\)384 b Fu(bac)m(kslash)630 3788 -y Ft(\\0)p Fj(nnn)240 b Fu(the)32 b(eigh)m(t-bit)i(c)m(haracter)g -(whose)e(v)-5 b(alue)33 b(is)f(the)g(o)s(ctal)i(v)-5 -b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 3898 y(three)e(o)s(ctal)g -(digits\))630 4055 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c) -m(haracter)g(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 -b(alue)39 b Fr(HH)1110 4164 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e -(digits\))630 4321 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41 -b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 -b(alue)41 b(is)g(the)g(hex-)1110 4431 y(adecimal)32 b(v)-5 -b(alue)31 b Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)e(hex)h(digits\))630 -4588 y Ft(\\U)p Fj(HHHHHHHH)1110 4697 y Fu(the)41 b(Unico)s(de)g -(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41 -b(is)g(the)g(hex-)1110 4807 y(adecimal)32 b(v)-5 b(alue)31 -b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))150 -4964 y Ft(enable)870 5097 y(enable)46 b([-a])h([-dnps])f([-f)g -Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])630 5230 -y Fu(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56 -b(Disabling)37 b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630 -5340 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)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(52)630 299 y Ft(shopt)24 +b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f(Builtin],)k(page)e(64\),) +i(the)d(source)h(\014le)f(name)h(and)630 408 y(line)31 +b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h Fr(name)36 b Fu(is)30 +b(de\014ned)f(are)i(displa)m(y)m(ed)g(as)g(w)m(ell.)41 +b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 543 y(The)36 +b Ft(-g)g Fu(option)h(forces)g(v)-5 b(ariables)37 b(to)g(b)s(e)f +(created)i(or)e(mo)s(di\014ed)g(at)h(the)g(global)h(scop)s(e,)630 +653 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f(a)g(shell)h +(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630 +763 y(cases.)630 897 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 1007 y(i\014ed)j(attributes)h(or)f(to)h +(giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630 1167 +y Ft(-a)384 b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34 b(an)h(indexed)g(arra) +m(y)g(v)-5 b(ariable)36 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)1110 +1277 y(page)31 b(91\).)630 1437 y Ft(-A)384 b Fu(Eac)m(h)24 +b Fr(name)k Fu(is)23 b(an)g(asso)s(ciativ)m(e)j(arra)m(y)e(v)-5 +b(ariable)24 b(\(see)g(Section)g(6.7)g([Arra)m(ys],)1110 +1547 y(page)31 b(91\).)630 1707 y Ft(-f)384 b Fu(Use)31 +b(function)f(names)g(only)-8 b(.)630 1867 y Ft(-i)384 +b Fu(The)36 b(v)-5 b(ariable)37 b(is)f(to)h(b)s(e)f(treated)h(as)g(an)f +(in)m(teger;)41 b(arithmetic)c(ev)-5 b(aluation)1110 +1976 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(89\))h +(is)f(p)s(erformed)e(when)h(the)1110 2086 y(v)-5 b(ariable)31 +b(is)g(assigned)f(a)h(v)-5 b(alue.)630 2246 y Ft(-l)384 +b Fu(When)26 b(the)g(v)-5 b(ariable)27 b(is)f(assigned)g(a)g(v)-5 +b(alue,)28 b(all)f(upp)s(er-case)e(c)m(haracters)j(are)1110 +2356 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 2516 +y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k Fu(the)27 +b Fr(nameref)44 b Fu(attribute,)28 b(making)f(it)h(a)f(name)f +(reference)1110 2626 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 2735 y Fr(name)p Fu(.)54 b(All)35 +b(references,)h(assignmen)m(ts,)h(and)d(attribute)h(mo)s(di\014cations) +g(to)1110 2845 y Fr(name)p Fu(,)27 b(except)f(for)f(those)h(using)f(or) +g(c)m(hanging)h(the)f Ft(-n)g Fu(attribute)h(itself,)i(are)1110 +2954 y(p)s(erformed)22 b(on)h(the)g(v)-5 b(ariable)25 +b(referenced)e(b)m(y)g Fr(name)5 b Fu('s)23 b(v)-5 b(alue.)39 +b(The)23 b(nameref)1110 3064 y(attribute)31 b(cannot)g(b)s(e)f(applied) +g(to)h(arra)m(y)g(v)-5 b(ariables.)630 3224 y Ft(-r)384 +b Fu(Mak)m(e)25 b Fr(name)5 b Fu(s)23 b(readonly)-8 b(.)39 +b(These)24 b(names)f(cannot)h(then)f(b)s(e)g(assigned)h(v)-5 +b(alues)1110 3334 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h +(statemen)m(ts)h(or)f(unset.)630 3494 y Ft(-t)384 b Fu(Giv)m(e)33 +b(eac)m(h)h Fr(name)j Fu(the)32 b Ft(trace)f Fu(attribute.)46 +b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 3603 +y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g(the)h(calling)h +(shell.)40 b(The)27 b(trace)i(attribute)1110 3713 y(has)h(no)g(sp)s +(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 3873 y +Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29 b(is)f(assigned)h(a)f +(v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m(haracters)f(are)1110 +3983 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 4143 +y Ft(-x)384 b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29 +b(exp)s(ort)h(to)g(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110 +4253 y(ronmen)m(t.)630 4413 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g +(`)p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f +(the)g(exceptions)h(that)630 4522 y(`)p Ft(+a)p Fu(')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 Ft(+r)p Fu(')g(will)g(not)g(remo)m(v)m(e)i +(the)630 4632 y(readonly)e(attribute.)41 b(When)30 b(used)f(in)g(a)h +(function,)g Ft(declare)e Fu(mak)m(es)j(eac)m(h)f Fr(name)35 +b Fu(lo)s(cal,)630 4741 y(as)f(with)f(the)g Ft(local)f +Fu(command,)i(unless)f(the)g Ft(-g)g Fu(option)h(is)f(used.)49 +b(If)33 b(a)h(v)-5 b(ariable)34 b(name)630 4851 y(is)c(follo)m(w)m(ed)i +(b)m(y)f(=)p Fr(v)-5 b(alue)p Fu(,)30 b(the)h(v)-5 b(alue)31 +b(of)f(the)h(v)-5 b(ariable)31 b(is)g(set)g(to)g Fr(v)-5 +b(alue)p Fu(.)630 4986 y(When)41 b(using)g Ft(-a)g Fu(or)h +Ft(-A)e Fu(and)h(the)h(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g(to)g +(create)h(arra)m(y)630 5096 y(v)-5 b(ariables,)28 b(additional)f +(attributes)g(do)f(not)h(tak)m(e)h(e\013ect)g(un)m(til)e(subsequen)m(t) +g(assignmen)m(ts.)630 5230 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 5340 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g +(using)f(`)p Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h +(assign)p eop end %%Page: 53 59 TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(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 408 y(b)s(efore)35 -b(disk)g(commands.)55 b(If)35 b Ft(-n)g Fu(is)g(used,)h(the)g -Fr(name)5 b Fu(s)35 b(b)s(ecome)h(disabled.)55 b(Otherwise)630 -518 y Fr(name)5 b Fu(s)44 b(are)h(enabled.)82 b(F)-8 -b(or)45 b(example,)k(to)c(use)f(the)g Ft(test)f Fu(binary)h(found)f -(via)h Ft($PATH)630 628 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g -(v)m(ersion,)h(t)m(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p -Fu('.)630 762 y(If)45 b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)d -(no)g Fr(name)51 b Fu(argumen)m(ts)46 b(app)s(ear,)k(a)c(list)h(of)f -(shell)630 871 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38 -b(no)f(other)h(argumen)m(ts,)j(the)d(list)g(consists)g(of)g(all)h -(enabled)630 981 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h -Fu(option)g(means)g(to)g(list)h(eac)m(h)g(builtin)f(with)f(an)h -(indication)h(of)630 1090 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.) -630 1224 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g -(builtin)f(command)h Fr(name)27 b Fu(from)22 b(shared)f(ob)5 -b(ject)630 1334 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp) -s(ort)d(dynamic)i(loading.)46 b(The)31 b Ft(-d)g Fu(option)h(will)h -(delete)630 1443 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p -Fu(.)630 1577 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the) -g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)52 b(The)33 -b Ft(-s)g Fu(option)630 1687 y(restricts)j Ft(enable)d -Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54 -b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630 -1797 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i -(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(68\).)630 -1931 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i -Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g -(error)630 2040 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g -(ob)5 b(ject.)150 2198 y Ft(help)870 2332 y(help)47 b([-dms])f([)p -Fj(pattern)p Ft(])630 2466 y Fu(Displa)m(y)40 b(helpful)e(information)h -(ab)s(out)g(builtin)f(commands.)66 b(If)38 b Fr(pattern)h -Fu(is)g(sp)s(eci\014ed,)630 2576 y Ft(help)28 b Fu(giv)m(es)i(detailed) -g(help)e(on)h(all)h(commands)e(matc)m(hing)i Fr(pattern)p -Fu(,)g(otherwise)f(a)g(list)h(of)630 2685 y(the)h(builtins)e(is)i(prin) -m(ted.)630 2819 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo) -m(wing)h(meanings:)630 2978 y Ft(-d)384 b Fu(Displa)m(y)32 -b(a)e(short)g(description)h(of)f(eac)m(h)i Fr(pattern)630 -3136 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h) -h Fr(pattern)e Fu(in)g(a)h(manpage-lik)m(e)h(format)630 -3294 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h -(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 3453 y Fu(The)f(return)f -(status)i(is)f(zero)h(unless)f(no)g(command)h(matc)m(hes)g -Fr(pattern)p Fu(.)150 3611 y Ft(let)870 3745 y(let)47 -b Fj(expression)e Ft([)p Fj(expression)g Ft(...)o(])630 -3879 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s -(e)d(p)s(erformed)g(on)i(shell)g(v)-5 b(ariables.)74 -b(Eac)m(h)630 3988 y Fr(expression)31 b Fu(is)g(ev)-5 -b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)h(b)s(elo)m(w)f -(in)f(Section)i(6.5)g([Shell)630 4098 y(Arithmetic],)51 -b(page)46 b(87.)87 b(If)45 b(the)g(last)h Fr(expression)g -Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 b Fu(returns)g(1;)630 -4208 y(otherwise)31 b(0)g(is)f(returned.)150 4366 y Ft(local)870 -4500 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p -Fj(value)p Ft(])e(...)630 4634 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m -(t,)g(a)f(lo)s(cal)h(v)-5 b(ariable)27 b(named)e Fr(name)31 -b Fu(is)26 b(created,)i(and)d(assigned)h Fr(v)-5 b(alue)p -Fu(.)630 4743 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f -(the)h(options)g(accepted)g(b)m(y)g Ft(declare)p Fu(.)59 -b Ft(local)36 b Fu(can)i(only)630 4853 y(b)s(e)j(used)h(within)f(a)i -(function;)48 b(it)42 b(mak)m(es)h(the)f(v)-5 b(ariable)43 -b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)630 -4963 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 5072 -y Ft(local)g Fu(is)h(used)g(outside)g(a)h(function,)h(an)e(in)m(v)-5 -b(alid)41 b Fr(name)46 b Fu(is)40 b(supplied,)i(or)e -Fr(name)45 b Fu(is)c(a)630 5182 y(readonly)30 b(v)-5 -b(ariable.)150 5340 y Ft(logout)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(a)42 +b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5 b(ariable,)47 +b(an)42 b(attempt)h(is)f(made)g(to)h(assign)f(a)h(v)-5 +b(alue)42 b(to)h(an)630 408 y(arra)m(y)30 b(v)-5 b(ariable)30 +b(without)g(using)e(the)i(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g +(\(see)h(Section)f(6.7)630 518 y([Arra)m(ys],)47 b(page)c(91\),)48 +b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v)-5 +b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630 +628 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g +(for)g(a)h(readonly)f(v)-5 b(ariable,)29 b(an)e(attempt)630 +737 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 +847 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g +Ft(-f)p Fu(.)150 1005 y Ft(echo)870 1139 y(echo)47 b([-neE])f([)p +Fj(arg)g Ft(...])630 1273 y Fu(Output)31 b(the)i Fr(arg)8 +b Fu(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated)g(with)f(a)h +(newline.)47 b(The)32 b(return)630 1383 y(status)f(is)f(0)h(unless)f(a) +h(write)g(error)f(o)s(ccurs.)41 b(If)30 b Ft(-n)g Fu(is)h(sp)s +(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 1492 +y(suppressed.)38 b(If)29 b(the)h Ft(-e)f Fu(option)h(is)f(giv)m(en,)i +(in)m(terpretation)g(of)e(the)h(follo)m(wing)h(bac)m(kslash-)630 +1602 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78 +b(The)42 b Ft(-E)g Fu(option)h(disables)g(the)g(in)m(terpretation)h(of) +630 1711 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 +1821 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e +(used)g(to)h(dynamically)h(determine)f(whether)f(or)630 +1931 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g +(b)m(y)f(default.)48 b Ft(echo)32 b Fu(do)s(es)g(not)i(in)m(terpret)630 +2040 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630 +2174 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f +(sequences:)630 2332 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 +2491 y Ft(\\b)384 b Fu(bac)m(kspace)630 2649 y Ft(\\c)g +Fu(suppress)28 b(further)h(output)630 2807 y Ft(\\e)630 +2917 y(\\E)384 b Fu(escap)s(e)630 3075 y Ft(\\f)g Fu(form)30 +b(feed)630 3233 y Ft(\\n)384 b Fu(new)30 b(line)630 3392 +y Ft(\\r)384 b Fu(carriage)32 b(return)630 3550 y Ft(\\t)384 +b Fu(horizon)m(tal)32 b(tab)630 3708 y Ft(\\v)384 b Fu(v)m(ertical)32 +b(tab)630 3867 y Ft(\\\\)384 b Fu(bac)m(kslash)630 4025 +y Ft(\\0)p Fj(nnn)240 b Fu(the)32 b(eigh)m(t-bit)i(c)m(haracter)g +(whose)e(v)-5 b(alue)33 b(is)f(the)g(o)s(ctal)i(v)-5 +b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 4134 y(three)e(o)s(ctal)g +(digits\))630 4293 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c) +m(haracter)g(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 +b(alue)39 b Fr(HH)1110 4402 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e +(digits\))630 4561 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41 +b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 +b(alue)41 b(is)g(the)g(hex-)1110 4670 y(adecimal)32 b(v)-5 +b(alue)31 b Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)e(hex)h(digits\))630 +4829 y Ft(\\U)p Fj(HHHHHHHH)1110 4938 y Fu(the)41 b(Unico)s(de)g +(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41 +b(is)g(the)g(hex-)1110 5048 y(adecimal)32 b(v)-5 b(alue)31 +b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))150 +5206 y Ft(enable)870 5340 y(enable)46 b([-a])h([-dnps])f([-f)g +Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])p eop end %%Page: 54 60 TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(54)870 299 y Ft(logout)46 -b([)p Fj(n)p Ft(])630 429 y Fu(Exit)31 b(a)g(login)g(shell,)g -(returning)e(a)i(status)g(of)f Fr(n)g Fu(to)h(the)g(shell's)f(paren)m -(t.)150 580 y Ft(mapfile)870 710 y(mapfile)46 b([-n)h -Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g Fj(count)p -Ft(])h([-t])f([-u)h Fj(fd)p Ft(])1061 819 y([-C)g Fj(callback)p -Ft(])e([-c)i Fj(quantum)p Ft(])f([)p Fj(array)p Ft(])630 -950 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j -(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p -Fu(,)i(or)630 1059 y(from)28 b(\014le)h(descriptor)f -Fr(fd)k Fu(if)c(the)h Ft(-u)f Fu(option)h(is)g(supplied.)39 -b(The)28 b(v)-5 b(ariable)29 b Ft(MAPFILE)e Fu(is)i(the)630 -1169 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30 -b(if)g(supplied,)g(ha)m(v)m(e)h(the)g(follo)m(wing)h(meanings:)630 -1319 y Ft(-n)384 b Fu(Cop)m(y)30 b(at)h(most)g Fr(coun)m(t)i -Fu(lines.)41 b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h(lines)e(are)h -(copied.)630 1470 y Ft(-O)384 b Fu(Begin)31 b(assigning)g(to)g -Fr(arra)m(y)39 b Fu(at)31 b(index)f Fr(origin)p Fu(.)41 -b(The)30 b(default)h(index)f(is)g(0.)630 1621 y Ft(-s)384 -b Fu(Discard)31 b(the)f(\014rst)g Fr(coun)m(t)j Fu(lines)e(read.)630 -1771 y Ft(-t)384 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(newline)g(from)f -(eac)m(h)h(line)g(read.)630 1922 y Ft(-u)384 b Fu(Read)31 -b(lines)f(from)g(\014le)h(descriptor)f Fr(fd)j Fu(instead)e(of)f(the)h -(standard)e(input.)630 2073 y Ft(-C)384 b Fu(Ev)-5 b(aluate)33 -b Fr(callbac)m(k)39 b Fu(eac)m(h)33 b(time)f Fr(quan)m(tum)p -Fu(P)f(lines)h(are)g(read.)45 b(The)31 b Ft(-c)g Fu(op-)1110 -2182 y(tion)g(sp)s(eci\014es)f Fr(quan)m(tum)p Fu(.)630 -2333 y Ft(-c)384 b Fu(Sp)s(ecify)30 b(the)g(n)m(um)m(b)s(er)f(of)i -(lines)f(read)h(b)s(et)m(w)m(een)g(eac)m(h)g(call)h(to)f -Fr(callbac)m(k)p Fu(.)630 2484 y(If)36 b Ft(-C)g Fu(is)g(sp)s -(eci\014ed)g(without)g Ft(-c)p Fu(,)h(the)g(default)f(quan)m(tum)g(is)h -(5000.)60 b(When)36 b Fr(callbac)m(k)44 b Fu(is)630 2593 -y(ev)-5 b(aluated,)30 b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f -(next)g(arra)m(y)g(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630 -2703 y(the)39 b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i -(as)e(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47 -b Fu(is)630 2813 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read) -g(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630 -2943 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g -Ft(mapfile)c Fu(will)j(clear)g Fr(arra)m(y)34 b Fu(b)s(efore)24 -b(assigning)630 3052 y(to)31 b(it.)630 3182 y Ft(mapfile)41 -b Fu(returns)g(successfully)i(unless)e(an)i(in)m(v)-5 -b(alid)43 b(option)g(or)g(option)g(argumen)m(t)g(is)630 -3292 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5 -b(alid)31 b(or)g(unassignable,)f(or)h Fr(arra)m(y)38 -b Fu(is)31 b(not)f(an)h(indexed)e(arra)m(y)-8 b(.)150 -3443 y Ft(printf)870 3573 y(printf)46 b([-v)h Fj(var)p -Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 3703 -y Fu(W)-8 b(rite)27 b(the)g(formatted)f Fr(argumen)m(ts)k -Fu(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the) -630 3813 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g -(the)g(output)g(to)g(b)s(e)f(assigned)h(to)h(the)f(v)-5 -b(ariable)39 b Fr(v)-5 b(ar)630 3922 y Fu(rather)30 b(than)g(b)s(eing)g -(prin)m(ted)g(to)h(the)g(standard)e(output.)630 4052 -y(The)36 b Fr(format)i Fu(is)f(a)f(c)m(haracter)i(string)e(whic)m(h)g -(con)m(tains)i(three)e(t)m(yp)s(es)g(of)h(ob)5 b(jects:)53 -b(plain)630 4162 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 -4271 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 4381 y(sp)s -(eci\014cations,)j(eac)m(h)e(of)g(whic)m(h)f(causes)g(prin)m(ting)g(of) -h(the)f(next)h(successiv)m(e)g Fr(argumen)m(t)p Fu(.)630 -4491 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e -Fu(formats,)27 b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630 -4600 y(extensions:)630 4751 y Ft(\045b)384 b Fu(Causes)30 -b Ft(printf)e Fu(to)j(expand)f(bac)m(kslash)h(escap)s(e)f(sequences)h -(in)f(the)g(corre-)1110 4861 y(sp)s(onding)19 b Fr(argumen)m(t)p -Fu(,)24 b(except)e(that)g(`)p Ft(\\c)p Fu(')e(terminates)i(output,)h -(bac)m(kslashes)1110 4970 y(in)k(`)p Ft(\\')p Fu(',)h(`)p -Ft(\\")p Fu(',)g(and)f(`)p Ft(\\?)p Fu(')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 5080 -y(with)i(`)p Ft(\\0)p Fu(')g(ma)m(y)h(con)m(tain)h(up)d(to)i(four)f -(digits.)630 5230 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e -Fu(to)i(output)g(the)g(corresp)s(onding)f Fr(argumen)m(t)j -Fu(in)d(a)i(format)1110 5340 y(that)e(can)g(b)s(e)e(reused)h(as)h -(shell)f(input.)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(Enable)36 +b(and)f(disable)h(builtin)g(shell)g(commands.)56 b(Disabling)37 +b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630 408 y(command)e(whic)m(h)g +(has)g(the)g(same)h(name)f(as)h(a)f(shell)h(builtin)e(to)i(b)s(e)f +(executed)h(without)630 518 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 628 y(b)s(efore)35 b(disk)g(commands.)55 +b(If)35 b Ft(-n)g Fu(is)g(used,)h(the)g Fr(name)5 b Fu(s)35 +b(b)s(ecome)h(disabled.)55 b(Otherwise)630 737 y Fr(name)5 +b Fu(s)44 b(are)h(enabled.)82 b(F)-8 b(or)45 b(example,)k(to)c(use)f +(the)g Ft(test)f Fu(binary)h(found)f(via)h Ft($PATH)630 +847 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g(v)m(ersion,)h(t)m +(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p Fu('.)630 983 y(If)45 +b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)d(no)g +Fr(name)51 b Fu(argumen)m(ts)46 b(app)s(ear,)k(a)c(list)h(of)f(shell) +630 1092 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38 +b(no)f(other)h(argumen)m(ts,)j(the)d(list)g(consists)g(of)g(all)h +(enabled)630 1202 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h +Fu(option)g(means)g(to)g(list)h(eac)m(h)g(builtin)f(with)f(an)h +(indication)h(of)630 1311 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.) +630 1447 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g +(builtin)f(command)h Fr(name)27 b Fu(from)22 b(shared)f(ob)5 +b(ject)630 1557 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp) +s(ort)d(dynamic)i(loading.)46 b(The)31 b Ft(-d)g Fu(option)h(will)h +(delete)630 1667 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p +Fu(.)630 1802 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the) +g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)52 b(The)33 +b Ft(-s)g Fu(option)630 1912 y(restricts)j Ft(enable)d +Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54 +b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630 +2022 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i +(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(70\).)630 +2158 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i +Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g +(error)630 2267 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g +(ob)5 b(ject.)150 2429 y Ft(help)870 2565 y(help)47 b([-dms])f([)p +Fj(pattern)p Ft(])630 2701 y Fu(Displa)m(y)40 b(helpful)e(information)h +(ab)s(out)g(builtin)f(commands.)66 b(If)38 b Fr(pattern)h +Fu(is)g(sp)s(eci\014ed,)630 2811 y Ft(help)28 b Fu(giv)m(es)i(detailed) +g(help)e(on)h(all)h(commands)e(matc)m(hing)i Fr(pattern)p +Fu(,)g(otherwise)f(a)g(list)h(of)630 2920 y(the)h(builtins)e(is)i(prin) +m(ted.)630 3056 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo) +m(wing)h(meanings:)630 3218 y Ft(-d)384 b Fu(Displa)m(y)32 +b(a)e(short)g(description)h(of)f(eac)m(h)i Fr(pattern)630 +3381 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h) +h Fr(pattern)e Fu(in)g(a)h(manpage-lik)m(e)h(format)630 +3543 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h +(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 3705 y Fu(The)f(return)f +(status)i(is)f(zero)h(unless)f(no)g(command)h(matc)m(hes)g +Fr(pattern)p Fu(.)150 3867 y Ft(let)870 4003 y(let)47 +b Fj(expression)e Ft([)p Fj(expression)g Ft(...)o(])630 +4139 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s +(e)d(p)s(erformed)g(on)i(shell)g(v)-5 b(ariables.)74 +b(Eac)m(h)630 4248 y Fr(expression)31 b Fu(is)g(ev)-5 +b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)h(b)s(elo)m(w)f +(in)f(Section)i(6.5)g([Shell)630 4358 y(Arithmetic],)51 +b(page)46 b(89.)87 b(If)45 b(the)g(last)h Fr(expression)g +Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 b Fu(returns)g(1;)630 +4468 y(otherwise)31 b(0)g(is)f(returned.)150 4630 y Ft(local)870 +4766 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p +Fj(value)p Ft(])e(...)630 4902 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m +(t,)g(a)f(lo)s(cal)h(v)-5 b(ariable)27 b(named)e Fr(name)31 +b Fu(is)26 b(created,)i(and)d(assigned)h Fr(v)-5 b(alue)p +Fu(.)630 5011 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f +(the)h(options)g(accepted)g(b)m(y)g Ft(declare)p Fu(.)59 +b Ft(local)36 b Fu(can)i(only)630 5121 y(b)s(e)j(used)h(within)f(a)i +(function;)48 b(it)42 b(mak)m(es)h(the)f(v)-5 b(ariable)43 +b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)630 +5230 y(restricted)h(to)f(that)h(function)e(and)g(its)i(c)m(hildren.)78 +b(If)42 b Fr(name)48 b Fu(is)43 b(`)p Ft(-)p Fu(',)j(the)d(set)h(of)f +(shell)630 5340 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f +(function)g(in)g(whic)m(h)g Ft(local)f Fu(is)h(in)m(v)m(ok)m(ed:)48 +b(shell)34 b(options)p eop end %%Page: 55 61 TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y Ft(\045\()p -Fj(datefmt)p Ft(\)T)1110 408 y Fu(Causes)29 b Ft(printf)e -Fu(to)j(output)f(the)g(date-time)i(string)e(resulting)h(from)e(using) -1110 518 y Fr(datefm)m(t)45 b Fu(as)d(a)g(format)g(string)g(for)g -Ft(strftime)p Fu(\(3\).)74 b(The)41 b(corresp)s(onding)1110 -628 y Fr(argumen)m(t)h Fu(is)e(an)g(in)m(teger)i(represen)m(ting)e(the) -g(n)m(um)m(b)s(er)f(of)h(seconds)g(since)1110 737 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 -847 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 -956 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 -1066 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g -Ft(printf)f Fu(b)s(eha)m(vior.)630 1230 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 1340 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 1450 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 -1587 y(The)31 b Fr(format)i Fu(is)f(reused)e(as)i(necessary)f(to)i -(consume)e(all)h(of)f(the)h Fr(argumen)m(ts)p Fu(.)44 -b(If)30 b(the)i Fr(for-)630 1696 y(mat)c Fu(requires)e(more)g -Fr(argumen)m(ts)k Fu(than)25 b(are)i(supplied,)e(the)h(extra)h(format)f -(sp)s(eci\014cations)630 1806 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 1915 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 -2080 y Ft(read)870 2217 y(read)47 b([-ers])f([-a)h Fj(aname)p -Ft(])f([-d)h Fj(delim)p Ft(])f([-i)h Fj(text)p Ft(])f([-n)h -Fj(nchars)p Ft(])1061 2326 y([-N)g Fj(nchars)p Ft(])f([-p)h -Fj(prompt)p Ft(])e([-t)i Fj(timeout)p Ft(])f([-u)h Fj(fd)p -Ft(])g([)p Fj(name)f Ft(...)o(])630 2463 y Fu(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 Fr(fd)i Fu(supplied)630 2573 y(as)23 -b(an)g(argumen)m(t)h(to)f(the)h Ft(-u)e Fu(option,)j(and)e(the)g -(\014rst)f(w)m(ord)h(is)g(assigned)g(to)h(the)f(\014rst)g -Fr(name)p Fu(,)630 2682 y(the)32 b(second)g(w)m(ord)f(to)i(the)f -(second)g Fr(name)p Fu(,)g(and)g(so)g(on,)g(with)f(lefto)m(v)m(er)j(w)m -(ords)e(and)f(their)630 2792 y(in)m(terv)m(ening)f(separators)g -(assigned)g(to)g(the)g(last)g Fr(name)p Fu(.)40 b(If)29 -b(there)h(are)g(few)m(er)f(w)m(ords)g(read)630 2902 y(from)36 -b(the)i(input)d(stream)j(than)e(names,)j(the)e(remaining)g(names)g(are) -g(assigned)h(empt)m(y)630 3011 y(v)-5 b(alues.)40 b(The)26 -b(c)m(haracters)j(in)d(the)i(v)-5 b(alue)27 b(of)g(the)g -Ft(IFS)f Fu(v)-5 b(ariable)28 b(are)f(used)g(to)g(split)g(the)h(line) -630 3121 y(in)m(to)36 b(w)m(ords)e(using)g(the)h(same)g(rules)f(the)h -(shell)g(uses)f(for)g(expansion)h(\(describ)s(ed)f(ab)s(o)m(v)m(e)630 -3230 y(in)j(Section)h(3.5.7)i([W)-8 b(ord)38 b(Splitting],)i(page)e -(29\).)63 b(The)37 b(bac)m(kslash)h(c)m(haracter)h(`)p -Ft(\\)p Fu(')e(ma)m(y)630 3340 y(b)s(e)28 b(used)g(to)i(remo)m(v)m(e)g -(an)m(y)f(sp)s(ecial)h(meaning)f(for)g(the)g(next)g(c)m(haracter)h -(read)f(and)f(for)h(line)630 3450 y(con)m(tin)m(uation.)42 -b(If)27 b(no)h(names)f(are)h(supplied,)g(the)f(line)h(read)g(is)g -(assigned)g(to)g(the)g(v)-5 b(ariable)630 3559 y Ft(REPLY)p -Fu(.)37 b(The)23 b(return)f(co)s(de)h(is)g(zero,)j(unless)d -(end-of-\014le)g(is)h(encoun)m(tered,)h Ft(read)d Fu(times)i(out)630 -3669 y(\(in)k(whic)m(h)f(case)i(the)e(return)g(co)s(de)h(is)f(greater)i -(than)f(128\),)i(a)e(v)-5 b(ariable)28 b(assignmen)m(t)g(error)630 -3778 y(\(suc)m(h)g(as)h(assigning)g(to)g(a)f(readonly)h(v)-5 -b(ariable\))29 b(o)s(ccurs,)g(or)f(an)g(in)m(v)-5 b(alid)29 -b(\014le)g(descriptor)f(is)630 3888 y(supplied)h(as)i(the)f(argumen)m -(t)h(to)g Ft(-u)p Fu(.)630 4025 y(Options,)f(if)h(supplied,)e(ha)m(v)m -(e)i(the)g(follo)m(wing)h(meanings:)630 4189 y Ft(-a)e -Fj(aname)114 b Fu(The)34 b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m -(tial)h(indices)e(of)g(the)g(arra)m(y)h(v)-5 b(ariable)1110 -4299 y Fr(aname)p Fu(,)29 b(starting)h(at)f(0.)40 b(All)29 -b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i(from)d Fr(aname)34 -b Fu(b)s(efore)1110 4408 y(the)d(assignmen)m(t.)41 b(Other)30 -b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630 -4573 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f -Fr(delim)g Fu(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110 -4682 y(rather)30 b(than)g(newline.)630 4847 y Ft(-e)384 -b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)f(Line)h(Editing],)50 -b(page)45 b(101\))i(is)1110 4956 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 -5066 y(line)31 b(editing)g(w)m(as)f(not)h(previously)f(activ)m(e\))j -(editing)e(settings.)630 5230 y Ft(-i)f Fj(text)162 b -Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g(the)g(line,)j -Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 5340 y(editing)31 -b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y(c)m(hanged)32 +b(using)e(the)i Ft(set)e Fu(builtin)h(inside)g(the)g(function)g(are)g +(restored)h(to)g(their)f(original)630 408 y(v)-5 b(alues)25 +b(when)e(the)i(function)f(returns.)37 b(The)24 b(return)f(status)i(is)f +(zero)i(unless)d Ft(local)g Fu(is)i(used)630 518 y(outside)k(a)f +(function,)h(an)f(in)m(v)-5 b(alid)29 b Fr(name)k Fu(is)28 +b(supplied,)g(or)g Fr(name)34 b Fu(is)28 b(a)h(readonly)f(v)-5 +b(ariable.)150 681 y Ft(logout)870 817 y(logout)46 b([)p +Fj(n)p Ft(])630 953 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i +(status)g(of)f Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 +1116 y Ft(mapfile)870 1252 y(mapfile)46 b([-d)h Fj(delim)p +Ft(])f([-n)h Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g +Fj(count)p Ft(])h([-t])f([-u)h Fj(fd)p Ft(])1061 1362 +y([-C)g Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p +Fj(array)p Ft(])630 1498 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e +(input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 +b Fr(arra)m(y)p Fu(,)i(or)630 1607 y(from)28 b(\014le)h(descriptor)f +Fr(fd)k Fu(if)c(the)h Ft(-u)f Fu(option)h(is)g(supplied.)39 +b(The)28 b(v)-5 b(ariable)29 b Ft(MAPFILE)e Fu(is)i(the)630 +1717 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30 +b(if)g(supplied,)g(ha)m(v)m(e)h(the)g(follo)m(wing)h(meanings:)630 +1880 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f +Fr(delim)g Fu(is)f(used)g(to)h(terminate)h(eac)m(h)g(input)d(line,)1110 +1989 y(rather)30 b(than)g(newline.)630 2152 y Ft(-n)384 +b Fu(Cop)m(y)30 b(at)h(most)g Fr(coun)m(t)i Fu(lines.)41 +b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h(lines)e(are)h(copied.)630 +2315 y Ft(-O)384 b Fu(Begin)31 b(assigning)g(to)g Fr(arra)m(y)39 +b Fu(at)31 b(index)f Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f +(is)g(0.)630 2477 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g +Fr(coun)m(t)j Fu(lines)e(read.)630 2640 y Ft(-t)384 b +Fu(Remo)m(v)m(e)32 b(a)f(trailing)g Fr(delim)g Fu(\(default)g +(newline\))f(from)g(eac)m(h)i(line)f(read.)630 2803 y +Ft(-u)384 b Fu(Read)31 b(lines)f(from)g(\014le)h(descriptor)f +Fr(fd)j Fu(instead)e(of)f(the)h(standard)e(input.)630 +2966 y Ft(-C)384 b Fu(Ev)-5 b(aluate)33 b Fr(callbac)m(k)39 +b Fu(eac)m(h)33 b(time)f Fr(quan)m(tum)p Fu(P)f(lines)h(are)g(read.)45 +b(The)31 b Ft(-c)g Fu(op-)1110 3075 y(tion)g(sp)s(eci\014es)f +Fr(quan)m(tum)p Fu(.)630 3238 y Ft(-c)384 b Fu(Sp)s(ecify)30 +b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f(read)h(b)s(et)m(w)m(een)g(eac)m +(h)g(call)h(to)f Fr(callbac)m(k)p Fu(.)630 3401 y(If)36 +b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g Ft(-c)p +Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60 b(When)36 +b Fr(callbac)m(k)44 b Fu(is)630 3510 y(ev)-5 b(aluated,)30 +b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g(arra)m(y)g +(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630 3620 y(the)39 +b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i(as)e +(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47 b +Fu(is)630 3729 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)g +(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630 +3866 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g +Ft(mapfile)c Fu(will)j(clear)g Fr(arra)m(y)34 b Fu(b)s(efore)24 +b(assigning)630 3975 y(to)31 b(it.)630 4111 y Ft(mapfile)41 +b Fu(returns)g(successfully)i(unless)e(an)i(in)m(v)-5 +b(alid)43 b(option)g(or)g(option)g(argumen)m(t)g(is)630 +4221 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5 +b(alid)31 b(or)g(unassignable,)f(or)h Fr(arra)m(y)38 +b Fu(is)31 b(not)f(an)h(indexed)e(arra)m(y)-8 b(.)150 +4384 y Ft(printf)870 4520 y(printf)46 b([-v)h Fj(var)p +Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 4656 +y Fu(W)-8 b(rite)27 b(the)g(formatted)f Fr(argumen)m(ts)k +Fu(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the) +630 4765 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g +(the)g(output)g(to)g(b)s(e)f(assigned)h(to)h(the)f(v)-5 +b(ariable)39 b Fr(v)-5 b(ar)630 4875 y Fu(rather)30 b(than)g(b)s(eing)g +(prin)m(ted)g(to)h(the)g(standard)e(output.)630 5011 +y(The)36 b Fr(format)i Fu(is)f(a)f(c)m(haracter)i(string)e(whic)m(h)g +(con)m(tains)i(three)e(t)m(yp)s(es)g(of)h(ob)5 b(jects:)53 +b(plain)630 5121 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 +5230 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 5340 y(sp)s +(eci\014cations,)j(eac)m(h)e(of)g(whic)m(h)f(causes)g(prin)m(ting)g(of) +h(the)f(next)h(successiv)m(e)g Fr(argumen)m(t)p Fu(.)p +eop end %%Page: 56 62 TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y Ft(-n)30 -b Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j(reading)f -Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m(aiting)1110 -408 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 518 y Fr(nc)m(hars)34 -b Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g(delimiter.)630 -673 y Ft(-N)g Fj(nchars)66 b Ft(read)39 b Fu(returns)f(after)j(reading) -e(exactly)j Fr(nc)m(hars)h Fu(c)m(haracters)f(rather)d(than)1110 -783 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 892 y Ft(read)f -Fu(times)i(out.)43 b(Delimiter)33 b(c)m(haracters)f(encoun)m(tered)g -(in)f(the)g(input)g(are)1110 1002 y(not)g(treated)h(sp)s(ecially)f(and) -f(do)h(not)g(cause)g Ft(read)e Fu(to)j(return)d(un)m(til)i -Fr(nc)m(hars)1110 1112 y Fu(c)m(haracters)h(are)f(read.)630 -1267 y Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p -Fu(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to) -1110 1377 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 1486 y(from)30 -b(a)h(terminal.)630 1641 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f -(giv)m(en,)k(bac)m(kslash)d(do)s(es)f(not)h(act)h(as)f(an)f(escap)s(e)h -(c)m(haracter.)1110 1751 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 -1861 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 2016 y Ft(-s)384 -b Fu(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i(coming)g(from)f -(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 2125 -y(ec)m(ho)s(ed.)630 2281 y Ft(-t)i Fj(timeout)1110 2390 -y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f(failure)i -(if)g(a)g(complete)h(line)f(of)1110 2500 y(input)26 b(\(or)h(a)g(sp)s -(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h(is)f(not)g(read)g -(within)f Fr(time-)1110 2609 y(out)37 b Fu(seconds.)53 -b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n)m(um)m(b)s(er)d -(with)h(a)h(fractional)1110 2719 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 2829 y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h -(terminal,)i(pip)s(e,)e(or)g(other)f(sp)s(ecial)i(\014le;)1110 -2938 y(it)31 b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g -(\014les.)42 b(If)30 b Ft(read)g Fu(times)h(out,)1110 -3048 y Ft(read)d Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in) -m(to)h(the)e(sp)s(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p -Fu(.)1110 3157 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e -Fu(returns)f(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110 -3267 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 -3377 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46 -b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 3486 -y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 3641 -y Ft(-u)g Fj(fd)258 b Fu(Read)31 b(input)e(from)h(\014le)g(descriptor)h -Fr(fd)p Fu(.)150 3797 y Ft(readarray)870 3906 y(readarray)45 -b([-n)i Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)h -Fj(count)p Ft(])f([-t])h([-u)g Fj(fd)p Ft(])1061 4016 -y([-C)g Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p -Fj(array)p Ft(])630 4148 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e -(input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 -b Fr(arra)m(y)p Fu(,)i(or)630 4258 y(from)30 b(\014le)g(descriptor)h -Fr(fd)i Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630 -4390 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 4545 -y Ft(source)870 4678 y(source)46 b Fj(filename)630 4810 -y Fu(A)30 b(synon)m(ym)g(for)g Ft(.)g Fu(\(see)i(Section)f(4.1)g -([Bourne)g(Shell)f(Builtins],)h(page)g(41\).)150 4966 -y Ft(type)870 5098 y(type)47 b([-afptP])e([)p Fj(name)i -Ft(...)o(])630 5230 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p -Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if) -g(used)f(as)i(a)f(command)630 5340 y(name.)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y(In)24 +b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e Fu(formats,)27 +b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630 +408 y(extensions:)630 596 y Ft(\045b)384 b Fu(Causes)38 +b Ft(printf)f Fu(to)j(expand)e(bac)m(kslash)h(escap)s(e)g(sequences)g +(in)f(the)h(cor-)1110 706 y(resp)s(onding)31 b Fr(argumen)m(t)j +Fu(in)e(the)h(same)f(w)m(a)m(y)h(as)g Ft(echo)c(-e)j +Fu(\(see)h(Section)g(4.2)1110 816 y([Bash)e(Builtins],)g(page)g(49\).) +630 1003 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e +Fu(to)i(output)g(the)g(corresp)s(onding)f Fr(argumen)m(t)j +Fu(in)d(a)i(format)1110 1113 y(that)e(can)g(b)s(e)e(reused)h(as)h +(shell)f(input.)630 1301 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110 +1410 y Fu(Causes)f Ft(printf)e Fu(to)j(output)f(the)g(date-time)i +(string)e(resulting)h(from)e(using)1110 1520 y Fr(datefm)m(t)45 +b Fu(as)d(a)g(format)g(string)g(for)g Ft(strftime)p Fu(\(3\).)74 +b(The)41 b(corresp)s(onding)1110 1630 y Fr(argumen)m(t)h +Fu(is)e(an)g(in)m(teger)i(represen)m(ting)e(the)g(n)m(um)m(b)s(er)f(of) +h(seconds)g(since)1110 1739 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 +1849 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 +1958 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 +2068 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g +Ft(printf)f Fu(b)s(eha)m(vior.)630 2256 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 2365 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 2475 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 +2624 y(The)31 b Fr(format)i Fu(is)f(reused)e(as)i(necessary)f(to)i +(consume)e(all)h(of)f(the)h Fr(argumen)m(ts)p Fu(.)44 +b(If)30 b(the)i Fr(for-)630 2733 y(mat)c Fu(requires)e(more)g +Fr(argumen)m(ts)k Fu(than)25 b(are)i(supplied,)e(the)h(extra)h(format)f +(sp)s(eci\014cations)630 2843 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 2952 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 +3140 y Ft(read)870 3289 y(read)47 b([-ers])f([-a)h Fj(aname)p +Ft(])f([-d)h Fj(delim)p Ft(])f([-i)h Fj(text)p Ft(])f([-n)h +Fj(nchars)p Ft(])1061 3399 y([-N)g Fj(nchars)p Ft(])f([-p)h +Fj(prompt)p Ft(])e([-t)i Fj(timeout)p Ft(])f([-u)h Fj(fd)p +Ft(])g([)p Fj(name)f Ft(...)o(])630 3547 y Fu(One)38 +b(line)g(is)g(read)g(from)g(the)g(standard)f(input,)j(or)e(from)f(the)i +(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 3657 y(plied)34 +b(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(-u)g Fu(option,)i(split)f(in)m +(to)g(w)m(ords)f(as)g(describ)s(ed)g(ab)s(o)m(v)m(e)h(in)630 +3767 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(30,)j +(and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)630 +3876 y(\014rst)32 b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the) +g(second)g Fr(name)p Fu(,)g(and)f(so)h(on.)47 b(If)32 +b(there)h(are)g(more)630 3986 y(w)m(ords)39 b(than)g(names,)j(the)e +(remaining)f(w)m(ords)g(and)g(their)h(in)m(terv)m(ening)g(delimiters)h +(are)630 4095 y(assigned)29 b(to)h(the)g(last)g Fr(name)p +Fu(.)40 b(If)29 b(there)g(are)h(few)m(er)f(w)m(ords)g(read)g(from)g +(the)g(input)g(stream)630 4205 y(than)35 b(names,)i(the)e(remaining)h +(names)f(are)h(assigned)f(empt)m(y)h(v)-5 b(alues.)56 +b(The)34 b(c)m(haracters)630 4315 y(in)e(the)h(v)-5 b(alue)33 +b(of)g(the)g Ft(IFS)f Fu(v)-5 b(ariable)33 b(are)h(used)d(to)j(split)f +(the)g(line)g(in)m(to)g(w)m(ords)g(using)f(the)630 4424 +y(same)d(rules)f(the)g(shell)h(uses)f(for)g(expansion)g(\(describ)s(ed) +g(ab)s(o)m(v)m(e)i(in)e(Section)h(3.5.7)h([W)-8 b(ord)630 +4534 y(Splitting],)38 b(page)f(30\).)60 b(The)35 b(bac)m(kslash)i(c)m +(haracter)h(`)p Ft(\\)p Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m +(e)h(an)m(y)630 4643 y(sp)s(ecial)i(meaning)g(for)f(the)g(next)h(c)m +(haracter)h(read)e(and)g(for)g(line)h(con)m(tin)m(uation.)69 +b(If)39 b(no)630 4753 y(names)c(are)h(supplied,)f(the)h(line)g(read)f +(is)g(assigned)h(to)g(the)f(v)-5 b(ariable)36 b Ft(REPLY)p +Fu(.)54 b(The)35 b(exit)630 4862 y(status)f(is)f(zero,)i(unless)e +(end-of-\014le)h(is)f(encoun)m(tered,)i Ft(read)e Fu(times)h(out)f +(\(in)h(whic)m(h)f(case)630 4972 y(the)g(status)h(is)f(greater)i(than)e +(128\),)j(a)e(v)-5 b(ariable)34 b(assignmen)m(t)g(error)f(\(suc)m(h)g +(as)g(assigning)630 5082 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 +5191 y(argumen)m(t)31 b(to)g Ft(-u)p Fu(.)630 5340 y(Options,)f(if)h +(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)p +eop end %%Page: 57 63 TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y(If)41 -b(the)g Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h -(single)g(w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p -Fu(',)630 408 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p -Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h -Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)630 -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 -Fr(name)40 b Fu(is)35 b(not)630 628 y(found,)29 b(then)h(nothing)h(is)f -(prin)m(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630 -765 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h -Ft(type)e Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g -(that)h(w)m(ould)630 874 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g -Ft(-t)g Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630 -1011 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g -(eac)m(h)g Fr(name)p Fu(,)g(ev)m(en)g(if)g Ft(-t)f Fu(w)m(ould)g(not)h -(return)630 1121 y(`)p Ft(file)p Fu('.)630 1258 y(If)f(a)g(command)g -(is)g(hashed,)f Ft(-p)h Fu(and)f Ft(-P)g Fu(prin)m(t)h(the)g(hashed)f -(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 1367 -y(sarily)h(the)f(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g -Ft($PATH)p Fu(.)630 1504 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g -(used,)h Ft(type)e Fu(returns)f(all)j(of)f(the)g(places)h(that)f(con)m -(tain)i(an)d(executable)630 1614 y(named)32 b Fr(\014le)p -Fu(.)49 b(This)32 b(includes)h(aliases)h(and)e(functions,)i(if)f(and)f -(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 1724 y(not)d(also)g -(used.)630 1861 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e -Ft(type)g Fu(do)s(es)h(not)h(attempt)g(to)g(\014nd)d(shell)j -(functions,)f(as)g(with)630 1970 y(the)h Ft(command)d -Fu(builtin.)630 2107 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h -(of)f(the)h Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h -(not)630 2217 y(found.)150 2381 y Ft(typeset)870 2518 -y(typeset)46 b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p -Ft([=)p Fj(value)p Ft(])d(...)o(])630 2655 y Fu(The)31 -b Ft(typeset)e Fu(command)i(is)g(supplied)f(for)h(compatibilit)m(y)i -(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 2765 -y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f Fu(builtin)h(command.)150 -2929 y Ft(ulimit)870 3066 y(ulimit)46 b([-abcdefilmnpqrstuvxHST])41 -b([)p Fj(limit)p Ft(])630 3203 y(ulimit)25 b Fu(pro)m(vides)h(con)m -(trol)i(o)m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29 -b(to)e(pro)s(cesses)f(started)h(b)m(y)g(the)630 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 Ft(-S)384 b Fu(Change)30 -b(and)g(rep)s(ort)g(the)g(soft)h(limit)g(asso)s(ciated)h(with)e(a)h -(resource.)630 3751 y Ft(-H)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the) -g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h(resource.)630 -3915 y Ft(-a)384 b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s -(orted.)630 4080 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m -(et)i(bu\013er)e(size.)630 4244 y Ft(-c)384 b Fu(The)30 -b(maxim)m(um)g(size)h(of)g(core)g(\014les)f(created.)630 -4408 y Ft(-d)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(a)g(pro)s -(cess's)f(data)h(segmen)m(t.)630 4573 y Ft(-e)384 b Fu(The)30 -b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y)f(\()p Ft(")p -Fu(nice)p Ft(")p Fu(\).)630 4737 y Ft(-f)384 b Fu(The)30 -b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the)g(shell)h -(and)f(its)h(c)m(hildren.)630 4902 y Ft(-i)384 b Fu(The)30 -b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s(ending)e(signals.)630 -5066 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s -(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 5230 -y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g -(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 5340 -y(limit\).)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y Ft(-a)30 +b Fj(aname)114 b Fu(The)34 b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m +(tial)h(indices)e(of)g(the)g(arra)m(y)h(v)-5 b(ariable)1110 +408 y Fr(aname)p Fu(,)29 b(starting)h(at)f(0.)40 b(All)29 +b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i(from)d Fr(aname)34 +b Fu(b)s(efore)1110 518 y(the)d(assignmen)m(t.)41 b(Other)30 +b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630 +667 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f +Fr(delim)g Fu(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110 +777 y(rather)30 b(than)g(newline.)630 927 y Ft(-e)384 +b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)f(Line)h(Editing],)50 +b(page)45 b(104\))i(is)1110 1036 y(used)37 b(to)i(obtain)g(the)f(line.) +65 b(Readline)39 b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110 +1146 y(line)31 b(editing)g(w)m(as)f(not)h(previously)f(activ)m(e\))j +(editing)e(settings.)630 1295 y Ft(-i)f Fj(text)162 b +Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g(the)g(line,)j +Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110 1405 y(editing)31 +b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 1554 +y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j(reading)f +Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m(aiting)1110 +1664 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f(honors)g(a)h +(delimiter)g(if)f(few)m(er)h(than)1110 1773 y Fr(nc)m(hars)d +Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g(delimiter.)630 +1923 y Ft(-N)g Fj(nchars)66 b Ft(read)39 b Fu(returns)f(after)j +(reading)e(exactly)j Fr(nc)m(hars)h Fu(c)m(haracters)f(rather)d(than) +1110 2032 y(w)m(aiting)32 b(for)f(a)g(complete)i(line)e(of)g(input,)g +(unless)f(EOF)h(is)g(encoun)m(tered)g(or)1110 2142 y +Ft(read)f Fu(times)i(out.)43 b(Delimiter)33 b(c)m(haracters)f(encoun)m +(tered)g(in)f(the)g(input)g(are)1110 2252 y(not)g(treated)h(sp)s +(ecially)f(and)f(do)h(not)g(cause)g Ft(read)e Fu(to)j(return)d(un)m +(til)i Fr(nc)m(hars)1110 2361 y Fu(c)m(haracters)26 b(are)f(read.)38 +b(The)24 b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e +Ft(IFS)p Fu(;)1110 2471 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5 +b(ariable)23 b(is)f(assigned)g(exactly)i(the)e(c)m(haracters)i(read) +1110 2580 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g +(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 2730 y +Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p +Fu(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to) +1110 2839 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m +(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 2949 y(from)30 +b(a)h(terminal.)630 3098 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f +(giv)m(en,)k(bac)m(kslash)d(do)s(es)f(not)h(act)h(as)f(an)f(escap)s(e)h +(c)m(haracter.)1110 3208 y(The)30 b(bac)m(kslash)i(is)f(considered)g +(to)h(b)s(e)e(part)h(of)g(the)g(line.)43 b(In)30 b(particular,)i(a)1110 +3318 y(bac)m(kslash-newline)f(pair)f(ma)m(y)h(not)g(b)s(e)f(used)f(as)i +(a)g(line)f(con)m(tin)m(uation.)630 3467 y Ft(-s)384 +b Fu(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i(coming)g(from)f +(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110 3577 +y(ec)m(ho)s(ed.)630 3726 y Ft(-t)i Fj(timeout)1110 3836 +y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f(failure)i +(if)g(a)g(complete)h(line)f(of)1110 3945 y(input)26 b(\(or)h(a)g(sp)s +(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h(is)f(not)g(read)g +(within)f Fr(time-)1110 4055 y(out)37 b Fu(seconds.)53 +b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n)m(um)m(b)s(er)d +(with)h(a)h(fractional)1110 4164 y(p)s(ortion)29 b(follo)m(wing)h(the)f +(decimal)h(p)s(oin)m(t.)40 b(This)29 b(option)g(is)g(only)g(e\013ectiv) +m(e)j(if)1110 4274 y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h +(terminal,)i(pip)s(e,)e(or)g(other)f(sp)s(ecial)i(\014le;)1110 +4384 y(it)31 b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g +(\014les.)42 b(If)30 b Ft(read)g Fu(times)h(out,)1110 +4493 y Ft(read)d Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in) +m(to)h(the)e(sp)s(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p +Fu(.)1110 4603 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e +Fu(returns)f(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110 +4712 y(and)30 b(data.)44 b(The)30 b(exit)i(status)f(is)g(0)g(if)g +(input)f(is)h(a)m(v)-5 b(ailable)34 b(on)c(the)i(sp)s(eci\014ed)1110 +4822 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46 +b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 4932 +y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 5081 +y Ft(-u)g Fj(fd)258 b Fu(Read)31 b(input)e(from)h(\014le)g(descriptor)h +Fr(fd)p Fu(.)150 5230 y Ft(readarray)870 5340 y(readarray)45 +b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p Ft(])f([-O)h +Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])f([-t])h([-u)g +Fj(fd)p Ft(])p eop end %%Page: 58 64 TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(-n)384 -b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s(er)e(of)i(op)s(en)f(\014le)h -(descriptors)g(\(most)g(systems)g(do)1110 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 -567 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630 -726 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m -(ytes)g(in)f(POSIX)f(message)j(queues.)630 885 y Ft(-r)384 -b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f(priorit)m(y)-8 -b(.)630 1043 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.) -630 1202 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g -(time)h(in)f(seconds.)630 1361 y Ft(-u)384 b Fu(The)30 -b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pro)s(cesses)f(a)m(v)-5 -b(ailable)33 b(to)e(a)f(single)i(user.)630 1520 y Ft(-v)384 -b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f(memory)g(a)m(v)-5 -b(ailable)44 b(to)e(the)g(shell,)1110 1629 y(and,)30 -b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630 -1788 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i -(\014le)f(lo)s(c)m(ks.)630 1947 y Ft(-T)384 b Fu(The)30 -b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(threads.)630 2105 -y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h -Ft(-a)f Fu(option)h(is)f(not)h(used,)h Fr(limit)h Fu(is)e(the)g(new)f -(v)-5 b(alue)37 b(of)g(the)630 2215 y(sp)s(eci\014ed)c(resource.)51 -b(The)34 b(sp)s(ecial)g Fr(limit)j Fu(v)-5 b(alues)34 -b Ft(hard)p Fu(,)g Ft(soft)p Fu(,)g(and)f Ft(unlimited)e -Fu(stand)630 2325 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 2434 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b) -m(y)f(a)h(non-ro)s(ot)g(user)f(once)i(it)f(is)g(set;)k(a)c(soft)g -(limit)630 2544 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5 -b(alue)40 b(of)g(the)h(hard)e(limit.)70 b(Otherwise,)43 -b(the)d(curren)m(t)630 2653 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit) -h(for)e(the)h(sp)s(eci\014ed)g(resource)g(is)g(prin)m(ted,)g(unless)f -(the)h Ft(-H)f Fu(option)630 2763 y(is)h(supplied.)39 -b(When)29 b(setting)h(new)f(limits,)h(if)f(neither)g -Ft(-H)g Fu(nor)f Ft(-S)h Fu(is)g(supplied,)f(b)s(oth)h(the)630 -2872 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31 -b(no)i(option)f(is)h(giv)m(en,)h(then)e Ft(-f)g Fu(is)g(assumed.)46 -b(V)-8 b(alues)630 2982 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e -(except)g(for)f Ft(-t)p Fu(,)g(whic)m(h)g(is)g(in)g(seconds;)h -Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 3092 y(units)g(of)g(512-b)m(yte)j -(blo)s(c)m(ks;)e(and)f Ft(-T)p Fu(,)g Ft(-b)p Fu(,)g -Ft(-n)g Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)g(are)h(unscaled)f(v)-5 -b(alues.)630 3226 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 3335 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f -(limit.)150 3494 y Ft(unalias)870 3628 y(unalias)46 b([-a])g([)p -Fj(name)h Ft(...)g(])630 3762 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f -Fr(name)k Fu(from)39 b(the)i(list)f(of)g(aliases.)71 -b(If)40 b Ft(-a)f Fu(is)h(supplied,)h(all)g(aliases)h(are)630 -3872 y(remo)m(v)m(ed.)g(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section) -i(6.6)f([Aliases],)h(page)f(88.)150 4104 y Fs(4.3)68 -b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 4328 y Fk(4.3.1)63 -b(The)41 b(Set)g(Builtin)150 4475 y Fu(This)35 b(builtin)h(is)g(so)g -(complicated)i(that)f(it)f(deserv)m(es)h(its)f(o)m(wn)g(section.)59 -b Ft(set)35 b Fu(allo)m(ws)j(y)m(ou)e(to)h(c)m(hange)150 -4584 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 4694 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150 -4852 y Ft(set)870 4987 y(set)47 b([--abefhkmnptuvxBCEHPT])41 -b([-o)47 b Fj(option-name)p Ft(])e([)p Fj(argument)g -Ft(...)o(])870 5096 y(set)i([+abefhkmnptuvxBCEHPT])42 -b([+o)47 b Fj(option-name)p Ft(])d([)p Fj(argument)h -Ft(...)o(])630 5230 y Fu(If)22 b(no)h(options)g(or)g(argumen)m(ts)g -(are)g(supplied,)g Ft(set)f Fu(displa)m(ys)g(the)h(names)g(and)f(v)-5 -b(alues)23 b(of)g(all)630 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 +b(Shell)30 b(Builtin)h(Commands)2069 b(58)1061 299 y +Ft([-C)47 b Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p +Fj(array)p Ft(])630 433 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e +(input)g(in)m(to)j(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 +b Fr(arra)m(y)p Fu(,)i(or)630 543 y(from)30 b(\014le)g(descriptor)h +Fr(fd)i Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630 +677 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 836 +y Ft(source)870 971 y(source)46 b Fj(filename)630 1105 +y Fu(A)30 b(synon)m(ym)g(for)g Ft(.)g Fu(\(see)i(Section)f(4.1)g +([Bourne)g(Shell)f(Builtins],)h(page)g(42\).)150 1264 +y Ft(type)870 1398 y(type)47 b([-afptP])e([)p Fj(name)i +Ft(...)o(])630 1533 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p +Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if) +g(used)f(as)i(a)f(command)630 1642 y(name.)630 1777 y(If)g(the)g +Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h(single)g +(w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p +Fu(',)630 1886 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p +Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h +Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)630 +1996 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g +(w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 b(If)34 b(the)h +Fr(name)40 b Fu(is)35 b(not)630 2105 y(found,)29 b(then)h(nothing)h(is) +f(prin)m(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630 +2240 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h +Ft(type)e Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g +(that)h(w)m(ould)630 2349 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g +Ft(-t)g Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630 +2484 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g +(eac)m(h)g Fr(name)p Fu(,)g(ev)m(en)g(if)g Ft(-t)f Fu(w)m(ould)g(not)h +(return)630 2593 y(`)p Ft(file)p Fu('.)630 2728 y(If)f(a)g(command)g +(is)g(hashed,)f Ft(-p)h Fu(and)f Ft(-P)g Fu(prin)m(t)h(the)g(hashed)f +(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 2837 +y(sarily)h(the)f(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g +Ft($PATH)p Fu(.)630 2971 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g +(used,)h Ft(type)e Fu(returns)f(all)j(of)f(the)g(places)h(that)f(con)m +(tain)i(an)d(executable)630 3081 y(named)32 b Fr(\014le)p +Fu(.)49 b(This)32 b(includes)h(aliases)h(and)e(functions,)i(if)f(and)f +(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 3191 y(not)d(also)g +(used.)630 3325 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e +Ft(type)g Fu(do)s(es)h(not)h(attempt)g(to)g(\014nd)d(shell)j +(functions,)f(as)g(with)630 3435 y(the)h Ft(command)d +Fu(builtin.)630 3569 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h +(of)f(the)h Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h +(not)630 3678 y(found.)150 3838 y Ft(typeset)870 3972 +y(typeset)46 b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p +Ft([=)p Fj(value)p Ft(])d(...)o(])630 4106 y Fu(The)31 +b Ft(typeset)e Fu(command)i(is)g(supplied)f(for)h(compatibilit)m(y)i +(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 4216 +y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f Fu(builtin)h(command.)150 +4375 y Ft(ulimit)870 4509 y(ulimit)46 b([-HSabcdefiklmnpqrstuvxPT)o(])c +([)p Fj(limit)p Ft(])630 4644 y(ulimit)25 b Fu(pro)m(vides)h(con)m +(trol)i(o)m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29 +b(to)e(pro)s(cesses)f(started)h(b)m(y)g(the)630 4753 +y(shell,)i(on)f(systems)g(that)h(allo)m(w)h(suc)m(h)e(con)m(trol.)41 +b(If)28 b(an)g(option)h(is)f(giv)m(en,)i(it)e(is)h(in)m(terpreted)630 +4863 y(as)i(follo)m(ws:)630 5022 y Ft(-S)384 b Fu(Change)30 +b(and)g(rep)s(ort)g(the)g(soft)h(limit)g(asso)s(ciated)h(with)e(a)h +(resource.)630 5181 y Ft(-H)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the) +g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h(resource.)630 +5340 y Ft(-a)384 b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s +(orted.)p eop end %%Page: 59 65 TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y(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 Fm(posix)g Fu(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 Ft(-a)384 b Fu(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 Ft(-b)384 b Fu(Cause)44 b(the)h(status)g(of)f -(terminated)h(bac)m(kground)g(jobs)f(to)h(b)s(e)f(rep)s(orted)1110 -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 Ft(-e)384 -b Fu(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 Ft(while)e Fu(or)h -Ft(until)e Fu(k)m(eyw)m(ord,)1110 2188 y(part)61 b(of)g(the)g(test)h -(in)e(an)h Ft(if)f Fu(statemen)m(t,)71 b(part)61 b(of)g(an)m(y)g -(command)1110 2297 y(executed)50 b(in)e(a)h Ft(&&)f Fu(or)h -Ft(||)f Fu(list)h(except)g(the)g(command)g(follo)m(wing)h(the)1110 -2407 y(\014nal)37 b Ft(&&)g Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f -(in)g(a)g(pip)s(eline)g(but)g(the)g(last,)j(or)e(if)f(the)1110 -2516 y(command's)c(return)f(status)h(is)g(b)s(eing)g(in)m(v)m(erted)h -(with)e Ft(!)p Fu(.)48 b(If)33 b(a)g(comp)s(ound)1110 -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)k(command)g(failed)g(while)g -Ft(-e)f Fu(w)m(as)i(b)s(eing)e(ignored,)j(the)e(shell)g(do)s(es)g(not) -1110 2845 y(exit.)42 b(A)30 b(trap)g(on)h Ft(ERR)p Fu(,)e(if)i(set,)g -(is)f(executed)i(b)s(efore)e(the)g(shell)h(exits.)1110 -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)31 b Ft(-e)g Fu(is)g(b)s(eing)g -(ignored,)h(none)f(of)h(the)f(commands)g(executed)h(within)1110 -3651 y(the)j(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g(will) -h(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 3761 y Ft(-e)25 -b Fu(setting,)j(ev)m(en)e(if)g Ft(-e)f Fu(is)h(set)g(and)f(a)h(command) -g(returns)e(a)i(failure)g(status.)1110 3870 y(If)32 b(a)i(comp)s(ound)d -(command)i(or)g(shell)g(function)f(sets)i Ft(-e)e Fu(while)h(executing) -1110 3980 y(in)40 b(a)h(con)m(text)i(where)d Ft(-e)g -Fu(is)h(ignored,)j(that)d(setting)h(will)f(not)g(ha)m(v)m(e)h(an)m(y) -1110 4089 y(e\013ect)g(un)m(til)e(the)h(comp)s(ound)e(command)h(or)g -(the)g(command)g(con)m(taining)1110 4199 y(the)31 b(function)f(call)h -(completes.)630 4347 y Ft(-f)384 b Fu(Disable)31 b(\014lename)g -(expansion)f(\(globbing\).)630 4495 y Ft(-h)384 b Fu(Lo)s(cate)33 -b(and)e(remem)m(b)s(er)h(\(hash\))g(commands)f(as)h(they)g(are)g(lo)s -(ok)m(ed)h(up)e(for)1110 4605 y(execution.)42 b(This)29 -b(option)i(is)g(enabled)f(b)m(y)g(default.)630 4753 y -Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g -(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110 -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 Ft(-m)384 b Fu(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 +b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y Ft(-b)384 +b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i(bu\013er)e(size.)630 +462 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(core)g(\014les)f +(created.)630 625 y Ft(-d)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(a) +g(pro)s(cess's)f(data)h(segmen)m(t.)630 788 y Ft(-e)384 +b Fu(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y)f(\()p +Ft(")p Fu(nice)p Ft(")p Fu(\).)630 951 y Ft(-f)384 b +Fu(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the)g +(shell)h(and)f(its)h(c)m(hildren.)630 1114 y Ft(-i)384 +b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s(ending)e +(signals.)630 1277 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s +(er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)630 +1440 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s +(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 1603 +y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g +(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 1713 +y(limit\).)630 1876 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s +(er)e(of)i(op)s(en)f(\014le)h(descriptors)g(\(most)g(systems)g(do)1110 +1985 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).) +630 2149 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630 +2312 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m +(ytes)g(in)f(POSIX)f(message)j(queues.)630 2475 y Ft(-r)384 +b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f(priorit)m(y)-8 +b(.)630 2638 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.) +630 2801 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g +(time)h(in)f(seconds.)630 2964 y Ft(-u)384 b Fu(The)30 +b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pro)s(cesses)f(a)m(v)-5 +b(ailable)33 b(to)e(a)f(single)i(user.)630 3127 y Ft(-v)384 +b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f(memory)g(a)m(v)-5 +b(ailable)44 b(to)e(the)g(shell,)1110 3236 y(and,)30 +b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630 +3399 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(\014le)f(lo)s(c)m(ks.)630 3562 y Ft(-P)384 b Fu(The)30 +b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630 +3726 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +(threads.)630 3889 y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h +Ft(-a)f Fu(option)h(is)f(not)h(used,)h Fr(limit)h Fu(is)e(the)g(new)f +(v)-5 b(alue)37 b(of)g(the)630 3998 y(sp)s(eci\014ed)c(resource.)51 +b(The)34 b(sp)s(ecial)g Fr(limit)j Fu(v)-5 b(alues)34 +b Ft(hard)p Fu(,)g Ft(soft)p Fu(,)g(and)f Ft(unlimited)e +Fu(stand)630 4108 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g +(curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,)h(resp)s(ectiv)m(ely)-8 +b(.)48 b(A)630 4217 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b) +m(y)f(a)h(non-ro)s(ot)g(user)f(once)i(it)f(is)g(set;)k(a)c(soft)g +(limit)630 4327 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5 +b(alue)40 b(of)g(the)h(hard)e(limit.)70 b(Otherwise,)43 +b(the)d(curren)m(t)630 4437 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit) +h(for)e(the)h(sp)s(eci\014ed)g(resource)g(is)g(prin)m(ted,)g(unless)f +(the)h Ft(-H)f Fu(option)630 4546 y(is)h(supplied.)39 +b(When)29 b(setting)h(new)f(limits,)h(if)f(neither)g +Ft(-H)g Fu(nor)f Ft(-S)h Fu(is)g(supplied,)f(b)s(oth)h(the)630 +4656 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31 +b(no)i(option)f(is)h(giv)m(en,)h(then)e Ft(-f)g Fu(is)g(assumed.)46 +b(V)-8 b(alues)630 4765 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e +(except)g(for)f Ft(-t)p Fu(,)g(whic)m(h)g(is)g(in)g(seconds;)h +Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 4875 y(units)h(of)g(512-b)m(yte)j +(blo)s(c)m(ks;)e Ft(-P)p Fu(,)f Ft(-T)p Fu(,)h Ft(-b)p +Fu(,)f Ft(-k)p Fu(,)g Ft(-n)g Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)h(are)f +(unscaled)g(v)-5 b(alues;)630 4984 y(and,)31 b(when)f(in)g +Fm(posix)g Fu(Mo)s(de)h(\(see)h(Section)g(6.11)g([Bash)g(POSIX)e(Mo)s +(de],)h(page)h(96\),)h Ft(-c)630 5094 y Fu(and)d Ft(-f)p +Fu(,)g(whic)m(h)g(are)h(in)f(512-b)m(yte)i(incremen)m(ts.)630 +5230 y(The)i(return)g(status)h(is)f(zero)i(unless)e(an)g(in)m(v)-5 +b(alid)36 b(option)f(or)f(argumen)m(t)i(is)e(supplied,)h(or)630 +5340 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f(limit.)p +eop end %%Page: 60 66 TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(60)630 299 y Ft(-n)384 -b Fu(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 Ft(-o)30 b Fj(option-name)1110 777 y Fu(Set)h(the)f(option)h -(corresp)s(onding)e(to)i Fr(option-name)5 b Fu(:)1110 -927 y Ft(allexport)1590 1036 y Fu(Same)30 b(as)h Ft(-a)p -Fu(.)1110 1186 y Ft(braceexpand)1590 1295 y Fu(Same)f(as)h -Ft(-B)p Fu(.)1110 1445 y Ft(emacs)240 b Fu(Use)25 b(an)f -Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m(terface)h(\(see)g -(Chapter)e(8)1590 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 Ft(read)f(-e)p Fu(.)1110 1813 -y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p Fu(.)1110 -1963 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p Fu(.)1110 -2112 y Ft(functrace)1590 2222 y Fu(Same)f(as)h Ft(-T)p -Fu(.)1110 2371 y Ft(hashall)144 b Fu(Same)30 b(as)h Ft(-h)p -Fu(.)1110 2521 y Ft(histexpand)1590 2630 y Fu(Same)f(as)h -Ft(-H)p Fu(.)1110 2780 y Ft(history)144 b Fu(Enable)39 -b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h(Section)h(9.1) -1590 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 Ft(ignoreeof)1590 -3258 y Fu(An)d(in)m(teractiv)m(e)j(shell)e(will)g(not)f(exit)h(up)s(on) -e(reading)i(EOF.)1110 3407 y Ft(keyword)144 b Fu(Same)30 -b(as)h Ft(-k)p Fu(.)1110 3557 y Ft(monitor)144 b Fu(Same)30 -b(as)h Ft(-m)p Fu(.)1110 3706 y Ft(noclobber)1590 3816 -y Fu(Same)f(as)h Ft(-C)p Fu(.)1110 3965 y Ft(noexec)192 -b Fu(Same)30 b(as)h Ft(-n)p Fu(.)1110 4115 y Ft(noglob)192 -b Fu(Same)30 b(as)h Ft(-f)p Fu(.)1110 4264 y Ft(nolog)240 -b Fu(Curren)m(tly)30 b(ignored.)1110 4413 y Ft(notify)192 -b Fu(Same)30 b(as)h Ft(-b)p Fu(.)1110 4563 y Ft(nounset)144 -b Fu(Same)30 b(as)h Ft(-u)p Fu(.)1110 4712 y Ft(onecmd)192 -b Fu(Same)30 b(as)h Ft(-t)p Fu(.)1110 4862 y Ft(physical)96 -b Fu(Same)30 b(as)h Ft(-P)p Fu(.)1110 5011 y Ft(pipefail)96 -b Fu(If)44 b(set,)k(the)d(return)e(v)-5 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 +b(Shell)30 b(Builtin)h(Commands)2069 b(60)150 299 y Ft(unalias)870 +428 y(unalias)46 b([-a])g([)p Fj(name)h Ft(...)g(])630 +558 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f Fr(name)k Fu(from)39 +b(the)i(list)f(of)g(aliases.)71 b(If)40 b Ft(-a)f Fu(is)h(supplied,)h +(all)g(aliases)h(are)630 668 y(remo)m(v)m(ed.)g(Aliases)31 +b(are)g(describ)s(ed)e(in)h(Section)i(6.6)f([Aliases],)h(page)f(90.)150 +898 y Fs(4.3)68 b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 +1118 y Fk(4.3.1)63 b(The)41 b(Set)g(Builtin)150 1265 +y Fu(This)35 b(builtin)h(is)g(so)g(complicated)i(that)f(it)f(deserv)m +(es)h(its)f(o)m(wn)g(section.)59 b Ft(set)35 b Fu(allo)m(ws)j(y)m(ou)e +(to)h(c)m(hange)150 1374 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 1484 y(v)-5 b(alues)31 +b(of)f(shell)h(v)-5 b(ariables.)150 1633 y Ft(set)870 +1763 y(set)47 b([--abefhkmnptuvxBCEHPT])41 b([-o)47 b +Fj(option-name)p Ft(])e([)p Fj(argument)g Ft(...)o(])870 +1873 y(set)i([+abefhkmnptuvxBCEHPT])42 b([+o)47 b Fj(option-name)p +Ft(])d([)p Fj(argument)h Ft(...)o(])630 2002 y Fu(If)22 +b(no)h(options)g(or)g(argumen)m(ts)g(are)g(supplied,)g +Ft(set)f Fu(displa)m(ys)g(the)h(names)g(and)f(v)-5 b(alues)23 +b(of)g(all)630 2112 y(shell)j(v)-5 b(ariables)27 b(and)e(functions,)h +(sorted)g(according)h(to)g(the)f(curren)m(t)f(lo)s(cale,)k(in)c(a)i +(format)630 2221 y(that)i(ma)m(y)h(b)s(e)e(reused)g(as)h(input)f(for)h +(setting)h(or)e(resetting)i(the)f(curren)m(tly-set)h(v)-5 +b(ariables.)630 2331 y(Read-only)37 b(v)-5 b(ariables)37 +b(cannot)h(b)s(e)e(reset.)59 b(In)36 b Fm(posix)g Fu(mo)s(de,)i(only)f +(shell)f(v)-5 b(ariables)38 b(are)630 2440 y(listed.)630 +2570 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 +2680 y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 +2829 y Ft(-a)384 b Fu(Eac)m(h)37 b(v)-5 b(ariable)36 +b(or)g(function)g(that)g(is)g(created)h(or)f(mo)s(di\014ed)f(is)h(giv)m +(en)h(the)1110 2939 y(exp)s(ort)28 b(attribute)h(and)f(mark)m(ed)g(for) +g(exp)s(ort)g(to)h(the)g(en)m(vironmen)m(t)f(of)h(sub-)1110 +3048 y(sequen)m(t)i(commands.)630 3198 y Ft(-b)384 b +Fu(Cause)44 b(the)h(status)g(of)f(terminated)h(bac)m(kground)g(jobs)f +(to)h(b)s(e)f(rep)s(orted)1110 3307 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 3457 y Ft(-e)384 b Fu(Exit)65 +b(immediately)g(if)f(a)h(pip)s(eline)e(\(see)i(Section)g(3.2.2)h([Pip)s +(elines],)1110 3567 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 +3676 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 3786 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 3895 y([Comp)s(ound)67 b(Commands],)77 +b(page)69 b(9\))g(returns)e(a)i(non-zero)g(status.)1110 +4005 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 4115 y(command)g(list)h +(immediately)g(follo)m(wing)g(a)g Ft(while)e Fu(or)h +Ft(until)e Fu(k)m(eyw)m(ord,)1110 4224 y(part)61 b(of)g(the)g(test)h +(in)e(an)h Ft(if)f Fu(statemen)m(t,)71 b(part)61 b(of)g(an)m(y)g +(command)1110 4334 y(executed)50 b(in)e(a)h Ft(&&)f Fu(or)h +Ft(||)f Fu(list)h(except)g(the)g(command)g(follo)m(wing)h(the)1110 +4443 y(\014nal)37 b Ft(&&)g Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f +(in)g(a)g(pip)s(eline)g(but)g(the)g(last,)j(or)e(if)f(the)1110 +4553 y(command's)c(return)f(status)h(is)g(b)s(eing)g(in)m(v)m(erted)h +(with)e Ft(!)p Fu(.)48 b(If)33 b(a)g(comp)s(ound)1110 +4662 y(command)g(other)g(than)f(a)i(subshell)d(returns)h(a)h(non-zero)h +(status)f(b)s(ecause)1110 4772 y(a)k(command)g(failed)g(while)g +Ft(-e)f Fu(w)m(as)i(b)s(eing)e(ignored,)j(the)e(shell)g(do)s(es)g(not) +1110 4882 y(exit.)42 b(A)30 b(trap)g(on)h Ft(ERR)p Fu(,)e(if)i(set,)g +(is)f(executed)i(b)s(efore)e(the)g(shell)h(exits.)1110 +5011 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g +(and)f(eac)m(h)h(subshell)f(en-)1110 5121 y(vironmen)m(t)j(separately)i +(\(see)f(Section)g(3.7.3)h([Command)d(Execution)i(En-)1110 +5230 y(vironmen)m(t],)i(page)f(37\),)i(and)d(ma)m(y)h(cause)f +(subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 5340 y(cuting)d(all)g +(the)g(commands)f(in)g(the)g(subshell.)p eop end %%Page: 61 67 TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(61)1110 299 y -Ft(posix)240 b Fu(Change)30 b(the)g(b)s(eha)m(vior)h(of)f(Bash)g(where) -g(the)g(default)h(op)s(era-)1590 408 y(tion)25 b(di\013ers)f(from)g -(the)h Fm(posix)f Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 -518 y(dard)32 b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j -(page)e(94\).)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 Ft(privileged)1590 -1020 y Fu(Same)g(as)h Ft(-p)p Fu(.)1110 1194 y Ft(verbose)144 -b Fu(Same)30 b(as)h Ft(-v)p Fu(.)1110 1367 y Ft(vi)384 -b Fu(Use)36 b(a)g Ft(vi)p Fu(-st)m(yle)g(line)g(editing)g(in)m -(terface.)58 b(This)35 b(also)h(a\013ects)1590 1477 y(the)31 -b(editing)g(in)m(terface)h(used)d(for)h Ft(read)f(-e)p -Fu(.)1110 1650 y Ft(xtrace)192 b Fu(Same)30 b(as)h Ft(-x)p -Fu(.)630 1824 y Ft(-p)384 b Fu(T)-8 b(urn)33 b(on)h(privileged)h(mo)s -(de.)51 b(In)34 b(this)g(mo)s(de,)h(the)f Ft($BASH_ENV)e -Fu(and)h Ft($ENV)1110 1934 y Fu(\014les)23 b(are)h(not)f(pro)s(cessed,) -h(shell)g(functions)e(are)i(not)f(inherited)g(from)f(the)i(en-)1110 -2043 y(vironmen)m(t,)h(and)e(the)g Ft(SHELLOPTS)p Fu(,)f -Ft(BASHOPTS)p Fu(,)h Ft(CDPATH)e Fu(and)i Ft(GLOBIGNORE)1110 -2153 y Fu(v)-5 b(ariables,)23 b(if)e(they)g(app)s(ear)f(in)g(the)h(en)m -(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)h(\(group\))h(id,)i(and)d(the)h Ft(-p)f Fu(option)i(is)e -(not)i(supplied,)f(these)h(actions)1110 2482 y(are)32 -b(tak)m(en)i(and)d(the)h(e\013ectiv)m(e)j(user)c(id)h(is)g(set)h(to)f -(the)h(real)f(user)g(id.)45 b(If)32 b(the)1110 2591 y -Ft(-p)i Fu(option)h(is)g(supplied)f(at)h(startup,)h(the)f(e\013ectiv)m -(e)i(user)d(id)g(is)h(not)g(reset.)1110 2701 y(T)-8 b(urning)35 -b(this)i(option)g(o\013)g(causes)g(the)g(e\013ectiv)m(e)i(user)d(and)g -(group)g(ids)g(to)1110 2810 y(b)s(e)30 b(set)h(to)g(the)f(real)h(user)f -(and)g(group)g(ids.)630 2984 y Ft(-t)384 b Fu(Exit)31 -b(after)g(reading)f(and)g(executing)h(one)g(command.)630 -3157 y Ft(-u)384 b Fu(T)-8 b(reat)25 b(unset)e(v)-5 b(ariables)25 -b(and)e(parameters)h(other)h(than)e(the)h(sp)s(ecial)h(param-)1110 -3267 y(eters)35 b(`)p Ft(@)p Fu(')f(or)g(`)p Ft(*)p Fu(')h(as)f(an)g -(error)g(when)f(p)s(erforming)g(parameter)i(expansion.)1110 -3377 y(An)28 b(error)h(message)g(will)g(b)s(e)f(written)h(to)h(the)e -(standard)g(error,)h(and)f(a)h(non-)1110 3486 y(in)m(teractiv)m(e)k -(shell)e(will)g(exit.)630 3660 y Ft(-v)384 b Fu(Prin)m(t)30 -b(shell)h(input)e(lines)i(as)g(they)f(are)h(read.)630 -3833 y Ft(-x)384 b Fu(Prin)m(t)21 b(a)h(trace)h(of)f(simple)f -(commands,)i Ft(for)e Fu(commands,)i Ft(case)d Fu(commands,)1110 -3943 y Ft(select)29 b Fu(commands,)j(and)e(arithmetic)j -Ft(for)d Fu(commands)h(and)f(their)i(argu-)1110 4052 -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 Ft(PS4)f Fu(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 Ft(-B)384 b Fu(The)41 b(shell)g(will)g(p)s(erform)f(brace)h -(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 4664 -y(Expansion],)30 b(page)h(21\).)42 b(This)30 b(option)h(is)f(on)g(b)m -(y)h(default.)630 4838 y Ft(-C)384 b Fu(Prev)m(en)m(t)25 -b(output)e(redirection)h(using)f(`)p Ft(>)p Fu(',)i(`)p -Ft(>&)p Fu(',)g(and)e(`)p Ft(<>)p Fu(')g(from)h(o)m(v)m(erwriting)1110 -4947 y(existing)31 b(\014les.)630 5121 y Ft(-E)384 b -Fu(If)39 b(set,)j(an)m(y)e(trap)f(on)g Ft(ERR)g Fu(is)g(inherited)g(b)m -(y)g(shell)h(functions,)h(command)1110 5230 y(substitutions,)35 -b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.) -1110 5340 y(The)d Ft(ERR)f Fu(trap)i(is)f(normally)h(not)f(inherited)g -(in)g(suc)m(h)g(cases.)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(61)1110 299 y(If)41 +b(a)g(comp)s(ound)e(command)i(or)g(shell)g(function)g(executes)h(in)f +(a)g(con)m(text)1110 408 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g +(ignored,)h(none)f(of)h(the)f(commands)g(executed)h(within)1110 +518 y(the)j(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g(will)h +(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 628 y Ft(-e)25 +b Fu(setting,)j(ev)m(en)e(if)g Ft(-e)f Fu(is)h(set)g(and)f(a)h(command) +g(returns)e(a)i(failure)g(status.)1110 737 y(If)32 b(a)i(comp)s(ound)d +(command)i(or)g(shell)g(function)f(sets)i Ft(-e)e Fu(while)h(executing) +1110 847 y(in)40 b(a)h(con)m(text)i(where)d Ft(-e)g Fu(is)h(ignored,)j +(that)d(setting)h(will)f(not)g(ha)m(v)m(e)h(an)m(y)1110 +956 y(e\013ect)g(un)m(til)e(the)h(comp)s(ound)e(command)h(or)g(the)g +(command)g(con)m(taining)1110 1066 y(the)31 b(function)f(call)h +(completes.)630 1217 y Ft(-f)384 b Fu(Disable)31 b(\014lename)g +(expansion)f(\(globbing\).)630 1367 y Ft(-h)384 b Fu(Lo)s(cate)33 +b(and)e(remem)m(b)s(er)h(\(hash\))g(commands)f(as)h(they)g(are)g(lo)s +(ok)m(ed)h(up)e(for)1110 1477 y(execution.)42 b(This)29 +b(option)i(is)g(enabled)f(b)m(y)g(default.)630 1628 y +Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g +(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110 +1737 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f +(those)i(that)f(precede)g(the)1110 1847 y(command)30 +b(name.)630 1998 y Ft(-m)384 b Fu(Job)28 b(con)m(trol)h(is)f(enabled)g +(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(100\).)41 +b(All)1110 2107 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s +(cess)f(group.)40 b(When)27 b(a)h(bac)m(kground)f(job)1110 +2217 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m +(taining)i(its)f(exit)g(status.)630 2367 y Ft(-n)384 +b Fu(Read)38 b(commands)f(but)f(do)i(not)f(execute)i(them.)62 +b(This)37 b(ma)m(y)h(b)s(e)f(used)f(to)1110 2477 y(c)m(hec)m(k)d(a)e +(script)g(for)g(syn)m(tax)h(errors.)42 b(This)30 b(option)i(is)f +(ignored)g(b)m(y)g(in)m(terac-)1110 2587 y(tiv)m(e)h(shells.)630 +2737 y Ft(-o)e Fj(option-name)1110 2847 y Fu(Set)h(the)f(option)h +(corresp)s(onding)e(to)i Fr(option-name)5 b Fu(:)1110 +2998 y Ft(allexport)1590 3107 y Fu(Same)30 b(as)h Ft(-a)p +Fu(.)1110 3258 y Ft(braceexpand)1590 3367 y Fu(Same)f(as)h +Ft(-B)p Fu(.)1110 3518 y Ft(emacs)240 b Fu(Use)25 b(an)f +Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m(terface)h(\(see)g +(Chapter)e(8)1590 3628 y([Command)33 b(Line)g(Editing],)h(page)h +(104\).)51 b(This)32 b(also)i(a\013ects)1590 3737 y(the)d(editing)g(in) +m(terface)h(used)d(for)h Ft(read)f(-e)p Fu(.)1110 3888 +y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p Fu(.)1110 +4039 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p Fu(.)1110 +4189 y Ft(functrace)1590 4299 y Fu(Same)f(as)h Ft(-T)p +Fu(.)1110 4450 y Ft(hashall)144 b Fu(Same)30 b(as)h Ft(-h)p +Fu(.)1110 4600 y Ft(histexpand)1590 4710 y Fu(Same)f(as)h +Ft(-H)p Fu(.)1110 4861 y Ft(history)144 b Fu(Enable)39 +b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h(Section)h(9.1) +1590 4970 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(137.)60 +b(This)36 b(option)h(is)f(on)1590 5080 y(b)m(y)30 b(default)h(in)f(in)m +(teractiv)m(e)j(shells.)1110 5230 y Ft(ignoreeof)1590 +5340 y Fu(An)d(in)m(teractiv)m(e)j(shell)e(will)g(not)f(exit)h(up)s(on) +e(reading)i(EOF.)p eop end %%Page: 62 68 TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(62)630 299 y Ft(-H)384 -b Fu(Enable)38 b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g -(\(see)h(Section)h(9.3)f([History)g(In-)1110 408 y(teraction],)g(page)d -(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 Ft(-P)384 -b Fu(If)39 b(set,)j(do)d(not)g(resolv)m(e)i(sym)m(b)s(olic)e(links)g -(when)f(p)s(erforming)g(commands)1110 780 y(suc)m(h)29 -b(as)h Ft(cd)f Fu(whic)m(h)g(c)m(hange)h(the)g(curren)m(t)f(directory) --8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 890 y(tory)j(is)g(used)f -(instead.)52 b(By)34 b(default,)h(Bash)f(follo)m(ws)h(the)f(logical)i -(c)m(hain)f(of)1110 999 y(directories)j(when)d(p)s(erforming)h -(commands)g(whic)m(h)g(c)m(hange)i(the)f(curren)m(t)1110 -1109 y(directory)-8 b(.)1110 1240 y(F)g(or)42 b(example,)i(if)d -Ft(/usr/sys)e Fu(is)i(a)g(sym)m(b)s(olic)g(link)g(to)h -Ft(/usr/local/sys)1110 1349 y Fu(then:)1350 1480 y Ft($)47 -b(cd)h(/usr/sys;)d(echo)i($PWD)1350 1590 y(/usr/sys)1350 -1700 y($)g(cd)h(..;)f(pwd)1350 1809 y(/usr)1110 1940 -y Fu(If)30 b Ft(set)f(-P)h Fu(is)h(on,)f(then:)1350 2071 -y Ft($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 2181 y(/usr/local/sys) -1350 2290 y($)g(cd)h(..;)f(pwd)1350 2400 y(/usr/local)630 -2552 y(-T)384 b Fu(If)34 b(set,)j(an)m(y)e(trap)g(on)g -Ft(DEBUG)e Fu(and)i Ft(RETURN)e Fu(are)i(inherited)g(b)m(y)f(shell)i -(func-)1110 2662 y(tions,)k(command)d(substitutions,)h(and)f(commands)g -(executed)h(in)f(a)h(sub-)1110 2771 y(shell)33 b(en)m(vironmen)m(t.)49 -b(The)32 b Ft(DEBUG)g Fu(and)g Ft(RETURN)f Fu(traps)h(are)i(normally)f -(not)1110 2881 y(inherited)d(in)g(suc)m(h)g(cases.)630 -3033 y Ft(--)384 b Fu(If)44 b(no)g(argumen)m(ts)g(follo)m(w)i(this)e -(option,)k(then)c(the)h(p)s(ositional)g(parame-)1110 -3143 y(ters)31 b(are)g(unset.)40 b(Otherwise,)31 b(the)f(p)s(ositional) -i(parameters)f(are)f(set)h(to)h(the)1110 3253 y Fr(argumen)m(ts)p -Fu(,)f(ev)m(en)g(if)f(some)h(of)g(them)f(b)s(egin)g(with)g(a)h(`)p -Ft(-)p Fu('.)630 3405 y Ft(-)432 b Fu(Signal)45 b(the)g(end)f(of)h -(options,)k(cause)c(all)h(remaining)e Fr(argumen)m(ts)49 -b Fu(to)d(b)s(e)1110 3515 y(assigned)33 b(to)h(the)g(p)s(ositional)g -(parameters.)49 b(The)33 b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are) -1110 3624 y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m -(ts,)j(the)e(p)s(ositional)g(parameters)1110 3734 y(remain)30 -b(unc)m(hanged.)630 3886 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`) -p Ft(-)p Fu(')g(causes)h(these)f(options)h(to)g(b)s(e)e(turned)g -(o\013.)40 b(The)27 b(options)h(can)630 3996 y(also)36 -b(b)s(e)f(used)f(up)s(on)g(in)m(v)m(o)s(cation)j(of)e(the)g(shell.)56 -b(The)34 b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g(b)s(e)630 -4105 y(found)29 b(in)h Ft($-)p Fu(.)630 4236 y(The)43 -b(remaining)h(N)f Fr(argumen)m(ts)48 b Fu(are)c(p)s(ositional)g -(parameters)g(and)f(are)h(assigned,)j(in)630 4346 y(order,)30 -b(to)h Ft($1)p Fu(,)f Ft($2)p Fu(,)36 b(.)22 b(.)g(.)42 -b Ft($N)p Fu(.)e(The)30 b(sp)s(ecial)h(parameter)g Ft(#)f -Fu(is)g(set)h(to)g(N.)630 4477 y(The)f(return)f(status)i(is)f(alw)m(a)m -(ys)i(zero)f(unless)f(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f -(supplied.)150 4669 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150 -4816 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h -(additional)f(shell)f(optional)i(b)s(eha)m(vior.)150 -4968 y Ft(shopt)870 5099 y(shopt)46 b([-pqsu])g([-o])h([)p -Fj(optname)e Ft(...])630 5230 y Fu(T)-8 b(oggle)37 b(the)e(v)-5 -b(alues)35 b(of)g(settings)h(con)m(trolling)g(optional)g(shell)f(b)s -(eha)m(vior.)55 b(The)34 b(settings)630 5340 y(can)24 -b(b)s(e)g(either)h(those)f(listed)h(b)s(elo)m(w,)h(or,)f(if)g(the)f -Ft(-o)f Fu(option)i(is)f(used,)h(those)g(a)m(v)-5 b(ailable)26 -b(with)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(62)1110 299 y +Ft(keyword)144 b Fu(Same)30 b(as)h Ft(-k)p Fu(.)1110 +457 y Ft(monitor)144 b Fu(Same)30 b(as)h Ft(-m)p Fu(.)1110 +615 y Ft(noclobber)1590 725 y Fu(Same)f(as)h Ft(-C)p +Fu(.)1110 883 y Ft(noexec)192 b Fu(Same)30 b(as)h Ft(-n)p +Fu(.)1110 1042 y Ft(noglob)192 b Fu(Same)30 b(as)h Ft(-f)p +Fu(.)1110 1200 y Ft(nolog)240 b Fu(Curren)m(tly)30 b(ignored.)1110 +1358 y Ft(notify)192 b Fu(Same)30 b(as)h Ft(-b)p Fu(.)1110 +1517 y Ft(nounset)144 b Fu(Same)30 b(as)h Ft(-u)p Fu(.)1110 +1675 y Ft(onecmd)192 b Fu(Same)30 b(as)h Ft(-t)p Fu(.)1110 +1833 y Ft(physical)96 b Fu(Same)30 b(as)h Ft(-P)p Fu(.)1110 +1991 y Ft(pipefail)96 b Fu(If)44 b(set,)k(the)d(return)e(v)-5 +b(alue)45 b(of)f(a)h(pip)s(eline)e(is)i(the)f(v)-5 b(alue)45 +b(of)1590 2101 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h +(exit)g(with)f(a)g(non-zero)1590 2211 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 +2320 y(cessfully)-8 b(.)41 b(This)30 b(option)h(is)f(disabled)g(b)m(y)h +(default.)1110 2478 y Ft(posix)240 b Fu(Change)30 b(the)g(b)s(eha)m +(vior)h(of)f(Bash)g(where)g(the)g(default)h(op)s(era-)1590 +2588 y(tion)25 b(di\013ers)f(from)g(the)h Fm(posix)f +Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 2698 y(dard)32 +b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j(page)e(96\).) +1590 2807 y(This)k(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g(b)s(eha)m +(v)m(e)g(as)g(a)f(strict)h(su-)1590 2917 y(p)s(erset)30 +b(of)h(that)f(standard.)1110 3075 y Ft(privileged)1590 +3185 y Fu(Same)g(as)h Ft(-p)p Fu(.)1110 3343 y Ft(verbose)144 +b Fu(Same)30 b(as)h Ft(-v)p Fu(.)1110 3501 y Ft(vi)384 +b Fu(Use)36 b(a)g Ft(vi)p Fu(-st)m(yle)g(line)g(editing)g(in)m +(terface.)58 b(This)35 b(also)h(a\013ects)1590 3611 y(the)31 +b(editing)g(in)m(terface)h(used)d(for)h Ft(read)f(-e)p +Fu(.)1110 3769 y Ft(xtrace)192 b Fu(Same)30 b(as)h Ft(-x)p +Fu(.)630 3927 y Ft(-p)384 b Fu(T)-8 b(urn)33 b(on)h(privileged)h(mo)s +(de.)51 b(In)34 b(this)g(mo)s(de,)h(the)f Ft($BASH_ENV)e +Fu(and)h Ft($ENV)1110 4037 y Fu(\014les)23 b(are)h(not)f(pro)s(cessed,) +h(shell)g(functions)e(are)i(not)f(inherited)g(from)f(the)i(en-)1110 +4147 y(vironmen)m(t,)h(and)e(the)g Ft(SHELLOPTS)p Fu(,)f +Ft(BASHOPTS)p Fu(,)h Ft(CDPATH)e Fu(and)i Ft(GLOBIGNORE)1110 +4256 y Fu(v)-5 b(ariables,)23 b(if)e(they)g(app)s(ear)f(in)g(the)h(en)m +(vironmen)m(t,)i(are)e(ignored.)38 b(If)20 b(the)h(shell)1110 +4366 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 +4475 y(user)h(\(group\))h(id,)i(and)d(the)h Ft(-p)f Fu(option)i(is)e +(not)i(supplied,)f(these)h(actions)1110 4585 y(are)32 +b(tak)m(en)i(and)d(the)h(e\013ectiv)m(e)j(user)c(id)h(is)g(set)h(to)f +(the)h(real)f(user)g(id.)45 b(If)32 b(the)1110 4695 y +Ft(-p)i Fu(option)h(is)g(supplied)f(at)h(startup,)h(the)f(e\013ectiv)m +(e)i(user)d(id)g(is)h(not)g(reset.)1110 4804 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 4914 y(b)s(e)30 b(set)h(to)g(the)f(real)h(user)f +(and)g(group)g(ids.)630 5072 y Ft(-t)384 b Fu(Exit)31 +b(after)g(reading)f(and)g(executing)h(one)g(command.)630 +5230 y Ft(-u)384 b Fu(T)-8 b(reat)25 b(unset)e(v)-5 b(ariables)25 +b(and)e(parameters)h(other)h(than)e(the)h(sp)s(ecial)h(param-)1110 +5340 y(eters)35 b(`)p Ft(@)p Fu(')f(or)g(`)p Ft(*)p Fu(')h(as)f(an)g +(error)g(when)f(p)s(erforming)g(parameter)i(expansion.)p +eop end %%Page: 63 69 TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(63)630 299 y(the)30 -b Ft(-o)f Fu(option)i(to)f(the)g Ft(set)f Fu(builtin)h(command)f(\(see) -i(Section)g(4.3.1)g([The)f(Set)g(Builtin],)630 408 y(page)i(58\).)45 -b(With)32 b(no)f(options,)h(or)g(with)f(the)g Ft(-p)g -Fu(option,)h(a)g(list)g(of)f(all)i(settable)g(options)630 -518 y(is)j(displa)m(y)m(ed,)h(with)f(an)f(indication)i(of)e(whether)g -(or)h(not)g(eac)m(h)h(is)e(set.)57 b(The)35 b Ft(-p)g -Fu(option)630 628 y(causes)i(output)e(to)i(b)s(e)e(displa)m(y)m(ed)i -(in)f(a)g(form)g(that)h(ma)m(y)f(b)s(e)g(reused)f(as)h(input.)57 -b(Other)630 737 y(options)31 b(ha)m(v)m(e)g(the)g(follo)m(wing)h -(meanings:)630 894 y Ft(-s)384 b Fu(Enable)30 b(\(set\))i(eac)m(h)f -Fr(optname)p Fu(.)630 1052 y Ft(-u)384 b Fu(Disable)31 -b(\(unset\))g(eac)m(h)h Fr(optname)p Fu(.)630 1209 y -Ft(-q)384 b Fu(Suppresses)28 b(normal)h(output;)h(the)g(return)e -(status)i(indicates)h(whether)e(the)1110 1319 y Fr(optname)37 -b Fu(is)31 b(set)h(or)f(unset.)43 b(If)31 b(m)m(ultiple)h -Fr(optname)37 b Fu(argumen)m(ts)31 b(are)h(giv)m(en)1110 -1428 y(with)d Ft(-q)p Fu(,)g(the)g(return)f(status)h(is)g(zero)h(if)f -(all)h Fr(optnames)j Fu(are)d(enabled;)f(non-)1110 1538 -y(zero)i(otherwise.)630 1695 y Ft(-o)384 b Fu(Restricts)22 -b(the)f(v)-5 b(alues)22 b(of)f Fr(optname)27 b Fu(to)22 -b(b)s(e)e(those)i(de\014ned)e(for)h(the)g Ft(-o)f Fu(option)1110 -1805 y(to)31 b(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)h(4.3.1)g -([The)e(Set)g(Builtin],)i(page)f(58\).)630 1962 y(If)e(either)i -Ft(-s)e Fu(or)h Ft(-u)f Fu(is)h(used)f(with)g(no)h Fr(optname)35 -b Fu(argumen)m(ts,)c Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630 -2071 y(options)h(whic)m(h)f(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m -(ely)-8 b(.)630 2205 y(Unless)30 b(otherwise)h(noted,)g(the)g -Ft(shopt)d Fu(options)j(are)g(disabled)f(\(o\013)7 b(\))32 -b(b)m(y)e(default.)630 2338 y(The)d(return)f(status)i(when)f(listing)h -(options)g(is)f(zero)i(if)e(all)i Fr(optnames)i Fu(are)d(enabled,)g -(non-)630 2448 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 -2557 y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 -b(alid)30 b(shell)h(option.)630 2691 y(The)f(list)h(of)f -Ft(shopt)f Fu(options)i(is:)630 2848 y Ft(autocd)192 -b Fu(If)27 b(set,)h(a)g(command)f(name)g(that)h(is)f(the)g(name)g(of)h -(a)f(directory)h(is)f(executed)1110 2958 y(as)j(if)f(it)h(w)m(ere)f -(the)h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40 -b(This)29 b(option)g(is)h(only)1110 3067 y(used)g(b)m(y)g(in)m -(teractiv)m(e)j(shells.)630 3224 y Ft(cdable_vars)1110 -3334 y Fu(If)h(this)h(is)g(set,)i(an)e(argumen)m(t)g(to)h(the)f -Ft(cd)f Fu(builtin)h(command)f(that)i(is)f(not)1110 3444 -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 3553 -y(the)g(directory)f(to)i(c)m(hange)f(to.)630 3710 y Ft(cdspell)144 -b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g(sp)s(elling)h(of)f(a)g -(directory)h(comp)s(onen)m(t)f(in)g(a)h Ft(cd)1110 3820 -y Fu(command)i(will)h(b)s(e)f(corrected.)43 b(The)30 -b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110 -3930 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 4039 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 4149 -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 4306 y Ft(checkhash)1110 -4416 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f -(command)f(found)g(in)g(the)h(hash)f(table)1110 4525 -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 4635 -y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630 -4792 y Ft(checkjobs)1110 4902 y Fu(If)d(set,)i(Bash)e(lists)h(the)g -(status)g(of)f(an)m(y)h(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore) -1110 5011 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 -5121 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 5230 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 5340 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.)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(63)1110 299 y(An)28 +b(error)h(message)g(will)g(b)s(e)f(written)h(to)h(the)e(standard)g +(error,)h(and)f(a)h(non-)1110 408 y(in)m(teractiv)m(e)k(shell)e(will)g +(exit.)630 568 y Ft(-v)384 b Fu(Prin)m(t)30 b(shell)h(input)e(lines)i +(as)g(they)f(are)h(read.)630 727 y Ft(-x)384 b Fu(Prin)m(t)21 +b(a)h(trace)h(of)f(simple)f(commands,)i Ft(for)e Fu(commands,)i +Ft(case)d Fu(commands,)1110 837 y Ft(select)29 b Fu(commands,)j(and)e +(arithmetic)j Ft(for)d Fu(commands)h(and)f(their)i(argu-)1110 +946 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 1056 y(they)i(are)g(executed.)49 +b(The)32 b(v)-5 b(alue)33 b(of)g(the)g Ft(PS4)f Fu(v)-5 +b(ariable)34 b(is)f(expanded)f(and)1110 1166 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 1275 y(argumen)m(ts.)630 +1435 y Ft(-B)384 b Fu(The)41 b(shell)g(will)g(p)s(erform)f(brace)h +(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 1544 +y(Expansion],)30 b(page)h(21\).)42 b(This)30 b(option)h(is)f(on)g(b)m +(y)h(default.)630 1704 y Ft(-C)384 b Fu(Prev)m(en)m(t)25 +b(output)e(redirection)h(using)f(`)p Ft(>)p Fu(',)i(`)p +Ft(>&)p Fu(',)g(and)e(`)p Ft(<>)p Fu(')g(from)h(o)m(v)m(erwriting)1110 +1813 y(existing)31 b(\014les.)630 1973 y Ft(-E)384 b +Fu(If)39 b(set,)j(an)m(y)e(trap)f(on)g Ft(ERR)g Fu(is)g(inherited)g(b)m +(y)g(shell)h(functions,)h(command)1110 2082 y(substitutions,)35 +b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.) +1110 2192 y(The)d Ft(ERR)f Fu(trap)i(is)f(normally)h(not)f(inherited)g +(in)g(suc)m(h)g(cases.)630 2351 y Ft(-H)384 b Fu(Enable)38 +b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g(\(see)h +(Section)h(9.3)f([History)g(In-)1110 2461 y(teraction],)g(page)d +(139\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m +(teractiv)m(e)1110 2570 y(shells.)630 2730 y Ft(-P)384 +b Fu(If)39 b(set,)j(do)d(not)g(resolv)m(e)i(sym)m(b)s(olic)e(links)g +(when)f(p)s(erforming)g(commands)1110 2839 y(suc)m(h)29 +b(as)h Ft(cd)f Fu(whic)m(h)g(c)m(hange)h(the)g(curren)m(t)f(directory) +-8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 2949 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 3059 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 +3168 y(directory)-8 b(.)1110 3303 y(F)g(or)42 b(example,)i(if)d +Ft(/usr/sys)e Fu(is)i(a)g(sym)m(b)s(olic)g(link)g(to)h +Ft(/usr/local/sys)1110 3412 y Fu(then:)1350 3547 y Ft($)47 +b(cd)h(/usr/sys;)d(echo)i($PWD)1350 3656 y(/usr/sys)1350 +3766 y($)g(cd)h(..;)f(pwd)1350 3875 y(/usr)1110 4010 +y Fu(If)30 b Ft(set)f(-P)h Fu(is)h(on,)f(then:)1350 4144 +y Ft($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 4254 y(/usr/local/sys) +1350 4364 y($)g(cd)h(..;)f(pwd)1350 4473 y(/usr/local)630 +4633 y(-T)384 b Fu(If)34 b(set,)j(an)m(y)e(trap)g(on)g +Ft(DEBUG)e Fu(and)i Ft(RETURN)e Fu(are)i(inherited)g(b)m(y)f(shell)i +(func-)1110 4742 y(tions,)k(command)d(substitutions,)h(and)f(commands)g +(executed)h(in)f(a)h(sub-)1110 4852 y(shell)33 b(en)m(vironmen)m(t.)49 +b(The)32 b Ft(DEBUG)g Fu(and)g Ft(RETURN)f Fu(traps)h(are)i(normally)f +(not)1110 4961 y(inherited)d(in)g(suc)m(h)g(cases.)630 +5121 y Ft(--)384 b Fu(If)44 b(no)g(argumen)m(ts)g(follo)m(w)i(this)e +(option,)k(then)c(the)h(p)s(ositional)g(parame-)1110 +5230 y(ters)31 b(are)g(unset.)40 b(Otherwise,)31 b(the)f(p)s(ositional) +i(parameters)f(are)f(set)h(to)h(the)1110 5340 y Fr(argumen)m(ts)p +Fu(,)f(ev)m(en)g(if)f(some)h(of)g(them)f(b)s(egin)g(with)g(a)h(`)p +Ft(-)p Fu('.)p eop end %%Page: 64 70 TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(64)630 299 y Ft(checkwinsize) -1110 408 y Fu(If)41 b(set,)k(Bash)c(c)m(hec)m(ks)i(the)f(windo)m(w)e -(size)j(after)f(eac)m(h)g(command)f(and,)j(if)1110 518 -y(necessary)-8 b(,)31 b(up)s(dates)f(the)g(v)-5 b(alues)31 -b(of)g Ft(LINES)e Fu(and)g Ft(COLUMNS)p Fu(.)630 669 -y Ft(cmdhist)144 b Fu(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e) -g(all)g(lines)f(of)g(a)h(m)m(ultiple-line)g(command)1110 -778 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 -888 y(commands.)630 1039 y Ft(compat31)96 b Fu(If)27 -b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i(that)f(of)f(v) -m(ersion)h(3.1)h(with)e(resp)s(ect)1110 1148 y(to)39 -b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h(command's)f(`)p -Ft(=~)p Fu(')g(op)s(erator)1110 1258 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 -1367 y(the)31 b Ft([[)e Fu(conditional)j(command's)e(`)p -Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')g(op)s(erators.)41 -b(Bash)31 b(v)m(ersions)1110 1477 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 -1587 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 1737 y Ft(compat32)96 -b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i -(that)f(of)f(v)m(ersion)h(3.2)h(with)e(resp)s(ect)1110 -1847 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g(when)f -(using)h(the)g Ft([[)g Fu(conditional)1110 1956 y(command's)d(`)p -Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')g(op)s(erators)h(\(see)g(previous)f -(item\).)630 2107 y Ft(compat40)96 b Fu(If)27 b(set,)i(Bash)e(c)m -(hanges)i(its)f(b)s(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(4.0)h -(with)e(resp)s(ect)1110 2217 y(to)34 b(lo)s(cale-sp)s(eci\014c)h -(string)e(comparison)g(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 -2326 y(command's)28 b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p -Fu(')h(op)s(erators)f(\(see)i(description)e(of)h Ft(compat31)p -Fu(\))e(and)1110 2436 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 -2545 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 2655 -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 2806 y Ft(compat41)96 b Fu(If)25 b(set,)j(Bash,)e -(when)f(in)g Fm(posix)g Fu(mo)s(de,)i(treats)f(a)g(single)h(quote)f(in) -f(a)h(double-)1110 2915 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 -3025 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 -3134 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 3244 -y Fm(posix)f Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69 -b(The)39 b(default)g(Bash)h(b)s(eha)m(vior)g(re-)1110 -3354 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630 -3504 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s -(cess)g(the)g(replacemen)m(t)h(string)e(in)h(the)g(pattern)1110 -3614 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5 -b(al.)630 3765 y Ft(complete_fullquote)1110 3874 y Fu(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 3984 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 4093 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 4203 -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 4313 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 4422 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 -4532 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 4641 -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 -4751 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 4861 -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 4970 y(through)30 -b(4.2.)630 5121 y Ft(direxpand)1110 5230 y Fu(If)k(set,)i(Bash)f -(replaces)g(directory)g(names)g(with)f(the)g(results)h(of)f(w)m(ord)g -(ex-)1110 5340 y(pansion)k(when)g(p)s(erforming)f(\014lename)i -(completion.)67 b(This)38 b(c)m(hanges)i(the)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(64)630 299 y Ft(-)432 +b Fu(Signal)45 b(the)g(end)f(of)h(options,)k(cause)c(all)h(remaining)e +Fr(argumen)m(ts)49 b Fu(to)d(b)s(e)1110 408 y(assigned)33 +b(to)h(the)g(p)s(ositional)g(parameters.)49 b(The)33 +b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are)1110 518 +y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m(ts,)j(the)e +(p)s(ositional)g(parameters)1110 628 y(remain)30 b(unc)m(hanged.)630 +801 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)p Ft(-)p +Fu(')g(causes)h(these)f(options)h(to)g(b)s(e)e(turned)g(o\013.)40 +b(The)27 b(options)h(can)630 910 y(also)36 b(b)s(e)f(used)f(up)s(on)g +(in)m(v)m(o)s(cation)j(of)e(the)g(shell.)56 b(The)34 +b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g(b)s(e)630 +1020 y(found)29 b(in)h Ft($-)p Fu(.)630 1161 y(The)43 +b(remaining)h(N)f Fr(argumen)m(ts)48 b Fu(are)c(p)s(ositional)g +(parameters)g(and)f(are)h(assigned,)j(in)630 1271 y(order,)30 +b(to)h Ft($1)p Fu(,)f Ft($2)p Fu(,)36 b(.)22 b(.)g(.)42 +b Ft($N)p Fu(.)e(The)30 b(sp)s(ecial)h(parameter)g Ft(#)f +Fu(is)g(set)h(to)g(N.)630 1412 y(The)f(return)f(status)i(is)f(alw)m(a)m +(ys)i(zero)f(unless)f(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f +(supplied.)150 1625 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150 +1772 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h +(additional)f(shell)f(optional)i(b)s(eha)m(vior.)150 +1952 y Ft(shopt)870 2093 y(shopt)46 b([-pqsu])g([-o])h([)p +Fj(optname)e Ft(...])630 2234 y Fu(T)-8 b(oggle)37 b(the)e(v)-5 +b(alues)35 b(of)g(settings)h(con)m(trolling)g(optional)g(shell)f(b)s +(eha)m(vior.)55 b(The)34 b(settings)630 2344 y(can)24 +b(b)s(e)g(either)h(those)f(listed)h(b)s(elo)m(w,)h(or,)f(if)g(the)f +Ft(-o)f Fu(option)i(is)f(used,)h(those)g(a)m(v)-5 b(ailable)26 +b(with)630 2453 y(the)k Ft(-o)f Fu(option)i(to)f(the)g +Ft(set)f Fu(builtin)h(command)f(\(see)i(Section)g(4.3.1)g([The)f(Set)g +(Builtin],)630 2563 y(page)i(60\).)45 b(With)32 b(no)f(options,)h(or)g +(with)f(the)g Ft(-p)g Fu(option,)h(a)g(list)g(of)f(all)i(settable)g +(options)630 2673 y(is)j(displa)m(y)m(ed,)h(with)f(an)f(indication)i +(of)e(whether)g(or)h(not)g(eac)m(h)h(is)e(set.)57 b(The)35 +b Ft(-p)g Fu(option)630 2782 y(causes)i(output)e(to)i(b)s(e)e(displa)m +(y)m(ed)i(in)f(a)g(form)g(that)h(ma)m(y)f(b)s(e)g(reused)f(as)h(input.) +57 b(Other)630 2892 y(options)31 b(ha)m(v)m(e)g(the)g(follo)m(wing)h +(meanings:)630 3065 y Ft(-s)384 b Fu(Enable)30 b(\(set\))i(eac)m(h)f +Fr(optname)p Fu(.)630 3238 y Ft(-u)384 b Fu(Disable)31 +b(\(unset\))g(eac)m(h)h Fr(optname)p Fu(.)630 3411 y +Ft(-q)384 b Fu(Suppresses)28 b(normal)h(output;)h(the)g(return)e +(status)i(indicates)h(whether)e(the)1110 3520 y Fr(optname)37 +b Fu(is)31 b(set)h(or)f(unset.)43 b(If)31 b(m)m(ultiple)h +Fr(optname)37 b Fu(argumen)m(ts)31 b(are)h(giv)m(en)1110 +3630 y(with)d Ft(-q)p Fu(,)g(the)g(return)f(status)h(is)g(zero)h(if)f +(all)h Fr(optnames)j Fu(are)d(enabled;)f(non-)1110 3740 +y(zero)i(otherwise.)630 3913 y Ft(-o)384 b Fu(Restricts)22 +b(the)f(v)-5 b(alues)22 b(of)f Fr(optname)27 b Fu(to)22 +b(b)s(e)e(those)i(de\014ned)e(for)h(the)g Ft(-o)f Fu(option)1110 +4022 y(to)31 b(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)h(4.3.1)g +([The)e(Set)g(Builtin],)i(page)f(60\).)630 4195 y(If)e(either)i +Ft(-s)e Fu(or)h Ft(-u)f Fu(is)h(used)f(with)g(no)h Fr(optname)35 +b Fu(argumen)m(ts,)c Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630 +4305 y(options)h(whic)m(h)f(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m +(ely)-8 b(.)630 4446 y(Unless)30 b(otherwise)h(noted,)g(the)g +Ft(shopt)d Fu(options)j(are)g(disabled)f(\(o\013)7 b(\))32 +b(b)m(y)e(default.)630 4587 y(The)d(return)f(status)i(when)f(listing)h +(options)g(is)f(zero)i(if)e(all)i Fr(optnames)i Fu(are)d(enabled,)g +(non-)630 4697 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f +(unsetting)g(options,)i(the)e(return)f(status)h(is)g(zero)630 +4806 y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 +b(alid)30 b(shell)h(option.)630 4948 y(The)f(list)h(of)f +Ft(shopt)f Fu(options)i(is:)630 5121 y Ft(autocd)192 +b Fu(If)27 b(set,)h(a)g(command)f(name)g(that)h(is)f(the)g(name)g(of)h +(a)f(directory)h(is)f(executed)1110 5230 y(as)j(if)f(it)h(w)m(ere)f +(the)h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40 +b(This)29 b(option)g(is)h(only)1110 5340 y(used)g(b)m(y)g(in)m +(teractiv)m(e)j(shells.)p eop end %%Page: 65 71 TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(65)1110 299 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 408 y(preserv)m(e)j(what)f -(the)g(user)g(t)m(yp)s(ed.)630 555 y Ft(dirspell)96 b -Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s(elling)g(correction)g(on)g -(directory)g(names)f(during)1110 664 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 -774 y(exist.)630 920 y Ft(dotglob)144 b Fu(If)27 b(set,)i(Bash)f -(includes)g(\014lenames)g(b)s(eginning)f(with)g(a)h(`.')41 -b(in)27 b(the)h(results)g(of)1110 1029 y(\014lename)j(expansion.)630 -1176 y Ft(execfail)96 b Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m -(teractiv)m(e)i(shell)e(will)f(not)h(exit)h(if)e(it)h(cannot)h(execute) -1110 1285 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to) -h(the)f Ft(exec)f Fu(builtin)h(command.)39 b(An)1110 -1395 y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e -Ft(exec)f Fu(fails.)630 1541 y Ft(expand_aliases)1110 -1650 y Fu(If)j(set,)h(aliases)g(are)g(expanded)e(as)h(describ)s(ed)f(b) -s(elo)m(w)h(under)f(Aliases,)i(Sec-)1110 1760 y(tion)38 -b(6.6)h([Aliases],)j(page)d(88.)64 b(This)37 b(option)h(is)g(enabled)g -(b)m(y)g(default)g(for)1110 1870 y(in)m(teractiv)m(e)33 -b(shells.)630 2016 y Ft(extdebug)96 b Fu(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 -2144 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g -Ft(declare)d Fu(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290 -2253 y(Builtins],)29 b(page)g(48\))g(displa)m(ys)f(the)g(source)h -(\014le)f(name)g(and)f(line)h(n)m(um-)1290 2363 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 2472 y(men)m(t.)1159 2600 y(2.)61 b(If)20 b(the)h(command)g(run)e -(b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 -b(alue,)1290 2710 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g -(not)i(executed.)1159 2838 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m -(y)i(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38 -b(of)f(2,)1290 2947 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 3057 y(a)h(shell)h -(script)f(executed)h(b)m(y)f(the)g Ft(.)g Fu(or)g Ft(source)e -Fu(builtins\),)j(a)g(call)g(to)1290 3166 y Ft(return)29 -b Fu(is)h(sim)m(ulated.)1159 3294 y(4.)61 b Ft(BASH_ARGC)34 -b Fu(and)i Ft(BASH_ARGV)e Fu(are)j(up)s(dated)e(as)h(describ)s(ed)g(in) -g(their)1290 3404 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g -(V)-8 b(ariables],)32 b(page)f(69\).)1159 3532 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 3641 y(functions,)32 -b(and)e(subshells)h(in)m(v)m(ok)m(ed)i(with)e Ft(\()f -Fj(command)e Ft(\))j Fu(inherit)h(the)1290 3751 y Ft(DEBUG)d -Fu(and)h Ft(RETURN)e Fu(traps.)1159 3879 y(6.)61 b(Error)41 -b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f -(func-)1290 3988 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i -(with)e Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g -Ft(ERR)1290 4098 y Fu(trap.)630 4244 y Ft(extglob)144 -b Fu(If)26 b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g -(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 4354 y(Section)j(3.5.8.1)i -([P)m(attern)f(Matc)m(hing],)g(page)f(30\))h(are)f(enabled.)630 -4500 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p -Fj(string)p Ft(')49 b Fu(and)i Ft($")p Fj(string)p Ft(")e -Fu(quoting)k(is)e(p)s(erformed)f(within)1110 4609 y Ft(${)p -Fj(parameter)p Ft(})31 b Fu(expansions)k(enclosed)g(in)g(double)f -(quotes.)55 b(This)33 b(option)1110 4719 y(is)d(enabled)h(b)m(y)f -(default.)630 4865 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d -(whic)m(h)g(fail)h(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g -(ex-)1110 4975 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 -5121 y Ft(force_fignore)1110 5230 y Fu(If)43 b(set,)k(the)d(su\016xes)f -(sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5 -b(ariable)44 b(cause)1110 5340 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h -(when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)p +b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y Ft(cdable_vars)1110 +408 y Fu(If)34 b(this)h(is)g(set,)i(an)e(argumen)m(t)g(to)h(the)f +Ft(cd)f Fu(builtin)h(command)f(that)i(is)f(not)1110 518 +y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h(name)f(of)h(a)g(v) +-5 b(ariable)31 b(whose)g(v)-5 b(alue)31 b(is)1110 628 +y(the)g(directory)f(to)i(c)m(hange)f(to.)630 792 y Ft(cdspell)144 +b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g(sp)s(elling)h(of)f(a)g +(directory)h(comp)s(onen)m(t)f(in)g(a)h Ft(cd)1110 902 +y Fu(command)i(will)h(b)s(e)f(corrected.)43 b(The)30 +b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110 +1011 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47 +b(and)40 b(a)i(c)m(haracter)h(to)s(o)g(man)m(y)-8 b(.)74 +b(If)42 b(a)1110 1121 y(correction)25 b(is)e(found,)g(the)h(corrected)g +(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 1230 +y(pro)s(ceeds.)40 b(This)30 b(option)h(is)f(only)h(used)e(b)m(y)h(in)m +(teractiv)m(e)k(shells.)630 1395 y Ft(checkhash)1110 +1504 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f +(command)f(found)g(in)g(the)h(hash)f(table)1110 1614 +y(exists)k(b)s(efore)f(trying)h(to)h(execute)g(it.)48 +b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 1724 +y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630 +1888 y Ft(checkjobs)1110 1998 y Fu(If)d(set,)i(Bash)e(lists)h(the)g +(status)g(of)f(an)m(y)h(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore) +1110 2107 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 +b(If)41 b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110 +2217 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h +(exit)g(is)g(attempted)h(without)e(an)1110 2326 y(in)m(terv)m(ening)d +(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(100\).)40 +b(The)1110 2436 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h +(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2600 y Ft(checkwinsize)1110 +2710 y Fu(If)41 b(set,)k(Bash)c(c)m(hec)m(ks)i(the)f(windo)m(w)e(size)j +(after)f(eac)m(h)g(command)f(and,)j(if)1110 2819 y(necessary)-8 +b(,)31 b(up)s(dates)f(the)g(v)-5 b(alues)31 b(of)g Ft(LINES)e +Fu(and)g Ft(COLUMNS)p Fu(.)630 2984 y Ft(cmdhist)144 +b Fu(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e)g(all)g(lines)f +(of)g(a)h(m)m(ultiple-line)g(command)1110 3093 y(in)c(the)g(same)g +(history)g(en)m(try)-8 b(.)42 b(This)30 b(allo)m(ws)i(easy)g +(re-editing)g(of)f(m)m(ulti-line)1110 3203 y(commands.)630 +3367 y Ft(compat31)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s +(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.1)h(with)e(resp)s(ect) +1110 3477 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h +(command's)f(`)p Ft(=~)p Fu(')g(op)s(erator)1110 3587 +y(and)i(with)f(resp)s(ect)i(to)g(lo)s(cale-sp)s(eci\014c)h(string)e +(comparison)g(when)f(using)1110 3696 y(the)31 b Ft([[)e +Fu(conditional)j(command's)e(`)p Ft(<)p Fu(')h(and)f(`)p +Ft(>)p Fu(')g(op)s(erators.)41 b(Bash)31 b(v)m(ersions)1110 +3806 y(prior)g(to)h(bash-4.1)g(use)g(ASCI)s(I)e(collation)j(and)e +(strcmp\(3\);)i(bash-4.1)g(and)1110 3915 y(later)e(use)f(the)h(curren)m +(t)f(lo)s(cale's)i(collation)h(sequence)e(and)f(strcoll\(3\).)630 +4080 y Ft(compat32)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s +(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.2)h(with)e(resp)s(ect) +1110 4189 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g +(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 4299 +y(command's)21 b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s +(erators)g(\(see)h(previous)e(item\))i(and)e(the)h(e\013ect)i(of)1110 +4408 y(in)m(terrupting)h(a)h(command)e(list.)40 b(Bash)24 +b(v)m(ersions)h(3.2)g(and)f(earlier)h(con)m(tin)m(ue)1110 +4518 y(with)33 b(the)g(next)g(command)g(in)g(the)g(list)h(after)f(one)h +(terminates)g(due)e(to)i(an)1110 4628 y(in)m(terrupt.)630 +4792 y Ft(compat40)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s +(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect) +1110 4902 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g +(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 5011 +y(command's)28 b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')h(op)s +(erators)f(\(see)i(description)e(of)h Ft(compat31)p Fu(\))e(and)1110 +5121 y(the)38 b(e\013ect)i(of)e(in)m(terrupting)f(a)i(command)e(list.) +64 b(Bash)38 b(v)m(ersions)h(4.0)g(and)1110 5230 y(later)24 +b(in)m(terrupt)f(the)g(list)h(as)g(if)f(the)h(shell)f(receiv)m(ed)i +(the)e(in)m(terrupt;)i(previous)1110 5340 y(v)m(ersions)31 +b(con)m(tin)m(ue)g(with)f(the)h(next)g(command)f(in)g(the)g(list.)p eop end %%Page: 66 72 TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(66)1110 299 y(ignored)37 -b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g(completions.)62 -b(See)37 b(Section)h(5.2)1110 408 y([Bash)24 b(V)-8 b(ariables],)27 -b(page)e(69,)h(for)d(a)h(description)g(of)g Ft(FIGNORE)p -Fu(.)37 b(This)22 b(option)1110 518 y(is)30 b(enabled)h(b)m(y)f -(default.)630 701 y Ft(globasciiranges)1110 810 y Fu(If)j(set,)h(range) -f(expressions)g(used)f(in)h(pattern)g(matc)m(hing)h(brac)m(k)m(et)h -(expres-)1110 920 y(sions)28 b(\(see)h(Section)h(3.5.8.1)g([P)m(attern) -g(Matc)m(hing],)h(page)e(30\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 -1029 y(in)i(the)g(traditional)i(C)d(lo)s(cale)j(when)d(p)s(erforming)g -(comparisons.)44 b(That)31 b(is,)1110 1139 y(the)d(curren)m(t)g(lo)s -(cale's)i(collating)h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g -(accoun)m(t,)i(so)1110 1249 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i -(b)s(et)m(w)m(een)e(`)p Ft(A)p Fu(')g(and)f(`)p Ft(B)p -Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m(w)m(er-)1110 -1358 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i(together.)630 -1541 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern)f(`)p -Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m(text)j -(will)1110 1650 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or)f(more) -g(directories)h(and)e(sub)s(directories.)54 b(If)1110 -1760 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p -Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110 -1870 y(matc)m(h.)630 2052 y Ft(gnu_errfmt)1110 2162 y -Fu(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g -(standard)f Fm(gnu)g Fu(error)1110 2271 y(message)c(format.)630 -2454 y Ft(histappend)1110 2564 y Fu(If)c(set,)j(the)e(history)g(list)g -(is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5 -b(alue)29 b(of)1110 2673 y(the)d Ft(HISTFILE)d Fu(v)-5 -b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m -(erwriting)1110 2783 y(the)31 b(\014le.)630 2966 y Ft(histreedit)1110 -3075 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g -(user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110 -3185 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 -3367 y Ft(histverify)1110 3477 y Fu(If)35 b(set,)i(and)e(Readline)h(is) -f(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110 -3587 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g -(parser.)59 b(Instead,)38 b(the)1110 3696 y(resulting)i(line)f(is)h -(loaded)g(in)m(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing) -1110 3806 y(further)29 b(mo)s(di\014cation.)630 3988 -y Ft(hostcomplete)1110 4098 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f -(b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110 -4208 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f -(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 4317 y(pleted)g(\(see)h -(Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g -(120\).)1110 4427 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) -630 4609 y Ft(huponexit)1110 4719 y Fu(If)i(set,)i(Bash)f(will)h(send)d -Ft(SIGHUP)h Fu(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login) -1110 4829 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g -(page)f(38\).)630 5011 y Ft(interactive_comments)1110 -5121 y Fu(Allo)m(w)c(a)g(w)m(ord)e(b)s(eginning)g(with)h(`)p -Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and)f(all)i(remain-)1110 -5230 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 -5340 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)p -eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(compat41)96 +b Fu(If)25 b(set,)j(Bash,)e(when)f(in)g Fm(posix)g Fu(mo)s(de,)i +(treats)f(a)g(single)h(quote)f(in)f(a)h(double-)1110 +408 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h(sp)s(ecial)f(c)m +(haracter.)90 b(The)45 b(single)1110 518 y(quotes)34 +b(m)m(ust)g(matc)m(h)h(\(an)f(ev)m(en)h(n)m(um)m(b)s(er\))e(and)g(the)h +(c)m(haracters)h(b)s(et)m(w)m(een)1110 628 y(the)40 b(single)g(quotes)g +(are)g(considered)g(quoted.)69 b(This)38 b(is)i(the)g(b)s(eha)m(vior)g +(of)1110 737 y Fm(posix)f Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69 +b(The)39 b(default)g(Bash)h(b)s(eha)m(vior)g(re-)1110 +847 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630 +998 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s +(cess)g(the)g(replacemen)m(t)h(string)e(in)h(the)g(pattern)1110 +1107 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5 +b(al.)630 1258 y Ft(compat43)96 b Fu(If)24 b(set,)j(Bash)e(do)s(es)g +(not)g(prin)m(t)g(a)g(w)m(arning)g(message)h(if)f(an)g(attempt)h(is)f +(made)1110 1367 y(to)43 b(use)g(a)g(quoted)f(comp)s(ound)f(arra)m(y)i +(assignmen)m(t)h(as)f(an)f(argumen)m(t)h(to)1110 1477 +y Ft(declare)p Fu(,)31 b(mak)m(es)i(w)m(ord)f(expansion)g(errors)g +(non-fatal)i(errors)d(that)i(cause)1110 1587 y(the)28 +b(curren)m(t)h(command)f(to)h(fail)g(\(the)f(default)h(b)s(eha)m(vior)f +(is)h(to)g(mak)m(e)g(them)1110 1696 y(fatal)42 b(errors)e(that)i(cause) +f(the)h(shell)f(to)g(exit\),)k(and)c(do)s(es)f(not)h(reset)h(the)1110 +1806 y(lo)s(op)34 b(state)h(when)f(a)g(shell)g(function)g(is)g +(executed)h(\(this)f(allo)m(ws)h Ft(break)e Fu(or)1110 +1915 y Ft(continue)25 b Fu(in)j(a)g(shell)g(function)f(to)i(a\013ect)g +(lo)s(ops)f(in)f(the)h(caller's)h(con)m(text\).)630 2066 +y Ft(complete_fullquote)1110 2176 y Fu(If)i(set,)g(Bash)h(quotes)f(all) +h(shell)f(metac)m(haracters)i(in)e(\014lenames)g(and)g(direc-)1110 +2285 y(tory)g(names)f(when)g(p)s(erforming)f(completion.)43 +b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m(es)1110 2395 +y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g(sign)g(from)f +(the)h(set)g(of)f(c)m(haracters)1110 2504 y(that)f(will)g(b)s(e)f +(quoted)g(in)g(completed)i(\014lenames)e(when)f(these)i(metac)m(har-) +1110 2614 y(acters)29 b(app)s(ear)e(in)g(shell)h(v)-5 +b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e(completed.) +1110 2724 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)-5 +b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110 +2833 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,) +g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 2943 +y(\014lenames)j(will)h(not)f(b)s(e)g(quoted,)h(either.)41 +b(This)28 b(is)i(activ)m(e)h(only)e(when)g(bash)1110 +3052 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f +(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 3162 +y(is)41 b(set)g(b)m(y)g(default,)j(whic)m(h)c(is)h(the)g(default)g +(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 3271 y(through)30 +b(4.2.)630 3422 y Ft(direxpand)1110 3532 y Fu(If)k(set,)i(Bash)f +(replaces)g(directory)g(names)g(with)f(the)g(results)h(of)f(w)m(ord)g +(ex-)1110 3641 y(pansion)k(when)g(p)s(erforming)f(\014lename)i +(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 3751 +y(con)m(ten)m(ts)29 b(of)e(the)g(readline)h(editing)g(bu\013er.)38 +b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 3861 +y(preserv)m(e)j(what)f(the)g(user)g(t)m(yp)s(ed.)630 +4011 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s +(elling)g(correction)g(on)g(directory)g(names)f(during)1110 +4121 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g +(initially)h(supplied)e(do)s(es)h(not)1110 4230 y(exist.)630 +4381 y Ft(dotglob)144 b Fu(If)27 b(set,)i(Bash)f(includes)g +(\014lenames)g(b)s(eginning)f(with)g(a)h(`.')41 b(in)27 +b(the)h(results)g(of)1110 4491 y(\014lename)j(expansion.)630 +4641 y Ft(execfail)96 b Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m +(teractiv)m(e)i(shell)e(will)f(not)h(exit)h(if)e(it)h(cannot)h(execute) +1110 4751 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to) +h(the)f Ft(exec)f Fu(builtin)h(command.)39 b(An)1110 +4861 y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e +Ft(exec)f Fu(fails.)630 5011 y Ft(expand_aliases)1110 +5121 y Fu(If)j(set,)h(aliases)g(are)g(expanded)e(as)h(describ)s(ed)f(b) +s(elo)m(w)h(under)f(Aliases,)i(Sec-)1110 5230 y(tion)38 +b(6.6)h([Aliases],)j(page)d(90.)64 b(This)37 b(option)h(is)g(enabled)g +(b)m(y)g(default)g(for)1110 5340 y(in)m(teractiv)m(e)33 +b(shells.)p eop end %%Page: 67 73 TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(lastpipe)96 -b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f(not)f(activ)m(e,)k -(the)d(shell)f(runs)f(the)i(last)g(command)1110 408 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 518 y(en)m(vironmen)m(t.)630 -677 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h -Ft(cmdhist)e Fu(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110 -787 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 897 y(semicolon)32 -b(separators)f(where)e(p)s(ossible.)630 1056 y Ft(login_shell)1110 -1166 y Fu(The)35 b(shell)h(sets)g(this)f(option)h(if)g(it)g(is)f -(started)h(as)g(a)g(login)g(shell)g(\(see)g(Sec-)1110 -1275 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(80\).)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 -1435 y Ft(mailwarn)96 b Fu(If)34 b(set,)i(and)e(a)h(\014le)g(that)g -(Bash)f(is)h(c)m(hec)m(king)h(for)f(mail)g(has)f(b)s(een)g(accessed) -1110 1544 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m -(ed,)k(the)c(message)h Ft("The)k(mail)h(in)f Fj(mail-)1110 -1654 y(file)g Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)m(ed.)630 -1813 y Ft(no_empty_cmd_completion)1110 1923 y Fu(If)g(set,)g(and)g -(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g(not)g(attempt)i(to)e -(searc)m(h)1110 2032 y(the)25 b Ft(PATH)f Fu(for)h(p)s(ossible)f -(completions)j(when)d(completion)i(is)f(attempted)h(on)1110 -2142 y(an)k(empt)m(y)h(line.)630 2301 y Ft(nocaseglob)1110 -2411 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g(\014lenames)g(in)f(a)h -(case-insensitiv)m(e)j(fashion)c(when)1110 2521 y(p)s(erforming)29 -b(\014lename)i(expansion.)630 2680 y Ft(nocasematch)1110 -2790 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g(patterns)g(in)f(a)h -(case-insensitiv)m(e)i(fashion)d(when)1110 2899 y(p)s(erforming)31 -b(matc)m(hing)i(while)f(executing)i Ft(case)d Fu(or)h -Ft([[)g Fu(conditional)h(com-)1110 3009 y(mands.)630 -3168 y Ft(nullglob)96 b Fu(If)23 b(set,)j(Bash)e(allo)m(ws)g -(\014lename)g(patterns)g(whic)m(h)f(matc)m(h)h(no)g(\014les)f(to)i -(expand)1110 3278 y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g -(themselv)m(es.)630 3437 y Ft(progcomp)96 b Fu(If)25 -b(set,)i(the)f(programmable)g(completion)g(facilities)i(\(see)f -(Section)f(8.6)h([Pro-)1110 3547 y(grammable)45 b(Completion],)k(page)c -(124\))h(are)f(enabled.)82 b(This)44 b(option)h(is)1110 -3656 y(enabled)30 b(b)m(y)h(default.)630 3816 y Ft(promptvars)1110 -3925 y Fu(If)50 b(set,)56 b(prompt)49 b(strings)h(undergo)g(parameter)h -(expansion,)k(command)1110 4035 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 -4144 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 4254 y(Prompt],)30 -b(page)h(92\).)42 b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.) -630 4413 y Ft(restricted_shell)1110 4523 y Fu(The)40 -b(shell)h(sets)g(this)g(option)g(if)g(it)h(is)e(started)i(in)e -(restricted)i(mo)s(de)e(\(see)1110 4633 y(Section)c(6.10)g([The)f -(Restricted)g(Shell],)i(page)e(93\).)56 b(The)34 b(v)-5 -b(alue)35 b(ma)m(y)h(not)1110 4742 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 4852 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 -4961 y(stricted.)630 5121 y Ft(shift_verbose)1110 5230 -y Fu(If)g(this)g(is)g(set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m(ts)f -(an)h(error)g(message)i(when)d(the)1110 5340 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.)p eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(extdebug)96 +b Fu(If)36 b(set)h(at)h(shell)f(in)m(v)m(o)s(cation,)j(arrange)d(to)h +(execute)g(the)f(debugger)f(pro\014le)1110 408 y(b)s(efore)f(the)h +(shell)f(starts,)j(iden)m(tical)f(to)f(the)g Ft(--debugger)c +Fu(option.)56 b(If)35 b(set)1110 518 y(after)25 b(in)m(v)m(o)s(cation,) +j(b)s(eha)m(vior)d(in)m(tended)g(for)f(use)h(b)m(y)g(debuggers)f(is)h +(enabled:)1159 652 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g +Ft(declare)d Fu(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290 +762 y(Builtins],)29 b(page)g(49\))g(displa)m(ys)f(the)g(source)h +(\014le)f(name)g(and)f(line)h(n)m(um-)1290 871 y(b)s(er)h(corresp)s +(onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i(an)f(argu-) +1290 981 y(men)m(t.)1159 1115 y(2.)61 b(If)20 b(the)h(command)g(run)e +(b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 +b(alue,)1290 1224 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g +(not)i(executed.)1159 1358 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m +(y)i(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38 +b(of)f(2,)1290 1468 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h +(subroutine)e(\(a)i(shell)g(function)f(or)1290 1577 y(a)h(shell)g +(script)f(executed)h(b)m(y)g(the)f Ft(.)h Fu(or)f Ft(source)f +Fu(builtins\),)i(the)g(shell)1290 1687 y(sim)m(ulates)d(a)g(call)h(to)f +Ft(return)p Fu(.)1159 1821 y(4.)61 b Ft(BASH_ARGC)34 +b Fu(and)i Ft(BASH_ARGV)e Fu(are)j(up)s(dated)e(as)h(describ)s(ed)g(in) +g(their)1290 1931 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g +(V)-8 b(ariables],)32 b(page)f(71\).)1159 2064 y(5.)61 +b(F)-8 b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56 +b(substitution,)63 b(shell)1290 2174 y(functions,)32 +b(and)e(subshells)h(in)m(v)m(ok)m(ed)i(with)e Ft(\()f +Fj(command)e Ft(\))j Fu(inherit)h(the)1290 2284 y Ft(DEBUG)d +Fu(and)h Ft(RETURN)e Fu(traps.)1159 2418 y(6.)61 b(Error)41 +b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f +(func-)1290 2527 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i +(with)e Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g +Ft(ERR)1290 2637 y Fu(trap.)630 2795 y Ft(extglob)144 +b Fu(If)26 b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g +(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 2905 y(Section)j(3.5.8.1)i +([P)m(attern)f(Matc)m(hing],)g(page)f(31\))h(are)f(enabled.)630 +3063 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p +Fj(string)p Ft(')49 b Fu(and)i Ft($")p Fj(string)p Ft(")e +Fu(quoting)k(is)e(p)s(erformed)f(within)1110 3173 y Ft(${)p +Fj(parameter)p Ft(})31 b Fu(expansions)k(enclosed)g(in)g(double)f +(quotes.)55 b(This)33 b(option)1110 3282 y(is)d(enabled)h(b)m(y)f +(default.)630 3440 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d +(whic)m(h)g(fail)h(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g +(ex-)1110 3550 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 +3708 y Ft(force_fignore)1110 3818 y Fu(If)43 b(set,)k(the)d(su\016xes)f +(sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5 +b(ariable)44 b(cause)1110 3927 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h +(when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)1110 +4037 y(ignored)37 b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g +(completions.)62 b(See)37 b(Section)h(5.2)1110 4147 y([Bash)24 +b(V)-8 b(ariables],)27 b(page)e(71,)h(for)d(a)h(description)g(of)g +Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 4256 y(is)30 +b(enabled)h(b)m(y)f(default.)630 4415 y Ft(globasciiranges)1110 +4524 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc) +m(hing)h(brac)m(k)m(et)h(expres-)1110 4634 y(sions)28 +b(\(see)h(Section)h(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e +(31\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 4743 y(in)i(the)g(traditional)i +(C)d(lo)s(cale)j(when)d(p)s(erforming)g(comparisons.)44 +b(That)31 b(is,)1110 4853 y(the)d(curren)m(t)g(lo)s(cale's)i(collating) +h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110 +4963 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p +Ft(A)p Fu(')g(and)f(`)p Ft(B)p Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m +(w)m(er-)1110 5072 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i +(together.)630 5230 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern) +f(`)p Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m +(text)j(will)1110 5340 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or) +f(more)g(directories)h(and)e(sub)s(directories.)54 b(If)p +eop end %%Page: 68 74 TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(68)630 299 y Ft(sourcepath)1110 -408 y Fu(If)22 b(set,)j(the)e Ft(source)e Fu(builtin)h(uses)g(the)h(v) --5 b(alue)23 b(of)g Ft(PATH)e Fu(to)j(\014nd)d(the)h(directory)1110 -518 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 628 y(b)m(y)j(default.) -630 787 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e -Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f -(de-)1110 897 y(fault.)630 1056 y(The)c(return)f(status)i(when)f -(listing)h(options)g(is)f(zero)i(if)e(all)i Fr(optnames)i -Fu(are)d(enabled,)g(non-)630 1166 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 1275 y(unless)30 b(an)g Fr(optname)36 -b Fu(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.)150 -1508 y Fs(4.4)68 b(Sp)t(ecial)45 b(Builtins)150 1667 -y Fu(F)-8 b(or)35 b(historical)h(reasons,)g(the)e Fm(posix)g -Fu(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e(commands)g -(as)h Fl(sp)-5 b(e-)150 1777 y(cial)p Fu(.)47 b(When)33 -b(Bash)f(is)h(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g(sp)s -(ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150 -1886 y(commands)e(in)g(three)h(resp)s(ects:)199 2021 -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 2155 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 2290 -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 -2399 y(after)i(the)f(command)h(completes.)275 2559 y(When)36 -b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f Fu(mo)s(de,)j(these)f -(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m(tly)h(than)150 -2668 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41 -b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s(ed)f(in)h -(Section)h(6.11)150 2778 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(94.)275 -2912 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390 -3047 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f -(readonly)f(return)h(set)390 3156 y(shift)g(trap)h(unset)p +b(Shell)30 b(Builtin)h(Commands)2069 b(68)1110 299 y(the)30 +b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p Ft(/)p +Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110 +408 y(matc)m(h.)630 568 y Ft(gnu_errfmt)1110 677 y Fu(If)35 +b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g +(standard)f Fm(gnu)g Fu(error)1110 787 y(message)c(format.)630 +946 y Ft(histappend)1110 1056 y Fu(If)c(set,)j(the)e(history)g(list)g +(is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5 +b(alue)29 b(of)1110 1166 y(the)d Ft(HISTFILE)d Fu(v)-5 +b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m +(erwriting)1110 1275 y(the)31 b(\014le.)630 1435 y Ft(histreedit)1110 +1544 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g +(user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110 +1654 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 +1813 y Ft(histverify)1110 1923 y Fu(If)35 b(set,)i(and)e(Readline)h(is) +f(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110 +2032 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g +(parser.)59 b(Instead,)38 b(the)1110 2142 y(resulting)i(line)f(is)h +(loaded)g(in)m(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing) +1110 2252 y(further)29 b(mo)s(di\014cation.)630 2411 +y Ft(hostcomplete)1110 2521 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f +(b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110 +2630 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f +(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 2740 y(pleted)g(\(see)h +(Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g +(124\).)1110 2849 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) +630 3009 y Ft(huponexit)1110 3118 y Fu(If)i(set,)i(Bash)f(will)h(send)d +Ft(SIGHUP)h Fu(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login) +1110 3228 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g +(page)f(39\).)630 3387 y Ft(inherit_errexit)1110 3497 +y Fu(If)e(set,)h(command)g(substitution)f(inherits)g(the)g(v)-5 +b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 3606 +y(tion,)33 b(instead)g(of)f(unsetting)g(it)h(in)f(the)g(subshell)f(en)m +(vironmen)m(t.)46 b(This)32 b(op-)1110 3716 y(tion)f(is)f(enabled)h +(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)630 3875 +y Ft(interactive_comments)1110 3985 y Fu(Allo)m(w)d(a)g(w)m(ord)e(b)s +(eginning)g(with)h(`)p Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and) +f(all)i(remain-)1110 4095 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g +(to)g(b)s(e)f(ignored)g(in)g(an)g(in)m(teractiv)m(e)j(shell.)1110 +4204 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 +4364 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f +(not)f(activ)m(e,)k(the)d(shell)f(runs)f(the)i(last)g(command)1110 +4473 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m +(kground)g(in)g(the)g(curren)m(t)g(shell)1110 4583 y(en)m(vironmen)m +(t.)630 4742 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h +Ft(cmdhist)e Fu(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110 +4852 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s +(edded)g(newlines)h(rather)g(than)f(using)1110 4961 y(semicolon)32 +b(separators)f(where)e(p)s(ossible.)630 5121 y Ft(login_shell)1110 +5230 y Fu(The)35 b(shell)h(sets)g(this)f(option)h(if)g(it)g(is)f +(started)h(as)g(a)g(login)g(shell)g(\(see)g(Sec-)1110 +5340 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(82\).)41 +b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m(hanged.)p eop end %%Page: 69 75 -TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(69)150 299 y Fp(5)80 -b(Shell)53 b(V)-13 b(ariables)150 541 y Fu(This)21 b(c)m(hapter)i +TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(69)630 299 y Ft(mailwarn)96 +b Fu(If)34 b(set,)i(and)e(a)h(\014le)g(that)g(Bash)f(is)h(c)m(hec)m +(king)h(for)f(mail)g(has)f(b)s(een)g(accessed)1110 408 +y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m(ed,)k(the) +c(message)h Ft("The)k(mail)h(in)f Fj(mail-)1110 518 y(file)g +Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)m(ed.)630 +693 y Ft(no_empty_cmd_completion)1110 803 y Fu(If)g(set,)g(and)g +(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g(not)g(attempt)i(to)e +(searc)m(h)1110 913 y(the)25 b Ft(PATH)f Fu(for)h(p)s(ossible)f +(completions)j(when)d(completion)i(is)f(attempted)h(on)1110 +1022 y(an)k(empt)m(y)h(line.)630 1198 y Ft(nocaseglob)1110 +1307 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g(\014lenames)g(in)f(a)h +(case-insensitiv)m(e)j(fashion)c(when)1110 1417 y(p)s(erforming)29 +b(\014lename)i(expansion.)630 1592 y Ft(nocasematch)1110 +1702 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g(patterns)g(in)f(a)h +(case-insensitiv)m(e)i(fashion)d(when)1110 1811 y(p)s(erforming)31 +b(matc)m(hing)i(while)f(executing)i Ft(case)d Fu(or)h +Ft([[)g Fu(conditional)h(com-)1110 1921 y(mands,)d(when)g(p)s +(erforming)g(pattern)h(substitution)g(w)m(ord)g(expansions,)g(or)1110 +2030 y(when)g(\014ltering)i(p)s(ossible)f(completions)h(as)g(part)f(of) +h(programmable)f(com-)1110 2140 y(pletion.)630 2315 y +Ft(nullglob)96 b Fu(If)23 b(set,)j(Bash)e(allo)m(ws)g(\014lename)g +(patterns)g(whic)m(h)f(matc)m(h)h(no)g(\014les)f(to)i(expand)1110 +2425 y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g(themselv)m(es.) +630 2600 y Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g +(completion)g(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 +2710 y(grammable)45 b(Completion],)k(page)c(129\))h(are)f(enabled.)82 +b(This)44 b(option)h(is)1110 2819 y(enabled)30 b(b)m(y)h(default.)630 +2995 y Ft(promptvars)1110 3104 y Fu(If)50 b(set,)56 b(prompt)49 +b(strings)h(undergo)g(parameter)h(expansion,)k(command)1110 +3214 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo) +m(v)-5 b(al)35 b(after)f(b)s(eing)1110 3324 y(expanded)53 +b(as)h(describ)s(ed)e(b)s(elo)m(w)i(\(see)h(Section)f(6.9)h([Con)m +(trolling)g(the)1110 3433 y(Prompt],)30 b(page)h(94\).)42 +b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)630 +3608 y Ft(restricted_shell)1110 3718 y Fu(The)40 b(shell)h(sets)g(this) +g(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see) +1110 3828 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e +(95\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110 +3937 y(b)s(e)c(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f +(the)h(startup)g(\014les)f(are)i(executed,)1110 4047 +y(allo)m(wing)k(the)e(startup)f(\014les)h(to)g(disco)m(v)m(er)h +(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 4156 +y(stricted.)630 4332 y Ft(shift_verbose)1110 4441 y Fu(If)g(this)g(is)g +(set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m(ts)f(an)h(error)g(message) +i(when)d(the)1110 4551 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m +(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 4726 y +Ft(sourcepath)1110 4836 y Fu(If)22 b(set,)j(the)e Ft(source)e +Fu(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Ft(PATH)e +Fu(to)j(\014nd)d(the)h(directory)1110 4945 y(con)m(taining)29 +b(the)e(\014le)h(supplied)e(as)h(an)g(argumen)m(t.)40 +b(This)27 b(option)h(is)f(enabled)1110 5055 y(b)m(y)j(default.)630 +5230 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e +Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f +(de-)1110 5340 y(fault.)p eop end +%%Page: 70 76 +TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41 +b(Shell)30 b(Builtin)h(Commands)2069 b(70)630 299 y(The)27 +b(return)f(status)i(when)f(listing)h(options)g(is)f(zero)i(if)e(all)i +Fr(optnames)i Fu(are)d(enabled,)g(non-)630 408 y(zero)40 +b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g(options,)i(the)e +(return)f(status)h(is)g(zero)630 518 y(unless)30 b(an)g +Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.) +150 759 y Fs(4.4)68 b(Sp)t(ecial)45 b(Builtins)150 918 +y Fu(F)-8 b(or)35 b(historical)h(reasons,)g(the)e Fm(posix)g +Fu(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e(commands)g +(as)h Fl(sp)-5 b(e-)150 1028 y(cial)p Fu(.)47 b(When)33 +b(Bash)f(is)h(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g(sp)s +(ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150 +1137 y(commands)e(in)g(three)h(resp)s(ects:)199 1272 +y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s(efore)h(shell)h +(functions)f(during)f(command)h(lo)s(okup.)199 1406 y(2.)61 +b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error)g(status,)h +(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 1541 +y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f(command) +g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m(t)330 +1650 y(after)i(the)f(command)h(completes.)275 1810 y(When)36 +b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f Fu(mo)s(de,)j(these)f +(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m(tly)h(than)150 +1919 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41 +b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s(ed)f(in)h +(Section)h(6.11)150 2029 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(96.)275 +2164 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390 +2298 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f +(readonly)f(return)h(set)390 2408 y(shift)g(trap)h(unset)p +eop end +%%Page: 71 77 +TeXDict begin 71 76 bop 3659 -116 a Fu(71)150 299 y Fp(5)80 +b(Shell)53 b(V)-13 b(ariables)150 539 y Fu(This)21 b(c)m(hapter)i (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 Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11 -b(ariables)150 1047 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5 +648 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 +b(ariables.)150 892 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11 +b(ariables)150 1051 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5 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 +(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1161 y(assigns)f(a)f (default)h(v)-5 b(alue)31 b(to)g(the)f(v)-5 b(ariable.)150 -1320 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g +1323 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g (directories)h(used)f(as)g(a)g(searc)m(h)h(path)e(for)h(the)g -Ft(cd)f Fu(builtin)630 1430 y(command.)150 1592 y Ft(HOME)288 +Ft(cd)f Fu(builtin)630 1433 y(command.)150 1594 y Ft(HOME)288 b Fu(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g (for)f(the)h Ft(cd)f Fu(builtin)g(command.)38 b(The)630 -1702 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 +1704 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(22\).)150 -1973 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f +(3.5.2)h([Tilde)630 1813 y(Expansion],)30 b(page)h(22\).)150 +1975 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f (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 Ft(MAIL)288 +(as)i(part)630 2084 y(of)31 b(expansion.)150 2246 y Ft(MAIL)288 b Fu(If)44 b(this)g(parameter)h(is)g(set)g(to)g(a)f(\014lename)h(or)f (directory)h(name)g(and)f(the)g Ft(MAILPATH)630 2355 y Fu(v)-5 b(ariable)32 b(is)e(not)h(set,)h(Bash)f(informs)f(the)h(user) f(of)h(the)g(arriv)-5 b(al)31 b(of)g(mail)g(in)g(the)g(sp)s(eci\014ed) -630 2464 y(\014le)f(or)h(Maildir-format)g(directory)-8 -b(.)150 2627 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f +630 2465 y(\014le)f(or)h(Maildir-format)g(directory)-8 +b(.)150 2626 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f (\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 +(new)h(mail)630 2845 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m (y)g(separating)h(the)f(\014lename)g(from)f(the)h(message)h(with)e(a)i (`)p Ft(?)p Fu('.)630 2955 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g (message,)i Ft($_)e Fu(expands)f(to)i(the)f(name)g(of)h(the)f(curren)m -(t)630 3065 y(mail)f(\014le.)150 3227 y Ft(OPTARG)192 +(t)630 3064 y(mail)f(\014le.)150 3226 y Ft(OPTARG)192 b Fu(The)30 b(v)-5 b(alue)31 b(of)f(the)h(last)g(option)g(argumen)m(t)g (pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f Fu(builtin.)150 -3389 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g +3387 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g (argumen)m(t)g(pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f -Fu(builtin.)150 3552 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f +Fu(builtin.)150 3548 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f (of)f(directories)h(in)e(whic)m(h)h(the)g(shell)g(lo)s(oks)h(for)f -(commands.)45 b(A)630 3661 y(zero-length)e(\(n)m(ull\))g(directory)f +(commands.)45 b(A)630 3658 y(zero-length)e(\(n)m(ull\))g(directory)f (name)g(in)g(the)g(v)-5 b(alue)42 b(of)g Ft(PATH)f Fu(indicates)i(the)f -(curren)m(t)630 3771 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f +(curren)m(t)630 3768 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 Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55 +(colons,)g(or)f(as)g(an)630 3877 y(initial)f(or)e(trailing)h(colon.)150 +4039 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55 b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Ft(\\s-\\v\\$)28 -b Fu('.)56 b(See)36 b(Section)g(6.9)630 4152 y([Con)m(trolling)42 -b(the)e(Prompt],)j(page)e(92,)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 Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4424 y Ft(PS2)336 +b Fu('.)56 b(See)36 b(Section)g(6.9)630 4148 y([Con)m(trolling)42 +b(the)e(Prompt],)j(page)e(94,)j(for)c(the)g(complete)i(list)f(of)f +(escap)s(e)h(sequences)630 4258 y(that)31 b(are)g(expanded)e(b)s(efore) +h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4419 y Ft(PS2)336 b Fu(The)30 b(secondary)g(prompt)g(string.)41 b(The)29 b(default)i(v)-5 b(alue)31 b(is)f(`)p Ft(>)g Fu('.)150 -4661 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4820 +4663 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4822 y Fu(These)45 b(v)-5 b(ariables)46 b(are)g(set)g(or)f(used)f(b)m(y)h (Bash,)50 b(but)44 b(other)i(shells)f(do)h(not)f(normally)h(treat)g -(them)150 4929 y(sp)s(ecially)-8 b(.)275 5067 y(A)24 +(them)150 4932 y(sp)s(ecially)-8 b(.)275 5068 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 +b(for)f(con)m(trolling)150 5178 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 Ft(BASH)288 +b(ariables],)32 b(page)g(103\).)150 5340 y Ft(BASH)288 b Fu(The)30 b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t) g(instance)h(of)g(Bash.)p eop end -%%Page: 70 76 -TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(70)150 299 y Ft(BASHOPTS)96 +%%Page: 72 78 +TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(72)150 299 y Ft(BASHOPTS)96 b Fu(A)31 b(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.)41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 b(alid)630 408 y(argumen)m(t)37 b(for)g(the)g Ft(-s)f Fu(option)i(to)f(the)g Ft(shopt)f Fu(builtin)g(command)h(\(see)g -(Section)h(4.3.2)630 518 y([The)e(Shopt)g(Builtin],)i(page)f(62\).)60 +(Section)h(4.3.2)630 518 y([The)e(Shopt)g(Builtin],)i(page)f(64\).)60 b(The)36 b(options)h(app)s(earing)f(in)g Ft(BASHOPTS)e Fu(are)i(those)630 628 y(rep)s(orted)e(as)h(`)p Ft(on)p Fu(')f(b)m(y)h(`)p Ft(shopt)p Fu('.)53 b(If)34 b(this)g(v)-5 @@ -12972,2078 +13210,2162 @@ 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 Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f +b(.)150 1029 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f (ID)i(of)f(the)g(curren)m(t)g(Bash)g(pro)s(cess.)58 b(This)35 -b(di\013ers)h(from)g Ft($$)630 1113 y Fu(under)31 b(certain)j +b(di\013ers)h(from)g Ft($$)630 1139 y Fu(under)31 b(certain)j (circumstances,)h(suc)m(h)e(as)g(subshells)f(that)i(do)f(not)g(require) -g(Bash)g(to)h(b)s(e)630 1223 y(re-initialized.)150 1379 -y Ft(BASH_ALIASES)630 1489 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d +g(Bash)g(to)h(b)s(e)630 1249 y(re-initialized.)150 1431 +y Ft(BASH_ALIASES)630 1541 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d (v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f -(in)m(ternal)h(list)630 1598 y(of)c(aliases)h(as)f(main)m(tained)g(b)m +(in)m(ternal)h(list)630 1650 y(of)c(aliases)h(as)f(main)m(tained)g(b)m (y)g(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f -([Bourne)g(Shell)630 1708 y(Builtins],)f(page)e(41\).)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 Ft(BASH_ARGC)630 2084 y Fu(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 Ft(.)g Fu(or)h Ft(source)p Fu(\))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 Ft(BASH_ARGC)p Fu(.)59 -b(The)37 b(shell)g(sets)h Ft(BASH_ARGC)c Fu(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(62)h(for)e(a)h(description)630 -2741 y(of)31 b(the)f Ft(extdebug)e Fu(option)j(to)g(the)g -Ft(shopt)e Fu(builtin\).)150 2898 y Ft(BASH_ARGV)630 -3007 y Fu(An)24 b(arra)m(y)g(v)-5 b(ariable)25 b(con)m(taining)h(all)f -(of)f(the)h(parameters)f(in)g(the)g(curren)m(t)g(bash)g(execution)630 -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 Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 -3446 y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g -(debugging)g(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 -3555 y(Shopt)i(Builtin],)h(page)g(62)g(for)f(a)h(description)f(of)h -(the)f Ft(extdebug)e Fu(option)j(to)g(the)f Ft(shopt)630 -3665 y Fu(builtin\).)150 3821 y Ft(BASH_CMDS)630 3931 -y Fu(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 Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)630 -4150 y(Shell)23 b(Builtins],)j(page)e(41\).)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 Ft(BASH_COMMAND)630 4526 y Fu(The)39 b(command)h(curren)m(tly)g -(b)s(eing)f(executed)i(or)e(ab)s(out)h(to)g(b)s(e)f(executed,)44 -b(unless)39 b(the)630 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 Ft(BASH_COMPAT)630 5011 y Fu(The)i(v)-5 b(alue)34 -b(is)f(used)g(to)h(set)f(the)h(shell's)g(compatibilit)m(y)h(lev)m(el.) -51 b(See)34 b(Section)g(4.3.2)h([The)630 5121 y(Shopt)40 -b(Builtin],)45 b(page)c(62,)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 Ft(BASH_COMPAT)d -Fu(is)p eop end -%%Page: 71 77 -TeXDict begin 71 76 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(71)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 Ft(BASH_COMPAT)e Fu(is)i(set)h(to)h(a)e -(v)-5 b(alue)41 b(that)h(is)e(not)h(one)g(of)630 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 -Ft(shopt)e Fu(builtin)630 847 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i -(\(for)g(example,)h Fr(compat42)31 b Fu(means)21 b(that)g(4.2)i(and)d -(42)i(are)g(v)-5 b(alid)21 b(v)-5 b(alues\).)630 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 Ft(BASH_ENV)96 b -Fu(If)28 b(this)g(v)-5 b(ariable)30 b(is)e(set)h(when)f(Bash)g(is)h(in) -m(v)m(ok)m(ed)h(to)f(execute)h(a)e(shell)h(script,)g(its)g(v)-5 -b(alue)29 b(is)630 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(82.)150 1504 y Ft(BASH_EXECUTION_STRING)630 -1614 y Fu(The)f(command)g(argumen)m(t)h(to)g(the)g Ft(-c)e -Fu(in)m(v)m(o)s(cation)k(option.)150 1778 y Ft(BASH_LINENO)630 -1888 y Fu(An)62 b(arra)m(y)i(v)-5 b(ariable)63 b(whose)g(mem)m(b)s(ers) -e(are)j(the)e(line)h(n)m(um)m(b)s(ers)f(in)g(source)h(\014les)630 -1998 y(where)46 b(eac)m(h)i(corresp)s(onding)d(mem)m(b)s(er)h(of)h -Fr(FUNCNAME)53 b Fu(w)m(as)47 b(in)m(v)m(ok)m(ed.)91 -b Ft(${BASH_)630 2107 y(LINENO[$i]})39 b Fu(is)i(the)h(line)g(n)m(um)m -(b)s(er)e(in)i(the)f(source)h(\014le)g(\()p Ft(${BASH_SOURCE[$i+1]})p -Fu(\))630 2217 y(where)d Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i -(\(or)e Ft(${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630 -2326 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 -b Ft(LINENO)d Fu(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s -(er.)150 2491 y Ft(BASH_REMATCH)630 2600 y Fu(An)43 b(arra)m(y)i(v)-5 -b(ariable)44 b(whose)g(mem)m(b)s(ers)f(are)h(assigned)g(b)m(y)f(the)h -(`)p Ft(=~)p Fu(')g(binary)f(op)s(erator)630 2710 y(to)37 -b(the)f Ft([[)g Fu(conditional)i(command)e(\(see)h(Section)g(3.2.4.2)i -([Conditional)e(Constructs],)630 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 -Fr(n)f Fu(is)h(the)g(p)s(ortion)g(of)g(the)g(string)630 -3039 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m(thesized)h(sub)s -(expression.)39 b(This)29 b(v)-5 b(ariable)31 b(is)g(read-only)-8 -b(.)150 3203 y Ft(BASH_SOURCE)630 3313 y Fu(An)40 b(arra)m(y)h(v)-5 -b(ariable)41 b(whose)f(mem)m(b)s(ers)g(are)h(the)g(source)f -(\014lenames)h(where)f(the)g(corre-)630 3422 y(sp)s(onding)27 -b(shell)i(function)f(names)g(in)g(the)h Ft(FUNCNAME)d -Fu(arra)m(y)j(v)-5 b(ariable)30 b(are)f(de\014ned.)38 -b(The)630 3532 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c -Fu(is)k(de\014ned)f(in)g(the)h(\014le)h Ft(${BASH_SOURCE[$i]})21 -b Fu(and)630 3641 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150 -3806 y(BASH_SUBSHELL)630 3915 y Fu(Incremen)m(ted)24 -b(b)m(y)f(one)h(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m -(vironmen)m(t)i(when)f(the)h(shell)630 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 Ft(BASH_VERSINFO)630 -4299 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5 b(ariable)37 -b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(89\))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 Ft(BASH_VERSINFO[0])1110 4792 -y Fu(The)f(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i -Fr(release)5 b Fu(\).)630 4956 y Ft(BASH_VERSINFO[1])1110 -5066 y Fu(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i -Fr(v)m(ersion)p Fu(\).)630 5230 y Ft(BASH_VERSINFO[2])1110 -5340 y Fu(The)f(patc)m(h)h(lev)m(el.)p eop end -%%Page: 72 78 -TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(72)630 299 y Ft(BASH_VERSINFO[3]) -1110 408 y Fu(The)30 b(build)f(v)m(ersion.)630 591 y -Ft(BASH_VERSINFO[4])1110 701 y Fu(The)h(release)i(status)e(\(e.g.,)j -Fr(b)s(eta1)7 b Fu(\).)630 883 y Ft(BASH_VERSINFO[5])1110 -993 y Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p -Fu(.)150 1176 y Ft(BASH_VERSION)630 1285 y Fu(The)g(v)m(ersion)h(n)m -(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 -1468 y Ft(BASH_XTRACEFD)630 1577 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i -(corresp)s(onding)e(to)h(a)g(v)-5 b(alid)31 b(\014le)g(descriptor,)g -(Bash)g(will)g(write)g(the)630 1687 y(trace)37 b(output)f(generated)h -(when)f(`)p Ft(set)29 b(-x)p Fu(')36 b(is)g(enabled)h(to)g(that)f -(\014le)h(descriptor.)58 b(This)630 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 Ft(BASH_XTRACEFD)d Fu(is)k(unset)f(or)g(assigned)h(a)g -(new)f(v)-5 b(alue.)630 2016 y(Unsetting)45 b Ft(BASH_XTRACEFD)40 -b Fu(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f -(trace)630 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 Ft(BASH_XTRACEFD)c -Fu(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 Ft(CHILD_MAX)630 2637 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h -(exited)h(c)m(hild)g(status)f(v)-5 b(alues)36 b(for)f(the)g(shell)g(to) -h(remem)m(b)s(er.)55 b(Bash)630 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 -Fm(posix)p Fu(-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 Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h -Ft(select)e Fu(command)h(to)i(determine)f(the)f(terminal)i(width)d -(when)h(prin)m(ting)630 3258 y(selection)39 b(lists.)63 -b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d -Fu(option)j(is)f(enabled)h(\(see)630 3367 y(Section)44 -b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(62\),)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 Ft(SIGWINCH)p Fu(.)150 3660 y -Ft(COMP_CWORD)630 3769 y Fu(An)38 b(index)g(in)m(to)h -Ft(${COMP_WORDS})c Fu(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e -(curren)m(t)g(cursor)g(p)s(o-)630 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 Ft(COMP_LINE)630 4390 y Fu(The)38 b(curren)m(t)h(command)f -(line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5 -b(ailable)41 b(only)d(in)h(shell)f(functions)630 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 Ft(COMP_POINT)630 4902 y Fu(The)25 b(index)g(of)h(the)g(curren)m -(t)f(cursor)g(p)s(osition)h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of) -g(the)h(curren)m(t)630 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 Ft(${#COMP_LINE})p Fu(.)37 -b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 -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 +([Bourne)g(Shell)630 1760 y(Builtins],)31 b(page)g(42\).)42 +b(Elemen)m(ts)31 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the) +g(alias)h(list;)h(ho)m(w-)630 1870 y(ev)m(er,)k(unsetting)f(arra)m(y)g +(elemen)m(ts)g(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b) +s(e)f(remo)m(v)m(ed)630 1979 y(from)25 b(the)h(alias)h(list.)40 +b(If)25 b Ft(BASH_ALIASES)d Fu(is)k(unset,)g(it)g(loses)h(its)f(sp)s +(ecial)g(prop)s(erties,)g(ev)m(en)630 2089 y(if)k(it)h(is)g(subsequen)m +(tly)f(reset.)150 2271 y Ft(BASH_ARGC)630 2381 y Fu(An)39 +b(arra)m(y)g(v)-5 b(ariable)40 b(whose)f(v)-5 b(alues)39 +b(are)h(the)f(n)m(um)m(b)s(er)f(of)h(parameters)g(in)g(eac)m(h)h(frame) +630 2491 y(of)i(the)g(curren)m(t)g(bash)f(execution)i(call)g(stac)m(k.) +76 b(The)42 b(n)m(um)m(b)s(er)e(of)i(parameters)g(to)h(the)630 +2600 y(curren)m(t)38 b(subroutine)f(\(shell)i(function)e(or)i(script)f +(executed)h(with)e Ft(.)h Fu(or)g Ft(source)p Fu(\))f(is)h(at)630 +2710 y(the)27 b(top)g(of)g(the)g(stac)m(k.)41 b(When)27 +b(a)g(subroutine)f(is)h(executed,)i(the)e(n)m(um)m(b)s(er)f(of)h +(parameters)630 2819 y(passed)44 b(is)h(pushed)e(on)m(to)j +Ft(BASH_ARGC)p Fu(.)81 b(The)44 b(shell)h(sets)g Ft(BASH_ARGC)e +Fu(only)i(when)e(in)630 2929 y(extended)34 b(debugging)f(mo)s(de)g +(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(64,)g(for) +630 3039 y(a)c(description)f(of)h(the)f Ft(extdebug)e +Fu(option)j(to)g(the)g Ft(shopt)e Fu(builtin\).)150 3221 +y Ft(BASH_ARGV)630 3331 y Fu(An)24 b(arra)m(y)g(v)-5 +b(ariable)25 b(con)m(taining)h(all)f(of)f(the)h(parameters)f(in)g(the)g +(curren)m(t)g(bash)g(execution)630 3440 y(call)35 b(stac)m(k.)53 +b(The)34 b(\014nal)g(parameter)g(of)g(the)g(last)h(subroutine)e(call)i +(is)f(at)h(the)f(top)h(of)f(the)630 3550 y(stac)m(k;)28 +b(the)c(\014rst)f(parameter)i(of)f(the)g(initial)i(call)f(is)f(at)h +(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 3660 +y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f(on)m +(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 3769 +y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g(debugging)g +(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 3879 y(Shopt)g(Builtin],) +h(page)g(64,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d +Fu(option)j(to)g(the)f Ft(shopt)630 3988 y Fu(builtin\).)150 +4171 y Ft(BASH_CMDS)630 4281 y Fu(An)k(asso)s(ciativ)m(e)i(arra)m(y)f +(v)-5 b(ariable)35 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f +(in)m(ternal)h(hash)630 4390 y(table)c(of)g(commands)f(as)g(main)m +(tained)h(b)m(y)g(the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h +([Bourne)630 4500 y(Shell)42 b(Builtins],)k(page)d(42\).)77 +b(Elemen)m(ts)43 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the) +i(hash)630 4609 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g +(elemen)m(ts)i(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630 +4719 y(names)36 b(to)g(b)s(e)f(remo)m(v)m(ed)i(from)e(the)h(hash)f +(table.)58 b(If)36 b Ft(BASH_CMDS)d Fu(is)j(unset,)h(it)f(loses)h(its) +630 4829 y(sp)s(ecial)31 b(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 5011 y Ft(BASH_COMMAND)630 +5121 y Fu(The)39 b(command)h(curren)m(tly)g(b)s(eing)f(executed)i(or)e +(ab)s(out)h(to)g(b)s(e)f(executed,)44 b(unless)39 b(the)630 +5230 y(shell)g(is)g(executing)g(a)g(command)g(as)g(the)f(result)h(of)g +(a)g(trap,)i(in)d(whic)m(h)g(case)i(it)f(is)g(the)630 +5340 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.)p +eop end %%Page: 73 79 TeXDict begin 73 78 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(73)150 299 y Ft(COMP_TYPE)630 -408 y Fu(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)h(completion)h(function)e(to)h -(b)s(e)f(called:)40 b Fr(T)-8 b(AB)p Fu(,)27 b(for)g(normal)f -(completion,)j(`)p Ft(?)p Fu(',)e(for)630 628 y(listing)35 -b(completions)h(after)f(successiv)m(e)g(tabs,)h(`)p Ft(!)p -Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d(partial)630 -737 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g -(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo)s(di\014ed,)f(or)h -(`)p Ft(\045)p Fu(',)h(for)630 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 Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i -(of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e -(curren)m(t)g(completion)630 1351 y(function.)150 1526 -y Ft(COMP_WORDBREAKS)630 1636 y Fu(The)f(set)i(of)e(c)m(haracters)j -(that)e(the)g(Readline)g(library)g(treats)g(as)g(w)m(ord)g(separators)g -(when)630 1745 y(p)s(erforming)i(w)m(ord)h(completion.)51 -b(If)33 b Ft(COMP_WORDBREAKS)c Fu(is)34 b(unset,)g(it)f(loses)i(its)e -(sp)s(ecial)630 1855 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 2030 y Ft(COMP_WORDS)630 -2140 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the) -g(individual)f(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630 -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 Ft(COMP_)630 -2359 y(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 -b(This)36 b(v)-5 b(ariable)37 b(is)f(a)m(v)-5 b(ailable)39 -b(only)e(in)f(shell)h(func-)630 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 Ft(COMPREPLY)630 2863 y Fu(An)37 b(arra)m(y)h(v)-5 -b(ariable)38 b(from)f(whic)m(h)g(Bash)g(reads)g(the)h(p)s(ossible)e -(completions)j(generated)630 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 -Ft(COPROC)192 b Fu(An)27 b(arra)m(y)g(v)-5 b(ariable)28 -b(created)g(to)f(hold)g(the)g(\014le)g(descriptors)g(for)g(output)f -(from)h(and)f(input)630 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 Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 -b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f -(directory)i(stac)m(k.)41 b(Direc-)630 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 Ft(dirs)e Fu(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 -Ft(pushd)e Fu(and)h Ft(popd)f Fu(builtins)h(m)m(ust)h(b)s(e)e(used)h -(to)i(add)630 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 Ft(DIRSTACK)e Fu(is)i(unset,)g(it)h(loses)g(its)g(sp)s -(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)630 -4310 y(subsequen)m(tly)d(reset.)150 4485 y Ft(EMACS)240 -b Fu(If)31 b(Bash)h(\014nds)d(this)j(v)-5 b(ariable)32 -b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f -(v)-5 b(alue)630 4595 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h -(the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and) -h(disables)630 4704 y(line)d(editing.)150 4880 y Ft(ENV)336 -b Fu(Similar)35 b(to)g Ft(BASH_ENV)p Fu(;)h(used)e(when)g(the)h(shell)g -(is)g(in)m(v)m(ok)m(ed)h(in)e Fm(posix)h Fu(Mo)s(de)g(\(see)g(Sec-)630 -4989 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(94\).)150 -5165 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d -(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 -b(ariable)31 b(is)f(readonly)-8 b(.)150 5340 y Ft(FCEDIT)192 -b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f -Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.)p -eop end +b(Shell)30 b(V)-8 b(ariables)2459 b(73)150 299 y Ft(BASH_COMPAT)630 +408 y Fu(The)33 b(v)-5 b(alue)34 b(is)f(used)g(to)h(set)f(the)h +(shell's)g(compatibilit)m(y)h(lev)m(el.)51 b(See)34 b(Section)g(4.3.2)h +([The)630 518 y(Shopt)40 b(Builtin],)45 b(page)c(64,)k(for)c(a)g +(description)g(of)g(the)g(v)-5 b(arious)41 b(compatibilit)m(y)i(lev)m +(els)630 628 y(and)31 b(their)g(e\013ects.)45 b(The)31 +b(v)-5 b(alue)31 b(ma)m(y)h(b)s(e)f(a)h(decimal)g(n)m(um)m(b)s(er)e +(\(e.g.,)j(4.2\))g(or)e(an)h(in)m(teger)630 737 y(\(e.g.,)39 +b(42\))f(corresp)s(onding)d(to)i(the)f(desired)f(compatibilit)m(y)k +(lev)m(el.)59 b(If)36 b Ft(BASH_COMPAT)d Fu(is)630 847 +y(unset)k(or)g(set)h(to)g(the)g(empt)m(y)f(string,)j(the)d +(compatibilit)m(y)j(lev)m(el)f(is)e(set)h(to)g(the)g(default)630 +956 y(for)i(the)h(curren)m(t)f(v)m(ersion.)72 b(If)40 +b Ft(BASH_COMPAT)e Fu(is)i(set)h(to)h(a)e(v)-5 b(alue)41 +b(that)h(is)e(not)h(one)g(of)630 1066 y(the)f(v)-5 b(alid)40 +b(compatibilit)m(y)i(lev)m(els,)i(the)c(shell)g(prin)m(ts)f(an)h(error) +f(message)i(and)f(sets)g(the)630 1176 y(compatibilit)m(y)23 +b(lev)m(el)f(to)f(the)f(default)h(for)f(the)g(curren)m(t)g(v)m(ersion.) +38 b(The)20 b(v)-5 b(alid)21 b(compatibilit)m(y)630 1285 +y(lev)m(els)40 b(corresp)s(ond)e(to)h(the)g(compatibilit)m(y)i(options) +e(accepted)h(b)m(y)f(the)g Ft(shopt)e Fu(builtin)630 +1395 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i(\(for)g(example,)h +Fr(compat42)31 b Fu(means)21 b(that)g(4.2)i(and)d(42)i(are)g(v)-5 +b(alid)21 b(v)-5 b(alues\).)630 1504 y(The)30 b(curren)m(t)g(v)m +(ersion)h(is)f(also)i(a)e(v)-5 b(alid)31 b(v)-5 b(alue.)150 +1655 y Ft(BASH_ENV)96 b Fu(If)28 b(this)g(v)-5 b(ariable)30 +b(is)e(set)h(when)f(Bash)g(is)h(in)m(v)m(ok)m(ed)h(to)f(execute)h(a)e +(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 1765 +y(expanded)k(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f(\014le)g +(to)h(read)f(b)s(efore)g(executing)i(the)630 1874 y(script.)41 +b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(84.)150 +2025 y Ft(BASH_EXECUTION_STRING)630 2134 y Fu(The)f(command)g(argumen)m +(t)h(to)g(the)g Ft(-c)e Fu(in)m(v)m(o)s(cation)k(option.)150 +2285 y Ft(BASH_LINENO)630 2395 y Fu(An)62 b(arra)m(y)i(v)-5 +b(ariable)63 b(whose)g(mem)m(b)s(ers)e(are)j(the)e(line)h(n)m(um)m(b)s +(ers)f(in)g(source)h(\014les)630 2504 y(where)46 b(eac)m(h)i(corresp)s +(onding)d(mem)m(b)s(er)h(of)h Fr(FUNCNAME)53 b Fu(w)m(as)47 +b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 2614 y(LINENO[$i]})39 +b Fu(is)i(the)h(line)g(n)m(um)m(b)s(er)e(in)i(the)f(source)h(\014le)g +(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 2724 y(where)d +Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i(\(or)e Ft +(${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630 +2833 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 +b Ft(LINENO)d Fu(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s +(er.)150 2984 y Ft(BASH_LOADABLES_PATH)630 3093 y Fu(A)39 +b(colon-separated)i(list)f(of)f(directories)h(in)f(whic)m(h)g(the)g +(shell)h(lo)s(oks)f(for)g(dynamically)630 3203 y(loadable)32 +b(builtins)d(sp)s(eci\014ed)h(b)m(y)g(the)h Ft(enable)e +Fu(command.)150 3354 y Ft(BASH_REMATCH)630 3463 y Fu(An)43 +b(arra)m(y)i(v)-5 b(ariable)44 b(whose)g(mem)m(b)s(ers)f(are)h +(assigned)g(b)m(y)f(the)h(`)p Ft(=~)p Fu(')g(binary)f(op)s(erator)630 +3573 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e(\(see)h +(Section)g(3.2.4.2)i([Conditional)e(Constructs],)630 +3682 y(page)e(10\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f +(the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630 +3792 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 +b(elemen)m(t)j(with)d(index)h Fr(n)f Fu(is)h(the)g(p)s(ortion)g(of)g +(the)g(string)630 3902 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m +(thesized)h(sub)s(expression.)39 b(This)29 b(v)-5 b(ariable)31 +b(is)g(read-only)-8 b(.)150 4052 y Ft(BASH_SOURCE)630 +4162 y Fu(An)40 b(arra)m(y)h(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers) +g(are)h(the)g(source)f(\014lenames)h(where)f(the)g(corre-)630 +4271 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h +Ft(FUNCNAME)d Fu(arra)m(y)j(v)-5 b(ariable)30 b(are)f(de\014ned.)38 +b(The)630 4381 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c +Fu(is)k(de\014ned)f(in)g(the)h(\014le)h Ft(${BASH_SOURCE[$i]})21 +b Fu(and)630 4491 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150 +4641 y(BASH_SUBSHELL)630 4751 y Fu(Incremen)m(ted)24 +b(b)m(y)f(one)h(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m +(vironmen)m(t)i(when)f(the)h(shell)630 4861 y(b)s(egins)30 +b(executing)h(in)f(that)h(en)m(vironmen)m(t.)42 b(The)30 +b(initial)h(v)-5 b(alue)31 b(is)f(0.)150 5011 y Ft(BASH_VERSINFO)630 +5121 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5 b(ariable)37 +b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(91\))h(whose)f(mem)m(b) +s(ers)630 5230 y(hold)c(v)m(ersion)h(information)f(for)g(this)g +(instance)h(of)g(Bash.)46 b(The)32 b(v)-5 b(alues)32 +b(assigned)h(to)g(the)630 5340 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g +(follo)m(ws:)p eop end %%Page: 74 80 TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(74)150 299 y Ft(FIGNORE)144 -b Fu(A)35 b(colon-separated)i(list)f(of)g(su\016xes)e(to)i(ignore)g -(when)e(p)s(erforming)g(\014lename)i(comple-)630 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 Ft(FIGNORE)d Fu(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 Ft(.o:~)p -Fu(')150 671 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5 -b(ariable)36 b(con)m(taining)h(the)f(names)g(of)g(all)g(shell)g -(functions)g(curren)m(tly)f(in)h(the)630 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 Ft("main")p Fu(.)44 -b(This)32 b(v)-5 b(ariable)33 b(exists)g(only)g(when)e(a)i(shell)f -(function)g(is)g(executing.)630 1110 y(Assignmen)m(ts)23 -b(to)h Ft(FUNCNAME)c Fu(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 Ft(FUNCNAME)630 1219 y -Fu(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 -Ft(BASH_LINENO)d Fu(and)j Ft(BASH_SOURCE)p Fu(.)40 b(Eac)m(h)32 -b(elemen)m(t)630 1461 y(of)g Ft(FUNCNAME)d Fu(has)j(corresp)s(onding)e -(elemen)m(ts)j(in)f Ft(BASH_LINENO)c Fu(and)k Ft(BASH_SOURCE)c -Fu(to)630 1570 y(describ)s(e)39 b(the)h(call)h(stac)m(k.)70 -b(F)-8 b(or)41 b(instance,)i Ft(${FUNCNAME[$i]})35 b -Fu(w)m(as)41 b(called)f(from)g(the)630 1680 y(\014le)27 -b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27 b(line)h(n)m(um)m(b)s(er)d -Ft(${BASH_LINENO[$i]})p Fu(.)34 b(The)27 b Ft(caller)630 -1789 y Fu(builtin)j(displa)m(ys)g(the)h(curren)m(t)f(call)i(stac)m(k)g -(using)d(this)i(information.)150 1943 y Ft(FUNCNEST)96 -b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5 b(alue)36 -b(greater)g(than)e(0,)j(de\014nes)d(a)h(maxim)m(um)g(function)g -(nesting)630 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 Ft(GLOBIGNORE)630 2425 y Fu(A)38 b(colon-separated)i(list)f -(of)f(patterns)g(de\014ning)f(the)h(set)g(of)h(\014lenames)f(to)g(b)s -(e)g(ignored)630 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 Ft(GLOBIGNORE)p Fu(,)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 Ft(GROUPS)192 -b Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(con)m(taining)g(the)f(list) -h(of)f(groups)g(of)g(whic)m(h)f(the)i(curren)m(t)e(user)h(is)g(a)630 -3017 y(mem)m(b)s(er.)47 b(Assignmen)m(ts)33 b(to)g Ft(GROUPS)e -Fu(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 Ft(GROUPS)29 b Fu(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 Ft(histchars)630 3389 y Fu(Up)c(to)g(three)g(c)m -(haracters)i(whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g -(substitution,)g(and)630 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 -Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m -(haracter)h(whic)m(h)d(signi\014es)i(the)630 3718 y(start)25 -b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Ft(!)p -Fu('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630 -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 Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d -(c)m(haracter)j(is)e(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that) -630 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 Ft(#)p Fu('.)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 Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f -(index)g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.) -56 b(If)630 4639 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f -(sp)s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m -(tly)f(reset.)150 4792 y Ft(HISTCONTROL)630 4902 y Fu(A)40 -b(colon-separated)i(list)f(of)f(v)-5 b(alues)40 b(con)m(trolling)i(ho)m -(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 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 Ft(ignorespace)p Fu(',)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 Ft(ignoredups)p Fu(')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 Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p -Ft(ignorespace)p Fu(')d(and)i(`)p Ft(ignoredups)p Fu('.)42 -b(A)32 b(v)-5 b(alue)32 b(of)p eop end +b(Shell)30 b(V)-8 b(ariables)2459 b(74)630 299 y Ft(BASH_VERSINFO[0]) +1110 408 y Fu(The)30 b(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e +(\(the)i Fr(release)5 b Fu(\).)630 578 y Ft(BASH_VERSINFO[1])1110 +687 y Fu(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i +Fr(v)m(ersion)p Fu(\).)630 857 y Ft(BASH_VERSINFO[2])1110 +966 y Fu(The)f(patc)m(h)h(lev)m(el.)630 1136 y Ft(BASH_VERSINFO[3])1110 +1245 y Fu(The)f(build)f(v)m(ersion.)630 1415 y Ft(BASH_VERSINFO[4])1110 +1524 y Fu(The)h(release)i(status)e(\(e.g.,)j Fr(b)s(eta1)7 +b Fu(\).)630 1694 y Ft(BASH_VERSINFO[5])1110 1803 y Fu(The)30 +b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p Fu(.)150 1973 y +Ft(BASH_VERSION)630 2082 y Fu(The)g(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h +(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 2252 y +Ft(BASH_XTRACEFD)630 2361 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i +(corresp)s(onding)e(to)h(a)g(v)-5 b(alid)31 b(\014le)g(descriptor,)g +(Bash)g(will)g(write)g(the)630 2471 y(trace)37 b(output)f(generated)h +(when)f(`)p Ft(set)29 b(-x)p Fu(')36 b(is)g(enabled)h(to)g(that)f +(\014le)h(descriptor.)58 b(This)630 2580 y(allo)m(ws)29 +b(tracing)h(output)d(to)i(b)s(e)f(separated)g(from)g(diagnostic)h(and)f +(error)f(messages.)41 b(The)630 2690 y(\014le)31 b(descriptor)f(is)h +(closed)g(when)f Ft(BASH_XTRACEFD)d Fu(is)k(unset)f(or)g(assigned)h(a)g +(new)f(v)-5 b(alue.)630 2800 y(Unsetting)45 b Ft(BASH_XTRACEFD)40 +b Fu(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f +(trace)630 2909 y(output)33 b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g +(standard)e(error.)50 b(Note)35 b(that)g(setting)f Ft(BASH_XTRACEFD)c +Fu(to)630 3019 y(2)39 b(\(the)h(standard)e(error)g(\014le)h +(descriptor\))h(and)e(then)h(unsetting)g(it)g(will)g(result)g(in)g(the) +630 3128 y(standard)30 b(error)g(b)s(eing)f(closed.)150 +3298 y Ft(CHILD_MAX)630 3407 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h +(exited)h(c)m(hild)g(status)f(v)-5 b(alues)36 b(for)f(the)g(shell)g(to) +h(remem)m(b)s(er.)55 b(Bash)630 3517 y(will)37 b(not)g(allo)m(w)i(this) +e(v)-5 b(alue)37 b(to)h(b)s(e)e(decreased)i(b)s(elo)m(w)f(a)g +Fm(posix)p Fu(-mandated)f(minim)m(um,)630 3626 y(and)30 +b(there)g(is)g(a)h(maxim)m(um)f(v)-5 b(alue)30 b(\(curren)m(tly)h +(8192\))h(that)f(this)f(ma)m(y)g(not)h(exceed.)41 b(The)630 +3736 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.) +150 3905 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h +Ft(select)e Fu(command)h(to)i(determine)f(the)f(terminal)i(width)d +(when)h(prin)m(ting)630 4015 y(selection)39 b(lists.)63 +b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d +Fu(option)j(is)f(enabled)h(\(see)630 4125 y(Section)44 +b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(64\),)k(or)43 +b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 4234 +y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 4403 y +Ft(COMP_CWORD)630 4513 y Fu(An)38 b(index)g(in)m(to)h +Ft(${COMP_WORDS})c Fu(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e +(curren)m(t)g(cursor)g(p)s(o-)630 4623 y(sition.)72 b(This)40 +b(v)-5 b(ariable)41 b(is)f(a)m(v)-5 b(ailable)43 b(only)e(in)f(shell)h +(functions)f(in)m(v)m(ok)m(ed)i(b)m(y)e(the)h(pro-)630 +4732 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g +([Programmable)g(Completion],)630 4842 y(page)31 b(129\).)150 +5011 y Ft(COMP_LINE)630 5121 y Fu(The)38 b(curren)m(t)h(command)f +(line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5 +b(ailable)41 b(only)d(in)h(shell)f(functions)630 5230 +y(and)25 b(external)h(commands)f(in)m(v)m(ok)m(ed)h(b)m(y)f(the)h +(programmable)f(completion)i(facilities)g(\(see)630 5340 +y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(129\).)p +eop end %%Page: 75 81 TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(75)630 299 y(`)p -Ft(erasedups)p Fu(')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 Ft(HISTCONTROL)e Fu(is)i(unset,)i(or)e(do)s(es)h(not)g(include)f(a)h -(v)-5 b(alid)35 b(v)-5 b(alue,)36 b(all)630 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 Ft(HISTIGNORE)p Fu(.)73 b(The)42 -b(second)g(and)g(subsequen)m(t)f(lines)h(of)h(a)f(m)m(ulti-line)h(comp) -s(ound)630 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 Ft(HISTCONTROL)p Fu(.)150 1117 y Ft(HISTFILE)96 -b Fu(The)27 b(name)h(of)g(the)g(\014le)g(to)h(whic)m(h)f(the)g(command) -f(history)h(is)g(sa)m(v)m(ed.)41 b(The)27 b(default)h(v)-5 -b(alue)630 1226 y(is)30 b Ft(~/.bash_history)p Fu(.)150 -1386 y Ft(HISTFILESIZE)630 1496 y Fu(The)c(maxim)m(um)f(n)m(um)m(b)s -(er)g(of)h(lines)h(con)m(tained)g(in)f(the)g(history)g(\014le.)39 -b(When)26 b(this)g(v)-5 b(ariable)630 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 -Ft(HISTSIZE)f Fu(after)h(reading)h(an)m(y)g(startup)f(\014les.)150 -2314 y Ft(HISTIGNORE)630 2423 y Fu(A)j(colon-separated)h(list)f(of)g -(patterns)f(used)g(to)h(decide)g(whic)m(h)f(command)g(lines)h(should) -630 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 Ft(*)p Fu(')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 -Ft(HISTCONTROL)630 2862 y Fu(are)37 b(applied.)59 b(In)36 -b(addition)h(to)g(the)g(normal)g(shell)f(pattern)h(matc)m(hing)h(c)m -(haracters,)i(`)p Ft(&)p Fu(')630 2971 y(matc)m(hes)d(the)f(previous)g -(history)g(line.)57 b(`)p Ft(&)p Fu(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed) -h(using)g(a)g(bac)m(kslash;)k(the)630 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 Ft(HISTIGNORE)p Fu(.)630 3435 y Ft(HISTIGNORE)20 -b Fu(subsumes)g(the)j(function)f(of)h Ft(HISTCONTROL)p -Fu(.)35 b(A)23 b(pattern)f(of)h(`)p Ft(&)p Fu(')g(is)f(iden)m(tical)630 -3544 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p -Ft([)31 b(]*)p Fu(')25 b(is)h(iden)m(tical)h(to)f Ft(ignorespace)p -Fu(.)36 b(Com)m(bining)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 Ft(ignoreboth)p Fu(.)150 -3924 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s(er)e(of)j -(commands)f(to)g(remem)m(b)s(er)g(on)g(the)g(history)g(list.)62 -b(If)37 b(the)630 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 Ft(HISTTIMEFORMAT)630 -4522 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m -(ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g -(for)630 4632 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp) -f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m -(ed)630 4741 y(b)m(y)g(the)f Ft(history)f Fu(builtin.)50 -b(If)33 b(this)h(v)-5 b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g -(written)f(to)i(the)630 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 Ft(HOSTFILE)96 b Fu(Con)m(tains)33 -b(the)g(name)f(of)h(a)g(\014le)f(in)g(the)h(same)g(format)g(as)f -Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 5230 y(read)21 -b(when)g(the)g(shell)h(needs)f(to)h(complete)h(a)e(hostname.)38 -b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 5340 -y(completions)27 b(ma)m(y)f(b)s(e)f(c)m(hanged)h(while)f(the)h(shell)g -(is)f(running;)h(the)g(next)f(time)i(hostname)p eop end +b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(COMP_POINT)630 +408 y Fu(The)25 b(index)g(of)h(the)g(curren)m(t)f(cursor)g(p)s(osition) +h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of)g(the)h(curren)m(t)630 +518 y(command.)40 b(If)27 b(the)h(curren)m(t)g(cursor)g(p)s(osition)g +(is)g(at)g(the)g(end)g(of)g(the)g(curren)m(t)g(command,)630 +628 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 b(ariable)31 +b(is)f(equal)g(to)h Ft(${#COMP_LINE})p Fu(.)37 b(This)29 +b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 737 +y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g(in)m +(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 847 y(completion)c +(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g(Completion],)h +(page)f(129\).)150 1011 y Ft(COMP_TYPE)630 1121 y Fu(Set)c(to)h(an)f +(in)m(teger)h(v)-5 b(alue)28 b(corresp)s(onding)e(to)h(the)h(t)m(yp)s +(e)f(of)g(completion)h(attempted)g(that)630 1230 y(caused)e(a)h +(completion)h(function)e(to)h(b)s(e)f(called:)40 b Fr(T)-8 +b(AB)p Fu(,)27 b(for)g(normal)f(completion,)j(`)p Ft(?)p +Fu(',)e(for)630 1340 y(listing)35 b(completions)h(after)f(successiv)m +(e)g(tabs,)h(`)p Ft(!)p Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d +(partial)630 1450 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p +Fu(',)f(to)e(list)g(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo) +s(di\014ed,)f(or)h(`)p Ft(\045)p Fu(',)h(for)630 1559 +y(men)m(u)i(completion.)41 b(This)25 b(v)-5 b(ariable)27 +b(is)g(a)m(v)-5 b(ailable)28 b(only)f(in)f(shell)g(functions)g(and)g +(external)630 1669 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g +(programmable)h(completion)g(facilities)i(\(see)e(Section)g(8.6)630 +1778 y([Programmable)e(Completion],)h(page)f(129\).)150 +1943 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i +(of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e +(curren)m(t)g(completion)630 2052 y(function.)150 2217 +y Ft(COMP_WORDBREAKS)630 2326 y Fu(The)f(set)i(of)e(c)m(haracters)j +(that)e(the)g(Readline)g(library)g(treats)g(as)g(w)m(ord)g(separators)g +(when)630 2436 y(p)s(erforming)i(w)m(ord)h(completion.)51 +b(If)33 b Ft(COMP_WORDBREAKS)c Fu(is)34 b(unset,)g(it)f(loses)i(its)e +(sp)s(ecial)630 2545 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 2710 y Ft(COMP_WORDS)630 +2819 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the) +g(individual)f(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630 +2929 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as) +h(Readline)h(w)m(ould)f(split)g(it,)53 b(using)47 b Ft(COMP_)630 +3039 y(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 +b(This)36 b(v)-5 b(ariable)37 b(is)f(a)m(v)-5 b(ailable)39 +b(only)e(in)f(shell)h(func-)630 3148 y(tions)32 b(in)m(v)m(ok)m(ed)i(b) +m(y)d(the)i(programmable)f(completion)h(facilities)h(\(see)f(Section)g +(8.6)g([Pro-)630 3258 y(grammable)e(Completion],)g(page)g(129\).)150 +3422 y Ft(COMPREPLY)630 3532 y Fu(An)37 b(arra)m(y)h(v)-5 +b(ariable)38 b(from)f(whic)m(h)g(Bash)g(reads)g(the)h(p)s(ossible)e +(completions)j(generated)630 3641 y(b)m(y)33 b(a)g(shell)h(function)f +(in)m(v)m(ok)m(ed)h(b)m(y)f(the)g(programmable)h(completion)g(facilit)m +(y)h(\(see)f(Sec-)630 3751 y(tion)g(8.6)g([Programmable)g(Completion],) +h(page)f(129\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) +630 3861 y(one)c(p)s(ossible)f(completion.)150 4025 y +Ft(COPROC)192 b Fu(An)27 b(arra)m(y)g(v)-5 b(ariable)28 +b(created)g(to)f(hold)g(the)g(\014le)g(descriptors)g(for)g(output)f +(from)h(and)f(input)630 4134 y(to)31 b(an)f(unnamed)f(copro)s(cess)i +(\(see)g(Section)h(3.2.5)g([Copro)s(cesses],)f(page)g(15\).)150 +4299 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 +b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f +(directory)i(stac)m(k.)41 b(Direc-)630 4408 y(tories)33 +b(app)s(ear)f(in)g(the)h(stac)m(k)h(in)e(the)h(order)f(they)h(are)g +(displa)m(y)m(ed)g(b)m(y)f(the)h Ft(dirs)e Fu(builtin.)630 +4518 y(Assigning)f(to)h(mem)m(b)s(ers)f(of)g(this)g(arra)m(y)g(v)-5 +b(ariable)31 b(ma)m(y)g(b)s(e)e(used)h(to)h(mo)s(dify)e(directories)630 +4628 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h +Ft(pushd)e Fu(and)h Ft(popd)f Fu(builtins)h(m)m(ust)h(b)s(e)e(used)h +(to)i(add)630 4737 y(and)37 b(remo)m(v)m(e)h(directories.)63 +b(Assignmen)m(t)37 b(to)h(this)f(v)-5 b(ariable)38 b(will)g(not)f(c)m +(hange)i(the)e(cur-)630 4847 y(ren)m(t)c(directory)-8 +b(.)47 b(If)32 b Ft(DIRSTACK)e Fu(is)i(unset,)g(it)h(loses)g(its)g(sp)s +(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)630 +4956 y(subsequen)m(tly)d(reset.)150 5121 y Ft(EMACS)240 +b Fu(If)31 b(Bash)h(\014nds)d(this)j(v)-5 b(ariable)32 +b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f +(v)-5 b(alue)630 5230 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h +(the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and) +h(disables)630 5340 y(line)d(editing.)p eop end %%Page: 76 82 TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(76)630 299 y(completion)33 -b(is)g(attempted)g(after)g(the)f(v)-5 b(alue)33 b(is)f(c)m(hanged,)i -(Bash)e(adds)f(the)i(con)m(ten)m(ts)h(of)630 408 y(the)h(new)f(\014le)g -(to)h(the)g(existing)h(list.)53 b(If)34 b Ft(HOSTFILE)e -Fu(is)j(set,)h(but)e(has)g(no)h(v)-5 b(alue,)36 b(or)e(do)s(es)630 -518 y(not)d(name)f(a)h(readable)g(\014le,)g(Bash)f(attempts)i(to)f -(read)f Ft(/etc/hosts)e Fu(to)j(obtain)g(the)f(list)630 -628 y(of)h(p)s(ossible)f(hostname)h(completions.)43 b(When)31 -b Ft(HOSTFILE)d Fu(is)j(unset,)f(the)h(hostname)g(list)630 -737 y(is)f(cleared.)150 906 y Ft(HOSTNAME)96 b Fu(The)30 -b(name)g(of)h(the)f(curren)m(t)h(host.)150 1074 y Ft(HOSTTYPE)96 -b Fu(A)30 b(string)h(describing)f(the)g(mac)m(hine)h(Bash)g(is)f -(running)f(on.)150 1243 y Ft(IGNOREEOF)630 1353 y Fu(Con)m(trols)e(the) -h(action)g(of)f(the)g(shell)g(on)g(receipt)h(of)f(an)g -Ft(EOF)f Fu(c)m(haracter)i(as)g(the)f(sole)h(input.)630 -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 Ft(EOF)d Fu(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 Ft(EOF)g Fu(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 Ft(INPUTRC)144 -b Fu(The)68 b(name)h(of)f(the)h(Readline)g(initialization)j(\014le,)78 -b(o)m(v)m(erriding)69 b(the)g(default)g(of)630 2179 y -Ft(~/.inputrc)p Fu(.)150 2347 y Ft(LANG)288 b Fu(Used)28 -b(to)h(determine)f(the)g(lo)s(cale)h(category)h(for)e(an)m(y)h -(category)h(not)e(sp)s(eci\014cally)g(selected)630 2457 -y(with)i(a)h(v)-5 b(ariable)31 b(starting)g(with)f Ft(LC_)p -Fu(.)150 2626 y Ft(LC_ALL)192 b Fu(This)28 b(v)-5 b(ariable)29 -b(o)m(v)m(errides)h(the)f(v)-5 b(alue)29 b(of)g Ft(LANG)f -Fu(and)g(an)m(y)h(other)g Ft(LC_)f Fu(v)-5 b(ariable)29 -b(sp)s(ecifying)630 2735 y(a)i(lo)s(cale)h(category)-8 -b(.)150 2904 y Ft(LC_COLLATE)630 3013 y Fu(This)37 b(v)-5 -b(ariable)38 b(determines)g(the)g(collation)i(order)d(used)g(when)f -(sorting)i(the)g(results)g(of)630 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(30\).)150 3511 y Ft(LC_CTYPE)96 b Fu(This)36 -b(v)-5 b(ariable)37 b(determines)f(the)h(in)m(terpretation)h(of)f(c)m -(haracters)h(and)e(the)g(b)s(eha)m(vior)h(of)630 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(30\).)150 -3898 y Ft(LC_MESSAGES)630 4008 y Fu(This)25 b(v)-5 b(ariable)27 -b(determines)f(the)g(lo)s(cale)i(used)d(to)i(translate)g(double-quoted) -f(strings)g(pre-)630 4118 y(ceded)31 b(b)m(y)f(a)h(`)p -Ft($)p Fu(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8 -b(ranslation],)32 b(page)f(7\).)150 4286 y Ft(LC_NUMERIC)630 -4396 y Fu(This)f(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h -(category)g(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150 -4564 y Ft(LINENO)192 b Fu(The)30 b(line)h(n)m(um)m(b)s(er)e(in)h(the)g -(script)h(or)f(shell)g(function)h(curren)m(tly)f(executing.)150 -4733 y Ft(LINES)240 b Fu(Used)43 b(b)m(y)g(the)g Ft(select)e -Fu(command)i(to)g(determine)g(the)g(column)g(length)g(for)g(prin)m -(ting)630 4843 y(selection)c(lists.)63 b(Automatically)41 -b(set)d(if)f(the)h Ft(checkwinsize)d Fu(option)j(is)f(enabled)h(\(see) -630 4952 y(Section)44 b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d -(62\),)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 Ft(SIGWINCH)p Fu(.)150 5230 -y Ft(MACHTYPE)96 b Fu(A)26 b(string)g(that)h(fully)f(describ)s(es)f -(the)h(system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i -(in)e(the)630 5340 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h -Fu(format.)p eop end +b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft(ENV)336 +b Fu(Similar)35 b(to)g Ft(BASH_ENV)p Fu(;)h(used)e(when)g(the)h(shell)g +(is)g(in)m(v)m(ok)m(ed)h(in)e Fm(posix)h Fu(Mo)s(de)g(\(see)g(Sec-)630 +408 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(96\).)150 +564 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d +(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 +b(ariable)31 b(is)f(readonly)-8 b(.)150 720 y Ft(EXECIGNORE)630 +830 y Fu(A)29 b(colon-separated)h(list)f(of)g(shell)g(patterns)f(\(see) +i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)630 +939 y(page)j(31\))g(de\014ning)e(the)h(list)g(of)g(\014lenames)g(to)g +(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g(using)630 +1049 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames)g(matc)m(h) +h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630 +1158 y(executable)j(\014les)e(for)g(the)h(purp)s(oses)d(of)j +(completion)h(and)d(command)i(execution)g(via)g Ft(PATH)630 +1268 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h(a\013ect)i(the)d(b) +s(eha)m(vior)h(of)g(the)g Ft([)p Fu(,)h Ft(test)p Fu(,)f(and)f +Ft([[)g Fu(commands.)630 1377 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g +(command)g(hash)f(table)i(are)g(not)f(sub)5 b(ject)41 +b(to)g Ft(EXECIGNORE)p Fu(.)630 1487 y(Use)30 b(this)f(v)-5 +b(ariable)30 b(to)g(ignore)g(shared)f(library)g(\014les)g(that)h(ha)m +(v)m(e)h(the)f(executable)h(bit)e(set,)630 1597 y(but)36 +b(are)h(not)g(executable)i(\014les.)60 b(The)36 b(pattern)h(matc)m +(hing)h(honors)e(the)h(setting)h(of)f(the)630 1706 y +Ft(extglob)28 b Fu(shell)j(option.)150 1862 y Ft(FCEDIT)192 +b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f +Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.)150 +2018 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g +(su\016xes)e(to)i(ignore)g(when)e(p)s(erforming)g(\014lename)i(comple-) +630 2127 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i +(one)f(of)g(the)g(en)m(tries)g(in)g Ft(FIGNORE)d Fu(is)j(excluded)630 +2237 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41 +b(A)30 b(sample)h(v)-5 b(alue)31 b(is)f(`)p Ft(.o:~)p +Fu(')150 2393 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5 +b(ariable)36 b(con)m(taining)h(the)f(names)g(of)g(all)g(shell)g +(functions)g(curren)m(tly)f(in)h(the)630 2502 y(execution)g(call)h +(stac)m(k.)57 b(The)34 b(elemen)m(t)j(with)e(index)g(0)h(is)f(the)g +(name)h(of)f(an)m(y)h(curren)m(tly-)630 2612 y(executing)f(shell)f +(function.)51 b(The)34 b(b)s(ottom-most)h(elemen)m(t)g(\(the)g(one)f +(with)g(the)g(highest)630 2721 y(index\))e(is)h Ft("main")p +Fu(.)44 b(This)32 b(v)-5 b(ariable)33 b(exists)g(only)g(when)e(a)i +(shell)f(function)g(is)g(executing.)630 2831 y(Assignmen)m(ts)23 +b(to)f Ft(FUNCNAME)e Fu(ha)m(v)m(e)k(no)e(e\013ect.)39 +b(If)22 b Ft(FUNCNAME)e Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial) +630 2941 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m +(tly)f(reset.)630 3073 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used) +g(with)g Ft(BASH_LINENO)d Fu(and)j Ft(BASH_SOURCE)p Fu(.)40 +b(Eac)m(h)32 b(elemen)m(t)630 3183 y(of)g Ft(FUNCNAME)d +Fu(has)j(corresp)s(onding)e(elemen)m(ts)j(in)f Ft(BASH_LINENO)c +Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 3292 y(describ)s(e)39 +b(the)h(call)h(stac)m(k.)70 b(F)-8 b(or)41 b(instance,)i +Ft(${FUNCNAME[$i]})35 b Fu(w)m(as)41 b(called)f(from)g(the)630 +3402 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27 +b(line)h(n)m(um)m(b)s(er)d Ft(${BASH_LINENO[$i]})p Fu(.)34 +b(The)27 b Ft(caller)630 3512 y Fu(builtin)j(displa)m(ys)g(the)h +(curren)m(t)f(call)i(stac)m(k)g(using)d(this)i(information.)150 +3667 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5 +b(alue)36 b(greater)g(than)e(0,)j(de\014nes)d(a)h(maxim)m(um)g +(function)g(nesting)630 3777 y(lev)m(el.)42 b(F)-8 b(unction)29 +b(in)m(v)m(o)s(cations)h(that)f(exceed)h(this)e(nesting)h(lev)m(el)h +(will)f(cause)g(the)f(curren)m(t)630 3886 y(command)i(to)h(ab)s(ort.) +150 4042 y Ft(GLOBIGNORE)630 4152 y Fu(A)38 b(colon-separated)i(list)f +(of)f(patterns)g(de\014ning)f(the)h(set)g(of)h(\014lenames)f(to)g(b)s +(e)g(ignored)630 4261 y(b)m(y)31 b(\014lename)g(expansion.)43 +b(If)31 b(a)h(\014lename)f(matc)m(hed)h(b)m(y)f(a)g(\014lename)h +(expansion)f(pattern)630 4371 y(also)i(matc)m(hes)g(one)f(of)g(the)g +(patterns)g(in)f Ft(GLOBIGNORE)p Fu(,)f(it)i(is)g(remo)m(v)m(ed)h(from) +e(the)h(list)h(of)630 4481 y(matc)m(hes.)41 b(The)27 +b(pattern)g(matc)m(hing)h(honors)f(the)g(setting)i(of)e(the)h +Ft(extglob)d Fu(shell)i(option.)150 4636 y Ft(GROUPS)192 +b Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(con)m(taining)g(the)f(list) +h(of)f(groups)g(of)g(whic)m(h)f(the)i(curren)m(t)e(user)h(is)g(a)630 +4746 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d +Fu(ha)m(v)m(e)i(no)g(e\013ect.)42 b(If)30 b Ft(GROUPS)f +Fu(is)i(unset,)f(it)h(loses)h(its)630 4855 y(sp)s(ecial)f(prop)s +(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150 +5011 y Ft(histchars)630 5121 y Fu(Up)c(to)g(three)g(c)m(haracters)i +(whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g +(substitution,)g(and)630 5230 y(tok)m(enization)k(\(see)f(Section)f +(9.3)h([History)f(In)m(teraction],)i(page)f(139\).)41 +b(The)29 b(\014rst)e(c)m(harac-)630 5340 y(ter)j(is)f(the)g +Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m +(haracter)h(whic)m(h)d(signi\014es)i(the)p eop end %%Page: 77 83 TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(77)150 299 y Ft(MAILCHECK)630 -408 y Fu(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 Ft(MAILPATH)e Fu(or)i -Ft(MAIL)e Fu(v)-5 b(ariables.)43 b(The)30 b(default)h(is)f(60)i -(seconds.)42 b(When)30 b(it)h(is)g(time)630 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 Ft(MAPFILE)144 b Fu(An)35 -b(arra)m(y)h(v)-5 b(ariable)36 b(created)g(to)h(hold)e(the)g(text)i -(read)e(b)m(y)g(the)h Ft(mapfile)d Fu(builtin)i(when)630 -1105 y(no)30 b(v)-5 b(ariable)31 b(name)g(is)f(supplied.)150 -1254 y Ft(OLDPWD)192 b Fu(The)30 b(previous)g(w)m(orking)g(directory)h -(as)g(set)g(b)m(y)f(the)h Ft(cd)e Fu(builtin.)150 1403 -y Ft(OPTERR)192 b Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 -b(1,)i(Bash)e(displa)m(ys)g(error)f(messages)i(generated)g(b)m(y)f(the) -g Ft(getopts)630 1512 y Fu(builtin)30 b(command.)150 -1661 y Ft(OSTYPE)192 b Fu(A)30 b(string)h(describing)f(the)g(op)s -(erating)h(system)g(Bash)f(is)h(running)d(on.)150 1810 -y Ft(PIPESTATUS)630 1919 y Fu(An)23 b(arra)m(y)h(v)-5 -b(ariable)24 b(\(see)h(Section)f(6.7)h([Arra)m(ys],)g(page)f(89\))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 Ft(POSIXLY_CORRECT)630 2397 y -Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m(vironmen)m(t)g -(when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g Fm(posix)630 -2506 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s -(de],)k(page)e(94\))g(b)s(efore)f(reading)g(the)g(startup)630 -2616 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s -(cation)j(option)f(had)f(b)s(een)g(supplied.)51 b(If)34 -b(it)h(is)g(set)g(while)630 2725 y(the)c(shell)f(is)h(running,)d(Bash)j -(enables)g Fm(posix)e Fu(mo)s(de,)h(as)h(if)f(the)h(command)870 -2855 y Ft(set)47 b(-o)g(posix)630 2984 y Fu(had)30 b(b)s(een)f -(executed.)150 3133 y Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g -Fm(id)g Fu(of)h(the)f(shell's)h(paren)m(t)g(pro)s(cess.)40 -b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)150 -3281 y Ft(PROMPT_COMMAND)630 3391 y Fu(If)32 b(set,)h(the)f(v)-5 -b(alue)33 b(is)f(in)m(terpreted)g(as)g(a)h(command)f(to)h(execute)g(b)s -(efore)f(the)g(prin)m(ting)g(of)630 3500 y(eac)m(h)g(primary)d(prompt)g -(\()p Ft($PS1)p Fu(\).)150 3649 y Ft(PROMPT_DIRTRIM)630 -3759 y Fu(If)e(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f(zero,) -i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er)e(of)h -(trailing)630 3868 y(directory)35 b(comp)s(onen)m(ts)g(to)h(retain)f -(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g Ft(\\W)g -Fu(prompt)g(string)630 3978 y(escap)s(es)21 b(\(see)h(Section)f(6.9)h -([Con)m(trolling)g(the)f(Prompt],)h(page)f(92\).)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 Ft(PS3)336 b Fu(The)34 b(v)-5 b(alue)35 b(of)f(this)g(v)-5 -b(ariable)35 b(is)g(used)e(as)i(the)f(prompt)g(for)g(the)g -Ft(select)f Fu(command.)52 b(If)630 4346 y(this)30 b(v)-5 -b(ariable)31 b(is)g(not)f(set,)i(the)e Ft(select)f Fu(command)h -(prompts)f(with)h(`)p Ft(#?)g Fu(')150 4495 y Ft(PS4)336 -b Fu(The)24 b(v)-5 b(alue)25 b(is)f(the)h(prompt)e(prin)m(ted)h(b)s -(efore)g(the)h(command)f(line)h(is)f(ec)m(ho)s(ed)i(when)d(the)i -Ft(-x)630 4604 y Fu(option)32 b(is)f(set)h(\(see)g(Section)h(4.3.1)g -([The)e(Set)g(Builtin],)i(page)f(58\).)45 b(The)31 b(\014rst)f(c)m -(haracter)630 4714 y(of)k Ft(PS4)g Fu(is)g(replicated)i(m)m(ultiple)f -(times,)h(as)e(necessary)-8 b(,)37 b(to)e(indicate)g(m)m(ultiple)g(lev) -m(els)h(of)630 4823 y(indirection.)41 b(The)30 b(default)h(is)f(`)p -Ft(+)g Fu('.)150 4972 y Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m -(orking)h(directory)g(as)f(set)h(b)m(y)f(the)h Ft(cd)f -Fu(builtin.)150 5121 y Ft(RANDOM)192 b Fu(Eac)m(h)30 -b(time)g(this)f(parameter)g(is)g(referenced,)h(a)f(random)g(in)m(teger) -h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630 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 +b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(start)25 +b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Ft(!)p +Fu('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630 +408 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f +(seen)h(as)g(the)g(\014rst)f(c)m(haracter)j(on)e(a)g(line,)630 +518 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d +(c)m(haracter)j(is)e(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that) +630 628 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h +(when)e(found)f(as)i(the)g(\014rst)f(c)m(haracter)i(of)f(a)630 +737 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34 +b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g +(substitution)630 847 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f +(remaining)h(w)m(ords)f(on)h(the)f(line.)40 b(It)27 b(do)s(es)f(not)h +(necessarily)g(cause)630 956 y(the)k(shell)f(parser)g(to)h(treat)g(the) +g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150 1106 +y Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f(index) +g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.)56 +b(If)630 1215 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f(sp) +s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m(tly)f +(reset.)150 1365 y Ft(HISTCONTROL)630 1474 y Fu(A)40 +b(colon-separated)i(list)f(of)f(v)-5 b(alues)40 b(con)m(trolling)i(ho)m +(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 1584 +y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5 +b(alues)29 b(includes)f(`)p Ft(ignorespace)p Fu(',)f(lines)i(whic)m(h)g +(b)s(egin)f(with)630 1694 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g +(sa)m(v)m(ed)g(in)g(the)g(history)f(list.)66 b(A)39 b(v)-5 +b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 1803 y(causes)34 +b(lines)h(whic)m(h)f(matc)m(h)h(the)f(previous)f(history)h(en)m(try)h +(to)g(not)f(b)s(e)f(sa)m(v)m(ed.)53 b(A)34 b(v)-5 b(alue)630 +1913 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p +Ft(ignorespace)p Fu(')d(and)i(`)p Ft(ignoredups)p Fu('.)42 +b(A)32 b(v)-5 b(alue)32 b(of)630 2022 y(`)p Ft(erasedups)p +Fu(')f(causes)i(all)h(previous)f(lines)g(matc)m(hing)h(the)f(curren)m +(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 2132 y(from)42 +b(the)h(history)f(list)i(b)s(efore)e(that)h(line)g(is)g(sa)m(v)m(ed.)78 +b(An)m(y)43 b(v)-5 b(alue)43 b(not)g(in)f(the)h(ab)s(o)m(v)m(e)630 +2242 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e +Fu(is)i(unset,)i(or)e(do)s(es)h(not)g(include)f(a)h(v)-5 +b(alid)35 b(v)-5 b(alue,)36 b(all)630 2351 y(lines)30 +b(read)g(b)m(y)g(the)g(shell)g(parser)g(are)g(sa)m(v)m(ed)h(on)f(the)g +(history)g(list,)h(sub)5 b(ject)30 b(to)g(the)g(v)-5 +b(alue)630 2461 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42 +b(second)g(and)g(subsequen)m(t)f(lines)h(of)h(a)f(m)m(ulti-line)h(comp) +s(ound)630 2570 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added) +f(to)h(the)g(history)g(regardless)g(of)g(the)f(v)-5 b(alue)630 +2680 y(of)31 b Ft(HISTCONTROL)p Fu(.)150 2829 y Ft(HISTFILE)96 +b Fu(The)27 b(name)h(of)g(the)g(\014le)g(to)h(whic)m(h)f(the)g(command) +f(history)h(is)g(sa)m(v)m(ed.)41 b(The)27 b(default)h(v)-5 +b(alue)630 2939 y(is)30 b Ft(~/.bash_history)p Fu(.)150 +3088 y Ft(HISTFILESIZE)630 3198 y Fu(The)c(maxim)m(um)f(n)m(um)m(b)s +(er)g(of)h(lines)h(con)m(tained)g(in)f(the)g(history)g(\014le.)39 +b(When)26 b(this)g(v)-5 b(ariable)630 3308 y(is)25 b(assigned)h(a)g(v) +-5 b(alue,)27 b(the)f(history)f(\014le)h(is)f(truncated,)i(if)e +(necessary)-8 b(,)28 b(to)e(con)m(tain)g(no)g(more)630 +3417 y(than)37 b(that)h(n)m(um)m(b)s(er)d(of)j(lines)f(b)m(y)g(remo)m +(ving)h(the)f(oldest)h(en)m(tries.)62 b(The)37 b(history)g(\014le)g(is) +630 3527 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g +(when)f(a)h(shell)h(exits.)64 b(If)37 b(the)h(v)-5 b(alue)39 +b(is)630 3636 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i +(zero)f(size.)60 b(Non-n)m(umeric)37 b(v)-5 b(alues)37 +b(and)f(n)m(umeric)630 3746 y(v)-5 b(alues)31 b(less)f(than)g(zero)h +(inhibit)f(truncation.)41 b(The)29 b(shell)i(sets)f(the)h(default)f(v) +-5 b(alue)31 b(to)g(the)630 3856 y(v)-5 b(alue)31 b(of)f +Ft(HISTSIZE)f Fu(after)h(reading)h(an)m(y)g(startup)f(\014les.)150 +4005 y Ft(HISTIGNORE)630 4115 y Fu(A)j(colon-separated)h(list)f(of)g +(patterns)f(used)g(to)h(decide)g(whic)m(h)f(command)g(lines)h(should) +630 4224 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h(list.)47 +b(Eac)m(h)33 b(pattern)g(is)f(anc)m(hored)h(at)g(the)f(b)s(eginning)g +(of)h(the)630 4334 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g +(complete)h(line)e(\(no)h(implicit)g(`)p Ft(*)p Fu(')f(is)g(app)s +(ended\).)75 b(Eac)m(h)630 4443 y(pattern)42 b(is)g(tested)g(against)h +(the)f(line)g(after)g(the)g(c)m(hec)m(ks)h(sp)s(eci\014ed)e(b)m(y)h +Ft(HISTCONTROL)630 4553 y Fu(are)37 b(applied.)59 b(In)36 +b(addition)h(to)g(the)g(normal)g(shell)f(pattern)h(matc)m(hing)h(c)m +(haracters,)i(`)p Ft(&)p Fu(')630 4663 y(matc)m(hes)d(the)f(previous)g +(history)g(line.)57 b(`)p Ft(&)p Fu(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed) +h(using)g(a)g(bac)m(kslash;)k(the)630 4772 y(bac)m(kslash)34 +b(is)g(remo)m(v)m(ed)h(b)s(efore)e(attempting)i(a)g(matc)m(h.)51 +b(The)34 b(second)f(and)h(subsequen)m(t)630 4882 y(lines)e(of)h(a)g(m)m +(ulti-line)g(comp)s(ound)e(command)h(are)h(not)f(tested,)i(and)e(are)g +(added)g(to)h(the)630 4991 y(history)k(regardless)h(of)f(the)g(v)-5 +b(alue)38 b(of)f Ft(HISTIGNORE)p Fu(.)58 b(The)37 b(pattern)g(matc)m +(hing)i(honors)630 5101 y(the)31 b(setting)g(of)g(the)f +Ft(extglob)f Fu(shell)h(option.)630 5230 y Ft(HISTIGNORE)20 +b Fu(subsumes)g(the)j(function)f(of)h Ft(HISTCONTROL)p +Fu(.)35 b(A)23 b(pattern)f(of)h(`)p Ft(&)p Fu(')g(is)f(iden)m(tical)630 +5340 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p +Ft([)31 b(]*)p Fu(')25 b(is)h(iden)m(tical)h(to)f Ft(ignorespace)p +Fu(.)36 b(Com)m(bining)p eop end %%Page: 78 84 TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(78)150 299 y Ft(READLINE_LINE)630 -408 y Fu(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 Ft(bind)j(-x)p Fu(')d(\(see)h -(Section)h(4.2)630 518 y([Bash)i(Builtins],)g(page)g(48\).)150 -667 y Ft(READLINE_POINT)630 776 y Fu(The)23 b(p)s(osition)g(of)g(the)h -(insertion)f(p)s(oin)m(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h -(for)f(use)g(with)g(`)p Ft(bind)630 886 y(-x)p Fu(')30 -b(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(48\).)150 -1035 y Ft(REPLY)240 b Fu(The)30 b(default)g(v)-5 b(ariable)32 -b(for)e(the)g Ft(read)g Fu(builtin.)150 1183 y Ft(SECONDS)144 -b Fu(This)40 b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s -(er)e(of)i(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630 -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 Ft(SHELL)240 b Fu(The)29 -b(full)h(pathname)g(to)h(the)f(shell)g(is)g(k)m(ept)g(in)g(this)g(en)m -(vironmen)m(t)g(v)-5 b(ariable.)42 b(If)29 b(it)i(is)f(not)630 -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 Ft(SHELLOPTS)630 -2138 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) -41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 -b(alid)630 2248 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e -Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)h(command)g(\(see)i(Section) -f(4.3.1)h([The)630 2358 y(Set)g(Builtin],)h(page)f(58\).)42 -b(The)28 b(options)h(app)s(earing)f(in)g Ft(SHELLOPTS)e -Fu(are)j(those)h(rep)s(orted)630 2467 y(as)g(`)p Ft(on)p -Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29 b(this)h(v)-5 -b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)h -(starts)g(up,)630 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 Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) -m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g(started.)38 -b(This)20 b(is)h(in)m(tended)630 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 Ft(TIMEFORMAT)630 3203 y Fu(The)f(v)-5 b(alue)32 -b(of)f(this)g(parameter)g(is)g(used)f(as)h(a)g(format)h(string)f(sp)s -(ecifying)f(ho)m(w)h(the)g(tim-)630 3313 y(ing)37 b(information)f(for)h -(pip)s(elines)f(pre\014xed)f(with)h(the)h Ft(time)e Fu(reserv)m(ed)i(w) -m(ord)f(should)g(b)s(e)630 3422 y(displa)m(y)m(ed.)k(The)27 -b(`)p Ft(\045)p Fu(')h(c)m(haracter)h(in)m(tro)s(duces)e(an)h(escap)s -(e)g(sequence)g(that)g(is)f(expanded)g(to)630 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 Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p -Ft(\045)p Fu('.)630 3939 y Ft(\045[)p Fj(p)p Ft(][l]R)96 -b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 4088 -y Ft(\045[)p Fj(p)p Ft(][l]U)96 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h -(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630 -4236 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f -(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630 -4385 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e -(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 4534 -y(The)23 b(optional)j Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h -(precision,)i(the)e(n)m(um)m(b)s(er)f(of)h(fractional)h(digits)630 -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 Fr(p)h Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42 -b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5 -b(alue)30 b(3)h(is)g(used.)630 4992 y(The)54 b(optional)h -Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54 -b(min)m(utes,)61 b(of)54 b(the)g(form)630 5101 y Fr(MM)10 -b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 b(The)50 b(v)-5 -b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h(not)h(the)f -(fraction)h(is)630 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 +b(Shell)30 b(V)-8 b(ariables)2459 b(78)630 299 y(these)30 +b(t)m(w)m(o)h(patterns,)f(separating)g(them)g(with)f(a)h(colon,)h(pro)m +(vides)e(the)h(functionalit)m(y)h(of)630 408 y Ft(ignoreboth)p +Fu(.)150 558 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s +(er)e(of)j(commands)f(to)g(remem)m(b)s(er)g(on)g(the)g(history)g(list.) +62 b(If)37 b(the)630 667 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h +(not)h(sa)m(v)m(ed)g(in)e(the)h(history)g(list.)40 b(Numeric)26 +b(v)-5 b(alues)26 b(less)g(than)630 777 y(zero)i(result)e(in)h(ev)m +(ery)g(command)g(b)s(eing)f(sa)m(v)m(ed)i(on)f(the)g(history)f(list)i +(\(there)f(is)g(no)g(limit\).)630 887 y(The)j(shell)g(sets)h(the)g +(default)f(v)-5 b(alue)31 b(to)g(500)h(after)f(reading)f(an)m(y)h +(startup)f(\014les.)150 1036 y Ft(HISTTIMEFORMAT)630 +1146 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m +(ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g +(for)630 1255 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp) +f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m +(ed)630 1365 y(b)m(y)g(the)f Ft(history)f Fu(builtin.)50 +b(If)33 b(this)h(v)-5 b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g +(written)f(to)i(the)630 1474 y(history)26 b(\014le)g(so)g(they)g(ma)m +(y)h(b)s(e)e(preserv)m(ed)g(across)i(shell)f(sessions.)39 +b(This)25 b(uses)h(the)g(history)630 1584 y(commen)m(t)31 +b(c)m(haracter)h(to)f(distinguish)f(timestamps)h(from)f(other)g +(history)h(lines.)150 1733 y Ft(HOSTFILE)96 b Fu(Con)m(tains)33 +b(the)g(name)f(of)h(a)g(\014le)f(in)g(the)h(same)g(format)g(as)f +Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 1843 y(read)21 +b(when)g(the)g(shell)h(needs)f(to)h(complete)h(a)e(hostname.)38 +b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 1953 +y(completions)27 b(ma)m(y)f(b)s(e)f(c)m(hanged)h(while)f(the)h(shell)g +(is)f(running;)h(the)g(next)f(time)i(hostname)630 2062 +y(completion)33 b(is)g(attempted)g(after)g(the)f(v)-5 +b(alue)33 b(is)f(c)m(hanged,)i(Bash)e(adds)f(the)i(con)m(ten)m(ts)h(of) +630 2172 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53 +b(If)34 b Ft(HOSTFILE)e Fu(is)j(set,)h(but)e(has)g(no)h(v)-5 +b(alue,)36 b(or)e(do)s(es)630 2281 y(not)d(name)f(a)h(readable)g +(\014le,)g(Bash)f(attempts)i(to)f(read)f Ft(/etc/hosts)e +Fu(to)j(obtain)g(the)f(list)630 2391 y(of)h(p)s(ossible)f(hostname)h +(completions.)43 b(When)31 b Ft(HOSTFILE)d Fu(is)j(unset,)f(the)h +(hostname)g(list)630 2501 y(is)f(cleared.)150 2650 y +Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)150 +2800 y Ft(HOSTTYPE)96 b Fu(A)30 b(string)h(describing)f(the)g(mac)m +(hine)h(Bash)g(is)f(running)f(on.)150 2949 y Ft(IGNOREEOF)630 +3059 y Fu(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt) +h(of)f(an)g Ft(EOF)f Fu(c)m(haracter)i(as)g(the)f(sole)h(input.)630 +3168 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s +(er)f(of)h(consecutiv)m(e)i Ft(EOF)d Fu(c)m(haracters)i(that)f(can)h(b) +s(e)630 3278 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f +(input)g(line)h(b)s(efore)f(the)h(shell)g(will)g(exit.)70 +b(If)39 b(the)630 3387 y(v)-5 b(ariable)38 b(exists)f(but)f(do)s(es)g +(not)h(ha)m(v)m(e)h(a)g(n)m(umeric)e(v)-5 b(alue)37 b(\(or)h(has)e(no)h +(v)-5 b(alue\))37 b(then)g(the)630 3497 y(default)31 +b(is)g(10.)43 b(If)30 b(the)h(v)-5 b(ariable)31 b(do)s(es)g(not)g +(exist,)h(then)e Ft(EOF)g Fu(signi\014es)h(the)g(end)f(of)h(input)630 +3606 y(to)g(the)g(shell.)41 b(This)29 b(is)i(only)f(in)g(e\013ect)i +(for)e(in)m(teractiv)m(e)j(shells.)150 3756 y Ft(INPUTRC)144 +b Fu(The)68 b(name)h(of)f(the)h(Readline)g(initialization)j(\014le,)78 +b(o)m(v)m(erriding)69 b(the)g(default)g(of)630 3866 y +Ft(~/.inputrc)p Fu(.)150 4015 y Ft(LANG)288 b Fu(Used)28 +b(to)h(determine)f(the)g(lo)s(cale)h(category)h(for)e(an)m(y)h +(category)h(not)e(sp)s(eci\014cally)g(selected)630 4125 +y(with)i(a)h(v)-5 b(ariable)31 b(starting)g(with)f Ft(LC_)p +Fu(.)150 4274 y Ft(LC_ALL)192 b Fu(This)28 b(v)-5 b(ariable)29 +b(o)m(v)m(errides)h(the)f(v)-5 b(alue)29 b(of)g Ft(LANG)f +Fu(and)g(an)m(y)h(other)g Ft(LC_)f Fu(v)-5 b(ariable)29 +b(sp)s(ecifying)630 4384 y(a)i(lo)s(cale)h(category)-8 +b(.)150 4533 y Ft(LC_COLLATE)630 4643 y Fu(This)37 b(v)-5 +b(ariable)38 b(determines)g(the)g(collation)i(order)d(used)g(when)f +(sorting)i(the)g(results)g(of)630 4752 y(\014lename)e(expansion,)i(and) +e(determines)g(the)h(b)s(eha)m(vior)f(of)g(range)h(expressions,)h +(equiv-)630 4862 y(alence)e(classes,)h(and)e(collating)i(sequences)e +(within)f(\014lename)h(expansion)g(and)f(pattern)630 +4971 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],) +e(page)h(30\).)150 5121 y Ft(LC_CTYPE)96 b Fu(This)36 +b(v)-5 b(ariable)37 b(determines)f(the)h(in)m(terpretation)h(of)f(c)m +(haracters)h(and)e(the)g(b)s(eha)m(vior)h(of)630 5230 +y(c)m(haracter)46 b(classes)g(within)e(\014lename)h(expansion)g(and)f +(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 5340 y(tion)31 +b(3.5.8)h([Filename)g(Expansion],)e(page)h(30\).)p eop +end %%Page: 79 85 TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(79)870 299 y Ft +b(Shell)30 b(V)-8 b(ariables)2459 b(79)150 299 y Ft(LC_MESSAGES)630 +408 y Fu(This)25 b(v)-5 b(ariable)27 b(determines)f(the)g(lo)s(cale)i +(used)d(to)i(translate)g(double-quoted)f(strings)g(pre-)630 +518 y(ceded)31 b(b)m(y)f(a)h(`)p Ft($)p Fu(')f(\(see)h(Section)h +(3.1.2.5)g([Lo)s(cale)g(T)-8 b(ranslation],)32 b(page)f(7\).)150 +679 y Ft(LC_NUMERIC)630 788 y Fu(This)f(v)-5 b(ariable)31 +b(determines)f(the)h(lo)s(cale)h(category)g(used)e(for)g(n)m(um)m(b)s +(er)f(formatting.)150 949 y Ft(LC_TIME)144 b Fu(This)25 +b(v)-5 b(ariable)26 b(determines)g(the)g(lo)s(cale)h(category)h(used)d +(for)g(data)h(and)f(time)i(formatting.)150 1110 y Ft(LINENO)192 +b Fu(The)30 b(line)h(n)m(um)m(b)s(er)e(in)h(the)g(script)h(or)f(shell)g +(function)h(curren)m(tly)f(executing.)150 1271 y Ft(LINES)240 +b Fu(Used)43 b(b)m(y)g(the)g Ft(select)e Fu(command)i(to)g(determine)g +(the)g(column)g(length)g(for)g(prin)m(ting)630 1380 y(selection)c +(lists.)63 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d +Fu(option)j(is)f(enabled)h(\(see)630 1490 y(Section)44 +b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(64\),)k(or)43 +b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 1599 +y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1760 y +Ft(MACHTYPE)96 b Fu(A)26 b(string)g(that)h(fully)f(describ)s(es)f(the)h +(system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i(in)e +(the)630 1870 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h +Fu(format.)150 2030 y Ft(MAILCHECK)630 2140 y Fu(Ho)m(w)d(often)g(\(in) +g(seconds\))g(that)g(the)f(shell)h(should)f(c)m(hec)m(k)i(for)e(mail)h +(in)f(the)h(\014les)g(sp)s(eci\014ed)630 2250 y(in)i(the)h +Ft(MAILPATH)e Fu(or)i Ft(MAIL)e Fu(v)-5 b(ariables.)43 +b(The)30 b(default)h(is)f(60)i(seconds.)42 b(When)30 +b(it)h(is)g(time)630 2359 y(to)37 b(c)m(hec)m(k)h(for)e(mail,)j(the)e +(shell)f(do)s(es)g(so)h(b)s(efore)f(displa)m(ying)h(the)f(primary)g +(prompt.)57 b(If)630 2469 y(this)37 b(v)-5 b(ariable)38 +b(is)f(unset,)h(or)f(set)h(to)g(a)f(v)-5 b(alue)38 b(that)f(is)g(not)h +(a)f(n)m(um)m(b)s(er)f(greater)i(than)f(or)630 2578 y(equal)31 +b(to)g(zero,)g(the)g(shell)g(disables)f(mail)h(c)m(hec)m(king.)150 +2739 y Ft(MAPFILE)144 b Fu(An)35 b(arra)m(y)h(v)-5 b(ariable)36 +b(created)g(to)h(hold)e(the)g(text)i(read)e(b)m(y)g(the)h +Ft(mapfile)d Fu(builtin)i(when)630 2849 y(no)30 b(v)-5 +b(ariable)31 b(name)g(is)f(supplied.)150 3009 y Ft(OLDPWD)192 +b Fu(The)30 b(previous)g(w)m(orking)g(directory)h(as)g(set)g(b)m(y)f +(the)h Ft(cd)e Fu(builtin.)150 3170 y Ft(OPTERR)192 b +Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 b(1,)i(Bash)e(displa)m(ys)g +(error)f(messages)i(generated)g(b)m(y)f(the)g Ft(getopts)630 +3280 y Fu(builtin)30 b(command.)150 3440 y Ft(OSTYPE)192 +b Fu(A)30 b(string)h(describing)f(the)g(op)s(erating)h(system)g(Bash)f +(is)h(running)d(on.)150 3601 y Ft(PIPESTATUS)630 3711 +y Fu(An)23 b(arra)m(y)h(v)-5 b(ariable)24 b(\(see)h(Section)f(6.7)h +([Arra)m(ys],)g(page)f(91\))h(con)m(taining)g(a)f(list)g(of)g(exit)g +(sta-)630 3820 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g +(in)f(the)h(most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630 +3930 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h +(command\).)150 4091 y Ft(POSIXLY_CORRECT)630 4200 y +Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m(vironmen)m(t)g +(when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g Fm(posix)630 +4310 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s +(de],)k(page)e(96\))g(b)s(efore)f(reading)g(the)g(startup)630 +4419 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s +(cation)j(option)f(had)f(b)s(een)g(supplied.)51 b(If)34 +b(it)h(is)g(set)g(while)630 4529 y(the)c(shell)f(is)h(running,)d(Bash)j +(enables)g Fm(posix)e Fu(mo)s(de,)h(as)h(if)f(the)h(command)870 +4664 y Ft(set)47 b(-o)g(posix)630 4799 y Fu(had)30 b(b)s(een)f +(executed.)150 4960 y Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g +Fm(id)g Fu(of)h(the)f(shell's)h(paren)m(t)g(pro)s(cess.)40 +b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)150 +5121 y Ft(PROMPT_COMMAND)630 5230 y Fu(If)32 b(set,)h(the)f(v)-5 +b(alue)33 b(is)f(in)m(terpreted)g(as)g(a)h(command)f(to)h(execute)g(b)s +(efore)f(the)g(prin)m(ting)g(of)630 5340 y(eac)m(h)g(primary)d(prompt)g +(\()p Ft($PS1)p Fu(\).)p eop end +%%Page: 80 86 +TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(PROMPT_DIRTRIM)630 +408 y Fu(If)27 b(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f +(zero,)i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er) +e(of)h(trailing)630 518 y(directory)35 b(comp)s(onen)m(ts)g(to)h +(retain)f(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g +Ft(\\W)g Fu(prompt)g(string)630 628 y(escap)s(es)21 b(\(see)h(Section)f +(6.9)h([Con)m(trolling)g(the)f(Prompt],)h(page)f(94\).)39 +b(Characters)21 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f +(an)g(ellipsis.)150 911 y Ft(PS0)336 b Fu(The)30 b(v)-5 +b(alue)32 b(of)f(this)f(parameter)i(is)f(expanded)f(lik)m(e)i +Fr(PS1)38 b Fu(and)30 b(displa)m(y)m(ed)h(b)m(y)g(in)m(teractiv)m(e)630 +1020 y(shells)f(after)h(reading)g(a)g(command)f(and)f(b)s(efore)h(the)h +(command)f(is)h(executed.)150 1194 y Ft(PS3)336 b Fu(The)34 +b(v)-5 b(alue)35 b(of)f(this)g(v)-5 b(ariable)35 b(is)g(used)e(as)i +(the)f(prompt)g(for)g(the)g Ft(select)f Fu(command.)52 +b(If)630 1303 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e +Ft(select)f Fu(command)h(prompts)f(with)h(`)p Ft(#?)g +Fu(')150 1477 y Ft(PS4)336 b Fu(The)24 b(v)-5 b(alue)25 +b(is)f(the)h(prompt)e(prin)m(ted)h(b)s(efore)g(the)h(command)f(line)h +(is)f(ec)m(ho)s(ed)i(when)d(the)i Ft(-x)630 1587 y Fu(option)32 +b(is)f(set)h(\(see)g(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f +(60\).)45 b(The)31 b(\014rst)f(c)m(haracter)630 1696 +y(of)k Ft(PS4)g Fu(is)g(replicated)i(m)m(ultiple)f(times,)h(as)e +(necessary)-8 b(,)37 b(to)e(indicate)g(m)m(ultiple)g(lev)m(els)h(of)630 +1806 y(indirection.)41 b(The)30 b(default)h(is)f(`)p +Ft(+)g Fu('.)150 1979 y Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m +(orking)h(directory)g(as)f(set)h(b)m(y)f(the)h Ft(cd)f +Fu(builtin.)150 2153 y Ft(RANDOM)192 b Fu(Eac)m(h)30 +b(time)g(this)f(parameter)g(is)g(referenced,)h(a)f(random)g(in)m(teger) +h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630 2262 y(is)i(generated.)43 +b(Assigning)31 b(a)g(v)-5 b(alue)31 b(to)g(this)g(v)-5 +b(ariable)31 b(seeds)g(the)g(random)f(n)m(um)m(b)s(er)f(gen-)630 +2372 y(erator.)150 2545 y Ft(READLINE_LINE)630 2655 y +Fu(The)e(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g(bu\013er,)f(for) +h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h(Section)h(4.2)630 +2765 y([Bash)i(Builtins],)g(page)g(49\).)150 2938 y Ft(READLINE_POINT) +630 3048 y Fu(The)23 b(p)s(osition)g(of)g(the)h(insertion)f(p)s(oin)m +(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h(for)f(use)g(with)g(`)p +Ft(bind)630 3157 y(-x)p Fu(')30 b(\(see)h(Section)h(4.2)f([Bash)g +(Builtins],)g(page)g(49\).)150 3331 y Ft(REPLY)240 b +Fu(The)30 b(default)g(v)-5 b(ariable)32 b(for)e(the)g +Ft(read)g Fu(builtin.)150 3504 y Ft(SECONDS)144 b Fu(This)40 +b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s(er)e(of)i +(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630 +3614 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43 +b(resets)g(the)g(coun)m(t)g(to)g(the)g(v)-5 b(alue)43 +b(assigned,)j(and)c(the)630 3724 y(expanded)35 b(v)-5 +b(alue)36 b(b)s(ecomes)h(the)f(v)-5 b(alue)36 b(assigned)g(plus)f(the)h +(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 3833 y(the)31 +b(assignmen)m(t.)150 4007 y Ft(SHELL)240 b Fu(The)29 +b(full)h(pathname)g(to)h(the)f(shell)g(is)g(k)m(ept)g(in)g(this)g(en)m +(vironmen)m(t)g(v)-5 b(ariable.)42 b(If)29 b(it)i(is)f(not)630 +4116 y(set)36 b(when)f(the)h(shell)g(starts,)i(Bash)e(assigns)h(to)f +(it)h(the)f(full)f(pathname)h(of)g(the)g(curren)m(t)630 +4226 y(user's)30 b(login)h(shell.)150 4399 y Ft(SHELLOPTS)630 +4509 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) +41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 +b(alid)630 4619 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e +Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)h(command)g(\(see)i(Section) +f(4.3.1)h([The)630 4728 y(Set)g(Builtin],)h(page)f(60\).)42 +b(The)28 b(options)h(app)s(earing)f(in)g Ft(SHELLOPTS)e +Fu(are)j(those)h(rep)s(orted)630 4838 y(as)g(`)p Ft(on)p +Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29 b(this)h(v)-5 +b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)h +(starts)g(up,)630 4947 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list) +g(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h(startup)f +(\014les.)630 5057 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 +b(.)150 5230 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) +m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g(started.)38 +b(This)20 b(is)h(in)m(tended)630 5340 y(to)31 b(b)s(e)f(a)h(coun)m(t)g +(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)p +eop end +%%Page: 81 87 +TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41 +b(Shell)30 b(V)-8 b(ariables)2459 b(81)150 299 y Ft(TIMEFORMAT)630 +408 y Fu(The)30 b(v)-5 b(alue)32 b(of)f(this)g(parameter)g(is)g(used)f +(as)h(a)g(format)h(string)f(sp)s(ecifying)f(ho)m(w)h(the)g(tim-)630 +518 y(ing)37 b(information)f(for)h(pip)s(elines)f(pre\014xed)f(with)h +(the)h Ft(time)e Fu(reserv)m(ed)i(w)m(ord)f(should)g(b)s(e)630 +628 y(displa)m(y)m(ed.)k(The)27 b(`)p Ft(\045)p Fu(')h(c)m(haracter)h +(in)m(tro)s(duces)e(an)h(escap)s(e)g(sequence)g(that)g(is)f(expanded)g +(to)630 737 y(a)37 b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.) +59 b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630 +847 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h(p) +s(ortions.)630 1006 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p +Ft(\045)p Fu('.)630 1166 y Ft(\045[)p Fj(p)p Ft(][l]R)96 +b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 1325 +y Ft(\045[)p Fj(p)p Ft(][l]U)96 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h +(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630 +1484 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f +(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630 +1644 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e +(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 1803 +y(The)23 b(optional)j Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h +(precision,)i(the)e(n)m(um)m(b)s(er)f(of)h(fractional)h(digits)630 +1913 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 +b(v)-5 b(alue)36 b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h +(fraction)g(to)g(b)s(e)630 2022 y(output.)48 b(A)m(t)34 +b(most)f(three)g(places)h(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y) +h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 2132 y(of)31 +b Fr(p)h Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42 +b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5 +b(alue)30 b(3)h(is)g(used.)630 2267 y(The)54 b(optional)h +Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54 +b(min)m(utes,)61 b(of)54 b(the)g(form)630 2376 y Fr(MM)10 +b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 b(The)50 b(v)-5 +b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h(not)h(the)f +(fraction)h(is)630 2486 y(included.)630 2620 y(If)30 +b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h(as)g(if)f +(it)h(had)f(the)h(v)-5 b(alue)870 2755 y Ft ($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630 -433 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f +2889 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f (information)h(is)f(displa)m(y)m(ed.)62 b(A)37 b(trailing)i(newline)e -(is)630 543 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m -(y)m(ed.)150 702 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5 +(is)630 2999 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m +(y)m(ed.)150 3158 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5 b(alue)23 b(greater)h(than)e(zero,)j Ft(TMOUT)d Fu(is)g(treated)i(as)e -(the)h(default)g(timeout)g(for)g(the)630 812 y Ft(read)31 +(the)h(default)g(timeout)g(for)g(the)630 3268 y Ft(read)31 b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g -(48\).)47 b(The)32 b Ft(select)e Fu(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 -Ft(TMOUT)e Fu(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 +(49\).)47 b(The)32 b Ft(select)e Fu(command)630 3377 +y(\(see)f(Section)h(3.2.4.2)g([Conditional)g(Constructs],)e(page)i +(10\))f(terminates)g(if)g(input)e(do)s(es)630 3487 y(not)k(arriv)m(e)g +(after)g Ft(TMOUT)e Fu(seconds)h(when)f(input)h(is)g(coming)h(from)f(a) +h(terminal.)630 3621 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d (v)-5 b(alue)41 b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f -(of)h(seconds)f(to)630 1275 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input) +(of)h(seconds)f(to)630 3731 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input) e(after)i(issuing)f(the)h(primary)e(prompt.)39 b(Bash)26 -b(terminates)h(after)630 1385 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m +b(terminates)h(after)630 3841 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m (b)s(er)e(of)h(seconds)h(if)f(a)h(complete)h(line)e(of)h(input)e(do)s -(es)h(not)h(arriv)m(e.)150 1544 y Ft(TMPDIR)192 b Fu(If)39 +(es)h(not)h(arriv)m(e.)150 4000 y Ft(TMPDIR)192 b Fu(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 b(alue)40 b(as)f(the)h(name)f(of)h(a) -g(directory)g(in)f(whic)m(h)g(Bash)h(creates)630 1654 +g(directory)g(in)f(whic)m(h)g(Bash)h(creates)630 4110 y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g(use.)150 -1813 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)g(of)g +4269 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)g(of)g (the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)p eop end -%%Page: 80 86 -TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(80)150 299 y Fp(6)80 -b(Bash)54 b(F)-13 b(eatures)150 504 y Fu(This)30 b(c)m(hapter)h -(describ)s(es)e(features)i(unique)e(to)i(Bash.)150 725 -y Fs(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 884 y Ft(bash)h([long-opt])e +%%Page: 82 88 +TeXDict begin 82 87 bop 3659 -116 a Fu(82)150 299 y Fp(6)80 +b(Bash)54 b(F)-13 b(eatures)150 502 y Fu(This)30 b(c)m(hapter)h +(describ)s(es)e(features)i(unique)e(to)i(Bash.)150 731 +y Fs(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 890 y Ft(bash)h([long-opt])e ([-ir])h([-abefhkmnptuvxdBCDHP])c([-o)47 b Fj(option)p Ft(])e([-O)i Fj(shopt_option)p Ft(])e([)p Fj(ar-)390 -994 y(gument)h Ft(...)o(])390 1103 y(bash)h([long-opt])e +1000 y(gument)h Ft(...)o(])390 1110 y(bash)h([long-opt])e ([-abefhkmnptuvxdBCDHP])c([-o)47 b Fj(option)p Ft(])f([-O)h Fj(shopt_option)p Ft(])d(-c)j Fj(string)f Ft([)p Fj(ar-)390 -1213 y(gument)g Ft(...)o(])390 1323 y(bash)h([long-opt])e(-s)i +1219 y(gument)g Ft(...)o(])390 1329 y(bash)h([long-opt])e(-s)i ([-abefhkmnptuvxdBCDHP])42 b([-o)k Fj(option)p Ft(])g([-O)h -Fj(shopt_option)p Ft(])d([)p Fj(ar-)390 1432 y(gument)i -Ft(...)o(])275 1561 y Fu(All)31 b(of)g(the)f(single-c)m(haracter)k +Fj(shopt_option)p Ft(])d([)p Fj(ar-)390 1438 y(gument)i +Ft(...)o(])275 1567 y Fu(All)31 b(of)g(the)f(single-c)m(haracter)k (options)d(used)f(with)g(the)h Ft(set)f Fu(builtin)g(\(see)h(Section)h -(4.3.1)g([The)f(Set)150 1670 y(Builtin],)45 b(page)c(58\))i(can)e(b)s +(4.3.1)g([The)f(Set)150 1676 y(Builtin],)45 b(page)c(60\))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 1780 y(are)38 b(sev)m(eral)h(m)m +74 b(In)41 b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m (ulti-c)m(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 b(These)38 b(options)f(m)m(ust)h(app)s(ear)e(on)i(the)150 -1890 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 2037 y Ft(--debugger)630 -2147 y Fu(Arrange)j(for)g(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e +1896 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 2043 y Ft(--debugger)630 +2152 y Fu(Arrange)j(for)g(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e (executed)i(b)s(efore)f(the)g(shell)g(starts.)49 b(T)-8 -b(urns)630 2257 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(62)630 -2366 y(for)30 b(a)h(description)f(of)h(the)f Ft(extdebug)f -Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150 2514 -y Ft(--dump-po-strings)630 2623 y Fu(A)37 b(list)g(of)f(all)i +b(urns)630 2262 y(on)35 b(extended)g(debugging)f(mo)s(de)h(\(see)g +(Section)h(4.3.2)h([The)d(Shopt)g(Builtin],)j(page)f(64,)630 +2371 y(for)30 b(a)h(description)f(of)h(the)f Ft(extdebug)f +Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150 2519 +y Ft(--dump-po-strings)630 2628 y Fu(A)37 b(list)g(of)f(all)i (double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p Ft($)p -Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 2733 +Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 2738 y(output)29 b(in)g(the)g Fm(gnu)g Ft(gettext)f Fu(PO)g(\(p)s(ortable)i (ob)5 b(ject\))30 b(\014le)g(format.)40 b(Equiv)-5 b(alen)m(t)31 -b(to)f Ft(-D)630 2843 y Fu(except)h(for)f(the)h(output)f(format.)150 -2990 y Ft(--dump-strings)630 3100 y Fu(Equiv)-5 b(alen)m(t)31 -b(to)g Ft(-D)p Fu(.)150 3248 y Ft(--help)192 b Fu(Displa)m(y)32 +b(to)f Ft(-D)630 2847 y Fu(except)h(for)f(the)h(output)f(format.)150 +2995 y Ft(--dump-strings)630 3104 y Fu(Equiv)-5 b(alen)m(t)31 +b(to)g Ft(-D)p Fu(.)150 3251 y Ft(--help)192 b Fu(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 3396 y Ft(--init-file)27 b Fj(filename)150 -3505 y Ft(--rcfile)h Fj(filename)630 3615 y Fu(Execute)23 +(successfully)-8 b(.)150 3399 y Ft(--init-file)27 b Fj(filename)150 +3508 y Ft(--rcfile)h Fj(filename)630 3618 y Fu(Execute)23 b(commands)e(from)g Fr(\014lename)28 b Fu(\(instead)22 b(of)g Ft(~/.bashrc)p Fu(\))e(in)h(an)h(in)m(teractiv)m(e)i(shell.)150 -3763 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g -Ft(-l)p Fu(.)150 3910 y Ft(--noediting)630 4020 y Fu(Do)h(not)e(use)h +3765 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g +Ft(-l)p Fu(.)150 3912 y Ft(--noediting)630 4022 y Fu(Do)h(not)e(use)h (the)g Fm(gnu)f Fu(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command) -f(Line)g(Editing],)630 4130 y(page)h(101\))h(to)f(read)g(command)f +f(Line)g(Editing],)630 4131 y(page)h(104\))h(to)f(read)g(command)f (lines)g(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)150 -4277 y Ft(--noprofile)630 4387 y Fu(Don't)22 b(load)g(the)g +4278 y Ft(--noprofile)630 4388 y Fu(Don't)22 b(load)g(the)g (system-wide)f(startup)g(\014le)h Ft(/etc/profile)c Fu(or)j(an)m(y)h -(of)f(the)h(p)s(ersonal)f(ini-)630 4496 y(tialization)34 +(of)f(the)h(p)s(ersonal)f(ini-)630 4498 y(tialization)34 b(\014les)e Ft(~/.bash_profile)p Fu(,)c Ft(~/.bash_login)p -Fu(,)g(or)k Ft(~/.profile)c Fu(when)j(Bash)630 4606 y(is)f(in)m(v)m(ok) +Fu(,)g(or)k Ft(~/.profile)c Fu(when)j(Bash)630 4607 y(is)f(in)m(v)m(ok) m(ed)i(as)f(a)g(login)g(shell.)150 4754 y Ft(--norc)192 b Fu(Don't)35 b(read)f(the)g Ft(~/.bashrc)e Fu(initialization)k(\014le) f(in)e(an)h(in)m(teractiv)m(e)j(shell.)52 b(This)33 b(is)h(on)630 -4863 y(b)m(y)c(default)h(if)f(the)h(shell)f(is)h(in)m(v)m(ok)m(ed)h(as) +4864 y(b)m(y)c(default)h(if)f(the)h(shell)f(is)h(in)m(v)m(ok)m(ed)h(as) e Ft(sh)p Fu(.)150 5011 y Ft(--posix)144 b Fu(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 Fm(posix)630 5121 y Fu(standard)35 b(to)h(matc)m(h)g(the)g(standard.)55 b(This)35 b(is)h(in)m(tended)f(to)h(mak)m(e)h(Bash)f(b)s(eha)m(v)m(e)g (as)g(a)630 5230 y(strict)26 b(sup)s(erset)e(of)h(that)g(standard.)38 -b(See)26 b(Section)f(6.11)i([Bash)e(POSIX)f(Mo)s(de],)j(page)f(94,)630 +b(See)26 b(Section)f(6.11)i([Bash)e(POSIX)f(Mo)s(de],)j(page)f(96,)630 5340 y(for)k(a)h(description)f(of)h(the)f(Bash)h Fm(posix)f Fu(mo)s(de.)p eop end -%%Page: 81 87 -TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(81)150 299 y Ft(--restricted)630 -408 y Fu(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h -(Section)g(6.10)h([The)d(Restricted)j(Shell],)630 518 -y(page)31 b(93\).)150 682 y Ft(--verbose)630 791 y Fu(Equiv)-5 -b(alen)m(t)31 b(to)g Ft(-v)p Fu(.)41 b(Prin)m(t)30 b(shell)g(input)g -(lines)g(as)h(they're)g(read.)150 955 y Ft(--version)630 -1065 y Fu(Sho)m(w)d(v)m(ersion)g(information)g(for)g(this)g(instance)h -(of)f(Bash)g(on)g(the)g(standard)f(output)h(and)630 1174 -y(exit)j(successfully)-8 b(.)275 1341 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 1450 y(not)i(a)m(v)-5 -b(ailable)32 b(with)e(the)h Ft(set)e Fu(builtin.)150 -1616 y Ft(-c)384 b Fu(Read)44 b(and)e(execute)j(commands)e(from)g(the)g -(\014rst)g(non-option)h Fr(argumen)m(t)h Fu(after)f(pro-)630 -1726 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 -1835 y(p)s(ositional)31 b(parameters,)g(starting)g(with)f -Ft($0)p Fu(.)150 1999 y Ft(-i)384 b Fu(F)-8 b(orce)22 -b(the)g(shell)f(to)g(run)f(in)m(teractiv)m(ely)-8 b(.)41 -b(In)m(teractiv)m(e)23 b(shells)e(are)h(describ)s(ed)d(in)i(Section)h -(6.3)630 2109 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(83.)150 -2273 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h -(had)f(b)s(een)f(directly)i(in)m(v)m(ok)m(ed)h(b)m(y)f(login.)44 -b(When)31 b(the)h(shell)630 2382 y(is)37 b(in)m(teractiv)m(e,)43 -b(this)37 b(is)g(equiv)-5 b(alen)m(t)39 b(to)f(starting)h(a)e(login)i -(shell)e(with)g(`)p Ft(exec)30 b(-l)g(bash)p Fu('.)630 -2492 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 -2601 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29 -b(bash)g(--login)p Fu(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell) -h(with)g(a)630 2711 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(82,)i(for)d(a)h -(description)630 2821 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of) -f(a)h(login)g(shell.)150 2984 y Ft(-r)384 b Fu(Mak)m(e)54 -b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h(Section)g(6.10)h([The) -d(Restricted)j(Shell],)630 3094 y(page)31 b(93\).)150 -3258 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f -(if)g(no)f(argumen)m(ts)i(remain)e(after)i(option)f(pro)s(cessing,)h -(then)630 3367 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 -3477 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 3641 y Ft(-D)384 b Fu(A)37 -b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p -Ft($)p Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 -3750 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 3860 -y(the)e(curren)m(t)g(lo)s(cale)h(is)f(not)g Ft(C)g Fu(or)f -Ft(POSIX)g Fu(\(see)h(Section)h(3.1.2.5)h([Lo)s(cale)g(T)-8 -b(ranslation],)630 3970 y(page)31 b(7\).)42 b(This)29 -b(implies)i(the)f Ft(-n)g Fu(option;)h(no)f(commands)g(will)h(b)s(e)f -(executed.)150 4133 y Ft([-+]O)f([)p Fj(shopt_option)p -Ft(])630 4243 y Fr(shopt)p 854 4243 28 4 v 40 w(option)44 -b Fu(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h -Ft(shopt)d Fu(builtin)i(\(see)630 4353 y(Section)32 b(4.3.2)h([The)e -(Shopt)f(Builtin],)i(page)g(62\).)44 b(If)31 b Fr(shopt)p -2724 4353 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f -Fu(sets)630 4462 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h -Ft(+O)e Fu(unsets)f(it.)39 b(If)23 b Fr(shopt)p 2423 -4462 V 40 w(option)h Fu(is)g(not)g(supplied,)g(the)g(names)630 -4572 y(and)31 b(v)-5 b(alues)32 b(of)g(the)g(shell)g(options)g -(accepted)h(b)m(y)f Ft(shopt)e Fu(are)i(prin)m(ted)f(on)h(the)g -(standard)630 4681 y(output.)40 b(If)29 b(the)h(in)m(v)m(o)s(cation)h -(option)f(is)f Ft(+O)p Fu(,)h(the)f(output)g(is)h(displa)m(y)m(ed)g(in) -f(a)h(format)f(that)630 4791 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.) -150 4955 y Ft(--)384 b Fu(A)38 b Ft(--)g Fu(signals)g(the)h(end)e(of)i -(options)f(and)g(disables)g(further)f(option)h(pro)s(cessing.)64 -b(An)m(y)630 5064 y(argumen)m(ts)31 b(after)g(the)f Ft(--)g -Fu(are)h(treated)g(as)g(\014lenames)f(and)g(argumen)m(ts.)275 -5230 y(A)d Fl(lo)-5 b(gin)35 b Fu(shell)27 b(is)g(one)h(whose)f -(\014rst)f(c)m(haracter)j(of)e(argumen)m(t)h(zero)f(is)h(`)p -Ft(-)p Fu(',)g(or)f(one)g(in)m(v)m(ok)m(ed)i(with)e(the)150 -5340 y Ft(--login)h Fu(option.)p eop end -%%Page: 82 88 -TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(82)275 299 y(An)28 -b Fl(inter)-5 b(active)37 b Fu(shell)30 b(is)f(one)g(started)h(without) -f(non-option)h(argumen)m(ts,)g(unless)e Ft(-s)h Fu(is)g(sp)s -(eci\014ed,)150 408 y(without)k(sp)s(ecifying)h(the)f -Ft(-c)g Fu(option,)i(and)e(whose)g(input)g(and)f(output)h(are)h(b)s -(oth)f(connected)h(to)g(ter-)150 518 y(minals)g(\(as)g(determined)f(b)m -(y)h Ft(isatty\(3\))p Fu(\),)e(or)i(one)g(started)g(with)f(the)h -Ft(-i)f Fu(option.)51 b(See)33 b(Section)i(6.3)150 628 -y([In)m(teractiv)m(e)e(Shells],)e(page)g(83,)g(for)f(more)h -(information.)275 763 y(If)i(argumen)m(ts)h(remain)g(after)h(option)f -(pro)s(cessing,)h(and)e(neither)h(the)g Ft(-c)g Fu(nor)f(the)h -Ft(-s)g Fu(option)g(has)150 873 y(b)s(een)44 b(supplied,)j(the)d -(\014rst)g(argumen)m(t)h(is)g(assumed)e(to)j(b)s(e)d(the)i(name)g(of)f -(a)h(\014le)g(con)m(taining)h(shell)150 982 y(commands)30 -b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page)h(39\).)41 -b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h(fashion,)150 -1092 y Ft($0)37 b Fu(is)g(set)h(to)h(the)e(name)h(of)f(the)h(\014le,)i -(and)c(the)i(p)s(ositional)g(parameters)g(are)g(set)g(to)g(the)g -(remaining)150 1202 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 1311 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 1421 y(the)k(exit)g -(status)g(is)f(0.)150 1655 y Fs(6.2)68 b(Bash)45 b(Startup)g(Files)150 -1814 y Fu(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 1924 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 2034 y(Tilde)f(Expansion)g -(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(22\).)275 -2169 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(83.)150 -2370 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(login)j -(shell,)g(or)g(with)e Fh(--login)150 2516 y Fu(When)c(Bash)f(is)h(in)m -(v)m(ok)m(ed)h(as)f(an)g(in)m(teractiv)m(e)j(login)d(shell,)i(or)e(as)g -(a)g(non-in)m(teractiv)m(e)i(shell)e(with)g(the)150 2626 -y Ft(--login)30 b Fu(option,)k(it)f(\014rst)e(reads)h(and)g(executes)i -(commands)e(from)f(the)i(\014le)f Ft(/etc/profile)p Fu(,)e(if)i(that) -150 2736 y(\014le)44 b(exists.)80 b(After)44 b(reading)g(that)g -(\014le,)j(it)d(lo)s(oks)g(for)f Ft(~/.bash_profile)p -Fu(,)g Ft(~/.bash_login)p Fu(,)h(and)150 2845 y Ft(~/.profile)p -Fu(,)25 b(in)i(that)g(order,)h(and)e(reads)h(and)f(executes)j(commands) -d(from)h(the)g(\014rst)f(one)i(that)f(exists)150 2955 -y(and)j(is)h(readable.)42 b(The)30 b Ft(--noprofile)d -Fu(option)k(ma)m(y)g(b)s(e)f(used)g(when)g(the)h(shell)f(is)h(started)g -(to)g(inhibit)150 3064 y(this)f(b)s(eha)m(vior.)275 3200 -y(When)38 b(a)h(login)h(shell)f(exits,)j(Bash)d(reads)f(and)h(executes) -h(commands)e(from)g(the)h(\014le)g Ft(~/.bash_)150 3310 -y(logout)p Fu(,)29 b(if)h(it)h(exists.)150 3510 y Fk(In)m(v)m(ok)m(ed) -40 b(as)h(an)f(in)m(teractiv)m(e)f(non-login)k(shell)150 -3657 y Fu(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 -3767 y(commands)31 b(from)g Ft(~/.bashrc)p Fu(,)f(if)h(that)h(\014le)g -(exists.)44 b(This)31 b(ma)m(y)h(b)s(e)f(inhibited)g(b)m(y)g(using)g -(the)h Ft(--norc)150 3876 y Fu(option.)40 b(The)27 b -Ft(--rcfile)h Fj(file)e Fu(option)h(will)g(force)h(Bash)f(to)h(read)f -(and)f(execute)j(commands)d(from)h Fr(\014le)150 3986 -y Fu(instead)k(of)f Ft(~/.bashrc)p Fu(.)275 4121 y(So,)g(t)m(ypically) --8 b(,)33 b(y)m(our)d Ft(~/.bash_profile)c Fu(con)m(tains)32 -b(the)f(line)390 4257 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g -(~/.bashrc;)e(fi)150 4393 y Fu(after)31 b(\(or)g(b)s(efore\))f(an)m(y)h -(login-sp)s(eci\014c)g(initializations.)150 4593 y Fk(In)m(v)m(ok)m(ed) -40 b(non-in)m(teractiv)m(ely)150 4740 y Fu(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 -4850 y(v)-5 b(ariable)35 b Ft(BASH_ENV)d Fu(in)i(the)h(en)m(vironmen)m -(t,)h(expands)e(its)g(v)-5 b(alue)35 b(if)g(it)g(app)s(ears)e(there,)j -(and)e(uses)g(the)150 4959 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 -5069 y(command)g(w)m(ere)h(executed:)390 5204 y Ft(if)47 -b([)h(-n)f("$BASH_ENV")e(];)i(then)f(.)i("$BASH_ENV";)c(fi)150 -5340 y Fu(but)30 b(the)g(v)-5 b(alue)31 b(of)g(the)f -Ft(PATH)f Fu(v)-5 b(ariable)32 b(is)e(not)h(used)e(to)i(searc)m(h)g -(for)f(the)h(\014lename.)p eop end %%Page: 83 89 TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(83)275 299 y(As)42 -b(noted)g(ab)s(o)m(v)m(e,)47 b(if)42 b(a)h(non-in)m(teractiv)m(e)i -(shell)d(is)g(in)m(v)m(ok)m(ed)i(with)e(the)h Ft(--login)d -Fu(option,)46 b(Bash)150 408 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 -614 y Fk(In)m(v)m(ok)m(ed)40 b(with)g(name)h Fh(sh)150 -761 y Fu(If)c(Bash)g(is)g(in)m(v)m(ok)m(ed)i(with)e(the)g(name)g -Ft(sh)p Fu(,)i(it)f(tries)f(to)h(mimic)g(the)f(startup)g(b)s(eha)m -(vior)g(of)h(historical)150 870 y(v)m(ersions)31 b(of)f -Ft(sh)g Fu(as)h(closely)h(as)e(p)s(ossible,)g(while)h(conforming)f(to)h -(the)g Fm(posix)e Fu(standard)h(as)h(w)m(ell.)275 1010 -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 1120 y Ft(--login)31 b Fu(option,)k(it)e(\014rst)g(attempts)h -(to)g(read)f(and)g(execute)h(commands)f(from)g Ft(/etc/profile)d -Fu(and)150 1230 y Ft(~/.profile)p Fu(,)d(in)i(that)i(order.)39 -b(The)30 b Ft(--noprofile)c Fu(option)k(ma)m(y)g(b)s(e)f(used)g(to)h -(inhibit)f(this)h(b)s(eha)m(vior.)150 1339 y(When)36 -b(in)m(v)m(ok)m(ed)i(as)e(an)g(in)m(teractiv)m(e)j(shell)e(with)f(the)g -(name)h Ft(sh)p Fu(,)g(Bash)f(lo)s(oks)h(for)f(the)h(v)-5 -b(ariable)37 b Ft(ENV)p Fu(,)150 1449 y(expands)29 b(its)i(v)-5 -b(alue)30 b(if)h(it)f(is)g(de\014ned,)g(and)f(uses)h(the)g(expanded)g -(v)-5 b(alue)30 b(as)h(the)f(name)g(of)g(a)h(\014le)f(to)h(read)150 -1558 y(and)g(execute.)46 b(Since)32 b(a)g(shell)g(in)m(v)m(ok)m(ed)h -(as)f Ft(sh)f Fu(do)s(es)g(not)h(attempt)h(to)g(read)e(and)g(execute)i -(commands)150 1668 y(from)39 b(an)m(y)g(other)h(startup)e(\014les,)k -(the)d Ft(--rcfile)e Fu(option)j(has)f(no)g(e\013ect.)69 -b(A)39 b(non-in)m(teractiv)m(e)j(shell)150 1778 y(in)m(v)m(ok)m(ed)32 -b(with)e(the)g(name)h Ft(sh)f Fu(do)s(es)g(not)g(attempt)i(to)f(read)f -(an)m(y)h(other)g(startup)e(\014les.)275 1918 y(When)h(in)m(v)m(ok)m -(ed)h(as)g Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e -Fu(mo)s(de)h(after)h(the)g(startup)f(\014les)g(are)h(read.)150 -2123 y Fk(In)m(v)m(ok)m(ed)40 b(in)h Fg(posix)g Fk(mo)s(de)150 -2270 y Fu(When)28 b(Bash)h(is)g(started)g(in)g Fm(posix)f -Fu(mo)s(de,)g(as)h(with)g(the)g Ft(--posix)d Fu(command)j(line)g -(option,)h(it)f(follo)m(ws)150 2380 y(the)24 b Fm(posix)f -Fu(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 Ft(ENV)f -Fu(v)-5 b(ariable)150 2489 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 2599 y(other)31 b(startup)f(\014les)g(are)h -(read.)150 2804 y Fk(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)h(shell)h -(daemon)150 2951 y Fu(Bash)36 b(attempts)h(to)g(determine)f(when)f(it)i -(is)f(b)s(eing)g(run)e(with)i(its)g(standard)g(input)f(connected)i(to)g -(a)150 3060 y(net)m(w)m(ork)h(connection,)j(as)c(when)g(executed)h(b)m -(y)f(the)h(remote)g(shell)g(daemon,)h(usually)e Ft(rshd)p -Fu(,)h(or)g(the)150 3170 y(secure)c(shell)f(daemon)h -Ft(sshd)p Fu(.)49 b(If)33 b(Bash)g(determines)h(it)g(is)f(b)s(eing)g -(run)f(in)i(this)f(fashion,)h(it)g(reads)g(and)150 3280 -y(executes)29 b(commands)e(from)g Ft(~/.bashrc)p Fu(,)e(if)j(that)g -(\014le)f(exists)h(and)f(is)g(readable.)41 b(It)27 b(will)h(not)f(do)h -(this)f(if)150 3389 y(in)m(v)m(ok)m(ed)k(as)f Ft(sh)p -Fu(.)40 b(The)29 b Ft(--norc)f Fu(option)i(ma)m(y)g(b)s(e)f(used)f(to)j -(inhibit)e(this)g(b)s(eha)m(vior,)h(and)f(the)h Ft(--rcfile)150 -3499 y Fu(option)36 b(ma)m(y)g(b)s(e)e(used)h(to)h(force)g(another)f -(\014le)h(to)g(b)s(e)e(read,)j(but)d(neither)i Ft(rshd)e -Fu(nor)h Ft(sshd)f Fu(generally)150 3608 y(in)m(v)m(ok)m(e)e(the)f -(shell)f(with)h(those)f(options)h(or)f(allo)m(w)i(them)f(to)g(b)s(e)e -(sp)s(eci\014ed.)150 3814 y Fk(In)m(v)m(ok)m(ed)40 b(with)g(unequal)h -(e\013ectiv)m(e)e(and)i(real)g Fg(uid/gid)p Fk(s)150 -3960 y Fu(If)34 b(Bash)h(is)g(started)g(with)f(the)h(e\013ectiv)m(e)i -(user)d(\(group\))h(id)f(not)h(equal)g(to)g(the)g(real)g(user)f -(\(group\))h(id,)150 4070 y(and)26 b(the)i Ft(-p)e Fu(option)h(is)g -(not)h(supplied,)e(no)h(startup)g(\014les)g(are)g(read,)h(shell)f -(functions)g(are)g(not)g(inherited)150 4180 y(from)41 -b(the)g(en)m(vironmen)m(t,)j(the)d Ft(SHELLOPTS)p Fu(,)h -Ft(BASHOPTS)p Fu(,)g Ft(CDPATH)p Fu(,)g(and)e Ft(GLOBIGNORE)e -Fu(v)-5 b(ariables,)45 b(if)150 4289 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 4399 -y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f(supplied)g(at)h(in)m -(v)m(o)s(cation,)k(the)c(startup)f(b)s(eha)m(vior)h(is)g(the)g(same,)i -(but)d(the)150 4508 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.) -150 4750 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)150 -4974 y Fk(6.3.1)63 b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)150 -5121 y Fu(An)g(in)m(teractiv)m(e)k(shell)d(is)g(one)g(started)g -(without)g(non-option)g(argumen)m(ts,)j(unless)c Ft(-s)h -Fu(is)f(sp)s(eci\014ed,)150 5230 y(without)30 b(sp)s(ecifying)g(the)g -Ft(-c)f Fu(option,)h(and)g(whose)f(input)g(and)g(error)h(output)f(are)h -(b)s(oth)f(connected)i(to)150 5340 y(terminals)g(\(as)g(determined)f(b) -m(y)g Ft(isatty\(3\))p Fu(\),)e(or)j(one)f(started)h(with)f(the)h -Ft(-i)f Fu(option.)p eop end +b(Bash)30 b(F)-8 b(eatures)2484 b(83)150 299 y Ft(--restricted)630 +408 y Fu(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h +(Section)g(6.10)h([The)d(Restricted)j(Shell],)630 518 +y(page)31 b(95\).)150 687 y Ft(--verbose)630 796 y Fu(Equiv)-5 +b(alen)m(t)31 b(to)g Ft(-v)p Fu(.)41 b(Prin)m(t)30 b(shell)g(input)g +(lines)g(as)h(they're)g(read.)150 965 y Ft(--version)630 +1074 y Fu(Sho)m(w)d(v)m(ersion)g(information)g(for)g(this)g(instance)h +(of)f(Bash)g(on)g(the)g(standard)f(output)h(and)630 1184 +y(exit)j(successfully)-8 b(.)275 1357 y(There)28 b(are)i(sev)m(eral)g +(single-c)m(haracter)i(options)d(that)h(ma)m(y)g(b)s(e)e(supplied)g(at) +i(in)m(v)m(o)s(cation)h(whic)m(h)e(are)150 1467 y(not)i(a)m(v)-5 +b(ailable)32 b(with)e(the)h Ft(set)e Fu(builtin.)150 +1640 y Ft(-c)384 b Fu(Read)66 b(and)f(execute)i(commands)e(from)g(the)h +(\014rst)e(non-option)i(argumen)m(t)g Fr(com-)630 1749 +y(mand)p 859 1749 28 4 v 39 w(string)p Fu(,)34 b(then)e(exit.)49 +b(If)32 b(there)h(are)g(argumen)m(ts)g(after)g(the)g +Fr(command)p 3303 1749 V 40 w(string)p Fu(,)h(the)630 +1859 y(\014rst)e(argumen)m(t)h(is)g(assigned)g(to)h Ft($0)e +Fu(and)h(an)m(y)g(remaining)g(argumen)m(ts)g(are)g(assigned)g(to)630 +1968 y(the)38 b(p)s(ositional)h(parameters.)65 b(The)37 +b(assignmen)m(t)i(to)g Ft($0)f Fu(sets)g(the)h(name)f(of)g(the)g +(shell,)630 2078 y(whic)m(h)30 b(is)h(used)e(in)h(w)m(arning)g(and)g +(error)g(messages.)150 2247 y Ft(-i)384 b Fu(F)-8 b(orce)22 +b(the)g(shell)f(to)g(run)f(in)m(teractiv)m(ely)-8 b(.)41 +b(In)m(teractiv)m(e)23 b(shells)e(are)h(describ)s(ed)d(in)i(Section)h +(6.3)630 2356 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(85.)150 +2525 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h +(had)f(b)s(een)f(directly)i(in)m(v)m(ok)m(ed)h(b)m(y)f(login.)44 +b(When)31 b(the)h(shell)630 2634 y(is)37 b(in)m(teractiv)m(e,)43 +b(this)37 b(is)g(equiv)-5 b(alen)m(t)39 b(to)f(starting)h(a)e(login)i +(shell)e(with)g(`)p Ft(exec)30 b(-l)g(bash)p Fu('.)630 +2744 y(When)h(the)g(shell)h(is)f(not)g(in)m(teractiv)m(e,)k(the)c +(login)h(shell)g(startup)f(\014les)g(will)g(b)s(e)g(executed.)630 +2853 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29 +b(bash)g(--login)p Fu(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell) +h(with)g(a)630 2963 y(Bash)26 b(login)g(shell.)39 b(See)26 +b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(84,)i(for)d(a)h +(description)630 3073 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of) +f(a)h(login)g(shell.)150 3241 y Ft(-r)384 b Fu(Mak)m(e)54 +b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h(Section)g(6.10)h([The) +d(Restricted)j(Shell],)630 3351 y(page)31 b(95\).)150 +3519 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f +(if)g(no)f(argumen)m(ts)i(remain)e(after)i(option)f(pro)s(cessing,)h +(then)630 3629 y(commands)i(are)h(read)g(from)f(the)h(standard)f +(input.)39 b(This)28 b(option)h(allo)m(ws)h(the)f(p)s(ositional)630 +3738 y(parameters)i(to)g(b)s(e)f(set)g(when)g(in)m(v)m(oking)h(an)g(in) +m(teractiv)m(e)i(shell.)150 3907 y Ft(-D)384 b Fu(A)37 +b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p +Ft($)p Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 +4017 y(output.)63 b(These)38 b(are)g(the)g(strings)g(that)h(are)f(sub)5 +b(ject)38 b(to)h(language)g(translation)g(when)630 4126 +y(the)e(curren)m(t)g(lo)s(cale)h(is)f(not)g Ft(C)g Fu(or)f +Ft(POSIX)g Fu(\(see)h(Section)h(3.1.2.5)h([Lo)s(cale)g(T)-8 +b(ranslation],)630 4236 y(page)31 b(7\).)42 b(This)29 +b(implies)i(the)f Ft(-n)g Fu(option;)h(no)f(commands)g(will)h(b)s(e)f +(executed.)150 4404 y Ft([-+]O)f([)p Fj(shopt_option)p +Ft(])630 4514 y Fr(shopt)p 854 4514 V 40 w(option)44 +b Fu(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h +Ft(shopt)d Fu(builtin)i(\(see)630 4623 y(Section)32 b(4.3.2)h([The)e +(Shopt)f(Builtin],)i(page)g(64\).)44 b(If)31 b Fr(shopt)p +2724 4623 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f +Fu(sets)630 4733 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h +Ft(+O)e Fu(unsets)f(it.)39 b(If)23 b Fr(shopt)p 2423 +4733 V 40 w(option)h Fu(is)g(not)g(supplied,)g(the)g(names)630 +4843 y(and)31 b(v)-5 b(alues)32 b(of)g(the)g(shell)g(options)g +(accepted)h(b)m(y)f Ft(shopt)e Fu(are)i(prin)m(ted)f(on)h(the)g +(standard)630 4952 y(output.)40 b(If)29 b(the)h(in)m(v)m(o)s(cation)h +(option)f(is)f Ft(+O)p Fu(,)h(the)f(output)g(is)h(displa)m(y)m(ed)g(in) +f(a)h(format)f(that)630 5062 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.) +150 5230 y Ft(--)384 b Fu(A)38 b Ft(--)g Fu(signals)g(the)h(end)e(of)i +(options)f(and)g(disables)g(further)f(option)h(pro)s(cessing.)64 +b(An)m(y)630 5340 y(argumen)m(ts)31 b(after)g(the)f Ft(--)g +Fu(are)h(treated)g(as)g(\014lenames)f(and)g(argumen)m(ts.)p +eop end %%Page: 84 90 TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(84)275 299 y(An)30 -b(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 430 y(The)i Ft(-s)g -Fu(in)m(v)m(o)s(cation)j(option)f(ma)m(y)f(b)s(e)g(used)f(to)i(set)f -(the)g(p)s(ositional)h(parameters)f(when)f(an)h(in)m(ter-)150 -540 y(activ)m(e)g(shell)d(is)h(started.)150 733 y Fk(6.3.2)63 -b(Is)41 b(this)g(Shell)g(In)m(teractiv)m(e?)150 880 y -Fu(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 990 y(v)-5 b(alue)30 b(of)g(the)f(`)p -Ft(-)p Fu(')h(sp)s(ecial)g(parameter.)41 b(It)29 b(con)m(tains)i -Ft(i)e Fu(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)44 -b(F)-8 b(or)30 b(example:)390 1121 y Ft(case)47 b("$-")f(in)390 -1231 y(*i*\))h(echo)f(This)h(shell)f(is)h(interactive)e(;;)390 -1340 y(*\))i(echo)g(This)f(shell)h(is)g(not)g(interactive)e(;;)390 -1450 y(esac)275 1581 y Fu(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 Ft(PS1)p Fu(;)g(it)g(is)e(unset)h(in)f(non-in)m -(teractiv)m(e)150 1691 y(shells,)31 b(and)e(set)i(in)f(in)m(teractiv)m -(e)k(shells.)40 b(Th)m(us:)390 1822 y Ft(if)47 b([)h(-z)f("$PS1")f(];)h -(then)772 1932 y(echo)f(This)h(shell)f(is)i(not)f(interactive)390 -2042 y(else)772 2151 y(echo)f(This)h(shell)f(is)i(interactive)390 -2261 y(fi)150 2454 y Fk(6.3.3)63 b(In)m(teractiv)m(e)38 -b(Shell)k(Beha)m(vior)150 2601 y Fu(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 2732 -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 -2842 y(page)31 b(82.)199 2973 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 3083 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 Ft(SIGTTIN)p Fu(,)330 3192 y -Ft(SIGTTOU)p Fu(,)29 b(and)g Ft(SIGTSTP)p Fu(.)199 3324 -y(3.)61 b(Bash)39 b(expands)f(and)g(displa)m(ys)h Ft(PS1)f -Fu(b)s(efore)h(reading)g(the)g(\014rst)f(line)h(of)g(a)g(command,)i -(and)d(ex-)330 3434 y(pands)30 b(and)g(displa)m(ys)h -Ft(PS2)e Fu(b)s(efore)i(reading)g(the)g(second)f(and)h(subsequen)m(t)f -(lines)h(of)g(a)g(m)m(ulti-line)330 3543 y(command.)199 -3675 y(4.)61 b(Bash)26 b(executes)i(the)e(v)-5 b(alue)27 -b(of)f(the)h Ft(PROMPT_COMMAND)22 b Fu(v)-5 b(ariable)27 -b(as)g(a)f(command)g(b)s(efore)g(prin)m(ting)330 3784 -y(the)31 b(primary)e(prompt,)h Ft($PS1)f Fu(\(see)i(Section)g(5.2)h -([Bash)f(V)-8 b(ariables],)32 b(page)f(69\).)199 3916 -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 -4025 y(from)k(the)g(user's)g(terminal.)199 4157 y(6.)61 -b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 b(of)f(the)g -Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29 b(-o)36 b Fu(instead)h(of)f -(exiting)i(imme-)330 4266 y(diately)f(when)e(it)i(receiv)m(es)h(an)e -Ft(EOF)f Fu(on)h(its)g(standard)f(input)g(when)h(reading)g(a)g(command) -g(\(see)330 4376 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g -(58\).)199 4507 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 4617 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 -4726 y(Bash)28 b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g -(the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g -(with)330 4836 y(history)i(enabled)h(exits.)199 4967 -y(8.)61 b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i -(page)e(88\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 -5099 y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g -(ignores)f Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page) -f(38\).)154 5230 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g -(traps,)g Ft(SIGINT)e Fu(is)i(caugh)m(t)h(and)f(handled)e(\(\(see)k -(Section)e(3.7.6)i([Signals],)330 5340 y(page)i(38\).)42 -b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)p -eop end +b(Bash)30 b(F)-8 b(eatures)2484 b(84)275 299 y(A)27 b +Fl(lo)-5 b(gin)35 b Fu(shell)27 b(is)g(one)h(whose)f(\014rst)f(c)m +(haracter)j(of)e(argumen)m(t)h(zero)f(is)h(`)p Ft(-)p +Fu(',)g(or)f(one)g(in)m(v)m(ok)m(ed)i(with)e(the)150 +408 y Ft(--login)h Fu(option.)275 555 y(An)g Fl(inter)-5 +b(active)37 b Fu(shell)30 b(is)f(one)g(started)h(without)f(non-option)h +(argumen)m(ts,)g(unless)e Ft(-s)h Fu(is)g(sp)s(eci\014ed,)150 +665 y(without)k(sp)s(ecifying)h(the)f Ft(-c)g Fu(option,)i(and)e(whose) +g(input)g(and)f(output)h(are)h(b)s(oth)f(connected)h(to)g(ter-)150 +774 y(minals)g(\(as)g(determined)f(b)m(y)h Ft(isatty\(3\))p +Fu(\),)e(or)i(one)g(started)g(with)f(the)h Ft(-i)f Fu(option.)51 +b(See)33 b(Section)i(6.3)150 884 y([In)m(teractiv)m(e)e(Shells],)e +(page)g(85,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h +(remain)g(after)h(option)f(pro)s(cessing,)h(and)e(neither)h(the)g +Ft(-c)g Fu(nor)f(the)h Ft(-s)g Fu(option)g(has)150 1140 +y(b)s(een)44 b(supplied,)j(the)d(\014rst)g(argumen)m(t)h(is)g(assumed)e +(to)j(b)s(e)d(the)i(name)g(of)f(a)h(\014le)g(con)m(taining)h(shell)150 +1250 y(commands)30 b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page) +h(40\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h +(fashion,)150 1359 y Ft($0)37 b Fu(is)g(set)h(to)h(the)e(name)h(of)f +(the)h(\014le,)i(and)c(the)i(p)s(ositional)g(parameters)g(are)g(set)g +(to)g(the)g(remaining)150 1469 y(argumen)m(ts.)h(Bash)26 +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 1579 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 1688 y(the)k(exit)g +(status)g(is)f(0.)150 1947 y Fs(6.2)68 b(Bash)45 b(Startup)g(Files)150 +2107 y Fu(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 2216 y(b)s(e)29 b(read,)i(Bash)f(rep)s(orts)f +(an)h(error.)40 b(Tildes)30 b(are)g(expanded)f(in)h(\014lenames)g(as)g +(describ)s(ed)f(ab)s(o)m(v)m(e)i(under)150 2326 y(Tilde)f(Expansion)g +(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(22\).)275 +2473 y(In)m(teractiv)m(e)h(shells)f(are)g(describ)s(ed)e(in)h(Section)h +(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(85.)150 +2684 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(login)j +(shell,)g(or)g(with)e Fh(--login)150 2831 y Fu(When)c(Bash)f(is)h(in)m +(v)m(ok)m(ed)h(as)f(an)g(in)m(teractiv)m(e)j(login)d(shell,)i(or)e(as)g +(a)g(non-in)m(teractiv)m(e)i(shell)e(with)g(the)150 2940 +y Ft(--login)30 b Fu(option,)k(it)f(\014rst)e(reads)h(and)g(executes)i +(commands)e(from)f(the)i(\014le)f Ft(/etc/profile)p Fu(,)e(if)i(that) +150 3050 y(\014le)44 b(exists.)80 b(After)44 b(reading)g(that)g +(\014le,)j(it)d(lo)s(oks)g(for)f Ft(~/.bash_profile)p +Fu(,)g Ft(~/.bash_login)p Fu(,)h(and)150 3160 y Ft(~/.profile)p +Fu(,)25 b(in)i(that)g(order,)h(and)e(reads)h(and)f(executes)j(commands) +d(from)h(the)g(\014rst)f(one)i(that)f(exists)150 3269 +y(and)j(is)h(readable.)42 b(The)30 b Ft(--noprofile)d +Fu(option)k(ma)m(y)g(b)s(e)f(used)g(when)g(the)h(shell)f(is)h(started)g +(to)g(inhibit)150 3379 y(this)f(b)s(eha)m(vior.)275 3526 +y(When)h(an)g(in)m(teractiv)m(e)k(login)d(shell)g(exits,)h(or)f(a)g +(non-in)m(teractiv)m(e)i(login)f(shell)e(executes)i(the)f +Ft(exit)150 3635 y Fu(builtin)g(command,)i(Bash)e(reads)h(and)f +(executes)i(commands)e(from)g(the)h(\014le)g Ft(~/.bash_logout)p +Fu(,)d(if)i(it)150 3745 y(exists.)150 3956 y Fk(In)m(v)m(ok)m(ed)40 +b(as)h(an)f(in)m(teractiv)m(e)f(non-login)k(shell)150 +4103 y Fu(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 +4213 y(commands)31 b(from)g Ft(~/.bashrc)p Fu(,)f(if)h(that)h(\014le)g +(exists.)44 b(This)31 b(ma)m(y)h(b)s(e)f(inhibited)g(b)m(y)g(using)g +(the)h Ft(--norc)150 4322 y Fu(option.)40 b(The)27 b +Ft(--rcfile)h Fj(file)e Fu(option)h(will)g(force)h(Bash)f(to)h(read)f +(and)f(execute)j(commands)d(from)h Fr(\014le)150 4432 +y Fu(instead)k(of)f Ft(~/.bashrc)p Fu(.)275 4579 y(So,)g(t)m(ypically) +-8 b(,)33 b(y)m(our)d Ft(~/.bash_profile)c Fu(con)m(tains)32 +b(the)f(line)390 4725 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g +(~/.bashrc;)e(fi)150 4872 y Fu(after)31 b(\(or)g(b)s(efore\))f(an)m(y)h +(login-sp)s(eci\014c)g(initializations.)150 5083 y Fk(In)m(v)m(ok)m(ed) +40 b(non-in)m(teractiv)m(ely)150 5230 y Fu(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 +5340 y(v)-5 b(ariable)35 b Ft(BASH_ENV)d Fu(in)i(the)h(en)m(vironmen)m +(t,)h(expands)e(its)g(v)-5 b(alue)35 b(if)g(it)g(app)s(ears)e(there,)j +(and)e(uses)g(the)p eop end %%Page: 85 91 TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(85)154 299 y(11.)61 -b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i -Ft(SIGHUP)d Fu(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f -Ft(huponexit)e Fu(shell)330 408 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 -542 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g -(ignored,)g(and)f(`)p Ft(set)h(-n)p Fu(')f(has)h(no)f(e\013ect)j(\(see) -e(Section)h(4.3.1)g([The)330 652 y(Set)g(Builtin],)g(page)g(58\).)154 -785 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s -(dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32 -b(of)g(the)h Ft(MAIL)p Fu(,)e Ft(MAILPATH)p Fu(,)330 -895 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31 -b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 b(ariables],)32 -b(page)f(69\).)154 1028 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i -(references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 b(ariables)34 -b(after)g(`)p Ft(set)29 b(-u)p Fu(')k(has)g(b)s(een)330 -1138 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(58\).)154 -1271 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f -(errors)g(caused)g(b)m(y)h Fr(v)-5 b(ar)54 b Fu(b)s(eing)48 -b(unset)g(or)h(n)m(ull)f(in)330 1381 y Ft(${)p Fj(var)p -Ft(:?)p Fj(word)p Ft(})27 b Fu(expansions)j(\(see)h(Section)h(3.5.3)g -([Shell)e(P)m(arameter)i(Expansion],)e(page)h(23\).)154 -1514 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 -1648 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f -(sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f -(cause)330 1757 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(94\).)154 1891 y(18.)61 -b(A)34 b(failed)g Ft(exec)f Fu(will)h(not)g(cause)g(the)g(shell)g(to)g -(exit)h(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330 -2000 y(page)e(41\).)154 2134 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 2267 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g -(directory)g(argumen)m(ts)f(to)i(the)e Ft(cd)g Fu(builtin)g(is)h -(enabled)f(b)m(y)h(default)330 2377 y(\(see)35 b(the)g(description)f -(of)h(the)f Ft(cdspell)f Fu(option)h(to)i(the)e Ft(shopt)f -Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 2486 y(Shopt)30 -b(Builtin],)h(page)g(62\).)154 2620 y(21.)61 b(The)42 -b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h -Ft(TMOUT)e Fu(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h -(not)330 2729 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s -(er)g(of)i(seconds)f(after)g(prin)m(ting)g Ft($PS1)f -Fu(\(see)i(Section)g(5.2)h([Bash)330 2839 y(V)-8 b(ariables],)32 -b(page)f(69\).)150 3069 y Fs(6.4)68 b(Bash)45 b(Conditional)h -(Expressions)150 3229 y Fu(Conditional)26 b(expressions)g(are)g(used)f -(b)m(y)g(the)h Ft([[)f Fu(comp)s(ound)g(command)g(and)g(the)h -Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 3338 y(commands.)275 -3472 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 3581 y(status)i(of)g(a)g(\014le.)57 b(There)35 -b(are)h(string)g(op)s(erators)g(and)f(n)m(umeric)h(comparison)g(op)s -(erators)g(as)g(w)m(ell.)57 b(If)150 3691 y(the)27 b -Fr(\014le)33 b Fu(argumen)m(t)28 b(to)g(one)f(of)g(the)h(primaries)f -(is)g(of)g(the)h(form)f Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)i(\014le)h -(descriptor)f Fr(N)37 b Fu(is)150 3800 y(c)m(hec)m(k)m(ed.)51 -b(If)32 b(the)h Fr(\014le)39 b Fu(argumen)m(t)33 b(to)h(one)f(of)g(the) -g(primaries)g(is)g(one)g(of)h Ft(/dev/stdin)p Fu(,)d -Ft(/dev/stdout)p Fu(,)150 3910 y(or)f Ft(/dev/stderr)p -Fu(,)e(\014le)i(descriptor)h(0,)g(1,)g(or)f(2,)h(resp)s(ectiv)m(ely)-8 -b(,)32 b(is)f(c)m(hec)m(k)m(ed.)275 4043 y(When)37 b(used)g(with)g -Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p -Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h(curren)m -(t)150 4153 y(lo)s(cale.)k(The)30 b Ft(test)f Fu(command)i(uses)f(ASCI) -s(I)e(ordering.)275 4287 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 4396 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 -4553 y Ft(-a)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists.)150 4711 y Ft(-b)30 b Fj(file)162 -b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g(\014le.)150 -4868 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s(ecial) -f(\014le.)150 5025 y Ft(-d)f Fj(file)162 b Fu(T)-8 b(rue)30 -b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(directory)-8 -b(.)150 5183 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30 -b(if)g Fr(\014le)36 b Fu(exists.)150 5340 y Ft(-f)30 -b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(is)g(a)h(regular)f(\014le.)p eop -end +b(Bash)30 b(F)-8 b(eatures)2484 b(85)150 299 y(expanded)30 +b(v)-5 b(alue)30 b(as)h(the)g(name)f(of)h(a)f(\014le)h(to)g(read)f(and) +g(execute.)42 b(Bash)31 b(b)s(eha)m(v)m(es)g(as)g(if)f(the)g(follo)m +(wing)150 408 y(command)g(w)m(ere)h(executed:)390 552 +y Ft(if)47 b([)h(-n)f("$BASH_ENV")e(];)i(then)f(.)i("$BASH_ENV";)c(fi) +150 696 y Fu(but)30 b(the)g(v)-5 b(alue)31 b(of)g(the)f +Ft(PATH)f Fu(v)-5 b(ariable)32 b(is)e(not)h(used)e(to)i(searc)m(h)g +(for)f(the)h(\014lename.)275 840 y(As)42 b(noted)g(ab)s(o)m(v)m(e,)47 +b(if)42 b(a)h(non-in)m(teractiv)m(e)i(shell)d(is)g(in)m(v)m(ok)m(ed)i +(with)e(the)h Ft(--login)d Fu(option,)46 b(Bash)150 949 +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 1158 y Fk(In)m(v)m(ok)m(ed)40 +b(with)g(name)h Fh(sh)150 1305 y Fu(If)c(Bash)g(is)g(in)m(v)m(ok)m(ed)i +(with)e(the)g(name)g Ft(sh)p Fu(,)i(it)f(tries)f(to)h(mimic)g(the)f +(startup)g(b)s(eha)m(vior)g(of)h(historical)150 1414 +y(v)m(ersions)31 b(of)f Ft(sh)g Fu(as)h(closely)h(as)e(p)s(ossible,)g +(while)h(conforming)f(to)h(the)g Fm(posix)e Fu(standard)h(as)h(w)m +(ell.)275 1558 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 1668 y Ft(--login)31 b Fu(option,)k(it)e +(\014rst)g(attempts)h(to)g(read)f(and)g(execute)h(commands)f(from)g +Ft(/etc/profile)d Fu(and)150 1777 y Ft(~/.profile)p Fu(,)d(in)i(that)i +(order.)39 b(The)30 b Ft(--noprofile)c Fu(option)k(ma)m(y)g(b)s(e)f +(used)g(to)h(inhibit)f(this)h(b)s(eha)m(vior.)150 1887 +y(When)36 b(in)m(v)m(ok)m(ed)i(as)e(an)g(in)m(teractiv)m(e)j(shell)e +(with)f(the)g(name)h Ft(sh)p Fu(,)g(Bash)f(lo)s(oks)h(for)f(the)h(v)-5 +b(ariable)37 b Ft(ENV)p Fu(,)150 1997 y(expands)29 b(its)i(v)-5 +b(alue)30 b(if)h(it)f(is)g(de\014ned,)g(and)f(uses)h(the)g(expanded)g +(v)-5 b(alue)30 b(as)h(the)f(name)g(of)g(a)h(\014le)f(to)h(read)150 +2106 y(and)g(execute.)46 b(Since)32 b(a)g(shell)g(in)m(v)m(ok)m(ed)h +(as)f Ft(sh)f Fu(do)s(es)g(not)h(attempt)h(to)g(read)e(and)g(execute)i +(commands)150 2216 y(from)39 b(an)m(y)g(other)h(startup)e(\014les,)k +(the)d Ft(--rcfile)e Fu(option)j(has)f(no)g(e\013ect.)69 +b(A)39 b(non-in)m(teractiv)m(e)j(shell)150 2325 y(in)m(v)m(ok)m(ed)32 +b(with)e(the)g(name)h Ft(sh)f Fu(do)s(es)g(not)g(attempt)i(to)f(read)f +(an)m(y)h(other)g(startup)e(\014les.)275 2469 y(When)h(in)m(v)m(ok)m +(ed)h(as)g Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e +Fu(mo)s(de)h(after)h(the)g(startup)f(\014les)g(are)h(read.)150 +2678 y Fk(In)m(v)m(ok)m(ed)40 b(in)h Fg(posix)g Fk(mo)s(de)150 +2824 y Fu(When)28 b(Bash)h(is)g(started)g(in)g Fm(posix)f +Fu(mo)s(de,)g(as)h(with)g(the)g Ft(--posix)d Fu(command)j(line)g +(option,)h(it)f(follo)m(ws)150 2934 y(the)24 b Fm(posix)f +Fu(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 Ft(ENV)f +Fu(v)-5 b(ariable)150 3044 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 3153 y(other)31 b(startup)f(\014les)g(are)h +(read.)150 3362 y Fk(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)h(shell)h +(daemon)150 3509 y Fu(Bash)36 b(attempts)h(to)g(determine)f(when)f(it)i +(is)f(b)s(eing)g(run)e(with)i(its)g(standard)g(input)f(connected)i(to)g +(a)150 3618 y(net)m(w)m(ork)h(connection,)j(as)c(when)g(executed)h(b)m +(y)f(the)h(remote)g(shell)g(daemon,)h(usually)e Ft(rshd)p +Fu(,)h(or)g(the)150 3728 y(secure)c(shell)f(daemon)h +Ft(sshd)p Fu(.)49 b(If)33 b(Bash)g(determines)h(it)g(is)f(b)s(eing)g +(run)f(in)i(this)f(fashion,)h(it)g(reads)g(and)150 3837 +y(executes)29 b(commands)e(from)g Ft(~/.bashrc)p Fu(,)e(if)j(that)g +(\014le)f(exists)h(and)f(is)g(readable.)41 b(It)27 b(will)h(not)f(do)h +(this)f(if)150 3947 y(in)m(v)m(ok)m(ed)k(as)f Ft(sh)p +Fu(.)40 b(The)29 b Ft(--norc)f Fu(option)i(ma)m(y)g(b)s(e)f(used)f(to)j +(inhibit)e(this)g(b)s(eha)m(vior,)h(and)f(the)h Ft(--rcfile)150 +4057 y Fu(option)36 b(ma)m(y)g(b)s(e)e(used)h(to)h(force)g(another)f +(\014le)h(to)g(b)s(e)e(read,)j(but)d(neither)i Ft(rshd)e +Fu(nor)h Ft(sshd)f Fu(generally)150 4166 y(in)m(v)m(ok)m(e)e(the)f +(shell)f(with)h(those)f(options)h(or)f(allo)m(w)i(them)f(to)g(b)s(e)e +(sp)s(eci\014ed.)150 4375 y Fk(In)m(v)m(ok)m(ed)40 b(with)g(unequal)h +(e\013ectiv)m(e)e(and)i(real)g Fg(uid/gid)p Fk(s)150 +4522 y Fu(If)34 b(Bash)h(is)g(started)g(with)f(the)h(e\013ectiv)m(e)i +(user)d(\(group\))h(id)f(not)h(equal)g(to)g(the)g(real)g(user)f +(\(group\))h(id,)150 4631 y(and)26 b(the)i Ft(-p)e Fu(option)h(is)g +(not)h(supplied,)e(no)h(startup)g(\014les)g(are)g(read,)h(shell)f +(functions)g(are)g(not)g(inherited)150 4741 y(from)41 +b(the)g(en)m(vironmen)m(t,)j(the)d Ft(SHELLOPTS)p Fu(,)h +Ft(BASHOPTS)p Fu(,)g Ft(CDPATH)p Fu(,)g(and)e Ft(GLOBIGNORE)e +Fu(v)-5 b(ariables,)45 b(if)150 4850 y(they)28 b(app)s(ear)f(in)h(the)g +(en)m(vironmen)m(t,)i(are)e(ignored,)h(and)e(the)h(e\013ectiv)m(e)j +(user)c(id)h(is)g(set)g(to)h(the)f(real)h(user)150 4960 +y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f(supplied)g(at)h(in)m +(v)m(o)s(cation,)k(the)c(startup)f(b)s(eha)m(vior)h(is)g(the)g(same,)i +(but)d(the)150 5070 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.) +150 5324 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)p +eop end %%Page: 86 92 TeXDict begin 86 91 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(86)150 299 y Ft(-g)30 -b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f(set.)150 -446 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 -593 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 -b Fu(exists)31 b(and)f(its)g Ft(")p Fu(stic)m(ky)p Ft(")h -Fu(bit)g(is)f(set.)150 740 y Ft(-p)g Fj(file)162 b Fu(T)-8 -b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(named)f -(pip)s(e)f(\(FIF)m(O\).)150 886 y Ft(-r)h Fj(file)162 -b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(readable.)150 1033 y Ft(-s)g Fj(file)162 -b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(has)g(a)g(size)i(greater)f(than)f(zero.)150 1180 -y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30 b(if)g(\014le)h(descriptor)f -Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g(to)h(a)g(terminal.)150 -1327 y Ft(-u)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-user-id)h(bit)f(is)h -(set.)150 1474 y Ft(-w)f Fj(file)162 b Fu(T)-8 b(rue)30 -b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(writable.)150 -1621 y Ft(-x)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(executable.)150 -1768 y Ft(-G)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f -(e\013ectiv)m(e)j(group)d(id.)150 1915 y Ft(-L)g Fj(file)162 -b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 -b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 2062 y Ft(-N)f -Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b -Fu(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h(since)g(it)h(w)m -(as)g(last)g(read.)150 2209 y Ft(-O)f Fj(file)162 b Fu(T)-8 -b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m -(y)h(the)f(e\013ectiv)m(e)j(user)d(id.)150 2355 y Ft(-S)g -Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b -Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m(k)m(et.)150 2502 -y Fj(file1)e Ft(-ef)g Fj(file2)630 2612 y Fu(T)-8 b(rue)30 -b(if)g Fr(\014le1)38 b Fu(and)30 b Fr(\014le2)38 b Fu(refer)30 -b(to)i(the)e(same)h(device)g(and)f(ino)s(de)g(n)m(um)m(b)s(ers.)150 -2759 y Fj(file1)f Ft(-nt)g Fj(file2)630 2868 y Fu(T)-8 -b(rue)23 b(if)h Fr(\014le1)32 b Fu(is)24 b(new)m(er)g(\(according)h(to) -g(mo)s(di\014cation)f(date\))h(than)f Fr(\014le2)p Fu(,)i(or)e(if)g -Fr(\014le1)31 b Fu(exists)630 2978 y(and)f Fr(\014le2)38 -b Fu(do)s(es)30 b(not.)150 3125 y Fj(file1)f Ft(-ot)g -Fj(file2)630 3234 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 -b Fu(is)31 b(older)f(than)g Fr(\014le2)p Fu(,)i(or)e(if)g -Fr(\014le2)38 b Fu(exists)31 b(and)f Fr(\014le1)38 b -Fu(do)s(es)30 b(not.)150 3381 y Ft(-o)g Fj(optname)630 -3491 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h(option)f -Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 b(list)h(of)f(options)h -(app)s(ears)e(in)630 3601 y(the)33 b(description)h(of)f(the)g -Ft(-o)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)g -(4.3.1)h([The)e(Set)630 3710 y(Builtin],)e(page)g(58\).)150 -3857 y Ft(-v)f Fj(varname)630 3967 y Fu(T)-8 b(rue)30 -b(if)g(the)h(shell)f(v)-5 b(ariable)32 b Fr(v)-5 b(arname)35 -b Fu(is)30 b(set)h(\(has)g(b)s(een)e(assigned)i(a)g(v)-5 -b(alue\).)150 4114 y Ft(-R)30 b Fj(varname)630 4223 y -Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32 -b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h -(reference.)150 4370 y Ft(-z)f Fj(string)66 b Fu(T)-8 -b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 b Fu(is)31 -b(zero.)150 4517 y Ft(-n)f Fj(string)150 4626 y(string)192 -b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 -b Fu(is)31 b(non-zero.)150 4773 y Fj(string1)d Ft(==)i -Fj(string2)150 4883 y(string1)e Ft(=)i Fj(string2)630 -4993 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82 -b(When)44 b(used)f(with)g(the)h Ft([[)g Fu(command,)j(this)d(p)s(er-) -630 5102 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 -5212 y(Constructs],)30 b(page)h(10\).)630 5340 y(`)p -Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h Ft(test)e -Fu(command)h(for)g Fm(posix)g Fu(conformance.)p eop end +b(Bash)30 b(F)-8 b(eatures)2484 b(86)150 299 y Fk(6.3.1)63 +b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)150 +446 y Fu(An)g(in)m(teractiv)m(e)k(shell)d(is)g(one)g(started)g(without) +g(non-option)g(argumen)m(ts,)j(unless)c Ft(-s)h Fu(is)f(sp)s +(eci\014ed,)150 555 y(without)30 b(sp)s(ecifying)g(the)g +Ft(-c)f Fu(option,)h(and)g(whose)f(input)g(and)g(error)h(output)f(are)h +(b)s(oth)f(connected)i(to)150 665 y(terminals)g(\(as)g(determined)f(b)m +(y)g Ft(isatty\(3\))p Fu(\),)e(or)j(one)f(started)h(with)f(the)h +Ft(-i)f Fu(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)i Ft(-s)g Fu(in)m(v)m(o)s(cation)j(option)f(ma)m(y)f(b)s +(e)g(used)f(to)i(set)f(the)g(p)s(ositional)h(parameters)f(when)f(an)h +(in)m(ter-)150 1038 y(activ)m(e)g(shell)d(is)h(started.)150 +1232 y Fk(6.3.2)63 b(Is)41 b(this)g(Shell)g(In)m(teractiv)m(e?)150 +1379 y Fu(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 +Ft(-)p Fu(')h(sp)s(ecial)g(parameter.)41 b(It)29 b(con)m(tains)i +Ft(i)e Fu(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 Ft(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 Fu(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 Ft(PS1)p Fu(;)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 Ft(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 Fk(6.3.3)63 b(In)m(teractiv)m(e)38 +b(Shell)k(Beha)m(vior)150 3102 y Fu(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(84.)199 3475 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g +(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(100\))h(is)e(enabled)g(b)m +(y)g(default.)46 b(When)32 b(job)330 3585 y(con)m(trol)j(is)f(in)f +(e\013ect,)k(Bash)d(ignores)g(the)g(k)m(eyb)s(oard-generated)h(job)e +(con)m(trol)i(signals)g Ft(SIGTTIN)p Fu(,)330 3694 y +Ft(SIGTTOU)p Fu(,)29 b(and)g Ft(SIGTSTP)p Fu(.)199 3826 +y(3.)61 b(Bash)39 b(expands)f(and)g(displa)m(ys)h Ft(PS1)f +Fu(b)s(efore)h(reading)g(the)g(\014rst)f(line)h(of)g(a)g(command,)i +(and)d(ex-)330 3936 y(pands)30 b(and)g(displa)m(ys)h +Ft(PS2)e Fu(b)s(efore)i(reading)g(the)g(second)f(and)h(subsequen)m(t)f +(lines)h(of)g(a)g(m)m(ulti-line)330 4045 y(command.)40 +b(Bash)31 b(displa)m(ys)f Ft(PS0)g Fu(after)h(it)g(reads)f(a)h(command) +f(but)f(b)s(efore)h(executing)i(it.)199 4177 y(4.)61 +b(Bash)26 b(executes)i(the)e(v)-5 b(alue)27 b(of)f(the)h +Ft(PROMPT_COMMAND)22 b Fu(v)-5 b(ariable)27 b(as)g(a)f(command)g(b)s +(efore)g(prin)m(ting)330 4287 y(the)31 b(primary)e(prompt,)h +Ft($PS1)f Fu(\(see)i(Section)g(5.2)h([Bash)f(V)-8 b(ariables],)32 +b(page)f(71\).)199 4419 y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h +([Command)g(Line)g(Editing],)h(page)g(104\))g(is)f(used)g(to)g(read)g +(commands)330 4528 y(from)k(the)g(user's)g(terminal.)199 +4660 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 +b(of)f(the)g Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29 +b(-o)36 b Fu(instead)h(of)f(exiting)i(imme-)330 4770 +y(diately)f(when)e(it)i(receiv)m(es)h(an)e Ft(EOF)f Fu(on)h(its)g +(standard)f(input)g(when)h(reading)g(a)g(command)g(\(see)330 +4879 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)199 +5011 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f +(History)h(F)-8 b(acilities],)51 b(page)45 b(137\))h(and)d(history)330 +5121 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],) +k(page)45 b(139\))h(are)f(enabled)g(b)m(y)f(default.)330 +5230 y(Bash)28 b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g +(the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g +(with)330 5340 y(history)i(enabled)h(exits.)p eop end %%Page: 87 93 TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(87)150 299 y Fj(string1)28 -b Ft(!=)i Fj(string2)630 408 y Fu(T)-8 b(rue)30 b(if)g(the)h(strings)f -(are)h(not)f(equal.)150 563 y Fj(string1)e Ft(<)i Fj(string2)630 -673 y Fu(T)-8 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 -b(b)s(efore)f Fr(string2)38 b Fu(lexicographically)-8 -b(.)150 828 y Fj(string1)28 b Ft(>)i Fj(string2)630 937 -y Fu(T)-8 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 -b(after)g Fr(string2)38 b Fu(lexicographically)-8 b(.)150 -1092 y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 1202 y Ft(OP)j -Fu(is)h(one)g(of)h(`)p Ft(-eq)p Fu(',)f(`)p Ft(-ne)p -Fu(',)h(`)p Ft(-lt)p Fu(',)g(`)p Ft(-le)p Fu(',)f(`)p -Ft(-gt)p Fu(',)h(or)f(`)p Ft(-ge)p Fu('.)51 b(These)34 -b(arithmetic)h(binary)630 1311 y(op)s(erators)h(return)e(true)i(if)f -Fr(arg1)44 b Fu(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,) -h(less)f(than)f(or)630 1421 y(equal)29 b(to,)g(greater)h(than,)e(or)g -(greater)i(than)d(or)i(equal)f(to)h Fr(arg2)p Fu(,)h(resp)s(ectiv)m -(ely)-8 b(.)42 b Fr(Arg1)36 b Fu(and)630 1531 y Fr(arg2)j -Fu(ma)m(y)30 b(b)s(e)g(p)s(ositiv)m(e)i(or)e(negativ)m(e)j(in)m -(tegers.)150 1758 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 -1918 y Fu(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 2027 y(b)m(y)30 b(the)h Ft(let)e -Fu(and)h(the)h Ft(-i)e Fu(option)i(to)g(the)g Ft(declare)d -Fu(builtins.)275 2160 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 2269 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 2379 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 2488 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 -2643 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31 -b(p)s(ost-incremen)m(t)g(and)f(p)s(ost-decremen)m(t)150 -2798 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31 -b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 2953 -y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)150 -3108 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150 -3263 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 3417 y -Ft(*)30 b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d -(remainder)150 3572 y Ft(+)g(-)354 b Fu(addition,)31 -b(subtraction)150 3727 y Ft(<<)f(>>)258 b Fu(left)31 -b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150 3882 y Ft(<=)f(>=)g(<)g(>) -102 b Fu(comparison)150 4037 y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 -b(and)e(inequalit)m(y)150 4192 y Ft(&)432 b Fu(bit)m(wise)31 -b(AND)150 4347 y Ft(^)432 b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 -4501 y Ft(|)432 b Fu(bit)m(wise)31 b(OR)150 4656 y Ft(&&)384 -b Fu(logical)33 b(AND)150 4811 y Ft(||)384 b Fu(logical)33 -b(OR)150 4966 y Ft(expr)c(?)h(expr)f(:)h(expr)630 5076 -y Fu(conditional)i(op)s(erator)150 5230 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h -(-=)g(<<=)f(>>=)h(&=)g(^=)f(|=)630 5340 y Fu(assignmen)m(t)p +b(Bash)30 b(F)-8 b(eatures)2484 b(87)199 299 y(8.)61 +b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e +(90\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 429 +y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g +(ignores)f Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page) +f(39\).)154 560 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g +(traps,)g Ft(SIGINT)e Fu(is)i(caugh)m(t)h(and)f(handled)e(\(\(see)k +(Section)e(3.7.6)i([Signals],)330 669 y(page)i(39\).)42 +b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 +800 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i +Ft(SIGHUP)d Fu(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f +Ft(huponexit)e Fu(shell)330 909 y(option)31 b(has)f(b)s(een)g(enabled)g +(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(39\).)154 +1040 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g +(ignored,)g(and)f(`)p Ft(set)h(-n)p Fu(')f(has)h(no)f(e\013ect)j(\(see) +e(Section)h(4.3.1)g([The)330 1149 y(Set)g(Builtin],)g(page)g(60\).)154 +1280 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s +(dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32 +b(of)g(the)h Ft(MAIL)p Fu(,)e Ft(MAILPATH)p Fu(,)330 +1389 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31 +b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 b(ariables],)32 +b(page)f(71\).)154 1520 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i +(references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 b(ariables)34 +b(after)g(`)p Ft(set)29 b(-u)p Fu(')k(has)g(b)s(een)330 +1629 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g +(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(60\).)154 +1760 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f +(errors)g(caused)g(b)m(y)h Fr(v)-5 b(ar)54 b Fu(b)s(eing)48 +b(unset)g(or)h(n)m(ull)f(in)330 1869 y Ft(${)p Fj(var)p +Ft(:?)p Fj(word)p Ft(})27 b Fu(expansions)j(\(see)h(Section)h(3.5.3)g +([Shell)e(P)m(arameter)i(Expansion],)e(page)h(23\).)154 +2000 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f +(shell)h(builtins)f(will)g(not)h(cause)g(the)f(shell)h(to)g(exit.)154 +2130 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f +(sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f +(cause)330 2240 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h +([Bash)f(POSIX)e(Mo)s(de],)i(page)g(96\).)154 2370 y(18.)61 +b(A)34 b(failed)g Ft(exec)f Fu(will)h(not)g(cause)g(the)g(shell)g(to)g +(exit)h(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330 +2480 y(page)e(42\).)154 2610 y(19.)61 b(P)m(arser)31 +b(syn)m(tax)f(errors)g(will)h(not)g(cause)g(the)f(shell)h(to)g(exit.) +154 2741 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g +(directory)g(argumen)m(ts)f(to)i(the)e Ft(cd)g Fu(builtin)g(is)h +(enabled)f(b)m(y)h(default)330 2850 y(\(see)35 b(the)g(description)f +(of)h(the)f Ft(cdspell)f Fu(option)h(to)i(the)e Ft(shopt)f +Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 2960 y(Shopt)30 +b(Builtin],)h(page)g(64\).)154 3090 y(21.)61 b(The)42 +b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h +Ft(TMOUT)e Fu(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h +(not)330 3200 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s +(er)g(of)i(seconds)f(after)g(prin)m(ting)g Ft($PS1)f +Fu(\(see)i(Section)g(5.2)h([Bash)330 3310 y(V)-8 b(ariables],)32 +b(page)f(71\).)150 3542 y Fs(6.4)68 b(Bash)45 b(Conditional)h +(Expressions)150 3702 y Fu(Conditional)26 b(expressions)g(are)g(used)f +(b)m(y)g(the)h Ft([[)f Fu(comp)s(ound)g(command)g(and)g(the)h +Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 3811 y(commands.)275 +3942 y(Expressions)32 b(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8 +b(.)48 b(Unary)33 b(expressions)f(are)i(often)f(used)f(to)i(examine)g +(the)150 4051 y(status)44 b(of)g(a)g(\014le.)80 b(There)43 +b(are)h(string)f(op)s(erators)h(and)f(n)m(umeric)g(comparison)h(op)s +(erators)g(as)g(w)m(ell.)150 4161 y(Bash)26 b(handles)f(sev)m(eral)i +(\014lenames)f(sp)s(ecially)g(when)f(they)g(are)i(used)d(in)i +(expressions.)38 b(If)26 b(the)f(op)s(erating)150 4270 +y(system)d(on)g(whic)m(h)g(Bash)h(is)f(running)e(pro)m(vides)i(these)h +(sp)s(ecial)g(\014les,)h(Bash)e(will)h(use)f(them;)j(otherwise)d(it)150 +4380 y(will)27 b(em)m(ulate)h(them)e(in)m(ternally)h(with)f(this)g(b)s +(eha)m(vior:)39 b(If)26 b(the)g Fr(\014le)32 b Fu(argumen)m(t)27 +b(to)g(one)f(of)h(the)f(primaries)150 4489 y(is)33 b(of)g(the)f(form)h +Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)h(\014le)h(descriptor)f +Fr(N)43 b Fu(is)33 b(c)m(hec)m(k)m(ed.)49 b(If)33 b(the)f +Fr(\014le)38 b Fu(argumen)m(t)33 b(to)h(one)f(of)150 +4599 y(the)f(primaries)g(is)g(one)g(of)g Ft(/dev/stdin)p +Fu(,)e Ft(/dev/stdout)p Fu(,)f(or)j Ft(/dev/stderr)p +Fu(,)d(\014le)j(descriptor)g(0,)h(1,)g(or)150 4709 y(2,)e(resp)s(ectiv) +m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m(ed.)275 4839 y(When)37 +b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p +Ft(>)p Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h +(curren)m(t)150 4949 y(lo)s(cale.)k(The)30 b Ft(test)f +Fu(command)i(uses)f(ASCI)s(I)e(ordering.)275 5079 y(Unless)44 +b(otherwise)h(sp)s(eci\014ed,)j(primaries)c(that)h(op)s(erate)g(on)g +(\014les)f(follo)m(w)i(sym)m(b)s(olic)f(links)g(and)150 +5189 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h +(than)f(the)g(link)h(itself.)150 5340 y Ft(-a)f Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)p eop end %%Page: 88 94 TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(88)150 299 y Ft(expr1)29 -b(,)h(expr2)630 408 y Fu(comma)275 574 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 -684 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 793 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 903 -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 -1012 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 1122 y(when)31 b(a)i(v)-5 -b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m(en)j(the)e -Fr(in)m(teger)40 b Fu(attribute)33 b(using)f(`)p Ft(declare)d(-i)p -Fu(')i(is)i(assigned)150 1232 y(a)j(v)-5 b(alue.)58 b(A)36 -b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5 b(aluates)37 b(to)g(0.)57 -b(A)36 b(shell)g(v)-5 b(ariable)37 b(need)e(not)h(ha)m(v)m(e)h(its)f -Fr(in)m(teger)44 b Fu(attribute)150 1341 y(turned)29 -b(on)h(to)i(b)s(e)d(used)h(in)g(an)g(expression.)275 -1480 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are)g(in)m(terpreted) -f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)72 b(A)41 b(leading)h(`)p -Ft(0x)p Fu(')f(or)g(`)p Ft(0X)p Fu(')150 1589 y(denotes)30 -b(hexadecimal.)42 b(Otherwise,)30 b(n)m(um)m(b)s(ers)f(tak)m(e)i(the)f -(form)g([)p Fr(base)5 b Ft(#)p Fu(])p Fr(n)p Fu(,)30 -b(where)f(the)i(optional)g Fr(base)150 1699 y Fu(is)e(a)h(decimal)g(n)m -(um)m(b)s(er)e(b)s(et)m(w)m(een)h(2)h(and)e(64)i(represen)m(ting)g(the) -f(arithmetic)i(base,)e(and)g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 -1809 y(in)e(that)h(base.)40 b(If)26 b Fr(base)5 b Ft(#)27 -b Fu(is)h(omitted,)h(then)e(base)g(10)h(is)f(used.)39 -b(When)27 b(sp)s(ecifying)g Fr(n)p Fu(,)h(he)f(digits)h(greater)150 -1918 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h(lo)m(w)m -(ercase)i(letters,)g(the)d(upp)s(ercase)g(letters,)j(`)p -Ft(@)p Fu(',)e(and)f(`)p Ft(_)p Fu(',)i(in)e(that)150 -2028 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f -(equal)i(to)f(36,)k(lo)m(w)m(ercase)e(and)d(upp)s(ercase)g(letters)i -(ma)m(y)g(b)s(e)e(used)150 2137 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 2276 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 2386 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 2624 y Fs(6.6)68 b(Aliases)150 2784 -y Fr(Aliases)41 b Fu(allo)m(w)d(a)f(string)f(to)h(b)s(e)f(substituted)g -(for)g(a)g(w)m(ord)g(when)g(it)h(is)f(used)f(as)i(the)g(\014rst)e(w)m -(ord)h(of)h(a)150 2893 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 3003 y Ft(alias)d -Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 3142 -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 3251 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m -(y)f(the)h(text)h(of)e(the)h(alias.)40 b(The)24 b(c)m(haracters)i(`)p -Ft(/)p Fu(',)h(`)p Ft($)p Fu(',)f(`)p Ft(`)p Fu(',)g(`)p -Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 3361 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 -3470 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 3580 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 3689 y(alias)c(b)s(eing)f(expanded)f(is)h -(not)g(expanded)f(a)h(second)g(time.)43 b(This)30 b(means)h(that)g(one) -g(ma)m(y)h(alias)g Ft(ls)e Fu(to)150 3799 y Ft("ls)f(-F")p -Fu(,)f(for)f(instance,)i(and)d(Bash)i(do)s(es)f(not)h(try)f(to)h -(recursiv)m(ely)g(expand)e(the)i(replacemen)m(t)h(text.)40 -b(If)150 3909 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h(alias)g(v)-5 -b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next)h(command)e(w) -m(ord)h(follo)m(wing)i(the)150 4018 y(alias)f(is)e(also)h(c)m(hec)m(k)m -(ed)i(for)d(alias)h(expansion.)275 4157 y(Aliases)e(are)f(created)i -(and)d(listed)i(with)f(the)g Ft(alias)f Fu(command,)h(and)g(remo)m(v)m -(ed)h(with)f(the)g Ft(unalias)150 4267 y Fu(command.)275 -4405 y(There)44 b(is)h(no)g(mec)m(hanism)g(for)f(using)h(argumen)m(ts)g -(in)f(the)h(replacemen)m(t)i(text,)i(as)d(in)e Ft(csh)p -Fu(.)83 b(If)150 4515 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 4624 y(page)31 b(17\).)275 4763 y(Aliases)i(are)h -(not)e(expanded)g(when)g(the)h(shell)g(is)g(not)g(in)m(teractiv)m(e,)j -(unless)c(the)h Ft(expand_aliases)150 4873 y Fu(shell)e(option)f(is)h -(set)g(using)f Ft(shopt)f Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g -(Builtin],)h(page)g(62\).)275 5011 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 5121 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 5230 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 5340 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)p eop end +b(Bash)30 b(F)-8 b(eatures)2484 b(88)150 299 y Ft(-b)30 +b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 +b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g(\014le.)150 +461 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 +b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s(ecial)f(\014le.)150 +623 y Ft(-d)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 +b Fu(exists)31 b(and)f(is)g(a)h(directory)-8 b(.)150 +785 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists.)150 948 y Ft(-f)30 b Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 +b(and)f(is)g(a)h(regular)f(\014le.)150 1110 y Ft(-g)g +Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b +Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f(set.)150 +1272 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 +1434 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p Fu(stic)m(ky)p +Ft(")h Fu(bit)g(is)f(set.)150 1596 y Ft(-p)g Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 +b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150 1759 +y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 +b Fu(exists)31 b(and)f(is)g(readable.)150 1921 y Ft(-s)g +Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b +Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f(zero.)150 +2083 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30 b(if)g(\014le)h(descriptor) +f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g(to)h(a)g(terminal.)150 +2245 y Ft(-u)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-user-id)h(bit)f(is)h +(set.)150 2407 y Ft(-w)f Fj(file)162 b Fu(T)-8 b(rue)30 +b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(writable.)150 +2570 y Ft(-x)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(executable.)150 +2732 y Ft(-G)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f +(e\013ectiv)m(e)j(group)d(id.)150 2894 y Ft(-L)g Fj(file)162 +b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 +b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 3056 y Ft(-N)f +Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b +Fu(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h(since)g(it)h(w)m +(as)g(last)g(read.)150 3218 y Ft(-O)f Fj(file)162 b Fu(T)-8 +b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m +(y)h(the)f(e\013ectiv)m(e)j(user)d(id.)150 3381 y Ft(-S)g +Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b +Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m(k)m(et.)150 3543 +y Fj(file1)e Ft(-ef)g Fj(file2)630 3652 y Fu(T)-8 b(rue)30 +b(if)g Fr(\014le1)38 b Fu(and)30 b Fr(\014le2)38 b Fu(refer)30 +b(to)i(the)e(same)h(device)g(and)f(ino)s(de)g(n)m(um)m(b)s(ers.)150 +3814 y Fj(file1)f Ft(-nt)g Fj(file2)630 3924 y Fu(T)-8 +b(rue)23 b(if)h Fr(\014le1)32 b Fu(is)24 b(new)m(er)g(\(according)h(to) +g(mo)s(di\014cation)f(date\))h(than)f Fr(\014le2)p Fu(,)i(or)e(if)g +Fr(\014le1)31 b Fu(exists)630 4034 y(and)f Fr(\014le2)38 +b Fu(do)s(es)30 b(not.)150 4196 y Fj(file1)f Ft(-ot)g +Fj(file2)630 4305 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 +b Fu(is)31 b(older)f(than)g Fr(\014le2)p Fu(,)i(or)e(if)g +Fr(\014le2)38 b Fu(exists)31 b(and)f Fr(\014le1)38 b +Fu(do)s(es)30 b(not.)150 4468 y Ft(-o)g Fj(optname)630 +4577 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h(option)f +Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 b(list)h(of)f(options)h +(app)s(ears)e(in)630 4687 y(the)33 b(description)h(of)f(the)g +Ft(-o)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)g +(4.3.1)h([The)e(Set)630 4796 y(Builtin],)e(page)g(60\).)150 +4959 y Ft(-v)f Fj(varname)630 5068 y Fu(T)-8 b(rue)30 +b(if)g(the)h(shell)f(v)-5 b(ariable)32 b Fr(v)-5 b(arname)35 +b Fu(is)30 b(set)h(\(has)g(b)s(een)e(assigned)i(a)g(v)-5 +b(alue\).)150 5230 y Ft(-R)30 b Fj(varname)630 5340 y +Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32 +b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h +(reference.)p eop end %%Page: 89 95 TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y(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 -408 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 518 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 628 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 737 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 -847 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 Ft(alias)f -Fu(in)h(comp)s(ound)150 956 y(commands.)275 1094 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 1332 y Fs(6.7)68 -b(Arra)l(ys)150 1491 y Fu(Bash)33 b(pro)m(vides)g(one-dimensional)g -(indexed)f(and)h(asso)s(ciativ)m(e)i(arra)m(y)e(v)-5 +b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y Ft(-z)30 +b Fj(string)66 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f +Fr(string)38 b Fu(is)31 b(zero.)150 462 y Ft(-n)f Fj(string)150 +571 y(string)192 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f +Fr(string)38 b Fu(is)31 b(non-zero.)150 734 y Fj(string1)d +Ft(==)i Fj(string2)150 844 y(string1)e Ft(=)i Fj(string2)630 +953 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82 +b(When)44 b(used)f(with)g(the)h Ft([[)g Fu(command,)j(this)d(p)s(er-) +630 1063 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m +(v)m(e)j(\(see)f(Section)g(3.2.4.2)i([Conditional)630 +1173 y(Constructs],)30 b(page)h(10\).)630 1309 y(`)p +Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h Ft(test)e +Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1472 +y Fj(string1)e Ft(!=)i Fj(string2)630 1581 y Fu(T)-8 +b(rue)30 b(if)g(the)h(strings)f(are)h(not)f(equal.)150 +1744 y Fj(string1)e Ft(<)i Fj(string2)630 1854 y Fu(T)-8 +b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(b)s(efore)f +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2017 +y Fj(string1)28 b Ft(>)i Fj(string2)630 2126 y Fu(T)-8 +b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(after)g +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2289 +y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2399 y Ft(OP)j Fu(is)h(one)g(of)h(`) +p Ft(-eq)p Fu(',)f(`)p Ft(-ne)p Fu(',)h(`)p Ft(-lt)p +Fu(',)g(`)p Ft(-le)p Fu(',)f(`)p Ft(-gt)p Fu(',)h(or)f(`)p +Ft(-ge)p Fu('.)51 b(These)34 b(arithmetic)h(binary)630 +2508 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44 +b Fu(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,)h(less)f +(than)f(or)630 2618 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i +(than)d(or)i(equal)f(to)h Fr(arg2)p Fu(,)h(resp)s(ectiv)m(ely)-8 +b(.)42 b Fr(Arg1)36 b Fu(and)630 2728 y Fr(arg2)j Fu(ma)m(y)30 +b(b)s(e)g(p)s(ositiv)m(e)i(or)e(negativ)m(e)j(in)m(tegers.)150 +2974 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3133 y Fu(The)26 +b(shell)h(allo)m(ws)h(arithmetic)f(expressions)g(to)g(b)s(e)f(ev)-5 +b(aluated,)29 b(as)d(one)h(of)g(the)g(shell)f(expansions)h(or)f(b)m(y) +150 3243 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g +Ft(let)e Fu(builtin,)i(or)f(the)g Ft(-i)g Fu(option)h(to)f(the)h +Ft(declare)d Fu(builtin.)275 3381 y(Ev)-5 b(aluation)27 +b(is)g(done)f(in)g(\014xed-width)g(in)m(tegers)i(with)e(no)h(c)m(hec)m +(k)h(for)e(o)m(v)m(er\015o)m(w,)j(though)d(division)h(b)m(y)150 +3490 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39 +b(The)26 b(op)s(erators)h(and)g(their)g(precedence,)h(asso)s(ciativit)m +(y)-8 b(,)32 b(and)150 3600 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h +(in)e(the)h(C)g(language.)56 b(The)35 b(follo)m(wing)h(list)g(of)f(op)s +(erators)g(is)g(group)s(ed)f(in)m(to)150 3709 y(lev)m(els)27 +b(of)f(equal-precedence)i(op)s(erators.)39 b(The)25 b(lev)m(els)j(are)e +(listed)h(in)e(order)h(of)g(decreasing)g(precedence.)150 +3874 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31 +b(p)s(ost-incremen)m(t)g(and)f(p)s(ost-decremen)m(t)150 +4037 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31 +b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4200 +y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)150 +4363 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150 +4526 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 4688 y +Ft(*)30 b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d +(remainder)150 4851 y Ft(+)g(-)354 b Fu(addition,)31 +b(subtraction)150 5014 y Ft(<<)f(>>)258 b Fu(left)31 +b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150 5177 y Ft(<=)f(>=)g(<)g(>) +102 b Fu(comparison)150 5340 y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 +b(and)e(inequalit)m(y)p eop end +%%Page: 90 96 +TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(90)150 299 y Ft(&)432 +b Fu(bit)m(wise)31 b(AND)150 459 y Ft(^)432 b Fu(bit)m(wise)31 +b(exclusiv)m(e)h(OR)150 618 y Ft(|)432 b Fu(bit)m(wise)31 +b(OR)150 778 y Ft(&&)384 b Fu(logical)33 b(AND)150 938 +y Ft(||)384 b Fu(logical)33 b(OR)150 1097 y Ft(expr)c(?)h(expr)f(:)h +(expr)630 1207 y Fu(conditional)i(op)s(erator)150 1366 +y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g(^=)f(|=)630 +1476 y Fu(assignmen)m(t)150 1636 y Ft(expr1)g(,)h(expr2)630 +1745 y Fu(comma)275 1905 y(Shell)38 b(v)-5 b(ariables)39 +b(are)g(allo)m(w)m(ed)i(as)e(op)s(erands;)i(parameter)e(expansion)g(is) +f(p)s(erformed)g(b)s(efore)g(the)150 2015 y(expression)g(is)g(ev)-5 +b(aluated.)66 b(Within)38 b(an)h(expression,)h(shell)e(v)-5 +b(ariables)39 b(ma)m(y)g(also)g(b)s(e)f(referenced)g(b)m(y)150 +2124 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m +(tax.)42 b(A)31 b(shell)f(v)-5 b(ariable)32 b(that)f(is)f(n)m(ull)h(or) +f(unset)150 2234 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b) +m(y)g(name)h(without)f(using)g(the)g(parameter)h(expansion)f(syn)m +(tax.)150 2343 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5 +b(ariable)36 b(is)g(ev)-5 b(aluated)38 b(as)e(an)g(arithmetic)h +(expression)f(when)f(it)h(is)g(referenced,)i(or)150 2453 +y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m +(en)j(the)e Fr(in)m(teger)40 b Fu(attribute)33 b(using)f(`)p +Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 2563 y(a)j(v)-5 +b(alue.)58 b(A)36 b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5 +b(aluates)37 b(to)g(0.)57 b(A)36 b(shell)g(v)-5 b(ariable)37 +b(need)e(not)h(ha)m(v)m(e)h(its)f Fr(in)m(teger)44 b +Fu(attribute)150 2672 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g +(expression.)275 2807 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are) +g(in)m(terpreted)f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)72 +b(A)41 b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p Ft(0X)p +Fu(')150 2916 y(denotes)30 b(hexadecimal.)42 b(Otherwise,)30 +b(n)m(um)m(b)s(ers)f(tak)m(e)i(the)f(form)g([)p Fr(base)5 +b Ft(#)p Fu(])p Fr(n)p Fu(,)30 b(where)f(the)i(optional)g +Fr(base)150 3026 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m +(een)h(2)h(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and) +g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3136 y(in)c(that)g(base.)39 +b(If)25 b Fr(base)5 b Ft(#)24 b Fu(is)h(omitted,)j(then)c(base)h(10)h +(is)f(used.)38 b(When)25 b(sp)s(ecifying)f Fr(n)p Fu(,)i(the)f(digits)h +(greater)150 3245 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h +(lo)m(w)m(ercase)i(letters,)g(the)d(upp)s(ercase)g(letters,)j(`)p +Ft(@)p Fu(',)e(and)f(`)p Ft(_)p Fu(',)i(in)e(that)150 +3355 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f +(equal)i(to)f(36,)k(lo)m(w)m(ercase)e(and)d(upp)s(ercase)g(letters)i +(ma)m(y)g(b)s(e)e(used)150 3464 y(in)m(terc)m(hangeably)32 +b(to)f(represen)m(t)g(n)m(um)m(b)s(ers)e(b)s(et)m(w)m(een)i(10)g(and)f +(35.)275 3599 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 +b(in)f(order)f(of)h(precedence.)85 b(Sub-expressions)44 +b(in)g(paren)m(theses)i(are)150 3709 y(ev)-5 b(aluated)32 +b(\014rst)d(and)h(ma)m(y)h(o)m(v)m(erride)g(the)g(precedence)g(rules)f +(ab)s(o)m(v)m(e.)150 3950 y Fs(6.6)68 b(Aliases)150 4109 +y Fr(Aliases)41 b Fu(allo)m(w)d(a)f(string)f(to)h(b)s(e)f(substituted)g +(for)g(a)g(w)m(ord)g(when)g(it)h(is)f(used)f(as)i(the)g(\014rst)e(w)m +(ord)h(of)h(a)150 4219 y(simple)32 b(command.)45 b(The)31 +b(shell)i(main)m(tains)f(a)h(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s +(e)e(set)h(and)g(unset)f(with)h(the)150 4329 y Ft(alias)d +Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 4463 +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 +Ft(/)p Fu(',)h(`)p Ft($)p Fu(',)f(`)p Ft(`)p Fu(',)g(`)p +Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 4682 y(the)e(shell)g(metac)m +(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 Ft(ls)e Fu(to)150 5121 y Ft("ls)f(-F")p +Fu(,)f(for)f(instance,)i(and)d(Bash)i(do)s(es)f(not)h(try)f(to)h +(recursiv)m(ely)g(expand)e(the)i(replacemen)m(t)h(text.)40 +b(If)150 5230 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h(alias)g(v)-5 +b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next)h(command)e(w) +m(ord)h(follo)m(wing)i(the)150 5340 y(alias)f(is)e(also)h(c)m(hec)m(k)m +(ed)i(for)d(alias)h(expansion.)p eop end +%%Page: 91 97 +TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(91)275 299 y(Aliases)29 +b(are)f(created)i(and)d(listed)i(with)f(the)g Ft(alias)f +Fu(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g Ft(unalias)150 +408 y Fu(command.)275 540 y(There)44 b(is)h(no)g(mec)m(hanism)g(for)f +(using)h(argumen)m(ts)g(in)f(the)h(replacemen)m(t)i(text,)i(as)d(in)e +Ft(csh)p Fu(.)83 b(If)150 650 y(argumen)m(ts)37 b(are)h(needed,)g(a)g +(shell)f(function)f(should)g(b)s(e)h(used)f(\(see)i(Section)g(3.3)g +([Shell)f(F)-8 b(unctions],)150 759 y(page)31 b(17\).)275 +891 y(Aliases)i(are)h(not)e(expanded)g(when)g(the)h(shell)g(is)g(not)g +(in)m(teractiv)m(e,)j(unless)c(the)h Ft(expand_aliases)150 +1000 y Fu(shell)e(option)f(is)h(set)g(using)f Ft(shopt)f +Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g(64\).) +275 1132 y(The)38 b(rules)h(concerning)h(the)f(de\014nition)g(and)g +(use)g(of)g(aliases)i(are)e(somewhat)h(confusing.)67 +b(Bash)150 1241 y(alw)m(a)m(ys)33 b(reads)f(at)g(least)i(one)e +(complete)h(line)f(of)g(input)f(b)s(efore)g(executing)i(an)m(y)g(of)f +(the)g(commands)f(on)150 1351 y(that)22 b(line.)39 b(Aliases)23 +b(are)f(expanded)f(when)g(a)h(command)g(is)f(read,)j(not)e(when)f(it)h +(is)g(executed.)39 b(Therefore,)150 1461 y(an)24 b(alias)i +(de\014nition)e(app)s(earing)g(on)g(the)h(same)g(line)f(as)h(another)g +(command)f(do)s(es)g(not)h(tak)m(e)h(e\013ect)g(un)m(til)150 +1570 y(the)k(next)f(line)h(of)g(input)f(is)g(read.)40 +b(The)29 b(commands)h(follo)m(wing)h(the)e(alias)i(de\014nition)e(on)h +(that)g(line)g(are)150 1680 y(not)j(a\013ected)h(b)m(y)f(the)g(new)f +(alias.)49 b(This)32 b(b)s(eha)m(vior)h(is)g(also)g(an)g(issue)g(when)e +(functions)i(are)g(executed.)150 1789 y(Aliases)c(are)g(expanded)e +(when)g(a)i(function)e(de\014nition)h(is)g(read,)h(not)f(when)g(the)g +(function)g(is)g(executed,)150 1899 y(b)s(ecause)36 b(a)h(function)f +(de\014nition)f(is)i(itself)g(a)f(command.)58 b(As)36 +b(a)h(consequence,)h(aliases)g(de\014ned)d(in)h(a)150 +2009 y(function)28 b(are)h(not)g(a)m(v)-5 b(ailable)31 +b(un)m(til)e(after)g(that)g(function)f(is)g(executed.)41 +b(T)-8 b(o)29 b(b)s(e)f(safe,)i(alw)m(a)m(ys)g(put)e(alias)150 +2118 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h +(use)f Ft(alias)f Fu(in)h(comp)s(ound)f(commands.)275 +2250 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i +(functions)f(are)g(preferred)g(o)m(v)m(er)h(aliases.)150 +2484 y Fs(6.7)68 b(Arra)l(ys)150 2644 y Fu(Bash)33 b(pro)m(vides)g +(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 -1601 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e +2753 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e Ft(declare)e Fu(builtin)h(will)i(explicitly)g(declare)g(an)f(arra)m(y) --8 b(.)46 b(There)32 b(is)150 1710 y(no)h(maxim)m(um)g(limit)h(on)f +-8 b(.)46 b(There)32 b(is)150 2863 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 1820 +m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 2973 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 1929 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) -e(Arithmetic],)k(page)d(87\)\))h(and)d(are)i(zero-based;)k(asso)s -(ciativ)m(e)150 2039 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 +(arithmetic)150 3082 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) +e(Arithmetic],)k(page)d(89\)\))h(and)d(are)i(zero-based;)k(asso)s +(ciativ)m(e)150 3192 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 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 2149 y(negativ)m(e)d(in)m(tegers.)275 -2286 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c +(ust)g(b)s(e)g(non-)150 3301 y(negativ)m(e)d(in)m(tegers.)275 +3433 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c (an)m(y)g(v)-5 b(ariable)28 b(is)g(assigned)f(to)h(using)f(the)g(syn)m -(tax)390 2424 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p -Fj(value)150 2562 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g +(tax)390 3564 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p +Fj(value)150 3696 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g (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 -2672 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 -b(use)390 2809 y Ft(declare)46 b(-a)h Fj(name)150 2947 -y Fu(The)30 b(syn)m(tax)390 3085 y Ft(declare)46 b(-a)h -Fj(name)p Ft([)p Fj(subscript)p Ft(])150 3223 y Fu(is)30 +3806 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 +b(use)390 3937 y Ft(declare)46 b(-a)h Fj(name)150 4069 +y Fu(The)30 b(syn)m(tax)390 4200 y Ft(declare)46 b(-a)h +Fj(name)p Ft([)p Fj(subscript)p Ft(])150 4332 y Fu(is)30 b(also)i(accepted;)g(the)e Fr(subscript)h Fu(is)g(ignored.)150 -3361 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390 -3499 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)275 3636 y +4463 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390 +4595 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)275 4726 y Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g(arra)m (y)g(v)-5 b(ariable)47 b(using)e(the)h Ft(declare)e Fu(and)h -Ft(readonly)150 3746 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g +Ft(readonly)150 4836 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g (applies)g(to)g(all)g(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8 -b(.)275 3884 y(Arra)m(ys)30 b(are)h(assigned)f(to)h(using)f(comp)s -(ound)f(assignmen)m(ts)i(of)g(the)f(form)390 4022 y Fj(name)p -Ft(=\()p Fj(value1)44 b(value2)j Ft(...)f(\))150 4159 +b(.)275 4967 y(Arra)m(ys)30 b(are)h(assigned)f(to)h(using)f(comp)s +(ound)f(assignmen)m(ts)i(of)g(the)f(form)390 5099 y Fj(name)p +Ft(=\()p Fj(value1)44 b(value2)j Ft(...)f(\))150 5230 y Fu(where)38 b(eac)m(h)i Fr(v)-5 b(alue)44 b Fu(is)39 b(of)g(the)g(form)f Ft([)p Fj(subscript)p Ft(]=)p Fr(string)p Fu(.)63 b(Indexed)37 b(arra)m(y)j(assignmen)m(ts)f(do)g(not)150 -4269 y(require)31 b(an)m(ything)g(but)f Fr(string)p Fu(.)43 +5340 y(require)31 b(an)m(ything)g(but)f Fr(string)p Fu(.)43 b(When)31 b(assigning)g(to)h(indexed)e(arra)m(ys,)i(if)f(the)g -(optional)h(subscript)e(is)150 4379 y(supplied,)i(that)h(index)f(is)h -(assigned)g(to;)h(otherwise)f(the)g(index)f(of)h(the)g(elemen)m(t)h -(assigned)f(is)f(the)h(last)150 4488 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 4626 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 -4764 y(This)f(syn)m(tax)j(is)e(also)i(accepted)g(b)m(y)f(the)f -Ft(declare)f Fu(builtin.)44 b(Individual)31 b(arra)m(y)h(elemen)m(ts)h -(ma)m(y)g(b)s(e)150 4873 y(assigned)e(to)g(using)f(the)g +(optional)h(subscript)e(is)p eop end +%%Page: 92 98 +TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(92)150 299 y(supplied,)32 +b(that)h(index)f(is)h(assigned)g(to;)h(otherwise)f(the)g(index)f(of)h +(the)g(elemen)m(t)h(assigned)f(is)f(the)h(last)150 408 +y(index)d(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c(one.)41 +b(Indexing)30 b(starts)h(at)g(zero.)275 555 y(When)f(assigning)h(to)g +(an)f(asso)s(ciativ)m(e)j(arra)m(y)-8 b(,)32 b(the)e(subscript)f(is)i +(required.)275 701 y(This)f(syn)m(tax)j(is)e(also)i(accepted)g(b)m(y)f +(the)f Ft(declare)f Fu(builtin.)44 b(Individual)31 b(arra)m(y)h(elemen) +m(ts)h(ma)m(y)g(b)s(e)150 810 y(assigned)e(to)g(using)f(the)g Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p Fj(value)25 b Fu(syn)m(tax)31 b(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275 -5011 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8 +956 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8 b(,)32 b(if)f Fr(name)36 b Fu(is)31 b(subscripted)e(b)m(y)i(a)g -(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 5121 y(n)m(um)m(b)s(er)43 +(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 1066 y(n)m(um)m(b)s(er)43 b(is)h(in)m(terpreted)h(as)f(relativ)m(e)j(to)e(one)f(greater)i(than)e (the)g(maxim)m(um)g(index)g(of)h Fr(name)p Fu(,)j(so)150 -5230 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g +1176 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 5340 y(elemen)m(t.)p eop -end -%%Page: 90 96 -TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(90)275 299 y(An)m(y)28 -b(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f(referenced)g -(using)g Ft(${)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})p -Fu(.)35 b(The)27 b(braces)i(are)150 408 y(required)f(to)j(a)m(v)m(oid)f -(con\015icts)g(with)f(the)h(shell's)f(\014lename)h(expansion)f(op)s -(erators.)41 b(If)28 b(the)i Fr(subscript)g Fu(is)150 -518 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f +(references)g(the)f(last)150 1285 y(elemen)m(t.)275 1431 +y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f +(referenced)g(using)g Ft(${)p Fj(name)p Ft([)p Fj(subscript)p +Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 1541 y(required)f(to)j(a)m +(v)m(oid)f(con\015icts)g(with)f(the)h(shell's)f(\014lename)h(expansion) +f(op)s(erators.)41 b(If)28 b(the)i Fr(subscript)g Fu(is)150 +1650 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f (expands)f(to)i(all)g(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h Fr(name)p Fu(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150 -628 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g(quotes.) -60 b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j Ft(${)p -Fj(name)p Ft([*]})150 737 y Fu(expands)25 b(to)h(a)g(single)h(w)m(ord)e -(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem)m(b)s(er)f -(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150 847 -y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 b(and)f -Ft(${)p Fj(name)p Ft([@]})d Fu(expands)i(eac)m(h)i(elemen)m(t)h(of)e -Fr(name)33 b Fu(to)c(a)f(separate)h(w)m(ord.)150 956 -y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f +1760 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g +(quotes.)60 b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j +Ft(${)p Fj(name)p Ft([*]})150 1870 y Fu(expands)25 b(to)h(a)g(single)h +(w)m(ord)e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem) +m(b)s(er)f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150 +1979 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 +b(and)f Ft(${)p Fj(name)p Ft([@]})d Fu(expands)i(eac)m(h)i(elemen)m(t)h +(of)e Fr(name)33 b Fu(to)c(a)f(separate)h(w)m(ord.)150 +2089 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f Ft(${)p Fj(name)p Ft([@]})e Fu(expands)h(to)i(nothing.)47 -b(If)31 b(the)i(double-quoted)150 1066 y(expansion)39 +b(If)31 b(the)i(double-quoted)150 2198 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 1176 +(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 2308 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 -1285 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40 +2418 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 1395 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p +(ecial)h(param-)150 2527 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p Ft(*)p Fu('.)41 b Ft(${#)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})24 b Fu(expands)k(to)i(the)g(length)g(of)f Ft(${)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})p Fu(.)35 b(If)150 -1504 y Fr(subscript)29 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p -Ft(*)p Fu(',)g(the)g(expansion)f(is)h(the)f(n)m(um)m(b)s(er)g(of)g -(elemen)m(ts)i(in)e(the)h(arra)m(y)-8 b(.)41 b(Referencing)29 -b(an)150 1614 y(arra)m(y)j(v)-5 b(ariable)32 b(without)f(a)h(subscript) -e(is)h(equiv)-5 b(alen)m(t)33 b(to)f(referencing)f(with)g(a)h -(subscript)e(of)h(0.)44 b(If)31 b(the)150 1724 y Fr(subscript)f -Fu(used)e(to)i(reference)g(an)f(elemen)m(t)i(of)e(an)g(indexed)g(arra)m -(y)h(ev)-5 b(aluates)30 b(to)g(a)g(n)m(um)m(b)s(er)e(less)h(than)150 -1833 y(zero,)37 b(it)f(is)f(in)m(terpreted)g(as)g(relativ)m(e)i(to)f -(one)f(greater)i(than)d(the)i(maxim)m(um)e(index)h(of)g(the)g(arra)m(y) --8 b(,)38 b(so)150 1943 y(negativ)m(e)33 b(indices)e(coun)m(t)h(bac)m -(k)f(from)g(the)g(end)f(of)h(the)g(arra)m(y)-8 b(,)32 -b(and)e(an)h(index)f(of)h(-1)h(refers)e(to)i(the)f(last)150 -2052 y(elemen)m(t.)275 2186 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 -2295 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275 -2429 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i +2637 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p +Ft(*)p Fu(',)g(the)g(expansion)f(is)g(the)h(n)m(um)m(b)s(er)e(of)i +(elemen)m(ts)g(in)f(the)h(arra)m(y)-8 b(.)41 b(If)27 +b(the)g Fr(subscript)150 2746 y Fu(used)34 b(to)h(reference)g(an)f +(elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev)-5 b(aluates)36 +b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it)150 +2856 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h +(than)f(the)h(maxim)m(um)f(index)f(of)h(the)h(arra)m(y)-8 +b(,)33 b(so)g(negativ)m(e)150 2966 y(indices)d(coun)m(t)h(bac)m(k)h +(from)e(the)g(end)g(of)g(the)h(arra)m(y)-8 b(,)31 b(and)f(an)g(index)g +(of)h(-1)g(refers)f(to)h(the)g(last)g(elemen)m(t.)275 +3112 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42 +b(without)e(a)h(subscript)e(is)i(equiv)-5 b(alen)m(t)42 +b(to)f(referencing)g(with)g(a)150 3221 y(subscript)35 +b(of)h(0.)57 b(An)m(y)36 b(reference)g(to)h(a)f(v)-5 +b(ariable)36 b(using)g(a)g(v)-5 b(alid)36 b(subscript)f(is)h(legal,)j +(and)c Ft(bash)g Fu(will)150 3331 y(create)d(an)e(arra)m(y)h(if)f +(necessary)-8 b(.)275 3477 y(An)35 b(arra)m(y)i(v)-5 +b(ariable)37 b(is)g(considered)f(set)h(if)f(a)h(subscript)e(has)h(b)s +(een)g(assigned)g(a)h(v)-5 b(alue.)59 b(The)36 b(n)m(ull)150 +3587 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275 +3733 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i (\(indices\))f(of)f(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5 b(alues.)41 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p -Fi(})150 2538 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 +Fi(})150 3842 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([*])p Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g (arra)m(y)g(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39 -b(treatmen)m(t)150 2648 y(when)i(in)g(double)g(quotes)h(is)f(similar)h +b(treatmen)m(t)150 3952 y(when)i(in)g(double)g(quotes)h(is)f(similar)h (to)h(the)e(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p -Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 2757 y(within)30 -b(double)g(quotes.)275 2891 y(The)j Ft(unset)g Fu(builtin)h(is)g(used)g +Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 4061 y(within)30 +b(double)g(quotes.)275 4208 y(The)j Ft(unset)g Fu(builtin)h(is)g(used)g (to)h(destro)m(y)g(arra)m(ys.)52 b Ft(unset)29 b Fj(name)p Ft([)p Fj(subscript)p Ft(])h Fu(destro)m(ys)35 b(the)g(ar-)150 -3000 y(ra)m(y)j(elemen)m(t)h(at)g(index)e Fr(subscript)p +4317 y(ra)m(y)j(elemen)m(t)h(at)g(index)e Fr(subscript)p Fu(.)61 b(Negativ)m(e)41 b(subscripts)36 b(to)i(indexed)g(arra)m(ys)g -(are)g(in)m(terpreted)g(as)150 3110 y(describ)s(ed)f(ab)s(o)m(v)m(e.)67 +(are)g(in)m(terpreted)g(as)150 4427 y(describ)s(ed)f(ab)s(o)m(v)m(e.)67 b(Care)38 b(m)m(ust)h(b)s(e)f(tak)m(en)h(to)h(a)m(v)m(oid)g(un)m(w)m (an)m(ted)e(side)h(e\013ects)h(caused)e(b)m(y)h(\014lename)150 -3220 y(expansion.)50 b Ft(unset)29 b Fj(name)p Fu(,)34 +4536 y(expansion.)50 b Ft(unset)29 b Fj(name)p Fu(,)34 b(where)f Fr(name)39 b Fu(is)34 b(an)f(arra)m(y)-8 b(,)36 b(remo)m(v)m(es)f(the)f(en)m(tire)g(arra)m(y)-8 b(.)52 -b(A)33 b(subscript)g(of)150 3329 y(`)p Ft(*)p Fu(')e(or)f(`)p +b(A)33 b(subscript)g(of)150 4646 y(`)p Ft(*)p Fu(')e(or)f(`)p Ft(@)p Fu(')g(also)i(remo)m(v)m(es)f(the)g(en)m(tire)g(arra)m(y)-8 -b(.)275 3463 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p +b(.)275 4792 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p Fu(,)h(and)e Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g Ft(-a)e Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150 -3572 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f +4902 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f (an)h(asso)s(ciativ)m(e)i(arra)m(y)-8 b(.)40 b(If)27 b(b)s(oth)g(options)h(are)g(supplied,)f Ft(-A)f Fu(tak)m(es)150 -3682 y(precedence.)55 b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g +5011 y(precedence.)55 b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g Ft(-a)e Fu(option)i(to)g(assign)f(a)g(list)h(of)f(w)m(ords)g(read)g -(from)g(the)150 3791 y(standard)h(input)g(to)i(an)f(arra)m(y)-8 +(from)g(the)150 5121 y(standard)h(input)g(to)i(an)f(arra)m(y)-8 b(,)40 b(and)c(can)h(read)g(v)-5 b(alues)38 b(from)e(the)h(standard)g -(input)f(in)m(to)i(individual)150 3901 y(arra)m(y)f(elemen)m(ts.)62 +(input)f(in)m(to)i(individual)150 5230 y(arra)m(y)f(elemen)m(ts.)62 b(The)36 b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g (arra)m(y)g(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150 -4011 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150 -4241 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150 -4400 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m -(tly-visited)j(directories.)39 b(The)20 b Ft(pushd)g -Fu(builtin)h(adds)g(directories)150 4510 y(to)42 b(the)f(stac)m(k)i(as) -e(it)h(c)m(hanges)g(the)f(curren)m(t)g(directory)-8 b(,)45 -b(and)40 b(the)i Ft(popd)e Fu(builtin)g(remo)m(v)m(es)j(sp)s(eci\014ed) -150 4620 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 4729 y Ft(dirs)29 b Fu(builtin)h(displa)m(ys)h(the)f(con)m -(ten)m(ts)i(of)f(the)f(directory)h(stac)m(k.)275 4863 -y(The)k(con)m(ten)m(ts)i(of)f(the)h(directory)f(stac)m(k)h(are)f(also)h -(visible)g(as)f(the)g(v)-5 b(alue)36 b(of)g(the)g Ft(DIRSTACK)e -Fu(shell)150 4972 y(v)-5 b(ariable.)150 5169 y Fk(6.8.1)63 -b(Directory)40 b(Stac)m(k)g(Builtins)150 5340 y Ft(dirs)p +5340 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)p eop end -%%Page: 91 97 -TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(91)870 299 y Ft(dirs)47 -b([-clpv])e([+)p Fj(N)i Ft(|)h(-)p Fj(N)p Ft(])630 435 -y Fu(Displa)m(y)35 b(the)f(list)g(of)g(curren)m(tly)g(remem)m(b)s(ered) -f(directories.)51 b(Directories)36 b(are)e(added)f(to)630 -545 y(the)28 b(list)h(with)f(the)g Ft(pushd)f Fu(command;)i(the)f -Ft(popd)f Fu(command)h(remo)m(v)m(es)h(directories)g(from)630 -654 y(the)i(list.)630 817 y Ft(-c)384 b Fu(Clears)31 -b(the)f(directory)h(stac)m(k)h(b)m(y)e(deleting)h(all)h(of)e(the)h -(elemen)m(ts.)630 980 y Ft(-l)384 b Fu(Pro)s(duces)31 -b(a)h(listing)h(using)e(full)h(pathnames;)h(the)f(default)g(listing)h -(format)1110 1089 y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h -(directory)-8 b(.)630 1252 y Ft(-p)384 b Fu(Causes)30 -b Ft(dirs)f Fu(to)i(prin)m(t)f(the)h(directory)g(stac)m(k)h(with)e(one) -g(en)m(try)h(p)s(er)e(line.)630 1415 y Ft(-v)384 b Fu(Causes)36 -b Ft(dirs)f Fu(to)i(prin)m(t)f(the)g(directory)h(stac)m(k)h(with)e(one) -h(en)m(try)f(p)s(er)f(line,)1110 1524 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 -1687 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 b(the)f Fr(N)10 -b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h(left)g(of)g(the)g -(list)g(prin)m(ted)1110 1797 y(b)m(y)30 b Ft(dirs)f Fu(when)h(in)m(v)m -(ok)m(ed)i(without)e(options\),)h(starting)g(with)g(zero.)630 -1959 y Ft(-)p Fj(N)384 b Fu(Displa)m(ys)47 b(the)g Fr(N)10 -b Fu(th)46 b(directory)h(\(coun)m(ting)g(from)f(the)g(righ)m(t)h(of)g -(the)f(list)1110 2069 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g -Fu(when)f(in)m(v)m(ok)m(ed)j(without)f(options\),)h(starting)g(with)e -(zero.)150 2232 y Ft(popd)870 2368 y(popd)47 b([-n])f([+)p -Fj(N)h Ft(|)h(-)p Fj(N)p Ft(])630 2504 y Fu(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 -Ft(cd)h Fu(to)h(the)f(new)f(top)i(directory)-8 b(.)630 -2614 y(When)32 b(no)g(argumen)m(ts)h(are)g(giv)m(en,)h -Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f(directory)h(from)f(the)g(stac) -m(k)630 2723 y(and)f(p)s(erforms)e(a)j Ft(cd)f Fu(to)h(the)f(new)g(top) -h(directory)-8 b(.)44 b(The)31 b(elemen)m(ts)i(are)e(n)m(um)m(b)s(ered) -f(from)630 2833 y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g -(listed)h(with)f Ft(dirs)p Fu(;)g(that)h(is,)g Ft(popd)e -Fu(is)i(equiv)-5 b(alen)m(t)33 b(to)630 2942 y Ft(popd)c(+0)p -Fu(.)630 3105 y Ft(-n)384 b Fu(Suppresses)27 b(the)j(normal)g(c)m -(hange)g(of)g(directory)g(when)e(remo)m(ving)j(directo-)1110 -3215 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 3377 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22 -b(the)f Fr(N)10 b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g -(left)h(of)g(the)f(list)h(prin)m(ted)1110 3487 y(b)m(y)30 -b Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)630 3650 -y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g Fr(N)10 -b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)g(of)g -(the)g(list)1110 3759 y(prin)m(ted)30 b(b)m(y)g Ft(dirs)p -Fu(\),)g(starting)h(with)f(zero.)150 3922 y Ft(pushd)870 -4058 y(pushd)46 b([-n])h([+)p Fj(N)g Ft(|)g Fj(-N)h Ft(|)f -Fj(dir)p Ft(])630 4194 y Fu(Sa)m(v)m(e)30 b(the)e(curren)m(t)g -(directory)h(on)f(the)h(top)f(of)h(the)f(directory)h(stac)m(k)h(and)e -(then)g Ft(cd)f Fu(to)i Fr(dir)p Fu(.)630 4304 y(With)i(no)f(argumen)m -(ts,)h Ft(pushd)e Fu(exc)m(hanges)j(the)e(top)h(t)m(w)m(o)h -(directories.)630 4467 y Ft(-n)384 b Fu(Suppresses)26 -b(the)i(normal)h(c)m(hange)g(of)f(directory)h(when)e(adding)h -(directories)1110 4576 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 4739 y Ft(+)p Fj(N)384 -b Fu(Brings)29 b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h -(from)e(the)g(left)i(of)e(the)h(list)g(prin)m(ted)1110 -4848 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the) -f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110 -4958 y(stac)m(k.)630 5121 y Ft(-)p Fj(N)384 b Fu(Brings)23 -b(the)g Fr(N)10 b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i -(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 5230 y(b)m(y)34 -b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h -(the)f(list)h(b)m(y)f(rotating)i(the)1110 5340 y(stac)m(k.)p -eop end -%%Page: 92 98 -TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(92)630 299 y Fj(dir)336 -b Fu(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 408 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 518 y(argumen)m(t)31 b(to)g(the)f -Ft(cd)g Fu(builtin.)150 752 y Fs(6.9)68 b(Con)l(trolling)47 -b(the)e(Prompt)150 911 y Fu(The)24 b(v)-5 b(alue)24 b(of)h(the)f(v)-5 -b(ariable)25 b Ft(PROMPT_COMMAND)20 b Fu(is)25 b(examined)f(just)g(b)s -(efore)f(Bash)i(prin)m(ts)e(eac)m(h)j(primary)150 1021 -y(prompt.)39 b(If)28 b Ft(PROMPT_COMMAND)d Fu(is)j(set)h(and)f(has)g(a) -h(non-n)m(ull)f(v)-5 b(alue,)29 b(then)f(the)h(v)-5 b(alue)29 -b(is)f(executed)i(just)150 1130 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 1266 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 -1375 y(prompt)g(v)-5 b(ariables)32 b Ft(PS1)d Fu(to)i -Ft(PS4)p Fu(:)150 1536 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m -(haracter.)150 1696 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f -Ft(")p Fu(W)-8 b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h -Fu(format)f(\(e.g.,)h Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p -Ft(")p Fu(\).)150 1857 y Ft(\\D{)p Fj(format)p Ft(})630 -1966 y Fu(The)c Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p -Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt) -630 2076 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g -(a)h(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65 -b(The)630 2185 y(braces)31 b(are)f(required.)150 2346 -y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150 -2506 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e -(`.'.)150 2666 y Ft(\\H)384 b Fu(The)30 b(hostname.)150 -2826 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m -(tly)h(managed)g(b)m(y)f(the)g(shell.)150 2987 y Ft(\\l)384 -b Fu(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g -(name.)150 3147 y Ft(\\n)384 b Fu(A)30 b(newline.)150 -3307 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150 -3467 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f -(basename)f(of)h Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f -(\014nal)e(slash\).)150 3628 y Ft(\\t)384 b Fu(The)30 -b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 3788 -y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.) -150 3948 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f -(format.)150 4109 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h -(HH:MM)g(format.)150 4269 y Ft(\\u)384 b Fu(The)30 b(username)g(of)g -(the)h(curren)m(t)f(user.)150 4429 y Ft(\\v)384 b Fu(The)30 -b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h(2.00\))150 4589 -y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m(ersion)g -Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 4750 -y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8 -b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h(tilde)h(\(uses)f -(the)630 4859 y Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 b(ariable\).)150 -5019 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p -Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)150 -5180 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f -(command.)150 5340 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s -(er)f(of)i(this)f(command.)p eop end %%Page: 93 99 TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Ft(\\$)384 -b Fu(If)30 b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p -Fu(,)g(otherwise)g Ft($)p Fu(.)150 479 y Ft(\\)p Fj(nnn)288 -b Fu(The)30 b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o) -s(ctal)i(v)-5 b(alue)31 b Fr(nnn)p Fu(.)150 659 y Ft(\\\\)384 -b Fu(A)30 b(bac)m(kslash.)150 839 y Ft(\\[)384 b Fu(Begin)38 -b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61 -b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630 -948 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.)150 -1128 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m(ting)g -(c)m(haracters.)275 1319 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 1428 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 1538 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 -1647 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 -1757 y(session.)275 1912 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 2022 y(tution,)k(arithmetic)f(expansion,)g(and)e(quote)h(remo)m(v) --5 b(al,)39 b(sub)5 b(ject)35 b(to)i(the)f(v)-5 b(alue)36 -b(of)g(the)g Ft(promptvars)150 2131 y Fu(shell)31 b(option)f(\(see)i -(Section)f(4.2)g([Bash)g(Builtins],)g(page)g(48\).)150 -2395 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 2554 -y Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h -Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 b Fu(or)k -Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 2664 y(in)m(v)m(o)s(cation,) -d(the)d(shell)g(b)s(ecomes)h(restricted.)40 b(A)27 b(restricted)h -(shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m(vironmen)m(t)150 -2773 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40 -b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)f -Ft(bash)e Fu(with)150 2883 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 -3038 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f -Ft(cd)g Fu(builtin.)225 3183 y Fq(\017)60 b Fu(Setting)31 -b(or)f(unsetting)h(the)g(v)-5 b(alues)30 b(of)h(the)f -Ft(SHELL)p Fu(,)g Ft(PATH)p Fu(,)f Ft(ENV)p Fu(,)h(or)g -Ft(BASH_ENV)e Fu(v)-5 b(ariables.)225 3328 y Fq(\017)60 -b Fu(Sp)s(ecifying)30 b(command)g(names)g(con)m(taining)i(slashes.)225 -3472 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m -(taining)i(a)f(slash)f(as)h(an)f(argumen)m(t)h(to)g(the)f -Ft(.)h Fu(builtin)e(command.)225 3617 y Fq(\017)60 b -Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m(taining)h(a)e(slash)g(as)h -(an)f(argumen)m(t)h(to)g(the)f Ft(-p)g Fu(option)h(to)g(the)f -Ft(hash)330 3727 y Fu(builtin)e(command.)225 3871 y Fq(\017)60 -b Fu(Imp)s(orting)30 b(function)g(de\014nitions)g(from)f(the)i(shell)g -(en)m(vironmen)m(t)g(at)g(startup.)225 4016 y Fq(\017)60 -b Fu(P)m(arsing)31 b(the)f(v)-5 b(alue)31 b(of)g Ft(SHELLOPTS)d -Fu(from)h(the)i(shell)g(en)m(vironmen)m(t)g(at)g(startup.)225 -4161 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p -Ft(>)p Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p Fu(',)h(`)p -Ft(>&)p Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p Ft(>>)p -Fu(')i(redirection)g(op)s(erators.)225 4306 y Fq(\017)60 -b Fu(Using)31 b(the)f Ft(exec)f Fu(builtin)h(to)h(replace)h(the)e -(shell)h(with)f(another)h(command.)225 4451 y Fq(\017)60 -b Fu(Adding)24 b(or)g(deleting)i(builtin)e(commands)g(with)h(the)f -Ft(-f)g Fu(and)g Ft(-d)g Fu(options)h(to)h(the)e Ft(enable)f -Fu(builtin.)225 4595 y Fq(\017)60 b Fu(Using)31 b(the)f -Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g(disabled)f(shell)g -(builtins.)225 4740 y Fq(\017)60 b Fu(Sp)s(ecifying)30 -b(the)g Ft(-p)g Fu(option)h(to)g(the)g Ft(command)d Fu(builtin.)225 -4885 y Fq(\017)60 b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de) -f(with)g(`)p Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p -Fu('.)275 5075 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m -(y)g(startup)f(\014les)g(are)h(read.)275 5230 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 5340 y(Scripts],)25 -b(page)e(39\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h -(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the)g(script.)p -eop end +b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Fs(6.8)68 +b(The)45 b(Directory)g(Stac)l(k)150 458 y Fu(The)21 b(directory)h(stac) +m(k)h(is)e(a)h(list)g(of)f(recen)m(tly-visited)j(directories.)39 +b(The)20 b Ft(pushd)g Fu(builtin)h(adds)g(directories)150 +568 y(to)42 b(the)f(stac)m(k)i(as)e(it)h(c)m(hanges)g(the)f(curren)m(t) +g(directory)-8 b(,)45 b(and)40 b(the)i Ft(popd)e Fu(builtin)g(remo)m(v) +m(es)j(sp)s(eci\014ed)150 677 y(directories)29 b(from)f(the)h(stac)m(k) +h(and)d(c)m(hanges)j(the)e(curren)m(t)g(directory)h(to)g(the)g +(directory)f(remo)m(v)m(ed.)41 b(The)150 787 y Ft(dirs)34 +b Fu(builtin)g(displa)m(ys)h(the)g(con)m(ten)m(ts)i(of)e(the)g +(directory)h(stac)m(k.)56 b(The)34 b(curren)m(t)h(directory)g(is)g(alw) +m(a)m(ys)150 897 y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h +(directory)g(stac)m(k.)275 1037 y(The)k(con)m(ten)m(ts)i(of)f(the)h +(directory)f(stac)m(k)h(are)f(also)h(visible)g(as)f(the)g(v)-5 +b(alue)36 b(of)g(the)g Ft(DIRSTACK)e Fu(shell)150 1146 +y(v)-5 b(ariable.)150 1351 y Fk(6.8.1)63 b(Directory)40 +b(Stac)m(k)g(Builtins)150 1525 y Ft(dirs)870 1663 y(dirs)47 +b([-clpv])e([+)p Fj(N)i Ft(|)h(-)p Fj(N)p Ft(])630 1800 +y Fu(Displa)m(y)35 b(the)f(list)g(of)g(curren)m(tly)g(remem)m(b)s(ered) +f(directories.)51 b(Directories)36 b(are)e(added)f(to)630 +1909 y(the)28 b(list)h(with)f(the)g Ft(pushd)f Fu(command;)i(the)f +Ft(popd)f Fu(command)h(remo)m(v)m(es)h(directories)g(from)630 +2019 y(the)i(list.)41 b(The)30 b(curren)m(t)g(directory)h(is)f(alw)m(a) +m(ys)i(the)f(\014rst)e(directory)i(in)f(the)h(stac)m(k.)630 +2184 y Ft(-c)384 b Fu(Clears)31 b(the)f(directory)h(stac)m(k)h(b)m(y)e +(deleting)h(all)h(of)e(the)h(elemen)m(ts.)630 2349 y +Ft(-l)384 b Fu(Pro)s(duces)31 b(a)h(listing)h(using)e(full)h +(pathnames;)h(the)f(default)g(listing)h(format)1110 2458 +y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h(directory)-8 +b(.)630 2623 y Ft(-p)384 b Fu(Causes)30 b Ft(dirs)f Fu(to)i(prin)m(t)f +(the)h(directory)g(stac)m(k)h(with)e(one)g(en)m(try)h(p)s(er)e(line.) +630 2788 y Ft(-v)384 b Fu(Causes)36 b Ft(dirs)f Fu(to)i(prin)m(t)f(the) +g(directory)h(stac)m(k)h(with)e(one)h(en)m(try)f(p)s(er)f(line,)1110 +2898 y(pre\014xing)30 b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i +(the)f(stac)m(k.)630 3063 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 +b(the)f Fr(N)10 b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h +(left)g(of)g(the)g(list)g(prin)m(ted)1110 3172 y(b)m(y)30 +b Ft(dirs)f Fu(when)h(in)m(v)m(ok)m(ed)i(without)e(options\),)h +(starting)g(with)g(zero.)630 3337 y Ft(-)p Fj(N)384 b +Fu(Displa)m(ys)47 b(the)g Fr(N)10 b Fu(th)46 b(directory)h(\(coun)m +(ting)g(from)f(the)g(righ)m(t)h(of)g(the)f(list)1110 +3447 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g Fu(when)f(in)m(v)m(ok)m(ed)j +(without)f(options\),)h(starting)g(with)e(zero.)150 3611 +y Ft(popd)870 3749 y(popd)47 b([-n])f([+)p Fj(N)h Ft(|)h(-)p +Fj(N)p Ft(])630 3886 y Fu(When)32 b(no)g(argumen)m(ts)h(are)g(giv)m +(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f(directory)h(from)f(the) +g(stac)m(k)630 3995 y(and)f(p)s(erforms)e(a)j Ft(cd)f +Fu(to)h(the)f(new)g(top)h(directory)-8 b(.)44 b(The)31 +b(elemen)m(ts)i(are)e(n)m(um)m(b)s(ered)f(from)630 4105 +y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g(listed)h(with)f +Ft(dirs)p Fu(;)g(that)h(is,)g Ft(popd)e Fu(is)i(equiv)-5 +b(alen)m(t)33 b(to)630 4215 y Ft(popd)c(+0)p Fu(.)630 +4379 y Ft(-n)384 b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g +(directory)g(when)e(remo)m(ving)j(directo-)1110 4489 +y(ries)f(from)g(the)h(stac)m(k,)h(so)f(that)g(only)f(the)h(stac)m(k)g +(is)g(manipulated.)630 4654 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22 +b(the)f Fr(N)10 b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g +(left)h(of)g(the)f(list)h(prin)m(ted)1110 4763 y(b)m(y)30 +b Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)630 4928 +y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g Fr(N)10 +b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)g(of)g +(the)g(list)1110 5038 y(prin)m(ted)30 b(b)m(y)g Ft(dirs)p +Fu(\),)g(starting)h(with)f(zero.)150 5203 y Ft(pushd)870 +5340 y(pushd)46 b([-n])h([+)p Fj(N)g Ft(|)g Fj(-N)h Ft(|)f +Fj(dir)p Ft(])p eop end %%Page: 94 100 TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(94)150 299 y Fs(6.11)68 -b(Bash)45 b(POSIX)f(Mo)t(de)150 458 y Fu(Starting)39 -b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j(option)g(or)f -(executing)h(`)p Ft(set)30 b(-o)g(posix)p Fu(')37 b(while)150 -568 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f -(more)g(closely)h(to)g(the)f Fm(posix)f Fu(standard)g(b)m(y)h(c)m -(hanging)150 677 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g(sp) -s(eci\014ed)f(b)m(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h(Bash)f -(default)h(di\013ers.)275 811 y(When)f(in)m(v)m(ok)m(ed)h(as)g -Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h -(reading)g(the)f(startup)g(\014les.)275 944 y(The)f(follo)m(wing)j -(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fm(posix)h -Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 1077 y(1.)61 b(When)28 -b(a)i(command)e(in)g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash) -f(will)g(re-searc)m(h)h Ft($PATH)d Fu(to)i(\014nd)330 -1187 y(the)i(new)e(lo)s(cation.)43 b(This)29 b(is)i(also)g(a)m(v)-5 -b(ailable)33 b(with)d(`)p Ft(shopt)f(-s)h(checkhash)p -Fu('.)199 1320 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 1430 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 -1563 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 1673 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 -b(where)f Fr(signame)36 b Fu(is,)31 b(for)f(example,)h -Ft(SIGTSTP)p Fu(.)199 1806 y(4.)61 b(The)27 b Ft(bg)g -Fu(builtin)g(uses)g(the)h(required)f(format)h(to)g(describ)s(e)f(eac)m -(h)i(job)e(placed)h(in)f(the)h(bac)m(kground,)330 1916 -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 -2049 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 2159 y(undergo)30 b(alias)h(expansion.)199 2292 y(6.)61 -b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g Ft(PS2)g Fu(expansions)g(of)i -(`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p -Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 2401 y(enabled,)26 -b(and)f(parameter)g(expansion)g(is)g(p)s(erformed)e(on)i(the)g(v)-5 -b(alues)25 b(of)g Ft(PS1)f Fu(and)h Ft(PS2)f Fu(regardless)330 -2511 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c -Fu(option.)199 2644 y(7.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les) -i(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal) -f(Bash)g(\014les.)199 2778 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 2887 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h -(on)e(the)h(line.)199 3021 y(9.)61 b(The)31 b Ft(command)e -Fu(builtin)i(do)s(es)g(not)h(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e) -h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)330 3130 y(gumen)m(ts)40 -b(from)e(expanding)h(them)g(as)h(assignmen)m(t)g(statemen)m(ts;)46 -b(when)38 b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 3240 -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 3349 -y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 3483 y(10.)61 -b(The)30 b(default)g(history)h(\014le)f(is)h Ft(~/.sh_history)26 -b Fu(\(this)31 b(is)f(the)h(default)g(v)-5 b(alue)30 -b(of)h Ft($HISTFILE)p Fu(\).)154 3616 y(11.)61 b(The)23 -b(output)f(of)i(`)p Ft(kill)29 b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g -(signal)f(names)g(on)g(a)h(single)g(line,)h(separated)e(b)m(y)g -(spaces,)330 3726 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.) -154 3859 y(12.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h -(accept)h(signal)f(names)f(with)g(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 -3992 y(13.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g -Fr(\014lename)k Fu(in)30 b Ft(.)g Fr(\014lename)36 b -Fu(is)31 b(not)f(found.)154 4125 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 4235 y(in)m(v)-5 b(alid)31 -b(expression.)154 4368 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 Ft(.)g Fu(or)h Ft(source)330 -4478 y Fu(builtins,)30 b(or)g(in)g(a)h(string)g(pro)s(cessed)e(b)m(y)i -(the)f Ft(eval)f Fu(builtin.)154 4611 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 4721 y(unless)30 -b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 4854 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 -4987 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 Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y) -g(not)g(con)m(tain)g(c)m(haracters)330 5097 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 5207 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 5340 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 Fm(posix)g Fu(sp)s(ecial)h(builtins.)p eop -end +b(Bash)30 b(F)-8 b(eatures)2484 b(94)630 299 y(Sa)m(v)m(e)30 +b(the)e(curren)m(t)g(directory)h(on)f(the)h(top)f(of)h(the)f(directory) +h(stac)m(k)h(and)e(then)g Ft(cd)f Fu(to)i Fr(dir)p Fu(.)630 +408 y(With)39 b(no)f(argumen)m(ts,)j Ft(pushd)c Fu(exc)m(hanges)j(the)f +(top)f(t)m(w)m(o)i(directories)g(and)d(mak)m(es)j(the)630 +518 y(new)30 b(top)g(the)h(curren)m(t)f(directory)-8 +b(.)630 675 y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)h +(of)g(directory)f(when)g(rotating)h(or)f(adding)1110 +784 y(directories)31 b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h +(stac)m(k)h(is)e(manipulated.)630 941 y Ft(+)p Fj(N)384 +b Fu(Brings)29 b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h +(from)e(the)g(left)i(of)e(the)h(list)g(prin)m(ted)1110 +1051 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the) +f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110 +1160 y(stac)m(k.)630 1317 y Ft(-)p Fj(N)384 b Fu(Brings)23 +b(the)g Fr(N)10 b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i +(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 1426 y(b)m(y)34 +b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h +(the)f(list)h(b)m(y)f(rotating)i(the)1110 1536 y(stac)m(k.)630 +1693 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27 +b(the)g(top)g(of)g(the)h(stac)m(k,)h(making)e(it)h(the)f(new)g(curren)m +(t)g(direc-)1110 1802 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied) +f(as)i(an)f(argumen)m(t)h(to)g(the)f Ft(cd)g Fu(builtin.)150 +2040 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150 +2200 y Fu(The)24 b(v)-5 b(alue)24 b(of)h(the)f(v)-5 b(ariable)25 +b Ft(PROMPT_COMMAND)20 b Fu(is)25 b(examined)f(just)g(b)s(efore)f(Bash) +i(prin)m(ts)e(eac)m(h)j(primary)150 2309 y(prompt.)39 +b(If)28 b Ft(PROMPT_COMMAND)d Fu(is)j(set)h(and)f(has)g(a)h(non-n)m +(ull)f(v)-5 b(alue,)29 b(then)f(the)h(v)-5 b(alue)29 +b(is)f(executed)i(just)150 2419 y(as)h(if)f(it)h(had)f(b)s(een)f(t)m +(yp)s(ed)h(on)h(the)f(command)g(line.)275 2552 y(In)d(addition,)j(the)f +(follo)m(wing)h(table)f(describ)s(es)f(the)h(sp)s(ecial)g(c)m +(haracters)h(whic)m(h)f(can)f(app)s(ear)g(in)h(the)150 +2661 y(prompt)g(v)-5 b(ariables)32 b Ft(PS1)d Fu(to)i +Ft(PS4)p Fu(:)150 2818 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m +(haracter.)150 2975 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f +Ft(")p Fu(W)-8 b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h +Fu(format)f(\(e.g.,)h Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p +Ft(")p Fu(\).)150 3131 y Ft(\\D{)p Fj(format)p Ft(})630 +3241 y Fu(The)c Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p +Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt) +630 3351 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g +(a)h(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65 +b(The)630 3460 y(braces)31 b(are)f(required.)150 3617 +y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150 +3773 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e +(`.'.)150 3930 y Ft(\\H)384 b Fu(The)30 b(hostname.)150 +4087 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m +(tly)h(managed)g(b)m(y)f(the)g(shell.)150 4243 y Ft(\\l)384 +b Fu(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g +(name.)150 4400 y Ft(\\n)384 b Fu(A)30 b(newline.)150 +4557 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150 +4713 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f +(basename)f(of)h Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f +(\014nal)e(slash\).)150 4870 y Ft(\\t)384 b Fu(The)30 +b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 5027 +y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.) +150 5183 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f +(format.)150 5340 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h +(HH:MM)g(format.)p eop end %%Page: 95 101 TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(95)154 299 y(20.)61 -b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e(b)s(efore)h -(shell)h(functions)f(during)f(command)h(lo)s(okup.)154 -427 y(21.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g -(b)s(e)g(used)f(b)m(y)h(itself)g(as)g(a)h(command.)40 -b(When)30 b(used)f(in)g(this)h(w)m(a)m(y)-8 b(,)330 536 -y(it)33 b(displa)m(ys)g(timing)g(statistics)h(for)e(the)h(shell)g(and)f -(its)g(completed)i(c)m(hildren.)47 b(The)32 b Ft(TIMEFORMAT)330 -646 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f -(timing)h(information.)154 774 y(22.)61 b(When)33 b(parsing)g(and)f -(expanding)h(a)h($)p Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 -b Fu(expansion)g(that)h(app)s(ears)f(within)f(double)h(quotes,)330 -883 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 -993 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 1103 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 -1230 y(23.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h -Ft(time)d Fu(as)i(a)g(reserv)m(ed)f(w)m(ord)g(if)h(the)f(next)h(tok)m -(en)h(b)s(egins)d(with)i(a)330 1340 y(`)p Ft(-)p Fu('.)154 -1468 y(24.)61 b(If)24 b(a)g Fm(posix)g Fu(sp)s(ecial)h(builtin)f -(returns)f(an)h(error)g(status,)i(a)e(non-in)m(teractiv)m(e)j(shell)e -(exits.)39 b(The)24 b(fatal)330 1577 y(errors)30 b(are)h(those)f -(listed)h(in)f(the)h Fm(posix)e Fu(standard,)h(and)g(include)g(things)g -(lik)m(e)i(passing)e(incorrect)330 1687 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 1797 y(command)30 -b(name,)h(and)f(so)g(on.)154 1924 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 -2034 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 -2144 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 2271 y(26.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d -(exits)h(with)e(an)h(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 -b(assignmen)m(t)g(error)e(o)s(ccurs)330 2381 y(in)g(an)g(assignmen)m(t) -i(statemen)m(t)g(preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g -(with)h(an)m(y)f(other)h(simple)330 2491 y(command.)154 -2619 y(27.)61 b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f -(an)f(error)h(status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 -b(in)f(a)g Ft(for)330 2728 y Fu(statemen)m(t)32 b(or)f(the)f(selection) -i(v)-5 b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f -(readonly)h(v)-5 b(ariable.)154 2856 y(28.)61 b(Pro)s(cess)30 -b(substitution)g(is)h(not)f(a)m(v)-5 b(ailable.)154 2984 -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 -Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330 -3093 y(parameters.)154 3221 y(30.)61 b(Assignmen)m(t)23 -b(statemen)m(ts)h(preceding)e Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s -(ersist)g(in)f(the)i(shell)f(en)m(vironmen)m(t)330 3331 -y(after)31 b(the)f(builtin)g(completes.)154 3459 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 -3568 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h -Fm(posix)e Fu(sp)s(ecial)i(builtin)f(command)g(had)g(b)s(een)g -(executed.)154 3696 y(32.)61 b(The)38 b Ft(export)f Fu(and)g -Ft(readonly)f Fu(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in) -g(the)h(format)g(re-)330 3806 y(quired)30 b(b)m(y)g Fm(posix)p -Fu(.)154 3934 y(33.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g -(signal)i(names)e(without)g(the)h(leading)g Ft(SIG)p -Fu(.)154 4061 y(34.)61 b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g -(c)m(hec)m(k)h(the)g(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e -(signal)i(sp)s(eci\014cation)330 4171 y(and)30 b(rev)m(ert)i(the)e -(signal)i(handling)e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g -(is,)g(unless)f(that)h(argumen)m(t)330 4281 y(consists)e(solely)g(of)g -(digits)g(and)f(is)g(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 -b(If)28 b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330 -4390 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s -(osition,)f(they)g(should)f(use)h(`)p Ft(-)p Fu(')g(as)g(the)g(\014rst) -f(argumen)m(t.)154 4518 y(35.)61 b(The)21 b Ft(.)h Fu(and)f -Ft(source)f Fu(builtins)h(do)g(not)h(searc)m(h)h(the)f(curren)m(t)f -(directory)h(for)g(the)g(\014lename)f(argumen)m(t)330 -4628 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g -Ft(PATH)p Fu(.)154 4756 y(36.)61 b(Subshells)24 b(spa)m(wned)h(to)h -(execute)h(command)f(substitutions)f(inherit)g(the)h(v)-5 -b(alue)26 b(of)g(the)g Ft(-e)e Fu(option)330 4865 y(from)37 -b(the)h(paren)m(t)g(shell.)63 b(When)38 b(not)g(in)f -Fm(posix)g Fu(mo)s(de,)j(Bash)e(clears)g(the)g Ft(-e)g -Fu(option)g(in)f(suc)m(h)330 4975 y(subshells.)154 5103 -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 5230 y(38.)61 -b(When)43 b(the)g Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g -(de\014nitions,)i(it)d(do)s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 -5340 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g -Ft(-p)g Fu(option)h(is)f(supplied.)p eop end +b(Bash)30 b(F)-8 b(eatures)2484 b(95)150 299 y Ft(\\u)384 +b Fu(The)30 b(username)g(of)g(the)h(curren)m(t)f(user.)150 +455 y Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h +(2.00\))150 611 y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m +(ersion)g Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 +766 y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8 +b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h(tilde)h(\(uses)f +(the)630 876 y Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 b(ariable\).)150 +1032 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p +Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)150 +1188 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f +(command.)150 1343 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s +(er)f(of)i(this)f(command.)150 1499 y Ft(\\$)384 b Fu(If)30 +b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g +Ft($)p Fu(.)150 1655 y Ft(\\)p Fj(nnn)288 b Fu(The)30 +b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v) +-5 b(alue)31 b Fr(nnn)p Fu(.)150 1811 y Ft(\\\\)384 b +Fu(A)30 b(bac)m(kslash.)150 1967 y Ft(\\[)384 b Fu(Begin)38 +b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61 +b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630 +2076 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.) +150 2232 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m +(ting)g(c)m(haracters.)275 2388 y(The)25 b(command)h(n)m(um)m(b)s(er)f +(and)h(the)g(history)g(n)m(um)m(b)s(er)f(are)i(usually)f(di\013eren)m +(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 2497 +y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f +(list,)i(whic)m(h)f(ma)m(y)g(include)f(commands)g(restored)g(from)150 +2607 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e +(History)h(F)-8 b(acilities],)45 b(page)40 b(137\),)j(while)d(the)f +(command)150 2717 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g +(the)g(sequence)h(of)f(commands)g(executed)h(during)e(the)i(curren)m(t) +f(shell)150 2826 y(session.)275 2959 y(After)35 b(the)g(string)g(is)g +(deco)s(ded,)h(it)f(is)g(expanded)f(via)i(parameter)f(expansion,)i +(command)d(substi-)150 3068 y(tution,)k(arithmetic)f(expansion,)g(and)e +(quote)h(remo)m(v)-5 b(al,)39 b(sub)5 b(ject)35 b(to)i(the)f(v)-5 +b(alue)36 b(of)g(the)g Ft(promptvars)150 3178 y Fu(shell)31 +b(option)f(\(see)i(Section)f(4.2)g([Bash)g(Builtins],)g(page)g(49\).) +150 3415 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 +3575 y Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h +Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 b Fu(or)k +Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 3684 y(in)m(v)m(o)s(cation,) +d(the)d(shell)g(b)s(ecomes)h(restricted.)40 b(A)27 b(restricted)h +(shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m(vironmen)m(t)150 +3794 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40 +b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)f +Ft(bash)e Fu(with)150 3903 y(the)31 b(exception)g(that)g(the)g(follo)m +(wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s(erformed:)225 +4036 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f +Ft(cd)g Fu(builtin.)225 4169 y Fq(\017)60 b Fu(Setting)31 +b(or)f(unsetting)h(the)g(v)-5 b(alues)30 b(of)h(the)f +Ft(SHELL)p Fu(,)g Ft(PATH)p Fu(,)f Ft(ENV)p Fu(,)h(or)g +Ft(BASH_ENV)e Fu(v)-5 b(ariables.)225 4301 y Fq(\017)60 +b Fu(Sp)s(ecifying)30 b(command)g(names)g(con)m(taining)i(slashes.)225 +4434 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m +(taining)i(a)f(slash)f(as)h(an)f(argumen)m(t)h(to)g(the)f +Ft(.)h Fu(builtin)e(command.)225 4567 y Fq(\017)60 b +Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m(taining)h(a)e(slash)g(as)h +(an)f(argumen)m(t)h(to)g(the)f Ft(-p)g Fu(option)h(to)g(the)f +Ft(hash)330 4676 y Fu(builtin)e(command.)225 4809 y Fq(\017)60 +b Fu(Imp)s(orting)30 b(function)g(de\014nitions)g(from)f(the)i(shell)g +(en)m(vironmen)m(t)g(at)g(startup.)225 4942 y Fq(\017)60 +b Fu(P)m(arsing)31 b(the)f(v)-5 b(alue)31 b(of)g Ft(SHELLOPTS)d +Fu(from)h(the)i(shell)g(en)m(vironmen)m(t)g(at)g(startup.)225 +5075 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p +Ft(>)p Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p Fu(',)h(`)p +Ft(>&)p Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p Ft(>>)p +Fu(')i(redirection)g(op)s(erators.)225 5207 y Fq(\017)60 +b Fu(Using)31 b(the)f Ft(exec)f Fu(builtin)h(to)h(replace)h(the)e +(shell)h(with)f(another)h(command.)225 5340 y Fq(\017)60 +b Fu(Adding)24 b(or)g(deleting)i(builtin)e(commands)g(with)h(the)f +Ft(-f)g Fu(and)g Ft(-d)g Fu(options)h(to)h(the)e Ft(enable)f +Fu(builtin.)p eop end %%Page: 96 102 TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(96)154 299 y(39.)61 +b(Bash)30 b(F)-8 b(eatures)2484 b(96)225 299 y Fq(\017)60 +b Fu(Using)31 b(the)f Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g +(disabled)f(shell)g(builtins.)225 434 y Fq(\017)60 b +Fu(Sp)s(ecifying)30 b(the)g Ft(-p)g Fu(option)h(to)g(the)g +Ft(command)d Fu(builtin.)225 569 y Fq(\017)60 b Fu(T)-8 +b(urning)29 b(o\013)i(restricted)g(mo)s(de)f(with)g(`)p +Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p +Fu('.)275 729 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m(y) +g(startup)f(\014les)g(are)h(read.)275 865 y(When)j(a)i(command)e(that)i +(is)f(found)f(to)h(b)s(e)g(a)g(shell)g(script)g(is)g(executed)h(\(see)g +(Section)g(3.8)g([Shell)150 974 y(Scripts],)25 b(page)e(40\),)j +Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h(in)f(the)g(shell) +h(spa)m(wned)e(to)i(execute)g(the)g(script.)150 1216 +y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 1376 y Fu(Starting)39 +b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j(option)g(or)f +(executing)h(`)p Ft(set)30 b(-o)g(posix)p Fu(')37 b(while)150 +1485 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f +(more)g(closely)h(to)g(the)f Fm(posix)f Fu(standard)g(b)m(y)h(c)m +(hanging)150 1595 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g +(sp)s(eci\014ed)f(b)m(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h +(Bash)f(default)h(di\013ers.)275 1730 y(When)f(in)m(v)m(ok)m(ed)h(as)g +Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h +(reading)g(the)f(startup)g(\014les.)275 1866 y(The)f(follo)m(wing)j +(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fm(posix)h +Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 2001 y(1.)61 b(When)28 +b(a)i(command)e(in)g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash) +f(will)g(re-searc)m(h)h Ft($PATH)d Fu(to)i(\014nd)330 +2111 y(the)i(new)e(lo)s(cation.)43 b(This)29 b(is)i(also)g(a)m(v)-5 +b(ailable)33 b(with)d(`)p Ft(shopt)f(-s)h(checkhash)p +Fu('.)199 2246 y(2.)61 b(The)42 b(message)h(prin)m(ted)e(b)m(y)h(the)g +(job)g(con)m(trol)i(co)s(de)e(and)f(builtins)h(when)f(a)h(job)g(exits)h +(with)f(a)330 2355 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 +2490 y(3.)61 b(The)40 b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con) +m(trol)h(co)s(de)g(and)f(builtins)f(when)h(a)g(job)g(is)h(stopp)s(ed)e +(is)330 2600 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 +b(where)f Fr(signame)36 b Fu(is,)31 b(for)f(example,)h +Ft(SIGTSTP)p Fu(.)199 2735 y(4.)61 b(Alias)31 b(expansion)g(is)f(alw)m +(a)m(ys)i(enabled,)e(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)199 +2870 y(5.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con) +m(text)i(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not) +330 2979 y(undergo)30 b(alias)h(expansion.)199 3114 y(6.)61 +b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g Ft(PS2)g Fu(expansions)g(of)i +(`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p +Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 3224 y(enabled,)26 +b(and)f(parameter)g(expansion)g(is)g(p)s(erformed)e(on)i(the)g(v)-5 +b(alues)25 b(of)g Ft(PS1)f Fu(and)h Ft(PS2)f Fu(regardless)330 +3333 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c +Fu(option.)199 3468 y(7.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les) +i(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal) +f(Bash)g(\014les.)199 3603 y(8.)61 b(Tilde)30 b(expansion)g(is)f(only)h +(p)s(erformed)f(on)h(assignmen)m(ts)g(preceding)g(a)g(command)g(name,)g +(rather)330 3713 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h +(on)e(the)h(line.)199 3848 y(9.)61 b(The)30 b(default)g(history)h +(\014le)f(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default) +g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 3982 +y(10.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f +(\014lename)h(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection) +330 4092 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 +4227 y(11.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e +(w)m(ord)h(splitting)h(on)f(the)h(w)m(ord)f(in)g(the)g(redirection.)154 +4362 y(12.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 +b(alid)35 b(shell)f Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y) +g(not)g(con)m(tain)g(c)m(haracters)330 4472 y(other)e(than)g(letters,)h +(digits,)h(and)d(underscores,)h(and)f(ma)m(y)h(not)g(start)h(with)e(a)h +(digit.)49 b(Declaring)330 4581 y(a)31 b(function)f(with)g(an)g(in)m(v) +-5 b(alid)31 b(name)g(causes)f(a)h(fatal)h(syn)m(tax)f(error)f(in)g +(non-in)m(teractiv)m(e)j(shells.)154 4716 y(13.)61 b(F)-8 +b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g(one)f +(of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154 +4851 y(14.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e +(b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)154 +4986 y(15.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f +(de\014nitions)g(\(e.g.,)55 b(b)m(y)48 b Ft(type)p Fu(\),)k(Bash)d(do)s +(es)f(not)h(prin)m(t)f(the)330 5095 y Ft(function)28 +b Fu(k)m(eyw)m(ord.)154 5230 y(16.)61 b(Literal)28 b(tildes)g(that)f +(app)s(ear)f(as)i(the)f(\014rst)f(c)m(haracter)j(in)d(elemen)m(ts)j(of) +e(the)g Ft(PATH)f Fu(v)-5 b(ariable)27 b(are)h(not)330 +5340 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section) +i(3.5.2)h([Tilde)f(Expansion],)f(page)h(22.)p eop end +%%Page: 97 103 +TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(97)154 299 y(17.)61 +b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s(e)g(used)f +(b)m(y)h(itself)g(as)g(a)h(command.)40 b(When)30 b(used)f(in)g(this)h +(w)m(a)m(y)-8 b(,)330 408 y(it)33 b(displa)m(ys)g(timing)g(statistics)h +(for)e(the)h(shell)g(and)f(its)g(completed)i(c)m(hildren.)47 +b(The)32 b Ft(TIMEFORMAT)330 518 y Fu(v)-5 b(ariable)31 +b(con)m(trols)h(the)e(format)h(of)g(the)f(timing)h(information.)154 +646 y(18.)61 b(When)33 b(parsing)g(and)f(expanding)h(a)h($)p +Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(expansion)g(that)h(app)s +(ears)f(within)f(double)h(quotes,)330 756 y(single)42 +b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f(cannot)i(b)s(e)e +(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330 865 +y(other)31 b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s(erator)f +(is)g(one)h(of)f(those)h(de\014ned)e(to)i(p)s(erform)e(pattern)330 +975 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h +(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154 +1103 y(19.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h +Ft(time)d Fu(as)i(a)g(reserv)m(ed)f(w)m(ord)g(if)h(the)f(next)h(tok)m +(en)h(b)s(egins)d(with)i(a)330 1212 y(`)p Ft(-)p Fu('.)154 +1340 y(20.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e +(not)h(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h +(double-quoted)g(string,)330 1450 y(ev)m(en)g(if)f(the)h +Ft(histexpand)d Fu(option)i(is)h(enabled.)154 1577 y(21.)61 +b(If)24 b(a)g Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h +(error)g(status,)i(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39 +b(The)24 b(fatal)330 1687 y(errors)30 b(are)h(those)f(listed)h(in)f +(the)h Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i +(passing)e(incorrect)330 1797 y(options,)43 b(redirection)d(errors,)i +(v)-5 b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i +(preceding)f(the)330 1906 y(command)30 b(name,)h(and)f(so)g(on.)154 +2034 y(22.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e +(an)h(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g +(error)e(o)s(ccurs)330 2144 y(when)38 b(no)h(command)g(name)g(follo)m +(ws)i(the)e(assignmen)m(t)h(statemen)m(ts.)69 b(A)39 +b(v)-5 b(ariable)40 b(assignmen)m(t)330 2253 y(error)30 +b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g(assign)f(a)h(v)-5 +b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)154 2381 +y(23.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h +(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g(error)e +(o)s(ccurs)330 2491 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g +(preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f +(other)h(simple)330 2600 y(command.)154 2728 y(24.)61 +b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f(an)f(error)h +(status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 b(in)f(a)g +Ft(for)330 2838 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5 +b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f +(readonly)h(v)-5 b(ariable.)154 2966 y(25.)61 b(Non-in)m(teractiv)m(e) +34 b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b +Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154 +3093 y(26.)61 b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g +(syn)m(tax)g(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h +(an)330 3203 y(in)m(v)-5 b(alid)31 b(expression.)154 +3331 y(27.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f +(parameter)h(expansion)g(error)f(o)s(ccurs.)154 3459 +y(28.)61 b(Non-in)m(teractiv)m(e)27 b(shells)c(exit)i(if)e(there)h(is)f +(a)h(syn)m(tax)g(error)f(in)g(a)h(script)f(read)g(with)h(the)f +Ft(.)g Fu(or)h Ft(source)330 3568 y Fu(builtins,)30 b(or)g(in)g(a)h +(string)g(pro)s(cessed)e(b)m(y)i(the)f Ft(eval)f Fu(builtin.)154 +3696 y(29.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not)f(a)m(v)-5 +b(ailable.)154 3824 y(30.)61 b(While)32 b(v)-5 b(ariable)32 +b(indirection)f(is)g(a)m(v)-5 b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s +(e)g(applied)g(to)g(the)h(`)p Ft(#)p Fu(')f(and)f(`)p +Ft(?)p Fu(')h(sp)s(ecial)330 3934 y(parameters.)154 4061 +y(31.)61 b(When)28 b(expanding)g(the)g(`)p Ft(*)p Fu(')g(sp)s(ecial)h +(parameter)f(in)g(a)h(pattern)f(con)m(text)i(where)e(the)g(expansion)g +(is)330 4171 y(double-quoted)i(do)s(es)g(not)h(treat)h(the)e +Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g(double-quoted.)154 +4299 y(32.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e +Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s(ersist)g(in)f(the)i(shell)f +(en)m(vironmen)m(t)330 4408 y(after)31 b(the)f(builtin)g(completes.)154 +4536 y(33.)61 b(Assignmen)m(t)35 b(statemen)m(ts)h(preceding)f(shell)f +(function)g(calls)i(p)s(ersist)e(in)g(the)h(shell)f(en)m(vironmen)m(t) +330 4646 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h +Fm(posix)e Fu(sp)s(ecial)i(builtin)f(command)g(had)g(b)s(een)g +(executed.)154 4774 y(34.)61 b(The)31 b Ft(command)e +Fu(builtin)i(do)s(es)g(not)h(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e) +h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)330 4883 y(gumen)m(ts)40 +b(from)e(expanding)h(them)g(as)h(assignmen)m(t)g(statemen)m(ts;)46 +b(when)38 b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 4993 +y(assignmen)m(t)k(builtins)e(lose)h(their)g(assignmen)m(t)h(statemen)m +(t)h(expansion)d(prop)s(erties)g(when)g(pre-)330 5103 +y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 5230 y(35.)61 +b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h(required)f(format)h(to)g +(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f(the)h(bac)m(kground,)330 +5340 y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g(indication)h(of)f +(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e(or)h(previous)g(job.)p +eop end +%%Page: 98 104 +TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(98)154 299 y(36.)61 +b(The)23 b(output)f(of)i(`)p Ft(kill)29 b(-l)p Fu(')23 +b(prin)m(ts)f(all)i(the)g(signal)f(names)g(on)g(a)h(single)g(line,)h +(separated)e(b)m(y)g(spaces,)330 408 y(without)30 b(the)h(`)p +Ft(SIG)p Fu(')f(pre\014x.)154 542 y(37.)61 b(The)30 b +Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept)h(signal)f(names)f(with)g +(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 676 y(38.)61 b(The)38 +b Ft(export)f Fu(and)g Ft(readonly)f Fu(builtin)i(commands)g(displa)m +(y)h(their)f(output)g(in)g(the)h(format)g(re-)330 786 +y(quired)30 b(b)m(y)g Fm(posix)p Fu(.)154 920 y(39.)61 +b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g(signal)i(names)e +(without)g(the)h(leading)g Ft(SIG)p Fu(.)154 1054 y(40.)61 +b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g(c)m(hec)m(k)h(the)g +(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e(signal)i(sp)s +(eci\014cation)330 1163 y(and)30 b(rev)m(ert)i(the)e(signal)i(handling) +e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g(is,)g(unless)f(that) +h(argumen)m(t)330 1273 y(consists)e(solely)g(of)g(digits)g(and)f(is)g +(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 b(If)28 +b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330 +1383 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s +(osition,)f(they)g(should)f(use)h(`)p Ft(-)p Fu(')g(as)g(the)g(\014rst) +f(argumen)m(t.)154 1517 y(41.)61 b(The)21 b Ft(.)h Fu(and)f +Ft(source)f Fu(builtins)h(do)g(not)h(searc)m(h)h(the)f(curren)m(t)f +(directory)h(for)g(the)g(\014lename)f(argumen)m(t)330 +1626 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g +Ft(PATH)p Fu(.)154 1760 y(42.)61 b(Enabling)21 b Fm(posix)g +Fu(mo)s(de)g(has)g(the)g(e\013ect)i(of)e(setting)i(the)e +Ft(inherit_errexit)d Fu(option,)23 b(so)f(subshells)330 +1870 y(spa)m(wned)27 b(to)i(execute)g(command)e(substitutions)h +(inherit)f(the)h(v)-5 b(alue)28 b(of)g(the)g Ft(-e)f +Fu(option)h(from)g(the)330 1979 y(paren)m(t)37 b(shell.)62 +b(When)37 b(the)g Ft(inherit_errexit)c Fu(option)38 b(is)f(not)h +(enabled,)h(Bash)e(clears)h(the)g Ft(-e)330 2089 y Fu(option)31 +b(in)f(suc)m(h)g(subshells.)154 2223 y(43.)61 b(When)43 +b(the)g Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g(de\014nitions,)i +(it)d(do)s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 +2332 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g +Ft(-p)g Fu(option)h(is)f(supplied.)154 2466 y(44.)61 b(When)40 b(the)g Ft(set)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h (without)f(options,)j(it)e(do)s(es)f(not)g(displa)m(y)g(shell)g -(function)330 408 y(names)30 b(and)g(de\014nitions.)154 -543 y(40.)61 b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)m -(ed)i(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37 -b(v)-5 b(alues)37 b(without)330 653 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 762 y(c)m(haracters.)154 -897 y(41.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m +(function)330 2576 y(names)30 b(and)g(de\014nitions.)154 +2710 y(45.)61 b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok) +m(ed)i(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37 +b(v)-5 b(alues)37 b(without)330 2819 y(quotes,)26 b(unless)d(they)i +(con)m(tain)g(shell)f(metac)m(haracters,)k(ev)m(en)d(if)f(the)g(result) +g(con)m(tains)i(nonprin)m(ting)330 2929 y(c)m(haracters.)154 +3063 y(46.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m (ed)i(in)d Fr(logical)41 b Fu(mo)s(de,)36 b(and)f(the)g(pathname)g -(constructed)g(from)330 1006 y Ft($PWD)i Fu(and)h(the)h(directory)f +(constructed)g(from)330 3173 y Ft($PWD)i Fu(and)h(the)h(directory)f (name)h(supplied)e(as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g -(an)f(existing)330 1116 y(directory)-8 b(,)32 b Ft(cd)d +(an)f(existing)330 3282 y(directory)-8 b(,)32 b Ft(cd)d Fu(will)i(fail)g(instead)g(of)f(falling)h(bac)m(k)h(to)f -Fr(ph)m(ysical)j Fu(mo)s(de.)154 1250 y(42.)61 b(The)36 +Fr(ph)m(ysical)j Fu(mo)s(de.)154 3416 y(47.)61 b(The)36 b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g(the)f(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h(curren)m(t)f -(directory)-8 b(,)330 1360 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m +(directory)-8 b(,)330 3526 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m (ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f(system)h(with)f(the)h -Ft(-P)e Fu(option.)154 1494 y(43.)61 b(When)35 b(listing)g(the)g +Ft(-P)e Fu(option.)154 3660 y(48.)61 b(When)35 b(listing)g(the)g (history)-8 b(,)36 b(the)f Ft(fc)g Fu(builtin)f(do)s(es)g(not)h -(include)g(an)f(indication)i(of)f(whether)f(or)330 1604 +(include)g(an)f(indication)i(of)f(whether)f(or)330 3769 y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154 -1738 y(44.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g -Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 1873 y(45.)61 b(The)37 +3903 y(49.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g +Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 4037 y(50.)61 b(The)37 b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g(rep)s(ort) f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330 -1983 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g +4147 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 2092 y(found)i(in)h Ft($PATH)p Fu(.)154 -2227 y(46.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m +g(\014le)330 4256 y(found)i(in)h Ft($PATH)p Fu(.)154 +4390 y(51.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m (ok)m(e)i(the)e Ft(vi)g Fu(editor)h(directly)f(when)f(the)i(`)p -Ft(v)p Fu(')f(command)g(is)g(run,)330 2336 y(instead)e(of)f(c)m(hec)m -(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 2471 -y(47.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j +Ft(v)p Fu(')f(command)g(is)g(run,)330 4500 y(instead)e(of)f(c)m(hec)m +(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 4634 +y(52.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j (Bash)d(do)s(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330 -2580 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 +4743 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 b(Eac)m(h)35 b(argumen)m(t)g(is)f(displa)m(y)m(ed,)j(after)e(escap)s(e) -g(c)m(haracters)h(are)330 2690 y(con)m(v)m(erted.)154 -2824 y(48.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m +g(c)m(haracters)h(are)330 4853 y(con)m(v)m(erted.)154 +4987 y(53.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m (k)g(size)g(of)g(512)g(b)m(ytes)g(for)f(the)h Ft(-c)f -Fu(and)g Ft(-f)f Fu(options.)154 2959 y(49.)61 b(The)39 +Fu(and)g Ft(-f)f Fu(options.)154 5121 y(54.)61 b(The)39 b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g(is)g(set)h (on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g -Ft(wait)330 3068 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f +Ft(wait)330 5230 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f (immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j -(for)f(eac)m(h)330 3178 y(c)m(hild)31 b(that)g(exits.)154 -3313 y(50.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m -(terrupted)h(b)m(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s -(een)f(set.)40 b(If)27 b(Bash)330 3422 y(receiv)m(es)41 -b(a)f(trapp)s(ed)e(signal)i(while)f(executing)h Ft(read)p -Fu(,)h(the)e(trap)h(handler)e(executes)i(and)f Ft(read)330 -3532 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)275 -3691 y(There)k(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h(that)g(Bash) -g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m(en)i(when)d(in) -150 3801 y Fm(posix)d Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)199 -3935 y(1.)61 b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i -Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h -(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 4045 y(rather)g(than)g(defaulting) -h(directly)g(to)g Ft(ed)p Fu(.)40 b Ft(fc)30 b Fu(uses)g -Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)199 4179 y(2.)61 +(for)f(eac)m(h)330 5340 y(c)m(hild)31 b(that)g(exits.)p +eop end +%%Page: 99 105 +TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41 +b(Bash)30 b(F)-8 b(eatures)2484 b(99)154 299 y(55.)61 +b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m(terrupted)h(b)m +(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s(een)f(set.)40 +b(If)27 b(Bash)330 408 y(receiv)m(es)41 b(a)f(trapp)s(ed)e(signal)i +(while)f(executing)h Ft(read)p Fu(,)h(the)e(trap)h(handler)e(executes)i +(and)f Ft(read)330 518 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i +(than)e(128.)154 653 y(56.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i +(bac)m(kground)e(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m +(h)f(statuses)h(after)330 762 y(the)k Ft(wait)e Fu(builtin)h(is)g(used) +g(to)h(obtain)g(it.)275 922 y(There)j(is)g(other)h Fm(posix)f +Fu(b)s(eha)m(vior)h(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y) +g(default)f(ev)m(en)i(when)d(in)150 1031 y Fm(posix)d +Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)199 1166 y(1.)61 +b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c +Fu(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h(if)f +Ft(FCEDIT)f Fu(is)h(unset,)330 1275 y(rather)g(than)g(defaulting)h +(directly)g(to)g Ft(ed)p Fu(.)40 b Ft(fc)30 b Fu(uses)g +Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)199 1410 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g -Ft(echo)f Fu(builtin)330 4289 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 -4448 y(Bash)c(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g +Ft(echo)f Fu(builtin)330 1519 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 +1679 y(Bash)c(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g(default,)h(b)m(y)f(sp)s -(ecifying)g(the)g Ft(--enable-)150 4558 y(strict-posix-default)c +(ecifying)g(the)g Ft(--enable-)150 1788 y(strict-posix-default)c Fu(to)27 b Ft(configure)e Fu(when)h(building)h(\(see)h(Section)g(10.8)g -([Optional)g(F)-8 b(eatures],)150 4667 y(page)31 b(140\).)p +([Optional)g(F)-8 b(eatures],)150 1898 y(page)31 b(144\).)p eop end -%%Page: 97 103 -TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2571 b(97)150 299 y Fp(7)80 b(Job)54 -b(Con)l(trol)150 521 y Fu(This)25 b(c)m(hapter)i(discusses)f(what)g -(job)f(con)m(trol)j(is,)f(ho)m(w)f(it)h(w)m(orks,)g(and)f(ho)m(w)g -(Bash)g(allo)m(ws)h(y)m(ou)g(to)g(access)150 631 y(its)k(facilities.) -150 858 y Fs(7.1)68 b(Job)45 b(Con)l(trol)h(Basics)150 -1018 y Fu(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 +%%Page: 100 106 +TeXDict begin 100 105 bop 3614 -116 a Fu(100)150 299 +y Fp(7)80 b(Job)54 b(Con)l(trol)150 518 y Fu(This)25 +b(c)m(hapter)i(discusses)f(what)g(job)f(con)m(trol)j(is,)f(ho)m(w)f(it) +h(w)m(orks,)g(and)f(ho)m(w)g(Bash)g(allo)m(ws)h(y)m(ou)g(to)g(access) +150 628 y(its)k(facilities.)150 863 y Fs(7.1)68 b(Job)45 +b(Con)l(trol)h(Basics)150 1022 y Fu(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 1132 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 +1241 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 +(terminal)f(driv)m(er)150 1351 y(and)k(Bash.)275 1482 y(The)23 b(shell)i(asso)s(ciates)h(a)f Fr(job)h Fu(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 +(executing)g(jobs,)150 1592 y(whic)m(h)33 b(ma)m(y)i(b)s(e)e(listed)h (with)f(the)h Ft(jobs)f Fu(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 Ft([1])47 -b(25647)150 1962 y Fu(indicating)34 b(that)g(this)f(job)g(is)g(job)g(n) +(job)g(async)m(hronously)-8 b(,)34 b(it)150 1701 y(prin)m(ts)c(a)h +(line)f(that)h(lo)s(oks)g(lik)m(e:)390 1833 y Ft([1])47 +b(25647)150 1965 y Fu(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 Fm(id)g -Fu(of)g(the)h(last)g(pro)s(cess)f(in)g(the)150 2072 y(pip)s(eline)42 +Fu(of)g(the)h(last)g(pro)s(cess)f(in)g(the)150 2074 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 +(are)150 2184 y(mem)m(b)s(ers)30 b(of)g(the)h(same)f(job.)41 b(Bash)30 b(uses)g(the)h Fr(job)h Fu(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 +(for)g(job)g(con)m(trol.)275 2315 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 +(trol,)j(the)d(op)s(erating)h(system)150 2425 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 Fm(id)p Fu(.)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 +2534 y(\(pro)s(cesses)h(whose)g(pro)s(cess)g(group)g Fm(id)g Fu(is)h(equal)g(to)g(the)f(curren)m(t)g(terminal)h(pro)s(cess)f -(group)f Fm(id)p Fu(\))i(receiv)m(e)150 2642 y(k)m(eyb)s +(group)f Fm(id)p Fu(\))i(receiv)m(e)150 2644 y(k)m(eyb)s (oard-generated)22 b(signals)g(suc)m(h)e(as)h Ft(SIGINT)p Fu(.)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) +h(foreground.)150 2754 y(Bac)m(kground)38 b(pro)s(cesses)f(are)h(those) g(whose)f(pro)s(cess)g(group)g Fm(id)h Fu(di\013ers)f(from)g(the)g -(terminal's;)42 b(suc)m(h)150 2861 y(pro)s(cesses)24 +(terminal's;)42 b(suc)m(h)150 2863 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 +2973 y(to)g(read)e(from)h(or,)h(if)f(the)g(user)f(so)i(sp)s(eci\014es)e (with)h Ft(stty)29 b(tostop)p Fu(,)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 +b(Bac)m(kground)150 3082 y(pro)s(cesses)27 b(whic)m(h)g(attempt)h(to)f (read)g(from)g(\(write)g(to)h(when)e Ft(stty)j(tostop)d -Fu(is)h(in)f(e\013ect\))j(the)e(terminal)150 3190 y(are)32 +Fu(is)h(in)f(e\013ect\))j(the)e(terminal)150 3192 y(are)32 b(sen)m(t)g(a)g Ft(SIGTTIN)e Fu(\()p Ft(SIGTTOU)p Fu(\))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 +(caugh)m(t,)150 3302 y(susp)s(ends)d(the)i(pro)s(cess.)275 +3433 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 +3543 y(facilities)30 b(to)f(use)f(it.)40 b(T)m(yping)28 b(the)g Fr(susp)s(end)h Fu(c)m(haracter)h(\(t)m(ypically)g(`)p Ft(^Z)p Fu(',)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 +3652 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 Fr(dela)m(y)m(ed)k(susp)s(end)f +b(T)m(yping)42 b(the)150 3762 y Fr(dela)m(y)m(ed)k(susp)s(end)f Fu(c)m(haracter)h(\(t)m(ypically)g(`)p Ft(^Y)p Fu(',)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 +3871 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 +b(The)150 3981 y(user)e(then)g(manipulates)h(the)g(state)h(of)f(this)f (job,)j(using)d(the)h Ft(bg)f Fu(command)g(to)h(con)m(tin)m(ue)h(it)f -(in)g(the)150 4089 y(bac)m(kground,)g(the)f Ft(fg)g Fu(command)f(to)i +(in)g(the)150 4091 y(bac)m(kground,)g(the)f Ft(fg)g Fu(command)f(to)i (con)m(tin)m(ue)g(it)f(in)f(the)h(foreground,)h(or)f(the)g -Ft(kill)f Fu(command)g(to)150 4199 y(kill)27 b(it.)40 +Ft(kill)f Fu(command)g(to)150 4200 y(kill)27 b(it.)40 b(A)27 b(`)p Ft(^Z)p Fu(')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 +h(p)s(ending)150 4310 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 Ft(\045)p Fu(')f(in)m(tro)s(duces)150 -4550 y(a)e(job)f(sp)s(eci\014cation)h(\()p Fr(jobsp)s(ec)6 +4551 y(a)e(job)f(sp)s(eci\014cation)h(\()p Fr(jobsp)s(ec)6 b Fu(\).)275 4682 y(Job)31 b(n)m(um)m(b)s(er)f Ft(n)h Fu(ma)m(y)h(b)s(e)f(referred)g(to)h(as)g(`)p Ft(\045n)p Fu('.)44 b(The)31 b(sym)m(b)s(ols)g(`)p Ft(\045\045)p @@ -15063,9 +15385,9 @@ h Ft(jobs)e Fu(command\),)k(the)d(curren)m(t)h(job)f(is)g(alw)m(a)m(ys) i(\015agged)f(with)f(a)h(`)p Ft(+)p Fu(',)i(and)d(the)150 5340 y(previous)30 b(job)g(with)g(a)h(`)p Ft(-)p Fu('.)p eop end -%%Page: 98 104 -TeXDict begin 98 103 bop 150 -116 a Fu(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 +%%Page: 101 107 +TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(101)275 299 y(A)38 b(job)g(ma)m(y)h(also)g (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 @@ -15075,77 +15397,77 @@ Fu(',)g(on)f(the)h(other)g(hand,)g(refers)f(to)h(an)m(y)g(job)g(con)m (taining)h(the)f(string)f(`)p Ft(ce)p Fu(')h(in)f(its)h(command)150 628 y(line.)41 b(If)30 b(the)h(pre\014x)e(or)h(substring)f(matc)m(hes)j (more)e(than)h(one)f(job,)h(Bash)f(rep)s(orts)g(an)g(error.)275 -762 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) +761 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) i(in)m(to)g(the)f(foreground:)41 b(`)p Ft(\0451)p Fu(')31 b(is)g(a)h(synon)m(ym)e(for)150 871 y(`)p Ft(fg)g(\0451)p Fu(',)i(bringing)f(job)g(1)g(from)g(the)h(bac)m(kground)f(in)m(to)i (the)e(foreground.)44 b(Similarly)-8 b(,)32 b(`)p Ft(\0451)e(&)p -Fu(')i(resumes)150 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 Ft(bg)f(\0451)p Fu(')275 1115 +Fu(')i(resumes)150 980 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5 +b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 1114 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 +150 1223 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)k(other)f(output.)40 +g(to)g(not)g(in)m(terrupt)150 1333 y(an)m(y)k(other)f(output.)40 b(If)28 b(the)g Ft(-b)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(is)g(enabled,)h(Bash)g(rep)s(orts)e(suc)m(h)h(c)m(hanges) 150 1443 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g -(Builtin],)i(page)f(58\).)40 b(An)m(y)24 b(trap)f(on)h -Ft(SIGCHLD)e Fu(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 +(Builtin],)i(page)f(60\).)40 b(An)m(y)24 b(trap)f(on)h +Ft(SIGCHLD)e Fu(is)i(executed)150 1552 y(for)30 b(eac)m(h)i(c)m(hild)e +(pro)s(cess)g(that)h(exits.)275 1686 y(If)25 b(an)h(attempt)h(to)g (exit)g(Bash)f(is)h(made)f(while)g(jobs)f(are)i(stopp)s(ed,)f(\(or)h -(running,)e(if)h(the)g Ft(checkjobs)150 1796 y Fu(option)e(is)f +(running,)e(if)h(the)g Ft(checkjobs)150 1795 y Fu(option)e(is)f (enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page) -e(62\),)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 Ft(checkjobs)e Fu(option)j(is)f +e(64\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 +1905 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f (enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39 -b(The)25 b Ft(jobs)150 2016 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f +b(The)25 b Ft(jobs)150 2014 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f (used)g(to)i(insp)s(ect)f(their)g(status.)59 b(If)36 -b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2125 +b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2124 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 Fs(7.2)68 -b(Job)45 b(Con)l(trol)h(Builtins)150 2650 y Ft(bg)870 -2784 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630 2918 y Fu(Resume)24 +2234 y(jobs)c(are)h(terminated.)150 2472 y Fs(7.2)68 +b(Job)45 b(Con)l(trol)h(Builtins)150 2656 y Ft(bg)870 +2789 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630 2923 y Fu(Resume)24 b(eac)m(h)h(susp)s(ended)d(job)i Fr(jobsp)s(ec)29 b Fu(in)24 b(the)g(bac)m(kground,)h(as)g(if)f(it)h(had)e(b)s(een)g(started)630 -3027 y(with)32 b(`)p Ft(&)p Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 +3032 y(with)32 b(`)p Ft(&)p Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 b Fu(is)32 b(not)g(supplied,)f(the)h(curren)m(t)g(job)f(is)h(used.)45 -b(The)31 b(return)g(status)630 3137 y(is)i(zero)g(unless)f(it)h(is)g +b(The)31 b(return)g(status)630 3142 y(is)i(zero)g(unless)f(it)h(is)g (run)e(when)h(job)g(con)m(trol)i(is)f(not)g(enabled,)h(or,)f(when)f -(run)f(with)h(job)630 3246 y(con)m(trol)h(enabled,)g(an)m(y)f +(run)f(with)h(job)630 3252 y(con)m(trol)h(enabled,)g(an)m(y)f Fr(jobsp)s(ec)37 b Fu(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h -(a)g(job)g(that)g(w)m(as)g(started)630 3356 y(without)e(job)g(con)m -(trol.)150 3514 y Ft(fg)870 3648 y(fg)47 b([)p Fj(jobspec)p -Ft(])630 3782 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 +(a)g(job)g(that)g(w)m(as)g(started)630 3361 y(without)e(job)g(con)m +(trol.)150 3519 y Ft(fg)870 3652 y(fg)47 b([)p Fj(jobspec)p +Ft(])630 3786 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 b Fu(in)43 b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f -(job.)78 b(If)630 3891 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h +(job.)78 b(If)630 3895 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h (the)f(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h -(is)h(that)g(of)630 4001 y(the)d(command)g(placed)h(in)m(to)g(the)f +(is)h(that)g(of)630 4005 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 +4114 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h (enabled,)h Fr(jobsp)s(ec)j Fu(do)s(es)35 b(not)h(sp)s(ecify)f(a)630 -4220 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b +4224 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b Fu(sp)s(eci\014es)30 b(a)h(job)f(that)h(w)m(as)g(started)g(without)f -(job)g(con)m(trol.)150 4378 y Ft(jobs)870 4512 y(jobs)47 -b([-lnprs])e([)p Fj(jobspec)p Ft(])870 4622 y(jobs)i(-x)g -Fj(command)f Ft([)p Fj(arguments)p Ft(])630 4756 y Fu(The)30 +(job)g(con)m(trol.)150 4381 y Ft(jobs)870 4515 y(jobs)47 +b([-lnprs])e([)p Fj(jobspec)p Ft(])870 4625 y(jobs)i(-x)g +Fj(command)f Ft([)p Fj(arguments)p Ft(])630 4758 y Fu(The)30 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 Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p +4916 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)630 -5072 y Ft(-n)384 b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e +5073 y Ft(-n)384 b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e (jobs)h(that)g(ha)m(v)m(e)i(c)m(hanged)e(status)h(since)1110 -5182 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f +5183 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f (status.)630 5340 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)p eop end -%%Page: 99 105 -TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2571 b(99)630 299 y Ft(-r)384 b -Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630 461 y Ft(-s)384 -b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630 622 -y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g +%%Page: 102 108 +TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(102)630 299 y Ft(-r)384 +b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630 461 y +Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630 +622 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g (restricted)h(to)g(information)f(ab)s(out)g(that)h(job.)37 b(If)23 b Fr(jobsp)s(ec)630 732 y Fu(is)30 b(not)h(supplied,)e(the)i (status)g(of)f(all)h(jobs)f(is)h(listed.)630 868 y(If)k(the)g @@ -15157,167 +15479,168 @@ Fu(,)630 1087 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f (its)g(exit)i(status.)150 1249 y Ft(kill)870 1384 y(kill)47 b([-s)g Fj(sigspec)p Ft(])e([-n)i Fj(signum)p Ft(])f([-)p Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 1494 -y Ft(kill)g(-l)g([)p Fj(exit_status)p Ft(])630 1630 y -Fu(Send)22 b(a)i(signal)g(sp)s(eci\014ed)f(b)m(y)g Fr(sigsp)s(ec)29 -b Fu(or)24 b Fr(sign)m(um)f Fu(to)h(the)g(pro)s(cess)f(named)g(b)m(y)g -(job)g(sp)s(eci\014-)630 1739 y(cation)k Fr(jobsp)s(ec)j -Fu(or)25 b(pro)s(cess)g Fm(id)h Fr(pid)p Fu(.)38 b Fr(sigsp)s(ec)31 -b Fu(is)25 b(either)h(a)g(case-insensitiv)m(e)i(signal)e(name)630 -1849 y(suc)m(h)37 b(as)g Ft(SIGINT)f Fu(\(with)h(or)g(without)g(the)g -Ft(SIG)g Fu(pre\014x\))f(or)h(a)h(signal)g(n)m(um)m(b)s(er;)h -Fr(sign)m(um)630 1958 y Fu(is)g(a)f(signal)i(n)m(um)m(b)s(er.)63 -b(If)39 b Fr(sigsp)s(ec)44 b Fu(and)38 b Fr(sign)m(um)g -Fu(are)h(not)g(presen)m(t,)h Ft(SIGTERM)d Fu(is)h(used.)630 -2068 y(The)27 b Ft(-l)h Fu(option)g(lists)h(the)f(signal)h(names.)39 -b(If)28 b(an)m(y)g(argumen)m(ts)h(are)f(supplied)f(when)g -Ft(-l)g Fu(is)630 2178 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f -(signals)g(corresp)s(onding)f(to)i(the)f(argumen)m(ts)g(are)h(listed,)g -(and)630 2287 y(the)c(return)f(status)h(is)g(zero.)41 -b Fr(exit)p 1796 2287 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s -(er)f(sp)s(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 -2397 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 Ft(wait)870 2913 y(wait)47 b([-n])f([)p Fj(jobspec)g -Ft(or)h Fj(pid)g Ft(...)o(])630 3049 y Fu(W)-8 b(ait)28 -b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s(eci\014ed)g(b)m(y)g -(eac)m(h)h(pro)s(cess)f Fm(id)h Fr(pid)i Fu(or)d(job)g(sp)s -(eci\014cation)630 3159 y Fr(jobsp)s(ec)j Fu(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)f(the)g Ft(-n)g Fu(option)h(is)f(supplied,)g +y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 1630 +y Fu(Send)22 b(a)i(signal)g(sp)s(eci\014ed)f(b)m(y)g +Fr(sigsp)s(ec)29 b Fu(or)24 b Fr(sign)m(um)f Fu(to)h(the)g(pro)s(cess)f +(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 1739 y(cation)k +Fr(jobsp)s(ec)j Fu(or)25 b(pro)s(cess)g Fm(id)h Fr(pid)p +Fu(.)38 b Fr(sigsp)s(ec)31 b Fu(is)25 b(either)h(a)g(case-insensitiv)m +(e)i(signal)e(name)630 1849 y(suc)m(h)37 b(as)g Ft(SIGINT)f +Fu(\(with)h(or)g(without)g(the)g Ft(SIG)g Fu(pre\014x\))f(or)h(a)h +(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 1958 y +Fu(is)g(a)f(signal)i(n)m(um)m(b)s(er.)63 b(If)39 b Fr(sigsp)s(ec)44 +b Fu(and)38 b Fr(sign)m(um)g Fu(are)h(not)g(presen)m(t,)h +Ft(SIGTERM)d Fu(is)h(used.)630 2068 y(The)27 b Ft(-l)h +Fu(option)g(lists)h(the)f(signal)h(names.)39 b(If)28 +b(an)m(y)g(argumen)m(ts)h(are)f(supplied)f(when)g Ft(-l)g +Fu(is)630 2178 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g +(corresp)s(onding)f(to)i(the)f(argumen)m(ts)g(are)h(listed,)g(and)630 +2287 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p +1796 2287 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s +(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2397 +y(the)h(exit)h(status)g(of)f(a)h(pro)s(cess)e(terminated)i(b)m(y)f(a)h +(signal.)40 b(The)28 b Ft(-L)g Fu(option)g(is)g(equiv)-5 +b(alen)m(t)630 2506 y(to)34 b Ft(-l)p Fu(.)47 b(The)32 +b(return)g(status)h(is)g(zero)g(if)g(at)g(least)h(one)f(signal)h(w)m +(as)f(successfully)g(sen)m(t,)h(or)630 2616 y(non-zero)d(if)f(an)h +(error)f(o)s(ccurs)g(or)g(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f +(encoun)m(tered.)150 2778 y Ft(wait)870 2913 y(wait)47 +b([-n])f([)p Fj(jobspec)g Ft(or)h Fj(pid)g Ft(...)o(])630 +3049 y Fu(W)-8 b(ait)28 b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s +(eci\014ed)g(b)m(y)g(eac)m(h)h(pro)s(cess)f Fm(id)h Fr(pid)i +Fu(or)d(job)g(sp)s(eci\014cation)630 3159 y Fr(jobsp)s(ec)j +Fu(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)f(the)g Ft(-n)g Fu(option)h(is)f(supplied,)g Ft(wait)f Fu(w)m(aits)i(for)f(an)m(y)h(job)f(to)h(terminate)g(and)f (returns)f(its)630 3597 y(exit)37 b(status.)56 b(If)36 b(neither)f Fr(jobsp)s(ec)41 b Fu(nor)35 b Fr(pid)j Fu(sp)s(eci\014es)d (an)h(activ)m(e)i(c)m(hild)e(pro)s(cess)f(of)h(the)630 3707 y(shell,)31 b(the)f(return)g(status)g(is)h(127.)150 3868 y Ft(disown)870 4004 y(disown)46 b([-ar])g([-h])h([)p -Fj(jobspec)f Ft(...)o(])630 4140 y Fu(Without)33 b(options,)h(remo)m(v) -m(e)g(eac)m(h)f Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g -(activ)m(e)h(jobs.)47 b(If)32 b(the)h Ft(-h)630 4249 -y Fu(option)j(is)f(giv)m(en,)i(the)f(job)f(is)g(not)g(remo)m(v)m(ed)h -(from)f(the)g(table,)j(but)c(is)i(mark)m(ed)f(so)g(that)630 -4359 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h(to)g(the)f(job)g(if)g(the)g -(shell)h(receiv)m(es)h(a)e Ft(SIGHUP)p Fu(.)54 b(If)34 -b Fr(jobsp)s(ec)40 b Fu(is)c(not)630 4468 y(presen)m(t,)41 -b(and)d(neither)h(the)g Ft(-a)f Fu(nor)g(the)h Ft(-r)f -Fu(option)h(is)g(supplied,)g(the)g(curren)m(t)g(job)f(is)630 -4578 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k Fu(is)c(supplied,)f(the)h -Ft(-a)f Fu(option)h(means)g(to)g(remo)m(v)m(e)h(or)e(mark)h(all)g -(jobs;)630 4688 y(the)31 b Ft(-r)e Fu(option)i(without)g(a)f -Fr(jobsp)s(ec)36 b Fu(argumen)m(t)30 b(restricts)h(op)s(eration)g(to)g -(running)e(jobs.)150 4849 y Ft(suspend)870 4985 y(suspend)46 -b([-f])630 5121 y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f -(shell)g(un)m(til)h(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f -Fu(signal.)50 b(A)33 b(login)630 5230 y(shell)28 b(cannot)g(b)s(e)f -(susp)s(ended;)g(the)g Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o) -m(v)m(erride)h(this)e(and)g(force)630 5340 y(the)k(susp)s(ension.)p -eop end -%%Page: 100 106 -TeXDict begin 100 105 bop 150 -116 a Fu(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 +Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 4140 +y Fu(Without)33 b(options,)h(remo)m(v)m(e)g(eac)m(h)f +Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m(e)h(jobs.)47 +b(If)32 b(the)h Ft(-h)630 4249 y Fu(option)j(is)f(giv)m(en,)i(the)f +(job)f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j(but)c(is)i +(mark)m(ed)f(so)g(that)630 4359 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h +(to)g(the)f(job)g(if)g(the)g(shell)h(receiv)m(es)h(a)e +Ft(SIGHUP)p Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40 b Fu(is)c(not)630 +4468 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f +Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g(curren)m(t)g +(job)f(is)630 4578 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k +Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g(to)g(remo)m(v)m +(e)h(or)e(mark)h(all)g(jobs;)630 4688 y(the)31 b Ft(-r)e +Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36 b Fu(argumen)m(t)30 +b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)150 +4849 y Ft(suspend)870 4985 y(suspend)46 b([-f])630 5121 +y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m(til)h +(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50 b(A)33 +b(login)630 5230 y(shell)28 b(cannot)g(b)s(e)f(susp)s(ended;)g(the)g +Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o)m(v)m(erride)h(this)e +(and)g(force)630 5340 y(the)k(susp)s(ension.)p eop end +%%Page: 103 109 +TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(7:)41 +b(Job)30 b(Con)m(trol)2526 b(103)275 299 y(When)30 b(job)f(con)m(trol)j (is)e(not)h(activ)m(e,)i(the)d Ft(kill)f Fu(and)h Ft(wait)f Fu(builtins)g(do)h(not)h(accept)h Fr(jobsp)s(ec)j Fu(argu-)150 408 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess) -h Fm(id)p Fu(s.)150 641 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 -b(ariables)150 825 y Ft(auto_resume)630 935 y Fu(This)31 +h Fm(id)p Fu(s.)150 649 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 +b(ariables)150 834 y Ft(auto_resume)630 943 y Fu(This)31 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 +b(If)630 1053 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 +1162 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 +1272 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.) +1381 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 +1491 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 Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f +b(alue)630 1601 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f (m)m(ust)h(matc)m(h)g(the)h(name)f(of)g(a)g(stopp)s(ed)f(job)h -(exactly;)j(if)630 1702 y(set)29 b(to)h(`)p Ft(substring)p +(exactly;)j(if)630 1710 y(set)29 b(to)h(`)p Ft(substring)p Fu(',)d(the)i(string)g(supplied)e(needs)i(to)g(matc)m(h)h(a)f -(substring)f(of)h(the)g(name)630 1812 y(of)38 b(a)f(stopp)s(ed)g(job.) +(substring)f(of)h(the)g(name)630 1820 y(of)38 b(a)f(stopp)s(ed)g(job.) 62 b(The)37 b(`)p Ft(substring)p Fu(')e(v)-5 b(alue)38 b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630 -1921 y(the)f(`)p Ft(\045?)p Fu(')f(job)h Fm(id)f Fu(\(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 -Ft(\045)p Fu(')f(job)g Fm(id)p Fu(.)p eop end -%%Page: 101 107 -TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(101)150 299 y Fp(8)80 -b(Command)54 b(Line)f(Editing)150 640 y Fu(This)28 b(c)m(hapter)i -(describ)s(es)e(the)h(basic)g(features)h(of)f(the)g Fm(gnu)f -Fu(command)h(line)g(editing)h(in)m(terface.)42 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)h(shell,)d(unless)g(the)g -Ft(--noediting)d Fu(option)k(is)f(supplied)e(at)j(shell)f(in)m(v)m(o)s -(cation.)45 b(Line)31 b(editing)150 1078 y(is)g(also)h(used)f(when)f -(using)h(the)g Ft(-e)g Fu(option)h(to)g(the)f Ft(read)f -Fu(builtin)h(command)g(\(see)h(Section)g(4.2)h([Bash)150 -1188 y(Builtins],)j(page)f(48\).)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)h(the)g Ft(-o)30 b(emacs)35 -b Fu(or)h Ft(-o)30 b(vi)35 b Fu(options)i(to)g(the)f -Ft(set)f Fu(builtin)h(command)g(\(see)h(Section)g(4.3.1)h([The)150 -1517 y(Set)31 b(Builtin],)g(page)g(58\),)h(or)e(disabled)g(using)g(the) -h Ft(+o)e(emacs)g Fu(or)i Ft(+o)e(vi)h Fu(options)h(to)g -Ft(set)p Fu(.)150 1802 y Fs(8.1)68 b(In)l(tro)t(duction)45 -b(to)g(Line)h(Editing)150 1962 y Fu(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 Fj(C-k)f Fu(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 Ft(k)150 2242 y Fu(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 Fj(M-k)e Fu(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 Ft(k)g Fu(k)m(ey)h(is)f(pressed.)48 -b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s(eled)f Ft(ALT)150 -2631 y Fu(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 +1929 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g +(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(100\).)56 +b(If)34 b(set)i(to)g(an)m(y)630 2039 y(other)c(v)-5 b(alue,)32 +b(the)g(supplied)e(string)i(m)m(ust)f(b)s(e)g(a)h(pre\014x)f(of)h(a)g +(stopp)s(ed)e(job's)i(name;)g(this)630 2149 y(pro)m(vides)e +(functionalit)m(y)i(analogous)g(to)f(the)g(`)p Ft(\045)p +Fu(')f(job)g Fm(id)p Fu(.)p eop end +%%Page: 104 110 +TeXDict begin 104 109 bop 3614 -116 a Fu(104)150 299 +y Fp(8)80 b(Command)54 b(Line)f(Editing)150 635 y Fu(This)28 +b(c)m(hapter)i(describ)s(es)e(the)h(basic)g(features)h(of)f(the)g +Fm(gnu)f Fu(command)h(line)g(editing)h(in)m(terface.)42 +b(Com-)150 745 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 855 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 964 y(teractiv)m(e)h(shell,)d +(unless)g(the)g Ft(--noediting)d Fu(option)k(is)f(supplied)e(at)j +(shell)f(in)m(v)m(o)s(cation.)45 b(Line)31 b(editing)150 +1074 y(is)g(also)h(used)f(when)f(using)h(the)g Ft(-e)g +Fu(option)h(to)g(the)f Ft(read)f Fu(builtin)h(command)g(\(see)h +(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(49\).)52 +b(By)35 b(default,)g(the)f(line)h(editing)f(commands)g(are)h(similar)f +(to)h(those)f(of)g(Emacs.)150 1293 y(A)h(vi-st)m(yle)h(line)f(editing)g +(in)m(terface)h(is)e(also)i(a)m(v)-5 b(ailable.)55 b(Line)34 +b(editing)h(can)g(b)s(e)f(enabled)g(at)h(an)m(y)g(time)150 +1402 y(using)h(the)g Ft(-o)30 b(emacs)35 b Fu(or)h Ft(-o)30 +b(vi)35 b Fu(options)i(to)g(the)f Ft(set)f Fu(builtin)h(command)g +(\(see)h(Section)g(4.3.1)h([The)150 1512 y(Set)31 b(Builtin],)g(page)g +(60\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g +Fu(or)i Ft(+o)e(vi)h Fu(options)h(to)g Ft(set)p Fu(.)150 +1804 y Fs(8.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150 +1963 y Fu(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h +(notation)g(used)f(to)h(represen)m(t)f(k)m(eystrok)m(es.)275 +2132 y(The)35 b(text)i Fj(C-k)f Fu(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 +Ft(k)150 2242 y Fu(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 2410 y(The)g(text)i Fj(M-k)e +Fu(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 2520 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 Ft(k)g +Fu(k)m(ey)h(is)f(pressed.)48 b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s +(eled)f Ft(ALT)150 2629 y Fu(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 Ft(ALT)e Fu(\(usually)i(to)g(either)g(side)g(of)g(the)150 -2740 y(space)h(bar\),)f(the)g Ft(ALT)f Fu(on)h(the)g(left)h(side)f(is)g +2739 y(space)h(bar\),)f(the)g Ft(ALT)f Fu(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 Ft(ALT)g Fu(k)m(ey)i(on)150 2850 y(the)c(righ)m(t)h +b(.)42 b(The)29 b Ft(ALT)g Fu(k)m(ey)i(on)150 2849 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 +2958 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 3127 y(If)23 b(y)m(ou)i(do)f(not)h(ha)m(v)m(e)h(a)f(Meta)g(or)g Ft(ALT)e Fu(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 +(Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 3236 y(k)m(eystrok)m(e)30 b(can)f(b)s(e)f(generated)h(b)m(y)g(t)m(yping)g Ft(ESC)e Fl(\014rst)p Fu(,)j(and)e(then)g(t)m(yping)h Ft(k)p Fu(.)40 b(Either)28 b(pro)s(cess)g(is)g(kno)m(wn)150 -3349 y(as)j Fr(metafying)39 b Fu(the)30 b Ft(k)g Fu(k)m(ey)-8 -b(.)275 3519 y(The)39 b(text)j Fj(M-C-k)d Fu(is)h(read)g(as)h +3346 y(as)j Fr(metafying)39 b Fu(the)30 b Ft(k)g Fu(k)m(ey)-8 +b(.)275 3515 y(The)39 b(text)j Fj(M-C-k)d Fu(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 Fr(metafying)g Fj(C-k)p -Fu(.)275 3799 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g +(pro)s(duced)d(b)m(y)150 3624 y Fr(metafying)g Fj(C-k)p +Fu(.)275 3793 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 Ft(DEL)p Fu(,)f Ft(ESC)p Fu(,)g Ft(LFD)p Fu(,)g Ft(SPC)p -Fu(,)g Ft(RET)p Fu(,)150 3908 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g +Fu(,)g Ft(RET)p Fu(,)150 3902 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g (themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init) -h(\014le)f(\(see)i(Section)f(8.3)150 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 +h(\014le)f(\(see)i(Section)f(8.3)150 4012 y([Readline)f(Init)g(File],)i +(page)e(107\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g Ft(LFD)f Fu(k)m(ey)-8 b(,)36 b(t)m(yping)e Ft(C-j)e Fu(will)i(pro)s -(duce)150 4128 y(the)d(desired)e(c)m(haracter.)43 b(The)30 +(duce)150 4122 y(the)d(desired)e(c)m(haracter.)43 b(The)30 b Ft(RET)f Fu(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h Ft(Return)d Fu(or)j Ft(Enter)d Fu(on)j(some)g(k)m(eyb)s(oards.)150 4413 y Fs(8.2)68 b(Readline)47 b(In)l(teraction)150 4573 @@ -15339,9 +15662,9 @@ Ft(RET)p Fu(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e Ft(RET)p Fu(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g (of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 5340 y(within)c(the)g(line.)p eop end -%%Page: 102 108 -TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(102)150 299 y Fk(8.2.1)63 +%%Page: 105 111 +TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(105)150 299 y Fk(8.2.1)63 b(Readline)40 b(Bare)h(Essen)m(tials)150 446 y Fu(In)31 b(order)h(to)h(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)g (simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i @@ -15408,9 +15731,9 @@ b Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 5340 y(w)m(ords.)p eop end -%%Page: 103 109 -TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(103)150 299 y Fk(8.2.3)63 +%%Page: 106 112 +TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(106)150 299 y Fk(8.2.3)63 b(Readline)40 b(Killing)i(Commands)150 446 y Fr(Killing)35 b Fu(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i (but)e(to)h(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f @@ -15484,13 +15807,13 @@ b(on)e(the)h(input)e(line.)150 4974 y Fk(8.2.5)63 b(Searc)m(hing)40 b(for)i(Commands)g(in)f(the)g(History)150 5121 y Fu(Readline)35 b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)e(the)i (command)f(history)g(\(see)h(Section)g(9.1)150 5230 y([Bash)i(History)h -(F)-8 b(acilities],)42 b(page)37 b(133\))i(for)d(lines)h(con)m(taining) +(F)-8 b(acilities],)42 b(page)37 b(137\))i(for)d(lines)h(con)m(taining) i(a)e(sp)s(eci\014ed)f(string.)60 b(There)36 b(are)i(t)m(w)m(o)150 5340 y(searc)m(h)31 b(mo)s(des:)40 b Fr(incremen)m(tal)35 b Fu(and)30 b Fr(non-incremen)m(tal)p Fu(.)p eop end -%%Page: 104 110 -TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(104)275 299 y(Incremen)m(tal)26 +%%Page: 107 113 +TeXDict begin 107 112 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(107)275 299 y(Incremen)m(tal)26 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 @@ -15513,557 +15836,638 @@ Fu(c)m(haracters)i(will)150 1066 y(terminate)h(an)g(incremen)m(tal)g (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 +1285 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 1414 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 Fj(C-r)e Fu(or)h Fj(C-s)f -Fu(as)h(appropriate.)43 b(This)150 1537 y(will)26 b(searc)m(h)h(bac)m +Fu(as)h(appropriate.)43 b(This)150 1524 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 +1633 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 +(the)150 1743 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 Ft(RET)f Fu(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 +(searc)m(h)g(and)e(accept)150 1852 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 +b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 1962 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 +2091 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 Fj(C-r)p -Fu(s)c(are)i(t)m(yp)s(ed)g(without)150 2228 y(an)m(y)i(in)m(terv)m +Fu(s)c(are)i(t)m(yp)s(ed)g(without)150 2200 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 +2310 y(used.)275 2439 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 +(searc)m(h)f(for)150 2548 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 Fs(8.3)68 -b(Readline)47 b(Init)e(File)150 3104 y Fu(Although)f(the)g(Readline)g +(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 2658 y(con)m(ten)m(ts)32 +b(of)f(the)f(curren)m(t)g(line.)150 2887 y Fs(8.3)68 +b(Readline)47 b(Init)e(File)150 3046 y Fu(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 +(eybindings)f(installed)g(b)m(y)150 3156 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) +3266 y(that)45 b(use)f(Readline)h(b)m(y)f(putting)g(commands)g(in)g(an) g Fr(inputrc)49 b Fu(\014le,)g(con)m(v)m(en)m(tionally)e(in)d(his)g -(home)150 3433 y(directory)-8 b(.)59 b(The)35 b(name)i(of)f(this)g +(home)150 3375 y(directory)-8 b(.)59 b(The)35 b(name)i(of)f(this)g (\014le)g(is)g(tak)m(en)h(from)f(the)g(v)-5 b(alue)37 b(of)f(the)g(shell)h(v)-5 b(ariable)36 b Ft(INPUTRC)p -Fu(.)56 b(If)150 3542 y(that)36 b(v)-5 b(ariable)36 b(is)f(unset,)h +Fu(.)56 b(If)150 3485 y(that)36 b(v)-5 b(ariable)36 b(is)f(unset,)h (the)f(default)h(is)f Ft(~/.inputrc)p Fu(.)52 b(If)35 b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h(b)s(e)150 -3652 y(read,)31 b(the)f(ultimate)i(default)e(is)h Ft(/etc/inputrc)p -Fu(.)275 3794 y(When)e(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline)g +3594 y(read,)31 b(the)f(ultimate)i(default)e(is)h Ft(/etc/inputrc)p +Fu(.)275 3723 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 +150 3833 y(k)m(ey)i(bindings)e(are)i(set.)275 3961 y(In)26 b(addition,)i(the)f Ft(C-x)i(C-r)d Fu(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 Fk(8.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150 -4511 y Fu(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w) +4071 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g(it.)150 +4259 y Fk(8.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150 +4406 y Fu(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 +b(lines)h(are)150 4515 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h (a)g(`)p Ft(#)p Fu(')g(are)h(commen)m(ts.)73 b(Lines)41 b(b)s(eginning)f(with)g(a)i(`)p Ft($)p Fu(')f(indicate)150 -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 +4625 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g +([Conditional)g(Init)e(Constructs],)j(page)e(115\).)64 +b(Other)150 4735 y(lines)31 b(denote)g(v)-5 b(ariable)31 +b(settings)g(and)f(k)m(ey)h(bindings.)150 4882 y(V)-8 +b(ariable)32 b(Settings)630 4992 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e (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 +(the)g(v)-5 b(alues)41 b(of)630 5102 y(v)-5 b(ariables)34 b(in)f(Readline)i(using)e(the)g Ft(set)g Fu(command)g(within)g(the)h -(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5340 y(is)d(simple:)p -eop end -%%Page: 105 111 -TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(105)870 299 y Ft(set)47 -b Fj(variable)e(value)630 436 y Fu(Here,)29 b(for)e(example,)h(is)g(ho) -m(w)f(to)h(c)m(hange)g(from)f(the)g(default)h(Emacs-lik)m(e)h(k)m(ey)f -(binding)e(to)630 545 y(use)k Ft(vi)g Fu(line)h(editing)g(commands:)870 -682 y Ft(set)47 b(editing-mode)d(vi)630 819 y Fu(V)-8 -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 Fr(on)d Fu(\(case-insensitiv)m(e\),)29 b(or)24 -b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) --5 b(ariable)630 1285 y(b)s(eing)30 b(set)h(to)g(o\013.)630 -1422 y(The)37 b Ft(bind)30 b(-V)37 b Fu(command)g(lists)i(the)f(curren) -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(48.)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 Ft(bell-style)1110 1943 y Fu(Con)m(trols)44 -b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m(ts)f(to)h(ring)e(the)h -(termi-)1110 2052 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p -Ft(none)p Fu(',)g(Readline)g(nev)m(er)g(rings)e(the)i(b)s(ell.)61 -b(If)36 b(set)i(to)1110 2162 y(`)p Ft(visible)p Fu(',)32 -b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g(one)g(is)g(a)m(v)-5 -b(ailable.)51 b(If)33 b(set)g(to)1110 2271 y(`)p Ft(audible)p -Fu(')j(\(the)i(default\),)i(Readline)e(attempts)g(to)h(ring)e(the)g -(terminal's)1110 2381 y(b)s(ell.)630 2545 y Ft(bind-tty-special-chars) -1110 2655 y Fu(If)45 b(set)h(to)f(`)p Ft(on)p Fu(',)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 Ft(colored-stats)1110 -3148 y Fu(If)26 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(displa)m -(ys)g(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 -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 Ft(LS_COLORS)d -Fu(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110 -3477 y(is)30 b(`)p Ft(off)p Fu('.)630 3641 y Ft(comment-begin)1110 -3751 y Fu(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) -h(the)h(line)f(when)g(the)1110 3861 y Ft(insert-comment)26 -b Fu(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)f Ft("#")p Fu(.)630 4025 y Ft(completion-display-width) -1110 4134 y Fu(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) -g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 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 Ft(completion-ignore-case)1110 4737 y Fu(If)d(set)h(to)g(`)p -Ft(on)p Fu(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i -(and)e(completion)1110 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 Ft(off)p -Fu('.)630 5011 y Ft(completion-map-case)1110 5121 y Fu(If)22 -b(set)g(to)h(`)p Ft(on)p Fu(',)h(and)e Fr(completion-ignore-case)31 -b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 5230 y(h)m(yphens)29 -b(\(`)p Ft(-)p Fu('\))j(and)e(underscores)g(\(`)p Ft(_)p -Fu('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110 -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 Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(106)630 299 y Ft -(completion-prefix-displa)o(y-le)o(ngth)1110 408 y Fu(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 Ft(completion-query-items)1110 -1011 y Fu(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h -(that)g(determines)f(when)f(the)i(user)1110 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 -Ft(100)p Fu(.)630 1833 y Ft(convert-meta)1110 1943 y -Fu(If)22 b(set)g(to)h(`)p Ft(on)p Fu(',)h(Readline)f(will)f(con)m(v)m -(ert)i(c)m(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110 -2052 y(to)33 b(an)e Fm(asci)r(i)h Fu(k)m(ey)h(sequence)f(b)m(y)g -(stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110 -2162 y(an)24 b Ft(ESC)g Fu(c)m(haracter,)j(con)m(v)m(erting)f(them)f -(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 2271 -y(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(on)p -Fu('.)630 2436 y Ft(disable-completion)1110 2545 y Fu(If)36 -b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h -(completion.)60 b(Completion)1110 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 Ft(self-insert)p -Fu(.)38 b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 -2929 y Ft(editing-mode)1110 3039 y Fu(The)d Ft(editing-mode)e -Fu(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k) -m(ey)i(bind-)1110 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 Ft(emacs)p Fu(')e(or)h(`)p -Ft(vi)p Fu('.)630 3532 y Ft(echo-control-characters)1110 -3641 y Fu(When)g(set)h(to)g(`)p Ft(on)p Fu(',)f(on)g(op)s(erating)h -(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 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 Ft(on)p Fu('.)630 4025 -y Ft(enable-keypad)1110 4134 y Fu(When)23 b(set)h(to)g(`)p -Ft(on)p Fu(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f -(application)i(k)m(eypad)1110 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 Ft(off)p Fu('.)630 -4518 y Ft(enable-meta-key)1110 4628 y Fu(When)40 b(set)g(to)g(`)p -Ft(on)p Fu(',)j(Readline)d(will)g(try)g(to)g(enable)g(an)m(y)g(meta)h -(mo)s(di\014er)1110 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 Ft(on)p Fu('.)630 5121 y Ft(expand-tilde)1110 -5230 y Fu(If)d(set)h(to)h(`)p Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f -(p)s(erformed)f(when)h(Readline)h(attempts)1110 5340 -y(w)m(ord)i(completion.)42 b(The)30 b(default)g(is)h(`)p -Ft(off)p Fu('.)p eop end -%%Page: 107 113 -TeXDict begin 107 112 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(107)630 299 y Ft -(history-preserve-point)1110 408 y Fu(If)41 b(set)h(to)h(`)p -Ft(on)p Fu(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f -(p)s(oin)m(t)f(\(the)1110 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 Ft(previous-history)c Fu(or)37 -b Ft(next-history)p Fu(.)55 b(The)36 b(default)1110 737 -y(is)30 b(`)p Ft(off)p Fu('.)630 902 y Ft(history-size)1110 -1011 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g -(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 1121 -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 1230 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 -1340 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 -1450 y(en)m(tries)g(is)g(not)f(limited.)630 1614 y Ft -(horizontal-scroll-mode)1110 1724 y Fu(This)35 b(v)-5 -b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f(`)p -Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36 -b(it)g(to)h(`)p Ft(on)p Fu(')1110 1833 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 1943 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 2052 -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 2162 y(v)-5 -b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630 -2326 y Ft(input-meta)1110 2436 y Fu(If)f(set)g(to)h(`)p -Ft(on)p Fu(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it) -i(will)f(not)h(clear)1110 2545 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 -2655 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 Ft(off)p -Fu('.)69 b(The)1110 2765 y(name)30 b Ft(meta-flag)e Fu(is)j(a)f(synon)m -(ym)g(for)g(this)h(v)-5 b(ariable.)630 2929 y Ft(isearch-terminators) -1110 3039 y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e -(terminate)j(an)f(incremen)m(tal)1110 3148 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 3258 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 3367 y(b)s(een)e(giv)m(en)h(a)g(v)-5 -b(alue,)37 b(the)f(c)m(haracters)h Ft(ESC)d Fu(and)h -Fj(C-J)g Fu(will)h(terminate)g(an)1110 3477 y(incremen)m(tal)c(searc)m -(h.)630 3641 y Ft(keymap)192 b Fu(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 -3751 y(mands.)81 b(Acceptable)47 b Ft(keymap)42 b Fu(names)i(are)h -Ft(emacs)p Fu(,)i Ft(emacs-standard)p Fu(,)1110 3861 -y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p Fu(,)f Ft(vi)p -Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p Fu(,)f(and)1110 -3970 y Ft(vi-insert)p Fu(.)64 b Ft(vi)38 b Fu(is)h(equiv)-5 -b(alen)m(t)41 b(to)e Ft(vi-command)p Fu(;)i Ft(emacs)c -Fu(is)i(equiv)-5 b(alen)m(t)1110 4080 y(to)33 b Ft(emacs-standard)p -Fu(.)41 b(The)31 b(default)h(v)-5 b(alue)32 b(is)g Ft(emacs)p -Fu(.)44 b(The)31 b(v)-5 b(alue)33 b(of)f(the)1110 4189 -y Ft(editing-mode)27 b Fu(v)-5 b(ariable)31 b(also)h(a\013ects)f(the)g -(default)f(k)m(eymap.)630 4354 y Ft(keyseq-timeout)1110 -4463 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m -(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 4573 -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 4682 y(sequence)j(using)e(the)i -(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input) -1110 4792 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 -b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110 -4902 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) -g(but)f(complete)j(k)m(ey)e(se-)1110 5011 y(quence.)c(Readline)26 -b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h -(input)1110 5121 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m -(t)f(input)g(source)h(\()p Ft(rl_instream)d Fu(b)m(y)i(default\).)1110 -5230 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 5340 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)p eop end +(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5211 y(is)d(simple:)870 +5340 y Ft(set)47 b Fj(variable)e(value)p eop end %%Page: 108 114 TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(108)1110 299 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 408 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 518 y(sequence)i(to)g(complete.)42 -b(The)30 b(default)g(v)-5 b(alue)31 b(is)g Ft(500)p Fu(.)630 -701 y Ft(mark-directories)1110 810 y Fu(If)38 b(set)g(to)h(`)p -Ft(on)p Fu(',)i(completed)e(directory)f(names)g(ha)m(v)m(e)i(a)e(slash) -g(app)s(ended.)1110 920 y(The)30 b(default)g(is)h(`)p -Ft(on)p Fu('.)630 1103 y Ft(mark-modified-lines)1110 -1212 y Fu(This)k(v)-5 b(ariable,)38 b(when)d(set)h(to)h(`)p -Ft(on)p Fu(',)g(causes)g(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 -1322 y(terisk)f(\(`)p Ft(*)p Fu('\))h(at)f(the)g(start)g(of)g(history)g -(lines)g(whic)m(h)f(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 -1431 y(This)d(v)-5 b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g -(default.)630 1614 y Ft(mark-symlinked-directori)o(es)1110 -1724 y Fu(If)59 b(set)h(to)g(`)p Ft(on)p Fu(',)67 b(completed)60 -b(names)f(whic)m(h)g(are)h(sym)m(b)s(olic)g(links)f(to)1110 -1833 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 -b(ject)70 b(to)g(the)g(v)-5 b(alue)70 b(of)1110 1943 -y Ft(mark-directories)p Fu(\).)37 b(The)30 b(default)g(is)g(`)p -Ft(off)p Fu('.)630 2125 y Ft(match-hidden-files)1110 -2235 y Fu(This)21 b(v)-5 b(ariable,)25 b(when)d(set)g(to)h(`)p -Ft(on)p Fu(',)h(causes)f(Readline)g(to)g(matc)m(h)g(\014les)f(whose) -1110 2345 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p -Fu(')g(\(hidden)f(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 -2454 y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p -Fu(',)i(the)e(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f -(b)m(y)1110 2564 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f -(completed.)53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p -Ft(on)p Fu(')g(b)m(y)1110 2673 y(default.)630 2856 y -Ft(menu-complete-display-pr)o(efix)1110 2966 y Fu(If)f(set)h(to)g(`)p -Ft(on)p Fu(',)h(men)m(u)e(completion)i(displa)m(ys)e(the)h(common)g -(pre\014x)e(of)i(the)1110 3075 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 -3185 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p -Ft(off)p Fu('.)630 3367 y Ft(output-meta)1110 3477 y -Fu(If)35 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y) -f(c)m(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 3587 -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 3696 y(default)31 b(is)f(`)p -Ft(off)p Fu('.)630 3879 y Ft(page-completions)1110 3988 -y Fu(If)j(set)i(to)f(`)p Ft(on)p Fu(',)h(Readline)g(uses)e(an)h(in)m -(ternal)h Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 -4098 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) -47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p Fu(')1110 -4208 y(b)m(y)e(default.)630 4390 y Ft(print-completions-horizo)o(ntal)o -(ly)1110 4500 y Fu(If)23 b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g -(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110 -4609 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 4719 y(The)30 b(default)g(is)h(`)p -Ft(off)p Fu('.)630 4902 y Ft(revert-all-at-newline)1110 -5011 y Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f -(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 -5121 y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41 -b(By)29 b(default,)g(history)g(lines)1110 5230 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 5340 y Ft(readline)p Fu(.)38 -b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)p eop end +b(Command)29 b(Line)i(Editing)2062 b(108)630 299 y(Here,)29 +b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default) +h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 408 y(use)k +Ft(vi)g Fu(line)h(editing)g(commands:)870 541 y Ft(set)47 +b(editing-mode)d(vi)630 674 y Fu(V)-8 b(ariable)36 b(names)f(and)g(v)-5 +b(alues,)36 b(where)f(appropriate,)h(are)g(recognized)g(without)f +(regard)630 783 y(to)c(case.)42 b(Unrecognized)31 b(v)-5 +b(ariable)31 b(names)g(are)f(ignored.)630 916 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 1026 y(n)m(ull)e(or)g(empt)m(y)-8 +b(,)27 b Fr(on)d Fu(\(case-insensitiv)m(e\),)29 b(or)24 +b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) +-5 b(ariable)630 1135 y(b)s(eing)30 b(set)h(to)g(o\013.)630 +1268 y(The)37 b Ft(bind)30 b(-V)37 b Fu(command)g(lists)i(the)f(curren) +m(t)f(Readline)i(v)-5 b(ariable)38 b(names)g(and)f(v)-5 +b(alues.)630 1377 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page) +g(49.)630 1510 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g +(is)g(c)m(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 +b(ariables.)630 1666 y Ft(bell-style)1110 1775 y Fu(Con)m(trols)44 +b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m(ts)f(to)h(ring)e(the)h +(termi-)1110 1885 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p +Ft(none)p Fu(',)g(Readline)g(nev)m(er)g(rings)e(the)i(b)s(ell.)61 +b(If)36 b(set)i(to)1110 1995 y(`)p Ft(visible)p Fu(',)32 +b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g(one)g(is)g(a)m(v)-5 +b(ailable.)51 b(If)33 b(set)g(to)1110 2104 y(`)p Ft(audible)p +Fu(')j(\(the)i(default\),)i(Readline)e(attempts)g(to)h(ring)e(the)g +(terminal's)1110 2214 y(b)s(ell.)630 2370 y Ft(bind-tty-special-chars) +1110 2479 y Fu(If)e(set)g(to)h(`)p Ft(on)p Fu(')f(\(the)g(default\),)i +(Readline)f(attempts)g(to)g(bind)d(the)i(con)m(trol)1110 +2589 y(c)m(haracters)30 b(treated)g(sp)s(ecially)g(b)m(y)f(the)g(k)m +(ernel's)h(terminal)f(driv)m(er)g(to)h(their)1110 2698 +y(Readline)h(equiv)-5 b(alen)m(ts.)630 2854 y Ft(blink-matching-paren) +1110 2964 y Fu(If)36 b(set)g(to)h(`)p Ft(on)p Fu(',)h(Readline)f +(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j(the)f(cursor)e(to)i(an)1110 +3073 y(op)s(ening)k(paren)m(thesis)h(when)f(a)h(closing)h(paren)m +(thesis)e(is)h(inserted.)74 b(The)1110 3183 y(default)31 +b(is)f(`)p Ft(off)p Fu('.)630 3339 y Ft(colored-completion-prefi)o(x) +1110 3448 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)g(when)e(listing)i +(completions,)h(Readline)f(displa)m(ys)g(the)f(com-)1110 +3558 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s(ossible)f +(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110 +3667 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g +(v)-5 b(alue)40 b(of)g(the)g Ft(LS_COLORS)1110 3777 y +Fu(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30 +b(default)h(is)f(`)p Ft(off)p Fu('.)630 3933 y Ft(colored-stats)1110 +4042 y Fu(If)c(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(displa)m(ys)g +(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 +4152 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 +4261 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Ft(LS_COLORS)d +Fu(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110 +4371 y(is)30 b(`)p Ft(off)p Fu('.)630 4527 y Ft(comment-begin)1110 +4636 y Fu(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of) +h(the)h(line)f(when)g(the)1110 4746 y Ft(insert-comment)26 +b Fu(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5 +b(alue)31 b(is)f Ft("#")p Fu(.)630 4902 y Ft(completion-display-width) +1110 5011 y Fu(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) +g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 5121 +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 +5230 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 +5340 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e +(line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)p +eop end %%Page: 109 115 TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(8:)41 b(Command)29 b(Line)i(Editing)2062 b(109)630 299 y Ft -(show-all-if-ambiguous)1110 408 y Fu(This)29 b(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 518 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h)g -(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause)1110 -628 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 737 y(The)30 -b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p Fu('.)630 -920 y Ft(show-all-if-unmodified)1110 1029 y Fu(This)38 -b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h -(functions)e(in)h(a)1110 1139 y(fashion)25 b(similar)h(to)g -Fr(sho)m(w-all-if-am)m(biguous)p Fu(.)41 b(If)25 b(set)h(to)h(`)p -Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 1249 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 1358 y(tial)43 b(completion)h(\(the)f(p)s(ossible) -f(completions)h(don't)f(share)g(a)h(common)1110 1468 -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 1577 y(ing)g(the)f(b)s(ell.)41 -b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Ft(off)p -Fu('.)630 1760 y Ft(show-mode-in-prompt)1110 1870 y Fu(If)35 -b(set)i(to)f(`)p Ft(on)p Fu(',)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 1979 y(dicating)43 -b(the)f(editing)h(mo)s(de:)63 b(emacs)43 b(\(`)p Ft(@)p -Fu('\),)i(vi)d(command)g(\(`)p Ft(:)p Fu('\),)k(or)c(vi)1110 -2089 y(insertion)30 b(\(`)p Ft(+)p Fu('\).)42 b(The)30 -b(default)h(v)-5 b(alue)30 b(is)h(`)p Ft(off)p Fu('.)630 -2271 y Ft(skip-completed-text)1110 2381 y Fu(If)h(set)i(to)f(`)p -Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s(eha)m -(vior)f(when)f(in-)1110 2491 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 2600 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 -2710 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 2819 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 2929 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 -3039 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g -(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 3148 y(`)p Ft(Makefile)p -Fu(')c(will)i(result)f(in)g(`)p Ft(Makefile)p Fu(')f(rather)h(than)h(`) -p Ft(Makefilefile)p Fu(',)1110 3258 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 3367 y(is)30 b(`)p Ft(off)p Fu('.)630 3550 -y Ft(visible-stats)1110 3660 y Fu(If)h(set)i(to)f(`)p -Ft(on)p Fu(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s -(e)g(is)g(app)s(ended)e(to)j(the)1110 3769 y(\014lename)e(when)e -(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p -Ft(off)p Fu('.)150 3952 y(Key)f(Bindings)630 4061 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 -4171 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 -4281 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 -4390 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h -(do)s(es.)630 4536 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 -4646 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 -4756 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 4865 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 4975 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 5084 y(comfortable.)630 -5230 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 -5340 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g -(\(a)h Fr(macro)5 b Fu(\).)p eop end +(completion-ignore-case)1110 408 y Fu(If)27 b(set)h(to)g(`)p +Ft(on)p Fu(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i +(and)e(completion)1110 518 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)40 +b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Ft(off)p +Fu('.)630 669 y Ft(completion-map-case)1110 778 y Fu(If)22 +b(set)g(to)h(`)p Ft(on)p Fu(',)h(and)e Fr(completion-ignore-case)31 +b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 888 y(h)m(yphens)29 +b(\(`)p Ft(-)p Fu('\))j(and)e(underscores)g(\(`)p Ft(_)p +Fu('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110 +998 y(case-insensitiv)m(e)j(\014lename)d(matc)m(hing)i(and)e +(completion.)630 1148 y Ft(completion-prefix-displa)o(y-le)o(ngth)1110 +1258 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f(the)f(common)h +(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110 1367 +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 1477 +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 1587 +y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible) +f(completions.)630 1737 y Ft(completion-query-items)1110 +1847 y Fu(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h +(that)g(determines)f(when)f(the)i(user)1110 1956 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 2066 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 2176 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 +2285 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 2395 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 +2504 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g +Ft(100)p Fu(.)630 2655 y Ft(convert-meta)1110 2765 y +Fu(If)22 b(set)g(to)h(`)p Ft(on)p Fu(',)h(Readline)f(will)f(con)m(v)m +(ert)i(c)m(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110 +2874 y(to)33 b(an)e Fm(asci)r(i)h Fu(k)m(ey)h(sequence)f(b)m(y)g +(stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110 +2984 y(an)24 b Ft(ESC)g Fu(c)m(haracter,)j(con)m(v)m(erting)f(them)f +(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 3093 +y(The)i(default)h(v)-5 b(alue)28 b(is)f(`)p Ft(on)p Fu(',)i(but)d(will) +i(b)s(e)f(set)h(to)g(`)p Ft(off)p Fu(')g(if)f(the)h(lo)s(cale)h(is)f +(one)1110 3203 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630 +3354 y Ft(disable-completion)1110 3463 y Fu(If)k(set)h(to)h(`)p +Ft(On)p Fu(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60 +b(Completion)1110 3573 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 +3682 y(to)31 b Ft(self-insert)p Fu(.)38 b(The)30 b(default)g(is)h(`)p +Ft(off)p Fu('.)630 3833 y Ft(echo-control-characters)1110 +3943 y Fu(When)f(set)h(to)g(`)p Ft(on)p Fu(',)f(on)g(op)s(erating)h +(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 4052 +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 4162 y(from)e(the)g(k)m(eyb)s(oard.) +41 b(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 4313 +y Ft(editing-mode)1110 4422 y Fu(The)d Ft(editing-mode)e +Fu(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k) +m(ey)i(bind-)1110 4532 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 4641 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to) +h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110 +4751 y(b)s(e)g(set)h(to)g(either)g(`)p Ft(emacs)p Fu(')e(or)h(`)p +Ft(vi)p Fu('.)630 4902 y Ft(emacs-mode-string)1110 5011 +y Fu(This)f(string)h(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e +(the)h(last)g(line)h(of)e(the)h(pri-)1110 5121 y(mary)43 +b(prompt)g(when)f(emacs)i(editing)g(mo)s(de)f(is)g(activ)m(e.)82 +b(The)43 b(v)-5 b(alue)44 b(is)1110 5230 y(expanded)28 +b(lik)m(e)i(a)f(k)m(ey)g(binding,)f(so)h(the)g(standard)f(set)h(of)g +(meta-)g(and)f(con-)1110 5340 y(trol)36 b(pre\014xes)e(and)h(bac)m +(kslash)h(escap)s(e)g(sequences)g(is)f(a)m(v)-5 b(ailable.)58 +b(Use)36 b(the)p eop end %%Page: 110 116 TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(110)630 299 y(The)42 -b Ft(bind)30 b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g -(names)g(and)f(bindings)g(in)h(a)630 408 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 518 -y(Builtins],)31 b(page)g(48.)630 673 y Fr(k)m(eyname)5 -b Fu(:)42 b Fr(function-name)35 b Fu(or)c Fr(macro)1110 -783 y(k)m(eyname)k Fu(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s -(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350 -915 y Ft(Control-u:)45 b(universal-argument)1350 1024 -y(Meta-Rubout:)f(backward-kill-word)1350 1134 y(Control-o:)h(">)i -(output")1110 1266 y Fu(In)94 b(the)g(ab)s(o)m(v)m(e)i(example,)111 -b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f(function)1110 -1376 y Ft(universal-argument)p Fu(,)124 b Fj(M-DEL)107 -b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 1485 y -Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g Fu(is)h(b)s(ound)e -(to)j(run)d(the)i(macro)1110 1595 y(expressed)45 b(on)h(the)g(righ)m(t) -g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p -Ft(>)1110 1705 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110 -1837 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g -(names)f(are)g(recognized)h(while)1110 1946 y(pro)s(cessing)40 -b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 b Fr(DEL)p -Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f Fr(LFD)p -Fu(,)1110 2056 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f -Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8 b(A)m(CE)p -Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p Fu(.)630 -2211 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 b Fr(function-name)36 -b Fu(or)30 b Fr(macro)1110 2321 y(k)m(eyseq)k Fu(di\013ers)d(from)f -Fr(k)m(eyname)37 b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f -(denoting)g(an)g(en-)1110 2430 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s -(e)f(sp)s(eci\014ed,)h(b)m(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in) -1110 2540 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h -Fu(Emacs)f(st)m(yle)i(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as) -1110 2649 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s -(ecial)h(c)m(haracter)g(names)f(are)g(not)1110 2759 y(recognized.)1350 -2891 y Ft("\\C-u":)46 b(universal-argument)1350 3001 -y("\\C-x\\C-r":)f(re-read-init-file)1350 3110 y("\\e[11~":)g("Function) -h(Key)g(1")1110 3243 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 -b Fj(C-u)64 b Fu(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 -3352 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g -(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 3462 -y(C-r)p Fu(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f -Ft(re-read-init-file)p Fu(,)c(and)j(`)p Ft(ESC)h([)g(1)g(1)1110 -3571 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p -Ft(Function)e(Key)g(1)p Fu('.)630 3726 y(The)g(follo)m(wing)i -Fm(gnu)f Fu(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 -b(ailable)32 b(when)d(sp)s(ecifying)630 3836 y(k)m(ey)i(sequences:)630 -3991 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630 -4146 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4301 y -Fj(\\e)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)630 -4456 y Fj(\\\\)384 b Fu(bac)m(kslash)630 4611 y Fj(\\)p -Ft(")g(")p Fu(,)30 b(a)h(double)f(quotation)i(mark)630 -4766 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s -(ostrophe)630 4921 y(In)d(addition)h(to)g(the)g Fm(gnu)f -Fu(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g -(bac)m(kslash)630 5030 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 -5185 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 5340 -y Ft(\\b)384 b Fu(bac)m(kspace)p eop end +b(Command)29 b(Line)i(Editing)2062 b(110)1110 299 y(`)p +Ft(\\1)p Fu(')38 b(and)f(`)p Ft(\\2)p Fu(')h(escap)s(es)g(to)h(b)s +(egin)e(and)h(end)f(sequences)h(of)g(non-prin)m(ting)1110 +408 y(c)m(haracters,)27 b(whic)m(h)c(can)h(b)s(e)f(used)f(to)j(em)m(b)s +(ed)e(a)h(terminal)g(con)m(trol)h(sequence)1110 518 y(in)m(to)31 +b(the)g(mo)s(de)f(string.)41 b(The)29 b(default)i(is)f(`)p +Ft(@)p Fu('.)630 682 y Ft(enable-bracketed-paste)1110 +792 y Fu(When)24 b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g +(con\014gure)f(the)h(terminal)g(in)f(a)h(w)m(a)m(y)g(that)1110 +902 y(will)k(enable)f(it)h(to)g(insert)g(eac)m(h)g(paste)g(in)m(to)g +(the)g(editing)g(bu\013er)e(as)i(a)f(single)1110 1011 +y(string)33 b(of)f(c)m(haracters,)j(instead)e(of)g(treating)h(eac)m(h)g +(c)m(haracter)g(as)f(if)f(it)i(had)1110 1121 y(b)s(een)e(read)i(from)e +(the)i(k)m(eyb)s(oard.)49 b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c) +m(haracters)1110 1230 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f +(editing)h(commands.)41 b(The)29 b(default)i(is)f(`)p +Ft(off)p Fu('.)630 1395 y Ft(enable-keypad)1110 1504 +y Fu(When)23 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(try)f +(to)h(enable)g(the)f(application)i(k)m(eypad)1110 1614 +y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f(to)h +(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 1724 y(The)j(default)g(is)h(`) +p Ft(off)p Fu('.)630 1888 y Ft(enable-meta-key)1110 1998 +y Fu(When)40 b(set)g(to)g(`)p Ft(on)p Fu(',)j(Readline)d(will)g(try)g +(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110 2107 +y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h(is)g +(called.)76 b(On)41 b(man)m(y)1110 2217 y(terminals,)c(the)e(meta)h(k)m +(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56 +b(The)1110 2326 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630 +2491 y Ft(expand-tilde)1110 2600 y Fu(If)d(set)h(to)h(`)p +Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h +(Readline)h(attempts)1110 2710 y(w)m(ord)i(completion.)42 +b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 2874 +y Ft(history-preserve-point)1110 2984 y Fu(If)41 b(set)h(to)h(`)p +Ft(on)p Fu(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f +(p)s(oin)m(t)f(\(the)1110 3093 y(curren)m(t)35 b(cursor)g(p)s +(osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g +(line)1110 3203 y(retriev)m(ed)h(with)f Ft(previous-history)c +Fu(or)37 b Ft(next-history)p Fu(.)55 b(The)36 b(default)1110 +3313 y(is)30 b(`)p Ft(off)p Fu('.)630 3477 y Ft(history-size)1110 +3587 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g +(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 3696 +y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f +(en)m(tries)g(are)g(deleted)h(and)e(no)1110 3806 y(new)e(en)m(tries)i +(are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5 +b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110 +3915 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42 +b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110 +4025 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is) +f(made)g(to)h(set)f Fr(history-size)39 b Fu(to)1110 4134 +y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m +(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 4244 +y(b)s(e)c(set)h(to)g(500.)630 4408 y Ft(horizontal-scroll-mode)1110 +4518 y Fu(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f +(`)p Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36 +b(it)g(to)h(`)p Ft(on)p Fu(')1110 4628 y(means)26 b(that)h(the)f(text)h +(of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m +(tally)1110 4737 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i +(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 4847 +y(screen,)27 b(instead)g(of)f(wrapping)f(on)m(to)i(a)f(new)g(screen)g +(line.)39 b(By)27 b(default,)g(this)1110 4956 y(v)-5 +b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630 +5121 y Ft(input-meta)1110 5230 y Fu(If)f(set)g(to)h(`)p +Ft(on)p Fu(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it) +i(will)f(not)h(clear)1110 5340 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h +(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)p +eop end %%Page: 111 117 TeXDict begin 111 116 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(111)630 299 y Ft(\\d)384 -b Fu(delete)630 451 y Ft(\\f)g Fu(form)30 b(feed)630 -604 y Ft(\\n)384 b Fu(newline)630 757 y Ft(\\r)g Fu(carriage)32 -b(return)630 909 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)630 -1062 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)630 1214 -y Ft(\\)p Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose) -e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 -b Fr(nnn)e Fu(\(one)i(to)1110 1324 y(three)c(digits\))630 -1477 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g -(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 -b(alue)39 b Fr(HH)1110 1586 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e -(digits\))630 1739 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 1848 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 1958 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 2067 y(will)j(quote)h(an)m -(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 -b(`)p Ft(")p Fu(')h(and)g(`)p Ft(')p Fu('.)69 b(F)-8 -b(or)630 2177 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i -(mak)m(e)h(`)p Fj(C-x)j Ft(\\)p Fu(')c(insert)f(a)h(single)h(`)p -Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2308 y Ft("\\C-x\\\\":)45 -b("\\\\")150 2501 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) -150 2647 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f -(in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150 -2757 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 2867 y(result)f(of)h(tests.)41 -b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150 -3019 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h -(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g -(the)630 3129 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 3238 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 -3391 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e Fu(form)i(of)g(the)h -Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g(whether)e(Read-)1110 -3501 y(line)44 b(is)f(in)g Ft(emacs)f Fu(or)h Ft(vi)g -Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g(conjunction) -1110 3610 y(with)c(the)h(`)p Ft(set)29 b(keymap)p Fu(')38 -b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110 -3720 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d -Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 3829 y(starting)f(out)g -(in)f Ft(emacs)f Fu(mo)s(de.)630 3982 y Ft(term)288 b -Fu(The)26 b Ft(term=)g Fu(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f -(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 4092 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 4201 y(function)24 b(k)m(eys.)39 -b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p -Ft(=)p Fu(')g(is)g(tested)h(against)1110 4311 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 4420 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p -Ft(-)p Fu('.)50 b(This)33 b(allo)m(ws)i Ft(sun)e Fu(to)h(matc)m(h)g(b)s -(oth)f Ft(sun)g Fu(and)1110 4530 y Ft(sun-cmd)p Fu(,)c(for)h(instance.) -630 4682 y Ft(application)1110 4792 y Fu(The)21 b Fr(application)j -Fu(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h -(set-)1110 4902 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h -(Readline)g(library)g(sets)g(the)g Fr(application)1110 -5011 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h -(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 -5121 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 5230 -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 5340 y(the)e(curren)m(t)f(or)g(previous) -g(w)m(ord)g(in)g(Bash:)p eop end +b(Command)29 b(Line)i(Editing)2062 b(111)1110 299 y(terminal)44 +b(claims)h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5 +b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 408 y(Readline)24 +b(will)h(set)f(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)g(lo)s(cale)i(con) +m(tains)f(eigh)m(t-bit)g(c)m(haracters.)1110 518 y(The)30 +b(name)g Ft(meta-flag)e Fu(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5 +b(ariable.)630 675 y Ft(isearch-terminators)1110 784 +y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j +(an)f(incremen)m(tal)1110 894 y(searc)m(h)25 b(without)g(subsequen)m +(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g(command)1110 +1003 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(106\).)62 +b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1113 +y(b)s(een)e(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h +Ft(ESC)d Fu(and)h Fj(C-J)g Fu(will)h(terminate)g(an)1110 +1223 y(incremen)m(tal)c(searc)m(h.)630 1379 y Ft(keymap)192 +b Fu(Sets)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 1489 y(mands.)81 +b(Acceptable)47 b Ft(keymap)42 b Fu(names)i(are)h Ft(emacs)p +Fu(,)i Ft(emacs-standard)p Fu(,)1110 1598 y Ft(emacs-meta)p +Fu(,)99 b Ft(emacs-ctlx)p Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p +Fu(,)f Ft(vi-command)p Fu(,)f(and)1110 1708 y Ft(vi-insert)p +Fu(.)81 b Ft(vi)44 b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g +Ft(vi-command)c Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 +1817 y(synon)m(ym\);)g Ft(emacs)39 b Fu(is)i(equiv)-5 +b(alen)m(t)42 b(to)g Ft(emacs-standard)p Fu(.)68 b(The)40 +b(default)1110 1927 y(v)-5 b(alue)52 b(is)f Ft(emacs)p +Fu(.)103 b(The)51 b(v)-5 b(alue)52 b(of)f(the)h Ft(editing-mode)c +Fu(v)-5 b(ariable)52 b(also)1110 2037 y(a\013ects)32 +b(the)e(default)h(k)m(eymap.)630 2193 y Ft(keyseq-timeout)1110 +2303 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m +(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 2412 +y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f +(form)g(a)g(complete)h(k)m(ey)1110 2522 y(sequence)j(using)e(the)i +(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input) +1110 2632 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49 +b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110 +2741 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter) +g(but)f(complete)j(k)m(ey)e(se-)1110 2851 y(quence.)c(Readline)26 +b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h +(input)1110 2960 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m +(t)f(input)g(source)h(\()p Ft(rl_instream)d Fu(b)m(y)i(default\).)1110 +3070 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h +(milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that) +1110 3180 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g +(additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23 +b(is)1110 3289 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f +(equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5 +b(alue,)1110 3399 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h +(k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110 +3508 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 +b(alue)31 b(is)g Ft(500)p Fu(.)630 3665 y Ft(mark-directories)1110 +3774 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory) +f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 +3884 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 +4041 y Ft(mark-modified-lines)1110 4150 y Fu(This)k(v)-5 +b(ariable,)38 b(when)d(set)h(to)h(`)p Ft(on)p Fu(',)g(causes)g +(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 4260 y(terisk)f(\(`)p +Ft(*)p Fu('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f +(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 4369 y(This)d(v)-5 +b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)630 +4526 y Ft(mark-symlinked-directori)o(es)1110 4635 y Fu(If)59 +b(set)h(to)g(`)p Ft(on)p Fu(',)67 b(completed)60 b(names)f(whic)m(h)g +(are)h(sym)m(b)s(olic)g(links)f(to)1110 4745 y(directories)71 +b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70 +b(to)g(the)g(v)-5 b(alue)70 b(of)1110 4855 y Ft(mark-directories)p +Fu(\).)37 b(The)30 b(default)g(is)g(`)p Ft(off)p Fu('.)630 +5011 y Ft(match-hidden-files)1110 5121 y Fu(This)21 b(v)-5 +b(ariable,)25 b(when)d(set)g(to)h(`)p Ft(on)p Fu(',)h(causes)f +(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 5230 +y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p Fu(')g(\(hidden)f +(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 5340 +y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p Fu(',)i(the)e +(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)p +eop end %%Page: 112 118 TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(112)1350 299 y Ft($if)47 -b(Bash)1350 408 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350 -518 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 628 y($endif)150 -787 y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g -(previous)g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)150 -946 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i(the) -f Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g(fails.) -150 1106 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m(es)g(a)e -(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g(commands) -630 1215 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 1325 y Ft(/etc/inputrc)p Fu(:)870 1460 y Ft($include)46 -b(/etc/inputrc)150 1659 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150 -1806 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k -Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5 -b(ariable)27 b(assignmen)m(t,)i(and)150 1915 y(conditional)j(syn)m -(tax.)p eop end +b(Command)29 b(Line)i(Editing)2062 b(112)1110 299 y(the)34 +b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)53 +b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Ft(on)p Fu(')g(b)m(y)1110 +408 y(default.)630 555 y Ft(menu-complete-display-pr)o(efix)1110 +664 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)h(men)m(u)e(completion)i +(displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110 +774 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 883 y(through)30 +b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Ft(off)p +Fu('.)630 1029 y Ft(output-meta)1110 1139 y Fu(If)35 +b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y)f(c)m +(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 1249 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 1358 y(default)26 b(is)f(`)p Ft(off)p Fu(',)i(but)e +(Readline)h(will)g(set)g(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)f(lo)s +(cale)j(con)m(tains)1110 1468 y(eigh)m(t-bit)k(c)m(haracters.)630 +1614 y Ft(page-completions)1110 1724 y Fu(If)h(set)i(to)f(`)p +Ft(on)p Fu(',)h(Readline)g(uses)e(an)h(in)m(ternal)h +Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 +1833 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) +47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p Fu(')1110 +1943 y(b)m(y)e(default.)630 2089 y Ft(print-completions-horizo)o(ntal)o +(ly)1110 2198 y Fu(If)23 b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g +(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110 +2308 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 2418 y(The)30 b(default)g(is)h(`)p +Ft(off)p Fu('.)630 2564 y Ft(revert-all-at-newline)1110 +2673 y Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f +(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 +2783 y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41 +b(By)29 b(default,)g(history)g(lines)1110 2892 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 3002 y Ft(readline)p Fu(.)38 +b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 3148 +y Ft(show-all-if-ambiguous)1110 3258 y Fu(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 3367 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h) +g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause) +1110 3477 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 3587 y(The)30 +b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p Fu('.)630 +3733 y Ft(show-all-if-unmodified)1110 3842 y Fu(This)38 +b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h +(functions)e(in)h(a)1110 3952 y(fashion)25 b(similar)h(to)g +Fr(sho)m(w-all-if-am)m(biguous)p Fu(.)41 b(If)25 b(set)h(to)h(`)p +Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 4061 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 4171 y(tial)43 b(completion)h(\(the)f(p)s(ossible) +f(completions)h(don't)f(share)g(a)h(common)1110 4281 +y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g +(immediately)i(instead)e(of)h(ring-)1110 4390 y(ing)g(the)f(b)s(ell.)41 +b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Ft(off)p +Fu('.)630 4536 y Ft(show-mode-in-prompt)1110 4646 y Fu(If)g(set)g(to)h +(`)p Ft(on)p Fu(',)f(add)f(a)i(c)m(haracter)g(to)g(the)f(b)s(eginning)g +(of)g(the)g(prompt)f(indi-)1110 4756 y(cating)j(the)g(editing)f(mo)s +(de:)42 b(emacs,)33 b(vi)e(command,)g(or)g(vi)g(insertion.)43 +b(The)1110 4865 y(mo)s(de)30 b(strings)g(are)h(user-settable.)42 +b(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p +Fu('.)630 5011 y Ft(skip-completed-text)1110 5121 y Fu(If)h(set)i(to)f +(`)p Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s +(eha)m(vior)f(when)f(in-)1110 5230 y(serting)d(a)h(single)g(matc)m(h)f +(in)m(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s +(erform-)1110 5340 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f +(w)m(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)p +eop end %%Page: 113 119 TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(113)390 408 y Ft(#)47 +b(Command)29 b(Line)i(Editing)2062 b(113)1110 299 y(not)41 +b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g +(c)m(haracters)1110 408 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f(b) +s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110 +518 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45 +b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110 +628 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g +(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 737 y(`)p Ft(Makefile)p +Fu(')c(will)i(result)f(in)g(`)p Ft(Makefile)p Fu(')f(rather)h(than)h(`) +p Ft(Makefilefile)p Fu(',)1110 847 y(assuming)d(there)g(is)h(a)f +(single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5 +b(alue)1110 956 y(is)30 b(`)p Ft(off)p Fu('.)630 1117 +y Ft(vi-cmd-mode-string)1110 1226 y Fu(This)f(string)h(is)f(displa)m(y) +m(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h(of)e(the)h(pri-) +1110 1336 y(mary)21 b(prompt)g(when)f(vi)i(editing)g(mo)s(de)f(is)g +(activ)m(e)j(and)d(in)g(command)g(mo)s(de.)1110 1445 +y(The)38 b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g +(binding,)g(so)g(the)f(standard)g(set)h(of)1110 1555 +y(meta-)30 b(and)e(con)m(trol)i(pre\014xes)e(and)g(bac)m(kslash)h +(escap)s(e)g(sequences)g(is)g(a)m(v)-5 b(ail-)1110 1665 +y(able.)50 b(Use)33 b(the)h(`)p Ft(\\1)p Fu(')f(and)g(`)p +Ft(\\2)p Fu(')g(escap)s(es)g(to)h(b)s(egin)f(and)g(end)f(sequences)i +(of)1110 1774 y(non-prin)m(ting)40 b(c)m(haracters,)45 +b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal) +1110 1884 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g +(string.)41 b(The)30 b(default)h(is)f(`)p Ft(\(cmd\))p +Fu('.)630 2044 y Ft(vi-ins-mode-string)1110 2153 y Fu(This)f(string)h +(is)f(displa)m(y)m(ed)i(immediately)g(b)s(efore)e(the)h(last)g(line)h +(of)e(the)h(pri-)1110 2263 y(mary)25 b(prompt)f(when)g(vi)h(editing)h +(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)1110 +2373 y(The)38 b(v)-5 b(alue)39 b(is)f(expanded)f(lik)m(e)j(a)f(k)m(ey)g +(binding,)g(so)g(the)f(standard)g(set)h(of)1110 2482 +y(meta-)30 b(and)e(con)m(trol)i(pre\014xes)e(and)g(bac)m(kslash)h +(escap)s(e)g(sequences)g(is)g(a)m(v)-5 b(ail-)1110 2592 +y(able.)50 b(Use)33 b(the)h(`)p Ft(\\1)p Fu(')f(and)g(`)p +Ft(\\2)p Fu(')g(escap)s(es)g(to)h(b)s(egin)f(and)g(end)f(sequences)i +(of)1110 2701 y(non-prin)m(ting)40 b(c)m(haracters,)45 +b(whic)m(h)40 b(can)g(b)s(e)g(used)g(to)h(em)m(b)s(ed)f(a)g(terminal) +1110 2811 y(con)m(trol)32 b(sequence)f(in)m(to)g(the)f(mo)s(de)g +(string.)41 b(The)30 b(default)h(is)f(`)p Ft(\(ins\))p +Fu('.)630 2971 y Ft(visible-stats)1110 3081 y Fu(If)h(set)i(to)f(`)p +Ft(on)p Fu(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s +(e)g(is)g(app)s(ended)e(to)j(the)1110 3190 y(\014lename)e(when)e +(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p +Ft(off)p Fu('.)150 3351 y(Key)f(Bindings)630 3460 y(The)41 +b(syn)m(tax)i(for)f(con)m(trolling)h(k)m(ey)g(bindings)e(in)h(the)g +(init)g(\014le)g(is)g(simple.)75 b(First)43 b(y)m(ou)630 +3570 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)h(the)g(command)f(that)i +(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41 b(The)27 b(follo)m(wing)630 +3679 y(sections)37 b(con)m(tain)g(tables)g(of)f(the)g(command)f(name,)j +(the)e(default)g(k)m(eybinding,)h(if)f(an)m(y)-8 b(,)630 +3789 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h +(do)s(es.)630 3924 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g(name)g(of)g +(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g(the)g(init)630 +4033 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m(ou)g(wish)f(to)h +(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)630 +4143 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 +b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g +(and)630 4253 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m +(terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72 +b(The)40 b(name)h(of)630 4362 y(the)35 b(k)m(ey)g(can)g(b)s(e)f +(expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h +(what)h(y)m(ou)g(\014nd)e(most)630 4472 y(comfortable.)630 +4607 y(In)i(addition)h(to)h(command)f(names,)i(readline)e(allo)m(ws)h +(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f(string)630 +4716 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g +(\(a)h Fr(macro)5 b Fu(\).)630 4851 y(The)42 b Ft(bind)30 +b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g(names)g(and) +f(bindings)g(in)h(a)630 4961 y(format)37 b(that)h(can)f(put)f(directly) +i(in)m(to)g(an)f(initialization)j(\014le.)60 b(See)38 +b(Section)f(4.2)i([Bash)630 5070 y(Builtins],)31 b(page)g(49.)630 +5230 y Fr(k)m(eyname)5 b Fu(:)42 b Fr(function-name)35 +b Fu(or)c Fr(macro)1110 5340 y(k)m(eyname)k Fu(is)29 +b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s(elled)e(out)h(in)g(English.)39 +b(F)-8 b(or)30 b(example:)p eop end +%%Page: 114 120 +TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(114)1350 299 y Ft(Control-u:)45 +b(universal-argument)1350 408 y(Meta-Rubout:)f(backward-kill-word)1350 +518 y(Control-o:)h(">)i(output")1110 650 y Fu(In)94 b(the)g(ab)s(o)m(v) +m(e)i(example,)111 b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f +(function)1110 760 y Ft(universal-argument)p Fu(,)124 +b Fj(M-DEL)107 b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 +869 y Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g +Fu(is)h(b)s(ound)e(to)j(run)d(the)i(macro)1110 979 y(expressed)45 +b(on)h(the)g(righ)m(t)g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the) +h(text)h(`)p Ft(>)1110 1089 y(output)p Fu(')29 b(in)m(to)i(the)g +(line\).)1110 1221 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m +(haracter)g(names)f(are)g(recognized)h(while)1110 1330 +y(pro)s(cessing)40 b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 +b Fr(DEL)p Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f +Fr(LFD)p Fu(,)1110 1440 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p +Fu(,)f Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8 +b(A)m(CE)p Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p +Fu(.)630 1595 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 +b Fr(function-name)36 b Fu(or)30 b Fr(macro)1110 1704 +y(k)m(eyseq)k Fu(di\013ers)d(from)f Fr(k)m(eyname)37 +b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f(denoting)g(an)g(en-)1110 +1814 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s(e)f(sp)s(eci\014ed,)h(b)m +(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)1110 1923 +y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h Fu(Emacs)f(st)m(yle)i(k)m +(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)1110 2033 +y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s(ecial)h(c)m +(haracter)g(names)f(are)g(not)1110 2143 y(recognized.)1350 +2275 y Ft("\\C-u":)46 b(universal-argument)1350 2384 +y("\\C-x\\C-r":)f(re-read-init-file)1350 2494 y("\\e[11~":)g("Function) +h(Key)g(1")1110 2626 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 +b Fj(C-u)64 b Fu(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 +2736 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g +(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 2845 +y(C-r)p Fu(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f +Ft(re-read-init-file)p Fu(,)c(and)j(`)p Ft(ESC)h([)g(1)g(1)1110 +2955 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p +Ft(Function)e(Key)g(1)p Fu('.)630 3110 y(The)g(follo)m(wing)i +Fm(gnu)f Fu(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 +b(ailable)32 b(when)d(sp)s(ecifying)630 3219 y(k)m(ey)i(sequences:)630 +3374 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630 +3529 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 3683 y +Fj(\\e)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)630 +3838 y Fj(\\\\)384 b Fu(bac)m(kslash)630 3993 y Fj(\\)p +Ft(")g(")p Fu(,)30 b(a)h(double)f(quotation)i(mark)630 +4147 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s +(ostrophe)630 4302 y(In)d(addition)h(to)g(the)g Fm(gnu)f +Fu(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g +(bac)m(kslash)630 4412 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 +4566 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 4721 +y Ft(\\b)384 b Fu(bac)m(kspace)630 4876 y Ft(\\d)g Fu(delete)630 +5031 y Ft(\\f)g Fu(form)30 b(feed)630 5185 y Ft(\\n)384 +b Fu(newline)630 5340 y Ft(\\r)g Fu(carriage)32 b(return)p +eop end +%%Page: 115 121 +TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(115)630 299 y Ft(\\t)384 +b Fu(horizon)m(tal)32 b(tab)630 451 y Ft(\\v)384 b Fu(v)m(ertical)32 +b(tab)630 604 y Ft(\\)p Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m +(haracter)g(whose)e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 +b(alue)35 b Fr(nnn)e Fu(\(one)i(to)1110 713 y(three)c(digits\))630 +866 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g +(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 +b(alue)39 b Fr(HH)1110 975 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e +(digits\))630 1128 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g +(macro,)i(single)e(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to) +630 1237 y(indicate)23 b(a)e(macro)h(de\014nition.)38 +b(Unquoted)21 b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f +(name.)38 b(In)630 1347 y(the)22 b(macro)f(b)s(o)s(dy)-8 +b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m +(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 1456 y(will)j(quote)h(an)m +(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 +b(`)p Ft(")p Fu(')h(and)g(`)p Ft(')p Fu('.)69 b(F)-8 +b(or)630 1566 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i +(mak)m(e)h(`)p Fj(C-x)j Ft(\\)p Fu(')c(insert)f(a)h(single)h(`)p +Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 1697 y Ft("\\C-x\\\\":)45 +b("\\\\")150 1889 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) +150 2036 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f +(in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150 +2146 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g +(bindings)d(and)h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s +(erformed)f(as)i(the)150 2255 y(result)f(of)h(tests.)41 +b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150 +2408 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h +(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g +(the)630 2517 y(terminal)39 b(b)s(eing)e(used,)j(or)e(the)g +(application)h(using)f(Readline.)64 b(The)38 b(text)h(of)f(the)g(test) +630 2627 y(extends)30 b(to)h(the)g(end)f(of)g(the)h(line;)g(no)f(c)m +(haracters)i(are)f(required)e(to)i(isolate)i(it.)630 +2779 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e Fu(form)i(of)g(the)h +Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g(whether)e(Read-)1110 +2889 y(line)44 b(is)f(in)g Ft(emacs)f Fu(or)h Ft(vi)g +Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g(conjunction) +1110 2998 y(with)c(the)h(`)p Ft(set)29 b(keymap)p Fu(')38 +b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110 +3108 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d +Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 3218 y(starting)f(out)g +(in)f Ft(emacs)f Fu(mo)s(de.)630 3370 y Ft(term)288 b +Fu(The)26 b Ft(term=)g Fu(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f +(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 3480 y(ings,)38 +b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g +(the)g(terminal's)1110 3589 y(function)24 b(k)m(eys.)39 +b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p +Ft(=)p Fu(')g(is)g(tested)h(against)1110 3699 y(b)s(oth)k(the)h(full)g +(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g +(terminal)1110 3808 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p +Ft(-)p Fu('.)50 b(This)33 b(allo)m(ws)i Ft(sun)e Fu(to)h(matc)m(h)g(b)s +(oth)f Ft(sun)g Fu(and)1110 3918 y Ft(sun-cmd)p Fu(,)c(for)h(instance.) +630 4070 y Ft(application)1110 4180 y Fu(The)21 b Fr(application)j +Fu(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h +(set-)1110 4289 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h +(Readline)g(library)g(sets)g(the)g Fr(application)1110 +4399 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h +(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110 +4509 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h +(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 4618 +y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f +(sequence)h(that)f(quotes)1110 4728 y(the)e(curren)m(t)f(or)g(previous) +g(w)m(ord)g(in)g(Bash:)1350 4859 y Ft($if)47 b(Bash)1350 +4968 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350 +5078 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 5188 y($endif)150 +5340 y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g +(previous)g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)p +eop end +%%Page: 116 122 +TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(116)150 299 y Ft($else)240 +b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i(the)f +Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g(fails.) +150 458 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m(es)g(a)e +(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g(commands) +630 568 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 +b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e +(from)630 677 y Ft(/etc/inputrc)p Fu(:)870 812 y Ft($include)46 +b(/etc/inputrc)150 1011 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150 +1158 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k +Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5 +b(ariable)27 b(assignmen)m(t,)i(and)150 1268 y(conditional)j(syn)m +(tax.)p eop end +%%Page: 117 123 +TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(117)390 408 y Ft(#)47 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) @@ -16092,9 +16496,9 @@ y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)390 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode) 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end -%%Page: 114 120 -TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(114)390 299 y Ft(#"\\M-\\C-[A":) +%%Page: 118 124 +TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(118)390 299 y Ft(#"\\M-\\C-[A":) 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) @@ -16127,58 +16531,58 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h (completions)e(for)390 5121 y(#)j(a)h(word,)e(ask)h(the)g(user)g(if)g (he)g(wants)f(to)i(see)f(all)f(of)i(them)390 5230 y(set)f (completion-query-items)42 b(150)p eop end -%%Page: 115 121 -TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(115)390 299 y Ft(#)47 +%%Page: 119 125 +TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(119)390 299 y Ft(#)47 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 -847 y($endif)150 1075 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands) -150 1235 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f +847 y($endif)150 1083 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands) +150 1242 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f (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(Y)-8 b(ou)33 b(can)150 1352 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d (b)m(y)h(executing)i Ft(bind)29 b(-P)39 b Fu(or,)j(for)d(a)h(more)g -(terse)g(format,)i(suitable)e(for)f(an)150 1454 y Fr(inputrc)34 +(terse)g(format,)i(suitable)e(for)f(an)150 1461 y Fr(inputrc)34 b Fu(\014le,)29 b Ft(bind)g(-p)p Fu(.)40 b(\(See)30 b(Section)f(4.2)h -([Bash)g(Builtins],)g(page)g(48.\))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 +([Bash)g(Builtins],)g(page)g(49.\))41 b(Command)28 b(names)h(without) +150 1571 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s +(ound)d(b)m(y)i(default.)275 1703 y(In)25 b(the)h(follo)m(wing)i (descriptions,)f Fr(p)s(oin)m(t)h Fu(refers)e(to)h(the)f(curren)m(t)g (cursor)g(p)s(osition,)h(and)f Fr(mark)31 b Fu(refers)150 -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 +1813 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g Ft(set-mark)d Fu(command.)66 b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f -(p)s(oin)m(t)g(and)150 1915 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f -Fr(region)p Fu(.)150 2110 y Fk(8.4.1)63 b(Commands)42 -b(F)-10 b(or)41 b(Mo)m(ving)150 2280 y Ft(beginning-of-line)26 -b(\(C-a\))630 2390 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f -(curren)m(t)g(line.)150 2545 y Ft(end-of-line)d(\(C-e\))630 -2655 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -2810 y Ft(forward-char)c(\(C-f\))630 2920 y Fu(Mo)m(v)m(e)32 -b(forw)m(ard)e(a)h(c)m(haracter.)150 3075 y Ft(backward-char)c(\(C-b\)) -630 3185 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 -3340 y Ft(forward-word)d(\(M-f\))630 3450 y Fu(Mo)m(v)m(e)32 +(p)s(oin)m(t)g(and)150 1922 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f +Fr(region)p Fu(.)150 2117 y Fk(8.4.1)63 b(Commands)42 +b(F)-10 b(or)41 b(Mo)m(ving)150 2286 y Ft(beginning-of-line)26 +b(\(C-a\))630 2396 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f +(curren)m(t)g(line.)150 2551 y Ft(end-of-line)d(\(C-e\))630 +2660 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 +2815 y Ft(forward-char)c(\(C-f\))630 2924 y Fu(Mo)m(v)m(e)32 +b(forw)m(ard)e(a)h(c)m(haracter.)150 3079 y Ft(backward-char)c(\(C-b\)) +630 3189 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 +3343 y Ft(forward-word)d(\(M-f\))630 3453 y Fu(Mo)m(v)m(e)32 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 Ft(backward-word)27 b(\(M-b\))630 -3824 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g +3563 y(digits.)150 3717 y Ft(backward-word)27 b(\(M-b\))630 +3827 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g (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 Ft(shell-forward-word)25 b(\(\))630 4199 y Fu(Mo)m(v)m(e)30 +b(are)g(comp)s(osed)630 3936 y(of)d(letters)g(and)f(digits.)150 +4091 y Ft(shell-forward-word)25 b(\(\))630 4201 y Fu(Mo)m(v)m(e)30 b(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 Ft(shell-backward-word)25 -b(\(\))630 4573 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g +4310 y(shell)j(metac)m(haracters.)150 4465 y Ft(shell-backward-word)25 +b(\(\))630 4575 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g (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 Ft(clear-screen)d(\(C-l\))630 +b(ords)35 b(are)g(delimited)630 4684 y(b)m(y)30 b(non-quoted)h(shell)f +(metac)m(haracters.)150 4839 y Ft(clear-screen)d(\(C-l\))630 4948 y Fu(Clear)g(the)g(screen)f(and)h(redra)m(w)f(the)h(curren)m(t)f (line,)i(lea)m(ving)g(the)f(curren)m(t)g(line)g(at)g(the)g(top)630 -5057 y(of)k(the)f(screen.)150 5213 y Ft(redraw-current-line)25 +5058 y(of)k(the)f(screen.)150 5213 y Ft(redraw-current-line)25 b(\(\))630 5322 y Fu(Refresh)30 b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s(ound.)p eop end -%%Page: 116 122 -TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(116)150 299 y Fk(8.4.2)63 +%%Page: 120 126 +TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(120)150 299 y Fk(8.4.2)63 b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150 473 y Ft(accept-line)27 b(\(Newline)h(or)i(Return\))630 582 y Fu(Accept)25 b(the)e(line)h(regardless)g(of)f(where)g(the)h @@ -16203,26 +16607,30 @@ y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g(the)f(curren)m(t)g (line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g(his-)630 2386 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29 b(is)i(an)f(incremen)m (tal)i(searc)m(h.)150 2550 y Ft(forward-search-history)24 -b(\(C-s\))630 2659 y Fu(Searc)m(h)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(\(C-s\))630 2659 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h +(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) +630 2769 y(history)30 b(as)h(necessary)-8 b(.)41 b(This)30 b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 2932 y Ft (non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 b(\(M-p\))630 3042 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g (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 Ft(non-incremental-forward-)o(sear)o(ch-h)o -(ist)o(ory)24 b(\(M-n\))630 3534 y Fu(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 Ft(history-search-forward)d(\(\))630 -4027 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g -(the)h(string)f(of)h(c)m(haracters)h(b)s(et)m(w)m(een)f(the)630 -4136 y(start)36 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 +3261 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m +(ywhere)g(in)f(a)h(history)f(line.)150 3425 y Ft +(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24 +b(\(M-n\))630 3534 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h +(the)e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the) +630 3644 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m +(tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630 +3754 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an) +m(ywhere)g(in)f(a)h(history)f(line.)150 3917 y Ft +(history-search-forward)24 b(\(\))630 4027 y Fu(Searc)m(h)42 +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 Ft(history-search-backward)24 b(\(\))630 4629 @@ -16239,9 +16647,9 @@ b(By)33 b(default,)g(this)630 4957 y(command)d(is)h(un)m(b)s(ound.)150 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 Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(117)630 299 y(in)32 +%%Page: 121 127 +TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(121)630 299 y(in)32 b(a)h(history)g(line.)47 b(This)32 b(is)g(a)h(non-incremen)m(tal)h (searc)m(h.)47 b(By)33 b(default,)h(this)e(command)630 408 y(is)e(un)m(b)s(ound.)150 573 y Ft(history-substr-search-ba)o(ckwa) @@ -16310,1437 +16718,1464 @@ y Fu(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h (v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630 5340 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)p eop end -%%Page: 118 124 -TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(118)150 299 y Ft(self-insert)27 -b(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 408 y Fu(Insert)g(y)m -(ourself.)150 556 y Ft(transpose-chars)c(\(C-t\))630 -665 y Fu(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)g(cursor)f -(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g(cursor,)630 -775 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 884 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 994 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150 -1141 y Ft(transpose-words)c(\(M-t\))630 1251 y Fu(Drag)33 -b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f -(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630 -1360 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 1470 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150 -1617 y Ft(upcase-word)c(\(M-u\))630 1727 y Fu(Upp)s(ercase)32 -b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i(w)m(ord.)45 -b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630 -1837 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 1984 y Ft(downcase-word)d(\(M-l\))630 -2093 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i -(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m -(ercase)630 2203 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 2350 y Ft(capitalize-word)26 -b(\(M-c\))630 2460 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m -(wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h -(capitalize)630 2569 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 2717 y Ft(overwrite-mode)26 -b(\(\))630 2826 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 -b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) -h(switc)m(hes)630 2936 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 3045 y(insert)30 b(mo)s(de.)41 -b(This)30 b(command)h(a\013ects)h(only)e Ft(emacs)f Fu(mo)s(de;)i -Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 3155 -y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f -Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)630 -3283 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s -(ound)c(to)j Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630 -3393 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h -(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 -3503 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter) -h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 3631 -y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150 -3818 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 -3984 y Ft(kill-line)28 b(\(C-k\))630 4093 y Fu(Kill)j(the)f(text)i -(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)150 -4241 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 -4350 y Fu(Kill)h(bac)m(kw)m(ard)g(to)g(the)f(b)s(eginning)g(of)g(the)h -(line.)150 4498 y Ft(unix-line-discard)26 b(\(C-u\))630 -4607 y Fu(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f -(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150 4754 -y Ft(kill-whole-line)c(\(\))630 4864 y Fu(Kill)37 b(all)g(c)m -(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f(matter)g(where)f(p)s -(oin)m(t)h(is.)59 b(By)36 b(default,)630 4974 y(this)30 -b(is)h(un)m(b)s(ound.)150 5121 y Ft(kill-word)d(\(M-d\))630 -5230 y Fu(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f -(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h -(the)g(end)630 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 Ft(forward-word)p -Fu(.)p eop end -%%Page: 119 125 -TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(119)150 299 y Ft -(backward-kill-word)25 b(\(M-DEL\))630 408 y Fu(Kill)k(the)g(w)m(ord)g -(b)s(ehind)e(p)s(oin)m(t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h -(the)g(same)g(as)g Ft(backward-word)p Fu(.)150 569 y -Ft(shell-kill-word)d(\(\))630 679 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h -(the)g(end)e(of)i(the)f(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m -(een)g(w)m(ords,)f(to)h(the)g(end)630 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 -Ft(shell-forward-word)p Fu(.)150 949 y Ft(shell-backward-kill-word)24 -b(\(\))630 1059 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38 -b(W)-8 b(ord)22 b(b)s(oundaries)f(are)h(the)g(same)h(as)f -Ft(shell-backward-)630 1168 y(word)p Fu(.)150 1329 y -Ft(unix-word-rubout)k(\(C-w\))630 1438 y Fu(Kill)32 b(the)g(w)m(ord)f -(b)s(ehind)f(p)s(oin)m(t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f -(b)s(oundary)-8 b(.)43 b(The)31 b(killed)630 1548 y(text)g(is)g(sa)m(v) -m(ed)g(on)g(the)f(kill-ring.)150 1709 y Ft(unix-filename-rubout)25 -b(\(\))630 1818 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m -(t,)j(using)e(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f -(the)630 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 Ft(delete-horizontal-space)24 b(\(\))630 2198 -y Fu(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41 -b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 2359 -y Ft(kill-region)d(\(\))630 2469 y Fu(Kill)k(the)f(text)i(in)e(the)g -(curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un) -m(b)s(ound.)150 2629 y Ft(copy-region-as-kill)25 b(\(\))630 -2739 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f -(kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f -(a)m(w)m(a)m(y)-8 b(.)630 2848 y(By)31 b(default,)f(this)h(command)f -(is)g(un)m(b)s(ound.)150 3009 y Ft(copy-backward-word)25 -b(\(\))630 3119 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m -(t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries) -f(are)i(the)630 3228 y(same)31 b(as)f Ft(backward-word)p -Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 -3389 y Ft(copy-forward-word)26 b(\(\))630 3499 y Fu(Cop)m(y)31 -b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h -(bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630 -3608 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 -b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 -3769 y Ft(yank)f(\(C-y\))630 3878 y Fu(Y)-8 b(ank)31 -b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h -(p)s(oin)m(t.)150 4039 y Ft(yank-pop)d(\(M-y\))630 4149 -y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54 -b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 -4258 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p -Fu(.)150 4459 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m -(ts)150 4631 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j -Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 4741 y Fu(Add)d(this)h(digit)g -(to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f -(new)f(argumen)m(t.)630 4851 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i -(argumen)m(t.)150 5011 y Ft(universal-argument)25 b(\(\))630 -5121 y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g -(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m -(y)f(one)630 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 Ft(universal-argument)p eop -end -%%Page: 120 126 -TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(120)630 299 y(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 Fk(8.4.6)63 -b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42 -b(Y)-10 b(ou)150 1226 y Ft(complete)28 b(\(TAB\))630 -1336 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g -(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630 -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 Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b)s(egins)e -(with)630 1665 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h -(b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f(\(including)h -(aliases)i(and)630 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 Ft -(possible-completions)25 b(\(M-?\))630 2158 y Fu(List)35 -b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s(efore)e(p)s -(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 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 Ft(completion-display-width)o Fu(,)g(the)j(v)-5 -b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)38 -b Ft(COLUMNS)p Fu(,)630 2487 y(or)30 b(the)h(screen)f(width,)g(in)g -(that)h(order.)150 2652 y Ft(insert-completions)25 b(\(M-*\))630 -2762 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f -(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630 -2871 y(b)m(y)g Ft(possible-completions)p Fu(.)150 3036 -y Ft(menu-complete)d(\(\))630 3146 y Fu(Similar)d(to)g -Ft(complete)p Fu(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f -(completed)i(with)e(a)i(single)f(matc)m(h)630 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 Ft(menu-complete)630 3365 y Fu(steps)i(through)g -(the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i -(matc)m(h)f(in)f(turn.)630 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 Ft(bell-style)p -Fu(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57 -b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i -Fr(n)630 3694 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e -(matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f -(used)g(to)630 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 Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m -(y)i(default.)150 4078 y Ft(menu-complete-backward)24 -b(\(\))630 4188 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p -Fu(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g -(p)s(ossible)630 4297 y(completions,)d(as)e(if)h Ft(menu-complete)26 -b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150 -4462 y Ft(delete-char-or-list)25 b(\(\))630 4572 y Fu(Deletes)41 -b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s -(eginning)e(or)h(end)f(of)h(the)630 4681 y(line)50 b(\(lik)m(e)h -Ft(delete-char)p Fu(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,) -55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 4791 -y Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s -(ound)e(b)m(y)i(default.)150 4956 y Ft(complete-filename)c(\(M-/\))630 -5065 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g -(b)s(efore)f(p)s(oin)m(t.)150 5230 y Ft(possible-filename-comple)o -(tion)o(s)24 b(\(C-x)30 b(/\))630 5340 y Fu(List)f(the)g(p)s(ossible)f -(completions)h(of)g(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)g(treating)h -(it)f(as)g(a)f(\014lename.)p eop end -%%Page: 121 127 -TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(121)150 299 y Ft -(complete-username)26 b(\(M-~\))630 408 y Fu(A)m(ttempt)32 -b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)s(oin)m(t,)g(treating)i -(it)f(as)f(a)h(username.)150 569 y Ft(possible-username-comple)o(tion)o -(s)24 b(\(C-x)30 b(~\))630 679 y Fu(List)25 b(the)g(p)s(ossible)g -(completions)h(of)f(the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g -(it)g(as)f(a)g(username.)150 839 y Ft(complete-variable)h(\(M-$\))630 -949 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)s -(oin)m(t,)g(treating)i(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150 -1110 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 -b($\))630 1219 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f -(the)g(text)h(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h -(shell)630 1329 y(v)-5 b(ariable.)150 1490 y Ft(complete-hostname)26 -b(\(M-@\))630 1599 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i -(b)s(efore)e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(hostname.)150 -1760 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30 -b(@\))630 1869 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g -(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)h(treating)g(it)f(as)f(a)h -(hostname.)150 2030 y Ft(complete-command)h(\(M-!\))630 -2140 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p) -s(oin)m(t,)h(treating)h(it)g(as)f(a)g(command)g(name.)630 -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 Ft(possible-command-complet)o(ions)24 b(\(C-x)29 -b(!\))630 2739 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h -(text)g(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)g(a)f(command)630 -2848 y(name.)150 3009 y Ft(dynamic-complete-history)e(\(M-TAB\))630 -3119 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p) -s(oin)m(t,)g(comparing)h(the)f(text)h(against)h(lines)630 -3228 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i -(matc)m(hes.)150 3389 y Ft(dabbrev-expand)26 b(\(\))630 -3499 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s -(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630 -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 Ft(complete-into-braces)25 -b(\(M-{\))630 3878 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f -(insert)f(the)h(list)g(of)g(p)s(ossible)f(completions)i(enclosed)630 -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 Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 4471 y Ft(start-kbd-macro) -26 b(\(C-x)j(\(\))630 4580 y Fu(Begin)i(sa)m(ving)h(the)e(c)m -(haracters)i(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard) -g(macro.)150 4741 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630 -4851 y Fu(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m -(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i -(the)630 4960 y(de\014nition.)150 5121 y Ft(call-last-kbd-macro)c -(\(C-x)k(e\))630 5230 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard) -f(macro)h(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the) -630 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 Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(122)150 299 y Ft -(print-last-kbd-macro)25 b(\(\))630 408 y Fu(Prin)m(t)30 -b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)e(in)i(a)f(format)h -(suitable)g(for)f(the)h Fr(inputrc)k Fu(\014le.)150 604 -y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150 -774 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630 884 -y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g -Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d -(or)i(v)-5 b(ariable)630 994 y(assignmen)m(ts)31 b(found)e(there.)150 -1150 y Ft(abort)g(\(C-g\))630 1259 y Fu(Ab)s(ort)d(the)h(curren)m(t)f -(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5 -b(ject)26 b(to)i(the)630 1369 y(setting)j(of)g Ft(bell-style)p -Fu(\).)150 1525 y Ft(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p -Fj(x)p Ft(,)g(...)o(\))630 1634 y Fu(If)e(the)h(meta\014ed)g(c)m -(haracter)h Fr(x)34 b Fu(is)28 b(lo)m(w)m(ercase,)i(run)d(the)g -(command)h(that)g(is)g(b)s(ound)d(to)k(the)630 1744 y(corresp)s(onding) -g(upp)s(ercase)h(c)m(haracter.)150 1900 y Ft(prefix-meta)d(\(ESC\))630 -2010 y Fu(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62 -b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8 -b(.)630 2119 y(T)m(yping)30 b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 -b(alen)m(t)31 b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 2275 -y Ft(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 2385 y Fu(Incremen)m(tal)h -(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150 -2541 y Ft(revert-line)27 b(\(M-r\))630 2650 y Fu(Undo)33 -b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32 -b(is)h(lik)m(e)i(executing)f(the)f Ft(undo)f Fu(command)630 -2760 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.) -150 2916 y Ft(tilde-expand)d(\(M-&\))630 3026 y Fu(P)m(erform)j(tilde)h -(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 3182 -y Ft(set-mark)d(\(C-@\))630 3291 y Fu(Set)33 b(the)g(mark)f(to)i(the)f -(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g -(supplied,)f(the)h(mark)g(is)f(set)630 3401 y(to)f(that)g(p)s(osition.) -150 3557 y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 -3666 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43 -b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h -(sa)m(v)m(ed)630 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 Ft(character-search)26 b(\(C-]\))630 4042 y Fu(A)f(c)m(haracter)h(is) -f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s -(ccurrence)g(of)g(that)g(c)m(haracter.)630 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 Ft(character-search-backwar)o(d)24 -b(\(M-C-]\))630 4417 y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s -(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of) -g(that)630 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 Ft(skip-csi-sequence)d(\(\))630 4792 y Fu(Read)i(enough)f(c)m -(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f -(as)g(those)h(de\014ned)630 4902 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g -(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m -(trol)g(Sequence)630 5011 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 -b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Ft("\\)p -Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 5121 y(ducing)31 -b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e -(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 5230 y(command,)f -(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f -(editing)h(bu\013er.)44 b(This)31 b(is)630 5340 y(un)m(b)s(ound)d(b)m -(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)p -eop end +b(Command)29 b(Line)i(Editing)2062 b(122)150 299 y Ft(self-insert)27 +b(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 408 y Fu(Insert)g(y)m +(ourself.)150 573 y Ft(bracketed-paste-begin)25 b(\(\))630 +683 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e(b)s(ound)f +(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p Ft(")f +Fu(escap)s(e)h(sequence)630 793 y(sen)m(t)38 b(b)m(y)f(some)h +(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i(assigned)f(b)m(y)h +(default.)62 b(It)38 b(allo)m(ws)630 902 y(Readline)33 +b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g(single)g(unit)f(without) +h(treating)h(eac)m(h)f(c)m(har-)630 1012 y(acter)40 b(as)f(if)g(it)g +(had)f(b)s(een)g(read)h(from)f(the)h(k)m(eyb)s(oard.)66 +b(The)39 b(c)m(haracters)h(are)f(inserted)630 1121 y(as)i(if)g(eac)m(h) +i(one)e(w)m(as)h(b)s(ound)d(to)i Ft(self-insert)p Fu(\))e(instead)i(of) +h(executing)g(an)m(y)f(editing)630 1231 y(commands.)150 +1396 y Ft(transpose-chars)26 b(\(C-t\))630 1505 y Fu(Drag)33 +b(the)f(c)m(haracter)h(b)s(efore)f(the)g(cursor)f(forw)m(ard)h(o)m(v)m +(er)h(the)f(c)m(haracter)i(at)e(the)g(cursor,)630 1615 +y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m(ell.)57 +b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)g(of)h +(the)630 1724 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h(last)h +(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 b(Negativ)m(e)25 +b(argumen)m(ts)630 1834 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150 +1999 y Ft(transpose-words)c(\(M-t\))630 2109 y Fu(Drag)33 +b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f +(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630 +2218 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m +(t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g +(the)630 2328 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150 +2493 y Ft(upcase-word)c(\(M-u\))630 2602 y Fu(Upp)s(ercase)32 +b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i(w)m(ord.)45 +b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630 +2712 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h +(the)e(cursor.)150 2877 y Ft(downcase-word)d(\(M-l\))630 +2986 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i +(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m +(ercase)630 3096 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m +(v)m(e)i(the)f(cursor.)150 3261 y Ft(capitalize-word)26 +b(\(M-c\))630 3370 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m +(wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h +(capitalize)630 3480 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f +(mo)m(v)m(e)i(the)f(cursor.)150 3645 y Ft(overwrite-mode)26 +b(\(\))630 3754 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48 +b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,) +h(switc)m(hes)630 3864 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37 +b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m +(t,)i(switc)m(hes)e(to)630 3973 y(insert)30 b(mo)s(de.)41 +b(This)30 b(command)h(a\013ects)h(only)e Ft(emacs)f Fu(mo)s(de;)i +Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 4083 +y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f +Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)630 +4220 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s +(ound)c(to)j Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630 +4330 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h +(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 +4439 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter) +h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 4577 +y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150 +4781 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150 +4956 y Ft(kill-line)28 b(\(C-k\))630 5066 y Fu(Kill)j(the)f(text)i +(from)e(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f(line.)150 +5230 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630 +5340 y Fu(Kill)h(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s +(eginning)g(of)h(the)f(curren)m(t)g(line.)p eop end %%Page: 123 129 TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(123)150 299 y Ft(insert-comment)26 -b(\(M-#\))630 408 y Fu(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h -(the)f(v)-5 b(alue)36 b(of)g(the)g Ft(comment-begin)c -Fu(v)-5 b(ariable)36 b(is)g(in-)630 518 y(serted)c(at)g(the)g(b)s -(eginning)f(of)h(the)f(curren)m(t)h(line.)45 b(If)31 -b(a)h(n)m(umeric)f(argumen)m(t)h(is)g(supplied,)630 628 -y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 -b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g(line)630 -737 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f -Ft(comment-begin)p Fu(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g -(otherwise)g(the)630 847 y(c)m(haracters)42 b(in)d Ft(comment-begin)e -Fu(are)j(deleted)h(from)f(the)g(b)s(eginning)g(of)g(the)g(line.)71 -b(In)630 956 y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e -(if)g(a)g(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37 -b(default)630 1066 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c -Fu(causes)k(this)f(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g -(a)g(shell)630 1176 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f -(argumen)m(t)h(causes)g(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f -(remo)m(v)m(ed,)630 1285 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b) -m(y)f(the)h(shell.)150 1443 y Ft(dump-functions)26 b(\(\))630 -1553 y Fu(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g(their)g(k)m(ey) -h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630 -1663 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h -(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 -1772 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k -Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k -(default.)150 1931 y Ft(dump-variables)26 b(\(\))630 -2040 y Fu(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 -b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h -(output)f(stream.)630 2150 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is) -g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a) -m(y)g(that)630 2259 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h -Fr(inputrc)k Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c -(b)m(y)k(default.)150 2418 y Ft(dump-macros)c(\(\))630 -2527 y Fu(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences) -f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 -2637 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e -(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 -Fr(inputrc)35 b Fu(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) -d(b)m(y)630 2856 y(default.)150 3014 y Ft(glob-complete-word)e(\(M-g\)) -630 3124 y Fu(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g(treated)h -(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an)630 -3233 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23 -b(pattern)i(is)f(used)g(to)h(generate)h(a)e(list)h(of)g(matc)m(hing)630 -3343 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150 -3501 y Ft(glob-expand-word)c(\(C-x)j(*\))630 3611 y Fu(The)40 -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 Ft(*)p Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g -(expansion.)150 3988 y Ft(glob-list-expansions)25 b(\(C-x)k(g\))630 -4098 y Fu(The)k(list)h(of)f(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h -(b)s(een)f(generated)h(b)m(y)f Ft(glob-expand-word)630 -4208 y Fu(is)h(displa)m(y)m(ed,)h(and)e(the)h(line)g(is)f(redra)m(wn.) -50 b(If)33 b(a)h(n)m(umeric)g(argumen)m(t)g(is)f(supplied,)h(a)g(`)p -Ft(*)p Fu(')630 4317 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g -(expansion.)150 4475 y Ft(display-shell-version)25 b(\(C-x)k(C-v\))630 -4585 y Fu(Displa)m(y)j(v)m(ersion)e(information)h(ab)s(out)f(the)h -(curren)m(t)f(instance)h(of)f(Bash.)150 4743 y Ft(shell-expand-line)c -(\(M-C-e\))630 4853 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h -(do)s(es.)55 b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g -(expansion)630 4963 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m -(ord)f(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 -5072 y(page)e(21\).)150 5230 y Ft(history-expand-line)25 -b(\(M-^\))630 5340 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) -h(curren)m(t)f(line.)p eop end +b(Command)29 b(Line)i(Editing)2062 b(123)150 299 y Ft +(unix-line-discard)26 b(\(C-u\))630 408 y Fu(Kill)31 +b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s(eginning)g(of)h +(the)f(curren)m(t)g(line.)150 571 y Ft(kill-whole-line)c(\(\))630 +681 y Fu(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,) +h(no)f(matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36 +b(default,)630 791 y(this)30 b(is)h(un)m(b)s(ound.)150 +954 y Ft(kill-word)d(\(M-d\))630 1063 y Fu(Kill)i(from)f(p)s(oin)m(t)g +(to)h(the)g(end)e(of)i(the)f(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m +(w)m(een)g(w)m(ords,)f(to)h(the)g(end)630 1173 y(of)h(the)f(next)h(w)m +(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f +Ft(forward-word)p Fu(.)150 1336 y Ft(backward-kill-word)25 +b(\(M-DEL\))630 1445 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m +(t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g +Ft(backward-word)p Fu(.)150 1608 y Ft(shell-kill-word)d(\(\))630 +1718 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f +(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h +(the)g(end)630 1827 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8 +b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft +(shell-forward-word)p Fu(.)150 1990 y Ft(shell-backward-kill-word)24 +b(\(\))630 2100 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38 +b(W)-8 b(ord)22 b(b)s(oundaries)f(are)h(the)g(same)h(as)f +Ft(shell-backward-)630 2209 y(word)p Fu(.)150 2372 y +Ft(unix-word-rubout)k(\(C-w\))630 2482 y Fu(Kill)32 b(the)g(w)m(ord)f +(b)s(ehind)f(p)s(oin)m(t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f +(b)s(oundary)-8 b(.)43 b(The)31 b(killed)630 2592 y(text)g(is)g(sa)m(v) +m(ed)g(on)g(the)f(kill-ring.)150 2755 y Ft(unix-filename-rubout)25 +b(\(\))630 2864 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m +(t,)j(using)e(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f +(the)630 2974 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 +b(killed)h(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 +3137 y Ft(delete-horizontal-space)24 b(\(\))630 3246 +y Fu(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41 +b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 3409 +y Ft(kill-region)d(\(\))630 3519 y Fu(Kill)k(the)f(text)i(in)e(the)g +(curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un) +m(b)s(ound.)150 3682 y Ft(copy-region-as-kill)25 b(\(\))630 +3791 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f +(kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f +(a)m(w)m(a)m(y)-8 b(.)630 3901 y(By)31 b(default,)f(this)h(command)f +(is)g(un)m(b)s(ound.)150 4064 y Ft(copy-backward-word)25 +b(\(\))630 4173 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m +(t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries) +f(are)i(the)630 4283 y(same)31 b(as)f Ft(backward-word)p +Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 +4446 y Ft(copy-forward-word)26 b(\(\))630 4556 y Fu(Cop)m(y)31 +b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h +(bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630 +4665 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 +b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 +4828 y Ft(yank)f(\(C-y\))630 4938 y Fu(Y)-8 b(ank)31 +b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h +(p)s(oin)m(t.)150 5101 y Ft(yank-pop)d(\(M-y\))630 5210 +y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54 +b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630 +5320 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p +Fu(.)p eop end %%Page: 124 130 TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(124)150 299 y Ft(magic-space)27 -b(\(\))630 408 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g -(curren)m(t)g(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3) -630 518 y([History)31 b(In)m(teraction],)i(page)e(135\).)150 -686 y Ft(alias-expand-line)26 b(\(\))630 796 y Fu(P)m(erform)i(alias)i -(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h -([Aliases],)g(page)f(88\).)150 964 y Ft(history-and-alias-expand)o -(-lin)o(e)24 b(\(\))630 1074 y Fu(P)m(erform)30 b(history)h(and)e -(alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150 -1242 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 -1352 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 -1520 y Ft(operate-and-get-next)25 b(\(C-o\))630 1630 -y Fu(Accept)42 b(the)e(curren)m(t)h(line)f(for)h(execution)g(and)f -(fetc)m(h)i(the)e(next)h(line)g(relativ)m(e)i(to)e(the)630 -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 -Ft(edit-and-execute-command)24 b(\(C-xC-e\))630 2017 -y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f -(command)h(line,)h(and)e(execute)i(the)f(result)g(as)g(shell)630 -2127 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h -Ft($VISUAL)p Fu(,)f Ft($EDITOR)p Fu(,)h(and)d Ft(emacs)g -Fu(as)h(the)630 2236 y(editor,)31 b(in)f(that)h(order.)150 -2482 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 2642 -y Fu(While)32 b(the)g(Readline)g(library)f(do)s(es)g(not)h(ha)m(v)m(e)h -(a)f(full)f(set)h(of)g Ft(vi)f Fu(editing)h(functions,)f(it)h(do)s(es)g -(con)m(tain)150 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 Ft(vi)g Fu(mo)s(de)f(b)s(eha)m(v) -m(es)i(as)f(sp)s(eci\014ed)f(in)150 2861 y(the)e Fm(posix)e -Fu(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 Ft(emacs)f Fu(and)g Ft(vi)g -Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p Ft(set)30 b(-o)150 -3114 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p -Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j -(page)e(58\).)83 b(The)150 3223 y(Readline)31 b(default)g(is)f -Ft(emacs)f Fu(mo)s(de.)275 3367 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f -(in)g Ft(vi)f Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g -(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 3476 y(had)f(t)m(yp)s -(ed)g(an)g(`)p Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f -Fu(switc)m(hes)i(y)m(ou)g(in)m(to)h(`command')e(mo)s(de,)h(where)e(y)m -(ou)i(can)g(edit)g(the)150 3586 y(text)35 b(of)f(the)g(line)g(with)f -(the)h(standard)f Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e) -f(to)f(previous)g(history)f(lines)h(with)150 3695 y(`)p -Ft(k)p Fu(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p -Ft(j)p Fu(',)g(and)g(so)h(forth.)150 3941 y Fs(8.6)68 -b(Programmable)47 b(Completion)150 4101 y Fu(When)25 -b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)g -(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150 4210 -y(sp)s(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 b Fu(\))39 -b(has)h(b)s(een)f(de\014ned)f(using)h(the)h Ft(complete)d -Fu(builtin)j(\(see)g(Section)h(8.7)150 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\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f -(with)h(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d -Fu(is)i(used.)40 b(If)29 b(the)g(command)g(w)m(ord)150 -5011 y(is)e(a)h(full)e(pathname,)i(a)g(compsp)s(ec)e(for)h(the)g(full)g -(pathname)g(is)g(searc)m(hed)h(for)f(\014rst.)39 b(If)26 -b(no)h(compsp)s(ec)g(is)150 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 Ft(-D)e Fu(option)i(to)g Ft(complete)d -Fu(is)j(used)e(as)i(the)g(default.)p eop end +b(Command)29 b(Line)i(Editing)2062 b(124)150 299 y Fk(8.4.5)63 +b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m(ts)150 477 y +Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j Fj(M-1)p +Ft(,)h(...)f Fj(M--)p Ft(\))630 586 y Fu(Add)d(this)h(digit)g(to)h(the) +f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f(new)f +(argumen)m(t.)630 696 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i(argumen) +m(t.)150 867 y Ft(universal-argument)25 b(\(\))630 977 +y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g(argumen)m +(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m(y)f(one)630 +1087 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h(leading)h(min)m +(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 +1196 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b) +m(y)f(digits,)i(executing)f Ft(universal-argument)630 +1306 y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h +(otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630 +1415 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y) +d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630 +1525 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f +(the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630 +1635 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h +(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630 +1744 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h +(second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 +1854 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g +(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 2065 y Fk(8.4.6)63 +b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42 +b(Y)-10 b(ou)150 2243 y Ft(complete)28 b(\(TAB\))630 +2353 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g +(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630 +2462 y(p)s(erformed)33 b(is)h(application-sp)s(eci\014c.)53 +b(Bash)35 b(attempts)g(completion)g(treating)h(the)e(text)630 +2572 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)s(egins)e +(with)h(`)p Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b)s(egins)e +(with)630 2681 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h +(b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f(\(including)h +(aliases)i(and)630 2791 y(functions\))j(in)f(turn.)53 +b(If)34 b(none)g(of)h(these)h(pro)s(duces)d(a)i(matc)m(h,)i(\014lename) +e(completion)h(is)630 2901 y(attempted.)150 3072 y Ft +(possible-completions)25 b(\(M-?\))630 3182 y Fu(List)35 +b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s(efore)e(p)s +(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 3291 +y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f +(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 b(alue)33 +b(of)630 3401 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5 +b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)38 +b Ft(COLUMNS)p Fu(,)630 3510 y(or)30 b(the)h(screen)f(width,)g(in)g +(that)h(order.)150 3682 y Ft(insert-completions)25 b(\(M-*\))630 +3791 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f +(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630 +3901 y(b)m(y)g Ft(possible-completions)p Fu(.)150 4073 +y Ft(menu-complete)d(\(\))630 4182 y Fu(Similar)d(to)g +Ft(complete)p Fu(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f +(completed)i(with)e(a)i(single)f(matc)m(h)630 4292 y(from)37 +b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39 +b(execution)g(of)f Ft(menu-complete)630 4401 y Fu(steps)i(through)g +(the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i +(matc)m(h)f(in)f(turn.)630 4511 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g +(of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5 +b(ject)36 b(to)i(the)f(setting)630 4621 y(of)f Ft(bell-style)p +Fu(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57 +b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i +Fr(n)630 4730 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e +(matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f +(used)g(to)630 4840 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g +(list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s +(ound)e(to)630 4949 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m +(y)i(default.)150 5121 y Ft(menu-complete-backward)24 +b(\(\))630 5230 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p +Fu(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g +(p)s(ossible)630 5340 y(completions,)d(as)e(if)h Ft(menu-complete)26 +b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)p +eop end %%Page: 125 131 TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(125)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)h(the)f(w)m(ord)h(b)s(eing)f(completed)h(are)g(returned.)44 -b(When)31 b(the)h Ft(-f)f Fu(or)h Ft(-d)f Fu(option)h(is)f(used)g(for)h -(\014lename)150 874 y(or)e(directory)h(name)f(completion,)i(the)e -(shell)h(v)-5 b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter) -g(the)f(matc)m(hes.)42 b(See)150 984 y(Section)31 b(5.2)h([Bash)e(V)-8 -b(ariables],)33 b(page)e(69,)g(for)f(a)h(description)g(of)f -Ft(FIGNORE)p Fu(.)275 1121 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f -(b)m(y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g -Ft(-G)e Fu(option)i(are)g(generated)150 1230 y(next.)41 -b(The)29 b(w)m(ords)g(generated)h(b)m(y)g(the)g(pattern)f(need)h(not)f -(matc)m(h)i(the)f(w)m(ord)f(b)s(eing)g(completed.)41 -b(The)150 1340 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32 -b(is)g(not)g(used)e(to)i(\014lter)g(the)g(matc)m(hes,)h(but)d(the)i -Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 1450 y(is)30 -b(used.)275 1587 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the) -g(argumen)m(t)h(to)g(the)f Ft(-W)f Fu(option)i(is)f(considered.)60 -b(The)37 b(string)150 1696 y(is)c(\014rst)e(split)i(using)f(the)h(c)m -(haracters)h(in)e(the)h Ft(IFS)e Fu(sp)s(ecial)j(v)-5 -b(ariable)33 b(as)g(delimiters.)48 b(Shell)32 b(quoting)h(is)150 -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(21\).)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(29\).) -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)36 -b Ft(-F)f Fu(and)g Ft(-C)g Fu(options)h(is)g(in)m(v)m(ok)m(ed.)59 -b(When)35 b(the)h(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)i -(the)e Ft(COMP_)150 2710 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p -Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e Ft(COMP_TYPE)f Fu(v)-5 -b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed) -150 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(69\).)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 Ft(COMP_WORDS)j -Fu(and)i Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74 -b(When)41 b(the)h(function)f(or)h(command)f(is)150 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)j(function)h(sp) -s(eci\014ed)f(with)g Ft(-F)g Fu(is)h(in)m(v)m(ok)m(ed)h(\014rst.)53 -b(The)35 b(function)f(ma)m(y)h(use)g(an)m(y)g(of)g(the)g(shell)150 -3724 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d -Fu(and)i Ft(compopt)e Fu(builtins)i(describ)s(ed)f(b)s(elo)m(w)h(\(see) -i(Section)f(8.7)150 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 Ft(COMPREPLY)d Fu(arra)m(y)j(v)-5 b(ariable,)31 -b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 4080 y(Next,)26 -b(an)m(y)f(command)f(sp)s(eci\014ed)g(with)g(the)h Ft(-C)f -Fu(option)h(is)f(in)m(v)m(ok)m(ed)i(in)e(an)g(en)m(vironmen)m(t)h -(equiv)-5 b(alen)m(t)150 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)24 -b(all)i(of)f(the)f(p)s(ossible)g(completions)i(are)f(generated,)i(an)m -(y)e(\014lter)g(sp)s(eci\014ed)e(with)i(the)g Ft(-X)e -Fu(option)150 4545 y(is)34 b(applied)g(to)g(the)h(list.)52 -b(The)33 b(\014lter)h(is)g(a)h(pattern)f(as)g(used)f(for)h(pathname)g -(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 4655 -y(pattern)28 b(is)f(replaced)h(with)g(the)f(text)i(of)f(the)f(w)m(ord)h -(b)s(eing)f(completed.)40 b(A)28 b(literal)h(`)p Ft(&)p -Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 4765 y(with)38 -b(a)h(bac)m(kslash;)k(the)38 b(bac)m(kslash)h(is)g(remo)m(v)m(ed)g(b)s -(efore)f(attempting)h(a)g(matc)m(h.)65 b(An)m(y)39 b(completion)150 -4874 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m -(ed)h(from)f(the)h(list.)44 b(A)32 b(leading)g(`)p Ft(!)p -Fu(')f(negates)i(the)f(pattern;)150 4984 y(in)e(this)g(case)i(an)m(y)e -(completion)i(not)f(matc)m(hing)g(the)g(pattern)f(will)h(b)s(e)f(remo)m -(v)m(ed.)275 5121 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f -(su\016x)h(sp)s(eci\014ed)f(with)i(the)f Ft(-P)g Fu(and)g -Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 5230 -y(mem)m(b)s(er)31 b(of)g(the)h(completion)h(list,)f(and)f(the)h(result) -f(is)h(returned)e(to)i(the)g(Readline)g(completion)h(co)s(de)150 -5340 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)p -eop end +b(Command)29 b(Line)i(Editing)2062 b(125)150 299 y Ft +(delete-char-or-list)25 b(\(\))630 408 y Fu(Deletes)41 +b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s +(eginning)e(or)h(end)f(of)h(the)630 518 y(line)50 b(\(lik)m(e)h +Ft(delete-char)p Fu(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,) +55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 628 y +Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s +(ound)e(b)m(y)i(default.)150 803 y Ft(complete-filename)c(\(M-/\))630 +913 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g(b) +s(efore)f(p)s(oin)m(t.)150 1088 y Ft(possible-filename-comple)o(tion)o +(s)24 b(\(C-x)30 b(/\))630 1197 y Fu(List)f(the)g(p)s(ossible)f +(completions)h(of)g(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)g(treating)h +(it)f(as)g(a)f(\014lename.)150 1373 y Ft(complete-username)e(\(M-~\)) +630 1482 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore) +e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(username.)150 +1658 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30 +b(~\))630 1767 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f +(the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)f(a)g +(username.)150 1942 y Ft(complete-variable)h(\(M-$\))630 +2052 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p) +s(oin)m(t,)g(treating)i(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150 +2227 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 +b($\))630 2337 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f +(the)g(text)h(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h +(shell)630 2446 y(v)-5 b(ariable.)150 2622 y Ft(complete-hostname)26 +b(\(M-@\))630 2731 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i +(b)s(efore)e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(hostname.)150 +2907 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30 +b(@\))630 3016 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g +(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)h(treating)g(it)f(as)f(a)h +(hostname.)150 3191 y Ft(complete-command)h(\(M-!\))630 +3301 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p) +s(oin)m(t,)h(treating)h(it)g(as)f(a)g(command)g(name.)630 +3411 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text) +h(against)g(aliases,)53 b(reserv)m(ed)630 3520 y(w)m(ords,)36 +b(shell)g(functions,)h(shell)e(builtins,)i(and)e(\014nally)g +(executable)i(\014lenames,)g(in)e(that)630 3630 y(order.)150 +3805 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29 +b(!\))630 3915 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h +(text)g(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)g(a)f(command)630 +4024 y(name.)150 4200 y Ft(dynamic-complete-history)e(\(M-TAB\))630 +4309 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p) +s(oin)m(t,)g(comparing)h(the)f(text)h(against)h(lines)630 +4419 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i +(matc)m(hes.)150 4594 y Ft(dabbrev-expand)26 b(\(\))630 +4704 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s +(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630 +4813 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e +(completion)j(matc)m(hes.)150 4988 y Ft(complete-into-braces)25 +b(\(M-{\))630 5098 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f +(insert)f(the)h(list)g(of)g(p)s(ossible)f(completions)i(enclosed)630 +5208 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5 +b(ailable)37 b(to)e(the)g(shell)g(\(see)g(Section)h(3.5.1)g([Brace)g +(Ex-)630 5317 y(pansion],)30 b(page)h(21\).)p eop end %%Page: 126 132 TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(126)275 299 y(If)27 -b(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h(an)m(y)f -(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d Fu(op-)150 -408 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d Fu(when)h(the)h -(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h(completion)150 -518 y(is)h(attempted.)275 654 y(If)35 b(the)g Ft(-o)30 -b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i Ft(complete)e -Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150 -764 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h -(matc)m(hes)g(are)g(added)f(to)h(the)f(results)g(of)h(the)150 -873 y(other)31 b(actions.)275 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)30 b(the)g(Readline)h(default)f -(of)g(\014lename)h(completion)g(is)f(disabled.)41 b(If)29 -b(the)i Ft(-o)e(bashdefault)e Fu(option)150 1338 y(w)m(as)d(supplied)e -(to)j Ft(complete)c Fu(when)i(the)g(compsp)s(ec)h(w)m(as)g(de\014ned,)g -(the)f(default)h(Bash)g(completions)h(are)150 1448 y(attempted)j(if)f -(the)h(compsp)s(ec)f(generates)h(no)f(matc)m(hes.)41 -b(If)27 b(the)g Ft(-o)j(default)25 b Fu(option)j(w)m(as)f(supplied)f -(to)150 1557 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i -(de\014ned,)e(Readline's)i(default)f(completion)h(will)f(b)s(e)f(p)s -(erformed)150 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 Fr(mark-directories) -45 b Fu(Readline)c(v)-5 b(ariable,)150 2132 y(regardless)31 -b(of)f(the)h(setting)g(of)g(the)f Fr(mark-symlink)m(ed-directories)36 -b Fu(Readline)31 b(v)-5 b(ariable.)275 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)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion) -g(sp)s(eci\014ed)f(with)g Ft(-D)p Fu(.)72 b(It's)42 b(p)s(ossible)f -(for)g(shell)150 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 Ft(_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)c(-o)k(bashdefault)e(-o)i(default)150 -4310 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150 -4469 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5 -b(ailable)24 b(to)e(manipulate)f(the)h(programmable)f(completion)h -(facilities:)150 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 -Ft(compgen)870 4985 y(compgen)46 b([)p Fj(option)p Ft(])f([)p -Fj(word)p Ft(])630 5121 y Fu(Generate)27 b(p)s(ossible)e(completion)i -(matc)m(hes)g(for)e Fr(w)m(ord)k Fu(according)e(to)f(the)g -Fr(option)p Fu(s,)h(whic)m(h)630 5230 y(ma)m(y)32 b(b)s(e)f(an)m(y)h -(option)g(accepted)g(b)m(y)g(the)f Ft(complete)f Fu(builtin)h(with)g -(the)g(exception)i(of)f Ft(-p)630 5340 y Fu(and)39 b -Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m(hes)g(to)g(the)g(standard)f -(output.)68 b(When)39 b(using)g(the)h Ft(-F)p eop end +b(Command)29 b(Line)i(Editing)2062 b(126)150 299 y Fk(8.4.7)63 +b(Keyb)s(oard)41 b(Macros)150 469 y Ft(start-kbd-macro)26 +b(\(C-x)j(\(\))630 579 y Fu(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i +(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)g(macro.)150 +735 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630 845 y Fu(Stop)e(sa)m(ving)h +(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m(to)i(the)e(curren)m(t)g(k)m +(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 954 +y(de\014nition.)150 1110 y Ft(call-last-kbd-macro)c(\(C-x)k(e\))630 +1220 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h +(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)630 +1329 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s +(oard.)150 1486 y Ft(print-last-kbd-macro)25 b(\(\))630 +1595 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned) +e(in)i(a)f(format)h(suitable)g(for)f(the)h Fr(inputrc)k +Fu(\014le.)150 1791 y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands) +150 1962 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630 +2071 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g +Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d +(or)i(v)-5 b(ariable)630 2181 y(assignmen)m(ts)31 b(found)e(there.)150 +2337 y Ft(abort)g(\(C-g\))630 2447 y Fu(Ab)s(ort)d(the)h(curren)m(t)f +(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5 +b(ject)26 b(to)i(the)630 2556 y(setting)j(of)g Ft(bell-style)p +Fu(\).)150 2712 y Ft(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p +Fj(x)p Ft(,)g(...)o(\))630 2822 y Fu(If)e(the)h(meta\014ed)g(c)m +(haracter)h Fr(x)34 b Fu(is)28 b(lo)m(w)m(ercase,)i(run)d(the)g +(command)h(that)g(is)g(b)s(ound)d(to)k(the)630 2932 y(corresp)s(onding) +g(upp)s(ercase)h(c)m(haracter.)150 3088 y Ft(prefix-meta)d(\(ESC\))630 +3197 y Fu(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62 +b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8 +b(.)630 3307 y(T)m(yping)30 b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 +b(alen)m(t)31 b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 3463 +y Ft(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 3573 y Fu(Incremen)m(tal)h +(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150 +3729 y Ft(revert-line)27 b(\(M-r\))630 3838 y Fu(Undo)33 +b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32 +b(is)h(lik)m(e)i(executing)f(the)f Ft(undo)f Fu(command)630 +3948 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.) +150 4104 y Ft(tilde-expand)d(\(M-&\))630 4214 y Fu(P)m(erform)j(tilde)h +(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 4370 +y Ft(set-mark)d(\(C-@\))630 4480 y Fu(Set)33 b(the)g(mark)f(to)i(the)f +(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g +(supplied,)f(the)h(mark)g(is)f(set)630 4589 y(to)f(that)g(p)s(osition.) +150 4745 y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 +4855 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43 +b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h +(sa)m(v)m(ed)630 4965 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s +(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 5121 +y Ft(character-search)26 b(\(C-]\))630 5230 y Fu(A)f(c)m(haracter)h(is) +f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s +(ccurrence)g(of)g(that)g(c)m(haracter.)630 5340 y(A)30 +b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s +(ccurrences.)p eop end %%Page: 127 133 TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(127)630 299 y(or)33 -b Ft(-C)f Fu(options,)i(the)e(v)-5 b(arious)33 b(shell)g(v)-5 -b(ariables)33 b(set)g(b)m(y)g(the)g(programmable)g(completion)630 -408 y(facilities,)g(while)d(a)m(v)-5 b(ailable,)33 b(will)e(not)g(ha)m -(v)m(e)g(useful)f(v)-5 b(alues.)630 542 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 652 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 762 y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j -Fu(is)d(sp)s(eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g -Fr(w)m(ord)j Fu(will)630 871 y(b)s(e)d(displa)m(y)m(ed.)630 -1005 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 1115 y(generated.)150 1273 y Ft(complete)870 -1407 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p -Ft(])e([-DE])h([-A)h Fj(action)p Ft(])f([-)870 1517 y(G)h -Fj(globpat)p Ft(])f([-W)h Fj(wordlist)p Ft(])870 1626 -y([-F)g Fj(function)p Ft(])e([-C)i Fj(command)p Ft(])f([-X)h -Fj(filterpat)p Ft(])870 1736 y([-P)g Fj(prefix)p Ft(])f([-S)h -Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f Ft(...])870 -1845 y(complete)g(-pr)g([-DE])h([)p Fj(name)f Ft(...)o(])630 -1979 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i(eac)m(h)g -Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63 b(If)38 -b(the)f Ft(-p)g Fu(option)630 2089 y(is)30 b(supplied,)e(or)i(if)g(no)f -(options)h(are)g(supplied,)f(existing)h(completion)h(sp)s -(eci\014cations)g(are)630 2198 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g -(that)h(allo)m(ws)g(them)e(to)i(b)s(e)e(reused)f(as)i(input.)38 -b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 2308 -y(a)i(completion)h(sp)s(eci\014cation)f(for)g(eac)m(h)h -Fr(name)p Fu(,)f(or,)h(if)e(no)h Fr(name)5 b Fu(s)27 -b(are)h(supplied,)g(all)g(com-)630 2418 y(pletion)k(sp)s -(eci\014cations.)44 b(The)30 b Ft(-D)h Fu(option)h(indicates)g(that)f -(the)h(remaining)f(options)h(and)630 2527 y(actions)27 -b(should)e(apply)g(to)i(the)f(\\default")h(command)e(completion;)k -(that)e(is,)g(completion)630 2637 y(attempted)g(on)f(a)h(command)f(for) -g(whic)m(h)g(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.) -630 2746 y(The)f Ft(-E)g Fu(option)h(indicates)h(that)f(the)g -(remaining)g(options)g(and)f(actions)i(should)e(apply)g(to)630 -2856 y(\\empt)m(y")32 b(command)e(completion;)i(that)f(is,)f -(completion)i(attempted)f(on)g(a)f(blank)g(line.)630 -2990 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 3099 -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 3209 -y(page)31 b(124\).)42 b(The)30 b Ft(-D)g Fu(option)h(tak)m(es)h -(precedence)f(o)m(v)m(er)g Ft(-E)p Fu(.)630 3343 y(Other)d(options,)i -(if)f(sp)s(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40 -b(The)29 b(argumen)m(ts)g(to)h(the)630 3453 y Ft(-G)p -Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h Fu(options)h(\(and,)h(if)f -(necessary)-8 b(,)42 b(the)e Ft(-P)f Fu(and)f Ft(-S)h -Fu(options\))h(should)f(b)s(e)630 3562 y(quoted)28 b(to)h(protect)g -(them)f(from)f(expansion)h(b)s(efore)g(the)g Ft(complete)e -Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 3720 y Ft(-o)i -Fj(comp-option)1110 3830 y Fu(The)c Fr(comp-option)i -Fu(con)m(trols)g(sev)m(eral)h(asp)s(ects)e(of)g(the)g(compsp)s(ec's)g -(b)s(eha)m(v-)1110 3940 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h -(generation)h(of)e(completions.)41 b Fr(comp-option)27 -b Fu(ma)m(y)1110 4049 y(b)s(e)j(one)g(of:)1110 4208 y -Ft(bashdefault)1590 4317 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g -(default)f(Bash)h(completions)g(if)g(the)1590 4427 y(compsp)s(ec)i -(generates)i(no)e(matc)m(hes.)1110 4585 y Ft(default)144 -b Fu(Use)22 b(Readline's)g(default)g(\014lename)g(completion)g(if)g -(the)g(comp-)1590 4695 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 -4853 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h -(completion)g(if)f(the)g(compsp)s(ec)1590 4963 y(generates)32 -b(no)e(matc)m(hes.)1110 5121 y Ft(filenames)1590 5230 -y Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j -(\014lenames,)1590 5340 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)p -eop end +b(Command)29 b(Line)i(Editing)2062 b(127)150 299 y Ft +(character-search-backwar)o(d)24 b(\(M-C-]\))630 408 +y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v) +m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of)g(that)630 +518 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f(searc)m(hes)h +(for)e(subsequen)m(t)f(o)s(ccurrences.)150 722 y Ft(skip-csi-sequence)d +(\(\))630 831 y Fu(Read)i(enough)f(c)m(haracters)h(to)g(consume)f(a)h +(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f(as)g(those)h(de\014ned)630 +941 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g(and)f(End.)60 +b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m(trol)g(Sequence) +630 1050 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 +b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Ft("\\)p +Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 1160 y(ducing)31 +b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e +(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 1270 y(command,)f +(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f +(editing)h(bu\013er.)44 b(This)31 b(is)630 1379 y(un)m(b)s(ound)d(b)m +(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150 +1583 y Ft(insert-comment)26 b(\(M-#\))630 1692 y Fu(Without)36 +b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36 +b(of)g(the)g Ft(comment-begin)c Fu(v)-5 b(ariable)36 +b(is)g(in-)630 1802 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f +(curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g +(supplied,)630 1911 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 +b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g +(line)630 2021 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 +b(alue)31 b(of)f Ft(comment-begin)p Fu(,)e(the)i(v)-5 +b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 2131 +y(c)m(haracters)42 b(in)d Ft(comment-begin)e Fu(are)j(deleted)h(from)f +(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 2240 +y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e(if)g(a)g +(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37 b(default)630 +2350 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c Fu(causes)k(this)f +(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g(a)g(shell)630 +2459 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f(argumen)m(t)h(causes)g +(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f(remo)m(v)m(ed,)630 +2569 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)m(y)f(the)h(shell.) +150 2772 y Ft(dump-functions)26 b(\(\))630 2882 y Fu(Prin)m(t)g(all)i +(of)e(the)h(functions)f(and)g(their)g(k)m(ey)h(bindings)e(to)j(the)e +(Readline)h(output)f(stream.)630 2992 y(If)31 b(a)h(n)m(umeric)g +(argumen)m(t)g(is)g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f +(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 3101 y(it)f(can)g(b)s(e)e(made)i +(part)f(of)g(an)h Fr(inputrc)k Fu(\014le.)41 b(This)29 +b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k(default.)150 +3305 y Ft(dump-variables)26 b(\(\))630 3414 y Fu(Prin)m(t)21 +b(all)h(of)g(the)f(settable)i(v)-5 b(ariables)22 b(and)f(their)g(v)-5 +b(alues)22 b(to)g(the)f(Readline)h(output)f(stream.)630 +3524 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h +(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 +3634 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k +Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k +(default.)150 3837 y Ft(dump-macros)c(\(\))630 3947 y +Fu(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)f(b)s +(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 +4056 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e +(supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630 +4166 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e +Fr(inputrc)35 b Fu(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) +d(b)m(y)630 4275 y(default.)150 4479 y Ft(glob-complete-word)e(\(M-g\)) +630 4589 y Fu(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g(treated)h +(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an)630 +4698 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23 +b(pattern)i(is)f(used)g(to)h(generate)h(a)e(list)h(of)g(matc)m(hing)630 +4808 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150 +5011 y Ft(glob-expand-word)c(\(C-x)j(*\))630 5121 y Fu(The)40 +b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g(as)g(a)g(pattern)g +(for)f(pathname)g(expansion,)k(and)630 5230 y(the)c(list)g(of)f(matc)m +(hing)i(\014le)e(names)g(is)h(inserted,)h(replacing)g(the)e(w)m(ord.)67 +b(If)39 b(a)h(n)m(umeric)630 5340 y(argumen)m(t)31 b(is)f(supplied,)g +(a)g(`)p Ft(*)p Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g +(expansion.)p eop end %%Page: 128 134 TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(128)1590 299 y(adding)25 -b(a)h(slash)f(to)h(directory)g(names)f(quoting)h(sp)s(ecial)g(c)m(har-) -1590 408 y(acters,)39 b(or)d(suppressing)f(trailing)i(spaces\).)59 -b(This)35 b(option)i(is)1590 518 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 -628 y Ft(-F)p Fu(.)1110 787 y Ft(noquote)144 b Fu(T)-8 -b(ell)28 b(Readline)g(not)g(to)g(quote)g(the)g(completed)g(w)m(ords)f -(if)h(they)1590 896 y(are)j(\014lenames)f(\(quoting)h(\014lenames)g(is) -f(the)h(default\).)1110 1055 y Ft(nospace)144 b Fu(T)-8 -b(ell)40 b(Readline)g(not)g(to)g(app)s(end)d(a)j(space)g(\(the)f -(default\))h(to)1590 1165 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f -(of)g(the)h(line.)1110 1324 y Ft(plusdirs)96 b Fu(After)30 -b(an)m(y)h(matc)m(hes)g(de\014ned)d(b)m(y)i(the)g(compsp)s(ec)g(are)g -(gener-)1590 1433 y(ated,)g(directory)f(name)g(completion)i(is)d -(attempted)i(and)f(an)m(y)1590 1543 y(matc)m(hes)j(are)e(added)g(to)h -(the)g(results)f(of)g(the)h(other)g(actions.)630 1702 -y Ft(-A)f Fj(action)66 b Fu(The)25 b Fr(action)h Fu(ma)m(y)g(b)s(e)e -(one)h(of)h(the)f(follo)m(wing)i(to)e(generate)i(a)e(list)h(of)f(p)s -(ossible)1110 1811 y(completions:)1110 1970 y Ft(alias)240 -b Fu(Alias)31 b(names.)41 b(Ma)m(y)31 b(also)h(b)s(e)e(sp)s(eci\014ed)f -(as)i Ft(-a)p Fu(.)1110 2129 y Ft(arrayvar)96 b Fu(Arra)m(y)31 -b(v)-5 b(ariable)31 b(names.)1110 2288 y Ft(binding)144 -b Fu(Readline)30 b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h -([Bindable)1590 2398 y(Readline)h(Commands],)f(page)h(115\).)1110 -2556 y Ft(builtin)144 b Fu(Names)21 b(of)g(shell)f(builtin)h(commands.) -37 b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 2666 -y(as)31 b Ft(-b)p Fu(.)1110 2825 y Ft(command)144 b Fu(Command)29 -b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i -Ft(-c)p Fu(.)1110 2984 y Ft(directory)1590 3093 y Fu(Directory)h -(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g -Ft(-d)p Fu(.)1110 3252 y Ft(disabled)96 b Fu(Names)31 -b(of)g(disabled)f(shell)g(builtins.)1110 3411 y Ft(enabled)144 -b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)1110 -3570 y Ft(export)192 b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5 -b(ariables.)49 b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590 -3680 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 3839 y Ft(file)288 -b Fu(File)32 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f -(as)i Ft(-f)p Fu(.)1110 3998 y Ft(function)96 b Fu(Names)31 -b(of)g(shell)f(functions.)1110 4156 y Ft(group)240 b -Fu(Group)30 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g -(as)g Ft(-g)p Fu(.)1110 4315 y Ft(helptopic)1590 4425 -y Fu(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h -Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 4534 y(tion)31 -b(4.2)g([Bash)g(Builtins],)g(page)g(48\).)1110 4693 y -Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f(the)g -(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 4803 y(the)55 b -Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h -([Bash)1590 4913 y(V)-8 b(ariables],)32 b(page)f(69\).)1110 -5071 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f -(activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s(eci-)1590 -5181 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 5340 y Ft(keyword)144 -b Fu(Shell)30 b(reserv)m(ed)h(w)m(ords.)40 b(Ma)m(y)32 -b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-k)p Fu(.)p -eop end +b(Command)29 b(Line)i(Editing)2062 b(128)150 299 y Ft +(glob-list-expansions)25 b(\(C-x)k(g\))630 408 y Fu(The)k(list)h(of)f +(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h(b)s(een)f(generated)h(b)m +(y)f Ft(glob-expand-word)630 518 y Fu(is)h(displa)m(y)m(ed,)h(and)e +(the)h(line)g(is)f(redra)m(wn.)50 b(If)33 b(a)h(n)m(umeric)g(argumen)m +(t)g(is)f(supplied,)h(a)g(`)p Ft(*)p Fu(')630 628 y(is)c(app)s(ended)f +(b)s(efore)h(pathname)g(expansion.)150 803 y Ft(display-shell-version) +25 b(\(C-x)k(C-v\))630 912 y Fu(Displa)m(y)j(v)m(ersion)e(information)h +(ab)s(out)f(the)h(curren)m(t)f(instance)h(of)f(Bash.)150 +1088 y Ft(shell-expand-line)c(\(M-C-e\))630 1197 y Fu(Expand)34 +b(the)h(line)h(as)g(the)f(shell)h(do)s(es.)55 b(This)34 +b(p)s(erforms)g(alias)i(and)f(history)g(expansion)630 +1307 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m(ord)f +(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 +1416 y(page)e(21\).)150 1592 y Ft(history-expand-line)25 +b(\(M-^\))630 1701 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) +h(curren)m(t)f(line.)150 1876 y Ft(magic-space)d(\(\))630 +1986 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g +(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3)630 +2096 y([History)31 b(In)m(teraction],)i(page)e(139\).)150 +2271 y Ft(alias-expand-line)26 b(\(\))630 2380 y Fu(P)m(erform)i(alias) +i(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h +([Aliases],)g(page)f(90\).)150 2556 y Ft(history-and-alias-expand)o +(-lin)o(e)24 b(\(\))630 2665 y Fu(P)m(erform)30 b(history)h(and)e +(alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150 +2840 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 +2950 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 +3125 y Ft(operate-and-get-next)25 b(\(C-o\))630 3235 +y Fu(Accept)42 b(the)e(curren)m(t)h(line)f(for)h(execution)g(and)f +(fetc)m(h)i(the)e(next)h(line)g(relativ)m(e)i(to)e(the)630 +3344 y(curren)m(t)30 b(line)h(from)f(the)g(history)h(for)f(editing.)41 +b(An)m(y)31 b(argumen)m(t)f(is)h(ignored.)150 3520 y +Ft(edit-and-execute-command)24 b(\(C-xC-e\))630 3629 +y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f +(command)h(line,)h(and)e(execute)i(the)f(result)g(as)g(shell)630 +3739 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h +Ft($VISUAL)p Fu(,)f Ft($EDITOR)p Fu(,)h(and)d Ft(emacs)g +Fu(as)h(the)630 3848 y(editor,)31 b(in)f(that)h(order.)150 +4113 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 4272 +y Fu(While)32 b(the)g(Readline)g(library)f(do)s(es)g(not)h(ha)m(v)m(e)h +(a)f(full)f(set)h(of)g Ft(vi)f Fu(editing)h(functions,)f(it)h(do)s(es)g +(con)m(tain)150 4382 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f +(the)g(line.)52 b(The)34 b(Readline)g Ft(vi)g Fu(mo)s(de)f(b)s(eha)m(v) +m(es)i(as)f(sp)s(eci\014ed)f(in)150 4491 y(the)e Fm(posix)e +Fu(standard.)275 4642 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv) +m(ely)j(b)s(et)m(w)m(een)d Ft(emacs)f Fu(and)g Ft(vi)g +Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p Ft(set)30 b(-o)150 +4751 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p +Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j +(page)e(60\).)83 b(The)150 4861 y(Readline)31 b(default)g(is)f +Ft(emacs)f Fu(mo)s(de.)275 5011 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f +(in)g Ft(vi)f Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g +(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 5121 y(had)f(t)m(yp)s +(ed)g(an)g(`)p Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f +Fu(switc)m(hes)i(y)m(ou)g(in)m(to)h(`command')e(mo)s(de,)h(where)e(y)m +(ou)i(can)g(edit)g(the)150 5230 y(text)35 b(of)f(the)g(line)g(with)f +(the)h(standard)f Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e) +f(to)f(previous)g(history)f(lines)h(with)150 5340 y(`)p +Ft(k)p Fu(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p +Ft(j)p Fu(',)g(and)g(so)h(forth.)p eop end %%Page: 129 135 TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(129)1110 299 y Ft(running)144 -b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f(con)m(trol)h(is)g -(activ)m(e.)1110 463 y Ft(service)144 b Fu(Service)31 -b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s(eci\014ed)g(as)g -Ft(-s)p Fu(.)1110 628 y Ft(setopt)192 b Fu(V)-8 b(alid)39 -b(argumen)m(ts)g(for)f(the)h Ft(-o)e Fu(option)i(to)g(the)g -Ft(set)e Fu(builtin)1590 737 y(\(see)31 b(Section)h(4.3.1)g([The)e(Set) -g(Builtin],)i(page)f(58\).)1110 902 y Ft(shopt)240 b -Fu(Shell)40 b(option)g(names)g(as)g(accepted)i(b)m(y)e(the)g -Ft(shopt)e Fu(builtin)1590 1011 y(\(see)31 b(Section)h(4.2)f([Bash)g -(Builtins],)g(page)g(48\).)1110 1176 y Ft(signal)192 -b Fu(Signal)31 b(names.)1110 1340 y Ft(stopped)144 b -Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g(job)g(con)m(trol)i(is)f -(activ)m(e.)1110 1504 y Ft(user)288 b Fu(User)30 b(names.)41 -b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-u)p -Fu(.)1110 1669 y Ft(variable)96 b Fu(Names)36 b(of)g(all)g(shell)g(v)-5 -b(ariables.)56 b(Ma)m(y)37 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 -1778 y Ft(-v)p Fu(.)630 1943 y Ft(-C)30 b Fj(command)1110 -2052 y Fr(command)35 b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m -(vironmen)m(t,)i(and)f(its)g(output)g(is)1110 2162 y(used)e(as)g(the)h -(p)s(ossible)f(completions.)630 2326 y Ft(-F)g Fj(function)1110 -2436 y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h -(in)f(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 2545 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 2655 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 -2765 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 2874 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 -2984 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 3093 -y(from)g(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(COMPREPLY)e -Fu(arra)m(y)j(v)-5 b(ariable.)630 3258 y Ft(-G)30 b Fj(globpat)1110 -3367 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g -Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 3477 -y(the)31 b(p)s(ossible)e(completions.)630 3641 y Ft(-P)h -Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s -(eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110 -3751 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 -3915 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 -b(app)s(ended)f(to)i(eac)m(h)h(p)s(ossible)e(completion)i(after)f(all)g -(other)g(options)1110 4025 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 -4189 y Ft(-W)h Fj(wordlist)1110 4299 y Fu(The)24 b Fr(w)m(ordlist)k -Fu(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i -Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 4408 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 4518 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 4628 y(w)m(ord)f(b)s(eing)g(completed.)630 -4792 y Ft(-X)g Fj(filterpat)1110 4902 y Fr(\014lterpat)d -Fu(is)e(a)g(pattern)g(as)f(used)g(for)h(\014lename)g(expansion.)38 -b(It)25 b(is)g(applied)f(to)1110 5011 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 5121 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m -(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 5230 -y(from)i(the)h(list.)42 b(A)30 b(leading)i(`)p Ft(!)p -Fu(')e(in)g Fr(\014lterpat)j Fu(negates)f(the)f(pattern;)g(in)f(this) -1110 5340 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g -Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)p eop end +b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Fs(8.6)68 +b(Programmable)47 b(Completion)150 458 y Fu(When)25 b(w)m(ord)g +(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)g(a)g +(command)f(for)h(whic)m(h)f(a)h(completion)150 568 y(sp)s +(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 b Fu(\))39 +b(has)h(b)s(een)f(de\014ned)f(using)h(the)h Ft(complete)d +Fu(builtin)j(\(see)g(Section)h(8.7)150 677 y([Programmable)h +(Completion)f(Builtins],)k(page)d(131\),)j(the)c(programmable)g +(completion)i(facilities)150 787 y(are)31 b(in)m(v)m(ok)m(ed.)275 +936 y(First,)23 b(the)e(command)g(name)g(is)h(iden)m(ti\014ed.)37 +b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f(de\014ned)g(for)h(that)h +(command,)150 1046 y(the)44 b(compsp)s(ec)g(is)g(used)f(to)h(generate)i +(the)e(list)g(of)g(p)s(ossible)g(completions)h(for)e(the)h(w)m(ord.)81 +b(If)44 b(the)150 1156 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h +(string)f(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an) +h(empt)m(y)150 1265 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f +(with)h(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d +Fu(is)i(used.)40 b(If)29 b(the)g(command)g(w)m(ord)150 +1375 y(is)e(a)h(full)e(pathname,)i(a)g(compsp)s(ec)e(for)h(the)g(full)g +(pathname)g(is)g(searc)m(hed)h(for)f(\014rst.)39 b(If)26 +b(no)h(compsp)s(ec)g(is)150 1484 y(found)22 b(for)g(the)h(full)g +(pathname,)h(an)f(attempt)h(is)f(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f +(for)h(the)g(p)s(ortion)f(follo)m(wing)150 1594 y(the)34 +b(\014nal)g(slash.)53 b(If)34 b(those)g(searc)m(hes)i(do)e(not)g +(result)h(in)f(a)g(compsp)s(ec,)h(an)m(y)g(compsp)s(ec)f(de\014ned)f +(with)150 1704 y(the)e Ft(-D)e Fu(option)i(to)g Ft(complete)d +Fu(is)j(used)e(as)i(the)g(default.)275 1853 y(Once)j(a)g(compsp)s(ec)g +(has)g(b)s(een)f(found,)h(it)h(is)f(used)f(to)i(generate)h(the)e(list)h +(of)f(matc)m(hing)h(w)m(ords.)51 b(If)150 1963 y(a)37 +b(compsp)s(ec)f(is)g(not)h(found,)f(the)h(default)f(Bash)h(completion)g +(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(8.4.6)150 +2072 y([Commands)30 b(F)-8 b(or)31 b(Completion],)g(page)g(124\))h(is)f +(p)s(erformed.)275 2222 y(First,)g(the)g(actions)g(sp)s(eci\014ed)f(b)m +(y)h(the)f(compsp)s(ec)h(are)g(used.)40 b(Only)30 b(matc)m(hes)i(whic)m +(h)e(are)h(pre\014xed)150 2331 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f +(completed)h(are)g(returned.)44 b(When)31 b(the)h Ft(-f)f +Fu(or)h Ft(-d)f Fu(option)h(is)f(used)g(for)h(\014lename)150 +2441 y(or)e(directory)h(name)f(completion,)i(the)e(shell)h(v)-5 +b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter)g(the)f(matc)m +(hes.)42 b(See)150 2550 y(Section)31 b(5.2)h([Bash)e(V)-8 +b(ariables],)33 b(page)e(71,)g(for)f(a)h(description)g(of)f +Ft(FIGNORE)p Fu(.)275 2700 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f +(b)m(y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g +Ft(-G)e Fu(option)i(are)g(generated)150 2809 y(next.)41 +b(The)29 b(w)m(ords)g(generated)h(b)m(y)g(the)g(pattern)f(need)h(not)f +(matc)m(h)i(the)f(w)m(ord)f(b)s(eing)g(completed.)41 +b(The)150 2919 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32 +b(is)g(not)g(used)e(to)i(\014lter)g(the)g(matc)m(hes,)h(but)d(the)i +Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 3029 y(is)30 +b(used.)275 3178 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the) +g(argumen)m(t)h(to)g(the)f Ft(-W)f Fu(option)i(is)f(considered.)60 +b(The)37 b(string)150 3288 y(is)c(\014rst)e(split)i(using)f(the)h(c)m +(haracters)h(in)e(the)h Ft(IFS)e Fu(sp)s(ecial)j(v)-5 +b(ariable)33 b(as)g(delimiters.)48 b(Shell)32 b(quoting)h(is)150 +3397 y(honored.)56 b(Eac)m(h)37 b(w)m(ord)e(is)h(then)f(expanded)g +(using)h(brace)g(expansion,)h(tilde)f(expansion,)h(parameter)150 +3507 y(and)44 b(v)-5 b(ariable)46 b(expansion,)j(command)44 +b(substitution,)49 b(and)44 b(arithmetic)i(expansion,)j(as)c(describ)s +(ed)150 3616 y(ab)s(o)m(v)m(e)38 b(\(see)f(Section)h(3.5)g([Shell)e +(Expansions],)i(page)f(21\).)61 b(The)36 b(results)h(are)g(split)f +(using)h(the)f(rules)150 3726 y(describ)s(ed)29 b(ab)s(o)m(v)m(e)i +(\(see)f(Section)h(3.5.7)h([W)-8 b(ord)30 b(Splitting],)h(page)f(30\).) +42 b(The)30 b(results)f(of)h(the)g(expansion)150 3836 +y(are)f(pre\014x-matc)m(hed)h(against)g(the)f(w)m(ord)g(b)s(eing)f +(completed,)j(and)d(the)i(matc)m(hing)g(w)m(ords)e(b)s(ecome)i(the)150 +3945 y(p)s(ossible)g(completions.)275 4095 y(After)f(these)g(matc)m +(hes)i(ha)m(v)m(e)f(b)s(een)f(generated,)h(an)m(y)g(shell)f(function)g +(or)g(command)g(sp)s(eci\014ed)f(with)150 4204 y(the)36 +b Ft(-F)f Fu(and)g Ft(-C)g Fu(options)h(is)g(in)m(v)m(ok)m(ed.)59 +b(When)35 b(the)h(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)i +(the)e Ft(COMP_)150 4314 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p +Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e Ft(COMP_TYPE)f Fu(v)-5 +b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed) +150 4423 y(ab)s(o)m(v)m(e)34 b(\(see)g(Section)g(5.2)g([Bash)f(V)-8 +b(ariables],)36 b(page)d(71\).)50 b(If)33 b(a)g(shell)g(function)g(is)g +(b)s(eing)f(in)m(v)m(ok)m(ed,)k(the)150 4533 y Ft(COMP_WORDS)j +Fu(and)i Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74 +b(When)41 b(the)h(function)f(or)h(command)f(is)150 4643 +y(in)m(v)m(ok)m(ed,)c(the)e(\014rst)f(argumen)m(t)h(\($1\))h(is)e(the)h +(name)g(of)f(the)h(command)f(whose)h(argumen)m(ts)f(are)h(b)s(eing)150 +4752 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g +(w)m(ord)f(b)s(eing)g(completed,)i(and)e(the)h(third)e(argumen)m(t)150 +4862 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s +(eing)g(completed)i(on)e(the)h(curren)m(t)f(command)h(line.)65 +b(No)150 4971 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g +(against)h(the)e(w)m(ord)g(b)s(eing)f(completed)i(is)g(p)s(erformed;)f +(the)150 5081 y(function)d(or)g(command)h(has)f(complete)i(freedom)e +(in)g(generating)h(the)g(matc)m(hes.)275 5230 y(An)m(y)j(function)h(sp) +s(eci\014ed)f(with)g Ft(-F)g Fu(is)h(in)m(v)m(ok)m(ed)h(\014rst.)53 +b(The)35 b(function)f(ma)m(y)h(use)g(an)m(y)g(of)g(the)g(shell)150 +5340 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d +Fu(and)i Ft(compopt)e Fu(builtins)i(describ)s(ed)f(b)s(elo)m(w)h(\(see) +i(Section)f(8.7)p eop end %%Page: 130 136 TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(130)630 299 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 -408 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f -Fr(name)44 b Fu(argumen)m(t,)c(an)e(attempt)i(is)e(made)g(to)630 -518 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a)h -Fr(name)k Fu(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,)630 -628 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s -(eci\014cation.)150 789 y Ft(compopt)870 924 y(compopt)46 -b([-o)h Fj(option)p Ft(])f([-DE])g([+o)h Fj(option)p -Ft(])f([)p Fj(name)p Ft(])630 1060 y Fu(Mo)s(dify)33 -b(completion)h(options)g(for)f(eac)m(h)h Fr(name)39 b -Fu(according)34 b(to)g(the)f Fr(option)p Fu(s,)i(or)e(for)g(the)630 -1170 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f -Fr(name)5 b Fu(s)44 b(are)h(supplied.)80 b(If)43 b(no)h -Fr(option)p Fu(s)h(are)630 1279 y(giv)m(en,)30 b(displa)m(y)e(the)g -(completion)h(options)g(for)e(eac)m(h)i Fr(name)34 b -Fu(or)27 b(the)i(curren)m(t)e(completion.)630 1389 y(The)f(p)s(ossible) -g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)-5 -b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630 -1498 y(ab)s(o)m(v)m(e.)41 b(The)28 b Ft(-D)g Fu(option)h(indicates)h -(that)f(the)g(remaining)g(options)g(should)e(apply)h(to)i(the)630 -1608 y(\\default")j(command)f(completion;)i(that)f(is,)g(completion)g -(attempted)g(on)f(a)g(command)630 1717 y(for)g(whic)m(h)g(no)g -(completion)i(has)e(previously)g(b)s(een)g(de\014ned.)45 -b(The)32 b Ft(-E)f Fu(option)i(indicates)630 1827 y(that)24 -b(the)g(remaining)g(options)g(should)e(apply)h(to)i(\\empt)m(y")g -(command)e(completion;)k(that)630 1937 y(is,)k(completion)g(attempted)h -(on)e(a)h(blank)f(line.)630 2072 y(The)g Ft(-D)g Fu(option)g(tak)m(es)i -(precedence)f(o)m(v)m(er)h Ft(-E)p Fu(.)630 2208 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 -2317 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h -Fr(name)k Fu(for)31 b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f -(exists,)630 2427 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 -2662 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 -2822 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h -(additional)g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i -(default)150 2931 y(actions)29 b Ft(complete)d Fu(and)i -Ft(compgen)e Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g -(and)g(bind)e(it)j(to)g(a)g(particular)150 3041 y(command)h(using)g -Ft(complete)e(-F)p Fu(.)275 3177 y(The)j(follo)m(wing)j(function)e(pro) -m(vides)g(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46 -b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 3287 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 -3396 y(w)m(ord)38 b(passsed)g(as)h Ft($2)g Fu(to)g(determine)g(the)g -(directory)g(name)g(to)g(complete.)67 b(Y)-8 b(ou)40 -b(can)f(also)g(use)g(the)150 3506 y Ft(COMP_WORDS)28 -b Fu(arra)m(y)i(v)-5 b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g -(indexed)g(b)m(y)g(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)275 -3642 y(The)42 b(function)h(relies)h(on)e(the)i Ft(complete)c -Fu(and)j Ft(compgen)e Fu(builtins)h(to)i(do)f(m)m(uc)m(h)g(of)g(the)h -(w)m(ork,)150 3752 y(adding)25 b(only)h(the)g(things)g(that)g(the)g -(Bash)g Ft(cd)f Fu(do)s(es)g(b)s(ey)m(ond)g(accepting)j(basic)e -(directory)g(names:)38 b(tilde)150 3862 y(expansion)22 -b(\(see)h(Section)g(3.5.2)g([Tilde)g(Expansion],)g(page)g(22\),)i -(searc)m(hing)e(directories)g(in)e Fr($CDP)-8 b(A)g(TH)p -Fu(,)150 3971 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(41\),)j -(and)c(basic)h(supp)s(ort)150 4081 y(for)31 b(the)h Ft(cdable_vars)d -Fu(shell)i(option)h(\(see)h(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],) -i(page)f(62\).)46 b Ft(_comp_)150 4190 y(cd)30 b Fu(mo)s(di\014es)g -(the)h(v)-5 b(alue)31 b(of)g Fr(IFS)36 b Fu(so)31 b(that)g(it)g(con)m -(tains)h(only)f(a)g(newline)g(to)h(accommo)s(date)g(\014le)f(names)150 -4300 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e -Fu(prin)m(ts)h(the)h(p)s(ossible)f(completions)i(it)g(generates)g(one)f -(p)s(er)150 4410 y(line.)275 4546 y(P)m(ossible)24 b(completions)h(go)g -(in)m(to)g(the)f Fr(COMPREPL)-8 b(Y)36 b Fu(arra)m(y)24 -b(v)-5 b(ariable,)26 b(one)e(completion)i(p)s(er)c(arra)m(y)150 -4656 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 -4765 y(the)h(function)f(returns.)390 4902 y Ft(#)47 b(A)h(completion)d -(function)g(for)i(the)g(cd)g(builtin)390 5011 y(#)g(based)g(on)g(the)g -(cd)g(completion)e(function)h(from)g(the)h(bash_completion)d(package) -390 5121 y(_comp_cd\(\))390 5230 y({)581 5340 y(local)i(IFS=$')g -(\\t\\n')190 b(#)47 b(normalize)f(IFS)p eop end +b(Command)29 b(Line)i(Editing)2062 b(130)150 299 y([Programmable)31 +b(Completion)h(Builtins],)f(page)h(131\),)g(to)g(generate)g(the)f(matc) +m(hes.)42 b(It)31 b(m)m(ust)g(put)f(the)150 408 y(p)s(ossible)g +(completions)h(in)f(the)h Ft(COMPREPLY)d Fu(arra)m(y)j(v)-5 +b(ariable,)31 b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 +542 y(Next,)26 b(an)m(y)f(command)f(sp)s(eci\014ed)g(with)g(the)h +Ft(-C)f Fu(option)h(is)f(in)m(v)m(ok)m(ed)i(in)e(an)g(en)m(vironmen)m +(t)h(equiv)-5 b(alen)m(t)150 652 y(to)26 b(command)e(substitution.)39 +b(It)25 b(should)f(prin)m(t)h(a)g(list)h(of)f(completions,)i(one)e(p)s +(er)f(line,)j(to)f(the)f(standard)150 762 y(output.)40 +b(Bac)m(kslash)32 b(ma)m(y)f(b)s(e)f(used)g(to)h(escap)s(e)g(a)f +(newline,)h(if)f(necessary)-8 b(.)275 896 y(After)24 +b(all)i(of)f(the)f(p)s(ossible)g(completions)i(are)f(generated,)i(an)m +(y)e(\014lter)g(sp)s(eci\014ed)e(with)i(the)g Ft(-X)e +Fu(option)150 1005 y(is)34 b(applied)g(to)g(the)h(list.)52 +b(The)33 b(\014lter)h(is)g(a)h(pattern)f(as)g(used)f(for)h(pathname)g +(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 1115 +y(pattern)28 b(is)f(replaced)h(with)g(the)f(text)i(of)f(the)f(w)m(ord)h +(b)s(eing)f(completed.)40 b(A)28 b(literal)h(`)p Ft(&)p +Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 1224 y(with)38 +b(a)h(bac)m(kslash;)k(the)38 b(bac)m(kslash)h(is)g(remo)m(v)m(ed)g(b)s +(efore)f(attempting)h(a)g(matc)m(h.)65 b(An)m(y)39 b(completion)150 +1334 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m +(ed)h(from)f(the)h(list.)44 b(A)32 b(leading)g(`)p Ft(!)p +Fu(')f(negates)i(the)f(pattern;)150 1443 y(in)d(this)g(case)h(an)m(y)g +(completion)h(not)e(matc)m(hing)h(the)g(pattern)f(will)h(b)s(e)e(remo)m +(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 1553 y +Fu(shell)k(option)f(\(see)i(the)e(description)g(of)h +Ft(shopt)e Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g +(64\))h(is)150 1663 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e +(without)h(regard)g(to)h(the)g(case)g(of)g(alphab)s(etic)g(c)m +(haracters.)275 1797 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f +(su\016x)h(sp)s(eci\014ed)f(with)i(the)f Ft(-P)g Fu(and)g +Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 1906 +y(mem)m(b)s(er)31 b(of)g(the)h(completion)h(list,)f(and)f(the)h(result) +f(is)h(returned)e(to)i(the)g(Readline)g(completion)h(co)s(de)150 +2016 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275 +2150 y(If)d(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h +(an)m(y)f(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d +Fu(op-)150 2259 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d +Fu(when)h(the)h(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h +(completion)150 2369 y(is)h(attempted.)275 2503 y(If)35 +b(the)g Ft(-o)30 b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i +Ft(complete)e Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150 +2612 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h +(matc)m(hes)g(are)g(added)f(to)h(the)f(results)g(of)h(the)150 +2722 y(other)31 b(actions.)275 2856 y(By)g(default,)i(if)e(a)h(compsp)s +(ec)f(is)h(found,)f(whatev)m(er)h(it)g(generates)h(is)e(returned)g(to)h +(the)g(completion)150 2966 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g +(p)s(ossible)f(completions.)39 b(The)20 b(default)h(Bash)g(completions) +h(are)g(not)f(attempted,)150 3075 y(and)30 b(the)g(Readline)h(default)f +(of)g(\014lename)h(completion)g(is)f(disabled.)41 b(If)29 +b(the)i Ft(-o)e(bashdefault)e Fu(option)150 3185 y(w)m(as)d(supplied)e +(to)j Ft(complete)c Fu(when)i(the)g(compsp)s(ec)h(w)m(as)g(de\014ned,)g +(the)f(default)h(Bash)g(completions)h(are)150 3294 y(attempted)j(if)f +(the)h(compsp)s(ec)f(generates)h(no)f(matc)m(hes.)41 +b(If)27 b(the)g Ft(-o)j(default)25 b Fu(option)j(w)m(as)f(supplied)f +(to)150 3404 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i +(de\014ned,)e(Readline's)i(default)f(completion)h(will)f(b)s(e)f(p)s +(erformed)150 3513 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,) +g(the)g(default)f(Bash)h(completions\))h(generate)g(no)e(matc)m(hes.) +275 3647 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g +(name)f(completion)h(is)f(desired,)i(the)e(programmable)150 +3757 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d +(a)i(slash)g(to)g(completed)h(names)e(whic)m(h)h(are)g(sym-)150 +3867 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5 +b(ject)40 b(to)h(the)f(v)-5 b(alue)41 b(of)f(the)g Fr(mark-directories) +45 b Fu(Readline)c(v)-5 b(ariable,)150 3976 y(regardless)31 +b(of)f(the)h(setting)g(of)g(the)f Fr(mark-symlink)m(ed-directories)36 +b Fu(Readline)31 b(v)-5 b(ariable.)275 4110 y(There)25 +b(is)i(some)g(supp)s(ort)e(for)h(dynamically)h(mo)s(difying)f +(completions.)40 b(This)26 b(is)g(most)h(useful)f(when)150 +4220 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion) +g(sp)s(eci\014ed)f(with)g Ft(-D)p Fu(.)72 b(It's)42 b(p)s(ossible)f +(for)g(shell)150 4329 y(functions)28 b(executed)h(as)f(completion)i +(handlers)d(to)i(indicate)g(that)g(completion)g(should)e(b)s(e)h +(retried)g(b)m(y)150 4439 y(returning)j(an)i(exit)g(status)f(of)h(124.) +48 b(If)31 b(a)i(shell)f(function)g(returns)f(124,)k(and)c(c)m(hanges)j +(the)e(compsp)s(ec)150 4548 y(asso)s(ciated)43 b(with)e(the)g(command)g +(on)g(whic)m(h)g(completion)i(is)e(b)s(eing)g(attempted)h(\(supplied)e +(as)i(the)150 4658 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f +(is)g(executed\),)j(programmable)d(completion)i(restarts)f(from)f(the) +150 4768 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new) +e(compsp)s(ec)i(for)f(that)h(command.)39 b(This)27 b(allo)m(ws)h(a)g +(set)g(of)150 4877 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically) +i(as)f(completion)h(is)f(attempted,)h(rather)f(than)f(b)s(eing)g +(loaded)150 4987 y(all)g(at)g(once.)275 5121 y(F)-8 b(or)38 +b(instance,)h(assuming)e(that)h(there)f(is)h(a)f(library)g(of)g(compsp) +s(ecs,)i(eac)m(h)g(k)m(ept)e(in)g(a)h(\014le)f(corre-)150 +5230 y(sp)s(onding)g(to)j(the)f(name)f(of)h(the)g(command,)i(the)e +(follo)m(wing)h(default)f(completion)h(function)e(w)m(ould)150 +5340 y(load)31 b(completions)g(dynamically:)p eop end %%Page: 131 137 TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(131)581 299 y Ft(local)46 -b(cur)h(_skipdot)f(_cdpath)581 408 y(local)g(i)i(j)f(k)581 -628 y(#)g(Tilde)g(expansion,)e(with)h(side)h(effect)f(of)h(expanding)f -(tilde)g(to)h(full)g(pathname)581 737 y(case)g("$2")f(in)581 -847 y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 956 y(*\))286 -b(cur=$2)46 b(;;)581 1066 y(esac)581 1285 y(#)h(no)h(cdpath)e(or)h -(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581 -1395 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h -(@\(./*|../*|/*\))d(]];)j(then)772 1504 y(#)g(compgen)f(prints)g(paths) -h(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772 -1614 y(IFS=$'\\n')772 1724 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g -("$cur"\))f(\))772 1833 y(IFS=$')g(\\t\\n')581 1943 y(#)h -(CDPATH+directories)c(in)k(the)g(current)f(directory)f(if)j(not)e(in)i -(CDPATH)581 2052 y(else)772 2162 y(IFS=$'\\n')772 2271 -y(_skipdot=false)772 2381 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d -(null)i(directory)e(names)i(to)g(.)772 2491 y(_cdpath=${CDPATH/#:/.:}) -772 2600 y(_cdpath=${_cdpath//::/:.)o(:})772 2710 y -(_cdpath=${_cdpath/\045:/:.})772 2819 y(for)g(i)g(in)g -(${_cdpath//:/$'\\n'};)c(do)963 2929 y(if)k([[)g($i)g(-ef)g(.)h(]];)f -(then)f(_skipdot=true;)e(fi)963 3039 y(k="${#COMPREPLY[@]}")963 -3148 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) -1154 3258 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) -963 3367 y(done)772 3477 y(done)772 3587 y($_skipdot)f(||)i -(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 -3696 y(IFS=$')g(\\t\\n')581 3806 y(fi)581 4025 y(#)h(variable)f(names)g -(if)h(appropriate)e(shell)i(option)f(set)h(and)f(no)i(completions)581 -4134 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c -(-eq)k(0)g(]];)g(then)772 4244 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g -("$cur"\))f(\))581 4354 y(fi)581 4573 y(return)g(0)390 -4682 y(})275 4902 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h -(function)e(using)f(the)i Ft(-F)f Fu(option)h(to)g Ft(complete)p -Fu(:)390 5121 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f -(and)i(append)f(slashes)g(to)h(directories;)390 5230 -y(#)g(use)g(the)g(bash)g(default)f(completion)f(for)i(other)f -(arguments)390 5340 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h -(bashdefault)e(-F)i(_comp_cd)f(cd)p eop end +b(Command)29 b(Line)i(Editing)2062 b(131)390 299 y Ft +(_completion_loader\(\))390 408 y({)581 518 y(.)47 b +("/etc/bash_completion.d/$1)o(.sh)o(")42 b(>/dev/null)j(2>&1)i(&&)g +(return)f(124)390 628 y(})390 737 y(complete)g(-D)h(-F)g +(_completion_loader)c(-o)k(bashdefault)e(-o)i(default)150 +972 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150 +1131 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5 +b(ailable)24 b(to)e(manipulate)f(the)h(programmable)f(completion)h +(facilities:)150 1241 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f +(argumen)m(ts)h(to)g(a)g(particular)g(command)f(are)h(to)g(b)s(e)f +(completed,)j(and)d(t)m(w)m(o)150 1351 y(to)e(mo)s(dify)f(the)g +(completion)i(as)e(it)h(is)g(happ)s(ening.)150 1504 y +Ft(compgen)870 1636 y(compgen)46 b([)p Fj(option)p Ft(])f([)p +Fj(word)p Ft(])630 1767 y Fu(Generate)27 b(p)s(ossible)e(completion)i +(matc)m(hes)g(for)e Fr(w)m(ord)k Fu(according)e(to)f(the)g +Fr(option)p Fu(s,)h(whic)m(h)630 1877 y(ma)m(y)32 b(b)s(e)f(an)m(y)h +(option)g(accepted)g(b)m(y)g(the)f Ft(complete)f Fu(builtin)h(with)g +(the)g(exception)i(of)f Ft(-p)630 1986 y Fu(and)39 b +Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m(hes)g(to)g(the)g(standard)f +(output.)68 b(When)39 b(using)g(the)h Ft(-F)630 2096 +y Fu(or)33 b Ft(-C)f Fu(options,)i(the)e(v)-5 b(arious)33 +b(shell)g(v)-5 b(ariables)33 b(set)g(b)m(y)g(the)g(programmable)g +(completion)630 2206 y(facilities,)g(while)d(a)m(v)-5 +b(ailable,)33 b(will)e(not)g(ha)m(v)m(e)g(useful)f(v)-5 +b(alues.)630 2337 y(The)34 b(matc)m(hes)h(will)g(b)s(e)f(generated)h +(in)f(the)h(same)g(w)m(a)m(y)g(as)g(if)f(the)h(programmable)f(com-)630 +2447 y(pletion)d(co)s(de)g(had)f(generated)i(them)e(directly)i(from)e +(a)h(completion)h(sp)s(eci\014cation)f(with)630 2556 +y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j Fu(is)d(sp)s +(eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g +Fr(w)m(ord)j Fu(will)630 2666 y(b)s(e)d(displa)m(y)m(ed.)630 +2797 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in) +m(v)-5 b(alid)25 b(option)g(is)g(supplied,)f(or)h(no)g(matc)m(hes)g(w)m +(ere)630 2907 y(generated.)150 3060 y Ft(complete)870 +3192 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p +Ft(])e([-DE])h([-A)h Fj(action)p Ft(])f([-)870 3302 y(G)h +Fj(globpat)p Ft(])f([-W)h Fj(wordlist)p Ft(])870 3411 +y([-F)g Fj(function)p Ft(])e([-C)i Fj(command)p Ft(])f([-X)h +Fj(filterpat)p Ft(])870 3521 y([-P)g Fj(prefix)p Ft(])f([-S)h +Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f Ft(...])870 +3630 y(complete)g(-pr)g([-DE])h([)p Fj(name)f Ft(...)o(])630 +3762 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i(eac)m(h)g +Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63 b(If)38 +b(the)f Ft(-p)g Fu(option)630 3871 y(is)30 b(supplied,)e(or)i(if)g(no)f +(options)h(are)g(supplied,)f(existing)h(completion)h(sp)s +(eci\014cations)g(are)630 3981 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g +(that)h(allo)m(ws)g(them)e(to)i(b)s(e)e(reused)f(as)i(input.)38 +b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 4091 +y(a)i(completion)h(sp)s(eci\014cation)f(for)g(eac)m(h)h +Fr(name)p Fu(,)f(or,)h(if)e(no)h Fr(name)5 b Fu(s)27 +b(are)h(supplied,)g(all)g(com-)630 4200 y(pletion)k(sp)s +(eci\014cations.)44 b(The)30 b Ft(-D)h Fu(option)h(indicates)g(that)f +(the)h(remaining)f(options)h(and)630 4310 y(actions)27 +b(should)e(apply)g(to)i(the)f(\\default")h(command)e(completion;)k +(that)e(is,)g(completion)630 4419 y(attempted)g(on)f(a)h(command)f(for) +g(whic)m(h)g(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.) +630 4529 y(The)f Ft(-E)g Fu(option)h(indicates)h(that)f(the)g +(remaining)g(options)g(and)f(actions)i(should)e(apply)g(to)630 +4639 y(\\empt)m(y")32 b(command)e(completion;)i(that)f(is,)f +(completion)i(attempted)f(on)g(a)f(blank)g(line.)630 +4770 y(The)f(pro)s(cess)g(of)h(applying)g(these)g(completion)g(sp)s +(eci\014cations)h(when)d(w)m(ord)i(completion)630 4880 +y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)f +(Section)g(8.6)g([Programmable)g(Completion],)630 4989 +y(page)31 b(129\).)42 b(The)30 b Ft(-D)g Fu(option)h(tak)m(es)h +(precedence)f(o)m(v)m(er)g Ft(-E)p Fu(.)630 5121 y(Other)d(options,)i +(if)f(sp)s(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40 +b(The)29 b(argumen)m(ts)g(to)h(the)630 5230 y Ft(-G)p +Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h Fu(options)h(\(and,)h(if)f +(necessary)-8 b(,)42 b(the)e Ft(-P)f Fu(and)f Ft(-S)h +Fu(options\))h(should)f(b)s(e)630 5340 y(quoted)28 b(to)h(protect)g +(them)f(from)f(expansion)h(b)s(efore)g(the)g Ft(complete)e +Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)p eop end %%Page: 132 138 TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(132)150 299 y(Since)33 +b(Command)29 b(Line)i(Editing)2062 b(132)630 299 y Ft(-o)30 +b Fj(comp-option)1110 408 y Fu(The)c Fr(comp-option)i +Fu(con)m(trols)g(sev)m(eral)h(asp)s(ects)e(of)g(the)g(compsp)s(ec's)g +(b)s(eha)m(v-)1110 518 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h +(generation)h(of)e(completions.)41 b Fr(comp-option)27 +b Fu(ma)m(y)1110 628 y(b)s(e)j(one)g(of:)1110 782 y Ft(bashdefault)1590 +892 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g(default)f(Bash)h +(completions)g(if)g(the)1590 1002 y(compsp)s(ec)i(generates)i(no)e +(matc)m(hes.)1110 1156 y Ft(default)144 b Fu(Use)22 b(Readline's)g +(default)g(\014lename)g(completion)g(if)g(the)g(comp-)1590 +1266 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 +1421 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h +(completion)g(if)f(the)g(compsp)s(ec)1590 1530 y(generates)32 +b(no)e(matc)m(hes.)1110 1685 y Ft(filenames)1590 1794 +y Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j +(\014lenames,)1590 1904 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h +(\014lename-sp)s(eci\014c)h(pro)s(cessing)e(\(lik)m(e)1590 +2014 y(adding)d(a)h(slash)f(to)h(directory)g(names)f(quoting)h(sp)s +(ecial)g(c)m(har-)1590 2123 y(acters,)39 b(or)d(suppressing)f(trailing) +i(spaces\).)59 b(This)35 b(option)i(is)1590 2233 y(in)m(tended)30 +b(to)g(b)s(e)g(used)f(with)g(shell)i(functions)e(sp)s(eci\014ed)g(with) +1590 2342 y Ft(-F)p Fu(.)1110 2497 y Ft(noquote)144 b +Fu(T)-8 b(ell)28 b(Readline)g(not)g(to)g(quote)g(the)g(completed)g(w)m +(ords)f(if)h(they)1590 2607 y(are)j(\014lenames)f(\(quoting)h +(\014lenames)g(is)f(the)h(default\).)1110 2761 y Ft(nosort)192 +b Fu(T)-8 b(ell)23 b(Readline)g(not)f(to)h(sort)g(the)f(list)h(of)f(p)s +(ossible)g(completions)1590 2871 y(alphab)s(etically)-8 +b(.)1110 3026 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g +(to)g(app)s(end)d(a)j(space)g(\(the)f(default\))h(to)1590 +3135 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110 +3290 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d +(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 3400 y(ated,)g +(directory)f(name)g(completion)i(is)d(attempted)i(and)f(an)m(y)1590 +3509 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h +(other)g(actions.)630 3664 y Ft(-A)f Fj(action)66 b Fu(The)25 +b Fr(action)h Fu(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m(wing)i(to)e +(generate)i(a)e(list)h(of)f(p)s(ossible)1110 3773 y(completions:)1110 +3928 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31 +b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i Ft(-a)p Fu(.)1110 +4083 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31 +b(names.)1110 4238 y Ft(binding)144 b Fu(Readline)30 +b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590 +4347 y(Readline)h(Commands],)f(page)h(119\).)1110 4502 +y Ft(builtin)144 b Fu(Names)21 b(of)g(shell)f(builtin)h(commands.)37 +b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 4612 +y(as)31 b Ft(-b)p Fu(.)1110 4766 y Ft(command)144 b Fu(Command)29 +b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i +Ft(-c)p Fu(.)1110 4921 y Ft(directory)1590 5031 y Fu(Directory)h +(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g +Ft(-d)p Fu(.)1110 5185 y Ft(disabled)96 b Fu(Names)31 +b(of)g(disabled)f(shell)g(builtins.)1110 5340 y Ft(enabled)144 +b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)p eop +end +%%Page: 133 139 +TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(133)1110 299 y Ft(export)192 +b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5 b(ariables.)49 +b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590 408 y(\014ed)d(as)g +Ft(-e)p Fu(.)1110 567 y Ft(file)288 b Fu(File)32 b(names.)40 +b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-f)p +Fu(.)1110 725 y Ft(function)96 b Fu(Names)31 b(of)g(shell)f(functions.) +1110 883 y Ft(group)240 b Fu(Group)30 b(names.)40 b(Ma)m(y)32 +b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g Ft(-g)p Fu(.)1110 +1042 y Ft(helptopic)1590 1151 y Fu(Help)37 b(topics)g(as)g(accepted)h +(b)m(y)e(the)h Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 +1261 y(tion)31 b(4.2)g([Bash)g(Builtins],)g(page)g(49\).)1110 +1419 y Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f +(the)g(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 1529 y(the)55 +b Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h +([Bash)1590 1638 y(V)-8 b(ariables],)32 b(page)f(71\).)1110 +1797 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f +(activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s(eci-)1590 +1906 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 2064 y Ft(keyword)144 +b Fu(Shell)30 b(reserv)m(ed)h(w)m(ords.)40 b(Ma)m(y)32 +b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-k)p Fu(.)1110 +2223 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f +(con)m(trol)h(is)g(activ)m(e.)1110 2381 y Ft(service)144 +b Fu(Service)31 b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s +(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 2539 y Ft(setopt)192 +b Fu(V)-8 b(alid)39 b(argumen)m(ts)g(for)f(the)h Ft(-o)e +Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 2649 +y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(60\).) +1110 2807 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g +(accepted)i(b)m(y)e(the)g Ft(shopt)e Fu(builtin)1590 +2917 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(49\).) +1110 3075 y Ft(signal)192 b Fu(Signal)31 b(names.)1110 +3233 y Ft(stopped)144 b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g +(job)g(con)m(trol)i(is)f(activ)m(e.)1110 3392 y Ft(user)288 +b Fu(User)30 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f +(as)i Ft(-u)p Fu(.)1110 3550 y Ft(variable)96 b Fu(Names)36 +b(of)g(all)g(shell)g(v)-5 b(ariables.)56 b(Ma)m(y)37 +b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 3660 y Ft(-v)p +Fu(.)630 3818 y Ft(-C)30 b Fj(command)1110 3927 y Fr(command)35 +b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f +(its)g(output)g(is)1110 4037 y(used)e(as)g(the)h(p)s(ossible)f +(completions.)630 4195 y Ft(-F)g Fj(function)1110 4305 +y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h(in)f +(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 4415 y(ronmen)m(t.)72 +b(When)41 b(it)g(is)g(executed,)k($1)c(is)g(the)g(name)g(of)g(the)g +(command)1110 4524 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f +(completed,)j($2)e(is)f(the)h(w)m(ord)f(b)s(eing)g(com-)1110 +4634 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m(ord)g(preceding)f(the)h +(w)m(ord)f(b)s(eing)h(completed,)1110 4743 y(as)g(describ)s(ed)f(ab)s +(o)m(v)m(e)i(\(see)g(Section)f(8.6)h([Programmable)g(Completion],)1110 +4853 y(page)30 b(129\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s +(ossible)g(completions)h(are)g(retriev)m(ed)1110 4963 +y(from)g(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(COMPREPLY)e +Fu(arra)m(y)j(v)-5 b(ariable.)630 5121 y Ft(-G)30 b Fj(globpat)1110 +5230 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g +Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 5340 +y(the)31 b(p)s(ossible)e(completions.)p eop end +%%Page: 134 140 +TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(134)630 299 y Ft(-P)30 +b Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s +(eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110 +408 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 +567 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 +b(app)s(ended)f(to)i(eac)m(h)h(p)s(ossible)e(completion)i(after)f(all)g +(other)g(options)1110 677 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 +835 y Ft(-W)h Fj(wordlist)1110 945 y Fu(The)24 b Fr(w)m(ordlist)k +Fu(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i +Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 1054 y(as)36 +b(delimiters,)i(and)e(eac)m(h)h(resultan)m(t)g(w)m(ord)e(is)h +(expanded.)57 b(The)35 b(p)s(ossible)1110 1164 y(completions)c(are)e +(the)h(mem)m(b)s(ers)f(of)g(the)h(resultan)m(t)g(list)g(whic)m(h)f +(matc)m(h)i(the)1110 1274 y(w)m(ord)f(b)s(eing)g(completed.)630 +1432 y Ft(-X)g Fj(filterpat)1110 1542 y Fr(\014lterpat)d +Fu(is)e(a)g(pattern)g(as)f(used)g(for)h(\014lename)g(expansion.)38 +b(It)25 b(is)g(applied)f(to)1110 1651 y(the)30 b(list)f(of)h(p)s +(ossible)f(completions)h(generated)h(b)m(y)e(the)g(preceding)h(options) +1110 1761 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m +(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 1871 +y(from)i(the)h(list.)42 b(A)30 b(leading)i(`)p Ft(!)p +Fu(')e(in)g Fr(\014lterpat)j Fu(negates)f(the)f(pattern;)g(in)f(this) +1110 1980 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g +Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 2139 y(The)35 +b(return)g(v)-5 b(alue)37 b(is)f(true)f(unless)h(an)f(in)m(v)-5 +b(alid)37 b(option)f(is)g(supplied,)g(an)g(option)h(other)630 +2248 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f +Fr(name)44 b Fu(argumen)m(t,)c(an)e(attempt)i(is)e(made)g(to)630 +2358 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) +h Fr(name)k Fu(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,) +630 2468 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s +(eci\014cation.)150 2626 y Ft(compopt)870 2760 y(compopt)46 +b([-o)h Fj(option)p Ft(])f([-DE])g([+o)h Fj(option)p +Ft(])f([)p Fj(name)p Ft(])630 2894 y Fu(Mo)s(dify)33 +b(completion)h(options)g(for)f(eac)m(h)h Fr(name)39 b +Fu(according)34 b(to)g(the)f Fr(option)p Fu(s,)i(or)e(for)g(the)630 +3004 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f +Fr(name)5 b Fu(s)44 b(are)h(supplied.)80 b(If)43 b(no)h +Fr(option)p Fu(s)h(are)630 3114 y(giv)m(en,)30 b(displa)m(y)e(the)g +(completion)h(options)g(for)e(eac)m(h)i Fr(name)34 b +Fu(or)27 b(the)i(curren)m(t)e(completion.)630 3223 y(The)f(p)s(ossible) +g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)-5 +b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630 +3333 y(ab)s(o)m(v)m(e.)41 b(The)28 b Ft(-D)g Fu(option)h(indicates)h +(that)f(the)g(remaining)g(options)g(should)e(apply)h(to)i(the)630 +3442 y(\\default")j(command)f(completion;)i(that)f(is,)g(completion)g +(attempted)g(on)f(a)g(command)630 3552 y(for)g(whic)m(h)g(no)g +(completion)i(has)e(previously)g(b)s(een)g(de\014ned.)45 +b(The)32 b Ft(-E)f Fu(option)i(indicates)630 3662 y(that)24 +b(the)g(remaining)g(options)g(should)e(apply)h(to)i(\\empt)m(y")g +(command)e(completion;)k(that)630 3771 y(is,)k(completion)g(attempted)h +(on)e(a)h(blank)f(line.)630 3905 y(The)g Ft(-D)g Fu(option)g(tak)m(es)i +(precedence)f(o)m(v)m(er)h Ft(-E)p Fu(.)630 4039 y(The)23 +b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h(in)m(v)-5 +b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f(made)630 +4149 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h +Fr(name)k Fu(for)31 b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f +(exists,)630 4259 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 +4499 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 +4658 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h +(additional)g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i +(default)150 4768 y(actions)29 b Ft(complete)d Fu(and)i +Ft(compgen)e Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g +(and)g(bind)e(it)j(to)g(a)g(particular)150 4877 y(command)h(using)g +Ft(complete)e(-F)p Fu(.)275 5011 y(The)j(follo)m(wing)j(function)e(pro) +m(vides)g(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46 +b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 5121 y(example)e(of)f +(what)g(shell)g(functions)g(m)m(ust)f(do)h(when)f(used)h(for)f +(completion.)42 b(This)29 b(function)h(uses)g(the)150 +5230 y(w)m(ord)38 b(passsed)g(as)h Ft($2)g Fu(to)g(determine)g(the)g +(directory)g(name)g(to)g(complete.)67 b(Y)-8 b(ou)40 +b(can)f(also)g(use)g(the)150 5340 y Ft(COMP_WORDS)28 +b Fu(arra)m(y)i(v)-5 b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g +(indexed)g(b)m(y)g(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)p +eop end +%%Page: 135 141 +TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(135)275 299 y(The)42 +b(function)h(relies)h(on)e(the)i Ft(complete)c Fu(and)j +Ft(compgen)e Fu(builtins)h(to)i(do)f(m)m(uc)m(h)g(of)g(the)h(w)m(ork,) +150 408 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g +Ft(cd)f Fu(do)s(es)g(b)s(ey)m(ond)g(accepting)j(basic)e(directory)g +(names:)38 b(tilde)150 518 y(expansion)22 b(\(see)h(Section)g(3.5.2)g +([Tilde)g(Expansion],)g(page)g(22\),)i(searc)m(hing)e(directories)g(in) +e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 628 y(whic)m(h)21 b(is)h(describ)s(ed) +e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f +(Builtins],)j(page)e(42\),)j(and)c(basic)h(supp)s(ort)150 +737 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h +(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(64\).)46 +b Ft(_comp_)150 847 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5 +b(alue)31 b(of)g Fr(IFS)36 b Fu(so)31 b(that)g(it)g(con)m(tains)h(only) +f(a)g(newline)g(to)h(accommo)s(date)g(\014le)f(names)150 +956 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e +Fu(prin)m(ts)h(the)h(p)s(ossible)f(completions)i(it)g(generates)g(one)f +(p)s(er)150 1066 y(line.)275 1230 y(P)m(ossible)24 b(completions)h(go)g +(in)m(to)g(the)f Fr(COMPREPL)-8 b(Y)36 b Fu(arra)m(y)24 +b(v)-5 b(ariable,)26 b(one)e(completion)i(p)s(er)c(arra)m(y)150 +1340 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e +(retriev)m(es)h(the)g(completions)g(from)f(there)g(when)150 +1450 y(the)h(function)f(returns.)390 1614 y Ft(#)47 b(A)h(completion)d +(function)g(for)i(the)g(cd)g(builtin)390 1724 y(#)g(based)g(on)g(the)g +(cd)g(completion)e(function)h(from)g(the)h(bash_completion)d(package) +390 1833 y(_comp_cd\(\))390 1943 y({)581 2052 y(local)i(IFS=$')g +(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 2162 y(local)g(cur)h +(_skipdot)f(_cdpath)581 2271 y(local)g(i)i(j)f(k)581 +2491 y(#)g(Tilde)g(expansion,)e(with)h(side)h(effect)f(of)h(expanding)f +(tilde)g(to)h(full)g(pathname)581 2600 y(case)g("$2")f(in)581 +2710 y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 2819 +y(*\))286 b(cur=$2)46 b(;;)581 2929 y(esac)581 3148 y(#)h(no)h(cdpath)e +(or)h(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581 +3258 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h +(@\(./*|../*|/*\))d(]];)j(then)772 3367 y(#)g(compgen)f(prints)g(paths) +h(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772 +3477 y(IFS=$'\\n')772 3587 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g +("$cur"\))f(\))772 3696 y(IFS=$')g(\\t\\n')581 3806 y(#)h +(CDPATH+directories)c(in)k(the)g(current)f(directory)f(if)j(not)e(in)i +(CDPATH)581 3915 y(else)772 4025 y(IFS=$'\\n')772 4134 +y(_skipdot=false)772 4244 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d +(null)i(directory)e(names)i(to)g(.)772 4354 y(_cdpath=${CDPATH/#:/.:}) +772 4463 y(_cdpath=${_cdpath//::/:.)o(:})772 4573 y +(_cdpath=${_cdpath/\045:/:.})772 4682 y(for)g(i)g(in)g +(${_cdpath//:/$'\\n'};)c(do)963 4792 y(if)k([[)g($i)g(-ef)g(.)h(]];)f +(then)f(_skipdot=true;)e(fi)963 4902 y(k="${#COMPREPLY[@]}")963 +5011 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) +1154 5121 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) +963 5230 y(done)772 5340 y(done)p eop end +%%Page: 136 142 +TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41 +b(Command)29 b(Line)i(Editing)2062 b(136)772 299 y Ft($_skipdot)45 +b(||)i(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 +408 y(IFS=$')g(\\t\\n')581 518 y(fi)581 737 y(#)h(variable)f(names)g +(if)h(appropriate)e(shell)i(option)f(set)h(and)f(no)i(completions)581 +847 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c(-eq) +k(0)g(]];)g(then)772 956 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g +("$cur"\))f(\))581 1066 y(fi)581 1285 y(return)g(0)390 +1395 y(})275 1529 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h +(function)e(using)f(the)i Ft(-F)f Fu(option)h(to)g Ft(complete)p +Fu(:)390 1664 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f +(and)i(append)f(slashes)g(to)h(directories;)390 1773 +y(#)g(use)g(the)g(bash)g(default)f(completion)f(for)i(other)f +(arguments)390 1883 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h +(bashdefault)e(-F)i(_comp_cd)f(cd)150 2017 y Fu(Since)33 b(w)m(e'd)g(lik)m(e)i(Bash)e(and)f(Readline)i(to)g(tak)m(e)g(care)g(of) f(some)h(of)f(the)g(other)h(details)g(for)e(us,)i(w)m(e)f(use)150 -408 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f +2127 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f (Readline)i(what)f(to)g(do.)76 b(The)41 b Ft(-o)30 b(filenames)39 -b Fu(option)150 518 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g +b Fu(option)150 2237 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g (completions)h(should)f(b)s(e)f(treated)i(as)g(\014lenames,)i(and)d -(quoted)150 628 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 737 y(determine)i(are)g(directories)h -(\(whic)m(h)g(is)f(wh)m(y)f(w)m(e)i(migh)m(t)f(w)m(an)m(t)h(to)g -(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 847 +(quoted)150 2346 y(appropriately)-8 b(.)53 b(That)34 +b(option)h(will)g(also)g(cause)g(Readline)g(to)g(app)s(end)e(a)h(slash) +g(to)h(\014lenames)g(it)g(can)150 2456 y(determine)i(are)g(directories) +h(\(whic)m(h)g(is)f(wh)m(y)f(w)m(e)i(migh)m(t)f(w)m(an)m(t)h(to)g +(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 2565 y(slash)22 b(if)g(w)m(e're)h(using)f(directories)h(found)e(via)i Fr(CDP)-8 b(A)g(TH)10 b Fu(:)37 b(Readline)23 b(can't)g(tell)g(those)g -(completions)h(are)150 956 y(directories\).)45 b(The)31 +(completions)h(are)150 2675 y(directories\).)45 b(The)31 b Ft(-o)f(nospace)f Fu(option)j(tells)g(Readline)g(to)h(not)e(app)s -(end)f(a)i(space)g(c)m(haracter)h(to)f(the)150 1066 y(directory)c +(end)f(a)i(space)g(c)m(haracter)h(to)f(the)150 2785 y(directory)c (name,)h(in)f(case)h(w)m(e)f(w)m(an)m(t)h(to)f(app)s(end)f(to)h(it.)41 b(The)27 b Ft(-o)j(bashdefault)25 b Fu(option)j(brings)f(in)h(the)150 -1176 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h +2894 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h Fu(completions)g({)g(p)s(ossible)f(completion)i(that)f(Bash)f(adds)g -(to)h(the)g(default)150 1285 y(Readline)40 b(set.)68 +(to)h(the)g(default)150 3004 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 1395 y(for)i(w)m(ords)g(b)s +44 b(v)-5 b(ariable)40 b(completion)150 3113 y(for)i(w)m(ords)g(b)s (eginning)f(with)h(`)p Ft({)p Fu(',)k(completions)e(con)m(taining)f -(pathname)g(expansion)f(patterns)g(\(see)150 1504 y(Section)31 +(pathname)g(expansion)f(patterns)g(\(see)150 3223 y(Section)31 b(3.5.8)h([Filename)g(Expansion],)e(page)i(30\),)f(and)f(so)h(on.)275 -1639 y(Once)39 b(installed)i(using)e Ft(complete)p Fu(,)h +3357 y(Once)39 b(installed)i(using)e Ft(complete)p Fu(,)h Ft(_comp_cd)d Fu(will)j(b)s(e)g(called)g(ev)m(ery)h(time)f(w)m(e)g -(attempt)h(w)m(ord)150 1748 y(completion)32 b(for)e(a)h -Ft(cd)e Fu(command.)275 1883 y(Man)m(y)34 b(more)g(examples)g({)g(an)g +(attempt)h(w)m(ord)150 3467 y(completion)32 b(for)e(a)h +Ft(cd)e Fu(command.)275 3601 y(Man)m(y)34 b(more)g(examples)g({)g(an)g (extensiv)m(e)h(collection)i(of)c(completions)i(for)f(most)g(of)g(the)g -(common)150 1993 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g +(common)150 3711 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 1993 28 4 v 39 w(completion)i(pro)5 b(ject.)150 -2102 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h +2943 3711 28 4 v 39 w(completion)i(pro)5 b(ject.)150 +3821 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h (GNU/Lin)m(ux)f(distributions.)51 b(Originally)35 b(written)f(b)m(y)g -(Ian)150 2212 y(Macdonald,)45 b(the)c(pro)5 b(ject)42 -b(no)m(w)f(liv)m(es)i(at)f Ft(http:)9 b(/)g(/)e(bash-completio)o(n)i(.) -e(a)o(lio)o(th)i(.)d(debi)o(an)j(.)d(org)i(/)f Fu(.)150 -2321 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g -(as)h(Solaris)g(and)f(Mac)h(OS)f(X.)275 2456 y(An)54 -b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 2456 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 2565 y Ft(examples/complete)26 b Fu(sub)s(directory)-8 +(Ian)150 3930 y(Macdonald,)44 b(the)d(pro)5 b(ject)41 +b(no)m(w)f(liv)m(es)i(at)f Ft(http:)8 b(/)g(/)g(bash-completion)g(.)g +(alioth)g(.)g(debi)o(an)g(.)g(org)f(/)h Fu(.)150 4040 +y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g(as)h +(Solaris)g(and)f(Mac)h(OS)f(X.)275 4174 y(An)54 b(older)h(v)m(ersion)h +(of)f(the)g(bash)p 1532 4174 V 40 w(completion)h(pac)m(k)-5 +b(age)57 b(is)e(distributed)f(with)h(bash)f(in)h(the)150 +4284 y Ft(examples/complete)26 b Fu(sub)s(directory)-8 b(.)p eop end -%%Page: 133 139 -TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(133)150 -299 y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 -543 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) +%%Page: 137 143 +TeXDict begin 137 142 bop 3614 -116 a Fu(137)150 299 +y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 +498 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) f Fm(gnu)h Fu(History)g(Library)e(in)m(teractiv)m(ely)-8 -b(,)50 b(from)42 b(a)h(user's)150 653 y(standp)s(oin)m(t.)76 +b(,)50 b(from)42 b(a)h(user's)150 607 y(standp)s(oin)m(t.)76 b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76 b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fm(gnu)150 -762 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g -Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 1000 -y Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150 -1159 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the) +717 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g +Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 944 y +Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150 +1103 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the) f Ft(set)f Fu(builtin)h(is)g(enabled)g(\(see)g(Section)h(4.3.1)h([The)e -(Set)150 1269 y(Builtin],)32 b(page)g(58\),)h(the)e(shell)h(pro)m +(Set)150 1213 y(Builtin],)32 b(page)g(60\),)h(the)e(shell)h(pro)m (vides)f(access)h(to)g(the)f Fr(command)g(history)p Fu(,)h(the)f(list)h -(of)f(commands)150 1378 y(previously)h(t)m(yp)s(ed.)47 +(of)f(commands)150 1322 y(previously)h(t)m(yp)s(ed.)47 b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Ft(HISTSIZE)e Fu(shell)h(v)-5 b(ariable)34 b(is)f(used)e(as)i(the)g(n)m(um)m(b)s(er)e -(of)i(com-)150 1488 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h +(of)i(com-)150 1432 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h (list.)58 b(The)36 b(text)h(of)g(the)f(last)h Ft($HISTSIZE)d -Fu(commands)i(\(default)g(500\))150 1597 y(is)h(sa)m(v)m(ed.)61 +Fu(commands)i(\(default)g(500\))150 1541 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 +1651 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 Ft(HISTIGNORE)d -Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1954 y(When)g(the)g(shell)h(starts)g +b(of)g(the)g(shell)150 1760 y(v)-5 b(ariables)31 b Ft(HISTIGNORE)d +Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1888 y(When)g(the)g(shell)h(starts)g (up,)f(the)h(history)f(is)h(initialized)h(from)e(the)h(\014le)f(named)g -(b)m(y)h(the)f Ft(HISTFILE)150 2064 y Fu(v)-5 b(ariable)26 +(b)m(y)h(the)f Ft(HISTFILE)150 1998 y Fu(v)-5 b(ariable)26 b(\(default)g Ft(~/.bash_history)p Fu(\).)35 b(The)24 b(\014le)i(named)e(b)m(y)h(the)h(v)-5 b(alue)25 b(of)h -Ft(HISTFILE)c Fu(is)k(truncated,)150 2174 y(if)42 b(necessary)-8 +Ft(HISTFILE)c Fu(is)k(truncated,)150 2107 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 Ft(HISTFILESIZE)28 b Fu(v)-5 b(ariable.)46 +b(of)g(the)150 2217 y Ft(HISTFILESIZE)28 b Fu(v)-5 b(ariable.)46 b(When)31 b(a)h(shell)g(with)g(history)f(enabled)h(exits,)h(the)f(last) -h Ft($HISTSIZE)c Fu(lines)150 2393 y(are)35 b(copied)g(from)g(the)g +h Ft($HISTSIZE)c Fu(lines)150 2326 y(are)35 b(copied)g(from)g(the)g (history)f(list)i(to)f(the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)p Fu(.)51 b(If)35 b(the)g Ft(histappend)d -Fu(shell)150 2502 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h -([Bash)f(Builtins],)h(page)g(48\),)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 +Fu(shell)150 2436 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h +([Bash)f(Builtins],)h(page)g(49\),)h(the)e(lines)g(are)g(app)s(ended)e +(to)i(the)g(history)150 2545 y(\014le,)36 b(otherwise)f(the)g(history)f (\014le)h(is)f(o)m(v)m(erwritten.)55 b(If)34 b Ft(HISTFILE)e Fu(is)j(unset,)g(or)g(if)f(the)h(history)f(\014le)h(is)150 -2721 y(un)m(writable,)f(the)f(history)g(is)g(not)h(sa)m(v)m(ed.)49 +2655 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) +(\014le)g(is)g(truncated)150 2765 y(to)g(con)m(tain)h(no)f(more)g(than) f Ft($HISTFILESIZE)d Fu(lines.)48 b(If)33 b Ft(HISTFILESIZE)c -Fu(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2941 +Fu(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2874 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 Ft(HISTTIMEFORMAT)d +(truncated.)275 3002 y(If)g(the)h Ft(HISTTIMEFORMAT)d Fu(is)j(set,)h(the)f(time)h(stamp)f(information)g(asso)s(ciated)i(with) -e(eac)m(h)h(history)150 3188 y(en)m(try)d(is)h(written)f(to)h(the)f +e(eac)m(h)h(history)150 3111 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 +m(haracter.)43 b(When)30 b(the)150 3221 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 Ft(fc)g Fu(ma)m(y)h(b)s(e)f(used)f(to)i(list)g -(or)g(edit)g(and)e(re-execute)j(a)f(p)s(ortion)f(of)g(the)h(history)150 -3655 y(list.)41 b(The)27 b Ft(history)f Fu(builtin)i(ma)m(y)h(b)s(e)e -(used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f(the)h(history)g(list)h(and)f -(manipulate)150 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 Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e Fu(v)-5 -b(ariables)29 b(ma)m(y)h(b)s(e)d(set)j(to)f(cause)g(the)g(shell)f(to)i -(sa)m(v)m(e)g(only)f(a)g(subset)150 4340 y(of)e(the)g(commands)f(en)m -(tered.)40 b(The)26 b Ft(cmdhist)f Fu(shell)i(option,)h(if)f(enabled,)g -(causes)h(the)e(shell)h(to)h(attempt)150 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 Ft(lithist)e Fu(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 Ft(shopt)e Fu(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(48,)h(for)e(a)h(description)f(of)h -Ft(shopt)p Fu(.)150 5016 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 -5176 y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g -(whic)m(h)g(manipulate)g(the)h(history)f(list)h(and)f(history)g -(\014le.)150 5340 y Ft(fc)p eop end -%%Page: 134 140 -TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(134)870 -299 y Ft(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p -Fj(first)p Ft(])g([)p Fj(last)p Ft(])870 408 y(fc)h(-s)g([)p -Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p Fj(command)p Ft(])630 -539 y Fu(The)22 b(\014rst)g(form)f(selects)j(a)f(range)g(of)f(commands) -g(from)g Fr(\014rst)i Fu(to)f Fr(last)i Fu(from)d(the)h(history)f(list) -630 648 y(and)i(displa)m(ys)h(or)g(edits)h(and)e(re-executes)j(them.)39 -b(Both)25 b Fr(\014rst)h Fu(and)f Fr(last)j Fu(ma)m(y)d(b)s(e)g(sp)s -(eci\014ed)630 758 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 867 y(as)d(a)g(n)m(um)m(b)s(er)f(\(an)h(index)f(in)m(to)i(the)f +3330 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h +(for)f(the)h(follo)m(wing)h(history)e(en)m(try)-8 b(.)275 +3458 y(The)19 b(builtin)h(command)g Ft(fc)g Fu(ma)m(y)h(b)s(e)f(used)f +(to)i(list)g(or)g(edit)g(and)e(re-execute)j(a)f(p)s(ortion)f(of)g(the)h +(history)150 3567 y(list.)41 b(The)27 b Ft(history)f +Fu(builtin)i(ma)m(y)h(b)s(e)e(used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f +(the)h(history)g(list)h(and)f(manipulate)150 3677 y(the)j(history)g +(\014le.)42 b(When)31 b(using)f(command-line)h(editing,)h(searc)m(h)f +(commands)g(are)g(a)m(v)-5 b(ailable)33 b(in)e(eac)m(h)150 +3787 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g +(history)f(list)i(\(see)f(Section)h(8.4.2)g([Commands)e(F)-8 +b(or)150 3896 y(History],)31 b(page)h(120\).)275 4024 +y(The)47 b(shell)i(allo)m(ws)h(con)m(trol)f(o)m(v)m(er)h(whic)m(h)e +(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)h(history)f(list.)95 +b(The)150 4133 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e +Fu(v)-5 b(ariables)29 b(ma)m(y)h(b)s(e)d(set)j(to)f(cause)g(the)g +(shell)f(to)i(sa)m(v)m(e)g(only)f(a)g(subset)150 4243 +y(of)e(the)g(commands)f(en)m(tered.)40 b(The)26 b Ft(cmdhist)f +Fu(shell)i(option,)h(if)f(enabled,)g(causes)h(the)e(shell)h(to)h +(attempt)150 4352 y(to)23 b(sa)m(v)m(e)h(eac)m(h)f(line)g(of)f(a)h(m)m +(ulti-line)g(command)f(in)g(the)h(same)f(history)g(en)m(try)-8 +b(,)25 b(adding)d(semicolons)h(where)150 4462 y(necessary)37 +b(to)f(preserv)m(e)h(syn)m(tactic)h(correctness.)58 b(The)36 +b Ft(lithist)e Fu(shell)i(option)h(causes)g(the)f(shell)g(to)150 +4572 y(sa)m(v)m(e)25 b(the)e(command)h(with)f(em)m(b)s(edded)f +(newlines)h(instead)h(of)f(semicolons.)40 b(The)23 b +Ft(shopt)e Fu(builtin)i(is)h(used)150 4681 y(to)31 b(set)g(these)g +(options.)41 b(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)g +(49,)h(for)e(a)h(description)f(of)h Ft(shopt)p Fu(.)150 +4908 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 5067 +y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g(whic)m(h) +g(manipulate)g(the)h(history)f(list)h(and)f(history)g(\014le.)150 +5213 y Ft(fc)870 5340 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p +Fj(first)p Ft(])g([)p Fj(last)p Ft(])p eop end +%%Page: 138 144 +TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(138)870 +299 y Ft(fc)47 b(-s)g([)p Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p +Fj(command)p Ft(])630 429 y Fu(The)22 b(\014rst)g(form)f(selects)j(a)f +(range)g(of)f(commands)g(from)g Fr(\014rst)i Fu(to)f +Fr(last)i Fu(from)d(the)h(history)f(list)630 539 y(and)i(displa)m(ys)h +(or)g(edits)h(and)e(re-executes)j(them.)39 b(Both)25 +b Fr(\014rst)h Fu(and)f Fr(last)j Fu(ma)m(y)d(b)s(e)g(sp)s(eci\014ed) +630 648 y(as)31 b(a)g(string)f(\(to)i(lo)s(cate)h(the)d(most)h(recen)m +(t)h(command)f(b)s(eginning)e(with)i(that)g(string\))g(or)630 +758 y(as)d(a)g(n)m(um)m(b)s(er)f(\(an)h(index)f(in)m(to)i(the)f (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 977 y(an)g(o\013set)i(from)e(the)h(curren)m(t)f(command) +(used)f(as)630 867 y(an)g(o\013set)i(from)e(the)h(curren)m(t)f(command) h(n)m(um)m(b)s(er\).)39 b(If)27 b Fr(last)j Fu(is)e(not)f(sp)s -(eci\014ed)g(it)h(is)g(set)g(to)630 1087 y Fr(\014rst)p +(eci\014ed)g(it)h(is)g(set)g(to)630 977 y Fr(\014rst)p Fu(.)47 b(If)32 b Fr(\014rst)i Fu(is)f(not)g(sp)s(eci\014ed)f(it)h(is)g (set)g(to)h(the)f(previous)f(command)h(for)f(editing)i(and)630 -1196 y Fq(\000)p Fu(16)j(for)g(listing.)61 b(If)36 b(the)h +1087 y Fq(\000)p Fu(16)j(for)g(listing.)61 b(If)36 b(the)h Ft(-l)f Fu(\015ag)i(is)e(giv)m(en,)k(the)d(commands)f(are)i(listed)f -(on)g(standard)630 1306 y(output.)59 b(The)36 b Ft(-n)h +(on)g(standard)630 1196 y(output.)59 b(The)36 b Ft(-n)h Fu(\015ag)g(suppresses)e(the)h(command)h(n)m(um)m(b)s(ers)e(when)h -(listing.)60 b(The)37 b Ft(-r)630 1415 y Fu(\015ag)e(rev)m(erses)f(the) +(listing.)60 b(The)37 b Ft(-r)630 1306 y Fu(\015ag)e(rev)m(erses)f(the) h(order)e(of)i(the)f(listing.)53 b(Otherwise,)35 b(the)f(editor)h(giv)m -(en)g(b)m(y)f Fr(ename)40 b Fu(is)630 1525 y(in)m(v)m(ok)m(ed)33 +(en)g(b)m(y)f Fr(ename)40 b Fu(is)630 1415 y(in)m(v)m(ok)m(ed)33 b(on)f(a)g(\014le)g(con)m(taining)h(those)f(commands.)44 b(If)31 b Fr(ename)38 b Fu(is)31 b(not)h(giv)m(en,)i(the)d(v)-5 -b(alue)630 1634 y(of)29 b(the)g(follo)m(wing)i(v)-5 b(ariable)29 +b(alue)630 1525 y(of)29 b(the)g(follo)m(wing)i(v)-5 b(ariable)29 b(expansion)g(is)g(used:)39 b Ft(${FCEDIT:-${EDITOR:-vi}})p -Fu(.)34 b(This)630 1744 y(sa)m(ys)g(to)g(use)f(the)h(v)-5 +Fu(.)34 b(This)630 1634 y(sa)m(ys)g(to)g(use)f(the)h(v)-5 b(alue)34 b(of)f(the)h Ft(FCEDIT)e Fu(v)-5 b(ariable)34 b(if)f(set,)i(or)f(the)f(v)-5 b(alue)34 b(of)g(the)g -Ft(EDITOR)630 1854 y Fu(v)-5 b(ariable)40 b(if)e(that)i(is)f(set,)i(or) +Ft(EDITOR)630 1744 y Fu(v)-5 b(ariable)40 b(if)e(that)i(is)f(set,)i(or) e Ft(vi)f Fu(if)h(neither)g(is)g(set.)66 b(When)39 b(editing)g(is)g -(complete,)k(the)630 1963 y(edited)31 b(commands)f(are)g(ec)m(ho)s(ed)h -(and)f(executed.)630 2093 y(In)k(the)g(second)g(form,)h +(complete,)k(the)630 1854 y(edited)31 b(commands)f(are)g(ec)m(ho)s(ed)h +(and)f(executed.)630 1984 y(In)k(the)g(second)g(form,)h Fr(command)j Fu(is)c(re-executed)i(after)f(eac)m(h)g(instance)g(of)f -Fr(pat)j Fu(in)d(the)630 2203 y(selected)e(command)e(is)h(replaced)g(b) +Fr(pat)j Fu(in)d(the)630 2093 y(selected)e(command)e(is)h(replaced)g(b) m(y)f Fr(rep)p Fu(.)41 b Fr(command)34 b Fu(is)c(in)m(tepreted)h(the)g -(same)g(as)g Fr(\014rst)630 2313 y Fu(ab)s(o)m(v)m(e.)630 -2443 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Ft(fc)f +(same)g(as)g Fr(\014rst)630 2203 y Fu(ab)s(o)m(v)m(e.)630 +2333 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Ft(fc)f Fu(command)h(is)g Ft(r='fc)e(-s')p Fu(,)h(so)h(that)h(t)m(yping)f(`)p -Ft(r)f(cc)p Fu(')630 2552 y(runs)35 b(the)h(last)h(command)f(b)s +Ft(r)f(cc)p Fu(')630 2443 y(runs)35 b(the)h(last)h(command)f(b)s (eginning)g(with)g Ft(cc)f Fu(and)h(t)m(yping)g(`)p Ft(r)p -Fu(')h(re-executes)h(the)e(last)630 2662 y(command)30 -b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(88\).)150 -2813 y Ft(history)870 2943 y(history)46 b([)p Fj(n)p -Ft(])870 3052 y(history)g(-c)870 3162 y(history)g(-d)h -Fj(offset)870 3271 y Ft(history)f([-anrw])g([)p Fj(filename)p -Ft(])870 3381 y(history)g(-ps)h Fj(arg)630 3511 y Fu(With)26 +Fu(')h(re-executes)h(the)e(last)630 2552 y(command)30 +b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(90\).)150 +2703 y Ft(history)870 2833 y(history)46 b([)p Fj(n)p +Ft(])870 2943 y(history)g(-c)870 3052 y(history)g(-d)h +Fj(offset)870 3162 y Ft(history)f([-anrw])g([)p Fj(filename)p +Ft(])870 3271 y(history)g(-ps)h Fj(arg)630 3402 y Fu(With)26 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 -3621 y(a)35 b(`)p Ft(*)p Fu(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.) +3511 y(a)35 b(`)p Ft(*)p Fu(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.) 53 b(An)34 b(argumen)m(t)h(of)g Fr(n)f Fu(lists)i(only)f(the)g(last)g -Fr(n)f Fu(lines.)54 b(If)35 b(the)630 3730 y(shell)30 +Fr(n)f Fu(lines.)54 b(If)35 b(the)630 3621 y(shell)30 b(v)-5 b(ariable)31 b Ft(HISTTIMEFORMAT)26 b Fu(is)k(set)h(and)e(not)i (n)m(ull,)f(it)h(is)f(used)f(as)h(a)h(format)f(string)630 -3840 y(for)36 b Fr(strftime)41 b Fu(to)36 b(displa)m(y)g(the)g(time)h +3730 y(for)36 b Fr(strftime)41 b Fu(to)36 b(displa)m(y)g(the)g(time)h (stamp)f(asso)s(ciated)h(with)f(eac)m(h)h(displa)m(y)m(ed)f(history)630 -3950 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)g(blank)f(is)g +3840 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 4059 y(the)e(history)f(line.)630 4189 y(Options,)g(if)h(supplied,)e -(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4340 +630 3950 y(the)e(history)f(line.)630 4080 y(Options,)g(if)h(supplied,)e +(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4230 y Ft(-c)384 b Fu(Clear)23 b(the)g(history)g(list.)39 b(This)22 b(ma)m(y)i(b)s(e)e(com)m(bined)h(with)f(the)h(other)h -(options)1110 4450 y(to)31 b(replace)g(the)g(history)f(list)h -(completely)-8 b(.)630 4600 y Ft(-d)30 b Fj(offset)66 +(options)1110 4340 y(to)31 b(replace)g(the)g(history)f(list)h +(completely)-8 b(.)630 4491 y Ft(-d)30 b Fj(offset)66 b Fu(Delete)25 b(the)f(history)f(en)m(try)h(at)g(p)s(osition)f Fr(o\013set)p Fu(.)39 b Fr(o\013set)27 b Fu(should)22 -b(b)s(e)h(sp)s(eci\014ed)1110 4710 y(as)31 b(it)g(app)s(ears)e(when)h -(the)g(history)g(is)h(displa)m(y)m(ed.)630 4861 y Ft(-a)384 -b Fu(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 4970 y(ginning)30 -b(of)h(the)f(curren)m(t)g(Bash)h(session\))g(to)g(the)g(history)f -(\014le.)630 5121 y Ft(-n)384 b Fu(App)s(end)32 b(the)i(history)f -(lines)h(not)g(already)g(read)g(from)f(the)h(history)f(\014le)h(to)1110 -5230 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25 -b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le)1110 -5340 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h -(session.)p eop end -%%Page: 135 141 -TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(135)630 +b(b)s(e)h(sp)s(eci\014ed)1110 4600 y(as)31 b(it)g(app)s(ears)e(when)h +(the)g(history)g(is)h(displa)m(y)m(ed.)630 4751 y Ft(-a)384 +b Fu(App)s(end)28 b(the)i(new)f(history)g(lines)h(to)h(the)e(history)h +(\014le.)41 b(These)29 b(are)h(history)1110 4861 y(lines)36 +b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h(curren)m(t)f +(Bash)h(session,)h(but)1110 4970 y(not)31 b(already)g(app)s(ended)d(to) +j(the)g(history)f(\014le.)630 5121 y Ft(-n)384 b Fu(App)s(end)32 +b(the)i(history)f(lines)h(not)g(already)g(read)g(from)f(the)h(history)f +(\014le)h(to)1110 5230 y(the)26 b(curren)m(t)f(history)g(list.)40 +b(These)25 b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le) +1110 5340 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f +(Bash)h(session.)p eop end +%%Page: 139 145 +TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(139)630 299 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h(and)f(app)s (end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f(list.)630 -447 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f(history) -g(list)h(to)h(the)e(history)g(\014le.)630 595 y Ft(-p)384 +483 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f(history) +g(list)h(to)h(the)e(history)g(\014le.)630 668 y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f(the)h Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 -705 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g -(in)g(the)g(history)g(list.)630 853 y Ft(-s)384 b Fu(The)30 +777 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g +(in)g(the)g(history)g(list.)630 962 y Ft(-s)384 b Fu(The)30 b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f (history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630 -1001 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p +1146 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630 -1111 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28 +1256 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28 b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d -Fu(v)-5 b(ariable)29 b(is)f(used.)150 1332 y Fs(9.3)68 -b(History)46 b(Expansion)150 1492 y Fu(The)f(History)h(library)e(pro)m +Fu(v)-5 b(ariable)29 b(is)f(used.)150 1534 y Fs(9.3)68 +b(History)46 b(Expansion)150 1693 y Fu(The)f(History)h(library)e(pro)m (vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g -(the)f(history)150 1601 y(expansion)g(pro)m(vided)f(b)m(y)h +(the)f(history)150 1803 y(expansion)g(pro)m(vided)f(b)m(y)h Ft(csh)p Fu(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h -(used)e(to)i(manipulate)f(the)150 1711 y(history)30 b(information.)275 -1840 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h +(used)e(to)i(manipulate)f(the)150 1912 y(history)30 b(information.)275 +2072 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h (history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150 -1949 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) +2182 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 -2059 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g -(quic)m(kly)-8 b(.)275 2188 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 2297 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 -2407 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m(t)f(one.)40 -b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h(called)h(the)f -Fr(ev)m(en)m(t)p Fu(,)j(and)150 2517 y(the)21 b(p)s(ortions)g(of)g -(that)h(line)f(that)h(are)g(acted)g(up)s(on)e(are)h(called)h -Fr(w)m(ords)p Fu(.)38 b(V)-8 b(arious)21 b Fr(mo)s(di\014ers)j -Fu(are)e(a)m(v)-5 b(ailable)150 2626 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 2736 -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 -2845 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 2955 y(`)p Ft(!)p Fu(')d(b)m(y)f(default.)41 -b(Only)29 b(`)p Ft(\\)p Fu(')i(and)f(`)p Ft(')p Fu(')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 -3084 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h +2291 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g +(quic)m(kly)-8 b(.)275 2451 y(History)40 b(expansion)g(is)h(p)s +(erformed)d(immediately)k(after)f(a)f(complete)i(line)f(is)f(read,)j(b) +s(efore)d(the)150 2560 y(shell)31 b(breaks)f(it)h(in)m(to)g(w)m(ords.) +275 2720 y(History)c(expansion)f(tak)m(es)i(place)f(in)f(t)m(w)m(o)i +(parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g(whic)m(h)f(line)h +(from)f(the)150 2829 y(history)i(list)g(should)f(b)s(e)g(used)g(during) +g(substitution.)39 b(The)27 b(second)h(is)g(to)h(select)g(p)s(ortions)e +(of)h(that)h(line)150 2939 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m +(t)f(one.)40 b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h +(called)h(the)f Fr(ev)m(en)m(t)p Fu(,)j(and)150 3048 +y(the)21 b(p)s(ortions)g(of)g(that)h(line)f(that)h(are)g(acted)g(up)s +(on)e(are)h(called)h Fr(w)m(ords)p Fu(.)38 b(V)-8 b(arious)21 +b Fr(mo)s(di\014ers)j Fu(are)e(a)m(v)-5 b(ailable)150 +3158 y(to)35 b(manipulate)f(the)g(selected)i(w)m(ords.)51 +b(The)33 b(line)h(is)g(brok)m(en)g(in)m(to)h(w)m(ords)e(in)h(the)g +(same)h(fashion)e(that)150 3268 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m +(eral)g(w)m(ords)e(surrounded)f(b)m(y)i(quotes)g(are)g(considered)g +(one)g(w)m(ord.)54 b(History)150 3377 y(expansions)34 +b(are)g(in)m(tro)s(duced)f(b)m(y)h(the)g(app)s(earance)g(of)g(the)g +(history)g(expansion)g(c)m(haracter,)i(whic)m(h)e(is)150 +3487 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38 +b(`)p Ft(\\)p Fu(')h(and)f(`)p Ft(')p Fu(')h(ma)m(y)h(b)s(e)e(used)g +(to)h(escap)s(e)h(the)f(history)f(expansion)h(c)m(haracter,)150 +3596 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h +(treated)g(as)g(quoted)f(if)g(it)h(immediately)h(precedes)e(the)150 +3706 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275 +3865 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h Ft(shopt)e Fu(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150 -3194 y(page)32 b(48\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s +3975 y(page)32 b(49\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s (eha)m(vior)h(of)g(history)g(expansion.)44 b(If)31 b(the)h -Ft(histverify)d Fu(shell)150 3303 y(option)39 b(is)f(enabled,)i(and)e +Ft(histverify)d Fu(shell)150 4085 y(option)39 b(is)f(enabled,)i(and)e (Readline)g(is)h(b)s(eing)e(used,)j(history)e(substitutions)g(are)g -(not)h(immediately)150 3413 y(passed)30 b(to)h(the)g(shell)g(parser.)40 +(not)h(immediately)150 4194 y(passed)30 b(to)h(the)g(shell)g(parser.)40 b(Instead,)30 b(the)h(expanded)f(line)h(is)f(reloaded)h(in)m(to)h(the)e -(Readline)h(editing)150 3522 y(bu\013er)e(for)i(further)e(mo)s +(Readline)h(editing)150 4304 y(bu\013er)e(for)i(further)e(mo)s (di\014cation.)41 b(If)30 b(Readline)h(is)f(b)s(eing)g(used,)g(and)g -(the)g Ft(histreedit)e Fu(shell)i(option)150 3632 y(is)k(enabled,)h(a)g +(the)g Ft(histreedit)e Fu(shell)i(option)150 4413 y(is)k(enabled,)h(a)g (failed)g(history)f(expansion)g(will)g(b)s(e)g(reloaded)g(in)m(to)h -(the)g(Readline)f(editing)h(bu\013er)e(for)150 3741 y(correction.)68 +(the)g(Readline)f(editing)h(bu\013er)e(for)150 4523 y(correction.)68 b(The)38 b Ft(-p)h Fu(option)g(to)h(the)f Ft(history)e Fu(builtin)i(command)f(ma)m(y)i(b)s(e)e(used)g(to)i(see)g(what)f(a)150 -3851 y(history)f(expansion)f(will)h(do)g(b)s(efore)f(using)h(it.)63 +4633 y(history)f(expansion)f(will)h(do)g(b)s(efore)f(using)h(it.)63 b(The)37 b Ft(-s)g Fu(option)i(to)f(the)g Ft(history)e -Fu(builtin)h(ma)m(y)i(b)s(e)150 3961 y(used)21 b(to)i(add)f(commands)g +Fu(builtin)h(ma)m(y)i(b)s(e)150 4742 y(used)21 b(to)i(add)f(commands)g (to)g(the)h(end)e(of)i(the)f(history)g(list)h(without)f(actually)i -(executing)f(them,)h(so)e(that)150 4070 y(they)31 b(are)f(a)m(v)-5 +(executing)f(them,)h(so)e(that)150 4852 y(they)31 b(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g(recall.)42 b(This)29 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f(Readline.)275 -4199 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5 +5011 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g(expansion) -g(mec)m(h-)150 4309 y(anism)h(with)g(the)g Ft(histchars)d +g(mec)m(h-)150 5121 y(anism)h(with)g(the)g Ft(histchars)d Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e)i(\(see)f -(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 4418 y(page)32 -b(69\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g(commen)m(t)i(c)m +(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 5230 y(page)32 +b(71\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g(commen)m(t)i(c)m (haracter)f(to)g(mark)f(history)g(timestamps)h(when)150 -4528 y(writing)e(the)h(history)f(\014le.)150 4716 y Fk(9.3.1)63 -b(Ev)m(en)m(t)39 b(Designators)150 4863 y Fu(An)32 b(ev)m(en)m(t)j -(designator)e(is)g(a)g(reference)g(to)h(a)f(command)f(line)h(en)m(try)g -(in)g(the)g(history)g(list.)48 b(Unless)33 b(the)150 -4973 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 -5121 y Ft(!)432 b Fu(Start)34 b(a)f(history)h(substitution,)g(except)g -(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h(tab,)f(the)g(end)f(of)630 -5230 y(the)i(line,)g(`)p Ft(=)p Fu(')g(or)f(`)p Ft(\()p -Fu(')h(\(when)e(the)i Ft(extglob)d Fu(shell)j(option)f(is)h(enabled)f -(using)g(the)g Ft(shopt)630 5340 y Fu(builtin\).)p eop -end -%%Page: 136 142 -TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(136)150 -299 y Ft(!)p Fj(n)384 b Fu(Refer)30 b(to)i(command)e(line)g -Fr(n)p Fu(.)150 460 y Ft(!-)p Fj(n)336 b Fu(Refer)30 -b(to)i(the)e(command)g Fr(n)g Fu(lines)h(bac)m(k.)150 -622 y Ft(!!)384 b Fu(Refer)30 b(to)i(the)e(previous)g(command.)40 -b(This)30 b(is)g(a)h(synon)m(ym)f(for)g(`)p Ft(!-1)p -Fu('.)150 784 y Ft(!)p Fj(string)144 b Fu(Refer)25 b(to)h(the)f(most)h -(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)g(p)s(osition)g(in) -g(the)g(history)630 893 y(list)31 b(starting)g(with)f -Fr(string)p Fu(.)150 1055 y Ft(!?)p Fj(string)p Ft([?])630 -1164 y Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding) -g(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 -1274 y(list)32 b(con)m(taining)i Fr(string)p Fu(.)45 -b(The)31 b(trailing)i(`)p Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f -(the)g Fr(string)39 b Fu(is)32 b(follo)m(w)m(ed)630 1384 -y(immediately)g(b)m(y)e(a)h(newline.)150 1545 y Ft(^)p -Fj(string1)p Ft(^)p Fj(string2)p Ft(^)630 1655 y Fu(Quic)m(k)h -(Substitution.)44 b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g -Fr(string1)40 b Fu(with)31 b Fr(string2)p Fu(.)630 1764 -y(Equiv)-5 b(alen)m(t)31 b(to)g Ft(!!:s/)p Fj(string1)p -Ft(/)p Fj(string2)p Ft(/)p Fu(.)150 1926 y Ft(!#)384 -b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)150 -2127 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150 -2274 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h -(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27 -b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150 -2384 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 +5340 y(writing)e(the)h(history)f(\014le.)p eop end +%%Page: 140 146 +TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(140)150 +299 y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 +446 y Fu(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h +(a)f(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48 +b(Unless)33 b(the)150 555 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)f +(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h +(history)f(list.)150 712 y Ft(!)432 b Fu(Start)34 b(a)f(history)h +(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h +(tab,)f(the)g(end)f(of)630 822 y(the)i(line,)g(`)p Ft(=)p +Fu(')g(or)f(`)p Ft(\()p Fu(')h(\(when)e(the)i Ft(extglob)d +Fu(shell)j(option)f(is)h(enabled)f(using)g(the)g Ft(shopt)630 +931 y Fu(builtin\).)150 1088 y Ft(!)p Fj(n)384 b Fu(Refer)30 +b(to)i(command)e(line)g Fr(n)p Fu(.)150 1245 y Ft(!-)p +Fj(n)336 b Fu(Refer)30 b(to)i(the)e(command)g Fr(n)g +Fu(lines)h(bac)m(k.)150 1401 y Ft(!!)384 b Fu(Refer)30 +b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f +(for)g(`)p Ft(!-1)p Fu('.)150 1558 y Ft(!)p Fj(string)144 +b Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g +(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 +1668 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150 +1824 y Ft(!?)p Fj(string)p Ft([?])630 1934 y Fu(Refer)25 +b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t) +g(p)s(osition)g(in)g(the)g(history)630 2044 y(list)32 +b(con)m(taining)i Fr(string)p Fu(.)45 b(The)31 b(trailing)i(`)p +Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fr(string)39 +b Fu(is)32 b(follo)m(w)m(ed)630 2153 y(immediately)g(b)m(y)e(a)h +(newline.)150 2310 y Ft(^)p Fj(string1)p Ft(^)p Fj(string2)p +Ft(^)630 2420 y Fu(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32 +b(the)g(last)h(command,)f(replacing)g Fr(string1)40 b +Fu(with)31 b Fr(string2)p Fu(.)630 2529 y(Equiv)-5 b(alen)m(t)31 +b(to)g Ft(!!:s/)p Fj(string1)p Ft(/)p Fj(string2)p Ft(/)p +Fu(.)150 2686 y Ft(!#)384 b Fu(The)30 b(en)m(tire)h(command)f(line)h(t) +m(yp)s(ed)f(so)h(far.)150 2882 y Fk(9.3.2)63 b(W)-10 +b(ord)41 b(Designators)150 3029 y Fu(W)-8 b(ord)27 b(designators)h(are) +g(used)e(to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.) +41 b(A)27 b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150 +3139 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 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 2494 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p +(b)s(egins)150 3248 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p Ft($)p Fu(',)g(`)p Ft(*)p Fu(',)h(`)p Ft(-)p Fu(',)f(or)g(`)p Ft(\045)p Fu('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i (the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150 -2603 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).) +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 2713 y(single)h(spaces.)275 -2849 y(F)-8 b(or)31 b(example,)150 3012 y Ft(!!)384 b +(line)g(separated)h(b)m(y)150 3468 y(single)h(spaces.)275 +3601 y(F)-8 b(or)31 b(example,)150 3758 y Ft(!!)384 b Fu(designates)37 b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 -3122 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 3283 +3867 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 4024 y Ft(!!:$)288 b Fu(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the) h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 -3393 y(to)31 b Ft(!$)p Fu(.)150 3555 y Ft(!fi:2)240 b +4133 y(to)31 b Ft(!$)p Fu(.)150 4290 y Ft(!fi:2)240 b Fu(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f -(recen)m(t)i(command)e(starting)h(with)f(the)630 3664 -y(letters)j Ft(fi)p Fu(.)275 3827 y(Here)e(are)h(the)g(w)m(ord)f -(designators:)150 3990 y Ft(0)g(\(zero\))114 b Fu(The)30 +(recen)m(t)i(command)e(starting)h(with)f(the)630 4400 +y(letters)j Ft(fi)p Fu(.)275 4556 y(Here)e(are)h(the)g(w)m(ord)f +(designators:)150 4713 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h -(this)e(is)g(the)h(command)f(w)m(ord.)150 4151 y Fj(n)432 -b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 4313 y Ft(^)432 +(this)e(is)g(the)h(command)f(w)m(ord.)150 4870 y Fj(n)432 +b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 5027 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150 -4474 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150 -4636 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h -(most)g(recen)m(t)g(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')e(searc)m(h.)150 -4798 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p +5183 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150 +5340 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h +(most)g(recen)m(t)g(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')e(searc)m(h.)p +eop end +%%Page: 141 147 +TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(9:)41 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(141)150 +299 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p Ft(-)p Fj(y)p Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p -Fu('.)150 4959 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h +Fu('.)150 458 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h (the)e Ft(0)p Fu(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p Ft(1-$)p Fu('.)39 b(It)28 b(is)g(not)g(an)f(error)630 -5069 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m +568 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m (ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h -(returned)e(in)630 5178 y(that)j(case.)150 5340 y Fj(x)p -Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')p -eop end -%%Page: 137 143 -TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(137)150 -299 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p +(returned)e(in)630 677 y(that)j(case.)150 837 y Fj(x)p +Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')150 +996 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')f(lik)m(e)h(`)p Fj(x)p Ft(*)p Fu(',)g(but)f(omits)h(the)f -(last)h(w)m(ord.)275 458 y(If)i(a)h(w)m(ord)g(designator)g(is)g +(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 568 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150 -767 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 914 y Fu(After)29 +(previous)f(command)150 1265 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150 +1465 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 1611 y Fu(After)29 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 -1024 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p -Ft(:)p Fu('.)150 1183 y Ft(h)432 b Fu(Remo)m(v)m(e)32 +1721 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p +Ft(:)p Fu('.)150 1880 y Ft(h)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the) -h(head.)150 1342 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h +h(head.)150 2040 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h (pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 -1502 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g +2199 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g (the)h(form)f(`)p Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f -(basename.)150 1661 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h -(trailing)g(su\016x.)150 1821 y Ft(p)432 b Fu(Prin)m(t)30 +(basename.)150 2359 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h +(trailing)g(su\016x.)150 2518 y Ft(p)432 b Fu(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i(it.)150 -1980 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g -(escaping)h(further)e(substitutions.)150 2139 y Ft(x)432 +2677 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g +(escaping)h(further)e(substitutions.)150 2837 y Ft(x)432 b Fu(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i(with)f(`)p Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i(spaces,)h(tabs,) -630 2249 y(and)d(newlines.)150 2408 y Ft(s/)p Fj(old)p -Ft(/)p Fj(new)p Ft(/)630 2518 y Fu(Substitute)i Fr(new)40 +630 2946 y(and)d(newlines.)150 3106 y Ft(s/)p Fj(old)p +Ft(/)p Fj(new)p Ft(/)630 3215 y Fu(Substitute)i Fr(new)40 b Fu(for)32 b(the)h(\014rst)f(o)s(ccurrence)h(of)f Fr(old)37 b Fu(in)32 b(the)h(ev)m(en)m(t)h(line.)48 b(An)m(y)32 -b(delimiter)630 2628 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p +b(delimiter)630 3325 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p Ft(/)p Fu('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s(e)e(quoted)h(in)f Fr(old)29 b Fu(and)24 b Fr(new)32 b Fu(with)25 b(a)630 -2737 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Ft(&)p +3435 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Ft(&)p Fu(')g(app)s(ears)g(in)f Fr(new)p Fu(,)i(it)f(is)h(replaced)f(b)m(y)g -Fr(old)p Fu(.)40 b(A)28 b(single)h(bac)m(kslash)630 2847 +Fr(old)p Fu(.)40 b(A)28 b(single)h(bac)m(kslash)630 3544 y(will)35 b(quote)g(the)g(`)p Ft(&)p Fu('.)54 b(The)34 b(\014nal)g(delimiter)i(is)e(optional)i(if)f(it)g(is)f(the)h(last)h(c)m -(haracter)g(on)630 2956 y(the)31 b(input)e(line.)150 -3116 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 -3275 y Ft(g)150 3385 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f +(haracter)g(on)630 3654 y(the)31 b(input)e(line.)150 +3813 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 +3973 y Ft(g)150 4082 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f (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 3494 y(with)30 b(`)p +b(Used)39 b(in)f(conjunction)630 4192 y(with)30 b(`)p Ft(s)p Fu(',)h(as)f(in)h Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p -Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 3654 y +Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 4351 y Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i(`)p Ft(s)p Fu(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g(the)g(ev)m (en)m(t.)p eop end -%%Page: 138 144 -TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(138)150 299 y Fp(10)80 -b(Installing)52 b(Bash)150 556 y Fu(This)31 b(c)m(hapter)h(pro)m(vides) -g(basic)g(instructions)f(for)g(installing)i(Bash)f(on)f(the)h(v)-5 -b(arious)31 b(supp)s(orted)f(plat-)150 665 y(forms.)40 -b(The)28 b(distribution)h(supp)s(orts)e(the)j Fm(gnu)f -Fu(op)s(erating)h(systems,)f(nearly)h(ev)m(ery)g(v)m(ersion)f(of)h -(Unix,)150 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 Fm(ms-dos)p Fu(,)h Fm(os/2)p -Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1128 y Fs(10.1)68 -b(Basic)45 b(Installation)150 1288 y Fu(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 Ft(cd)38 b +%%Page: 142 148 +TeXDict begin 142 147 bop 3614 -116 a Fu(142)150 299 +y Fp(10)80 b(Installing)52 b(Bash)150 554 y Fu(This)31 +b(c)m(hapter)h(pro)m(vides)g(basic)g(instructions)f(for)g(installing)i +(Bash)f(on)f(the)h(v)-5 b(arious)31 b(supp)s(orted)f(plat-)150 +664 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j +Fm(gnu)f Fu(op)s(erating)h(systems,)f(nearly)h(ev)m(ery)g(v)m(ersion)f +(of)h(Unix,)150 773 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g +(as)g(BeOS)g(and)f(In)m(terix.)40 b(Other)28 b(indep)s(enden)m(t)e(p)s +(orts)h(exist)i(for)150 883 y Fm(ms-dos)p Fu(,)h Fm(os/2)p +Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1134 y Fs(10.1)68 +b(Basic)45 b(Installation)150 1294 y Fu(These)30 b(are)h(installation)h +(instructions)e(for)h(Bash.)275 1435 y(The)e(simplest)i(w)m(a)m(y)g(to) +g(compile)h(Bash)e(is:)199 1577 y(1.)61 b Ft(cd)38 b Fu(to)h(the)f(directory)h(con)m(taining)h(the)f(source)f(co)s(de)h(and) f(t)m(yp)s(e)g(`)p Ft(./configure)p Fu(')e(to)j(con\014gure)330 -1681 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f +1686 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f Ft(csh)g Fu(on)g(an)h(old)g(v)m(ersion)g(of)g(System)f(V,)h(y)m(ou)g -(migh)m(t)330 1791 y(need)21 b(to)g(t)m(yp)s(e)g(`)p +(migh)m(t)330 1796 y(need)21 b(to)g(t)m(yp)s(e)g(`)p Ft(sh)30 b(./configure)p Fu(')18 b(instead)j(to)g(prev)m(en)m(t)h Ft(csh)e Fu(from)g(trying)h(to)g(execute)h Ft(configure)330 -1901 y Fu(itself.)330 2039 y(Running)30 b Ft(configure)f +1906 y Fu(itself.)330 2044 y(Running)30 b Ft(configure)f Fu(tak)m(es)k(some)e(time.)45 b(While)32 b(running,)e(it)i(prin)m(ts)f -(messages)h(telling)h(whic)m(h)330 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 +(messages)h(telling)h(whic)m(h)330 2153 y(features)e(it)g(is)f(c)m(hec) +m(king)i(for.)199 2291 y(2.)61 b(T)m(yp)s(e)30 b(`)p Ft(make)p Fu(')g(to)h(compile)g(Bash)g(and)e(build)h(the)g -Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2425 +Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2429 y(3.)61 b(Optionally)-8 b(,)32 b(t)m(yp)s(e)e(`)p Ft(make)g(tests)p -Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2563 +Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2567 y(4.)61 b(T)m(yp)s(e)36 b(`)p Ft(make)29 b(install)p Fu(')35 b(to)i(install)h Ft(bash)d Fu(and)h Ft(bashbug)p Fu(.)57 b(This)35 b(will)i(also)h(install)f(the)g(man)m(ual)330 -2673 y(pages)31 b(and)f(Info)g(\014le.)275 2844 y(The)20 +2677 y(pages)31 b(and)f(Info)g(\014le.)275 2847 y(The)20 b Ft(configure)f Fu(shell)i(script)g(attempts)h(to)g(guess)f(correct)i (v)-5 b(alues)21 b(for)g(v)-5 b(arious)21 b(system-dep)s(enden)m(t)150 -2953 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42 +2956 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42 b(It)31 b(uses)e(those)i(v)-5 b(alues)30 b(to)h(create)h(a)e -Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 3063 y(tory)k(of)g(the)g +Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 3066 y(tory)k(of)g(the)g (pac)m(k)-5 b(age)38 b(\(the)e(top)g(directory)-8 b(,)38 b(the)e Ft(builtins)p Fu(,)f Ft(doc)p Fu(,)i(and)e Ft(support)e -Fu(directories,)39 b(eac)m(h)150 3172 y(directory)29 +Fu(directories,)39 b(eac)m(h)150 3176 y(directory)29 b(under)d Ft(lib)p Fu(,)j(and)e(sev)m(eral)j(others\).)40 b(It)29 b(also)g(creates)h(a)e Ft(config.h)e Fu(\014le)j(con)m(taining) -g(system-)150 3282 y(dep)s(enden)m(t)e(de\014nitions.)40 +g(system-)150 3285 y(dep)s(enden)m(t)e(de\014nitions.)40 b(Finally)-8 b(,)31 b(it)d(creates)i(a)f(shell)g(script)f(named)g -Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3392 y(run)h(in)h(the)h +Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3395 y(run)h(in)h(the)h (future)f(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)i(a)f (\014le)f Ft(config.cache)e Fu(that)j(sa)m(v)m(es)h(the)150 -3501 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g +3504 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g (recon\014guring,)j(and)e(a)g(\014le)g Ft(config.log)e -Fu(con)m(taining)j(compiler)150 3611 y(output)30 b(\(useful)h(mainly)g +Fu(con)m(taining)j(compiler)150 3614 y(output)30 b(\(useful)h(mainly)g (for)f(debugging)h Ft(configure)p Fu(\).)40 b(If)30 b(at)h(some)h(p)s -(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3720 +(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3724 y(results)i(y)m(ou)h(don't)f(w)m(an)m(t)h(to)h(k)m(eep,)f(y)m(ou)g(ma)m -(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3862 y(T)-8 b(o)37 +(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3865 y(T)-8 b(o)37 b(\014nd)f(out)i(more)f(ab)s(out)h(the)f(options)h(and)f(argumen)m(ts)g -(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3972 -y(stands,)30 b(t)m(yp)s(e)390 4114 y Ft(bash-2.04$)45 -b(./configure)g(--help)150 4256 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g -(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4398 +(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3975 +y(stands,)30 b(t)m(yp)s(e)390 4116 y Ft(bash-2.04$)45 +b(./configure)g(--help)150 4258 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g +(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4399 y(If)53 b(y)m(ou)h(need)f(to)i(do)e(un)m(usual)g(things)g(to)i(compile) g(Bash,)k(please)c(try)e(to)i(\014gure)e(out)h(ho)m(w)150 -4508 y Ft(configure)47 b Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h +4509 y Ft(configure)47 b Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h (to)h(do)e(them,)55 b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to) -150 4617 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 +150 4619 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 b(they)h(can)g(b)s(e)e(considered)i(for)f(the)g(next)h(release.)275 4760 y(The)e(\014le)g Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g Ft(configure)c Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40 -b(Y)-8 b(ou)150 4869 y(only)34 b(need)g Ft(configure.ac)d +b(Y)-8 b(ou)150 4870 y(only)34 b(need)g Ft(configure.ac)d Fu(if)i(y)m(ou)i(w)m(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i Ft(configure)31 b Fu(using)j(a)g(new)m(er)150 4979 y(v)m(ersion)25 b(of)f(Auto)s(conf.)39 b(If)24 b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f @@ -17752,9 +18187,9 @@ Fu('.)42 b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g Ft(configure)e Fu(created)j(\(so)g(y)m(ou)g(can)f(compile)150 5340 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m (yp)s(e)g(`)p Ft(make)e(distclean)p Fu('.)p eop end -%%Page: 139 145 -TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(139)150 299 y Fs(10.2)68 +%%Page: 143 149 +TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(143)150 299 y Fs(10.2)68 b(Compilers)46 b(and)f(Options)150 458 y Fu(Some)28 b(systems)h (require)f(un)m(usual)f(options)i(for)f(compilation)i(or)f(linking)f (that)h(the)g Ft(configure)d Fu(script)150 568 y(do)s(es)32 @@ -17763,421 +18198,425 @@ Ft(configure)d Fu(initial)j(v)-5 b(alues)32 b(for)g(v)-5 b(ariables)32 b(b)m(y)g(setting)h(them)150 677 y(in)k(the)g(en)m (vironmen)m(t.)62 b(Using)38 b(a)f(Bourne-compatible)i(shell,)g(y)m(ou) f(can)g(do)f(that)h(on)f(the)g(command)150 787 y(line)31 -b(lik)m(e)g(this:)390 920 y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g -(./configure)275 1053 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f +b(lik)m(e)g(this:)390 926 y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g +(./configure)275 1065 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f Ft(env)e Fu(program,)h(y)m(ou)h(can)g(do)f(it)h(lik)m(e)h(this:)390 -1186 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 -b(LDFLAGS=-s)j(./configure)275 1318 y Fu(The)29 b(con\014guration)i +1204 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 +b(LDFLAGS=-s)j(./configure)275 1343 y Fu(The)29 b(con\014guration)i (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 Fs(10.3)68 b(Compiling)46 b(F)-11 -b(or)45 b(Multiple)g(Arc)l(hitectures)150 1707 y Fu(Y)-8 +b(ailable.)150 1590 y Fs(10.3)68 b(Compiling)46 b(F)-11 +b(or)45 b(Multiple)g(Arc)l(hitectures)150 1750 y Fu(Y)-8 b(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) +1859 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 Ft(make)f Fu(that)h(supp)s(orts)f(the)h +1969 y(of)25 b Ft(make)f Fu(that)h(supp)s(orts)f(the)h Ft(VPATH)e Fu(v)-5 b(ariable,)27 b(suc)m(h)e(as)g(GNU)h Ft(make)p Fu(.)37 b Ft(cd)25 b Fu(to)h(the)f(directory)g(where)g(y)m -(ou)150 2036 y(w)m(an)m(t)34 b(the)f(ob)5 b(ject)34 b(\014les)f(and)f +(ou)150 2078 y(w)m(an)m(t)34 b(the)f(ob)5 b(ject)34 b(\014les)f(and)f (executables)i(to)g(go)g(and)e(run)g(the)h Ft(configure)d -Fu(script)j(from)g(the)g(source)150 2145 y(directory)-8 +Fu(script)j(from)g(the)g(source)150 2188 y(directory)-8 b(.)44 b(Y)-8 b(ou)32 b(ma)m(y)g(need)f(to)h(supply)e(the)i Ft(--srcdir=PATH)27 b Fu(argumen)m(t)32 b(to)g(tell)h -Ft(configure)28 b Fu(where)150 2255 y(the)36 b(source)g(\014les)f(are.) +Ft(configure)28 b Fu(where)150 2297 y(the)36 b(source)g(\014les)f(are.) 57 b Ft(configure)33 b Fu(automatically)39 b(c)m(hec)m(ks)e(for)e(the)h -(source)g(co)s(de)f(in)h(the)f(directory)150 2364 y(that)c -Ft(configure)d Fu(is)i(in)g(and)g(in)g(`..'.)275 2497 +(source)g(co)s(de)f(in)h(the)f(directory)150 2407 y(that)c +Ft(configure)d Fu(is)i(in)g(and)g(in)g(`..'.)275 2546 y(If)20 b(y)m(ou)h(ha)m(v)m(e)i(to)e(use)g(a)g Ft(make)f Fu(that)i(do)s(es)e(not)i(supp)s(orts)d(the)i Ft(VPATH)e Fu(v)-5 b(ariable,)24 b(y)m(ou)e(can)f(compile)h(Bash)150 -2607 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h +2656 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 +(e)h(installed)f(Bash)150 2765 y(for)c(one)h(arc)m(hitecture,)h(use)e (`)p Ft(make)g(distclean)p Fu(')e(b)s(efore)i(recon\014guring)g(for)g -(another)g(arc)m(hitecture.)275 2849 y(Alternativ)m(ely)-8 +(another)g(arc)m(hitecture.)275 2904 y(Alternativ)m(ely)-8 b(,)30 b(if)c(y)m(our)g(system)h(supp)s(orts)d(sym)m(b)s(olic)j(links,) -g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 2959 +g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 3014 y Fu(script)d(to)h(create)g(a)f(build)f(tree)i(whic)m(h)f(has)f(sym)m (b)s(olic)i(links)e(bac)m(k)i(to)g(eac)m(h)g(\014le)f(in)g(the)g -(source)g(directory)-8 b(.)150 3068 y(Here's)41 b(an)f(example)i(that)f +(source)g(directory)-8 b(.)150 3123 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 Ft(/usr/gnu/src/bash-2.0)p -Fu(:)390 3311 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o +(from)f(a)h(source)150 3233 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p +Fu(:)390 3372 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o (mkcl)o(one)41 b(-s)47 b(/usr/gnu/src/bash-2.0)42 b(.)150 -3444 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m +3511 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m (ou)f(m)m(ust)h(ha)m(v)m(e)g(already)g(built)f(Bash)g(for)g(at)h(least) -h(one)150 3553 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f +h(one)150 3620 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 Fs(10.4)68 b(Installation)47 b(Names)150 3942 +3868 y Fs(10.4)68 b(Installation)47 b(Names)150 4027 y Fu(By)37 b(default,)i(`)p Ft(make)29 b(install)p Fu(')35 b(will)j(install)f(in)m(to)h Ft(/usr/local/bin)p Fu(,)d -Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 4051 +Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 4137 y(can)35 b(sp)s(ecify)f(an)h(installation)i(pre\014x)c(other)j(than)e Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)150 -4161 y Ft(--prefix=)p Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h +4246 y Ft(--prefix=)p Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h (a)f(v)-5 b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p Ft(make)p Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 -4271 y(`)p Ft(make)29 b(install)p Fu('.)275 4403 y(Y)-8 +4356 y(`)p Ft(make)29 b(install)p Fu('.)275 4495 y(Y)-8 b(ou)71 b(can)h(sp)s(ecify)f(separate)h(installation)h(pre\014xes)d (for)h(arc)m(hitecture-sp)s(eci\014c)i(\014les)f(and)150 -4513 y(arc)m(hitecture-indep)s(enden)m(t)44 b(\014les.)80 +4604 y(arc)m(hitecture-indep)s(enden)m(t)44 b(\014les.)80 b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c Fu(the)j(option)g -Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 4623 y(`)p Ft(make)29 +Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 4714 y(`)p Ft(make)29 b(install)p Fu(')63 b(will)h(use)f Fr(P)-8 b(A)g(TH)75 b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h(programs)e(and)h -(libraries.)150 4732 y(Do)s(cumen)m(tation)32 b(and)e(other)h(data)g +(libraries.)150 4824 y(Do)s(cumen)m(tation)32 b(and)e(other)h(data)g (\014les)f(will)h(still)g(use)f(the)h(regular)f(pre\014x.)150 -4961 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)150 -5121 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f +5071 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)150 +5230 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f Ft(configure)e Fu(can)i(not)g(\014gure)g(out)g(automatically)-8 -b(,)52 b(but)44 b(need)h(to)150 5230 y(determine)26 b(b)m(y)g(the)g(t)m +b(,)52 b(but)44 b(need)h(to)150 5340 y(determine)26 b(b)m(y)g(the)g(t)m (yp)s(e)g(of)g(host)g(Bash)g(will)g(run)f(on.)39 b(Usually)26 -b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)150 -5340 y(if)g(it)g(prin)m(ts)f(a)h(message)g(sa)m(ying)h(it)f(can)g(not)f -(guess)h(the)g(host)f(t)m(yp)s(e,)i(giv)m(e)g(it)f(the)g -Ft(--host=TYPE)c Fu(option.)p eop end -%%Page: 140 146 -TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(140)150 299 y(`)p Ft(TYPE)p -Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h(for)f(the)h(system) -g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p Ft(sun4)p Fu(',)g(or)f(a)h -(canonical)i(name)150 408 y(with)e(three)h(\014elds:)40 -b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 b(`)p -Ft(i386-unknown-freebsd4.2)p Fu('\).)275 539 y(See)e(the)h(\014le)f -Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5 -b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 764 y Fs(10.6)68 -b(Sharing)45 b(Defaults)150 924 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f -(set)h(default)f(v)-5 b(alues)43 b(for)g Ft(configure)d -Fu(scripts)j(to)h(share,)i(y)m(ou)d(can)g(create)i(a)e(site)150 -1033 y(shell)48 b(script)f(called)i Ft(config.site)44 -b Fu(that)k(giv)m(es)h(default)f(v)-5 b(alues)48 b(for)f(v)-5 -b(ariables)48 b(lik)m(e)h Ft(CC)p Fu(,)j Ft(cache_)150 -1143 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 -b Fu(lo)s(oks)j(for)f Ft(PREFIX/share/config.site)39 -b Fu(if)46 b(it)g(exists,)k(then)150 1252 y Ft(PREFIX/etc/config.site) -24 b Fu(if)31 b(it)g(exists.)42 b(Or,)30 b(y)m(ou)h(can)g(set)g(the)g -Ft(CONFIG_SITE)c Fu(en)m(vironmen)m(t)k(v)-5 b(ari-)150 -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 Ft(configure)c -Fu(lo)s(oks)k(for)f(a)h(site)150 1472 y(script,)31 b(but)e(not)i(all)g -Ft(configure)d Fu(scripts)i(do.)150 1697 y Fs(10.7)68 -b(Op)t(eration)46 b(Con)l(trols)150 1856 y Ft(configure)28 -b Fu(recognizes)k(the)e(follo)m(wing)i(options)f(to)g(con)m(trol)h(ho)m -(w)e(it)h(op)s(erates.)150 2008 y Ft(--cache-file=)p -Fj(file)630 2117 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g -(the)h(tests)f(in)g Fr(\014le)33 b Fu(instead)28 b(of)h -Ft(./config.cache)p Fu(.)36 b(Set)28 b Fr(\014le)630 -2227 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e -(debugging)g Ft(configure)p Fu(.)150 2379 y Ft(--help)192 -b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g -Ft(configure)p Fu(,)d(and)i(exit.)150 2531 y Ft(--quiet)150 -2641 y(--silent)150 2750 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f -(messages)h(sa)m(ying)g(whic)m(h)g(c)m(hec)m(ks)g(are)g(b)s(eing)f -(made.)150 2902 y Ft(--srcdir=)p Fj(dir)630 3012 y Fu(Lo)s(ok)i(for)g -(the)g(Bash)g(source)h(co)s(de)f(in)g(directory)g Fr(dir)p -Fu(.)45 b(Usually)33 b Ft(configure)c Fu(can)j(deter-)630 -3121 y(mine)e(that)h(directory)g(automatically)-8 b(.)150 -3273 y Ft(--version)630 3383 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g -(Auto)s(conf)f(used)g(to)h(generate)h(the)f Ft(configure)d -Fu(script,)j(and)f(exit.)275 3535 y Ft(configure)34 b -Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s -(oilerplate)g(options.)61 b(`)p Ft(configure)150 3644 -y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)150 -3869 y Fs(10.8)68 b(Optional)46 b(F)-11 b(eatures)150 -4029 y Fu(The)29 b(Bash)h Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f -(of)h Ft(--enable-)p Fj(feature)25 b Fu(options,)30 b(where)g -Fr(feature)35 b Fu(indicates)150 4138 y(an)e(optional)i(part)e(of)h -(Bash.)50 b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p -Fj(package)29 b Fu(options,)35 b(where)e Fr(pac)m(k)-5 -b(age)150 4248 y Fu(is)32 b(something)h(lik)m(e)h(`)p -Ft(bash-malloc)p Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 -b(T)-8 b(o)33 b(turn)e(o\013)i(the)f(default)h(use)f(of)g(a)h(pac)m(k) --5 b(age,)35 b(use)150 4357 y Ft(--without-)p Fj(package)p -Fu(.)46 b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f -(that)g(is)g(enabled)g(b)m(y)f(default,)i(use)150 4467 -y Ft(--disable-)p Fj(feature)p Fu(.)275 4598 y(Here)28 -b(is)g(a)h(complete)g(list)g(of)f(the)h Ft(--enable-)c -Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f(Bash)g -Ft(configure)150 4707 y Fu(recognizes.)150 4859 y Ft(--with-afs)630 -4969 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g(the)h(Andrew)e(File)j -(System)e(from)g(T)-8 b(ransarc.)150 5121 y Ft(--with-bash-malloc)630 -5230 y Fu(Use)34 b(the)g(Bash)h(v)m(ersion)f(of)g Ft(malloc)e -Fu(in)i(the)g(directory)h Ft(lib/malloc)p Fu(.)48 b(This)34 -b(is)g(not)g(the)630 5340 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e -(in)g Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i -(originally)g(deriv)m(ed)p eop end -%%Page: 141 147 -TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(141)630 299 y(from)32 b(the)h(4.2)g -Fm(bsd)f Ft(malloc)p Fu(.)45 b(This)31 b Ft(malloc)g -Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m(astes)h(some)g(space)g(on)630 -408 y(eac)m(h)j(allo)s(cation.)58 b(This)34 b(option)i(is)f(enabled)g -(b)m(y)g(default.)56 b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a) -630 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 Ft(configure)d Fu(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 Ft(--with-curses)630 899 y Fu(Use)h(the)h(curses)e -(library)h(instead)g(of)h(the)f(termcap)g(library)-8 -b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 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 Ft(--with-gnu-malloc)630 -1279 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p -Fu(.)150 1441 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p -Ft(])630 1550 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) -g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g(Readline)g(rather)630 -1660 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p -Fu(.)36 b(This)25 b(w)m(orks)g(only)h(with)f(Readline)h(5.0)h(and)e -(later)630 1769 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41 -b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f Ft(configure)f -Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 1879 y(mak)m(e)28 -b(v)-5 b(ariables)29 b Ft(includedir)24 b Fu(and)j Ft(libdir)p -Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g Ft(prefix)f -Fu(b)m(y)630 1989 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m -(ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g(the)g(standard)630 -2098 y(system)35 b(include)f(and)g(library)g(directories.)54 -b(If)34 b Fr(PREFIX)43 b Fu(is)35 b Ft(no)p Fu(,)g(Bash)f(links)h(with) -f(the)630 2208 y(v)m(ersion)42 b(in)e Ft(lib/readline)p -Fu(.)70 b(If)40 b Fr(PREFIX)51 b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f -(v)-5 b(alue,)44 b Ft(configure)630 2317 y Fu(treats)27 -b(it)g(as)f(a)h(directory)g(pathname)f(and)f(lo)s(oks)i(for)f(the)g -(installed)h(v)m(ersion)g(of)f(Readline)630 2427 y(in)34 -b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in) -g Fr(PREFIX)9 b Fu(/)p Ft(include)32 b Fu(and)i(the)630 -2536 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150 -2698 y Ft(--with-purify)630 2807 y Fu(De\014ne)23 b(this)g(to)h(use)f -(the)g(Purify)f(memory)h(allo)s(cation)i(c)m(hec)m(k)m(er)g(from)e -(Rational)i(Soft)m(w)m(are.)150 2969 y Ft(--enable-minimal-config)630 -3078 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h -(close)g(to)f(the)g(historical)h(Bourne)e(shell.)275 -3241 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h -(alter)g(ho)m(w)f(Bash)g(is)g(compiled)h(and)e(link)m(ed,)i(rather)150 -3350 y(than)h(c)m(hanging)h(run-time)f(features.)150 -3513 y Ft(--enable-largefile)630 3622 y Fu(Enable)e(supp)s(ort)f(for)h -(large)i(\014les)f(\()p Ft(http://www.sas.com/stand)o(ards)o(/la)o -(rge_)o(file)o(/)630 3732 y(x_open)5 b(.)t(20Mar96)g(.)t(html)p -Fu(\))31 b(if)37 b(the)f(op)s(erating)h(system)g(requires)f(sp)s(ecial) -h(compiler)g(op-)630 3842 y(tions)27 b(to)h(build)e(programs)h(whic)m -(h)g(can)g(access)h(large)h(\014les.)39 b(This)26 b(is)i(enabled)f(b)m -(y)f(default,)630 3951 y(if)k(the)h(op)s(erating)g(system)f(pro)m -(vides)h(large)g(\014le)g(supp)s(ort.)150 4113 y Ft(--enable-profiling) -630 4222 y Fu(This)g(builds)f(a)i(Bash)g(binary)f(that)h(pro)s(duces)e -(pro\014ling)h(information)h(to)h(b)s(e)d(pro)s(cessed)630 -4332 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f(it)g(is)f(executed.)150 -4493 y Ft(--enable-static-link)630 4603 y Fu(This)37 -b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h(statically)-8 -b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61 -b(This)37 b(could)h(b)s(e)630 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 Ft(minimal-config)p Fu(')d(option)k(can)g(b)s(e)f(used)f -(to)j(disable)e(all)i(of)f(the)f(follo)m(wing)i(options,)g(but)d(it)150 -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 Ft(enable-)p Fj(feature)p -Fu('.)275 5121 y(All)41 b(of)g(the)g(follo)m(wing)i(options)e(except)h -(for)f(`)p Ft(disabled-builtins)p Fu(',)e(`)p Ft(directpand-default)p -Fu(',)150 5230 y(and)45 b(`)p Ft(xpg-echo-default)p Fu(')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 Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(142)150 299 y Ft(--enable-alias)630 -408 y Fu(Allo)m(w)41 b(alias)g(expansion)f(and)f(include)g(the)h -Ft(alias)f Fu(and)g Ft(unalias)e Fu(builtins)j(\(see)g(Sec-)630 -518 y(tion)31 b(6.6)g([Aliases],)i(page)e(88\).)150 682 -y Ft(--enable-arith-for-comma)o(nd)630 792 y Fu(Include)21 -b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g -Ft(for)f Fu(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630 -902 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f -(3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150 -1066 y Ft(--enable-array-variables)630 1176 y Fu(Include)h(supp)s(ort)g -(for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33 -b(\(see)h(Section)g(6.7)h([Ar-)630 1285 y(ra)m(ys],)c(page)g(89\).)150 -1450 y Ft(--enable-bang-history)630 1559 y Fu(Include)36 -b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f -(\(see)h(Section)g(9.3)h([History)f(In-)630 1669 y(teraction],)c(page)e -(135\).)150 1833 y Ft(--enable-brace-expansion)630 1943 -y Fu(Include)40 b Ft(csh)p Fu(-lik)m(e)h(brace)f(expansion)g(\()h -Ft(b{a,b}c)d Fq(7!)i Ft(bac)30 b(bbc)39 b Fu(\).)71 b(See)40 -b(Section)h(3.5.1)630 2052 y([Brace)32 b(Expansion],)e(page)h(21,)h -(for)e(a)g(complete)i(description.)150 2217 y Ft -(--enable-casemod-attribu)o(tes)630 2326 y Fu(Include)37 -b(supp)s(ort)g(for)g(case-mo)s(difying)i(attributes)g(in)e(the)h -Ft(declare)e Fu(builtin)i(and)f(as-)630 2436 y(signmen)m(t)29 -b(statemen)m(ts.)41 b(V)-8 b(ariables)30 b(with)e(the)g -Fr(upp)s(ercase)k Fu(attribute,)e(for)e(example,)i(will)630 -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 Ft -(--enable-casemod-expansi)o(on)630 2819 y Fu(Include)h(supp)s(ort)e -(for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150 -2984 y Ft(--enable-command-timing)630 3093 y Fu(Include)43 -b(supp)s(ort)f(for)h(recognizing)i Ft(time)e Fu(as)g(a)h(reserv)m(ed)g -(w)m(ord)f(and)g(for)h(displa)m(ying)630 3203 y(timing)37 -b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i -Ft(time)d Fu(\(see)i(Section)g(3.2.2)h([Pip)s(elines],)630 -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 Ft(--enable-cond-command)630 3587 y Fu(Include)33 -b(supp)s(ort)f(for)i(the)g Ft([[)f Fu(conditional)i(command.)51 -b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 3696 y(tional)c -(Constructs],)e(page)h(10\).)150 3861 y Ft(--enable-cond-regexp)630 -3970 y Fu(Include)k(supp)s(ort)f(for)i(matc)m(hing)h -Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p -Ft(=~)p Fu(')g(binary)630 4080 y(op)s(erator)25 b(in)f(the)h -Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.4.2)h -([Conditional)e(Con-)630 4189 y(structs],)31 b(page)g(10\).)150 -4354 y Ft(--enable-coprocesses)630 4463 y Fu(Include)23 -b(supp)s(ort)f(for)i(copro)s(cesses)g(and)f(the)h Ft(coproc)e -Fu(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.2)630 -4573 y([Pip)s(elines],)31 b(page)g(8\).)150 4737 y Ft -(--enable-debugger)630 4847 y Fu(Include)f(supp)s(ort)e(for)i(the)h -(bash)f(debugger)g(\(distributed)g(separately\).)150 -5011 y Ft(--enable-direxpand-defau)o(lt)630 5121 y Fu(Cause)53 -b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i -([The)e(Shopt)f(Builtin],)630 5230 y(page)29 b(62\))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 +b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)p eop end -%%Page: 143 149 -TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(143)150 299 y Ft -(--enable-directory-stack)630 408 y Fu(Include)33 b(supp)s(ort)g(for)h -(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i -Ft(pushd)p Fu(,)f Ft(popd)p Fu(,)g(and)f Ft(dirs)630 -518 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m -(k],)g(page)f(90\).)150 673 y Ft(--enable-disabled-builti)o(ns)630 -783 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m -(ed)i(via)f(`)p Ft(builtin)29 b(xxx)p Fu(')37 b(ev)m(en)j(after)f -Ft(xxx)e Fu(has)630 892 y(b)s(een)31 b(disabled)g(using)g(`)p -Ft(enable)d(-n)i(xxx)p Fu('.)43 b(See)32 b(Section)g(4.2)h([Bash)e -(Builtins],)i(page)f(48,)630 1002 y(for)e(details)i(of)e(the)h -Ft(builtin)d Fu(and)i Ft(enable)e Fu(builtin)i(commands.)150 -1157 y Ft(--enable-dparen-arithmet)o(ic)630 1267 y Fu(Include)42 -b(supp)s(ort)f(for)h(the)h Ft(\(\(...)o(\)\))f Fu(command)g(\(see)i -(Section)f(3.2.4.2)i([Conditional)630 1377 y(Constructs],)30 -b(page)h(10\).)150 1532 y Ft(--enable-extended-glob)630 -1641 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h -(matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m(v)m(e)630 -1751 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i -(page)e(30.)150 1906 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 -2016 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g -Fr(extglob)j Fu(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under) -d(Sec-)630 2125 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g -(62)g(to)h(b)s(e)d(enabled.)150 2281 y Ft(--enable-glob-asciirange)o -(-def)o(ault)630 2390 y Fu(Set)i(the)g(default)f(v)-5 -b(alue)31 b(of)g(the)g Fr(globasciiranges)36 b Fu(shell)31 -b(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)h(under)630 -2500 y(Section)41 b(4.3.2)h([The)e(Shopt)f(Builtin],)44 -b(page)d(62)g(to)g(b)s(e)f(enabled.)70 b(This)39 b(con)m(trols)j(the) -630 2609 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h(ranges)f(when)f -(used)g(in)g(pattern)h(matc)m(hing)h(brac)m(k)m(et)g(expressions.)150 -2765 y Ft(--enable-help-builtin)630 2874 y Fu(Include)i(the)h -Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m(ys)f(help)h(on)f(shell)h -(builtins)f(and)h(v)-5 b(ariables)25 b(\(see)630 2984 -y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f(48\).)150 -3139 y Ft(--enable-history)630 3249 y Fu(Include)e(command)g(history)h -(and)f(the)h Ft(fc)f Fu(and)g Ft(history)e Fu(builtin)j(commands)f -(\(see)h(Sec-)630 3358 y(tion)h(9.1)g([Bash)g(History)g(F)-8 -b(acilities],)34 b(page)d(133\).)150 3513 y Ft(--enable-job-control)630 -3623 y Fu(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 -3733 y(the)f(op)s(erating)f(system)h(supp)s(orts)d(them.)150 -3888 y Ft(--enable-multibyte)630 3998 y Fu(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 4107 y(the)h(necessary)f(supp)s(ort.)150 -4262 y Ft(--enable-net-redirection)o(s)630 4372 y Fu(This)23 -b(enables)h(the)g(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g -(form)g Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 4482 -y Fu(and)31 b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 -b Fu(when)31 b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h -([Redirec-)630 4591 y(tions],)e(page)g(31\).)150 4746 -y Ft(--enable-process-substit)o(utio)o(n)630 4856 y Fu(This)49 -b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro) -s(cess)e(Substitution],)630 4966 y(page)31 b(29\))h(if)e(the)h(op)s -(erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150 -5121 y Ft(--enable-progcomp)630 5230 y Fu(Enable)d(the)g(programmable)g -(completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630 -5340 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.)p eop -end %%Page: 144 150 TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(144)150 299 y Ft -(--enable-prompt-string-d)o(ecod)o(ing)630 408 y Fu(T)-8 -b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m(b)s(er)e -(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i(in)d(the)630 -518 y Ft($PS1)p Fu(,)36 b Ft($PS2)p Fu(,)g Ft($PS3)p +b(Installing)31 b(Bash)2356 b(144)150 299 y(if)28 b(it)g(prin)m(ts)f(a) +h(message)g(sa)m(ying)h(it)f(can)g(not)f(guess)h(the)g(host)f(t)m(yp)s +(e,)i(giv)m(e)g(it)f(the)g Ft(--host=TYPE)c Fu(option.)150 +408 y(`)p Ft(TYPE)p Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h +(for)f(the)h(system)g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p +Ft(sun4)p Fu(',)g(or)f(a)h(canonical)i(name)150 518 y(with)e(three)h +(\014elds:)40 b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 +b(`)p Ft(i386-unknown-freebsd4.2)p Fu('\).)275 663 y(See)e(the)h +(\014le)f Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5 +b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 919 y Fs(10.6)68 +b(Sharing)45 b(Defaults)150 1078 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f +(set)h(default)f(v)-5 b(alues)43 b(for)g Ft(configure)d +Fu(scripts)j(to)h(share,)i(y)m(ou)d(can)g(create)i(a)e(site)150 +1188 y(shell)48 b(script)f(called)i Ft(config.site)44 +b Fu(that)k(giv)m(es)h(default)f(v)-5 b(alues)48 b(for)f(v)-5 +b(ariables)48 b(lik)m(e)h Ft(CC)p Fu(,)j Ft(cache_)150 +1298 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 +b Fu(lo)s(oks)j(for)f Ft(PREFIX/share/config.site)39 +b Fu(if)46 b(it)g(exists,)k(then)150 1407 y Ft(PREFIX/etc/config.site) +24 b Fu(if)31 b(it)g(exists.)42 b(Or,)30 b(y)m(ou)h(can)g(set)g(the)g +Ft(CONFIG_SITE)c Fu(en)m(vironmen)m(t)k(v)-5 b(ari-)150 +1517 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67 +b(A)40 b(w)m(arning:)58 b(the)40 b(Bash)g Ft(configure)c +Fu(lo)s(oks)k(for)f(a)h(site)150 1626 y(script,)31 b(but)e(not)i(all)g +Ft(configure)d Fu(scripts)i(do.)150 1883 y Fs(10.7)68 +b(Op)t(eration)46 b(Con)l(trols)150 2042 y Ft(configure)28 +b Fu(recognizes)k(the)e(follo)m(wing)i(options)f(to)g(con)m(trol)h(ho)m +(w)e(it)h(op)s(erates.)150 2217 y Ft(--cache-file=)p +Fj(file)630 2326 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g +(the)h(tests)f(in)g Fr(\014le)33 b Fu(instead)28 b(of)h +Ft(./config.cache)p Fu(.)36 b(Set)28 b Fr(\014le)630 +2436 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e +(debugging)g Ft(configure)p Fu(.)150 2606 y Ft(--help)192 +b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g +Ft(configure)p Fu(,)d(and)i(exit.)150 2775 y Ft(--quiet)150 +2885 y(--silent)150 2995 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f +(messages)h(sa)m(ying)g(whic)m(h)g(c)m(hec)m(ks)g(are)g(b)s(eing)f +(made.)150 3164 y Ft(--srcdir=)p Fj(dir)630 3274 y Fu(Lo)s(ok)i(for)g +(the)g(Bash)g(source)h(co)s(de)f(in)g(directory)g Fr(dir)p +Fu(.)45 b(Usually)33 b Ft(configure)c Fu(can)j(deter-)630 +3383 y(mine)e(that)h(directory)g(automatically)-8 b(.)150 +3553 y Ft(--version)630 3663 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g +(Auto)s(conf)f(used)g(to)h(generate)h(the)f Ft(configure)d +Fu(script,)j(and)f(exit.)275 3838 y Ft(configure)34 b +Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s +(oilerplate)g(options.)61 b(`)p Ft(configure)150 3947 +y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)150 +4203 y Fs(10.8)68 b(Optional)46 b(F)-11 b(eatures)150 +4363 y Fu(The)29 b(Bash)h Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f +(of)h Ft(--enable-)p Fj(feature)25 b Fu(options,)30 b(where)g +Fr(feature)35 b Fu(indicates)150 4472 y(an)e(optional)i(part)e(of)h +(Bash.)50 b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p +Fj(package)29 b Fu(options,)35 b(where)e Fr(pac)m(k)-5 +b(age)150 4582 y Fu(is)32 b(something)h(lik)m(e)h(`)p +Ft(bash-malloc)p Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 +b(T)-8 b(o)33 b(turn)e(o\013)i(the)f(default)h(use)f(of)g(a)h(pac)m(k) +-5 b(age,)35 b(use)150 4692 y Ft(--without-)p Fj(package)p +Fu(.)46 b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f +(that)g(is)g(enabled)g(b)m(y)f(default,)i(use)150 4801 +y Ft(--disable-)p Fj(feature)p Fu(.)275 4946 y(Here)28 +b(is)g(a)h(complete)g(list)g(of)f(the)h Ft(--enable-)c +Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f(Bash)g +Ft(configure)150 5056 y Fu(recognizes.)150 5230 y Ft(--with-afs)630 +5340 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g(the)h(Andrew)e(File)j +(System)e(from)g(T)-8 b(ransarc.)p eop end +%%Page: 145 151 +TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(145)150 299 y Ft(--with-bash-malloc)630 +408 y Fu(Use)34 b(the)g(Bash)h(v)m(ersion)f(of)g Ft(malloc)e +Fu(in)i(the)g(directory)h Ft(lib/malloc)p Fu(.)48 b(This)34 +b(is)g(not)g(the)630 518 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e +(in)g Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i +(originally)g(deriv)m(ed)630 628 y(from)f(the)h(4.2)g +Fm(bsd)f Ft(malloc)p Fu(.)45 b(This)31 b Ft(malloc)g +Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m(astes)h(some)g(space)g(on)630 +737 y(eac)m(h)j(allo)s(cation.)58 b(This)34 b(option)i(is)f(enabled)g +(b)m(y)g(default.)56 b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a) +630 847 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s +(e)i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630 +956 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i +(systems.)150 1120 y Ft(--with-curses)630 1230 y Fu(Use)h(the)h(curses) +e(library)h(instead)g(of)h(the)f(termcap)g(library)-8 +b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 1339 +y(if)f(y)m(our)h(system)f(has)g(an)h(inadequate)g(or)f(incomplete)i +(termcap)e(database.)150 1503 y Ft(--with-gnu-malloc)630 +1613 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p +Fu(.)150 1776 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p +Ft(])630 1886 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) +g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g(Readline)g(rather)630 +1996 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p +Fu(.)36 b(This)25 b(w)m(orks)g(only)h(with)f(Readline)h(5.0)h(and)e +(later)630 2105 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41 +b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f Ft(configure)f +Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 2215 y(mak)m(e)28 +b(v)-5 b(ariables)29 b Ft(includedir)24 b Fu(and)j Ft(libdir)p +Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g Ft(prefix)f +Fu(b)m(y)630 2324 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m +(ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g(the)g(standard)630 +2434 y(system)35 b(include)f(and)g(library)g(directories.)54 +b(If)34 b Fr(PREFIX)43 b Fu(is)35 b Ft(no)p Fu(,)g(Bash)f(links)h(with) +f(the)630 2544 y(v)m(ersion)42 b(in)e Ft(lib/readline)p +Fu(.)70 b(If)40 b Fr(PREFIX)51 b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f +(v)-5 b(alue,)44 b Ft(configure)630 2653 y Fu(treats)27 +b(it)g(as)f(a)h(directory)g(pathname)f(and)f(lo)s(oks)i(for)f(the)g +(installed)h(v)m(ersion)g(of)f(Readline)630 2763 y(in)34 +b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in) +g Fr(PREFIX)9 b Fu(/)p Ft(include)32 b Fu(and)i(the)630 +2872 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150 +3036 y Ft(--with-purify)630 3146 y Fu(De\014ne)23 b(this)g(to)h(use)f +(the)g(Purify)f(memory)h(allo)s(cation)i(c)m(hec)m(k)m(er)g(from)e +(Rational)i(Soft)m(w)m(are.)150 3309 y Ft(--enable-minimal-config)630 +3419 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h +(close)g(to)f(the)g(historical)h(Bourne)e(shell.)275 +3585 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h +(alter)g(ho)m(w)f(Bash)g(is)g(compiled)h(and)e(link)m(ed,)i(rather)150 +3694 y(than)h(c)m(hanging)h(run-time)f(features.)150 +3860 y Ft(--enable-largefile)630 3970 y Fu(Enable)e(supp)s(ort)f(for)h +(large)i(\014les)f(\()p Ft(http://www.sas.com/stand)o(ards)o(/la)o +(rge_)o(file)o(/)630 4079 y(x_open)5 b(.)g(20Mar96)g(.)g(html)p +Fu(\))31 b(if)36 b(the)g(op)s(erating)h(system)f(requires)g(sp)s(ecial) +h(compiler)g(op-)630 4189 y(tions)27 b(to)h(build)e(programs)h(whic)m +(h)g(can)g(access)h(large)h(\014les.)39 b(This)26 b(is)i(enabled)f(b)m +(y)f(default,)630 4299 y(if)k(the)h(op)s(erating)g(system)f(pro)m +(vides)h(large)g(\014le)g(supp)s(ort.)150 4462 y Ft(--enable-profiling) +630 4572 y Fu(This)g(builds)f(a)i(Bash)g(binary)f(that)h(pro)s(duces)e +(pro\014ling)h(information)h(to)h(b)s(e)d(pro)s(cessed)630 +4682 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f(it)g(is)f(executed.)150 +4845 y Ft(--enable-static-link)630 4955 y Fu(This)37 +b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h(statically)-8 +b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61 +b(This)37 b(could)h(b)s(e)630 5064 y(used)30 b(to)h(build)e(a)i(v)m +(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 5230 +y(The)f(`)p Ft(minimal-config)p Fu(')d(option)k(can)g(b)s(e)f(used)f +(to)j(disable)e(all)i(of)f(the)f(follo)m(wing)i(options,)g(but)d(it)150 +5340 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m +(y)h(b)s(e)f(enabled)g(using)g(`)p Ft(enable-)p Fj(feature)p +Fu('.)p eop end +%%Page: 146 152 +TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(146)275 299 y(All)26 b(of)f(the)h(follo)m +(wing)h(options)f(except)g(for)g(`)p Ft(disabled-builtins)p +Fu(',)c(`)p Ft(direxpand-default)p Fu(',)h(and)150 408 +y(`)p Ft(xpg-echo-default)p Fu(')28 b(are)33 b(enabled)f(b)m(y)g +(default,)h(unless)e(the)i(op)s(erating)f(system)h(do)s(es)e(not)i(pro) +m(vide)150 518 y(the)e(necessary)f(supp)s(ort.)150 698 +y Ft(--enable-alias)630 807 y Fu(Allo)m(w)41 b(alias)g(expansion)f(and) +f(include)g(the)h Ft(alias)f Fu(and)g Ft(unalias)e Fu(builtins)j(\(see) +g(Sec-)630 917 y(tion)31 b(6.6)g([Aliases],)i(page)e(90\).)150 +1090 y Ft(--enable-arith-for-comma)o(nd)630 1200 y Fu(Include)21 +b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g +Ft(for)f Fu(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630 +1309 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f +(3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150 +1482 y Ft(--enable-array-variables)630 1592 y Fu(Include)h(supp)s(ort)g +(for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33 +b(\(see)h(Section)g(6.7)h([Ar-)630 1701 y(ra)m(ys],)c(page)g(91\).)150 +1874 y Ft(--enable-bang-history)630 1984 y Fu(Include)36 +b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f +(\(see)h(Section)g(9.3)h([History)f(In-)630 2093 y(teraction],)c(page)e +(139\).)150 2266 y Ft(--enable-brace-expansion)630 2376 +y Fu(Include)40 b Ft(csh)p Fu(-lik)m(e)h(brace)f(expansion)g(\()h +Ft(b{a,b}c)d Fq(7!)i Ft(bac)30 b(bbc)39 b Fu(\).)71 b(See)40 +b(Section)h(3.5.1)630 2485 y([Brace)32 b(Expansion],)e(page)h(21,)h +(for)e(a)g(complete)i(description.)150 2658 y Ft +(--enable-casemod-attribu)o(tes)630 2768 y Fu(Include)37 +b(supp)s(ort)g(for)g(case-mo)s(difying)i(attributes)g(in)e(the)h +Ft(declare)e Fu(builtin)i(and)f(as-)630 2878 y(signmen)m(t)29 +b(statemen)m(ts.)41 b(V)-8 b(ariables)30 b(with)e(the)g +Fr(upp)s(ercase)k Fu(attribute,)e(for)e(example,)i(will)630 +2987 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f +(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 3160 y Ft +(--enable-casemod-expansi)o(on)630 3270 y Fu(Include)h(supp)s(ort)e +(for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150 +3443 y Ft(--enable-command-timing)630 3552 y Fu(Include)43 +b(supp)s(ort)f(for)h(recognizing)i Ft(time)e Fu(as)g(a)h(reserv)m(ed)g +(w)m(ord)f(and)g(for)h(displa)m(ying)630 3662 y(timing)37 +b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i +Ft(time)d Fu(\(see)i(Section)g(3.2.2)h([Pip)s(elines],)630 +3771 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w) +m(ell)g(as)g(shell)f(builtins)g(and)g(functions)g(to)h(b)s(e)e(timed.) +150 3944 y Ft(--enable-cond-command)630 4054 y Fu(Include)33 +b(supp)s(ort)f(for)i(the)g Ft([[)f Fu(conditional)i(command.)51 +b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 4164 y(tional)c +(Constructs],)e(page)h(10\).)150 4337 y Ft(--enable-cond-regexp)630 +4446 y Fu(Include)k(supp)s(ort)f(for)i(matc)m(hing)h +Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p +Ft(=~)p Fu(')g(binary)630 4556 y(op)s(erator)25 b(in)f(the)h +Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.4.2)h +([Conditional)e(Con-)630 4665 y(structs],)31 b(page)g(10\).)150 +4838 y Ft(--enable-coprocesses)630 4948 y Fu(Include)23 +b(supp)s(ort)f(for)i(copro)s(cesses)g(and)f(the)h Ft(coproc)e +Fu(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.2)630 +5057 y([Pip)s(elines],)31 b(page)g(8\).)150 5230 y Ft +(--enable-debugger)630 5340 y Fu(Include)f(supp)s(ort)e(for)i(the)h +(bash)f(debugger)g(\(distributed)g(separately\).)p eop +end +%%Page: 147 153 +TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(147)150 299 y Ft +(--enable-direxpand-defau)o(lt)630 408 y Fu(Cause)53 +b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i +([The)e(Shopt)f(Builtin],)630 518 y(page)29 b(64\))g(to)f(b)s(e)f +(enabled)h(b)m(y)g(default)g(when)e(the)i(shell)g(starts.)41 +b(It)27 b(is)h(normally)g(disabled)630 628 y(b)m(y)i(default.)150 +774 y Ft(--enable-directory-stack)630 883 y Fu(Include)j(supp)s(ort)g +(for)h(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i +Ft(pushd)p Fu(,)f Ft(popd)p Fu(,)g(and)f Ft(dirs)630 +993 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m +(k],)g(page)f(93\).)150 1139 y Ft(--enable-disabled-builti)o(ns)630 +1249 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m +(ed)i(via)f(`)p Ft(builtin)29 b(xxx)p Fu(')37 b(ev)m(en)j(after)f +Ft(xxx)e Fu(has)630 1358 y(b)s(een)31 b(disabled)g(using)g(`)p +Ft(enable)d(-n)i(xxx)p Fu('.)43 b(See)32 b(Section)g(4.2)h([Bash)e +(Builtins],)i(page)f(49,)630 1468 y(for)e(details)i(of)e(the)h +Ft(builtin)d Fu(and)i Ft(enable)e Fu(builtin)i(commands.)150 +1614 y Ft(--enable-dparen-arithmet)o(ic)630 1724 y Fu(Include)42 +b(supp)s(ort)f(for)h(the)h Ft(\(\(...)o(\)\))f Fu(command)g(\(see)i +(Section)f(3.2.4.2)i([Conditional)630 1833 y(Constructs],)30 +b(page)h(10\).)150 1979 y Ft(--enable-extended-glob)630 +2089 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h +(matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m(v)m(e)630 +2198 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i +(page)e(31.)150 2345 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 +2454 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g +Fr(extglob)j Fu(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under) +d(Sec-)630 2564 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g +(64,)h(to)f(b)s(e)f(enabled.)150 2710 y Ft(--enable-function-import)630 +2819 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g +(de\014nitions)f(exp)s(orted)h(b)m(y)g(another)g(instance)630 +2929 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41 +b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)150 +3075 y Ft(--enable-glob-asciirange)o(-def)o(ault)630 +3185 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g +Fr(globasciiranges)36 b Fu(shell)31 b(option)g(describ)s(ed)f(ab)s(o)m +(v)m(e)h(under)630 3294 y(Section)39 b(4.3.2)h([The)e(Shopt)g +(Builtin],)j(page)e(64,)i(to)f(b)s(e)d(enabled.)65 b(This)37 +b(con)m(trols)j(the)630 3404 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h +(ranges)f(when)f(used)g(in)g(pattern)h(matc)m(hing)h(brac)m(k)m(et)g +(expressions.)150 3550 y Ft(--enable-help-builtin)630 +3660 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m +(ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25 +b(\(see)630 3769 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f +(49\).)150 3915 y Ft(--enable-history)630 4025 y Fu(Include)e(command)g +(history)h(and)f(the)h Ft(fc)f Fu(and)g Ft(history)e +Fu(builtin)j(commands)f(\(see)h(Sec-)630 4134 y(tion)h(9.1)g([Bash)g +(History)g(F)-8 b(acilities],)34 b(page)d(137\).)150 +4281 y Ft(--enable-job-control)630 4390 y Fu(This)h(enables)i(the)f +(job)g(con)m(trol)i(features)e(\(see)i(Chapter)d(7)i([Job)f(Con)m +(trol],)i(page)f(100\),)630 4500 y(if)c(the)h(op)s(erating)g(system)f +(supp)s(orts)f(them.)150 4646 y Ft(--enable-multibyte)630 +4756 y Fu(This)g(enables)i(supp)s(ort)d(for)i(m)m(ultib)m(yte)h(c)m +(haracters)g(if)f(the)g(op)s(erating)h(system)f(pro)m(vides)630 +4865 y(the)h(necessary)f(supp)s(ort.)150 5011 y Ft +(--enable-net-redirection)o(s)630 5121 y Fu(This)23 b(enables)h(the)g +(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g(form)g +Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 5230 y Fu(and)31 +b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 b Fu(when)31 +b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h([Redirec-)630 +5340 y(tions],)e(page)g(32\).)p eop end +%%Page: 148 154 +TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(148)150 299 y Ft +(--enable-process-substit)o(utio)o(n)630 408 y Fu(This)49 +b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro) +s(cess)e(Substitution],)630 518 y(page)31 b(30\))h(if)e(the)h(op)s +(erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150 +677 y Ft(--enable-progcomp)630 787 y Fu(Enable)d(the)g(programmable)g +(completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630 +897 y(Completion],)i(page)h(129\).)42 b(If)30 b(Readline)h(is)f(not)h +(enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150 +1056 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 1166 +y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m +(b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i(in)d(the)630 +1275 y Ft($PS1)p Fu(,)36 b Ft($PS2)p Fu(,)g Ft($PS3)p Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 b(See)36 -b(Section)h(6.9)g([Con)m(trolling)g(the)630 628 y(Prompt],)30 -b(page)h(92,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g -(escap)s(e)h(sequences.)150 787 y Ft(--enable-readline)630 -897 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f -(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 1006 +b(Section)h(6.9)g([Con)m(trolling)g(the)630 1385 y(Prompt],)30 +b(page)h(94,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g +(escap)s(e)h(sequences.)150 1544 y Ft(--enable-readline)630 +1654 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f +(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 1763 y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g -(Editing],)h(page)g(101\).)150 1166 y Ft(--enable-restricted)630 -1275 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p +(Editing],)h(page)g(104\).)150 1923 y Ft(--enable-restricted)630 +2032 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630 -1385 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68 +2142 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68 b(See)40 b(Section)h(6.10)g([The)f(Restricted)h(Shell],)630 -1494 y(page)31 b(93,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s -(de.)150 1654 y Ft(--enable-select)630 1763 y Fu(Include)25 +2252 y(page)31 b(95,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s +(de.)150 2411 y Ft(--enable-select)630 2521 y Fu(Include)25 b(the)h Ft(select)f Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j -(the)e(generation)h(of)f(simple)630 1873 y(men)m(us)k(\(see)h(Section)g +(the)e(generation)h(of)f(simple)630 2630 y(men)m(us)k(\(see)h(Section)g (3.2.4.2)i([Conditional)e(Constructs],)g(page)g(10\).)150 -2032 y Ft(--enable-separate-helpfi)o(les)630 2142 y Fu(Use)h(external)h +2790 y Ft(--enable-separate-helpfi)o(les)630 2899 y Fu(Use)h(external)h (\014les)f(for)g(the)g(do)s(cumen)m(tation)h(displa)m(y)m(ed)f(b)m(y)g -(the)g Ft(help)f Fu(builtin)h(instead)630 2252 y(of)f(storing)f(the)h -(text)g(in)m(ternally)-8 b(.)150 2411 y Ft(--enable-single-help-str)o -(ings)630 2521 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e +(the)g Ft(help)f Fu(builtin)h(instead)630 3009 y(of)f(storing)f(the)h +(text)g(in)m(ternally)-8 b(.)150 3168 y Ft(--enable-single-help-str)o +(ings)630 3278 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e (the)i Ft(help)d Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h) -i(help)630 2630 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g +i(help)630 3387 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 2740 y(to)c(disable)g(this)f(if)g(y)m(our)h +b(ma)m(y)g(need)630 3497 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 -2899 y Ft(--enable-strict-posix-de)o(faul)o(t)630 3009 +3656 y Ft(--enable-strict-posix-de)o(faul)o(t)630 3766 y Fu(Mak)m(e)c(Bash)f Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h (\(see)g(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630 -3118 y(page)31 b(94\).)150 3278 y Ft(--enable-usg-echo-defaul)o(t)630 -3387 y Fu(A)f(synon)m(ym)g(for)g Ft(--enable-xpg-echo-default)p -Fu(.)150 3547 y Ft(--enable-xpg-echo-defaul)o(t)630 3656 +3875 y(page)31 b(96\).)150 4035 y Ft(--enable-usg-echo-defaul)o(t)630 +4144 y Fu(A)f(synon)m(ym)g(for)g Ft(--enable-xpg-echo-default)p +Fu(.)150 4304 y Ft(--enable-xpg-echo-defaul)o(t)630 4413 y Fu(Mak)m(e)c(the)f Ft(echo)e Fu(builtin)i(expand)f(bac)m (kslash-escap)s(ed)h(c)m(haracters)h(b)m(y)f(default,)h(without)630 -3766 y(requiring)d(the)h Ft(-e)f Fu(option.)39 b(This)23 +4523 y(requiring)d(the)h Ft(-e)f Fu(option.)39 b(This)23 b(sets)h(the)g(default)g(v)-5 b(alue)24 b(of)g(the)g -Ft(xpg_echo)e Fu(shell)h(option)630 3875 y(to)28 b Ft(on)p +Ft(xpg_echo)e Fu(shell)h(option)630 4633 y(to)28 b Ft(on)p Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f Ft(echo)f Fu(b)s(eha)m(v)m(e) i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s(eci\014ed)f(in)g(the)630 -3985 y(Single)35 b(Unix)f(Sp)s(eci\014cation,)i(v)m(ersion)e(3.)53 -b(See)35 b(Section)g(4.2)g([Bash)g(Builtins],)h(page)f(48,)630 -4095 y(for)30 b(a)h(description)f(of)h(the)f(escap)s(e)h(sequences)g -(that)g Ft(echo)e Fu(recognizes.)275 4254 y(The)f(\014le)i +4742 y(Single)35 b(Unix)f(Sp)s(eci\014cation,)i(v)m(ersion)e(3.)53 +b(See)35 b(Section)g(4.2)g([Bash)g(Builtins],)h(page)f(49,)630 +4852 y(for)30 b(a)h(description)f(of)h(the)f(escap)s(e)h(sequences)g +(that)g Ft(echo)e Fu(recognizes.)275 5011 y(The)f(\014le)i Ft(config-top.h)c Fu(con)m(tains)31 b(C)d(Prepro)s(cessor)h(`)p Ft(#define)p Fu(')f(statemen)m(ts)j(for)f(options)f(whic)m(h)150 -4364 y(are)35 b(not)g(settable)i(from)d Ft(configure)p +5121 y(are)35 b(not)g(settable)i(from)d Ft(configure)p Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g(to)h(b)s(e)e(c) -m(hanged;)k(b)s(ew)m(are)d(of)150 4473 y(the)h(consequences)g(if)f(y)m +m(hanged;)k(b)s(ew)m(are)d(of)150 5230 y(the)h(consequences)g(if)f(y)m (ou)h(do.)55 b(Read)36 b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e -(eac)m(h)i(de\014nition)e(for)g(more)150 4583 y(information)c(ab)s(out) +(eac)m(h)i(de\014nition)e(for)g(more)150 5340 y(information)c(ab)s(out) f(its)h(e\013ect.)p eop end -%%Page: 145 151 -TeXDict begin 145 150 bop 150 -116 a Fu(App)s(endix)29 -b(A:)h(Rep)s(orting)h(Bugs)2299 b(145)150 299 y Fp(App)t(endix)52 -b(A)81 b(Rep)t(orting)53 b(Bugs)150 533 y Fu(Please)33 -b(rep)s(ort)e(all)h(bugs)f(y)m(ou)h(\014nd)e(in)i(Bash.)44 -b(But)32 b(\014rst,)g(y)m(ou)g(should)e(mak)m(e)j(sure)e(that)h(it)g -(really)h(is)f(a)150 643 y(bug,)d(and)g(that)h(it)g(app)s(ears)f(in)g -(the)h(latest)h(v)m(ersion)f(of)g(Bash.)40 b(The)29 b(latest)j(v)m -(ersion)e(of)f(Bash)h(is)f(alw)m(a)m(ys)150 752 y(a)m(v)-5 -b(ailable)33 b(for)d(FTP)g(from)g Ft(ftp://ftp.gnu.org/pub/gn)o(u/ba)o -(sh/)o Fu(.)275 887 y(Once)41 b(y)m(ou)g(ha)m(v)m(e)h(determined)f -(that)h(a)f(bug)g(actually)h(exists,)j(use)c(the)g Ft(bashbug)e -Fu(command)i(to)150 996 y(submit)25 b(a)h(bug)g(rep)s(ort.)38 -b(If)26 b(y)m(ou)g(ha)m(v)m(e)h(a)f(\014x,)h(y)m(ou)f(are)g(encouraged) -h(to)f(mail)h(that)f(as)g(w)m(ell!)40 b(Suggestions)150 -1106 y(and)j(`philosophical')i(bug)e(rep)s(orts)g(ma)m(y)i(b)s(e)e -(mailed)h(to)g Ft(bug-bash@gnu)11 b(.)d(org)40 b Fu(or)k(p)s(osted)f -(to)i(the)150 1215 y(Usenet)31 b(newsgroup)e Ft(gnu.bash.bug)p -Fu(.)275 1350 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225 +%%Page: 149 155 +TeXDict begin 149 154 bop 3614 -116 a Fu(149)150 299 +y Fp(App)t(endix)52 b(A)81 b(Rep)t(orting)53 b(Bugs)150 +533 y Fu(Please)33 b(rep)s(ort)e(all)h(bugs)f(y)m(ou)h(\014nd)e(in)i +(Bash.)44 b(But)32 b(\014rst,)g(y)m(ou)g(should)e(mak)m(e)j(sure)e +(that)h(it)g(really)h(is)f(a)150 643 y(bug,)d(and)g(that)h(it)g(app)s +(ears)f(in)g(the)h(latest)h(v)m(ersion)f(of)g(Bash.)40 +b(The)29 b(latest)j(v)m(ersion)e(of)f(Bash)h(is)f(alw)m(a)m(ys)150 +752 y(a)m(v)-5 b(ailable)33 b(for)d(FTP)g(from)g Ft +(ftp://ftp.gnu.org/pub/gn)o(u/ba)o(sh/)o Fu(.)275 887 +y(Once)41 b(y)m(ou)g(ha)m(v)m(e)h(determined)f(that)h(a)f(bug)g +(actually)h(exists,)j(use)c(the)g Ft(bashbug)e Fu(command)i(to)150 +996 y(submit)25 b(a)h(bug)g(rep)s(ort.)38 b(If)26 b(y)m(ou)g(ha)m(v)m +(e)h(a)f(\014x,)h(y)m(ou)f(are)g(encouraged)h(to)f(mail)h(that)f(as)g +(w)m(ell!)40 b(Suggestions)150 1106 y(and)j(`philosophical')i(bug)e +(rep)s(orts)f(ma)m(y)j(b)s(e)e(mailed)h(to)g Ft(bug-bash@gnu)11 +b(.)g(org)39 b Fu(or)k(p)s(osted)g(to)i(the)150 1215 +y(Usenet)31 b(newsgroup)e Ft(gnu.bash.bug)p Fu(.)275 +1350 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225 1484 y Fq(\017)60 b Fu(The)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h (Bash.)225 1619 y Fq(\017)60 b Fu(The)30 b(hardw)m(are)g(and)g(op)s (erating)g(system.)225 1753 y Fq(\017)60 b Fu(The)30 @@ -18190,12 +18629,10 @@ s(duce)e(it.)150 2182 y Ft(bashbug)d Fu(inserts)i(the)h(\014rst)f (vides)f(for)g(\014ling)h(a)150 2291 y(bug)h(rep)s(ort.)275 2426 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m (ual)f(to)h Ft(bug-bash@gnu.org)p Fu(.)p eop end -%%Page: 146 152 -TeXDict begin 146 151 bop 150 -116 a Fu(App)s(endix)29 -b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(146)150 141 y Fp(App)t(endix)58 -b(B)81 b(Ma)9 b(jor)54 b(Di\013erences)d(F)-13 b(rom)54 -b(The)g(Bourne)1088 299 y(Shell)150 530 y Fu(Bash)26 +%%Page: 150 156 +TeXDict begin 150 155 bop 3614 -116 a Fu(150)150 141 +y Fp(App)t(endix)58 b(B)81 b(Ma)9 b(jor)54 b(Di\013erences)d(F)-13 +b(rom)54 b(The)g(Bourne)1088 299 y(Shell)150 530 y Fu(Bash)26 b(implemen)m(ts)h(essen)m(tially)g(the)g(same)f(grammar,)h(parameter)f (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 @@ -18214,20 +18651,20 @@ Ft(sh)f Fu(included)g(in)h(SVR4.2)h(\(the)f(last)h(v)m(ersion)f(of)g Fm(posix)p Fu(-conforman)m(t,)g(ev)m(en)g(where)f(the)g Fm(posix)g Fu(sp)s(eci\014cation)h(di\013ers)f(from)g(traditional)330 1431 y Ft(sh)e Fu(b)s(eha)m(vior)g(\(see)i(Section)f(6.11)h([Bash)e -(POSIX)g(Mo)s(de],)h(page)g(94\).)225 1565 y Fq(\017)60 +(POSIX)g(Mo)s(de],)h(page)g(96\).)225 1565 y Fq(\017)60 b Fu(Bash)26 b(has)g(m)m(ulti-c)m(haracter)i(in)m(v)m(o)s(cation)g (options)f(\(see)f(Section)h(6.1)g([In)m(v)m(oking)g(Bash],)h(page)e -(80\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h +(82\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h (editing)g(\(see)h(Chapter)e(8)h([Command)f(Line)g(Editing],)k(page)d -(101\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225 +(104\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225 1943 y Fq(\017)60 b Fu(Bash)46 b(pro)m(vides)g(a)g(programmable)g(w)m (ord)f(completion)i(mec)m(hanism)f(\(see)h(Section)g(8.6)g([Pro-)330 -2052 y(grammable)39 b(Completion],)i(page)e(124\),)i(and)d(builtin)g +2052 y(grammable)39 b(Completion],)i(page)e(129\),)i(and)d(builtin)g (commands)f Ft(complete)p Fu(,)h Ft(compgen)p Fu(,)h(and)330 2162 y Ft(compopt)p Fu(,)29 b(to)i(manipulate)g(it.)225 2296 y Fq(\017)60 b Fu(Bash)26 b(has)f(command)h(history)f(\(see)i (Section)f(9.1)h([Bash)f(History)h(F)-8 b(acilities],)30 -b(page)c(133\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h +b(page)c(137\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h Ft(fc)g Fu(builtins)g(to)h(manipulate)g(it.)42 b(The)30 b(Bash)h(history)g(list)g(main)m(tains)g(timestamp)330 2515 y(information)g(and)e(uses)h(the)h(v)-5 b(alue)31 @@ -18235,9 +18672,9 @@ b(of)f(the)h Ft(HISTTIMEFORMAT)26 b Fu(v)-5 b(ariable)32 b(to)f(displa)m(y)f(it.)225 2649 y Fq(\017)60 b Fu(Bash)48 b(implemen)m(ts)h Ft(csh)p Fu(-lik)m(e)g(history)f(expansion)g(\(see)h (Section)g(9.3)h([History)f(In)m(teraction],)330 2759 -y(page)31 b(135\).)225 2892 y Fq(\017)60 b Fu(Bash)33 +y(page)31 b(139\).)225 2892 y Fq(\017)60 b Fu(Bash)33 b(has)g(one-dimensional)h(arra)m(y)f(v)-5 b(ariables)34 -b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(89\),)h(and)e(the)330 +b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(91\),)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 @@ -18279,10 +18716,10 @@ b Fu(Bash)31 b(includes)f(the)g Ft(select)f Fu(comp)s(ound)g(command,)i (whic)m(h)f(allo)m(ws)i(the)f(generation)g(of)g(simple)330 5340 y(men)m(us)f(\(see)h(Section)g(3.2.4.2)i([Conditional)e (Constructs],)g(page)g(10\).)p eop end -%%Page: 147 153 -TeXDict begin 147 152 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 151 157 +TeXDict begin 151 156 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(147)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(151)225 299 y Fq(\017)60 b Fu(Bash)40 b(includes)g(the)g Ft([[)g Fu(comp)s(ound)e(command,)43 b(whic)m(h)c(mak)m(es)i(conditional)h(testing)f(part)f(of)330 408 y(the)f(shell)g(grammar)g(\(see)h(Section)f(3.2.4.2)j([Conditional) @@ -18296,12 +18733,12 @@ b Fu(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m (page)h(22\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h (command)e(aliases)j(and)d(the)i Ft(alias)d Fu(and)i Ft(unalias)e Fu(builtins)h(\(see)i(Section)g(6.6)330 -1143 y([Aliases],)32 b(page)f(88\).)225 1279 y Fq(\017)60 +1143 y([Aliases],)32 b(page)f(90\).)225 1279 y Fq(\017)60 b Fu(Bash)32 b(pro)m(vides)g(shell)g(arithmetic,)i(the)e Ft(\(\()g Fu(comp)s(ound)e(command)i(\(see)h(Section)f(3.2.4.2)j([Con-) 330 1388 y(ditional)d(Constructs],)e(page)i(10\),)g(and)e(arithmetic)i (expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330 -1498 y(metic],)h(page)f(87\).)225 1633 y Fq(\017)60 b +1498 y(metic],)h(page)f(89\).)225 1633 y Fq(\017)60 b Fu(V)-8 b(ariables)31 b(presen)m(t)e(in)g(the)g(shell's)h(initial)g(en) m(vironmen)m(t)g(are)g(automatically)i(exp)s(orted)d(to)h(c)m(hild)330 1743 y(pro)s(cesses.)38 b(The)23 b(Bourne)g(shell)g(do)s(es)g(not)g @@ -18349,12 +18786,12 @@ b(expansion)g(using)f Ft(${!word})e Fu(\(see)k(Section)f(3.5.3)i Fj(num)p Ft(})p Fu(.)225 4276 y Fq(\017)60 b Fu(The)27 b Fm(posix)g Ft($\(\))g Fu(form)g(of)h(command)g(substitution)f(is)h (implemen)m(ted)g(\(see)h(Section)f(3.5.4)i([Com-)330 -4386 y(mand)38 b(Substitution],)k(page)e(28\),)j(and)38 +4386 y(mand)38 b(Substitution],)k(page)e(29\),)j(and)38 b(preferred)g(to)i(the)g(Bourne)f(shell's)h Ft(``)e Fu(\(whic)m(h)i(is) f(also)330 4495 y(implemen)m(ted)31 b(for)f(bac)m(kw)m(ards)h (compatibilit)m(y\).)225 4631 y Fq(\017)60 b Fu(Bash)31 b(has)f(pro)s(cess)g(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)s -(cess)f(Substitution],)f(page)h(29\).)225 4766 y Fq(\017)60 +(cess)f(Substitution],)f(page)h(30\).)225 4766 y Fq(\017)60 b Fu(Bash)55 b(automatically)j(assigns)e(v)-5 b(ariables)55 b(that)h(pro)m(vide)f(information)h(ab)s(out)f(the)g(curren)m(t)330 4876 y(user)40 b(\()p Ft(UID)p Fu(,)i Ft(EUID)p Fu(,)g(and)e @@ -18363,17 +18800,17 @@ Fu(,)h Ft(OSTYPE)p Fu(,)h Ft(MACHTYPE)p Fu(,)f(and)330 4985 y Ft(HOSTNAME)p Fu(\),)55 b(and)c(the)g(instance)h(of)g(Bash)f (that)h(is)f(running)f(\()p Ft(BASH)p Fu(,)56 b Ft(BASH_VERSION)p Fu(,)e(and)330 5095 y Ft(BASH_VERSINFO)p Fu(\).)37 b(See)31 -b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(69,)g(for)f +b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(71,)g(for)f (details.)225 5230 y Fq(\017)60 b Fu(The)44 b Ft(IFS)f Fu(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f(only)g(the)g(results)g (of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see)330 5340 -y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(29\).)41 +y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(30\).)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 Fu(App)s(endix)29 +%%Page: 152 158 +TeXDict begin 152 157 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(148)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(152)225 299 y Fq(\017)60 b Fu(The)36 b(\014lename)h(expansion)f(brac)m(k)m(et)i(expression)f(co) s(de)f(uses)g(`)p Ft(!)p Fu(')h(and)f(`)p Ft(^)p Fu(')h(to)g(negate)h (the)f(set)g(of)330 408 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)f @@ -18387,7 +18824,7 @@ b Fr(collating)k(sym)m(b)s(ols)g Fu(\(see)e(Section)g(3.5.8)h 883 y Fq(\017)60 b Fu(Bash)35 b(implemen)m(ts)g(extended)g(pattern)g (matc)m(hing)h(features)f(when)f(the)h Ft(extglob)d Fu(shell)j(option) 330 993 y(is)30 b(enabled)h(\(see)g(Section)g(3.5.8.1)i([P)m(attern)f -(Matc)m(hing],)g(page)f(30\).)225 1121 y Fq(\017)60 b +(Matc)m(hing],)g(page)f(31\).)225 1121 y Fq(\017)60 b Fu(It)22 b(is)g(p)s(ossible)g(to)h(ha)m(v)m(e)g(a)f(v)-5 b(ariable)23 b(and)f(a)g(function)g(with)g(the)g(same)g(name;)j Ft(sh)d Fu(do)s(es)g(not)g(separate)330 1230 y(the)31 @@ -18396,24 +18833,24 @@ Fu(Bash)30 b(functions)e(are)i(p)s(ermitted)f(to)h(ha)m(v)m(e)h(lo)s (cal)g(v)-5 b(ariables)30 b(using)f(the)g Ft(local)f Fu(builtin,)i(and)e(th)m(us)330 1468 y(useful)i(recursiv)m(e)g (functions)g(ma)m(y)h(b)s(e)f(written)g(\(see)i(Section)f(4.2)g([Bash)g -(Builtins],)g(page)h(48\).)225 1596 y Fq(\017)60 b Fu(V)-8 +(Builtins],)g(page)h(49\).)225 1596 y Fq(\017)60 b Fu(V)-8 b(ariable)25 b(assignmen)m(ts)g(preceding)e(commands)h(a\013ect)h(only) f(that)g(command,)h(ev)m(en)f(builtins)g(and)330 1705 y(functions)36 b(\(see)h(Section)g(3.7.4)h([En)m(vironmen)m(t],)h(page) -e(37\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37 +e(38\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37 b(assignmen)m(ts)330 1815 y(preceding)30 b(commands)g(are)h(global)h (unless)d(the)i(command)f(is)h(executed)g(from)f(the)g(\014le)h (system.)225 1943 y Fq(\017)60 b Fu(Bash)44 b(p)s(erforms)e(\014lename) i(expansion)f(on)h(\014lenames)g(sp)s(eci\014ed)f(as)h(op)s(erands)e (to)j(input)e(and)330 2052 y(output)30 b(redirection)h(op)s(erators)g -(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(31\).)225 +(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(32\).)225 2180 y Fq(\017)60 b Fu(Bash)29 b(con)m(tains)h(the)f(`)p Ft(<>)p Fu(')f(redirection)i(op)s(erator,)f(allo)m(wing)i(a)e(\014le)g (to)g(b)s(e)f(op)s(ened)g(for)h(b)s(oth)f(read-)330 2290 y(ing)35 b(and)f(writing,)i(and)e(the)h(`)p Ft(&>)p Fu(')g(redirection) g(op)s(erator,)h(for)f(directing)g(standard)f(output)h(and)330 2399 y(standard)30 b(error)g(to)h(the)f(same)h(\014le)f(\(see)i -(Section)f(3.6)g([Redirections],)h(page)g(31\).)225 2527 +(Section)f(3.6)g([Redirections],)h(page)g(32\).)225 2527 y Fq(\017)60 b Fu(Bash)21 b(includes)f(the)h(`)p Ft(<<<)p Fu(')g(redirection)g(op)s(erator,)i(allo)m(wing)g(a)e(string)f(to)i(b)s (e)e(used)g(as)h(the)g(standard)330 2637 y(input)29 b(to)j(a)e @@ -18424,20 +18861,20 @@ Fu(')e(redirection)j(op)s(erators,)g(whic)m(h)f(mo)m(v)m(e)330 3002 y Fq(\017)60 b Fu(Bash)25 b(treats)h(a)f(n)m(um)m(b)s(er)e(of)i (\014lenames)g(sp)s(ecially)g(when)f(they)h(are)g(used)f(in)g (redirection)i(op)s(erators)330 3112 y(\(see)31 b(Section)h(3.6)f -([Redirections],)h(page)f(31\).)225 3240 y Fq(\017)60 +([Redirections],)h(page)f(32\).)225 3240 y Fq(\017)60 b Fu(Bash)33 b(can)f(op)s(en)g(net)m(w)m(ork)i(connections)f(to)h (arbitrary)e(mac)m(hines)h(and)f(services)h(with)f(the)h(redi-)330 3349 y(rection)e(op)s(erators)g(\(see)g(Section)g(3.6)h -([Redirections],)g(page)f(31\).)225 3477 y Fq(\017)60 +([Redirections],)g(page)f(32\).)225 3477 y Fq(\017)60 b Fu(The)29 b Ft(noclobber)e Fu(option)j(is)g(a)m(v)-5 b(ailable)32 b(to)e(a)m(v)m(oid)h(o)m(v)m(erwriting)g(existing)g (\014les)e(with)h(output)f(redi-)330 3587 y(rection)39 -b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(58\).)66 +b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(60\).)66 b(The)38 b(`)p Ft(>|)p Fu(')h(redirection)g(op)s(erator)330 3696 y(ma)m(y)31 b(b)s(e)f(used)f(to)i(o)m(v)m(erride)h Ft(noclobber)p Fu(.)225 3824 y Fq(\017)60 b Fu(The)34 b(Bash)g Ft(cd)g Fu(and)f Ft(pwd)g Fu(builtins)h(\(see)h(Section)g(4.1) -g([Bourne)g(Shell)f(Builtins],)h(page)g(41\))h(eac)m(h)330 +g([Bourne)g(Shell)f(Builtins],)h(page)g(42\))h(eac)m(h)330 3934 y(tak)m(e)c Ft(-L)e Fu(and)f Ft(-P)h Fu(options)h(to)g(switc)m(h)g (b)s(et)m(w)m(een)g(logical)i(and)c(ph)m(ysical)i(mo)s(des.)225 4061 y Fq(\017)60 b Fu(Bash)25 b(allo)m(ws)h(a)g(function)e(to)i(o)m(v) @@ -18445,28 +18882,28 @@ m(erride)g(a)g(builtin)e(with)h(the)g(same)g(name,)i(and)d(pro)m(vides) h(access)h(to)330 4171 y(that)34 b(builtin's)f(functionalit)m(y)h (within)f(the)g(function)g(via)h(the)f Ft(builtin)f Fu(and)g Ft(command)g Fu(builtins)330 4281 y(\(see)f(Section)h(4.2)f([Bash)g -(Builtins],)g(page)g(48\).)225 4408 y Fq(\017)60 b Fu(The)35 +(Builtins],)g(page)g(49\).)225 4408 y Fq(\017)60 b Fu(The)35 b Ft(command)e Fu(builtin)i(allo)m(ws)i(selectiv)m(e)h(disabling)e(of)f (functions)g(when)g(command)g(lo)s(okup)g(is)330 4518 y(p)s(erformed)29 b(\(see)i(Section)g(4.2)h([Bash)f(Builtins],)g(page)g -(48\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i +(49\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i (b)s(e)e(enabled)h(or)g(disabled)g(using)f(the)h Ft(enable)f Fu(builtin)g(\(see)i(Section)g(4.2)330 4756 y([Bash)31 -b(Builtins],)g(page)g(48\).)225 4883 y Fq(\017)60 b Fu(The)26 +b(Builtins],)g(page)g(49\).)225 4883 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(exec)e Fu(builtin)h(tak)m(es)i(additional)f(options)g(that) g(allo)m(w)h(users)d(to)j(con)m(trol)g(the)e(con)m(ten)m(ts)330 4993 y(of)35 b(the)f(en)m(vironmen)m(t)h(passed)f(to)h(the)g(executed)g (command,)h(and)d(what)i(the)f(zeroth)h(argumen)m(t)330 5103 y(to)c(the)g(command)f(is)g(to)h(b)s(e)f(\(see)h(Section)h(4.1)f -([Bourne)f(Shell)h(Builtins],)g(page)g(41\).)225 5230 +([Bourne)f(Shell)h(Builtins],)g(page)g(42\).)225 5230 y Fq(\017)60 b Fu(Shell)29 b(functions)g(ma)m(y)h(b)s(e)f(exp)s(orted)g (to)h(c)m(hildren)f(via)h(the)g(en)m(vironmen)m(t)g(using)f Ft(export)f(-f)h Fu(\(see)330 5340 y(Section)i(3.3)h([Shell)e(F)-8 b(unctions],)32 b(page)f(17\).)p eop end -%%Page: 149 155 -TeXDict begin 149 154 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 153 159 +TeXDict begin 153 158 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(149)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(153)225 299 y Fq(\017)60 b Fu(The)40 b(Bash)h Ft(export)p Fu(,)h Ft(readonly)p Fu(,)f(and)g Ft(declare)d Fu(builtins)j(can)g(tak)m(e)h(a)f Ft(-f)f Fu(option)i(to)f(act)h(on)330 408 y(shell)30 @@ -18482,15 +18919,15 @@ Fu(builtin)g(allo)m(ws)j(a)e(name)g(to)g(b)s(e)f(asso)s(ciated)j(with)d (an)h(arbitrary)f(\014lename,)330 874 y(ev)m(en)30 b(when)e(that)h (\014lename)g(cannot)h(b)s(e)e(found)g(b)m(y)h(searc)m(hing)g(the)g Ft($PATH)p Fu(,)g(using)f(`)p Ft(hash)h(-p)p Fu(')g(\(see)330 -984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(41\).)225 +984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(42\).)225 1121 y Fq(\017)60 b Fu(Bash)27 b(includes)f(a)i Ft(help)d Fu(builtin)i(for)f(quic)m(k)h(reference)h(to)f(shell)g(facilities)i -(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(48\).)225 +(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(49\).)225 1367 y Fq(\017)60 b Fu(The)42 b Ft(printf)g Fu(builtin)g(is)h(a)m(v)-5 b(ailable)45 b(to)f(displa)m(y)f(formatted)g(output)g(\(see)h(Section)g -(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(48\).)225 +(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(49\).)225 1614 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(read)f Fu(builtin)g(\(see)i -(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(48\))g(will)f(read)g(a)g +(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(49\))g(will)f(read)g(a)g (line)g(ending)330 1724 y(in)i(`)p Ft(\\)p Fu(')h(with)f(the)g Ft(-r)g Fu(option,)i(and)d(will)i(use)f(the)h Ft(REPLY)e Fu(v)-5 b(ariable)30 b(as)g(a)f(default)h(if)f(no)h(non-option)330 @@ -18513,23 +18950,23 @@ Fu(option)h(will)330 2491 y(read)30 b(un)m(til)h(a)g(particular)f(c)m b Fu(The)33 b Ft(return)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)f(to)i(ab) s(ort)f(execution)h(of)f(scripts)g(executed)h(with)f(the)g Ft(.)g Fu(or)330 2737 y Ft(source)c Fu(builtins)g(\(see)j(Section)f -(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(41\).)225 +(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(42\).)225 2874 y Fq(\017)60 b Fu(Bash)43 b(includes)g(the)g Ft(shopt)f Fu(builtin,)k(for)d(\014ner)f(con)m(trol)j(of)e(shell)h(optional)g (capabilities)h(\(see)330 2984 y(Section)c(4.3.2)g([The)f(Shopt)f -(Builtin],)k(page)d(62\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f +(Builtin],)k(page)d(64\),)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 -(80\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h +(82\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h (optional)h(b)s(eha)m(vior)e(con)m(trollable)j(with)e(the)f Ft(set)g Fu(builtin)g(\(see)h(Sec-)330 3340 y(tion)31 -b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(58\).)225 3477 +b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)225 3477 y Fq(\017)60 b Fu(The)31 b(`)p Ft(-x)p Fu(')g(\()p Ft(xtrace)p Fu(\))g(option)h(displa)m(ys)f(commands)h(other)f(than)h(simple)f (commands)g(when)g(p)s(er-)330 3587 y(forming)f(an)g(execution)i(trace) -f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(58\).)225 +f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(60\).)225 3724 y Fq(\017)60 b Fu(The)28 b Ft(test)g Fu(builtin)h(\(see)h(Section) -f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(41\))g(is)f(sligh)m(tly)h +f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(42\))g(is)f(sligh)m(tly)h (di\013eren)m(t,)330 3833 y(as)23 b(it)g(implemen)m(ts)f(the)h Fm(posix)f Fu(algorithm,)j(whic)m(h)d(sp)s(eci\014es)g(the)h(b)s(eha)m (vior)f(based)g(on)h(the)f(n)m(um)m(b)s(er)330 3943 y(of)31 @@ -18540,7 +18977,7 @@ b(\(a)f(shell)f(function)h(or)f(a)h(script)f(executed)h(with)f(the)h Ft(.)f Fu(or)g Ft(source)f Fu(builtins\).)39 b(This)26 b(supp)s(orts)330 4299 y(the)31 b(bash)e(debugger.)225 4436 y Fq(\017)60 b Fu(The)42 b Ft(trap)f Fu(builtin)h(\(see)i(Section) -f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(41\))h(allo)m(ws)g(a)e +f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(42\))h(allo)m(ws)g(a)e Ft(DEBUG)330 4545 y Fu(pseudo-signal)c(sp)s(eci\014cation,)i(similar)e (to)g Ft(EXIT)p Fu(.)62 b(Commands)36 b(sp)s(eci\014ed)h(with)g(a)h Ft(DEBUG)e Fu(trap)330 4655 y(are)k(executed)g(b)s(efore)f(ev)m(ery)h @@ -18556,86 +18993,86 @@ Ft(functrace)d Fu(option)j(has)f(b)s(een)g(enabled)g(using)330 Ft(extdebug)f Fu(shell)i(option)g(has)f(additional)h(e\013ects)h(on)f (the)g Ft(DEBUG)e Fu(trap.)330 5230 y(The)21 b Ft(trap)e Fu(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j -(page)e(41\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330 +(page)e(42\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330 5340 y(signal)30 b(sp)s(eci\014cation,)h(similar)f(to)g Ft(EXIT)f Fu(and)g Ft(DEBUG)p Fu(.)39 b(Commands)28 b(sp)s(eci\014ed)h (with)g(an)g Ft(ERR)g Fu(trap)p eop end -%%Page: 150 156 -TeXDict begin 150 155 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 154 160 +TeXDict begin 154 159 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(150)330 299 y(are)40 b(executed)g(after)g +b(The)f(Bourne)g(Shell)1258 b(154)330 299 y(are)40 b(executed)g(after)g (a)f(simple)h(command)f(fails,)j(with)d(a)h(few)f(exceptions.)68 b(The)39 b Ft(ERR)g Fu(trap)g(is)330 408 y(not)g(inherited)f(b)m(y)h (shell)g(functions)f(unless)g(the)h Ft(-o)29 b(errtrace)37 b Fu(option)i(to)g(the)g Ft(set)f Fu(builtin)g(is)330 518 y(enabled.)330 650 y(The)g Ft(trap)g Fu(builtin)h(\(see)g(Section)h -(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(41\))g(allo)m(ws)g(a)g -Ft(RETURN)330 760 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j +(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(42\))g(allo)m(ws)g(a)g +Ft(RETURN)330 759 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j (similar)d(to)h Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)54 b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330 869 y Ft(RETURN)k Fu(trap)i(are)g(executed)h(b)s(efore)e(execution)i(resumes) -e(after)h(a)g(shell)g(function)g(or)g(a)g(shell)330 979 +e(after)h(a)g(shell)g(function)g(or)g(a)g(shell)330 978 y(script)36 b(executed)g(with)g Ft(.)f Fu(or)h Ft(source)e Fu(returns.)56 b(The)35 b Ft(RETURN)f Fu(trap)i(is)g(not)g(inherited)f (b)m(y)h(shell)330 1088 y(functions)k(unless)h(the)g(function)f(has)h (b)s(een)f(giv)m(en)i(the)f Ft(trace)e Fu(attribute)j(or)e(the)h Ft(functrace)330 1198 y Fu(option)31 b(has)f(b)s(een)g(enabled)g(using) -g(the)g Ft(shopt)f Fu(builtin.)225 1330 y Fq(\017)60 +g(the)g Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60 b Fu(The)30 b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i (and)d(giv)m(es)j(more)e(information)h(ab)s(out)f(the)g(names)330 -1440 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i -(page)f(48\).)225 1571 y Fq(\017)60 b Fu(The)27 b(Bash)h +1439 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i +(page)f(49\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h Ft(umask)e Fu(builtin)h(p)s(ermits)g(a)h Ft(-p)f Fu(option)h(to)h (cause)f(the)g(output)f(to)h(b)s(e)f(displa)m(y)m(ed)h(in)g(the)330 -1681 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f +1680 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f (reused)g(as)h(input)f(\(see)i(Section)f(4.1)h([Bourne)f(Shell)330 -1791 y(Builtins],)g(page)g(41\).)225 1923 y Fq(\017)60 +1789 y(Builtins],)g(page)g(42\).)225 1921 y Fq(\017)60 b Fu(Bash)34 b(implemen)m(ts)h(a)g Ft(csh)p Fu(-lik)m(e)g(directory)f (stac)m(k,)j(and)d(pro)m(vides)g(the)g Ft(pushd)p Fu(,)g -Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2032 y Fu(builtins)g(to)i +Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)g(to)i (manipulate)f(it)h(\(see)f(Section)h(6.8)g([The)f(Directory)h(Stac)m -(k],)i(page)d(90\).)56 b(Bash)35 b(also)330 2142 y(mak)m(es)c(the)g +(k],)i(page)d(93\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g (directory)g(stac)m(k)g(visible)g(as)g(the)f(v)-5 b(alue)31 b(of)g(the)f Ft(DIRSTACK)f Fu(shell)h(v)-5 b(ariable.)225 -2274 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m +2272 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m (kslash-escap)s(ed)g(c)m(haracters)g(in)f(the)h(prompt)e(strings)h -(when)f(in)m(ter-)330 2383 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h -([Con)m(trolling)f(the)g(Prompt],)f(page)h(92\).)225 -2515 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h +(when)f(in)m(ter-)330 2381 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h +([Con)m(trolling)f(the)g(Prompt],)f(page)h(94\).)225 +2513 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h (more)f(useful)g(\(see)h(Section)h(6.10)g([The)e(Restricted)i(Shell],) -330 2625 y(page)31 b(93\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s -(de)f(is)h(to)s(o)g(limited.)225 2757 y Fq(\017)60 b +330 2622 y(page)31 b(95\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s +(de)f(is)h(to)s(o)g(limited.)225 2754 y Fq(\017)60 b Fu(The)30 b Ft(disown)f Fu(builtin)h(can)h(remo)m(v)m(e)h(a)f(job)f (from)g(the)h(in)m(ternal)g(shell)g(job)f(table)i(\(see)f(Section)h -(7.2)330 2866 y([Job)h(Con)m(trol)h(Builtins],)g(page)g(98\))h(or)e -(suppress)e(the)i(sending)g(of)g Ft(SIGHUP)e Fu(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 -Ft(SIGHUP)p Fu(.)225 3108 y Fq(\017)60 b Fu(Bash)31 b(includes)f(a)g(n) +(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(101\))g(or)g +(suppress)d(the)i(sending)g(of)g Ft(SIGHUP)e Fu(to)j(a)g(job)f(when)f +(the)330 2973 y(shell)i(exits)g(as)f(the)h(result)f(of)h(a)f +Ft(SIGHUP)p Fu(.)225 3104 y Fq(\017)60 b Fu(Bash)31 b(includes)f(a)g(n) 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 Fq(\017)60 +(debugger)f(for)h(shell)f(scripts.)225 3236 y Fq(\017)60 b Fu(The)28 b(SVR4.2)h(shell)f(has)g(t)m(w)m(o)i(privilege-related)g (builtins)e(\()p Ft(mldmode)e Fu(and)i Ft(priv)p Fu(\))f(not)i(presen)m -(t)f(in)330 3350 y(Bash.)225 3482 y Fq(\017)60 b Fu(Bash)31 +(t)f(in)330 3346 y(Bash.)225 3477 y Fq(\017)60 b Fu(Bash)31 b(do)s(es)f(not)g(ha)m(v)m(e)i(the)e Ft(stop)g Fu(or)g -Ft(newgrp)f Fu(builtins.)225 3613 y Fq(\017)60 b Fu(Bash)31 +Ft(newgrp)f Fu(builtins.)225 3609 y Fq(\017)60 b Fu(Bash)31 b(do)s(es)f(not)g(use)g(the)h Ft(SHACCT)d Fu(v)-5 b(ariable)32 -b(or)e(p)s(erform)f(shell)i(accoun)m(ting.)225 3745 y +b(or)e(p)s(erform)f(shell)i(accoun)m(ting.)225 3740 y Fq(\017)60 b Fu(The)30 b(SVR4.2)h Ft(sh)f Fu(uses)g(a)g Ft(TIMEOUT)f Fu(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g -Ft(TMOUT)p Fu(.)150 3900 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m +Ft(TMOUT)p Fu(.)150 3894 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m (y)g(b)s(e)f(found)f(in)h(Chapter)f(6)i([Bash)g(F)-8 -b(eatures],)32 b(page)f(80.)150 4127 y Fs(B.1)67 b(Implemen)l(tation)48 +b(eatures],)32 b(page)f(82.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48 b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)150 -4287 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m +4288 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m (tation,)j(it)e(do)s(es)e(not)i(su\013er)e(from)h(man)m(y)g(of)h(the)f -(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 Fq(\017)60 b Fu(Bash)32 +(limi-)150 4397 y(tations)f(of)e(the)h(SVR4.2)g(shell.)41 +b(F)-8 b(or)31 b(instance:)225 4529 y Fq(\017)60 b Fu(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 Ft(if)g Fu(or)g Ft(while)f +4639 y(suc)m(h)d(as)h(an)f Ft(if)g Fu(or)g Ft(while)f Fu(statemen)m(t.)225 4770 y Fq(\017)60 b Fu(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 +(will)g(silen)m(tly)i(insert)d(a)h(needed)330 4880 y(closing)g(quote)g (at)f Ft(EOF)f Fu(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 Fq(\017)60 b Fu(The)45 @@ -18645,10 +19082,10 @@ Fu(.)57 b(If)35 b(the)i(shell)f(is)h(started)g(from)e(a)i(pro)s(cess)f (with)g Ft(SIGSEGV)e Fu(blo)s(c)m(k)m(ed)k(\(e.g.,)h(b)m(y)d(using)330 5340 y(the)31 b Ft(system\(\))d Fu(C)i(library)g(function)g(call\),)i (it)f(misb)s(eha)m(v)m(es)g(badly)-8 b(.)p eop end -%%Page: 151 157 -TeXDict begin 151 156 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 155 161 +TeXDict begin 155 160 bop 150 -116 a Fu(App)s(endix)29 b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31 -b(The)f(Bourne)g(Shell)1258 b(151)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(155)225 299 y Fq(\017)60 b Fu(In)30 b(a)i(questionable)g(attempt)g(at)g(securit)m(y)-8 b(,)33 b(the)e(SVR4.2)h(shell,)g(when)e(in)m(v)m(ok)m(ed)j(without)e (the)h Ft(-p)330 408 y Fu(option,)39 b(will)d(alter)i(its)e(real)h(and) @@ -18679,19 +19116,17 @@ Fm(posix)330 1738 y Fu(standard.)225 1873 y Fq(\017)60 b Fu(The)30 b(SVR4.2)h(shell)g(b)s(eha)m(v)m(es)f(di\013eren)m(tly)h (when)f(in)m(v)m(ok)m(ed)i(as)e Ft(jsh)g Fu(\(it)h(turns)e(on)h(job)g (con)m(trol\).)p eop end -%%Page: 152 158 -TeXDict begin 152 157 bop 150 -116 a Fu(App)s(endix)29 -b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(152)150 299 y Fp(App)t(endix)52 b(C)81 b(GNU)54 b(F)-13 -b(ree)53 b(Do)t(cumen)l(tation)e(License)1359 502 y Fu(V)-8 -b(ersion)31 b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 -635 y(Cop)m(yrigh)m(t)842 632 y(c)817 635 y Fq(\015)e -Fu(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 Ft(http://fsf.org/)390 964 y Fu(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 +%%Page: 156 162 +TeXDict begin 156 161 bop 3614 -116 a Fu(156)150 299 +y Fp(App)t(endix)52 b(C)81 b(GNU)54 b(F)-13 b(ree)53 +b(Do)t(cumen)l(tation)e(License)1359 502 y Fu(V)-8 b(ersion)31 +b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842 +632 y(c)817 635 y Fq(\015)e Fu(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 Ft(http://fsf.org/)390 964 y Fu(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 Fr(free)36 b Fu(in)29 @@ -18763,10 +19198,10 @@ b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g 5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27 b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s (cumen)m(t)g(is)g(released)p eop end -%%Page: 153 159 -TeXDict begin 153 158 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 157 163 +TeXDict begin 157 162 bop 150 -116 a Fu(App)s(endix)29 b(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(157)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 @@ -18857,10 +19292,10 @@ b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330 5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199 5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end -%%Page: 154 160 -TeXDict begin 154 159 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 158 164 +TeXDict begin 158 163 bop 150 -116 a Fu(App)s(endix)29 b(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 +b(158)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 @@ -18950,10 +19385,10 @@ b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e 5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m (ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8 b(,)p eop end -%%Page: 155 161 -TeXDict begin 155 160 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 159 165 +TeXDict begin 159 164 bop 150 -116 a Fu(App)s(endix)29 b(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 +b(159)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 @@ -19032,10 +19467,10 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g (designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5 b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p eop end -%%Page: 156 162 -TeXDict begin 156 161 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 160 166 +TeXDict begin 160 165 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(156)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 +b(160)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 @@ -19120,10 +19555,10 @@ b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h 5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g (other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330 5340 y(that)d(do)s(cumen)m(t.)p eop end -%%Page: 157 163 -TeXDict begin 157 162 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 161 167 +TeXDict begin 161 166 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(157)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h +b(161)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 @@ -19208,10 +19643,10 @@ b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g (reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f (the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f (an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end -%%Page: 158 164 -TeXDict begin 158 163 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 162 168 +TeXDict begin 162 167 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(158)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE) +b(162)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 @@ -19275,10 +19710,10 @@ f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g (time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is) 330 4005 y(eligible)h(for)e(relicensing.)p eop end -%%Page: 159 165 -TeXDict begin 159 164 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 163 169 +TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29 b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(159)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f +b(163)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f (for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fu(T)-8 b(o)35 b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e) i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150 @@ -19313,1291 +19748,1323 @@ y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s (ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p eop end -%%Page: 160 166 -TeXDict begin 160 165 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(160)150 299 y Fp(App)t(endix)52 -b(D)81 b(Indexes)150 631 y Fs(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(41)150 1218 y Fs(:)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(41)150 1579 y Fs([)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(45)150 1938 y Fs(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(48)150 -2289 y Fs(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(48)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(41)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(49)150 2902 y Fs(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(50)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(42)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(50)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(42)150 3778 y -Fs(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(50)150 3982 y Fe(dirs)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +%%Page: 164 170 +TeXDict begin 164 169 bop 3614 -116 a Fu(164)150 299 +y Fp(App)t(endix)52 b(D)81 b(Indexes)150 639 y Fs(D.1)68 +b(Index)45 b(of)g(Shell)g(Builtin)g(Commands)146 806 +y(.)150 923 y Fe(.)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)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 Fs(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(52)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(52)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(42)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(42)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(43)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(43)150 5110 y Fs(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 Fs(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(43)2025 1250 y Fs(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(44)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(53)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 Fs(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 Fs(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 Fs(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(53)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(53)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(53)2025 3118 y Fs(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(54)2025 3500 y Fs(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(91)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(54)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(91)2025 3888 y Fe(pwd)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)33 b Fb(42)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(44)2025 4150 y Fs(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 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(42)146 +1523 y Fs([)150 1640 y Fe([)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)33 b Fb(46)146 1881 y Fs(A)150 1998 y Fe(alias)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)146 2239 y +Fs(B)150 2356 y Fe(bg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29 +b Fb(101)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(49)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 +b Fb(43)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 +b Fb(50)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)20 b Fb(51)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)31 b Fb(43)150 3151 y Fe(command)22 +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(:)49 b Fb(55)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(56)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(44)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(45)2025 4782 y Fs(S)2025 4902 y Fe(set)8 b Fc(:)13 +h(:)f(:)g(:)g(:)g(:)35 b Fb(51)150 3238 y Fe(compgen)18 +b Fc(:)d(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)33 b Fb(131)150 3326 y Fe(complete)16 +b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)31 b Fb(131)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 +b Fb(134)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b +Fb(43)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13 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(58)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(45)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(62)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(56)2025 5259 y Fe(suspend)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g +g(:)g(:)g(:)35 b Fb(51)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)25 b Fb(93)150 4033 y Fe(disown)d Fc(:)13 +b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)36 b Fb(102)146 4274 y Fs(E)150 4391 y Fe(echo)11 +b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(53)150 4478 +y Fe(enable)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 -b Fb(99)p eop end -%%Page: 161 167 -TeXDict begin 161 166 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(161)150 299 y Fs(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(45)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(46)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(47)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(56)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(57)2025 299 y Fs(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(57)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(47)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(58)2025 677 y Fe(unset)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(53)150 +4566 y Fe(eval)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 -b Fb(48)2025 910 y Fs(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 Fs(D.2)68 -b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h(W)-11 b(ords)150 -1495 y(!)150 1611 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 Fs([)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 Fs(])150 2336 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 2782 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 -3024 y Fs(C)150 3140 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 3374 y Fs(D)150 3490 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 3577 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 3810 y Fs(E)150 -3926 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)150 4014 y Fe(else)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(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 1737 y Fs(F)2025 1856 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 1945 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 -2033 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(17)2025 2275 -y Fs(I)2025 2394 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 2483 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 2724 y Fs(S)2025 2843 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 3085 y Fs(T)2025 -3204 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 3293 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 3534 y Fs(U)2025 3653 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 3894 y Fs(W)2025 -4014 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 4246 y Fs(D.3)68 b(P)l(arameter)47 b(and)d(V)-11 -b(ariable)46 b(Index)150 4483 y(!)150 4603 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 -4846 y Fs(#)150 4967 y Fe(#)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(43)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)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 5220 y Fs($)150 5340 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)2025 -4483 y Fe($!)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(20)2025 4574 y Fe($#)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(20)2025 4665 y Fe($$)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(20)2025 4756 y Fe($*)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(20)2025 4847 y Fe($-)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(20)2025 4938 y Fe($?)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(20)2025 5029 y Fe($@)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(20)2025 -5120 y Fe($_)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(20)2025 5211 y Fe($0)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(20)p eop end -%%Page: 162 168 -TeXDict begin 162 167 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(162)150 299 y Fs(*)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 Fs(-)150 765 y Fe(-)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(44)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)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 Fs(?)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(20)150 -1349 y Fs(@)150 1465 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)p 159 1699 41 6 v 150 1815 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 -2049 y Fs(0)150 2165 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 2399 y Fs(A)150 2515 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 2758 y Fs(B)150 2875 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(69)150 2962 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(70)150 3049 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(:)25 +b Fb(44)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b -Fb(70)150 3137 y Fe(BASH_ARGV)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 +b Fb(44)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(70)150 -3224 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(70)150 3311 -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(70)150 3399 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(70)150 3486 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(71)150 3574 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(71)150 3661 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(71)150 3748 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(71)150 -3836 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(71)150 3923 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(71)150 4010 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(71)150 4098 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(72)150 4185 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(72)150 4272 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(70)150 4360 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(70)150 4447 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 4534 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 4787 y Fs(C)150 4903 -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(69)150 4991 -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(72)150 5078 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 5165 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(72)150 5253 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 5340 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(72)2025 299 y Fe(COMP_KEY)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 386 y Fe(COMP_LINE)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 474 y Fe(COMP_POINT)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 -561 y Fe(COMP_TYPE)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 649 -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(73)2025 736 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(73)2025 824 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 911 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 999 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 1086 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 1174 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 1261 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(73)2025 1349 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 1436 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(73)2025 1671 y Fs(D)2025 -1788 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(73)2025 1875 -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 2128 y Fs(E)2025 2245 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 2332 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(73)2025 2420 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 2507 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(73)2025 -2595 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(73)2025 2682 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 2936 y Fs(F)2025 -3052 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(73)2025 -3140 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(74)2025 -3227 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(74)2025 3315 -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(74)2025 3549 -y Fs(G)2025 3666 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(74)2025 -3753 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(74)2025 -3988 y Fs(H)2025 4104 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(74)2025 4192 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(74)2025 4279 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(74)2025 -4367 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(75)2025 4454 -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(75)2025 4542 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(75)2025 4630 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 4717 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 4805 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(75)2025 4892 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(75)2025 4980 y Fe(HOME)23 +g(:)g(:)g(:)29 b Fb(137)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)29 b Fb(101)2021 871 y Fs(G)2025 988 y Fe(getopts)22 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(69)2025 5067 -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 5155 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(75)2025 5242 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(76)2025 5330 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(76)p eop end -%%Page: 163 169 -TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(163)150 299 y Fs(I)150 415 y Fe(IFS)8 -b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(69)150 -502 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(76)150 590 -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 677 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(76)150 764 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 997 y Fs(K)150 -1114 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 -1366 y Fs(L)150 1482 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(76)150 1569 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(76)150 1656 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(76)150 -1743 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(76)150 1831 -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(76)150 1918 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(76)150 2005 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(76)150 2093 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(76)150 2326 y Fs(M)150 2442 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(76)150 2529 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(69)150 2617 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(77)150 2704 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(69)150 -2791 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(77)150 -2878 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 2966 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 3053 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 3140 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 3227 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 3479 y Fs(O)150 3596 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(77)150 3683 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(69)150 3770 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(77)150 3857 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(69)150 3945 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(77)150 4032 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 4284 y Fs(P)150 4400 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(69)2025 389 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(77)2025 -478 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(77)2025 568 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(77)2025 658 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(77)2025 748 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(77)2025 837 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(69)2025 -927 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(69)2025 1017 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(77)2025 1107 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(77)2025 1197 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(77)2025 1443 y Fs(R)2025 1564 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(77)2025 1654 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(78)2025 1744 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(78)2025 1834 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(78)2025 1923 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 2170 y Fs(S)2025 2291 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(78)2025 2381 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(78)2025 2471 y Fe(SHELLOPTS)9 -b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +g(:)g(:)h(:)f(:)g(:)35 b Fb(44)2021 1250 y Fs(H)2025 +1369 y Fe(hash)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)36 b Fb(78)2025 2560 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 +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(45)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(54)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b +Fb(138)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(101)2021 2186 y Fs(K)2025 +2303 y Fe(kill)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 +b Fb(102)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)28 b Fb(54)2025 2760 y Fe(local)9 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(54)2025 2848 y Fe(logout)6 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(55)2021 3110 y Fs(M)2025 +3227 y Fe(mapfile)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(55)2021 +3489 y Fs(P)2025 3608 y Fe(popd)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)46 b Fb(78)2025 2650 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(109)2025 2740 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 2830 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 2919 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 3184 y Fs(T)2025 -3306 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 3395 -y Fe(TEXTDOMAINDIR)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(93)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(55)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)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 3485 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(78)2025 3575 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(79)2025 3665 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(79)2025 3911 y Fs(U)2025 -4032 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(79)2025 4279 y Fs(V)2025 4400 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 4649 y Fs(D.4)68 b(F)-11 b(unction)44 b(Index)150 -4886 y(A)150 5010 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 5102 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 5193 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 4886 y Fs(B)2025 -5033 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 5135 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 5238 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 -5340 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)p eop end -%%Page: 164 170 -TeXDict begin 164 169 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(164)150 299 y Fe(backward-word)29 -b(\(M-b\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)49 b Fb(115)150 -387 y Fe(beginning-of-history)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(116)150 475 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 732 y Fs(C)150 851 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 -939 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 1027 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 1115 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 1204 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 -1292 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 1380 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 1468 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 1556 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 1645 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 1733 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 1821 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 1909 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 1998 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 2086 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 2343 y Fs(D)150 2461 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 2549 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 -2638 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 2726 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 2814 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 2902 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 2991 y Fe(do-uppercase-version) -30 b(\(M-a,)d(M-b,)f(M-)p Fd(x)p Fe(,)h(...)q(\))325 -3078 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 3166 -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 3254 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 -3342 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 3431 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 3519 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 -3776 y Fs(E)150 3894 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 -3982 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 4071 y Fd(end-of-file)28 -b Fe(\(usually)g(C-d\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 b Fb(117)150 4159 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 4247 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 -4335 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 -4592 y Fs(F)150 4710 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 4799 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 -4887 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 4975 -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 5222 y Fs(G)150 5340 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)2025 299 y Fe(glob-expand-word)29 -b(\(C-x)e(*\))17 b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)44 b Fb(123)2025 388 y Fe -(glob-list-expansions)30 b(\(C-x)c(g\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(123)2025 -651 y Fs(H)2025 771 y Fe(history-and-alias-expand-line)e(\(\))7 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(124)2025 -860 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 950 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 1039 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 1128 y Fe -(history-substr-search-backward)e(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)h -(:)f(:)g(:)48 b Fb(117)2025 1217 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 1480 y Fs(I)2025 1600 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 -1690 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 1779 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 2041 y Fs(K)2025 2162 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 2251 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 -2340 y Fe(kill-whole-line)29 b(\(\))8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 +b Fb(93)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)35 b Fb(118)2025 2430 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 2682 y Fs(M)2025 2802 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 2891 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 -2981 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 3243 y Fs(N)2025 3364 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 3453 y Fe(non-incremental-forward-search)q(-hist)q(ory)d -(\(M-n\))2200 3540 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(:)g(:)h(:)f(:)28 +b Fb(45)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)26 b Fb(56)2025 4339 y Fe(readarray)15 b +Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)30 b Fb(57)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 +b Fb(45)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(46)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)28 b Fb(60)2025 4972 y Fe(shift)9 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(46)2025 5060 y Fe(shopt)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b -Fb(116)2025 3629 y Fe(non-incremental-reverse-search)q(-hist)q(ory)32 -b(\(M-p\))2200 3716 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 3960 y Fs(O)2025 4081 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 4170 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 4422 y Fs(P)2025 4542 y Fe(possible-command-completions) -32 b(\(C-x)26 b(!\))21 b Fc(:)13 b(:)g(:)h(:)f(:)47 b -Fb(121)2025 4632 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 4721 y Fe(possible-filename-completions)32 -b(\(C-x)26 b(/\))18 b Fc(:)c(:)f(:)g(:)45 b Fb(120)2025 -4810 y Fe(possible-hostname-completions)32 b(\(C-x)26 -b(@\))18 b Fc(:)c(:)f(:)g(:)45 b Fb(121)2025 4900 y Fe -(possible-username-completions)32 b(\(C-x)26 b(~\))18 -b Fc(:)c(:)f(:)g(:)45 b Fb(121)2025 4989 y Fe -(possible-variable-completions)32 b(\(C-x)26 b($\))18 -b Fc(:)c(:)f(:)g(:)45 b Fb(121)2025 5078 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 5167 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 5257 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)p eop end +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(64)2025 5148 +y Fe(source)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(58)2025 +5235 y Fe(suspend)d Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(102)p eop end %%Page: 165 171 TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(165)150 299 y Fs(Q)150 416 y Fe(quoted-insert)29 -b(\(C-q)d(or)g(C-v\))20 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)45 b Fb(117)150 670 y Fs(R)150 -787 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 875 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 963 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 1051 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 -1294 y Fs(S)150 1412 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(118)150 1499 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 -1587 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 1675 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 1762 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 1850 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 1938 -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 2026 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 2113 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 Fs(T)2025 424 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 515 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 607 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 881 y Fs(U)2025 -1006 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 1097 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 1189 -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 1280 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 1372 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 1463 -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 1737 y Fs(Y)2025 1862 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 1954 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 2045 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 -2137 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 2369 y Fs(D.5)68 -b(Concept)45 b(Index)150 2629 y(A)150 2748 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(88)150 2836 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(87)150 2925 -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(29)150 3013 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(87)150 3102 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(89)150 3358 y Fs(B)150 -3477 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 3565 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 3654 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 -3742 y(Bourne)26 b(shell)13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +b(D:)i(Indexes)2623 b(165)146 294 y Fs(T)150 410 y Fe(test)11 +b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(46)150 497 +y Fe(times)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(5)150 3831 -y(brace)26 b(expansion)20 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(48)150 +584 y Fe(trap)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)47 b Fb(21)150 3919 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 4159 y Fs(C)150 4278 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 4366 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(36)150 4455 -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(35)150 4543 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 4632 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(:)h(:)25 +b Fb(48)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(58)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 +b Fb(58)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -36 b Fb(36)150 4720 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(28)150 4809 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 4897 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 4986 -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 5074 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 5163 -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 5251 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 5340 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)2025 2629 y(commands,)26 -b(shell)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(:) -42 b Fb(8)2025 2720 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 2810 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 2901 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 -2991 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 3082 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 3172 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 3439 y Fs(D)2025 3562 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 3829 y Fs(E)2025 3952 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 4043 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 -4133 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(87)2025 4224 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(135)2025 4314 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 4405 -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(38)2025 4495 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(21)2025 4586 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(29)2025 4676 -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 4767 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(30)2025 -4857 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(23)2025 4948 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(30)2025 -5038 y(expansion,)26 b(tilde)8 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g +g(:)g(:)g(:)h(:)f(:)20 b Fb(58)150 1206 y Fe(umask)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(22)2025 5129 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(87)2025 5220 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(85)p eop end +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(48)150 1293 y +Fe(unalias)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(60)150 1380 y +Fe(unset)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)2021 +294 y Fs(W)2025 433 y Fe(wait)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 +b Fb(102)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h +(W)-11 b(ords)146 2704 y(!)150 2820 y Fe(!)21 b Fc(:)13 +b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(8)146 +3056 y Fs([)150 3172 y Fe([[)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)31 b Fb(12)146 3414 y Fs(])150 3530 y Fe(]])16 b +Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(12)146 +3770 y Fa({)150 3886 y Fe({)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)33 b Fb(14)146 4125 y Fa(})150 4241 y Fe(})19 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b +Fb(14)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)25 b Fb(11)146 4825 y Fs(D)150 4941 y Fe(do)16 +b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(10)150 +5028 y Fe(done)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(10)146 5261 y Fs(E)150 5377 y Fe(elif)11 b Fc(:)j(:)f(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)25 b Fb(10)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)25 b Fb(10)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)25 b Fb(11)2021 2703 y Fs(F)2025 2836 y Fe(fi)16 +b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(10)2025 +2928 y Fe(for)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 +b Fb(10)2025 3015 y Fe(function)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b +Fb(17)2021 3359 y Fs(I)2025 3491 y Fe(if)16 b Fc(:)e(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)31 b Fb(10)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2021 3921 y Fs(S)2025 +4048 y Fe(select)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b +Fb(12)2021 4392 y Fs(T)2025 4524 y Fe(then)11 b Fc(:)j(:)f(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)26 b Fb(10)2025 4611 y Fe(time)13 b Fc(:)h(:)f(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)28 b Fb(8)2021 4954 y Fs(U)2025 5081 y +Fe(until)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(10)2021 +5425 y Fs(W)2025 5552 y Fe(while)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 +b Fb(10)p eop end %%Page: 166 172 TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(166)150 299 y Fs(F)150 415 y Fb(\014eld)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(:)42 b Fb(3)150 -502 y(\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 -589 y(\014lename)26 b(expansion)d Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f +b(D:)i(Indexes)2623 b(166)150 299 y Fs(D.3)68 b(P)l(arameter)47 +b(and)d(V)-11 b(ariable)46 b(Index)146 955 y(!)150 1073 +y Fe(!)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)49 b Fb(30)150 676 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 764 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(17)150 1013 y Fs(H)150 1129 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 1216 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(135)150 1304 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 -1391 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 1478 -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 1728 y Fs(I)150 1843 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 1931 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 -2018 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 2105 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 2192 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(83)150 2279 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 2512 y Fs(J)150 2628 -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 2716 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 2965 y Fs(K)150 3081 y Fb(kill)g(ring)19 b Fc(:)13 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 +b Fb(20)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)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 3168 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 3418 y Fs(L)150 3534 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 3621 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 3871 y Fs(M)150 3987 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(30)150 4074 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 4307 -y Fs(N)150 4423 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 4510 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 4597 -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 4847 y Fs(O)150 4963 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 5212 y Fs(P)150 5328 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(23)150 5415 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)2025 -299 y(parameters,)27 b(p)r(ositional)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 -(:)44 b Fb(19)2025 387 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(20)2025 -474 y(pathname)25 b(expansion)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(20)146 +1701 y Fs($)150 1820 y Fe($)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)33 b Fb(20)150 1909 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)31 b Fb(20)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)38 b Fb(30)2025 562 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(30)2025 650 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 738 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 825 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(94)2025 -913 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 1001 -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 1089 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(29)2025 1177 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 1264 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(92)2025 1517 y Fs(Q)2025 1634 y Fb(quoting)10 -b Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)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(:)31 b Fb(20)150 2173 y Fe($*)16 +b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)37 b Fb(6)2025 1722 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 1974 y Fs(R)2025 2091 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 2179 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 2267 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 2355 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(93)2025 2443 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 -2678 y Fs(S)2025 2796 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(87)2025 2883 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(17)2025 -2971 y(shell)26 b(script)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(20)150 +2261 y Fe($-)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 +b Fb(20)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)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(39)2025 3059 -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 3147 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(83)2025 3234 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 3322 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 3410 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(68)2025 -3498 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(82)2025 3585 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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +31 b Fb(20)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)31 b Fb(20)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)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 3838 y Fs(T)2025 3955 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(22)2025 4043 y(tok)n(en)11 b Fc(:)h(:)i(:)f(:)g(:)g(:)g +(:)g(:)31 b Fb(20)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)31 b Fb(20)146 2876 y Fs(*)150 2994 y Fe(*)19 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)38 b Fb(4)2025 4131 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 4383 y Fs(V)2025 4500 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 4588 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 -4841 y Fs(W)2025 4958 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 5046 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(29)2025 5298 y Fs(Y)2025 5415 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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b +Fb(20)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:) 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 +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)33 b Fb(20)146 3620 y Fs(?)150 3738 +y Fe(?)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 +b Fb(20)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(20)p +156 4364 41 6 v 150 4482 a Fe(_)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)33 b Fb(20)146 4736 y Fs(0)150 4854 y +Fe(0)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 +b Fb(20)146 5108 y Fs(A)150 5226 y Fe(auto_resume)8 b +Fc(:)16 b(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +23 b Fb(103)2021 954 y Fs(B)2025 1076 y Fe(BASH)11 b +Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(71)2025 1165 +y Fe(BASH_ALIASES)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)22 b Fb(72)2025 1254 y Fe(BASH_ARGC)15 +b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)30 b Fb(72)2025 1343 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 +b Fb(72)2025 1432 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(72)2025 +1521 y Fe(BASH_COMMAND)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(72)2025 1611 y Fe(BASH_COMPAT)10 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)25 b Fb(73)2025 1700 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 +b Fb(73)2025 1789 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13 +b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)34 b Fb(73)2025 1878 y Fe(BASH_LINENO)10 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)25 b Fb(73)2025 1967 y Fe(BASH_LOADABLES_PATH)7 b +Fc(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(73)2025 +2056 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(73)2025 2145 y Fe(BASH_SOURCE)10 +b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)25 b Fb(73)2025 2235 y Fe(BASH_SUBSHELL)g Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(73)2025 2324 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(73)2025 2413 +y Fe(BASH_VERSION)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 2502 y Fe(BASH_XTRACEFD)j +Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(74)2025 2591 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b +Fb(72)2025 2680 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 +b Fb(72)2025 2769 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(108)2025 +2858 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 +b Fb(108)2025 2946 y Fe(blink-matching-paren)24 b Fc(:)13 +b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)34 b Fb(108)2021 3231 y Fs(C)2025 +3353 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b +Fb(71)2025 3442 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(74)2025 +3531 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13 +b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 +b Fb(108)2025 3621 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(108)2025 3710 y Fe(COLUMNS)22 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)35 b Fb(74)2025 3799 y Fe(comment-begin)23 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 +b Fb(108)2025 3888 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(74)2025 +3977 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(75)2025 4066 +y Fe(COMP_LINE)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(74)2025 4155 y Fe(COMP_POINT)13 +b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)27 b Fb(75)2025 4244 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 +b Fb(75)2025 4334 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(75)2025 4423 y Fe(COMP_WORDS)13 +b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)27 b Fb(75)2025 4512 y Fe(completion-display-width)9 +b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)24 b Fb(108)2025 4601 y Fe(completion-ignore-case)14 +b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)29 b Fb(109)2025 4690 y Fe(completion-map-case)d +Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(109)2025 4779 +y Fe(completion-prefix-display-leng)q(th)29 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(109)2025 4868 +y Fe(completion-query-items)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29 +b Fb(109)2025 4958 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b +Fb(75)2025 5047 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(109)2025 5134 +y Fe(COPROC)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(75)p +eop end +%%Page: 167 173 +TeXDict begin 167 172 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(167)146 294 y Fs(D)150 419 y Fe(DIRSTACK)18 +b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)32 b Fb(75)150 506 y Fe(disable-completion)7 +b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(109)146 +810 y Fs(E)150 935 y Fe(echo-control-characters)12 b +Fc(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)26 b Fb(109)150 1025 y Fe(editing-mode)f +Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 +b Fb(109)150 1115 y Fe(emacs-mode-string)10 b Fc(:)17 +b(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(109)150 1205 +y Fe(EMACS)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(75)150 +1295 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 +b Fb(110)150 1385 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(110)150 1475 y Fe(ENV)14 +b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(76)150 +1565 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(76)150 1655 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(76)150 +1742 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)37 b Fb(110)146 2046 y Fs(F)150 2171 +y Fe(FCEDIT)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(76)150 +2261 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(76)150 +2351 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(76)150 2438 +y Fe(FUNCNEST)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(76)146 2731 y +Fs(G)150 2855 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(76)150 +2942 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b +Fb(76)146 3235 y Fs(H)150 3360 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 +b Fb(76)150 3450 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 +b Fb(77)150 3540 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(77)150 +3630 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(77)150 3720 +y Fe(HISTFILESIZE)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)22 b Fb(77)150 3810 y Fe(HISTIGNORE)13 +b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)27 b Fb(77)150 3900 y Fe(history-preserve-point)14 +b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)29 b Fb(110)150 3990 y Fe(history-size)c +Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 +b Fb(110)150 4080 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b +Fb(78)150 4170 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(78)150 4260 y Fe(HOME)11 +b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(71)150 4350 +y Fe(horizontal-scroll-mode)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(110)150 +4440 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 4530 +y Fe(HOSTNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)150 4617 y +Fe(HOSTTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(78)2021 294 y Fs(I)2025 +421 y Fe(IFS)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 +b Fb(71)2025 512 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(78)2025 +602 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(110)2025 693 y Fe(INPUTRC)c +Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)35 b Fb(78)2025 780 y Fe(isearch-terminators)26 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(111)2021 1088 +y Fs(K)2025 1211 y Fe(keymap)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 +b Fb(111)2021 1531 y Fs(L)2025 1658 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)26 b Fb(78)2025 1748 y Fe(LC_ALL)6 b Fc(:)14 +b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)21 b Fb(78)2025 1839 y Fe(LC_COLLATE)13 +b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)27 b Fb(78)2025 1930 y Fe(LC_CTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 +b Fb(78)2025 2021 y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 b Fb(7,)26 b(79)2025 +2111 y Fe(LC_NUMERIC)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(79)2025 2202 y +Fe(LC_TIME)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(79)2025 2293 +y Fe(LINENO)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(79)2025 +2380 y Fe(LINES)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 +b Fb(79)2021 2688 y Fs(M)2025 2815 y Fe(MACHTYPE)18 b +Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)33 b Fb(79)2025 2906 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)26 b Fb(71)2025 2996 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 +b Fb(79)2025 3087 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b +Fb(71)2025 3178 y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 +b Fb(79)2025 3269 y Fe(mark-modified-lines)26 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(111)2025 3359 y Fe +(mark-symlinked-directories)27 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(111)2025 3450 +y Fe(match-hidden-files)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 +b Fb(111)2025 3541 y Fe(menu-complete-display-prefix)17 +b Fc(:)h(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 +b Fb(112)2025 3628 y Fe(meta-flag)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(110)2021 +3947 y Fs(O)2025 4074 y Fe(OLDPWD)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(79)2025 4165 y Fe(OPTARG)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(71)2025 4256 y Fe(OPTERR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(79)2025 4347 y Fe(OPTIND)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(71)2025 4437 y Fe(OSTYPE)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(79)2025 4525 y Fe(output-meta)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(112)p +eop end +%%Page: 168 174 +TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(168)146 294 y Fs(P)150 410 y Fe(page-completions) +13 b Fc(:)j(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(112)150 +497 y Fe(PATH)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 +b Fb(71)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(79)150 +671 y Fe(POSIXLY_CORRECT)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)32 b Fb(79)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)25 b Fb(79)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13 +b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 +b Fb(79)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 1020 y Fe(PS0)14 +b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(80)150 +1107 y Fe(PS1)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 +b Fb(71)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 +b Fb(71)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 +b Fb(80)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 +b Fb(80)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 +b Fb(80)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)20 b Fb(80)150 1892 y Fe(READLINE_LINE)25 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 +b Fb(80)150 1979 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 2066 y Fe(REPLY)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2153 y +Fe(revert-all-at-newline)17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 +b Fb(112)146 2386 y Fs(S)150 2502 y Fe(SECONDS)22 b Fc(:)13 +b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)35 b Fb(80)150 2589 y Fe(SHELL)9 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2676 y Fe(SHELLOPTS)15 +b Fc(:)h(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)30 b Fb(80)150 2763 y Fe(SHLVL)9 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(80)150 2851 y Fe(show-all-if-ambiguous) +17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(112)150 2938 y Fe +(show-all-if-unmodified)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(112)2025 +260 y Fe(show-mode-in-prompt)d Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 +b Fb(112)2025 347 y Fe(skip-completed-text)26 b Fc(:)13 +b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(112)2021 675 y Fs(T)2025 +803 y Fe(TEXTDOMAIN)15 b Fc(:)g(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(7)2025 894 y +Fe(TEXTDOMAINDIR)7 b Fc(:)16 b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)23 b Fb(7)2025 985 y Fe(TIMEFORMAT)13 +b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)27 b Fb(81)2025 1076 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)23 b Fb(81)2025 1164 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 +b Fb(81)2021 1480 y Fs(U)2025 1604 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)28 b Fb(81)2021 1920 y Fs(V)2025 2049 +y Fe(vi-cmd-mode-string)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 +b Fb(113)2025 2140 y Fe(vi-ins-mode-string)7 b Fc(:)17 +b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(113)2025 2227 +y Fe(visible-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)35 b Fb(113)150 3661 y Fs(D.4)68 b(F)-11 b(unction)44 +b(Index)146 4147 y(A)150 4273 y Fe(abort)27 b(\(C-g\))15 +b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 +b Fb(126)150 4363 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12 +b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)27 +b Fb(120)150 4450 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14 +b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(128)146 4762 y Fs(B)150 +4888 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)26 b Fb(119)150 4978 y Fe(backward-delete-char)k(\(Rubout\))22 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 +b Fb(121)150 5069 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e +Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b +Fb(122)150 5159 y Fe(backward-kill-word)30 b(\(M-DEL\))11 +b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +26 b Fb(123)150 5250 y Fe(backward-word)j(\(M-b\))12 +b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(119)150 5340 +y Fe(beginning-of-history)k(\(M-<\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(120)2025 +4117 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 +b Fb(119)2025 4204 y Fe(bracketed-paste-begin)c(\(\))16 +b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)31 b Fb(122)2021 4499 y Fs(C)2025 4623 y Fe +(call-last-kbd-macro)f(\(C-x)c(e\))15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(126)2025 4713 +y Fe(capitalize-word)f(\(M-c\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 +b Fb(122)2025 4802 y Fe(character-search)29 b(\(C-]\))22 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)36 b Fb(126)2025 4892 y Fe +(character-search-backward)31 b(\(M-C-]\))10 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(127)2025 4981 +y Fe(clear-screen)j(\(C-l\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 +b Fb(119)2025 5071 y Fe(complete)e(\(TAB\))7 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 +b Fb(124)2025 5161 y Fe(complete-command)29 b(\(M-!\))22 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)36 b Fb(125)2025 5250 y Fe(complete-filename)29 +b(\(M-/\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(125)2025 5340 y Fe +(complete-hostname)29 b(\(M-@\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 +b Fb(125)p eop end +%%Page: 169 175 +TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(169)150 264 y Fe(complete-into-braces)30 +b(\(M-{\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)26 b Fb(125)150 354 y Fe(complete-username)j(\(M-~\))20 +b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)33 b Fb(125)150 444 y Fe(complete-variable)c(\(M-$\))20 +b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)33 b Fb(125)150 534 y Fe(copy-backward-word)d(\(\))7 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(123)150 624 y Fe(copy-forward-word) +29 b(\(\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(123)150 +711 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 +b Fb(123)146 1017 y Fs(D)150 1142 y Fe(dabbrev-expand)29 +b(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 +b Fb(125)150 1232 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)32 b Fb(121)150 1322 y Fe(delete-char-or-list)e +(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(125)150 1412 y Fe +(delete-horizontal-space)31 b(\(\))11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(123)150 +1502 y Fe(digit-argument)j(\()p Fd(M-0)p Fe(,)e Fd(M-1)p +Fe(,)f(...)g Fd(M--)p Fe(\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:) +26 b Fb(124)150 1592 y Fe(display-shell-version)k(\(C-x)d(C-v\))c +Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b +Fb(128)150 1673 y Fe(do-uppercase-version)30 b(\(M-a,)227 +1761 y(M-b,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)25 b Fb(126)150 1851 y Fe(downcase-word)k(\(M-l\)) +12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(122)150 1941 +y Fe(dump-functions)j(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +32 b Fb(127)150 2031 y Fe(dump-macros)c(\(\))7 b Fc(:)14 +b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 +b Fb(127)150 2121 y Fe(dump-variables)29 b(\(\))17 b +Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(127)150 +2208 y Fe(dynamic-complete-history)f(\(M-TAB\))13 b Fc(:)i(:)e(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(125)146 2514 y Fs(E)150 +2639 y Fe(edit-and-execute-command)k(\(C-xC-e\))10 b +Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(128)150 +2729 y Fe(end-kbd-macro)k(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 +b Fb(126)150 2819 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)35 b Fb(121)150 2909 y Fe(end-of-history)29 b(\(M->\))9 +b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(120)150 2999 y +Fe(end-of-line)k(\(C-e\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 +b Fb(119)150 3086 y Fe(exchange-point-and-mark)f(\(C-x)26 +b(C-x\))17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)32 +b Fb(126)146 3392 y Fs(F)150 3517 y Fe(forward-backward-delete-char)g +(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 +b Fb(121)150 3607 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)29 b Fb(119)150 3697 y Fe(forward-search-history)i +(\(C-s\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)38 b Fb(120)150 3784 y Fe(forward-word)28 b(\(M-f\))14 +b Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(119)146 4079 +y Fs(G)150 4204 y Fe(glob-complete-word)h(\(M-g\))16 +b Fc(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)31 b Fb(127)150 4294 y Fe(glob-expand-word)e(\(C-x)e(*\))c +Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)38 b Fb(127)150 4382 y Fe(glob-list-expansions)30 +b(\(C-x)d(g\))13 b Fc(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)27 b Fb(128)2021 294 y Fs(H)2025 423 y Fe +(history-and-alias-expand-line)32 b(\(\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)28 b Fb(128)2025 514 y Fe(history-expand-line)i +(\(M-^\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)28 b Fb(128)2025 606 y Fe(history-search-backward)j +(\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)26 b Fb(120)2025 697 y Fe(history-search-forward)k(\(\))13 +b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)28 b Fb(120)2025 789 y Fe(history-substr-search-backward)k(\(\))10 +b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(121)2025 +876 y Fe(history-substr-search-forward)32 b(\(\))13 b +Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(120)2021 +1210 y Fs(I)2025 1339 y Fe(insert-comment)h(\(M-#\))9 +b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(127)2025 1431 +y Fe(insert-completions)29 b(\(M-*\))16 b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b +Fb(124)2025 1518 y Fe(insert-last-argument)f(\(M-.)c(or)g(M-_\))7 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(128)2021 +1852 y Fs(K)2025 1981 y Fe(kill-line)27 b(\(C-k\))c Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(122)2025 +2073 y Fe(kill-region)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(123)2025 2164 y Fe(kill-whole-line)29 +b(\(\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(123)2025 +2251 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)37 b Fb(123)2021 2575 y Fs(M)2025 2704 y +Fe(magic-space)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)22 b Fb(128)2025 2796 y Fe(menu-complete)28 +b(\(\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 +b Fb(124)2025 2883 y Fe(menu-complete-backward)c(\(\))13 +b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)28 b Fb(124)2021 3217 y Fs(N)2025 3346 y Fe(next-history)g(\(C-n\)) +14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(120)2025 +3429 y Fe(non-incremental-forward-)2102 3516 y(search-history)f +(\(M-n\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(120)2025 3603 +y Fe(non-incremental-reverse-)2102 3690 y(search-history)28 +b(\(M-p\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(120)2021 4033 +y Fs(O)2025 4162 y Fe(operate-and-get-next)30 b(\(C-o\))11 +b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +26 b Fb(128)2025 4249 y Fe(overwrite-mode)j(\(\))17 b +Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(122)p +eop end +%%Page: 170 176 +TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(170)146 294 y Fs(P)150 414 y Fe +(possible-command-completions)32 b(\(C-x)26 b(!\))9 b +Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(125)150 502 y Fe +(possible-completions)30 b(\(M-?\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(124)150 +591 y Fe(possible-filename-completions)32 b(\(C-x)27 +b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 679 +y Fe(possible-hostname-completions)32 b(\(C-x)27 b(@\))7 +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 768 y Fe +(possible-username-completions)32 b(\(C-x)27 b(~\))7 +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 857 y Fe +(possible-variable-completions)32 b(\(C-x)27 b($\))7 +b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(125)150 945 y Fe(prefix-meta)28 +b(\(ESC\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 +b Fb(126)150 1034 y Fe(previous-history)d(\(C-p\))23 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)36 b Fb(120)150 1121 y Fe(print-last-kbd-macro)30 +b(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(126)146 1393 y Fs(Q)150 +1512 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 +b Fb(121)146 1785 y Fs(R)150 1905 y Fe(re-read-init-file)29 +b(\(C-x)e(C-r\))15 b Fc(:)f(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)30 b Fb(126)150 1993 y Fe(redraw-current-line)g(\(\))22 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)36 b Fb(119)150 2082 y Fe(reverse-search-history)31 +b(\(C-r\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)38 b Fb(120)150 2169 y Fe(revert-line)28 b(\(M-r\))17 +b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(126)146 +2431 y Fs(S)150 2552 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f +(...\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 +b Fb(122)150 2640 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15 +b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 +b Fb(126)150 2729 y Fe(shell-backward-kill-word)31 b(\(\))8 +b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +23 b Fb(123)150 2817 y Fe(shell-backward-word)30 b(\(\))22 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)36 b Fb(119)150 2906 y Fe(shell-expand-line)29 +b(\(M-C-e\))13 b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)28 b Fb(128)150 2994 y Fe(shell-forward-word)i(\(\)) +7 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(119)150 3083 y +Fe(shell-kill-word)29 b(\(\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 +b Fb(123)2025 264 y Fe(skip-csi-sequence)g(\(\))9 b Fc(:)14 +b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(127)2025 351 y Fe(start-kbd-macro)29 +b(\(C-x)d(\(\))8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(126)2021 +794 y Fs(T)2025 941 y Fe(tilde-expand)28 b(\(M-&\))14 +b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(126)2025 +1038 y Fe(transpose-chars)g(\(C-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 +b Fb(122)2025 1125 y Fe(transpose-words)29 b(\(M-t\))7 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(122)2021 1578 y Fs(U)2025 +1725 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 b Fc(:)k(:)f(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)25 b Fb(126)2025 1822 y Fe(universal-argument)k(\(\))7 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(124)2025 1920 y Fe +(unix-filename-rubout)30 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 +b Fb(123)2025 2017 y Fe(unix-line-discard)29 b(\(C-u\))20 +b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)34 b Fb(123)2025 2114 y Fe(unix-word-rubout)29 +b(\(C-w\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(123)2025 2201 +y Fe(upcase-word)28 b(\(M-u\))17 b Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)32 b Fb(122)2021 2654 y Fs(Y)2025 2801 y Fe(yank)26 +b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)33 b Fb(123)2025 2898 y Fe(yank-last-arg)28 +b(\(M-.)f(or)f(M-_\))8 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(121)2025 2996 +y Fe(yank-nth-arg)28 b(\(M-C-y\))9 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 +b Fb(121)2025 3083 y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 +b Fb(123)150 3832 y Fs(D.5)68 b(Concept)45 b(Index)146 +4425 y(A)150 4553 y Fb(alias)27 b(expansion)7 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 +b Fb(90)150 4644 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13 +b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(89)150 4735 y(arithmetic)26 +b(expansion)11 b Fc(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 +b Fb(29)150 4826 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(89)150 4914 +y(arra)n(ys)h Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(91)2021 +4425 y Fs(B)2025 4551 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(100)2025 +4641 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)26 b Fb(142)2025 4732 y(Bash)g(installation)9 +b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 +b Fb(142)2025 4822 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35 b +Fb(5)2025 4913 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(21)2025 5000 y(builtin)15 +b Fc(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(3)p eop end +%%Page: 171 177 +TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(171)146 294 y Fs(C)150 418 y Fb(command)26 +b(editing)19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34 +b Fb(105)150 507 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)26 b Fb(37)150 597 y(command)g(expansion)c +Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(36)150 +687 y(command)26 b(history)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)33 b Fb(137)150 777 y(command)26 b(searc)n(h)16 +b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 +b Fb(37)150 866 y(command)c(substitution)21 b Fc(:)13 +b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(29)150 956 y(command)26 +b(timing)13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)28 b Fb(8)150 1046 y(commands,)e(comp)r(ound)7 b Fc(:)14 +b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(9)150 1135 +y(commands,)k(conditional)10 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 +b Fb(10)150 1225 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)29 b Fb(14)150 1315 y(commands,)d(lists)12 +b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27 +b Fb(9)150 1405 y(commands,)f(lo)r(oping)e Fc(:)13 b(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)37 b Fb(10)150 1494 y(commands,)26 +b(pip)r(elines)18 b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33 +b Fb(8)150 1584 y(commands,)26 b(shell)c Fc(:)13 b(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(8)150 1674 y(commands,)26 +b(simple)e Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 +b Fb(8)150 1764 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)e(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(7)150 +1853 y(completion)f(builtins)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)36 b Fb(131)150 1943 y(con\014guration)22 b Fc(:)13 +b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 +b Fb(142)150 2033 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15 +b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 +b Fb(3)150 2120 y(copro)r(cess)18 b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32 b +Fb(15)146 2416 y Fs(D)150 2537 y Fb(directory)26 b(stac)n(k)11 +b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 +b Fb(93)146 2833 y Fs(E)150 2957 y Fb(editing)g(command)g(lines)17 +b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(105)150 3046 y(en)n(vironmen)n(t)18 +b Fc(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)32 b Fb(38)150 3136 y(ev)l(aluation,)26 b(arithmetic)12 +b Fc(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(89)150 3226 +y(ev)n(en)n(t)f(designators)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)34 b Fb(140)150 3316 y(execution)26 b(en)n(vironmen)n(t)17 +b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(37)150 3405 +y(exit)25 b(status)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(39)150 3495 y(expansion)9 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)24 b Fb(21)150 3585 y(expansion,)i(arithmetic)18 +b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(29)150 3674 +y(expansion,)26 b(brace)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)30 b Fb(21)150 3764 y(expansion,)c(\014lename)18 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(30)150 +3854 y(expansion,)26 b(parameter)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)34 b Fb(23)150 3944 y(expansion,)26 b(pathname)7 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(30)150 +4033 y(expansion,)k(tilde)14 b Fc(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)28 b Fb(22)150 4123 y(expressions,)f(arithmetic)13 +b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(89)150 4210 y(expressions,)g +(conditional)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(87)2021 +294 y Fs(F)2025 415 y Fb(\014eld)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)36 b Fb(3)2025 504 y(\014lename)21 b Fc(:)14 b(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 +b Fb(3)2025 593 y(\014lename)26 b(expansion)11 b Fc(:)i(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(30)2025 682 y(foreground)9 +b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)24 b Fb(100)2025 769 y(functions,)i(shell)9 b +Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24 +b Fb(17)2021 1048 y Fs(H)2025 1170 y Fb(history)h(builtins)20 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 +b Fb(137)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13 +b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 +b Fb(140)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(139)2025 1436 y(history)c(list)9 +b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)24 b Fb(137)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use) +19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(136)2021 +1803 y Fs(I)2025 1924 y Fb(iden)n(ti\014er)12 b Fc(:)g(:)h(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)27 +b Fb(3)2025 2013 y(initialization)h(\014le,)e(readline)17 +b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)32 b Fb(107)2025 2102 y(installation)21 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)34 b Fb(142)2025 2191 y(in)n(teraction,)26 b(readline)7 +b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(104)2025 +2280 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)34 b Fb(84,)27 b(85)2025 2367 y(in)n(ternationalization)22 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 +b Fb(7)2021 2637 y Fs(J)2025 2758 y Fb(job)23 b Fc(:)13 +b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(3)2025 2845 +y(job)26 b(con)n(trol)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(100)2021 3124 y Fs(K)2025 +3246 y Fb(kill)f(ring)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(106)2025 +3333 y(killing)k(text)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(106)2021 3612 +y Fs(L)2025 3733 y Fb(lo)r(calization)i Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 +b Fb(7)2025 3821 y(login)26 b(shell)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 +b Fb(84)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26 +b(pattern)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24 +b Fb(31)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(3)p +eop end +%%Page: 172 178 +TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(172)146 294 y Fs(N)150 410 y Fb(name)19 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(3)150 497 +y(nativ)n(e)25 b(languages)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)34 b Fb(7)150 584 y(notation,)27 +b(readline)13 b Fc(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 +b Fb(105)146 826 y Fs(O)150 942 y Fb(op)r(erator,)g(shell)c +Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +37 b Fb(3)146 1184 y Fs(P)150 1300 y Fb(parameter)26 +b(expansion)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 +b Fb(23)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(18)150 +1475 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)21 b Fb(19)150 1562 y(parameters,)27 b(sp)r(ecial)7 +b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)21 +b Fb(20)150 1649 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)32 b Fb(30)150 1736 y(pattern)25 b(matc)n(hing)c +Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 +b Fb(31)150 1824 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 +b Fb(8)150 1911 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 +b Fb(3)150 1998 y(POSIX)25 b(Mo)r(de)17 b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(96)150 +2085 y(pro)r(cess)c(group)15 b Fc(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2172 y(pro)r(cess)d +(group)e(ID)11 b Fc(:)i(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)26 b Fb(3)150 2259 y(pro)r(cess)h(substitution)11 +b Fc(:)h(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fb(30)150 +2347 y(programmable)i(completion)8 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 +b Fb(129)150 2434 y(prompting)17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(94)146 +2676 y Fs(Q)150 2792 y Fb(quoting)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)31 +b Fb(6)150 2879 y(quoting,)26 b(ANSI)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(6)146 +3121 y Fs(R)150 3237 y Fb(Readline,)26 b(ho)n(w)g(to)g(use)11 +b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(103)150 3325 +y(redirection)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(32)150 3412 y(reserv)n(ed)f(w)n +(ord)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)28 b Fb(3)150 3499 y(restricted)e(shell)14 +b Fc(:)g(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)29 +b Fb(95)150 3586 y(return)c(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(4)2021 +294 y Fs(S)2025 427 y Fb(shell)h(arithmetic)17 b Fc(:)d(:)f(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(89)2025 520 +y(shell)26 b(function)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fb(17)2025 613 y(shell)26 +b(script)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(40)2025 706 y(shell)h(v)l(ariable)7 +b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)22 b Fb(18)2025 799 y(shell,)k(in)n(teractiv)n(e)21 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 +b Fb(85)2025 892 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 +b Fb(4)2025 984 y(signal)f(handling)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(39)2025 1077 +y(sp)r(ecial)27 b(builtin)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(70)2025 1170 y(startup)f(\014les)10 +b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)25 b Fb(84)2025 1257 y(susp)r(ending)g(jobs)10 +b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 +b Fb(100)2021 1619 y Fs(T)2025 1752 y Fb(tilde)h(expansion)7 +b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 +b Fb(22)2025 1845 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 +b Fb(4)2025 1932 y(translation,)27 b(nativ)n(e)e(languages)c +Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)34 b Fb(7)2021 2294 y Fs(V)2025 2427 y +Fb(v)l(ariable,)26 b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(18)2025 2515 y(v)l(ariables,)f +(readline)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22 +b Fb(108)2021 2876 y Fs(W)2025 3010 y Fb(w)n(ord)10 b +Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(4)2025 3097 +y(w)n(ord)h(splitting)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(30)2021 3458 y Fs(Y)2025 +3586 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(106)p eop end %%Trailer userdict /end-hook known{end-hook}if diff --git a/doc/bashref.texi b/doc/bashref.texi index eca3c26..c0f4a2f 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -14,7 +14,7 @@ This is Edition @value{EDITION}, last updated @value{UPDATED}, of @cite{The GNU Bash Reference Manual}, for @code{Bash}, Version @value{VERSION}. -Copyright @copyright{} 1988--2014 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2016 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -212,7 +212,7 @@ than by an executable program somewhere in the file system. @cindex control operator A @code{token} that performs a control function. It is a @code{newline} or one of the following: -@samp{||}, @samp{&&}, @samp{&}, @samp{;}, @samp{;;}, +@samp{||}, @samp{&&}, @samp{&}, @samp{;}, @samp{;;}, @samp{;&}, @samp{;;&}, @samp{|}, @samp{|&}, @samp{(}, or @samp{)}. @item exit status @@ -243,7 +243,7 @@ A mechanism by which users can selectively stop (suspend) and restart @item metacharacter @cindex metacharacter A character that, when unquoted, separates words. A metacharacter is -a @code{blank} or one of the following characters: +a @code{space}, @code{tab}, @code{newline}, or one of the following characters: @samp{|}, @samp{&}, @samp{;}, @samp{(}, @samp{)}, @samp{<}, or @samp{>}. @@ -450,6 +450,10 @@ Enclosing characters in double quotes (@samp{"}) preserves the literal value of all characters within the quotes, with the exception of @samp{$}, @samp{`}, @samp{\}, and, when history expansion is enabled, @samp{!}. +When the shell is in +@sc{posix} mode (@pxref{Bash POSIX Mode}), +the @samp{!} has no special meaning +within double quotes, even when history expansion is enabled. The characters @samp{$} and @samp{`} retain their special meaning within double quotes (@pxref{Shell Expansions}). The backslash retains its special meaning only when followed by one of @@ -500,6 +504,8 @@ backslash single quote @item \" double quote +@item \? +question mark @item \@var{nnn} the eight-bit character whose value is the octal value @var{nnn} (one to three digits) @@ -603,8 +609,8 @@ the command was terminated by signal @var{n}. @cindex pipeline @cindex commands, pipelines -A @code{pipeline} is a sequence of simple commands separated by one of -the control operators @samp{|} or @samp{|&}. +A @code{pipeline} is a sequence of one or more commands separated by +one of the control operators @samp{|} or @samp{|&}. @rwindex time @rwindex ! @@ -868,7 +874,7 @@ case @var{word} in [ [(] @var{pattern} [| @var{pattern}]@dots{}) @var{command-li @code{case} will selectively execute the @var{command-list} corresponding to the first @var{pattern} that matches @var{word}. -If the shell option @code{nocasematch} +If the @code{nocasematch} shell option (see the description of @code{shopt} in @ref{The Shopt Builtin}) is enabled, the match is performed without regard to the case of alphabetic characters. @@ -999,7 +1005,7 @@ right of the operator is considered a pattern and matched according to the rules described below in @ref{Pattern Matching}, as if the @code{extglob} shell option were enabled. The @samp{=} operator is identical to @samp{==}. -If the shell option @code{nocasematch} +If the @code{nocasematch} shell option (see the description of @code{shopt} in @ref{The Shopt Builtin}) is enabled, the match is performed without regard to the case of alphabetic characters. @@ -1011,12 +1017,12 @@ to be matched as a string. An additional binary operator, @samp{=~}, is available, with the same precedence as @samp{==} and @samp{!=}. When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in @i{regex}3)). +an extended regular expression and matched accordingly (as in @i{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 @code{nocasematch} +If the @code{nocasematch} shell option (see the description of @code{shopt} in @ref{The Shopt Builtin}) is enabled, the match is performed without regard to the case of alphabetic characters. @@ -1346,7 +1352,9 @@ word is supplied, the parentheses are optional. The @var{body} of the function is the compound command @var{compound-command} (@pxref{Compound Commands}). That command is usually a @var{list} enclosed between @{ and @}, but -may be any compound command listed above. +may be any compound command listed above, +with one exception: If the @code{function} reserved word is used, but the +parentheses are not supplied, the braces are required. @var{compound-command} is executed whenever @var{name} is specified as the name of a command. When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}), @@ -1481,7 +1489,7 @@ Filename expansion is not performed. Assignment statements may also appear as arguments to the @code{alias}, @code{declare}, @code{typeset}, @code{export}, @code{readonly}, -and @code{local} builtin commands. +and @code{local} builtin commands (@var{declaration} commands). When in @sc{posix} mode (@pxref{Bash POSIX Mode}), these builtins may appear in a command after one or more instances of the @code{command} builtin and retain these assignment statement properties. @@ -1490,6 +1498,8 @@ In the context where an assignment statement is assigning a value to a shell variable or array index (@pxref{Arrays}), the @samp{+=} operator can be used to append to or add to the variable's previous value. +This includes arguments to builtin commands such as @code{declare} that +accept assignment statements (@var{declaration} commands). When @samp{+=} is applied to a variable for which the @var{integer} attribute has been set, @var{value} is evaluated as an arithmetic expression and added to the variable's current value, which is also evaluated. @@ -1503,13 +1513,15 @@ When applied to a string-valued variable, @var{value} is expanded and appended to the variable's value. A variable can be assigned the @var{nameref} attribute using the -@option{-n} option to the \fBdeclare\fP or \fBlocal\fP builtin commands +@option{-n} option to the @code{declare} or @code{local} builtin commands (@pxref{Bash Builtins}) to create a @var{nameref}, or a reference to another variable. 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. +Whenever the nameref variable is referenced, assigned to, unset, or has +its attributes modified (other than using or changing the nameref +attribute itself), the +operation is actually performed on the variable specified by the nameref +variable's value. A nameref is commonly used within shell functions to refer to a variable whose name is passed as an argument to the function. For instance, if a variable name is passed to a shell function as its first @@ -1520,14 +1532,15 @@ declare -n ref=$1 @noindent inside the function creates a nameref variable @var{ref} whose value is the variable name passed as the first argument. -References and assignments to @var{ref} are treated as references and -assignments to the variable whose name was passed as @code{$1}. +References and assignments to @var{ref}, and changes to its attributes, +are treated as references, assignments, and attribute modifications +to the variable whose name was passed as @code{$1}. If the control variable in a @code{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 @option{-n} attribute. +Array variables cannot be given the nameref attribute. However, nameref variables can reference array variables and subscripted array variables. Namerefs can be unset using the @option{-n} option to the @code{unset} builtin @@ -1572,9 +1585,8 @@ expands to a separate word. In contexts where it is performed, those words are subject to further word splitting and pathname expansion. When the expansion occurs within double quotes, it expands to a single word -with the value of each parameter separated by the first character -of the @env{IFS} -special variable. That is, @code{"$*"} is equivalent +with the value of each parameter separated by the first character of the +@env{IFS} special variable. That is, @code{"$*"} is equivalent to @code{"$1@var{c}$2@var{c}@dots{}"}, where @var{c} is the first character of the value of the @code{IFS} variable. @@ -1691,6 +1703,10 @@ This is performed at the same time as tilde, parameter, variable, and arithmetic expansion and command substitution. +After these expansions are performed, quote characters present in the +original word are removed unless they have been quoted themselves +(@var{quote removal}). + 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. @@ -1870,12 +1886,16 @@ or when @var{parameter} is followed by a character that is not to be interpreted as part of its name. If the first character of @var{parameter} is an exclamation point (!), +and @var{parameter} is not a @var{nameref}, it introduces a level of variable indirection. Bash uses the value of the variable formed from the rest of @var{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 @var{parameter} itself. This is known as @code{indirect expansion}. +If @var{parameter} is a nameref, this expands to the name of the +variable referenced by @var{parameter} instead of performing the +complete indirect expansion. The exceptions to this are the expansions of $@{!@var{prefix}*@} and $@{!@var{name}[@@]@} described below. @@ -2144,6 +2164,10 @@ If @var{pattern} begins with @samp{%}, it must match at the end of the expanded value of @var{parameter}. If @var{string} is null, matches of @var{pattern} are deleted and the @code{/} following @var{pattern} may be omitted. +If the @code{nocasematch} shell option +(see the description of @code{shopt} in @ref{The Shopt Builtin}) +is enabled, the match is performed without regard to the case +of alphabetic characters. If @var{parameter} is @samp{@@} or @samp{*}, the substitution operation is applied to each positional parameter in turn, and the expansion is the resultant list. @@ -2177,6 +2201,41 @@ If @var{parameter} is an array variable subscripted with @samp{@@} or @samp{*}, the case modification operation is applied to each member of the array in turn, and the expansion is the resultant list. + +@item $@{@var{parameter}@@@var{operator}@} +The expansion is either a transformation of the value of @var{parameter} +or information about @var{parameter} itself, depending on the value of +@var{operator}. Each @var{operator} is a single letter: + +@table @code +@item Q +The expansion is a string that is the value of @var{parameter} quoted in a +format that can be reused as input. +@item E +The expansion is a string that is the value of @var{parameter} with backslash +escape sequences expanded as with the @code{$'@dots{}'} quoting mechansim. +@item P +The expansion is a string that is the result of expanding the value of +@var{parameter} as if it were a prompt string (@pxref{Controlling the Prompt}). +@item A +The expansion is a string in the form of +an assignment statement or @code{declare} command that, if +evaluated, will recreate @var{parameter} with its attributes and value. +@item a +The expansion is a string consisting of flag values representing +@var{parameter}'s attributes. +@end table + +If @var{parameter} is @samp{@@} or @samp{*}, +the operation is applied to each positional +parameter in turn, and the expansion is the resultant list. +If @var{parameter} +is an array variable subscripted with @samp{@@} or @samp{*}, +the operation is applied to each member of the +array in turn, and the expansion is the resultant list. + +The result of the expansion is subject to word splitting and pathname +expansion as described below. @end table @node Command Substitution @@ -2196,8 +2255,8 @@ or @end example @noindent -Bash performs the expansion by executing @var{command} and -replacing the command substitution with the standard output of the +Bash performs the expansion by executing @var{command} in a subshell environment +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. @@ -2246,8 +2305,8 @@ failure to the standard error and no substitution occurs. @subsection Process Substitution @cindex process substitution -Process substitution is supported on systems that support named -pipes (@sc{fifo}s) or the @file{/dev/fd} method of naming open files. +Process substitution allows a process's input or output to be +referred to using a filename. It takes the form of @example <(@var{list}) @@ -2258,16 +2317,20 @@ or >(@var{list}) @end example @noindent -The process @var{list} is run with its input or output connected to a -@sc{fifo} or some file in @file{/dev/fd}. The name of this file is +The process @var{list} is run asynchronously, and its input or output +appears as a filename. +This filename is passed as an argument to the current command as the result of the -expansion. If the @code{>(@var{list})} form is used, writing to +expansion. +If the @code{>(@var{list})} form is used, writing to the file will provide input for @var{list}. If the @code{<(@var{list})} form is used, the file passed as an argument should be read to obtain the output of @var{list}. Note that no space may appear between the @code{<} or @code{>} and the left parenthesis, otherwise the construct would be interpreted as a redirection. +Process substitution is supported on systems that support named +pipes (@sc{fifo}s) or the @file{/dev/fd} method of naming open files. When available, process substitution is performed simultaneously with parameter and variable expansion, command substitution, and arithmetic @@ -2291,7 +2354,7 @@ at the beginning and end of the results of the previous expansions are ignored, and any sequence of @env{IFS} characters not at the beginning or end serves to delimit words. If @env{IFS} has a value other than the default, then sequences of -the whitespace characters @code{space} and @code{tab} +the whitespace characters @code{space}, @code{tab}, and @code{newline} are ignored at the beginning and end of the word, as long as the whitespace character is in the value of @env{IFS} (an @env{IFS} whitespace character). @@ -2301,11 +2364,18 @@ whitespace characters, delimits a field. A sequence of @env{IFS} whitespace characters is also treated as a delimiter. If the value of @env{IFS} is null, no word splitting occurs. -Explicit null arguments (@code{""} or @code{''}) are retained. +Explicit null arguments (@code{""} or @code{''}) are retained +and passed to commands as empty strings. Unquoted implicit null arguments, resulting from the expansion of parameters that have no values, are removed. If a parameter with no value is expanded within double quotes, a -null argument results and is retained. +null argument results and is retained +and passed to a command as an empty string. +When a quoted null argument appears as part of a word whose expansion is +non-null, the null argument is removed. +That is, the word +@code{-d''} becomes @code{-d} after word splitting and +null argument removal. Note that if no expansion occurs, no splitting is performed. @@ -2352,7 +2422,10 @@ The @env{GLOBIGNORE} shell variable may be used to restrict the set of filenames matching a pattern. If @env{GLOBIGNORE} is set, each matching filename that also matches one of the patterns in -@env{GLOBIGNORE} is removed from the list of matches. The filenames +@env{GLOBIGNORE} is removed from the list of matches. +If the @code{nocaseglob} option is set, the matching against the patterns in +@env{GLOBIGNORE} is performed without regard to case. +The filenames @file{.} and @file{..} are always ignored when @env{GLOBIGNORE} is set and not null. @@ -2523,7 +2596,10 @@ because the standard error was made a copy of the standard output before the standard output was redirected to @var{dirlist}. Bash handles several filenames specially when they are used in -redirections, as described in the following table: +redirections, as described in the following table. +If the operating system on which Bash is running provides these +special files, bash will use them; otherwise it will emulate them +internally with the behavior described below. @table @code @item /dev/fd/@var{fd} @@ -2651,18 +2727,18 @@ This type of redirection instructs the shell to read input from the current source until a line containing only @var{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. +input (or file descriptor @var{n} if @var{n} is specified) for a command. The format of here-documents is: @example -<<[@minus{}]@var{word} +[@var{n}]<<[@minus{}]@var{word} @var{here-document} @var{delimiter} @end example No parameter and variable expansion, command substitution, arithmetic expansion, or filename expansion is performed on -@var{word}. If any characters in @var{word} are quoted, the +@var{word}. If any part of @var{word} is quoted, the @var{delimiter} is the result of quote removal on @var{word}, and the lines in the here-document are not expanded. If @var{word} is unquoted, @@ -2681,15 +2757,17 @@ natural fashion. @subsection Here Strings A variant of here documents, the format is: @example -<<< @var{word} +[@var{n}]<<< @var{word} @end example The @var{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. +The result is supplied as a single string, +with a newline appended, +to the command on its +standard input (or file descriptor @var{n} if @var{n} is specified). @subsection Duplicating File Descriptors The redirection operator @@ -2945,7 +3023,7 @@ shell's parent, and traps ignored by the shell are ignored @end itemize A command invoked in this separate environment cannot affect the -shell's execution environment. +shell's execution environment. Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a @@ -3038,7 +3116,8 @@ constructs (@pxref{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. +All builtins return an exit status of 2 to indicate incorrect usage, +generally invalid options or missing arguments. @node Signals @subsection Signals @@ -3079,7 +3158,7 @@ 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. +the command completes. When Bash is waiting for an asynchronous command via the @code{wait} builtin, the reception of a signal for which a trap has been set will cause the @code{wait} builtin to return @@ -3171,7 +3250,7 @@ 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 +Several builtin commands are described in other chapters: builtin commands which provide the Bash interface to the job control facilities (@pxref{Job Control Builtins}), the directory stack (@pxref{Directory Stack Builtins}), the command history @@ -3185,7 +3264,8 @@ options preceded by @samp{-} accepts @samp{--} to signify the end of the options. The @code{:}, @code{true}, @code{false}, and @code{test} builtins do not accept options and do not treat @samp{--} specially. -The @code{exit}, @code{logout}, @code{break}, @code{continue}, @code{let}, +The @code{exit}, @code{logout}, @code{return}, +@code{break}, @code{continue}, @code{let}, and @code{shift} builtins accept and process arguments beginning with @samp{-} without requiring @samp{--}. Other builtins that accept arguments but are not specified as accepting @@ -3222,6 +3302,12 @@ if @var{filename} is not found in @env{$PATH}. If any @var{arguments} are supplied, they become the positional parameters when @var{filename} is executed. Otherwise the positional parameters are unchanged. +If the @option{-T} option is enabled, @code{source} inherits any trap on +@code{DEBUG}; if it is not, any @code{DEBUG} trap string is saved and +restored around the call to @code{source}, and @code{source} unsets the +@code{DEBUG} trap while it executes. +If @option{-T} is not set, and the sourced file changes +the @code{DEBUG} trap, the new value is retained when @code{source} completes. The return status is the exit status of the last command executed, or zero if no commands are executed. If @var{filename} is not found, or cannot be read, the return status is non-zero. @@ -3499,6 +3585,11 @@ Cause a shell function to stop executing and return the value @var{n} to its caller. If @var{n} is not supplied, the return value is the exit status of the last command executed in the function. +If @code{return} is executed by a trap handler, the last command used to +determine the status is the last command executed before the trap handler. +if @code{return} is executed during a @code{DEBUG} trap, the last command +used to determine the status is the last command executed by the trap +handler before @code{return} was invoked. @code{return} may also be used to terminate execution of a script being executed with the @code{.} (@code{source}) builtin, returning either @var{n} or @@ -3538,8 +3629,7 @@ less than zero, non-zero otherwise. test @var{expr} @end example -Evaluate a conditional express -ion @var{expr} and return a status of 0 +Evaluate a conditional expression @var{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 @@ -3607,7 +3697,7 @@ Otherwise, the expression is false. @item 4 arguments If the first argument is @samp{!}, the result is the negation of the three-argument expression composed of the remaining arguments. -Otherwise, the expression is parsed and evaluated according to +Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above. @item 5 or more arguments @@ -3667,7 +3757,7 @@ each time a shell function or a script executed with the @code{.} or If a @var{sigspec} is @code{ERR}, the command @var{arg} is executed whenever a pipeline (which may consist of a single simple -command), a list, or a compound command returns a +command), a list, or a compound command returns a non-zero exit status, subject to the following conditions. The @code{ERR} trap is not executed if the failed command is part of the @@ -3718,7 +3808,7 @@ unset [-fnv] [@var{name}] Remove each variable or function @var{name}. If the @option{-v} option is given, each -@var{name} refers to a shell variable and that variable is remvoved. +@var{name} refers to a shell variable and that variable is removed. If the @option{-f} option is given, the @var{name}s refer to shell functions, and the function definition is removed. If the @option{-n} option is supplied, and @var{name} is a variable with @@ -3763,7 +3853,7 @@ bind [-m @var{keymap}] [-q @var{function}] [-u @var{function}] [-r @var{keyseq}] bind [-m @var{keymap}] -f @var{filename} bind [-m @var{keymap}] -x @var{keyseq:shell-command} bind [-m @var{keymap}] @var{keyseq:function-name} -bind @var{readline-command} +bind [-m @var{keymap}] @var{keyseq:readline-command} @end example Display current Readline (@pxref{Command Line Editing}) @@ -3790,8 +3880,8 @@ names are @code{vi-move}, @code{vi-command}, and @code{vi-insert}. -@code{vi} is equivalent to @code{vi-command}; -@code{emacs} is equivalent to @code{emacs-standard}. +@code{vi} is equivalent to @code{vi-command} (@code{vi-move} is also a +synonym); @code{emacs} is equivalent to @code{emacs-standard}. @item -l List the names of all Readline functions. @@ -3874,7 +3964,7 @@ a script executed with the @code{.} or @code{source} builtins). Without @var{expr}, @code{caller} displays the line number and source filename of the current subroutine call. -If a non-negative integer is supplied as @var{expr}, @code{caller} +If a non-negative integer is supplied as @var{expr}, @code{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 @@ -3935,7 +4025,7 @@ The @option{-F} option inhibits the display of function definitions; only the function name and attributes are printed. If the @code{extdebug} shell option is enabled using @code{shopt} (@pxref{The Shopt Builtin}), the source file name and line number where -the function is defined are displayed as well. +each @var{name} is defined are displayed as well. @option{-F} implies @option{-f}. The @option{-g} option forces variables to be created or modified at @@ -3969,10 +4059,11 @@ The upper-case attribute is disabled. Give each @var{name} the @var{nameref} attribute, making it a name reference to another variable. That other variable is defined by the value of @var{name}. -All references and assignments to @var{name}, except for changing the +All references, assignments, and attribute modifications +to @var{name}, except for those using or changing the @option{-n} attribute itself, are performed on the variable referenced by @var{name}'s value. -The @option{-n} attribute cannot be applied to array variables. +The nameref attribute cannot be applied to array variables. @item -r Make @var{name}s readonly. These names cannot then be assigned values @@ -4153,7 +4244,12 @@ and assigned @var{value}. The @var{option} can be any of the options accepted by @code{declare}. @code{local} can only be used within a function; it makes the variable @var{name} have a visible scope restricted to that function and its -children. The return status is zero unless @code{local} is used outside +children. +If @var{name} is @samp{-}, the set of shell options is made local to the +function in which @code{local} is invoked: shell options changed using +the @code{set} builtin inside the function are restored to their original +values when the function returns. +The return status is zero unless @code{local} is used outside a function, an invalid @var{name} is supplied, or @var{name} is a readonly variable. @@ -4169,7 +4265,7 @@ parent. @item mapfile @btindex mapfile @example -mapfile [-n @var{count}] [-O @var{origin}] [-s @var{count}] [-t] [-u @var{fd}] +mapfile [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}] [-t] [-u @var{fd}] [-C @var{callback}] [-c @var{quantum}] [@var{array}] @end example @@ -4181,6 +4277,9 @@ Options, if supplied, have the following meanings: @table @code +@item -d +The first character of @var{delim} is used to terminate each input line, +rather than newline. @item -n Copy at most @var{count} lines. If @var{count} is 0, all lines are copied. @item -O @@ -4189,7 +4288,7 @@ The default index is 0. @item -s Discard the first @var{count} lines read. @item -t -Remove a trailing newline from each line read. +Remove a trailing @var{delim} (default newline) from each line read. @item -u Read lines from file descriptor @var{fd} instead of the standard input. @item -C @@ -4199,12 +4298,12 @@ The @option{-c} option specifies @var{quantum}. Specify the number of lines read between each call to @var{callback}. @end table -If @option{-C} is specified without @option{-c}, +If @option{-C} is specified without @option{-c}, the default quantum is 5000. When @var{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. -@var{callback} is evaluated after the line is read but before the +@var{callback} is evaluated after the line is read but before the array element is assigned. If not supplied with an explicit origin, @code{mapfile} will clear @var{array} @@ -4236,10 +4335,8 @@ interprets the following extensions: @table @code @item %b Causes @code{printf} to expand backslash escape sequences in the -corresponding @var{argument}, -except that @samp{\c} terminates output, backslashes in -@samp{\'}, @samp{\"}, and @samp{\?} are not removed, and octal escapes -beginning with @samp{\0} may contain up to four digits. +corresponding @var{argument} in the same way as @code{echo -e} +(@pxref{Bash Builtins}). @item %q Causes @code{printf} to output the corresponding @var{argument} in a format that can be reused as shell input. @@ -4274,9 +4371,13 @@ read [-ers] [-a @var{aname}] [-d @var{delim}] [-i @var{text}] [-n @var{nchars}] @end example One line is read from the standard input, or from the file descriptor -@var{fd} supplied as an argument to the @option{-u} option, and the first word +@var{fd} supplied as an argument to the @option{-u} option, +split into words as described above in @ref{Word Splitting}, +and the first word is assigned to the first @var{name}, the second word to the second @var{name}, -and so on, with leftover words and their intervening separators assigned +and so on. +If there are more words than names, +the remaining words and their intervening delimiters are assigned to the last @var{name}. If there are fewer words read from the input stream than names, the remaining names are assigned empty values. @@ -4287,8 +4388,8 @@ The backslash character @samp{\} 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 @env{REPLY}. -The return code is zero, unless end-of-file is encountered, @code{read} -times out (in which case the return code is greater than 128), +The exit status is zero, unless end-of-file is encountered, @code{read} +times out (in which case the status 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 @option{-u}. @@ -4316,7 +4417,7 @@ the editing buffer before editing begins. @item -n @var{nchars} @code{read} returns after reading @var{nchars} characters rather than -waiting for a complete line of input, but honor a delimiter if fewer +waiting for a complete line of input, but honors a delimiter if fewer than @var{nchars} characters are read before the delimiter. @item -N @var{nchars} @@ -4326,6 +4427,9 @@ than waiting for a complete line of input, unless EOF is encountered or Delimiter characters encountered in the input are not treated specially and do not cause @code{read} to return until @var{nchars} characters are read. +The result is not split on the characters in @code{IFS}; the intent is +that the variable is assigned exactly the characters read +(with the exception of backslash; see the @option{-r} option below). @item -p @var{prompt} Display @var{prompt}, without a trailing newline, before attempting @@ -4365,7 +4469,7 @@ Read input from file descriptor @var{fd}. @item readarray @btindex readarray @example -readarray [-n @var{count}] [-O @var{origin}] [-s @var{count}] [-t] [-u @var{fd}] +readarray [-d @var{delim}] [-n @var{count}] [-O @var{origin}] [-s @var{count}] [-t] [-u @var{fd}] [-C @var{callback}] [-c @var{quantum}] [@var{array}] @end example @@ -4434,7 +4538,7 @@ It is a synonym for the @code{declare} builtin command. @item ulimit @btindex ulimit @example -ulimit [-abcdefilmnpqrstuvxHST] [@var{limit}] +ulimit [-HSabcdefiklmnpqrstuvxPT] [@var{limit}] @end example @code{ulimit} provides control over the resources available to processes @@ -4469,6 +4573,9 @@ The maximum size of files written by the shell and its children. @item -i The maximum number of pending signals. +@item -k +The maximum number of kqueues that may be allocated. + @item -l The maximum size that may be locked into memory. @@ -4504,6 +4611,9 @@ some systems, to its children. @item -x The maximum number of file locks. +@item -P +The maximum number of pseudoterminals. + @item -T The maximum number of threads. @end table @@ -4521,8 +4631,14 @@ When setting new limits, if neither @option{-H} nor @option{-S} is supplied, both the hard and soft limits are set. If no option is given, then @option{-f} is assumed. Values are in 1024-byte increments, except for @option{-t}, which is in seconds; @option{-p}, -which is in units of 512-byte blocks; and @option{-T}, @option{-b}, -@option{-n} and @option{-u}, which are unscaled values. +which is in units of 512-byte blocks; +@option{-P}, +@option{-T}, +@option{-b}, +@option{-k}, +@option{-n} and @option{-u}, which are unscaled values; +and, when in @sc{posix} Mode (@pxref{Bash POSIX Mode}), +@option{-c} and @option{-f}, which are in 512-byte increments. The return status is zero unless an invalid option or argument is supplied, or an error occurs while setting a new limit. @@ -4574,8 +4690,9 @@ Options, if specified, have the following meanings: @table @code @item -a -Mark variables and function which are modified or created for export -to the environment of subsequent commands. +Each variable or function that is created or modified is given the +export attribute and marked for export to the environment of +subsequent commands. @item -b Cause the status of terminated background jobs to be reported @@ -4633,8 +4750,8 @@ When a background job completes, the shell prints a line containing its exit status. @item -n -Read commands but do not execute them; this may be used to check a -script for syntax errors. +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. @item -o @var{option-name} @@ -4951,7 +5068,10 @@ bash-4.1 and later use the current locale's collation sequence and strcoll(3). If set, Bash changes its behavior to that of version 3.2 with respect to locale-specific string comparison when using the @code{[[} -conditional command's @samp{<} and @samp{>} operators (see previous item). +conditional command's @samp{<} and @samp{>} operators (see previous item) +and the effect of interrupting a command list. +Bash versions 3.2 and earlier continue with the next command in the list +after one terminates due to an interrupt. @item compat40 If set, Bash @@ -4975,6 +5095,17 @@ If set, Bash does not process the replacement string in the pattern substitution word expansion using quote removal. +@item compat43 +If set, Bash +does not print a warning message if an attempt is made to use a quoted compound +array assignment as an argument to @code{declare}, +makes word expansion errors +non-fatal errors that cause the current command to fail (the default behavior is +to make them fatal errors that cause the shell to exit), +and does not reset the +loop state when a shell function is executed (this allows @code{break} or +@code{continue} in a shell function to affect loops in the caller's context). + @item complete_fullquote If set, Bash quotes all shell metacharacters in filenames and directory names when @@ -5020,7 +5151,9 @@ If set, aliases are expanded as described below under Aliases, This option is enabled by default for interactive shells. @item extdebug -If set, behavior intended for use by debuggers is enabled: +If set at shell invocation, arrange to execute the debugger profile +before the shell starts, identical to the @option{--debugger} option. +If set after invocation, behavior intended for use by debuggers is enabled: @enumerate @item @@ -5035,20 +5168,20 @@ next command is skipped and not executed. @item If the command run by the @code{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 @code{.} or @code{source} builtins), a call to -@code{return} is simulated. +executed by the @code{.} or @code{source} builtins), the shell simulates +a call to @code{return}. @item @code{BASH_ARGC} and @code{BASH_ARGV} are updated as described in their descriptions (@pxref{Bash Variables}). @item -Function tracing is enabled: command substitution, shell functions, and +Function tracing is enabled: command substitution, shell functions, and subshells invoked with @code{( @var{command} )} inherit the @code{DEBUG} and @code{RETURN} traps. @item -Error tracing is enabled: command substitution, shell functions, and +Error tracing is enabled: command substitution, shell functions, and subshells invoked with @code{( @var{command} )} inherit the @code{ERR} trap. @end enumerate @@ -5118,6 +5251,11 @@ by default. If set, Bash will send @code{SIGHUP} to all jobs when an interactive login shell exits (@pxref{Signals}). +@item inherit_errexit +If set, command substitution inherits the value of the @code{errexit} option, +instead of unsetting it in the subshell environment. +This option is enabled when @sc{posix} mode is enabled. + @item interactive_comments Allow a word beginning with @samp{#} to cause that word and all remaining characters on that @@ -5139,7 +5277,7 @@ The shell sets this option if it is started as a login shell The value may not be changed. @item mailwarn -If set, and a file that Bash is checking for mail has been +If set, and a file that Bash is checking for mail has been accessed since the last time it was checked, the message @code{"The mail in @var{mailfile} has been read"} is displayed. @@ -5155,7 +5293,9 @@ performing filename expansion. @item nocasematch If set, Bash matches patterns in a case-insensitive fashion when performing matching while executing @code{case} or @code{[[} -conditional commands. +conditional commands, +when performing pattern substitution word expansions, +or when filtering possible completions as part of programmable completion. @item nullglob If set, Bash allows filename patterns which match no @@ -5297,7 +5437,6 @@ current directory. A null directory name may appear as two adjacent colons, or as an initial or trailing colon. - @item PS1 The primary prompt string. The default value is @samp{\s-\v\$ }. @xref{Controlling the Prompt}, for the complete list of escape @@ -5342,8 +5481,12 @@ that do not require Bash to be re-initialized. An associative array variable whose members correspond to the internal list of aliases as maintained by the @code{alias} builtin. (@pxref{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. +Elements added to this array appear in the alias list; however, +unsetting array elements currently does not cause aliases to be removed +from the alias list. +If @code{BASH_ALIASES} +is unset, it loses its special properties, even if it is +subsequently reset. @item BASH_ARGC An array variable whose values are the number of parameters in each @@ -5372,8 +5515,12 @@ builtin). An associative array variable whose members correspond to the internal hash table of commands as maintained by the @code{hash} builtin (@pxref{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. +Elements added to this array appear in the hash table; however, +unsetting array elements currently does not cause command names to be removed +from the hash table. +If @code{BASH_CMDS} +is unset, it loses its special properties, even if it is +subsequently reset. @item BASH_COMMAND The command currently being executed or about to be executed, unless the @@ -5413,6 +5560,11 @@ where each corresponding member of @var{FUNCNAME} was invoked. referenced within another shell function). Use @code{LINENO} to obtain the current line number. +@item BASH_LOADABLES_PATH +A colon-separated list of directories in which the shell looks for +dynamically loadable builtins specified by the +@code{enable} command. + @item BASH_REMATCH An array variable whose members are assigned by the @samp{=~} binary operator to the @code{[[} conditional command @@ -5578,6 +5730,21 @@ Similar to @code{BASH_ENV}; used when the shell is invoked in The numeric effective user id of the current user. This variable is readonly. +@item EXECIGNORE +A colon-separated list of shell patterns (@pxref{Pattern Matching}) +defining the list of filenames to be ignored by command search using +@code{PATH}. +Files whose full pathnames match one of these patterns are not considered +executable files for the purposes of completion and command execution +via @code{PATH} lookup. +This does not affect the behavior of the @code{[}, @code{test}, and @code{[[} +commands. +Full pathnames in the command hash table are not subject to @code{EXECIGNORE}. +Use this variable to ignore shared library files that have the executable +bit set, but are not executable files. +The pattern matching honors the setting of the @code{extglob} shell +option. + @item FCEDIT The editor used as a default by the @option{-e} option to the @code{fc} builtin command. @@ -5598,7 +5765,7 @@ shell function. The bottom-most element (the one with the highest index) is @code{"main"}. This variable exists only when a shell function is executing. -Assignments to @env{FUNCNAME} have no effect and return an error status. +Assignments to @env{FUNCNAME} have no effect. If @env{FUNCNAME} is unset, it loses its special properties, even if it is subsequently reset. @@ -5621,11 +5788,13 @@ be ignored by filename expansion. If a filename matched by a filename expansion pattern also matches one of the patterns in @env{GLOBIGNORE}, it is removed from the list of matches. +The pattern matching honors the setting of the @code{extglob} shell +option. @item GROUPS An array variable containing the list of groups of which the current user is a member. -Assignments to @env{GROUPS} have no effect and return an error status. +Assignments to @env{GROUPS} have no effect. If @env{GROUPS} is unset, it loses its special properties, even if it is subsequently reset. @@ -5697,6 +5866,8 @@ 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 @env{HISTIGNORE}. +The pattern matching honors the setting of the @code{extglob} shell +option. @env{HISTIGNORE} subsumes the function of @env{HISTCONTROL}. A pattern of @samp{&} is identical to @code{ignoredups}, and a @@ -5780,6 +5951,10 @@ strings preceded by a @samp{$} (@pxref{Locale Translation}). @item LC_NUMERIC This variable determines the locale category used for number formatting. +@item LC_TIME +This variable determines the locale category used for data and time +formatting. + @item LINENO The line number in the script or shell function currently executing. @@ -5848,6 +6023,11 @@ trailing directory components to retain when expanding the @code{\w} and @code{\W} prompt string escapes (@pxref{Controlling the Prompt}). Characters removed are replaced with an ellipsis. +@item PS0 +The value of this parameter is expanded like @var{PS1} +and displayed by interactive shells after reading a command +and before the command is executed. + @item PS3 The value of this variable is used as the prompt for the @code{select} command. If this variable is not set, the @@ -6076,10 +6256,13 @@ invocation which are not available with the @code{set} builtin. @table @code @item -c -Read and execute commands from the first non-option @var{argument} -after processing the options, then exit. -Any remaining arguments are assigned to the -positional parameters, starting with @code{$0}. +Read and execute commands from the first non-option argument +@var{command_string}, then exit. +If there are arguments after the @var{command_string}, +the first argument is assigned to @code{$0} +and any remaining arguments are assigned to the positional parameters. +The assignment to @code{$0} sets the name of the shell, which is used +in warning and error messages. @item -i Force the shell to run interactively. Interactive shells are @@ -6174,7 +6357,9 @@ and executes commands from the first one that exists and is readable. The @option{--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 +When an interactive login shell exits, +or a non-interactive login shell executes the @code{exit} builtin command, +Bash reads and executes commands from the file @file{~/.bash_logout}, if it exists. @subsubheading Invoked as an interactive non-login shell @@ -6341,6 +6526,7 @@ signals @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}. Bash expands and displays @env{PS1} before reading the first line of a command, and expands and displays @env{PS2} before reading the second and subsequent lines of a multi-line command. +Bash displays @env{PS0} after it reads a command but before executing it. @item Bash executes the value of the @env{PROMPT_COMMAND} variable as a command @@ -6435,6 +6621,11 @@ and the @code{test} and @code{[} 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. +Bash handles several filenames specially when they are used in +expressions. +If the operating system on which Bash is running provides these +special files, Bash will use them; otherwise it will emulate them +internally with this behavior: If the @var{file} argument to one of the primaries is of the form @file{/dev/fd/@var{N}}, then file descriptor @var{N} is checked. If the @var{file} argument to one of the primaries is one of @@ -6578,8 +6769,8 @@ may be positive or negative integers. @cindex arithmetic evaluation The shell allows arithmetic expressions to be evaluated, as one of -the shell expansions or by the @code{let} and the @option{-i} option -to the @code{declare} builtins. +the shell expansions or by using the @code{((} compound command, the +@code{let} builtin, or the @option{-i} option to the @code{declare} builtin. Evaluation is done in fixed-width integers with no check for overflow, though division by 0 is trapped and flagged as an error. @@ -6666,7 +6857,7 @@ is a decimal number between 2 and 64 representing the arithmetic base, and @var{n} is a number in that base. If @var{base}@code{#} is omitted, then base 10 is used. When specifying @var{n}, -he digits greater than 9 are represented by the lowercase letters, +the digits greater than 9 are represented by the lowercase letters, the uppercase letters, @samp{@@}, and @samp{_}, in that order. If @var{base} is less than or equal to 36, lowercase and uppercase letters may be used interchangeably to represent numbers between 10 @@ -6728,7 +6919,7 @@ 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 +is itself a 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 @code{alias} @@ -6831,15 +7022,18 @@ expansion of the special parameters @samp{@@} and @samp{*}. @code{$@{@var{name}[@var{subscript}]@}}. If @var{subscript} is @samp{@@} or @samp{*}, 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 @var{subscript} used to reference an element of an indexed array -evaluates to a number less than zero, it is +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. +Referencing an array variable without a subscript is equivalent to +referencing with a subscript of 0. +Any reference to a variable using a valid subscript is legal, and +@code{bash} will create an array if necessary. + An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. @@ -6884,6 +7078,7 @@ The directory stack is a list of recently-visited directories. The the current directory, and the @code{popd} builtin removes specified directories from the stack and changes the current directory to the directory removed. The @code{dirs} builtin displays the contents +of the directory stack. The current directory is always the "top" of the directory stack. The contents of the directory stack are also visible @@ -6903,6 +7098,7 @@ dirs [-clpv] [+@var{N} | -@var{N}] Display the list of currently remembered directories. Directories are added to the list with the @code{pushd} command; the @code{popd} command removes directories from the list. +The current directory is always the first directory in the stack. @table @code @item -c @@ -6932,13 +7128,11 @@ with zero. popd [-n] [+@var{N} | -@var{N}] @end example -Remove the top entry from the directory stack, and @code{cd} -to the new top directory. When no arguments are given, @code{popd} removes the top directory from the stack and -performs a @code{cd} to the new top directory. The -elements are numbered from 0 starting at the first directory listed with -@code{dirs}; that is, @code{popd} is equivalent to @code{popd +0}. +performs a @code{cd} to the new top directory. +The elements are numbered from 0 starting at the first directory +listed with @code{dirs}; that is, @code{popd} is equivalent to @code{popd +0}. @table @code @item -n @@ -6960,12 +7154,13 @@ pushd [-n] [@var{+N} | @var{-N} | @var{dir}] Save the current directory on the top of the directory stack and then @code{cd} to @var{dir}. -With no arguments, @code{pushd} exchanges the top two directories. +With no arguments, @code{pushd} exchanges the top two directories +and makes the new top the current directory. @table @code @item -n -Suppresses the normal change of directory when adding directories -to the stack, so that only the stack is manipulated. +Suppresses the normal change of directory when rotating or +adding directories to the stack, so that only the stack is manipulated. @item +@var{N} Brings the @var{N}th directory (counting from the left of the list printed by @code{dirs}, starting with zero) to the top of @@ -6975,7 +7170,7 @@ Brings the @var{N}th directory (counting from the right of the list printed by @code{dirs}, starting with zero) to the top of the list by rotating the stack. @item @var{dir} -Makes the current working directory be the top of the stack, making +Makes @var{dir} be the top of the stack, making it the new current directory as if it had been supplied as an argument to the @code{cd} builtin. @end table @@ -7151,9 +7346,7 @@ is stopped is `Stopped(@var{signame})', where @var{signame} is, for example, @code{SIGTSTP}. @item -The @code{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. +Alias expansion is always enabled, even in non-interactive shells. @item Reserved words appearing in a context where reserved words are recognized @@ -7173,37 +7366,10 @@ the normal Bash files. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. -@item -The @code{command} builtin does not prevent builtins that take assignment -statements as arguments from expanding them as assignment statements; -when not in @sc{posix} mode, assignment builtins lose their assignment -statement expansion properties when preceded by @code{command}. - @item The default history file is @file{~/.sh_history} (this is the default value of @env{$HISTFILE}). -@item -The output of @samp{kill -l} prints all the signal names on a single line, -separated by spaces, without the @samp{SIG} prefix. - -@item -The @code{kill} builtin does not accept signal names with a @samp{SIG} -prefix. - -@item -Non-interactive shells exit if @var{filename} in @code{.} @var{filename} -is not found. - -@item -Non-interactive shells exit if a syntax error in an arithmetic expansion -results in an invalid expression. - -@item -Non-interactive shells exit if there is a syntax error in a script read -with the @code{.} or @code{source} builtins, or in a string processed by -the @code{eval} builtin. - @item Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. @@ -7226,6 +7392,15 @@ builtins. @sc{posix} special builtins are found before shell functions during command lookup. +@item +When printing shell function definitions (e.g., by @code{type}), Bash does +not print the @code{function} keyword. + +@item +Literal tildes that appear as the first character in elements of +the @env{PATH} variable are not expanded as described above +under @ref{Tilde Expansion}. + @item The @code{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 @@ -7243,6 +7418,10 @@ not have to appear as matched pairs. The parser does not recognize @code{time} as a reserved word if the next token begins with a @samp{-}. +@item +The @samp{!} character does not introduce history expansion within a +double-quoted string, even if the @code{histexpand} option is enabled. + @item If a @sc{posix} special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in @@ -7267,6 +7446,22 @@ A non-interactive shell exits with an error status if the iteration variable in a @code{for} statement or the selection variable in a @code{select} statement is a readonly variable. +@item +Non-interactive shells exit if @var{filename} in @code{.} @var{filename} +is not found. + +@item +Non-interactive shells exit if a syntax error in an arithmetic expansion +results in an invalid expression. + +@item +Non-interactive shells exit if a parameter expansion error occurs. + +@item +Non-interactive shells exit if there is a syntax error in a script read +with the @code{.} or @code{source} builtins, or in a string processed by +the @code{eval} builtin. + @item Process substitution is not available. @@ -7274,6 +7469,11 @@ Process substitution is not available. While variable indirection is available, it may not be applied to the @samp{#} and @samp{?} special parameters. +@item +When expanding the @samp{*} special parameter in a pattern context where the +expansion is double-quoted does not treat the @code{$*} as if it were +double-quoted. + @item Assignment statements preceding @sc{posix} special builtins persist in the shell environment after the builtin completes. @@ -7283,6 +7483,25 @@ Assignment statements preceding shell function calls persist in the shell environment after the function returns, as if a @sc{posix} special builtin command had been executed. +@item +The @code{command} builtin does not prevent builtins that take assignment +statements as arguments from expanding them as assignment statements; +when not in @sc{posix} mode, assignment builtins lose their assignment +statement expansion properties when preceded by @code{command}. + +@item +The @code{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. + +@item +The output of @samp{kill -l} prints all the signal names on a single line, +separated by spaces, without the @samp{SIG} prefix. + +@item +The @code{kill} builtin does not accept signal names with a @samp{SIG} +prefix. + @item The @code{export} and @code{readonly} builtin commands display their output in the format required by @sc{posix}. @@ -7304,13 +7523,13 @@ The @code{.} and @code{source} builtins do not search the current directory for the filename argument if it is not found by searching @env{PATH}. @item -Subshells spawned to execute command substitutions inherit the value of -the @option{-e} option from the parent shell. When not in @sc{posix} mode, +Enabling @sc{posix} mode has the effect of setting the +@code{inherit_errexit} option, so +subshells spawned to execute command substitutions inherit the value of +the @option{-e} option from the parent shell. +When the @code{inherit_errexit} option is not enabled, Bash clears the @option{-e} option in such subshells. -@item -Alias expansion is always enabled, even in non-interactive shells. - @item When the @code{alias} builtin displays alias definitions, it does not display them with a leading @samp{alias } unless the @option{-p} option @@ -7373,6 +7592,10 @@ has been set. If Bash receives a trapped signal while executing @code{read}, the trap handler executes and @code{read} returns an exit status greater than 128. +@item +Bash removes an exited background process's status from the list of such +statuses after the @code{wait} builtin is used to obtain it. + @end enumerate There is other @sc{posix} behavior that Bash does not implement by @@ -7589,7 +7812,7 @@ passing it @var{argument}s, returning its exit status. @btindex kill @example kill [-s @var{sigspec}] [-n @var{signum}] [-@var{sigspec}] @var{jobspec} or @var{pid} -kill -l [@var{exit_status}] +kill -l|-L [@var{exit_status}] @end example Send a signal specified by @var{sigspec} or @var{signum} to the process @@ -7604,6 +7827,7 @@ signals corresponding to the arguments are listed, and the return status is zero. @var{exit_status} is a number specifying a signal number or the exit status of a process terminated by a signal. +The @option{-L} option is equivalent to @option{-l}. 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. @@ -7627,7 +7851,7 @@ of the shell, the return status is 127. @item disown @btindex disown @example -disown [-ar] [-h] [@var{jobspec} @dots{}] +disown [-ar] [-h] [@var{jobspec} @dots{} | @var{pid} @dots{} ] @end example Without options, remove each @var{jobspec} from the table of @@ -8019,7 +8243,7 @@ the following options, but it is processed first, so individual options may be enabled using @samp{enable-@var{feature}}. All of the following options except for @samp{disabled-builtins}, -@samp{directpand-default}, and +@samp{direxpand-default}, and @samp{xpg-echo-default} are enabled by default, unless the operating system does not provide the necessary support. @@ -8105,6 +8329,11 @@ above under @ref{Pattern Matching}. Set the default value of the @var{extglob} shell option described above under @ref{The Shopt Builtin} to be enabled. +@item --enable-function-import +Include support for importing function definitions exported by another +instance of the shell from the environment. This option is enabled by +default. + @item --enable-glob-asciirange-default Set the default value of the @var{globasciiranges} shell option described above under @ref{The Shopt Builtin} to be enabled. diff --git a/doc/builtins.0 b/doc/builtins.0 index dcdc6c5..3706dad 100644 --- a/doc/builtins.0 +++ b/doc/builtins.0 @@ -1,4 +1,4 @@ -BASH_BUILTINS(1) BASH_BUILTINS(1) +BASH_BUILTINS(1) General Commands Manual BASH_BUILTINS(1) @@ -15,38 +15,44 @@ 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. + and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- + ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning + with -- without requiring ----. Other builtins that accept arguments but + are not specified as accepting options interpret arguments beginning + with -- as invalid options and require ---- to prevent this interpreta- + tion. :: [_a_r_g_u_m_e_n_t_s] - No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s - and performing any specified redirections. A zero exit code is - returned. + No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s + and performing any specified redirections. The return status is + zero. .. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - Read and execute commands from _f_i_l_e_n_a_m_e in the current shell - environment and return the exit status of the last command exe- - cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, - filenames in PPAATTHH are used to find the directory containing + Read and execute commands from _f_i_l_e_n_a_m_e in the current shell + environment and return the exit status of the last command exe- + cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash, + filenames in PPAATTHH are used to find the directory containing _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable. - When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is - searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option - to the sshhoopptt builtin command is turned off, the PPAATTHH is not - searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- - tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the - positional parameters are unchanged. 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 + When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is + searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option + to the sshhoopptt builtin command is turned off, the PPAATTHH is not + searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi- + tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the + positional parameters are unchanged. If the --TT option is + enabled, ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any + DDEEBBUUGG trap string is saved and restored around the call to + ssoouurrccee, and ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If + --TT is not set, and the sourced file changes the DDEEBBUUGG trap, the + new value is retained when ssoouurrccee completes. The return status + is the status of the last command exited within the script (0 if + no commands are executed), and false if _f_i_l_e_n_a_m_e is not found or cannot be read. aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] AAlliiaass with no arguments or with the --pp option prints the list of aliases in the form aalliiaass _n_a_m_e=_v_a_l_u_e on standard output. When arguments are supplied, an alias is defined for each _n_a_m_e whose - _v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes the next word + _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 @@ -66,7 +72,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d Display current rreeaaddlliinnee key and function bindings, bind a key sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee variable. Each non-option argument is a command as it would @@ -77,18 +83,19 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e + is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_- + _d_a_r_d. --ll List the names of all rreeaaddlliinnee functions. - --pp Display rreeaaddlliinnee function names and bindings in such a + --pp Display rreeaaddlliinnee function names and bindings in such a way that they can be re-read. --PP List current rreeaaddlliinnee function names and bindings. - --ss Display rreeaaddlliinnee key sequences bound to macros and the - strings they output in such a way that they can be re- + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be re- read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the + --SS Display rreeaaddlliinnee key sequences bound to macros and the strings they output. - --vv Display rreeaaddlliinnee variable names and values in such a way + --vv Display rreeaaddlliinnee variable names and values in such a way that they can be re-read. --VV List current rreeaaddlliinnee variable names and values. --ff _f_i_l_e_n_a_m_e @@ -100,110 +107,110 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr _k_e_y_s_e_q Remove any current binding for _k_e_y_s_e_q. --xx _k_e_y_s_e_q::_s_h_e_l_l_-_c_o_m_m_a_n_d - Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is - entered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets - the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- - lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the + Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is + entered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets + the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd-- + lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the current location of the insertion point. If the executed - command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- - LLIINNEE__PPOOIINNTT, those new values will be reflected in the + command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD-- + LLIINNEE__PPOOIINNTT, those new values will be reflected in the editing state. - --XX List all key sequences bound to shell commands and the - associated commands in a format that can be reused as + --XX List all key sequences bound to shell commands and the + associated commands in a format that can be reused as input. - The return value is 0 unless an unrecognized option is given or + The return value is 0 unless an unrecognized option is given or an error occurred. bbrreeaakk [_n] - Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is - specified, break _n levels. _n must be >= 1. If _n is greater - than the number of enclosing loops, all enclosing loops are - exited. The return value is 0 unless _n is not greater than or + Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is + specified, break _n levels. _n must be >= 1. If _n is greater + than the number of enclosing loops, all enclosing loops are + exited. The return value is 0 unless _n is not greater than or equal to 1. bbuuiillttiinn _s_h_e_l_l_-_b_u_i_l_t_i_n [_a_r_g_u_m_e_n_t_s] - Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and + Execute the specified shell builtin, passing it _a_r_g_u_m_e_n_t_s, and return its exit status. This is useful when defining a function - whose name is the same as a shell builtin, retaining the func- + whose name is the same as a shell builtin, retaining the func- tionality of the builtin within the function. The ccdd builtin is - commonly redefined this way. The return status is false if + commonly redefined this way. The return status is false if _s_h_e_l_l_-_b_u_i_l_t_i_n is not a shell builtin command. ccaalllleerr [_e_x_p_r] Returns the context of any active subroutine call (a shell func- tion or a script executed with the .. or ssoouurrccee builtins). With- out _e_x_p_r, ccaalllleerr displays the line number and source filename of - the current subroutine call. If a non-negative integer is sup- + the current subroutine call. If a non-negative integer is sup- plied as _e_x_p_r, ccaalllleerr displays the line number, subroutine name, - and source file corresponding to that position in the current - execution call stack. This extra information may be used, for - example, to print a stack trace. The current frame is frame 0. - The return value is 0 unless the shell is not executing a sub- - routine call or _e_x_p_r does not correspond to a valid position in + and source file corresponding to that position in the current + execution call stack. This extra information may be used, for + example, to print a stack trace. The current frame is frame 0. + The return value is 0 unless the shell is not executing a sub- + routine call or _e_x_p_r does not correspond to a valid position in the call stack. ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r] - Change the current directory to _d_i_r. if _d_i_r is not supplied, - the value of the HHOOMMEE shell variable is the default. Any addi- + Change the current directory to _d_i_r. if _d_i_r is not supplied, + the value of the HHOOMMEE shell variable is the default. Any addi- tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH - defines the search path for the directory containing _d_i_r: each - directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative - directory names in CCDDPPAATTHH are separated by a colon (:). A null - directory name in CCDDPPAATTHH is the same as the current directory, + defines the search path for the directory containing _d_i_r: each + directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative + directory names in CCDDPPAATTHH are separated by a colon (:). A null + directory name in CCDDPPAATTHH is the same as the current directory, i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not - used. The --PP option causes ccdd to use the physical directory - structure by resolving symbolic links while traversing _d_i_r and + used. The --PP option causes ccdd to use the physical directory + structure by resolving symbolic links while traversing _d_i_r and before processing instances of _._. in _d_i_r (see also the --PP option to the sseett builtin command); the --LL option forces symbolic links - to be followed by resolving the link after processing instances + to be followed by resolving the link after processing instances of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing - the immediately previous pathname component from _d_i_r, back to a - slash or the beginning of _d_i_r. If the --ee option is supplied - with --PP, and the current working directory cannot be success- - fully determined after a successful directory change, ccdd will - return an unsuccessful status. On systems that support it, the - --@@ option presents the extended attributes associated with a - file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD + the immediately previous pathname component from _d_i_r, back to a + slash or the beginning of _d_i_r. If the --ee option is supplied + with --PP, and the current working directory cannot be success- + fully determined after a successful directory change, ccdd will + return an unsuccessful status. On systems that support it, the + --@@ option presents the extended attributes associated with a + file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD before the directory change is attempted. If a non-empty direc- - tory name from CCDDPPAATTHH is used, or if -- is the first argument, + tory name from CCDDPPAATTHH is used, or if -- is the first argument, and the directory change is successful, the absolute pathname of - the new working directory is written to the standard output. - The return value is true if the directory was successfully + the new working directory is written to the standard output. + The return value is true if the directory was successfully changed; false otherwise. ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] - Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function - lookup. Only builtin commands or commands found in the PPAATTHH are - executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is - performed using a default value for PPAATTHH that is guaranteed to - find all of the standard utilities. If either the --VV or --vv + Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function + lookup. Only builtin commands or commands found in the PPAATTHH are + executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is + performed using a default value for PPAATTHH that is guaranteed to + find all of the standard utilities. If either the --VV or --vv option is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv - option causes a single word indicating the command or filename + option causes a single word indicating the command or filename used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a - more verbose description. If the --VV or --vv option is supplied, - the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If + more verbose description. If the --VV or --vv option is supplied, + the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If neither option is supplied and an error occurred or _c_o_m_m_a_n_d can- - not be found, the exit status is 127. Otherwise, the exit sta- + not be found, the exit status is 127. Otherwise, the exit sta- tus of the ccoommmmaanndd builtin is the exit status of _c_o_m_m_a_n_d. ccoommppggeenn [_o_p_t_i_o_n] [_w_o_r_d] - Generate possible completion matches for _w_o_r_d according to the - _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee - builtin with the exception of --pp and --rr, and write the matches - to the standard output. When using the --FF or --CC options, the - various shell variables set by the programmable completion + Generate possible completion matches for _w_o_r_d according to the + _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee + builtin with the exception of --pp and --rr, and write the matches + to the standard output. When using the --FF or --CC options, the + various shell variables set by the programmable completion facilities, while available, will not have useful values. - The matches will be generated in the same way as if the 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 matches will be generated in the same way as if the program- + mable completion code had generated them directly from a comple- + tion specification with the same flags. If _w_o_r_d is specified, + only those completions matching _w_o_r_d will be displayed. - The return value is true unless an invalid option is supplied, + The return value is true unless an invalid option is supplied, or no matches were generated. - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- _p_a_t] [--WW _w_o_r_d_l_i_s_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] _n_a_m_e [_n_a_m_e _._._.] ccoommpplleettee --pprr [--DDEE] [_n_a_m_e ...] @@ -221,8 +228,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS attempted on a blank line. The process of applying these completion specifications when - word completion is attempted is described above under PPrroo-- - ggrraammmmaabbllee CCoommpplleettiioonn. + word completion is attempted is described above under PPrrooggrraamm-- + mmaabbllee CCoommpplleettiioonn. Other options, if specified, have the following meanings. The arguments to the --GG, --WW, and --XX options (and, if necessary, the @@ -250,22 +257,24 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + nnoossoorrtt Tell readline not to sort the list of possible + completions alphabetically. + nnoossppaaccee Tell readline not to append a space (the + default) to words completed at the end of the line. pplluussddiirrss - After any matches defined by the compspec are - generated, directory name completion is - attempted and any matches are added to the + After any matches defined by the compspec are + generated, directory name completion is + attempted and any matches are added to the results of the other actions. --AA _a_c_t_i_o_n - The _a_c_t_i_o_n may be one of the following to generate a + The _a_c_t_i_o_n may be one of the following to generate a list of possible completions: aalliiaass Alias names. May also be specified as --aa. aarrrraayyvvaarr Array variable names. bbiinnddiinngg RReeaaddlliinnee key binding names. - bbuuiillttiinn Names of shell builtin commands. May also be + bbuuiillttiinn Names of shell builtin commands. May also be specified as --bb. ccoommmmaanndd Command names. May also be specified as --cc. ddiirreeccttoorryy @@ -273,7 +282,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS ddiissaabblleedd Names of disabled shell builtins. eennaabblleedd Names of enabled shell builtins. - eexxppoorrtt Names of exported shell variables. May also be + eexxppoorrtt Names of exported shell variables. May also be specified as --ee. ffiillee File names. May also be specified as --ff. ffuunnccttiioonn @@ -282,11 +291,11 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS hheellppttooppiicc Help topics as accepted by the hheellpp builtin. hhoossttnnaammee - Hostnames, as taken from the file specified by + Hostnames, as taken from the file specified by the HHOOSSTTFFIILLEE shell variable. - jjoobb Job names, if job control is active. May also + jjoobb Job names, if job control is active. May also be specified as --jj. - kkeeyywwoorrdd Shell reserved words. May also be specified as + kkeeyywwoorrdd Shell reserved words. May also be specified as --kk. rruunnnniinngg Names of running jobs, if job control is active. sseerrvviiccee Service names. May also be specified as --ss. @@ -301,40 +310,40 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS Names of all shell variables. May also be spec- ified as --vv. --CC _c_o_m_m_a_n_d - _c_o_m_m_a_n_d is executed in a subshell environment, and its + _c_o_m_m_a_n_d is executed in a subshell environment, and its output is used as the possible completions. --FF _f_u_n_c_t_i_o_n - The shell function _f_u_n_c_t_i_o_n is executed in the current - shell environment. When the function is executed, the - first argument ($$11) is the name of the command whose - arguments are being completed, the second argument ($$22) + The shell function _f_u_n_c_t_i_o_n is executed in the current + shell environment. When the function is executed, the + first argument ($$11) is the name of the command whose + arguments are being completed, the second argument ($$22) is the word being completed, and the third argument ($$33) - is the word preceding the word being completed on the - current command line. When it finishes, the possible - completions are retrieved from the value of the CCOOMMPPRREE-- + is the word preceding the word being completed on the + current command line. When it finishes, the possible + completions are retrieved from the value of the CCOOMMPPRREE-- PPLLYY array variable. --GG _g_l_o_b_p_a_t - The pathname expansion pattern _g_l_o_b_p_a_t is expanded to + The pathname expansion pattern _g_l_o_b_p_a_t is expanded to generate the possible completions. --PP _p_r_e_f_i_x - _p_r_e_f_i_x is added at the beginning of each possible com- + _p_r_e_f_i_x is added at the beginning of each possible com- pletion after all other options have been applied. --SS _s_u_f_f_i_x _s_u_f_f_i_x is appended to each possible completion after all other options have been applied. --WW _w_o_r_d_l_i_s_t - The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS - special variable as delimiters, and each resultant word - is expanded. The possible completions are the members - of the resultant list which match the word being com- + The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS + special variable as delimiters, and each resultant word + is expanded. The possible completions are the members + of the resultant list which match the word being com- pleted. --XX _f_i_l_t_e_r_p_a_t - _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. + _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. It is applied to the list of possible completions gener- - ated by the preceding options and arguments, and each - completion matching _f_i_l_t_e_r_p_a_t is removed from the list. - A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this - case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. + 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- @@ -382,12 +391,12 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS inhibits the display of function definitions; only the function name and attributes are printed. If the eexxttddeebbuugg shell option is enabled using sshhoopptt, the source file name and line number - where the function is defined are displayed as well. The --FF - option implies --ff. The --gg option forces variables to be created - or modified at the global scope, even when ddeeccllaarree is executed - in a shell 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: + where each _n_a_m_e is defined are displayed as well. The --FF option + implies --ff. The --gg option forces variables to be created or + modified at the global scope, even when ddeeccllaarree is executed in a + shell function. It is ignored in all other cases. The follow- + ing options can be used to restrict output to variables with the + specified attribute or to give variables attributes: --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss above). --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss @@ -401,11 +410,11 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + defined by the value of _n_a_m_e. All references, assign- + ments, and attribute modifications to _n_a_m_e, except those + using or changing the --nn attribute itself, are performed + on the variable referenced by _n_a_m_e's value. The nameref + attribute cannot be applied to array variables. --rr Make _n_a_m_es readonly. These names cannot then be assigned values by subsequent assignment statements or unset. --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions @@ -442,10 +451,11 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + entries from the list. The current directory is always the + first directory in the stack. --cc Clears the directory stack by deleting all of the entries. - --ll Produces a listing using full pathnames; the default + --ll Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory. --pp Print the directory stack with one entry per line. --vv Print the directory stack with one entry per line, pre- @@ -460,7 +470,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 ...] + ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] Without options, remove each _j_o_b_s_p_e_c from the table of active jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option @@ -544,101 +554,101 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS returns failure. An interactive shell returns failure if the file cannot be executed. If _c_o_m_m_a_n_d is not specified, any redi- rections take effect in the current shell, and the return status - is 0. If there is a redirection error, the return status is 1. + is 0. If there is a redirection error, the return status is 1. eexxiitt [_n] - Cause the shell to exit with a status of _n. If _n is omitted, + Cause the shell to exit with a status of _n. If _n is omitted, the exit status is that of the last command executed. A trap on EEXXIITT is executed before the shell terminates. eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ... eexxppoorrtt --pp - The supplied _n_a_m_e_s are marked for automatic export to the envi- - ronment of subsequently executed commands. If the --ff option is - given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or - if the --pp option is supplied, a list of names of all exported - variables is printed. The --nn option causes the export property + The supplied _n_a_m_e_s are marked for automatic export to the envi- + ronment of subsequently executed commands. If the --ff option is + given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or + if the --pp option is supplied, a list of names of all exported + variables is printed. The --nn option causes the export property to be removed from each _n_a_m_e. If a variable name is followed by =_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns an exit status of 0 unless an invalid option is encountered, one - of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- + of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- plied with a _n_a_m_e that is not a function. ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] - The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t - from the history list and displays or edits and re-executes - them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate - the last command beginning with that string) or as a number (an - index into the history list, where a negative number is used as - an offset from the current command number). If _l_a_s_t is not - specified it is set to the current command for listing (so that - ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- - wise. If _f_i_r_s_t is not specified it is set to the previous com- + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t + from the history list and displays or edits and re-executes + them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate + the last command beginning with that string) or as a number (an + index into the history list, where a negative number is used as + an offset from the current command number). If _l_a_s_t is not + specified it is set to the current command for listing (so that + ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- + wise. If _f_i_r_s_t is not specified it is set to the previous com- mand for editing and -16 for listing. - The --nn option suppresses the command numbers when listing. The - --rr option reverses the order of the commands. If the --ll option - is given, the commands are listed on standard output. Other- - wise, the editor given by _e_n_a_m_e is invoked on a file containing - those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT - variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. - If neither variable is set, _v_i is used. When editing is com- + The --nn option suppresses the command numbers when listing. The + --rr option reverses the order of the commands. If the --ll option + is given, the commands are listed on standard output. Other- + wise, the editor given by _e_n_a_m_e is invoked on a file containing + those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT + variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. + If neither variable is set, _v_i is used. When editing is com- plete, the edited commands are echoed and executed. - In the second form, _c_o_m_m_a_n_d is re-executed after each instance - of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is intepreted the same as - _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'', - so that typing ``r cc'' runs the last command beginning with + In the second form, _c_o_m_m_a_n_d is re-executed after each instance + of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is 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 + If the first form is used, the return value is 0 unless an + invalid option is encountered or _f_i_r_s_t or _l_a_s_t specify history + lines out of range. If the --ee option is supplied, the return value is the value of the last command executed or failure if an error occurs with the temporary file of commands. If the second - form is used, the return status is that of the command re-exe- - cuted, unless _c_m_d does not specify a valid history line, in + form is used, the return status is that of the command re-exe- + cuted, unless _c_m_d does not specify a valid history line, in which case ffcc returns failure. ffgg [_j_o_b_s_p_e_c] - Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. + Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. If _j_o_b_s_p_e_c is not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b - is used. The return value is that of the command placed into - the foreground, or failure if run when job control is disabled + is used. The return value is that of the command placed into + the foreground, or failure if run when job control is disabled or, when run with job control enabled, if _j_o_b_s_p_e_c does not spec- - ify a valid job or _j_o_b_s_p_e_c specifies a job that was started + ify a valid job or _j_o_b_s_p_e_c specifies a job that was started without job control. ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g_s] - ggeettooppttss is used by shell procedures to parse positional parame- - ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- - nized; if a character is followed by a colon, the option is - expected to have an argument, which should be separated from it - by white space. The colon and question mark characters may not - be used as option characters. Each time it is invoked, ggeettooppttss - places the next option in the shell variable _n_a_m_e, initializing + ggeettooppttss is used by shell procedures to parse positional parame- + ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog- + nized; if a character is followed by a colon, the option is + expected to have an argument, which should be separated from it + by white space. The colon and question mark characters may not + be used as option characters. Each time it is invoked, ggeettooppttss + places the next option in the shell variable _n_a_m_e, initializing _n_a_m_e if it does not exist, and the index of the next argument to be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to - 1 each time the shell or a shell script is invoked. When an - option requires an argument, ggeettooppttss places that argument into - the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- - cally; it must be manually reset between multiple calls to + 1 each time the shell or a shell script is invoked. When an + option requires an argument, ggeettooppttss places that argument into + the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- + cally; it must be manually reset between multiple calls to ggeettooppttss within the same shell invocation if a new set of parame- ters is to be used. - When the end of options is encountered, ggeettooppttss exits with a - return value greater than zero. OOPPTTIINNDD is set to the index of + When the end of options is encountered, ggeettooppttss exits with a + return value greater than zero. OOPPTTIINNDD is set to the index of the first non-option argument, and _n_a_m_e is set to ?. - ggeettooppttss normally parses the positional parameters, but if more + ggeettooppttss normally parses the positional parameters, but if more arguments are given in _a_r_g_s, ggeettooppttss parses those instead. - ggeettooppttss can report errors in two ways. If the first character - of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In - normal operation, diagnostic messages are printed when invalid - options or missing option arguments are encountered. If the - variable OOPPTTEERRRR is set to 0, no error messages will be dis- + ggeettooppttss can report errors in two ways. If the first character + of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In + normal operation, diagnostic messages are printed when invalid + options or missing option arguments are encountered. If the + variable OOPPTTEERRRR is set to 0, no error messages will be dis- played, even if the first character of _o_p_t_s_t_r_i_n_g is not a colon. If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if @@ -704,33 +714,34 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --cc Clear the history list by deleting all the entries. --dd _o_f_f_s_e_t Delete the history entry at position _o_f_f_s_e_t. - --aa Append the ``new'' history lines (history lines entered - since the beginning of the current bbaasshh session) to the + --aa Append the ``new'' history lines to the history file. + These are history lines entered since the beginning of + the current bbaasshh session, but not already appended to the history file. - --nn Read the history lines not already read from the history - file into the current history list. These are lines - appended to the history file since the beginning of the + --nn Read the history lines not already read from the history + file into the current history list. These are lines + appended to the history file since the beginning of the current bbaasshh session. - --rr Read the contents of the history file and append them to + --rr Read the contents of the history file and append them to the current history list. --ww Write the current history list to the history file, over- writing the history file's contents. - --pp Perform history substitution on the following _a_r_g_s and - display the result on the standard output. Does not - store the results in the history list. Each _a_r_g must be + --pp Perform history substitution on the following _a_r_g_s and + display the result on the standard output. Does not + store the results in the history list. Each _a_r_g must be quoted to disable normal history expansion. - --ss Store the _a_r_g_s in the history list as a single entry. - The last command in the history list is removed before + --ss Store the _a_r_g_s in the history list as a single entry. + The last command in the history list is removed before the _a_r_g_s are added. - If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa- - tion associated with each history entry is written to the his- - tory file, marked with the history comment character. When the - history file is read, lines beginning with the history comment - character followed immediately by a digit are interpreted as - 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- + If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa- + tion associated with each history entry is written to the his- + tory file, marked with the history comment character. When the + history file is read, lines beginning with the history comment + character followed immediately by a digit are interpreted as + timestamps for the following history entry. The return value is + 0 unless an invalid option is encountered, an error occurs while + reading or writing the history file, an invalid _o_f_f_s_e_t is sup- plied as an argument to --dd, or the history expansion supplied as an argument to --pp fails. @@ -739,8 +750,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS The first form lists the active jobs. The options have the fol- lowing meanings: --ll List process IDs in addition to the normal information. - --nn Display information only about jobs that have changed - status since the user was last notified of their status. + --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. @@ -755,7 +766,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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] + kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or @@ -765,72 +776,80 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + status of a process terminated by a signal. The --LL option is + equivalent to --ll. kkiillll returns true if at least one signal was + successfully sent, or false if an error occurs or an invalid + option is encountered. lleett _a_r_g [_a_r_g ...] Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- - MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett + MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett returns 1; 0 is returned otherwise. - llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ...] - For each argument, a local variable named _n_a_m_e is created, and - assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted + 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. + variable _n_a_m_e to have a visible scope restricted to that func- + tion and its children. If _n_a_m_e is -, the set of shell options + is made local to the function in which llooccaall is invoked: shell + options changed using the sseett builtin inside the function are + restored to their original values when the function returns. + With no operands, llooccaall writes a list of local variables to the + standard output. It is an error to use llooccaall when not within a + function. The return status is 0 unless llooccaall is used outside a + function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly + 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 + mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] + rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] + Read lines from the standard input into the indexed array vari- + able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- + plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if supplied, have the following meanings: + --dd The first character of _d_e_l_i_m is used to terminate each + input line, rather than newline. --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are 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- + --tt Remove a trailing _d_e_l_i_m (default newline) from each line + read. + --uu Read lines from file descriptor _f_d instead of the stan- dard input. - --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The + --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The --cc option specifies _q_u_a_n_t_u_m. - --cc Specify the number of lines read between each call to + --cc Specify the number of lines read between each call to _c_a_l_l_b_a_c_k. - If --CC is specified without --cc, the default quantum is 5000. + If --CC is specified without --cc, the default quantum is 5000. When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next array element to be assigned and the line to be assigned to that - element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after + element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after the line is read but before the array element is assigned. - If not supplied with an explicit origin, mmaappffiillee will clear + If not supplied with an explicit origin, mmaappffiillee will clear _a_r_r_a_y before assigning to it. - mmaappffiillee returns successfully unless an invalid option or option - argument is supplied, _a_r_r_a_y is invalid or unassignable, or if + mmaappffiillee returns successfully unless an invalid option or option + argument is supplied, _a_r_r_a_y is invalid or unassignable, or if _a_r_r_a_y is not an indexed array. ppooppdd [-nn] [+_n] [-_n] - Removes entries from the directory stack. With no arguments, - removes the top directory from the stack, and performs a ccdd to + Removes entries from the directory stack. With no arguments, + removes the top directory from the stack, and performs a ccdd to the new top directory. Arguments, if supplied, have the follow- ing meanings: - --nn Suppresses the normal change of directory when removing - directories from the stack, so that only the stack is + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is manipulated. - ++_n Removes the _nth entry counting from the left of the list - shown by ddiirrss, starting with zero. For example: ``popd + ++_n Removes the _nth entry counting from the left of the list + shown by ddiirrss, starting with zero. For example: ``popd +0'' removes the first directory, ``popd +1'' the second. --_n Removes the _nth entry counting from the right of the list shown by ddiirrss, starting with zero. For example: ``popd @@ -857,83 +876,83 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. + %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can be reused as shell input. %%((_d_a_t_e_f_m_t))TT - causes pprriinnttff to output the date-time string resulting - from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). + causes pprriinnttff to output the date-time string resulting + from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). The corresponding _a_r_g_u_m_e_n_t is an integer representing the - number of seconds since the epoch. Two special argument - values may be used: -1 represents the current time, and - -2 represents the time the shell was invoked. If no - argument is specified, conversion behaves as if -1 had - been given. This is an exception to the usual pprriinnttff + number of seconds since the epoch. Two special argument + values may be used: -1 represents the current time, and + -2 represents the time the shell was invoked. If no + argument is specified, conversion behaves as if -1 had + been given. This is an exception to the usual pprriinnttff behavior. - Arguments to non-string format specifiers are treated as C con- + Arguments to non-string format specifiers are treated as C con- stants, except that a leading plus or minus sign is allowed, and - if the leading character is a single or double quote, the value + if the leading character is a single or double quote, the value is the ASCII value of the following character. - The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- + The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- _m_e_n_t_s. If the _f_o_r_m_a_t requires more _a_r_g_u_m_e_n_t_s than are supplied, - the extra format specifications behave as if a zero value or - null string, as appropriate, had been supplied. The return + the extra format specifications behave as if a zero value or + null string, as appropriate, had been supplied. The return value is zero on success, non-zero on failure. ppuusshhdd [--nn] [+_n] [-_n] ppuusshhdd [--nn] [_d_i_r] - Adds a directory to the top of the directory stack, or rotates - the stack, making the new top of the stack the current working - directory. With no arguments, 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 + Adds a directory to the top of the directory stack, or rotates + the stack, making the new top of the stack the current working + directory. With no arguments, ppuusshhdd exchanges the top two + directories and returns 0, unless the directory stack is empty. + Arguments, if supplied, have the following meanings: + --nn Suppresses the normal change of directory when rotating + or adding directories to the stack, so that only the + 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 + --_n Rotates the stack so that the _nth directory (counting + from the right of the list shown by ddiirrss, starting with zero) is at the top. _d_i_r Adds _d_i_r to the directory stack at the top, making it the - new current working directory as if it had been supplied + new current working directory as if it had been supplied as the argument to the ccdd builtin. If the ppuusshhdd command is successful, a ddiirrss is performed as well. - If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r - fails. With the second form, ppuusshhdd returns 0 unless the direc- - tory stack is empty, a non-existent directory stack element is - specified, or the directory change to the specified new current + If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r + fails. With the second form, ppuusshhdd returns 0 unless the direc- + tory stack is empty, a non-existent directory stack element is + specified, or the directory change to the specified new current directory fails. ppwwdd [--LLPP] - Print the absolute pathname of the current working directory. + Print the absolute pathname of the current working directory. The pathname printed contains no symbolic links if the --PP option is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command - is enabled. If the --LL option is used, the pathname printed may - contain symbolic links. The return status is 0 unless an error - occurs while reading the name of the current directory or an + is enabled. If the --LL option is used, the pathname printed may + contain symbolic links. The return status is 0 unless an error + occurs while reading the name of the current directory or an invalid option is supplied. rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] One line is read from the standard input, or from the file - descriptor _f_d supplied as an argument to the --uu option, and the + descriptor _f_d supplied as an argument to the --uu option, split + into words as described above under WWoorrdd SSpplliittttiinngg, and the first word is assigned to the first _n_a_m_e, the second word to the - second _n_a_m_e, and so on, 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 using the same rules the shell uses - for expansion (described above under WWoorrdd SSpplliittttiinngg). The back- - slash 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: + second _n_a_m_e, and so on. If there are more words than names, the + remaining words and their intervening delimiters are assigned to + the last _n_a_m_e. If there are fewer words read from the input + stream than names, the remaining names are assigned empty val- + ues. The characters in IIFFSS are used to split the line into + words using the same rules the shell uses for expansion + (described above under WWoorrdd SSpplliittttiinngg). The backslash character + (\\) may be used to remove any special meaning for the next char- + acter read and for line continuation. Options, if supplied, + have the following meanings: --aa _a_n_a_m_e The words are assigned to sequential indices of the array variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any @@ -951,7 +970,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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- + waiting for a complete line of input, but honors a delim- iter if fewer than _n_c_h_a_r_s characters are read before the delimiter. --NN _n_c_h_a_r_s @@ -960,61 +979,69 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + are read. The result is not split on the characters in + IIFFSS; the intent is that the variable is assigned exactly + the characters read (with the exception of backslash; see + the --rr option below). --pp _p_r_o_m_p_t Display _p_r_o_m_p_t on standard error, without a trailing new- line, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. --rr Backslash does not act as an escape character. The back- - slash is considered to be part of the line. In particu- - lar, a backslash-newline pair may not be used as a line + slash is considered to be part of the line. In particu- + lar, a backslash-newline pair may not be used as a line continuation. --ss Silent mode. If input is coming from a terminal, charac- ters are not echoed. --tt _t_i_m_e_o_u_t - Cause rreeaadd to time out and return failure if a complete - line of input (or a specified number of characters) is - not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- - mal number with a fractional portion following the deci- - mal point. This option is only effective if rreeaadd is - reading input from a terminal, pipe, or other special - file; it has no effect when reading from regular files. + Cause rreeaadd to time out and return failure if a complete + line of input (or a specified number of characters) is + not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- + mal number with a fractional portion following the deci- + mal point. This option is only effective if rreeaadd is + reading input from a terminal, pipe, or other special + file; it has no effect when reading from regular files. If rreeaadd times out, rreeaadd saves any partial input read into - the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd - returns immediately, without trying to read any data. - The exit status is 0 if input is available on the speci- - fied file descriptor, non-zero otherwise. The exit sta- + the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd + returns immediately, without trying to read any data. + The exit status is 0 if input is available on the speci- + fied file descriptor, non-zero otherwise. The exit sta- tus is greater than 128 if the timeout is exceeded. --uu _f_d Read input from file descriptor _f_d. If no _n_a_m_e_s are supplied, the line read is assigned to the vari- - able RREEPPLLYY. The 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. + able RREEPPLLYY. The exit status is zero, unless end-of-file is + encountered, rreeaadd times out (in which case the status is greater + than 128), a variable assignment error (such as assigning to a + readonly variable) occurs, or an invalid file descriptor is sup- + plied as the argument to --uu. rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] - The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s - may not be changed by subsequent assignment. If the --ff option - is supplied, the functions corresponding to the _n_a_m_e_s are so - marked. The --aa option restricts the variables to indexed - arrays; the --AA option restricts the variables to associative - arrays. If both options are supplied, --AA takes precedence. If - no _n_a_m_e arguments are given, or if the --pp option is supplied, a + The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s + may not be changed by subsequent assignment. If the --ff option + is supplied, the functions corresponding to the _n_a_m_e_s are so + marked. The --aa option restricts the variables to indexed + arrays; the --AA option restricts the variables to associative + arrays. If both options are supplied, --AA takes precedence. If + no _n_a_m_e arguments are given, or if the --pp option is supplied, a list of all readonly names is printed. The other options may be - used to restrict the output to a subset of the set of readonly - names. The --pp option causes output to be displayed in a format - that may be reused as input. If a variable name is followed by - =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return - status is 0 unless an invalid option is encountered, one of the + used to restrict the output to a subset of the set of readonly + names. The --pp option causes output to be displayed in a format + that may be reused as input. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return + status is 0 unless an invalid option is encountered, one of the _n_a_m_e_s is not a valid shell variable name, or --ff is supplied with a _n_a_m_e that is not a function. rreettuurrnn [_n] - Causes a function to stop executing and return the value speci- - fied by _n to its caller. If _n is omitted, the return status is - that of the last command executed in the function body. If + Causes a function to stop executing and return the value speci- + fied by _n to its caller. If _n is omitted, the return status is + that of the last command executed in the function body. If + rreettuurrnn is executed by a trap handler, the last command used to + determine the status is the last command executed before the + trap handler. if rreettuurrnn is executed during a DDEEBBUUGG trap, the + last command used to determine the status is the last command + executed by the trap handler before rreettuurrnn was invoked. If rreettuurrnn is used outside a function, but during execution of a script by the .. (ssoouurrccee) command, it causes the shell to stop executing that script and return either _n or the exit status of @@ -1038,26 +1065,26 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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. + --aa Each variable or function that is created or modified is + given the export attribute and marked for export to the + environment of subsequent commands. --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 + (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status. + The shell does not exit if the command that fails is + part of the command list immediately following a wwhhiillee + or uunnttiill keyword, part of the test following the iiff or + eelliiff reserved words, part of any command executed in a + &&&& or |||| list except the command following the final &&&& + or ||||, any command in a pipeline but the last, or if the + command's return value is being inverted with !!. If a + compound command other than a subshell returns a non- + zero status because a command failed while --ee was being + ignored, the shell does not exit. A trap on EERRRR, if + set, is executed before the shell exits. This option applies to the shell environment and each subshell envi- ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT above), and may cause subshells to exit before executing @@ -1295,138 +1322,158 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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). + (see previous item) and the effect of interrupting a + command list. Bash versions 3.2 and earlier continue + with the next command in the list after one terminates + due to an interrupt. ccoommppaatt4400 If set, bbaasshh changes its behavior to that of version 4.0 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see description of ccoommppaatt3311) and the effect of inter- - rupting a command list. Bash versions 4.0 and later - interrupt the list as if the shell received the inter- - rupt; previous versions continue with the next command + with respect to locale-specific string comparison when + using the [[[[ conditional command's << and >> operators + (see description of ccoommppaatt3311) and the effect of inter- + rupting a command list. Bash versions 4.0 and later + interrupt the list as if the shell received the inter- + rupt; previous versions continue with the next command in the list. ccoommppaatt4411 - If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote - in a double-quoted parameter expansion as a special - character. The single quotes must match (an even num- - ber) and the characters between the single quotes are - considered quoted. This is the behavior of posix mode - through version 4.1. The default bash behavior remains + If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote + in a double-quoted parameter expansion as a special + character. The single quotes must match (an even num- + ber) and the characters between the single quotes are + considered quoted. This is the behavior of posix mode + through version 4.1. The default bash behavior remains as in previous versions. ccoommppaatt4422 - If set, bbaasshh does not process the replacement string in - the pattern substitution word expansion using quote + If set, bbaasshh does not process the replacement string in + the pattern substitution word expansion using quote removal. + ccoommppaatt4433 + If set, bbaasshh does not print a warning message if an + attempt is made to use a quoted compound array assign- + ment as an argument to ddeeccllaarree, makes word expansion + errors non-fatal errors that cause the current command + to fail (the default behavior is to make them fatal + errors that cause the shell to exit), and does not reset + the loop state when a shell function is executed (this + allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect + loops in the caller's context). ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that - expand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that + expand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in versions through 4.2. ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the readline editing - buffer. If not set, bbaasshh attempts to preserve what the + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in the results of pathname expansion. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under + If set, aliases are expanded as described above under AALLIIAASSEESS. This option is enabled by default for interac- tive shells. eexxttddeebbuugg - If set, behavior intended for use by debuggers is - enabled: + If set at shell invocation, arrange to execute the + debugger profile before the shell starts, identical to + the ----ddeebbuuggggeerr option. If set after invocation, behav- + ior intended for use by debuggers is enabled: 11.. The --FF option to the ddeeccllaarree builtin displays the source file name and line number corresponding to each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and + 22.. If the command run by the DDEEBBUUGG trap returns a + non-zero value, the next command is skipped and not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), a call to - rreettuurrnn is simulated. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), the shell + simulates a call to rreettuurrnn. + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described in their descriptions above. - 55.. Function tracing is enabled: command substitu- + 55.. Function tracing is enabled: command substitu- tion, shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps. - 66.. Error tracing is enabled: command substitution, - shell functions, and subshells invoked with (( + 66.. Error tracing is enabled: command substitution, + shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the EERRRR trap. eexxttgglloobb If set, the extended pattern matching features described above under PPaatthhnnaammee EExxppaannssiioonn are enabled. eexxttqquuoottee - If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed - within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double quotes. This option is enabled by default. ffaaiillgglloobb - If set, patterns which fail to match filenames during + If set, patterns which fail to match filenames during pathname expansion result in an expansion error. ffoorrccee__ffiiggnnoorree - If set, the suffixes specified by the FFIIGGNNOORREE shell - variable cause words to be ignored when performing word + If set, the suffixes specified by the FFIIGGNNOORREE shell + variable cause words to be ignored when performing word completion even if the ignored words are the only possi- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a - description of FFIIGGNNOORREE. This option is enabled by + description of FFIIGGNNOORREE. This option is enabled by default. gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- parisons. That is, the current locale's collating - sequence is not taken into account, so bb will not col- - late between AA and BB, and upper-case and lower-case + sequence is not taken into account, so bb will not col- + late between AA and BB, and upper-case and lower-case ASCII characters will collate together. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, only directories and subdirectories match. ggnnuu__eerrrrffmmtt If set, shell error messages are written in the standard GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named - by the value of the HHIISSTTFFIILLEE variable when the shell + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell exits, rather than overwriting the file. hhiissttrreeeeddiitt - If set, and rreeaaddlliinnee is being used, a user is given the + If set, and rreeaaddlliinnee is being used, a user is given the opportunity to re-edit a failed history substitution. hhiissttvveerriiffyy - If set, and rreeaaddlliinnee is being used, the results of his- - tory substitution are not immediately passed to the - shell parser. Instead, the resulting line is loaded + If set, and rreeaaddlliinnee is being used, the results of his- + tory substitution are not immediately passed to the + shell parser. Instead, the resulting line is loaded into the rreeaaddlliinnee editing buffer, allowing further modi- fication. hhoossttccoommpplleettee If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE + perform hostname completion when a word containing a @@ + is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE above). This is enabled by default. hhuuppoonneexxiitt If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- active login shell exits. + iinnhheerriitt__eerrrreexxiitt + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + enabled. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word and all remaining characters on that line to be ignored @@ -1459,7 +1506,9 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS nnooccaasseemmaattcchh If set, bbaasshh matches patterns in a case-insensitive fashion when performing matching while executing ccaassee or - [[[[ conditional commands. + [[[[ conditional commands, when performing pattern substi- + tution word expansions, or when filtering possible com- + pletions as part of programmable completion. nnuullllgglloobb If set, bbaasshh allows patterns which match no files (see PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, @@ -1592,7 +1641,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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 + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to the following conditions. The EERRRR trap is not executed if the @@ -1631,7 +1680,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS 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]] + uulliimmiitt [--HHSSaabbccddeeffiikkllmmnnppqqrrssttuuvvxxPPTT [_l_i_m_i_t]] Provides control over the resources available to the shell and to processes started by it, on systems that allow such control. The --HH and --SS options specify that the hard or soft limit is set @@ -1655,6 +1704,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --ff The maximum size of files written by the shell and its children --ii The maximum number of pending signals + --kk The maximum number of kqueues that may be allocated --ll The maximum size that may be locked into memory --mm The maximum resident set size (many systems do not honor this limit) @@ -1670,46 +1720,48 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --vv The maximum amount of virtual memory available to the shell and, on some systems, to its children --xx The maximum number of file locks + --PP The maximum number of pseudoterminals --TT The maximum number of threads If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the new value of the specified resource. If no option is given, then --ff is assumed. Values are in 1024-byte increments, except for --tt, which is in seconds; --pp, which is in units of 512-byte - blocks; 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. + blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values; + and, when in Posix mode, --cc and --ff, which are in 512-byte incre- + ments. The return status is 0 unless an invalid option or argu- + ment is supplied, or an error occurs while setting a new limit. uummaasskk [--pp] [--SS] [_m_o_d_e] The user file-creation mask is set to _m_o_d_e. If _m_o_d_e begins with - a digit, it is interpreted as an octal number; otherwise it is - interpreted as a symbolic mode mask similar to that accepted by - _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is - printed. The --SS option causes the mask to be printed in sym- - bolic form; the default output is an octal number. If the --pp + a digit, it is interpreted as an octal number; otherwise it is + interpreted as a symbolic mode mask similar to that accepted by + _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is + printed. The --SS option causes the mask to be printed in sym- + bolic form; the default output is an octal number. If the --pp option is supplied, and _m_o_d_e is omitted, the output is in a form that may be reused as input. The return status is 0 if the mode - was successfully changed or if no _m_o_d_e argument was supplied, + was successfully changed or if no _m_o_d_e argument was supplied, and false otherwise. uunnaalliiaass [-aa] [_n_a_m_e ...] - Remove each _n_a_m_e from the list of defined aliases. If --aa is - supplied, all alias definitions are removed. The return value + Remove each _n_a_m_e from the list of defined aliases. If --aa is + supplied, all alias definitions are removed. The return value is true unless a supplied _n_a_m_e is not a defined alias. uunnsseett [-ffvv] [-nn] [_n_a_m_e ...] - For each _n_a_m_e, remove the corresponding variable or function. + For each _n_a_m_e, remove the corresponding variable or function. If the --vv option is given, each _n_a_m_e refers to a shell variable, - and that variable is removed. Read-only variables may not be - unset. If --ff is specified, each _n_a_m_e refers to a shell func- - tion, and the function definition is removed. If the --nn option - is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, - _n_a_m_e will be unset rather than the variable it references. --nn - has no effect if the --ff option is supplied. If no options are - supplied, each _n_a_m_e refers to a variable; if there is no vari- - able by that name, any function with that name is unset. Each - unset variable or function is removed from the environment - passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- + and that variable is removed. Read-only variables may not be + unset. If --ff is specified, each _n_a_m_e refers to a shell func- + tion, and the function definition is removed. If the --nn option + is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, + _n_a_m_e will be unset rather than the variable it references. --nn + has no effect if the --ff option is supplied. If no options are + supplied, each _n_a_m_e refers to a variable; if there is no vari- + able by that name, any function with that name is unset. Each + unset variable or function is removed from the environment + passed to subsequent commands. If any of CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- DDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they lose their special properties, even if they are sub- sequently reset. The exit status is true unless a _n_a_m_e is read- @@ -1718,12 +1770,12 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS wwaaiitt [--nn] [_n _._._.] Wait for each specified child process and return its termination status. Each _n may be a process ID or a job specification; if a - job spec is given, all processes in that job's pipeline are - waited for. If _n is not given, all currently active child pro- + 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 + 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 diff --git a/doc/builtins.ps b/doc/builtins.ps index 5d49778..f6aec86 100644 --- a/doc/builtins.ps +++ b/doc/builtins.ps @@ -1,12 +1,12 @@ %!PS-Adobe-3.0 -%%Creator: groff version 1.19.2 -%%CreationDate: Mon Feb 24 08:28:31 2014 +%%Creator: groff version 1.22.3 +%%CreationDate: Wed Aug 31 10:24:00 2016 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Symbol %%+ font Courier -%%DocumentSuppliedResources: procset grops 1.19 2 +%%DocumentSuppliedResources: procset grops 1.22 3 %%Pages: 23 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () @@ -16,7 +16,7 @@ %%PageMedia: Default %%EndDefaults %%BeginProlog -%%BeginResource: procset grops 1.19 2 +%%BeginResource: procset grops 1.22 3 %!PS-Adobe-3.0 Resource-ProcSet /setpacking where{ pop @@ -74,6 +74,7 @@ exch pop add exch pop /level0 save def 1 setlinecap 1 setlinejoin +DEFS/BPhook known{DEFS begin BPhook end}if 72 RES div dup scale LS{ 90 rotate @@ -139,7 +140,10 @@ pop findfont dup maxlength 1 index/FontName known not{1 add}if dict begin { -1 index/FID ne{def}{pop pop}ifelse +1 index/FID ne +2 index/UniqueID ne +and +{def}{pop pop}ifelse }forall /Encoding exch def dup/FontName exch def @@ -177,8 +181,10 @@ newpath userdict begin /showpage{}def /setpagedevice{}def +mark }bind def /PEND{ +cleartomark countdictstack CNT sub{end}repeat level1 restore }bind def @@ -233,11 +239,11 @@ def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron %%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 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S +(ME).219 E F0 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 @@ -255,39 +261,39 @@ ted in this section as accepting options preceded by)-.2 F F2108 (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 +.2 F 1.549(do not treat)108 196.8 R F24.049 E F0(specially)4.049 E +6.549(.T)-.65 G(he)-6.549 E F2(exit)4.049 E F0(,)A F2(logout)4.049 E F0 +(,)A F2 -.18(re)4.049 G(tur).18 E(n)-.15 E F0(,)A F2(br)4.049 E(eak)-.18 +E F0(,)A F2(continue)4.049 E F0(,)A F2(let)4.049 E F0 4.049(,a)C(nd) +-4.049 E F2(shift)4.048 E F0 -.2(bu)4.048 G 1.548(iltins accept and).2 F +.26(process ar)108 208.8 R .26(guments be)-.18 F .26(ginning with)-.15 F +F22.76 E F0 .261(without requiring)2.76 F F22.761 E F0 5.261 +(.O)C .261(ther b)-5.261 F .261(uiltins that accept ar)-.2 F .261 +(guments b)-.18 F .261(ut are not)-.2 F 1.154 +(speci\214ed as accepting options interpret ar)108 220.8 R 1.154 +(guments be)-.18 F 1.154(ginning with)-.15 F F23.654 E F0 1.154 +(as in)3.654 F -.25(va)-.4 G 1.154(lid options and require).25 F F2 +3.654 E F0(to)3.654 E(pre)108 232.8 Q -.15(ve)-.25 G +(nt this interpretation.).15 E F2(:)108 250.8 Q F0([)2.5 E/F3 10 +/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef)144 262.8 R +.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F +(xpanding)-.15 E F3(ar)3.282 E(guments)-.37 E F0 .452(and performing an) +3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144 +274.8 R(return status is zero.)2.5 E F2(.)110.5 291.6 Q F3(\214lename) +6.666 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A F2(sour)108 303.6 Q(ce) +-.18 E F3(\214lename)2.5 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A 1.02 +(Read and e)144 315.6 R -.15(xe)-.15 G 1.02(cute commands from).15 F F3 +(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 +(vironment and return the e)-.4 F(xit)-.15 E 1.458 +(status of the last command e)144 327.6 R -.15(xe)-.15 G 1.458 +(cuted from).15 F F3(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F3 +(\214lename)5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F +.608(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 +E F0 .608(are used to \214nd the directory containing)2.858 F F3 +(\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in) +-5.608 F F4 -.666(PA)3.108 G(TH)-.189 E F0 .832(need not be e)144 351.6 +R -.15(xe)-.15 G 3.332(cutable. When).15 F F2(bash)3.332 E F0 .832 +(is not in)3.332 F F3 .832(posix mode)3.332 F F0 3.332(,t)C .833 (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 @@ -296,2615 +302,2717 @@ E F0 .981(option to the)3.481 F F2(shopt)3.481 E F0 -.2(bu)3.481 G .981 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 +(\214lename)144 387.6 Q F0 1.697(is e)4.197 F -.15(xe)-.15 G 4.197 +(cuted. Otherwise).15 F 1.697(the positional parameters are unchanged.) +4.197 F 1.697(If the)6.697 F F24.197 E F0 1.696(option is)4.197 F +(enabled,)144 399.6 Q F2(sour)3.617 E(ce)-.18 E F0 1.117(inherits an) +3.617 F 3.617(yt)-.15 G 1.117(rap on)-3.617 F F2(DEB)3.617 E(UG)-.1 E F0 +3.618(;i)C 3.618(fi)-3.618 G 3.618(ti)-3.618 G 3.618(sn)-3.618 G 1.118 +(ot, an)-3.618 F(y)-.15 E F2(DEB)3.618 E(UG)-.1 E F0 1.118 +(trap string is sa)3.618 F -.15(ve)-.2 G 3.618(da).15 G(nd)-3.618 E .36 +(restored around the call to)144 411.6 R F2(sour)2.86 E(ce)-.18 E F0 +2.86(,a)C(nd)-2.86 E F2(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F +F2(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86 +(cutes. If).15 F F22.86 E F0(is)2.86 E 1.435 +(not set, and the sourced \214le changes the)144 423.6 R F2(DEB)3.935 E +(UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435 +(alue is retained when)-4.185 F F2(sour)3.935 E(ce)-.18 E F0 3.763 +(completes. The)144 435.6 R 1.262 +(return status is the status of the last command e)3.763 F 1.262 +(xited within the script \(0 if no)-.15 F(commands are e)144 447.6 Q +-.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F3(\214lename)4.41 E +F0(is not found or cannot be read.)2.68 E F2(alias)108 464.4 Q F0([)2.5 +E F2A F0 2.5(][)C F3(name)-2.5 E F0([=)A F3(value)A F0 2.5(].)C +(..])-2.5 E F2(Alias)144 476.4 Q F0 2.724(with no ar)5.224 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 +(option prints the list of aliases in the form)5.224 F F2(alias)5.225 E +F3(name)144 488.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 +3.08 E F0(whose)144 500.4 Q F3(value)2.508 E F0 .009(is gi)2.508 F -.15 +(ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F3(value) +2.509 E F0 .009(causes the ne)2.509 F .009(xt w)-.15 F .009 +(ord to be check)-.1 F .009(ed for alias substi-)-.1 F .579 +(tution when the alias is e)144 512.4 R 3.079(xpanded. F)-.15 F .579 +(or each)-.15 F F3(name)3.079 E F0 .579(in the ar)3.079 F .579 +(gument list for which no)-.18 F F3(value)3.079 E F0 .578(is sup-)3.078 +F 1.313(plied, the name and v)144 524.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 +(returns true unless a)3.814 F F3(name)3.814 E F0 1.314(is gi)3.814 F +-.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E +(which no alias has been de\214ned.)144 536.4 Q F2(bg)108 553.2 Q F0([) +2.5 E F3(jobspec)A F0(...])2.5 E .745(Resume each suspended job)144 +565.2 R F3(jobspec)3.245 E F0 .745 +(in the background, as if it had been started with)3.245 F F2(&)3.244 E +F0 5.744(.I)C(f)-5.744 E F3(job-)4.984 E(spec)144 577.2 Q F0 .671 +(is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the) +-3.171 F F3(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F2 +(bg)5.672 E F3(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419 +(when job control is disabled or)144 589.2 R 2.919(,w)-.4 G .419 +(hen run with job control enabled, an)-2.919 F 2.918(ys)-.15 G +(peci\214ed)-2.918 E F3(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G +(ot)-2.918 E(found or w)144 601.2 Q(as started without job control.)-.1 +E F2(bind)108 618 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 630 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([) +F2-2.5 E F3 -.1(ke)2.5 G(yseq)-.2 E F0(])A F2(bind)108 642 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 +(\214lename)2.5 E F2(bind)108 654 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 +(shell\255command)A F2(bind)108 666 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 +(function\255name)A F2(bind)108 678 Q F0([)2.5 E F2A F3 -.1(ke)2.5 +G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 -.37(re)C +(adline\255command).37 E F0 .238(Display current)144 690 R F2 -.18(re) +2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239 +(nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239 +(equence to a).15 F F2 -.18(re)2.739 G(adline).18 E F0 .239(function or) +2.739 F .476(macro, or set a)144 702 R F2 -.18(re)2.976 G(adline).18 E +F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F +.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F3 +(.inputr)144 714 Q(c)-.37 E F0 2.983(,b).31 G .484 +(ut each binding or command must be passed as a separate ar)-3.183 F +.484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 +(re\255read\255init\255\214le'. Options,)144 726 R(if supplied, ha)2.5 E +.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash-4.2)72 +768 Q(2004 Apr 20)148.735 E(1)203.725 E 0 Cg EP %%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 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 +/Times-Italic@0 SF -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 96 Q F2 -.1(ke) +5.159 G(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey)-.1 G 2.658 +(map to be af).15 F 2.658(fected by the subsequent bindings.)-.25 F +(Acceptable)7.658 E F2 -.1(ke)180 108 S(ymap)-.2 E F0 3.192(names are) +5.882 F F2 3.192(emacs, emacs\255standar)5.692 F 3.193 +(d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E +(vi\255command)180 120 Q F0 4.114(,a)C(nd)-4.114 E F2(vi\255insert)4.114 +E F0(.).68 E F2(vi)6.614 E F0 1.613(is equi)4.114 F -.25(va)-.25 G 1.613 +(lent to).25 F F2(vi\255command)4.113 E F0(\()4.113 E F2(vi\255mo)A(ve) +-.1 E F0 1.613(is also a syn-)4.113 F(on)180 132 Q(ym\);)-.15 E F2 +(emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2 +(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1144 144 Q F0 +(List the names of all)180 144 Q F1 -.18(re)2.5 G(adline).18 E F0 +(functions.)2.5 E F1144 156 Q F0(Display)180 156 Q F1 -.18(re)2.5 +G(adline).18 E F0(function names and bindings in such a w)2.5 E +(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 168 Q +F0(List current)180 168 Q F1 -.18(re)2.5 G(adline).18 E F0 +(function names and bindings.)2.5 E F1144 180 Q F0(Display)180 180 +Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 G +1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo) +-.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 192 S 2.5(yt).1 G +(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 204 Q F0 +(Display)180 204 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5(ys) +-.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo)-.15 G +(utput.)-2.5 E F1144 216 Q F0(Display)180 216 Q F1 -.18(re)2.5 G (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 +(an be re-read.)-2.5 E F1144 228 Q F0(List current)180 228 Q F1 +-.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E +(alues.)-.25 E F1144 240 Q F2(\214lename)2.5 E F0(Read k)180 252 Q +.3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A F1 +144 264 Q F2(function)2.5 E F0(Query about which k)180 276 Q -.15 +(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H(he named).1 +E F2(function)2.5 E F0(.)A F1144 288 Q F2(function)2.5 E F0 +(Unbind all k)180 300 Q -.15(ey)-.1 G 2.5(sb).15 G(ound to the named) +-2.5 E F2(function)2.5 E F0(.)A F1144 312 Q F2 -.1(ke)2.5 G(yseq) +-.2 E F0(Remo)180 324 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H +(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(.)A F1144 +336 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command)A F0(Cause) +180 348 Q F2(shell\255command)4.325 E F0 1.825(to be e)4.325 F -.15(xe) +-.15 G 1.825(cuted whene).15 F -.15(ve)-.25 G(r).15 E F2 -.1(ke)4.325 G +(yseq)-.2 E F0 1.825(is entered.)4.325 F(When)6.825 E F2(shell\255com-) +4.325 E(mand)180 360 Q F0 1.764(is e)4.264 F -.15(xe)-.15 G 1.765 (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 +4.265 E F0 -.25(va)4.015 G 1.765(riable to the contents of the).25 F F1 +-.18(re)180 372 S(adline).18 E F0 1.353(line b)3.853 F(uf)-.2 E 1.353 (fer and the)-.25 F F3(READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353 -(riable to the current location of the).25 F 2.012(insertion point.)180 -348 R 2.011(If the e)7.012 F -.15(xe)-.15 G 2.011 +(riable to the current location of the).25 F 2.011(insertion point.)180 +384 R 2.011(If the e)7.011 F -.15(xe)-.15 G 2.011 (cuted command changes the v).15 F 2.011(alue of)-.25 F F3 -(READLINE_LINE)4.511 E F0(or)4.261 E F3(READLINE_POINT)180 360 Q/F4 9 +(READLINE_LINE)4.512 E F0(or)4.262 E F3(READLINE_POINT)180 396 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 +(alues will be re\215ected in the editing state.)-2.75 E F1144 408 +Q F0 .83(List all k)180 408 R 1.13 -.15(ey s)-.1 H .829 (equences bound to shell commands and the associated commands in a for) -.15 F(-)-.2 E(mat that can be reused as input.)180 384 Q(The return v) -144 400.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 +.15 F(-)-.2 E(mat that can be reused as input.)180 420 Q(The return v) +144 436.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 +E F1(br)108 453.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054 +(Exit from within a)144 465.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1 +(while)2.554 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1 +(select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055 +(is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G +(ls.).15 E F2(n)5.415 E F0 .055(must be)2.795 F/F5 10/Symbol SF2.555 +E F0(1.)2.555 E(If)144 477.6 Q F2(n)3.075 E F0 .215(is greater than the\ + number of enclosing loops, all enclosing loops are e)2.955 F 2.714 +(xited. The)-.15 F .214(return v)2.714 F(alue)-.25 E(is 0 unless)144 +489.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 +(bu)108 506.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 518.4 Q .792 +(ecute the speci\214ed shell b)-.15 F .792(uiltin, passing it)-.2 F F2 (ar)3.293 E(guments)-.37 E F0 3.293(,a).27 G .793(nd return its e)-3.293 -F .792(xit status.)-.15 F .792(This is useful)5.792 F .615 +F .793(xit status.)-.15 F .793(This is useful)5.793 F .616 (when de\214ning a function whose name is the same as a shell b)144 -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 +530.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 +542.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 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 +5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 554.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 571.2 Q F0([)2.5 E F2 -.2(ex)C(pr) +.2 E F0(])A .254(Returns the conte)144 583.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 +.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 595.2 Q +(ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F2 -.2 +(ex)2.824 G(pr).2 E F0(,)A F1(caller)2.824 E F0 .324 (displays the line number and source \214lename of the current)2.824 F -.253(subroutine call.)144 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\ +.254(subroutine call.)144 607.2 R .254(If a non-ne)5.254 F -.05(ga)-.15 +G(ti).05 E .554 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 +F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .253 +(displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\ tine name, and source \214le corresponding to that position in the curr\ -ent e)144 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(]] [\255@]] [)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 +ent e)144 619.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001 +(This e)144 631.2 R .001(xtra information may be used, for e)-.15 F .001 +(xample, to print a stack trace.)-.15 F(The current frame is frame)5 E +3.019(0. The)144 643.2 R .519(return v)3.019 F .519 +(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52 +(cuting a subroutine call or).15 F F2 -.2(ex)3.02 G(pr).2 E F0 .52 +(does not corre-)3.02 F(spond to a v)144 655.2 Q +(alid position in the call stack.)-.25 E F1(cd)108 672 Q F0([)2.5 E F1 +A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F2 +(dir)A F0(])A .322(Change the current directory to)144 684 R F2(dir) +2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321 +(is not supplied, the v)2.822 F .321(alue of the)-.25 F F3(HOME)2.821 E +F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 696 R +3.535(ault. An)-.1 F 3.535(ya)-.15 G 1.035(dditional ar)-3.535 F 1.035 +(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.) +3.535 F 1.036(The v)6.035 F(ariable)-.25 E F3(CDP)3.536 E -.855(AT)-.666 +G(H).855 E F0(de\214nes)3.286 E .85 +(the search path for the directory containing)144 708 R F2(dir)3.35 E F0 +3.35(:e).73 G .849(ach directory name in)-3.35 F F3(CDP)3.349 E -.855 +(AT)-.666 G(H).855 E F0 .849(is searched for)3.099 F F2(dir)144 720 Q F0 +5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665 (irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 -.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .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 +.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665 +(ull directory name)-3.165 F(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E +(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 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(in)144 84 Q/F1 9/Times-Bold@0 SF(CDP)4.163 +E -.855(AT)-.666 G(H).855 E F0 1.663 +(is the same as the current directory)3.913 F 4.162(,i)-.65 G 1.662 +(.e., `)-4.162 F(`)-.74 E/F2 10/Times-Bold@0 SF(.)A F0 -.74('')C 6.662 +(.I).74 G(f)-6.662 E/F3 10/Times-Italic@0 SF(dir)4.512 E F0(be)4.892 E +1.662(gins with a slash \(/\), then)-.15 F F1(CDP)144 96 Q -.855(AT) +-.666 G(H).855 E F0 .19(is not used.)2.44 F(The)5.191 E F22.691 E +F0 .191(option causes)2.691 F F2(cd)2.691 E F0 .191(to use the ph)2.691 +F .191(ysical directory structure by resolving)-.05 F 1.12 +(symbolic links while tra)144 108 R -.15(ve)-.2 G(rsing).15 E F3(dir) +3.62 E F0 1.12(and before processing instances of)3.62 F F3(..)3.62 E F0 +(in)3.62 E F3(dir)3.62 E F0 1.12(\(see also the)3.62 F F23.62 E F0 +.395(option to the)144 120 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 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 .468 -(determined after a successful directory change,)144 132 R F1(cd)2.968 E -F0 .468(will return an unsuccessful status.)2.968 F .467(On systems) -5.467 F .336(that support it, the)144 144 R F12.836 E F0 .336 -(option presents the e)2.836 F .336(xtended attrib)-.15 F .337 +-.25 F .444(ing the link after processing instances of)144 132 R F3(..) +2.943 E F0(in)2.943 E F3(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F3(..) +2.943 E F0 .443(appears in)2.943 F F3(dir)2.943 E F0 2.943(,i)C 2.943 +(ti)-2.943 G 2.943(sp)-2.943 G .443(rocessed by remo)-2.943 F(ving)-.15 +E .744(the immediately pre)144 144 R .744(vious pathname component from) +-.25 F F3(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 F3(dir)3.244 E F0(.)A 1.466(If the)144 156 R F2 +3.966 E F0 1.466(option is supplied with)3.966 F F23.965 E +F0 3.965(,a)C 1.465(nd the current w)-3.965 F 1.465 +(orking directory cannot be successfully)-.1 F .467 +(determined after a successful directory change,)144 168 R F2(cd)2.968 E +F0 .468(will return an unsuccessful status.)2.968 F .468(On systems) +5.468 F .337(that support it, the)144 180 R F22.837 E F0 .336 +(option presents the e)2.836 F .336(xtended attrib)-.15 F .336 (utes associated with a \214le as a directory)-.2 F(.)-.65 E .71(An ar) -144 156 R .71(gument of)-.18 F F13.21 E F0 .71(is con)3.21 F -.15 -(ve)-.4 G .71(rted to).15 F/F3 9/Times-Bold@0 SF($OLDPWD)3.21 E F0 .71 +144 192 R .71(gument of)-.18 F F23.21 E F0 .71(is con)3.21 F -.15 +(ve)-.4 G .71(rted to).15 F F1($OLDPWD)3.21 E F0 .71 (before the directory change is attempted.)2.96 F .71(If a non-)5.71 F -.106(empty directory name from)144 168 R F3(CDP)2.606 E -.855(AT)-.666 G -(H).855 E F0 .107(is used, or if)2.356 F F12.607 E F0 .107 -(is the \214rst ar)2.607 F .107(gument, and the directory change)-.18 F -.038(is successful, the absolute pathname of the ne)144 180 R 2.538(ww) +.107(empty directory name from)144 204 R F1(CDP)2.607 E -.855(AT)-.666 G +(H).855 E F0 .107(is used, or if)2.357 F F22.607 E F0 .106 +(is the \214rst ar)2.607 F .106(gument, and the directory change)-.18 F +.038(is successful, the absolute pathname of the ne)144 216 R 2.538(ww) -.25 G .038(orking directory is written to the standard output.)-2.638 F -(The return v)144 192 Q(alue is true if the directory w)-.25 E -(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F1(command)108 -208.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 220.8 Q F2(command)2.956 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 .502(commands found in the)144 232.8 R F3 --.666(PA)3.002 G(TH)-.189 E F0 .502(are e)2.752 F -.15(xe)-.15 G 3.002 -(cuted. If).15 F(the)3.002 E F13.002 E F0 .502(option is gi)3.002 -F -.15(ve)-.25 G .501(n, the search for).15 F F2(command)3.201 E F0(is) -3.771 E .399(performed using a def)144 244.8 R .399(ault v)-.1 F .399 -(alue for)-.25 F F3 -.666(PA)2.899 G(TH)-.189 E F0 .4 +(The return v)144 228 Q(alue is true if the directory w)-.25 E +(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F2(command)108 +244.8 Q F0([)2.5 E F2(\255pVv)A F0(])A F3(command)2.5 E F0([)2.5 E F3 +(ar)A(g)-.37 E F0(...])2.5 E(Run)144 256.8 Q F3(command)2.765 E F0(with) +3.335 E F3(ar)2.895 E(gs)-.37 E F0 .065 +(suppressing the normal shell function lookup.)2.835 F .064(Only b)5.064 +F .064(uiltin commands or)-.2 F .501(commands found in the)144 268.8 R +F1 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G +3.002(cuted. If).15 F(the)3.002 E F23.002 E F0 .502(option is gi) +3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F3(command)3.202 E +F0(is)3.772 E .4(performed using a def)144 280.8 R .4(ault v)-.1 F .4 +(alue for)-.25 F F1 -.666(PA)2.9 G(TH)-.189 E F0 .399 (that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.4 E .175(either the)144 256.8 R F12.675 E F0(or)2.675 E F1 -2.675 E F0 .175(option is supplied, a description of)2.675 F F2(command) -2.875 E F0 .174(is printed.)3.445 F(The)5.174 E F12.674 E F0 .174 -(option causes)2.674 F 3.317(as)144 268.8 S .817(ingle w)-3.317 F .817 -(ord indicating the command or \214lename used to in)-.1 F -.2(vo)-.4 G --.1(ke).2 G F2(command)3.618 E F0 .818(to be displayed; the)4.088 F F1 -144 280.8 Q F0 .25(option produces a more v)2.75 F .25 -(erbose description.)-.15 F .249(If the)5.25 F F12.749 E F0(or) -2.749 E F12.749 E F0 .249(option is supplied, the e)2.749 F .249 -(xit status)-.15 F 1.004(is 0 if)144 292.8 R F2(command)3.704 E F0 -.1 -(wa)4.274 G 3.504(sf).1 G 1.005(ound, and 1 if not.)-3.504 F 1.005 -(If neither option is supplied and an error occurred or)6.005 F F2 -(command)144.2 304.8 Q F0 1.599(cannot be found, the e)4.869 F 1.599 -(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.598 -(xit status of the)-.15 F F1(command)4.098 E F0 -.2(bu)144 316.8 S -(iltin is the e).2 E(xit status of)-.15 E F2(command)2.5 E F0(.).77 E F1 -(compgen)108 333.6 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(wor)-2.5 E(d) --.37 E F0(])A .012(Generate possible completion matches for)144 345.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.513(yo)-.15 G(ption)-2.513 E .982 -(accepted by the)144 357.6 R F1(complete)3.482 E F0 -.2(bu)3.481 G .981 -(iltin with the e).2 F .981(xception of)-.15 F F13.481 E F0(and) -3.481 E F13.481 E F0 3.481(,a)C .981(nd write the matches to the) --3.481 F 1.415(standard output.)144 369.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 381.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 405.6 R .352 +5.399 E .174(either the)144 292.8 R F22.674 E F0(or)2.674 E F2 +2.674 E F0 .175(option is supplied, a description of)2.674 F F3 +(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F22.675 E +F0 .175(option causes)2.675 F 3.318(as)144 304.8 S .818(ingle w)-3.318 F +.817(ord indicating the command or \214lename used to in)-.1 F -.2(vo) +-.4 G -.1(ke).2 G F3(command)3.617 E F0 .817(to be displayed; the)4.087 +F F2144 316.8 Q F0 .249(option produces a more v)2.749 F .249 +(erbose description.)-.15 F .249(If the)5.249 F F22.749 E F0(or) +2.749 E F22.75 E F0 .25(option is supplied, the e)2.75 F .25 +(xit status)-.15 F 1.005(is 0 if)144 328.8 R F3(command)3.705 E F0 -.1 +(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004 +(If neither option is supplied and an error occurred or)6.005 F F3 +(command)144.2 340.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599 +(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599 +(xit status of the)-.15 F F2(command)4.099 E F0 -.2(bu)144 352.8 S +(iltin is the e).2 E(xit status of)-.15 E F3(command)2.5 E F0(.).77 E F2 +(compgen)108 369.6 Q F0([)2.5 E F3(option)A F0 2.5(][)C F3(wor)-2.5 E(d) +-.37 E F0(])A .013(Generate possible completion matches for)144 381.6 R +F3(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F3(option)2.513 +E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981 +(accepted by the)144 393.6 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981 +(iltin with the e).2 F .981(xception of)-.15 F F23.481 E F0(and) +3.481 E F23.481 E F0 3.481(,a)C .982(nd write the matches to the) +-3.481 F .131(standard output.)144 405.6 R .131(When using the)5.131 F +F22.631 E F0(or)2.631 E F22.631 E F0 .131(options, the v) +2.631 F .13(arious shell v)-.25 F .13(ariables set by the program-)-.25 +F(mable completion f)144 417.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 441.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 -417.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 429.6 Q F2(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 453.6 Q +453.6 R(If)5.02 E F3(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) +2.52 F(those completions matching)144 465.6 Q F3(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(The return v)144 489.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 470.4 Q F0([)3.729 E F1(\255abcdefgjksuv)A F0 3.729(][)C -F1-3.729 E F2(comp-option)3.729 E F0 3.729(][)C F1(\255DE)-3.729 E -F0 3.728(][)C F1-3.728 E F2(action)3.728 E F0 3.728(][)C F1 --3.728 E F2(globpat)3.728 E F0 3.728(][)C F1-3.728 E F2(wor)3.728 -E(dlist)-.37 E F0 3.728(][)C F1-3.728 E F2(func-)3.728 E(tion)108 -482.4 Q F0 2.5(][)C F1-2.5 E F2(command)2.5 E F0(])A([)144 494.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 -506.4 Q F0([)2.5 E F1(\255DE)A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E -.634(Specify ho)144 518.4 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634 -(uments to each).18 F F2(name)3.134 E F0 .634(should be completed.)3.134 -F .633(If the)5.634 F F13.133 E F0 .633 +(lid option is supplied, or no matches were generated.).25 E F2 +(complete)108 506.4 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C +F2-3.728 E F3(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E +F0 3.728(][)C F2-3.728 E F3(action)3.728 E F0 3.728(][)C F2 +-3.728 E F3(globpat)3.728 E F0 3.729(][)C F2-3.729 E F3(wor)3.729 +E(dlist)-.37 E F0 3.729(][)C F2-3.729 E F3(func-)3.729 E(tion)108 +518.4 Q F0 2.5(][)C F2-2.5 E F3(command)2.5 E F0(])A([)144 530.4 Q +F2A F3(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F3(pr)2.5 E +(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F3(suf)2.5 E<8c78>-.18 E F0(]) +A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2(complete \255pr)108 +542.4 Q F0([)2.5 E F2(\255DE)A F0 2.5(][)C F3(name)-2.5 E F0(...])2.5 E +.634(Specify ho)144 554.4 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634 +(uments to each).18 F F3(name)3.134 E F0 .634(should be completed.)3.134 +F .633(If the)5.634 F F23.133 E F0 .633 (option is supplied, or if no)3.133 F .139(options are supplied, e)144 -530.4 R .139(xisting completion speci\214cations are printed in a w)-.15 +566.4 R .139(xisting completion speci\214cations are printed in a w)-.15 F .14(ay that allo)-.1 F .14(ws them to be)-.25 F .31(reused as input.) -144 542.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 +144 578.4 R(The)5.31 E F22.81 E F0 .31(option remo)2.81 F -.15(ve) +-.15 G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F3 (name)2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E -F2(name)2.81 E F0(s)A 1.346 -(are supplied, all completion speci\214cations.)144 554.4 R(The)6.347 E -F13.847 E F0 1.347(option indicates that the remaining options) -3.847 F .5(and actions should apply to the `)144 566.4 R(`def)-.74 E +F3(name)2.81 E F0(s)A 1.346 +(are supplied, all completion speci\214cations.)144 590.4 R(The)6.347 E +F23.847 E F0 1.347(option indicates that the remaining options) +3.847 F .5(and actions should apply to the `)144 602.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 -578.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 +614.4 S .955(ommand for which no completion has pre)-3.455 F .955 +(viously been de\214ned.)-.25 F(The)5.955 E F23.455 E F0 .955 (option indicates that)3.455 F .065 -(the remaining options and actions should apply to `)144 590.4 R +(the remaining options and actions should apply to `)144 626.4 R (`empty')-.74 E 2.564('c)-.74 G .064 (ommand completion; that is, comple-)-2.564 F -(tion attempted on a blank line.)144 602.4 Q 1.437 +(tion attempted on a blank line.)144 638.4 Q 1.437 (The process of applying these completion speci\214cations when w)144 -626.4 R 1.438(ord completion is attempted is)-.1 F(described abo)144 -638.4 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E +662.4 R 1.438(ord completion is attempted is)-.1 F(described abo)144 +674.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E (ogrammable Completion)-.18 E F0(.)A .556 -(Other options, if speci\214ed, ha)144 662.4 R .856 -.15(ve t)-.2 H .555 +(Other options, if speci\214ed, ha)144 698.4 R .856 -.15(ve t)-.2 H .555 (he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555 -(guments to the)-.18 F F13.055 E F0(,)A F13.055 E F0 3.055 -(,a)C(nd)-3.055 E F13.055 E F0 .722(options \(and, if necessary) -144 674.4 R 3.222(,t)-.65 G(he)-3.222 E F13.222 E F0(and)3.222 E -F13.222 E F0 .723 +(guments to the)-.18 F F23.055 E F0(,)A F23.055 E F0 3.055 +(,a)C(nd)-3.055 E F23.055 E F0 .722(options \(and, if necessary) +144 710.4 R 3.222(,t)-.65 G(he)-3.222 E F23.222 E F0(and)3.222 E +F23.222 E F0 .723 (options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E -(sion before the)144 686.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 698.4 Q -F2(comp-option)2.5 E F0(The)184 710.4 Q F2(comp-option)2.791 E F0 .291 -(controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec') -.15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291 -(yond the simple)-.15 F(generation of completions.)184 722.4 Q F2 -(comp-option)5 E F0(may be one of:)2.5 E(GNU Bash-4.2)72 768 Q +(sion before the)144 722.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(GNU Bash-4.2)72 768 Q (2004 Apr 20)148.735 E(3)203.725 E 0 Cg EP %%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.876(Use readline')10 F 5.376(sd)-.55 G(ef)-5.376 -E 2.875(ault \214lename completion if the compspec generates no)-.1 F -(matches.)224 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.637<798c>-.15 -G(le-)-2.637 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 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 +/Times-Italic@0 SF(comp-option)2.5 E F0(The)184 96 Q F2(comp-option) +2.791 E F0 .291(controls se)2.791 F -.15(ve)-.25 G .291 +(ral aspects of the compspec').15 F 2.791(sb)-.55 G(eha)-2.791 E .291 +(vior be)-.2 F .291(yond the simple)-.15 F(generation of completions.) +184 108 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 +120 Q F0 .281(Perform the rest of the def)224 132 R(ault)-.1 E F1(bash) +2.781 E F0 .281(completions if the compspec generates no)2.781 F +(matches.)224 144 Q F1(default)184 156 Q F0 2.876(Use readline')224 156 +R 5.376(sd)-.55 G(ef)-5.376 E 2.875 +(ault \214lename completion if the compspec generates no)-.1 F(matches.) +224 168 Q F1(dir)184 180 Q(names)-.15 E F0(Perform directory name compl\ +etion if the compspec generates no matches.)224 192 Q F1(\214lenames)184 +204 Q F0 -.7(Te)224 216 S .137(ll readline that the compspec generates \ +\214lenames, so it can perform an).7 F 2.637<798c>-.15 G(le-)-2.637 E +.134(name\255speci\214c processing \(lik)224 228 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 240 R .45 +(Intended to be used with shell)5.45 F(functions.)224 252 Q F1(noquote) +184 264 Q F0 -.7(Te)224 264 S .814 (ll readline not to quote the completed w).7 F .814(ords if the)-.1 F 3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F -(\214lenames is the def)224 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 .583(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 +(\214lenames is the def)224 276 Q(ault\).)-.1 E F1(nosort)184 288 Q F0 +-.7(Te)224 288 S(ll readline not to sort the list of possible completio\ +ns alphabetically).7 E(.)-.65 E F1(nospace)184 300 Q F0 -.7(Te)224 300 S +.22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1 +F .22(ords completed at the end)-.1 F(of the line.)224 312 Q F1 +(plusdirs)184 324 Q F0 1.985(After an)224 324 R 4.485(ym)-.15 G 1.985 +(atches de\214ned by the compspec are generated, directory name)-4.485 F +.583(completion is attempted and an)224 336 R 3.084(ym)-.15 G .584 +(atches are added to the results of the other)-3.084 F(actions.)224 348 +Q F1144 360 Q F2(action)2.5 E F0(The)184 372 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) +384 Q F0(Alias names.)224 384 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(arrayv)184 396 Q(ar)-.1 E F0(Array v)224 408 Q +(ariable names.)-.25 E F1(binding)184 420 Q(Readline)224 420 Q F0 -.1 +(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 432 S(iltin) +.2 E F0(Names of shell b)224 432 Q(uiltin commands.)-.2 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 444 +Q F0(Command names.)224 456 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 468 Q(ectory)-.18 E F0(Directory names.)224 480 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 492 +Q F0(Names of disabled shell b)224 504 Q(uiltins.)-.2 E F1(enabled)184 +516 Q F0(Names of enabled shell b)224 516 Q(uiltins.)-.2 E F1(export)184 +528 Q F0(Names of e)224 528 Q(xported shell v)-.15 E 2.5(ariables. May) -.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 -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 +540 Q F0(File names.)224 540 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(function)184 552 Q F0(Names of shell functions.)224 564 +Q F1(gr)184 576 Q(oup)-.18 E F0(Group names.)224 576 Q (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 +588 Q F0(Help topics as accepted by the)224 600 Q F1(help)2.5 E F0 -.2 +(bu)2.5 G(iltin.).2 E F1(hostname)184 612 Q F0(Hostnames, as tak)224 624 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) +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 636 Q F0 +(Job names, if job control is acti)224 636 Q -.15(ve)-.25 G 5(.M).15 G +(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 648 S +(yw).1 E(ord)-.1 E F0(Shell reserv)224 660 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 +672 Q F0(Names of running jobs, if job control is acti)224 672 Q -.15 +(ve)-.25 G(.).15 E F1(ser)184 684 Q(vice)-.1 E F0(Service names.)224 684 +Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 696 +Q F0 -1.11(Va)224 696 S(lid ar)1.11 E(guments for the)-.18 E F12.5 +E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 +(shopt)184 708 Q F0(Shell option names as accepted by the)224 708 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E(GNU Bash-4.2)72 768 Q (2004 Apr 20)148.735 E(4)203.725 E 0 Cg EP %%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.056(is e)3.556 F -.15(xe)-.15 G 1.056 -(cuted in a subshell en).15 F 1.056 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(signal)184 84 Q F0 +(Signal names.)224 84 Q F1(stopped)184 96 Q F0 +(Names of stopped jobs, if job control is acti)224 96 Q -.15(ve)-.25 G +(.).15 E F1(user)184 108 Q F0(User names.)224 108 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 120 S +(riable).1 E F0(Names of all shell v)224 120 Q 2.5(ariables. May)-.25 F +(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 132 Q/F2 +10/Times-Italic@0 SF(command)2.5 E(command)184 144 Q F0 1.056(is e)3.556 +F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056 (vironment, and its output is used as the possible)-.4 F(completions.) -184 108 Q F1144 120 Q F2(function)2.5 E F0 .113 -(The shell function)184 132 R F2(function)2.614 E F0 .114(is e)2.614 F +184 156 Q F1144 168 Q F2(function)2.5 E F0 .113 +(The shell function)184 180 R F2(function)2.614 E F0 .114(is e)2.614 F -.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 -(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 144 R +(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 192 R -.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1 ($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816 (he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 -(are being completed, the second ar)184 156 R 1.407(gument \()-.18 F F1 +(are being completed, the second ar)184 204 R 1.407(gument \()-.18 F F1 ($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 -(ord being completed, and the)-.1 F .104(third ar)184 168 R .104 +(ord being completed, and the)-.1 F .104(third ar)184 216 R .104 (gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w) -2.604 F .104(ord preceding the w)-.1 F .103 -(ord being completed on the current com-)-.1 F .101(mand line.)184 180 R +(ord being completed on the current com-)-.1 F .101(mand line.)184 228 R .101(When it \214nishes, the possible completions are retrie)5.101 F -.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the) --.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 192 Q(Y)-.828 E F0(array v)2.25 -E(ariable.)-.25 E F1144 204 Q F2(globpat)2.5 E F0 1.008 -(The pathname e)184 216 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507 +-.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 240 Q(Y)-.828 E F0(array v)2.25 +E(ariable.)-.25 E F1144 252 Q F2(globpat)2.5 E F0 1.008 +(The pathname e)184 264 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507 E F0 1.007(is e)3.507 F 1.007(xpanded to generate the possible comple-) --.15 F(tions.)184 228 Q F1144 240 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 252 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534 +-.15 F(tions.)184 276 Q F1144 288 Q F2(pr)2.5 E(e\214x)-.37 E(pr) +184 300 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534 (ginning of each possible completion after all other options ha)-.15 F --.15(ve)-.2 G(been applied.)184 264 Q F1144 276 Q F2(suf)2.5 E -2.81(\214x suf)-.18 F<8c78>-.18 E F0 +-.15(ve)-.2 G(been applied.)184 312 Q F1144 324 Q F2(suf)2.5 E +<8c78>-.18 E(suf)184 324 Q<8c78>-.18 E F0 (is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 288 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 300 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 336 Q F2(wor)2.5 E +(dlist)-.37 E F0(The)184 348 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14 (is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139 (special v)3.39 F 1.139(ariable as delimiters, and)-.25 F 2.007 -(each resultant w)184 312 R 2.007(ord is e)-.1 F 4.507(xpanded. The)-.15 +(each resultant w)184 360 R 2.007(ord is e)-.1 F 4.507(xpanded. The)-.15 F 2.008(possible completions are the members of the)4.507 F -(resultant list which match the w)184 324 Q(ord being completed.)-.1 E -F1144 336 Q F2(\214lterpat)2.5 E(\214lterpat)184 348 Q F0 .456 +(resultant list which match the w)184 372 Q(ord being completed.)-.1 E +F1144 384 Q F2(\214lterpat)2.5 E(\214lterpat)184 396 Q F0 .456 (is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F .455(is applied to the list of possible)2.956 F 1.596 -(completions generated by the preceding options and ar)184 360 R 1.596 -(guments, and each completion)-.18 F(matching)184 372 Q F2(\214lterpat) +(completions generated by the preceding options and ar)184 408 R 1.596 +(guments, and each completion)-.18 F(matching)184 420 Q F2(\214lterpat) 3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704 (rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 (in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 -(tes the pattern;).05 F(in this case, an)184 384 Q 2.5(yc)-.15 G +(tes the pattern;).05 F(in this case, an)184 432 Q 2.5(yc)-.15 G (ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .466(The return v)144 400.8 R .466 +-.15(ve)-.15 G(d.).15 E .466(The return v)144 448.8 R .466 (alue is true unless an in)-.25 F -.25(va)-.4 G .466 (lid option is supplied, an option other than).25 F F12.967 E F0 (or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 -(plied without a)144 412.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 +(plied without a)144 460.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 (gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H -1.361(ompletion speci\214cation for a).15 F F2(name)144 424.8 Q F0 +1.361(ompletion speci\214cation for a).15 F F2(name)144 472.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(compopt)108 489.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 +(name)-2.5 E F0(])A .447(Modify completion options for each)144 501.6 R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 .447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726 -(completion if no)144 465.6 R F2(name)3.226 E F0 3.226(sa)C .726 +(completion if no)144 513.6 R F2(name)3.226 E F0 3.226(sa)C .726 (re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) C .725(re gi)-3.225 F -.15(ve)-.25 G .725 -(n, display the completion options for).15 F(each)144 477.6 Q F2(name) +(n, display the completion options for).15 F(each)144 525.6 Q F2(name) 3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) 5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 489.6 Q F0 -.2(bu) +F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 537.6 Q F0 -.2(bu) 2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) -5.297 E F12.797 E F0 .297 (option indicates that the remaining options should apply to)2.797 F -1.227(the `)144 501.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ +1.227(the `)144 549.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ mmand completion; that is, completion attempted on a command for which \ -no)-3.727 F 2.178(completion has pre)144 513.6 R 2.178 +no)-3.727 F 2.178(completion has pre)144 561.6 R 2.178 (viously been de\214ned.)-.25 F(The)7.178 E F14.678 E F0 2.177 (option indicates that the remaining options)4.677 F(should apply to `) -144 525.6 Q(`empty')-.74 E 2.5('c)-.74 G +144 573.6 Q(`empty')-.74 E 2.5('c)-.74 G (ommand completion; that is, completion attempted on a blank line.)-2.5 -E 1.387(The return v)144 549.6 R 1.387(alue is true unless an in)-.25 F +E 1.387(The return v)144 597.6 R 1.387(alue is true unless an in)-.25 F -.25(va)-.4 G 1.388 (lid option is supplied, an attempt is made to modify the).25 F -(options for a)144 561.6 Q F2(name)2.5 E F0 +(options for a)144 609.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.754(Resume the ne)144 590.4 R 1.754 +(xists, or an output error occurs.)-.15 E F1(continue)108 626.4 Q F0([) +2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 638.4 R 1.754 (xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1 (select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753 -(is speci\214ed,)4.493 F 1.208(resume at the)144 602.4 R F2(n)3.709 E F0 +(is speci\214ed,)4.493 F 1.208(resume at the)144 650.4 R F2(n)3.709 E F0 1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F4 10 /Symbol SF3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209 (is greater than the number of enclosing)3.949 F .514 -(loops, the last enclosing loop \(the `)144 614.4 R(`top-le)-.74 E -.15 +(loops, the last enclosing loop \(the `)144 662.4 R(`top-le)-.74 E -.15 (ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513 (The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is) -3.013 E(not greater than or equal to 1.)144 626.4 Q F1(declar)108 643.2 +3.013 E(not greater than or equal to 1.)144 674.4 Q F1(declar)108 691.2 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1 -(typeset)108 655.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 +(typeset)108 703.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 -2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E 1.264(Declare v)144 667.2 R 1.264(ariables and/or gi)-.25 F +(..])-2.5 E 1.264(Declare v)144 715.2 R 1.264(ariables and/or gi)-.25 F 1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no) 3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F --.25(va)144 679.2 S 3.483(riables. The).25 F F13.483 E F0 .983 +-.25(va)144 727.2 S 3.483(riables. The).25 F F13.483 E F0 .983 (option will display the attrib)3.483 F .983(utes and v)-.2 F .982 (alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 -3.482 E F0 .982(is used)3.482 F(with)144 691.2 Q F2(name)2.774 E -F0(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 -2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275 -(re ignored.)-2.775 F(When)5.275 E F12.775 E F0 .275(is supplied) -2.775 F(without)144 703.2 Q F2(name)4.814 E F0(ar)4.814 E 2.314 -(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313 -(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F -(attrib)144 715.2 Q 1.181(utes speci\214ed by the additional options.) --.2 F 1.182(If no other options are supplied with)6.181 F F13.682 -E F0(,)A F1(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 -727.2 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12 -(ariables. The)-.25 F F13.12 E F0 .62 -(option will restrict the display)3.12 F(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(5)203.725 E 0 Cg EP +3.482 E F0 .982(is used)3.482 F(GNU Bash-4.2)72 768 Q(2004 Apr 20) +148.735 E(5)203.725 E 0 Cg EP %%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 1.29 -(to shell functions.)144 84 R(The)6.29 E/F1 10/Times-Bold@0 SF3.79 -E F0 1.291(option inhibits the display of function de\214nitions; only \ -the function)3.791 F .948(name and attrib)144 96 R .948 -(utes are printed.)-.2 F .948(If the)5.948 F F1(extdeb)3.448 E(ug)-.2 E -F0 .948(shell option is enabled using)3.448 F F1(shopt)3.448 E F0 3.448 -(,t)C .948(he source)-3.448 F 1.342(\214le name and line number where t\ -he function is de\214ned are displayed as well.)144 108 R(The)6.342 E F1 -3.842 E F0(option)3.842 E(implies)144 120 Q F13.892 E F0 -6.392(.T)C(he)-6.392 E F13.892 E F0 1.391(option forces v)3.892 F -1.391(ariables to be created or modi\214ed at the global scope, e)-.25 F --.15(ve)-.25 G(n).15 E(when)144 132 Q F1(declar)4.382 E(e)-.18 E F0 -1.882(is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(with)144 84 Q/F1 10/Times-Italic@0 SF(name) +2.774 E F0(ar)2.774 E .274(guments, additional options, other than)-.18 +F/F2 10/Times-Bold@0 SF2.775 E F0(and)2.775 E F22.775 E F0 +2.775(,a)C .275(re ignored.)-2.775 F(When)5.275 E F22.775 E F0 +.275(is supplied)2.775 F(without)144 96 Q F1(name)4.814 E F0(ar)4.814 E +2.314(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F +2.313(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 +F(attrib)144 108 Q 1.181(utes speci\214ed by the additional options.)-.2 +F 1.182(If no other options are supplied with)6.181 F F23.682 E F0 +(,)A F2(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 120 R +.62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12(ariables. The) +-.25 F F23.12 E F0 .62(option will restrict the display)3.12 F +1.29(to shell functions.)144 132 R(The)6.29 E F23.79 E F0 1.291(o\ +ption inhibits the display of function de\214nitions; only the function) +3.791 F .948(name and attrib)144 144 R .948(utes are printed.)-.2 F .948 +(If the)5.948 F F2(extdeb)3.448 E(ug)-.2 E F0 .948 +(shell option is enabled using)3.448 F F2(shopt)3.448 E F0 3.448(,t)C +.948(he source)-3.448 F 1.69(\214le name and line number where each)144 +156 R F1(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F +(The)6.69 E F24.19 E F0(option)4.19 E(implies)144 168 Q F2 +3.892 E F0 6.392(.T)C(he)-6.392 E F23.892 E F0 1.391 +(option forces v)3.892 F 1.391 +(ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 +(ve)-.25 G(n).15 E(when)144 180 Q F2(declar)4.382 E(e)-.18 E F0 1.882 +(is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F 1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F -(wing)-.25 E .794(options can be used to restrict output to v)144 144 R +(wing)-.25 E .794(options can be used to restrict output to v)144 192 R .794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 F -1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 156 Q(utes:)-.2 E F1 -144 168 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 180 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 -192 Q F0(Use function names only)26.97 E(.)-.65 E F1144 204 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 216 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 228 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 240 R(upper)2.5 E(-case attrib)-.2 E -(ute is disabled.)-.2 E F1144 252 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 264 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 276 Q F0 4.032(,e)C 1.532(xcept for changing the)-4.182 F F1 -4.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 288 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 300 -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 312 -Q F1144 324 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 336 Q(The trace attrib)5 E -(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1144 348 -Q F0 .91(When the v)24.74 F .909(ariable is assigned a v)-.25 F .909 +1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 204 Q(utes:)-.2 E F2 +144 216 Q F0(Each)180 216 Q F1(name)2.5 E F0(is an inde)2.5 E -.15 +(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2(Arrays)2.5 +E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2144 228 Q F0(Each)180 +228 Q F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v) +.15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G +(\).).15 E F2144 240 Q F0(Use function names only)180 240 Q(.)-.65 +E F2144 252 Q F0 .557(The v)180 252 R .558 +(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 +(va)-.25 G .558(luation \(see).25 F/F3 9/Times-Bold@0 SF .558 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 264 Q F0(abo)2.25 +E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)-2.5 E +(ariable is assigned a v)-.25 E(alue.)-.25 E F2144 276 Q F0 .91 +(When the v)180 276 R .909(ariable is assigned a v)-.25 F .909 +(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 +G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 288 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 300 Q +F0(Gi)180 300 Q 1.619 -.15(ve e)-.25 H(ach).15 E F1(name)3.819 E F0(the) +3.819 E F1(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E +1.519(That other v)180 312 R 1.519(ariable is de\214ned by the v)-.25 F +1.518(alue of)-.25 F F1(name)4.018 E F0 6.518(.A)C 1.518 +(ll references, assignments, and)-6.518 F(attrib)180 324 Q .226 +(ute modi\214cations to)-.2 F F1(name)2.726 E F0 2.726(,e)C .226 +(xcept those using or changing the)-2.876 F F22.726 E F0(attrib) +2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 336 R +.809(ariable referenced by)-.25 F F1(name)3.308 E F0 1.908 -.55('s v)D +3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2 +F(applied to array v)180 348 Q(ariables.)-.25 E F2144 360 Q F0 +(Mak)180 360 Q(e)-.1 E F1(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E +7.546(.T)-.65 G 2.546(hese names cannot then be assigned v)-7.546 F +2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 372 +Q F2144 384 Q F0(Gi)180 384 Q .73 -.15(ve e)-.25 H(ach).15 E F1 +(name)2.93 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E +2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2(DEB)2.929 +E(UG)-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0 +(traps from the calling shell.)180 396 Q(The trace attrib)5 E +(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2144 408 +Q F0 .909(When the v)180 408 R .909(ariable is assigned a v)-.25 F .909 (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 360 R(lo) -2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 -372 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 388.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 400.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 412.8 Q F1 -(declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835 -E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335 -(local, as with the)2.835 F F1(local)2.835 E F0 .335 -(command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.283 -(is supplied.)144 424.8 R 1.283(If a v)6.283 F 1.283 -(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783 -(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.282 -(ariable is set to)-.25 F F2(value)3.782 E F0(.)A .926(When using)144 -436.8 R F13.426 E F0(or)3.426 E F13.426 E F0 .927 -(and the compound assignment syntax to create array v)3.426 F .927 -(ariables, additional)-.25 F(attrib)144 448.8 Q .592(utes do not tak)-.2 +(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 420 R(lo)2.5 +E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 432 Q +F0(Mark)180 432 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E +(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .121 +(Using `+' instead of `\255' turns of)144 448.8 R 2.621(ft)-.25 G .121 +(he attrib)-2.621 F .121(ute instead, with the e)-.2 F .12 +(xceptions that)-.15 F F2(+a)2.62 E F0 .12(may not be used)2.62 F .644 +(to destro)144 460.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) +-3.144 F .644(ariable and)-.25 F F2(+r)3.145 E F0 .645(will not remo) +3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.145 +(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 472.8 Q F2 +(declar)2.835 E(e)-.18 E F0(and)2.835 E F2(typeset)2.835 E F0(mak)2.835 +E 2.835(ee)-.1 G(ach)-2.835 E F1(name)2.835 E F0 .335 +(local, as with the)2.835 F F2(local)2.835 E F0 .335 +(command, unless the)2.835 F F22.835 E F0(option)2.835 E 1.282 +(is supplied.)144 484.8 R 1.282(If a v)6.282 F 1.283 +(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F1(value)A F0 3.783 +(,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.283 +(ariable is set to)-.25 F F1(value)3.783 E F0(.)A .927(When using)144 +496.8 R F23.427 E F0(or)3.427 E F23.427 E F0 .926 +(and the compound assignment syntax to create array v)3.427 F .926 +(ariables, additional)-.25 F(attrib)144 508.8 Q .592(utes do not tak)-.2 F 3.092(ee)-.1 G -.25(ff)-3.092 G .592 (ect until subsequent assignments.).25 F .592(The return v)5.592 F .592 (alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429 (option is encountered, an attempt is made to de\214ne a function using) -144 460.8 R/F4 10/Courier@0 SF .429(\255f foo=bar)2.929 F F0 2.929(,a)C -2.929(na)-2.929 G .429(ttempt is)-2.929 F .063(made to assign a v)144 -472.8 R .063(alue to a readonly v)-.25 F .062 -(ariable, an attempt is made to assign a v)-.25 F .062 +144 520.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C +2.928(na)-2.928 G .428(ttempt is)-2.928 F .062(made to assign a v)144 +532.8 R .062(alue to a readonly v)-.25 F .063 +(ariable, an attempt is made to assign a v)-.25 F .063 (alue to an array v)-.25 F(ari-)-.25 E .102 -(able without using the compound assignment syntax \(see)144 484.8 R F1 +(able without using the compound assignment syntax \(see)144 544.8 R F2 (Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F -F2(names)2.602 E F0 .102(is not a)2.602 F -.25(va)144 496.8 S .172 +F1(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 556.8 S .171 (lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25 -F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .171 -(ariable, an)-.25 F .96(attempt is made to turn of)144 508.8 R 3.46(fa) +F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .172 +(ariable, an)-.25 F .96(attempt is made to turn of)144 568.8 R 3.46(fa) -.25 G .96(rray status for an array v)-3.46 F .96 -(ariable, or an attempt is made to display a)-.25 F(non-e)144 520.8 Q -(xistent function with)-.15 E F12.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 537.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 -(])A F0 -.4(Wi)144 549.6 S .329 +(ariable, or an attempt is made to display a)-.25 F(non-e)144 580.8 Q +(xistent function with)-.15 E F22.5 E F0(.)A F2 +(dirs [\255clpv] [+)108 597.6 Q F1(n)A F2 2.5(][)C-2.5 E F1(n)A F2 +(])A F0 -.4(Wi)144 609.6 S .328 (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 561.6 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 573.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 585.6 Q F0 -(Clears the directory stack by deleting all of the entries.)25.86 E F1 -144 597.6 Q F0 .882 -(Produces a listing using full pathnames; the def)27.52 F .881 +.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238 +(single line with directory names separated by spaces.)144 621.6 R 1.238 +(Directories are added to the list with the)6.238 F F2(pushd)144 633.6 Q +F0 2.003(command; the)4.503 F F2(popd)4.503 E F0 2.003(command remo) +4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503 +F 2.003(The current directory is)7.003 F(al)144 645.6 Q -.1(wa)-.1 G +(ys the \214rst directory in the stack.).1 E F2144 657.6 Q F0 +(Clears the directory stack by deleting all of the entries.)180 657.6 Q +F2144 669.6 Q F0 .882 +(Produces a listing using full pathnames; the def)180 669.6 R .881 (ault listing format uses a tilde to denote)-.1 F(the home directory)180 -609.6 Q(.)-.65 E F1144 621.6 Q F0 -(Print the directory stack with one entry per line.)24.74 E F1144 -633.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 645.6 Q F1(+)144 657.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 669.6 Q F1144 681.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 693.6 Q .258(The return v)144 -710.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 722.4 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 -E(6)203.725 E 0 Cg EP +681.6 Q(.)-.65 E F2144 693.6 Q F0 +(Print the directory stack with one entry per line.)180 693.6 Q F2 +144 705.6 Q F0 .272(Print the directory stack with one entry per line, \ +pre\214xing each entry with its inde)180 705.6 R 2.773(xi)-.15 G 2.773 +(nt)-2.773 G(he)-2.773 E(stack.)180 717.6 Q(GNU Bash-4.2)72 768 Q +(2004 Apr 20)148.735 E(6)203.725 E 0 Cg EP %%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/F1 10 -/Times-Bold@0 SF(diso)108 84 Q(wn)-.1 E F0([)2.5 E F1(\255ar)A F0 2.5 -(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(jobspec)-2.5 E -F0(...])2.5 E -.4(Wi)144 96 S .121(thout options, remo).4 F .422 -.15 -(ve e)-.15 H(ach).15 E F2(jobspec)4.362 E F0 .122 -(from the table of acti)2.932 F .422 -.15(ve j)-.25 H 2.622(obs. If).15 -F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 F .096 -(neither the)144 108 R F12.596 E F0 .096(nor the)2.596 F F1 -2.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E .096 -(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 -2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each).15 F -F2(jobspec)144 120 Q F0 .672(is not remo)3.482 F -.15(ve)-.15 G 3.172 -(df).15 G .672(rom the table, b)-3.172 F .672(ut is mark)-.2 F .672 -(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.172 E F0 .673 -(is not sent to the job if the)2.922 F .962(shell recei)144 132 R -.15 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(+)144 84 Q/F2 10 +/Times-Italic@0 SF(n)A F0 1.565(Displays the)180 84 R F2(n)4.065 E F0 +1.565(th entry counting from the left of the list sho)B 1.564(wn by)-.25 +F F1(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 +E(without options, starting with zero.)180 96 Q F1144 108 Q F2(n)A +F0 1.194(Displays the)180 108 R F2(n)3.694 E F0 1.194 +(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F +F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 120 Q .258(The return v)144 +136.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) +-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) +.15 F(tory stack.)144 148.8 Q F1(diso)108 165.6 Q(wn)-.1 E F0([)2.5 E F1 +(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 +(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 177.6 S .121 +(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) +4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H +2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 +F .096(neither the)144 189.6 R F12.596 E F0 .096(nor the)2.596 F +F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E +.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 +2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) +.15 F F2(jobspec)145.74 201.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 +G 3.085(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F +.585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 +(is not sent to the job if the)2.835 F .962(shell recei)144 213.6 R -.15 (ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 (If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 -H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 144 R F1 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 225.6 R F1 3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 (ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F -1.359(The return)6.359 F -.25(va)144 156 S(lue is 0 unless a).25 E F2 +1.359(The return)6.359 F -.25(va)144 237.6 S(lue is 0 unless a).25 E F2 (jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E -F1(echo)108 172.8 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) --.37 E F0(...])2.5 E .425(Output the)144 184.8 R F2(ar)2.925 E(g)-.37 E +F1(echo)108 254.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .425(Output the)144 266.4 R F2(ar)2.925 E(g)-.37 E F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 (wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 -(error occurs.)144 196.8 R(If)5.307 E F12.807 E F0 .307 +(error occurs.)144 278.4 R(If)5.307 E F12.807 E F0 .307 (is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 (ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144 -208.8 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) +290.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) 6.348 E F13.848 E F0 1.348(option disables the)3.848 F 1.054 -(interpretation of these escape characters, e)144 220.8 R -.15(ve)-.25 G +(interpretation of these escape characters, e)144 302.4 R -.15(ve)-.25 G 3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555 (ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144 -232.8 Q F1(xpg_echo)3.459 E F0 .959 +314.4 Q F1(xpg_echo)3.459 E F0 .959 (shell option may be used to dynamically determine whether or not)3.459 F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715 -(these escape characters by def)144 244.8 R(ault.)-.1 E F1(echo)5.715 E +(these escape characters by def)144 326.4 R(ault.)-.1 E F1(echo)5.715 E F0 .716(does not interpret)3.215 F F13.216 E F0 .716 (to mean the end of options.)3.216 F F1(echo)5.716 E F0 -(interprets the follo)144 256.8 Q(wing escape sequences:)-.25 E F1(\\a) -144 268.8 Q F0(alert \(bell\))28.22 E F1(\\b)144 280.8 Q F0(backspace) -27.66 E F1(\\c)144 292.8 Q F0(suppress further output)28.78 E F1(\\e)144 -304.8 Q(\\E)144 316.8 Q F0(an escape character)26.55 E F1(\\f)144 328.8 -Q F0(form feed)29.89 E F1(\\n)144 340.8 Q F0(ne)27.66 E 2.5(wl)-.25 G -(ine)-2.5 E F1(\\r)144 352.8 Q F0(carriage return)28.78 E F1(\\t)144 -364.8 Q F0(horizontal tab)29.89 E F1(\\v)144 376.8 Q F0 -.15(ve)28.22 G -(rtical tab).15 E F1(\\\\)144 388.8 Q F0(backslash)30.44 E F1(\\0)144 -400.8 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 412.8 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 424.8 Q F2(HHHH)A F0 -1.507(the Unicode \(ISO/IEC 10646\) character whose v)180 436.8 R 1.506 +(interprets the follo)144 338.4 Q(wing escape sequences:)-.25 E F1(\\a) +144 350.4 Q F0(alert \(bell\))180 350.4 Q F1(\\b)144 362.4 Q F0 +(backspace)180 362.4 Q F1(\\c)144 374.4 Q F0(suppress further output)180 +374.4 Q F1(\\e)144 386.4 Q(\\E)144 398.4 Q F0(an escape character)180 +398.4 Q F1(\\f)144 410.4 Q F0(form feed)180 410.4 Q F1(\\n)144 422.4 Q +F0(ne)180 422.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 434.4 Q F0 +(carriage return)180 434.4 Q F1(\\t)144 446.4 Q F0(horizontal tab)180 +446.4 Q F1(\\v)144 458.4 Q F0 -.15(ve)180 458.4 S(rtical tab).15 E F1 +(\\\\)144 470.4 Q F0(backslash)180 470.4 Q F1(\\0)144 482.4 Q F2(nnn)A +F0(the eight-bit character whose v)180 482.4 Q(alue is the octal v)-.25 +E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 +(\\x)144 494.4 Q F2(HH)A F0(the eight-bit character whose v)180 494.4 Q +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 +(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 +(\\u)144 506.4 Q F2(HHHH)A F0 1.507 +(the Unicode \(ISO/IEC 10646\) character whose v)180 518.4 R 1.506 (alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.006 E F0(\(one to four he)180 448.8 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 460.8 Q F2(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 472.8 R .547 +4.006 E F0(\(one to four he)180 530.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 542.4 Q F2(HHHHHHHH)A F0 .547 +(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R .547 (alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.048 E(HHH)180 484.8 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F1(enable)108 501.6 Q F0([)2.5 E F1A F0 2.5(][)C +3.048 E(HHH)180 566.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F1(enable)108 583.2 Q F0([)2.5 E F1A F0 2.5(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 -(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 513.6 R +(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 595.2 R .278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 (uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833 -(the same name as a shell b)144 525.6 R .834(uiltin to be e)-.2 F -.15 +(the same name as a shell b)144 607.2 R .834(uiltin to be e)-.2 F -.15 (xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 (ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99 -(the shell normally searches for b)144 537.6 R .989 +(the shell normally searches for b)144 619.2 R .989 (uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .989 (is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 -(abled; otherwise,)144 549.6 R F2(names)4.082 E F0 1.582(are enabled.) +(abled; otherwise,)144 631.2 R F2(names)4.082 E F0 1.582(are enabled.) 4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082 -G(TH)-.189 E F0 .081(instead of the shell b)144 561.6 R .081(uiltin v) +G(TH)-.189 E F0 .081(instead of the shell b)144 643.2 R .081(uiltin v) -.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test) 2.581 F F0 5.081(.T)C(he)-5.081 E F12.58 E F0 .08 -(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 573.6 S 1.524 +(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 655.2 S 1.524 (iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 -(ystems that support dynamic loading.)-4.024 F(The)144 585.6 Q F1 +(ystems that support dynamic loading.)-4.024 F(The)144 667.2 Q F1 2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F .367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) -5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) --.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 597.6 R F1 +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 679.2 R F1 2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 -609.6 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +691.2 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 (is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F (If)5.098 E F12.598 E F0 1.916 -(is supplied, the list printed includes all b)144 621.6 R 1.916 +(is supplied, the list printed includes all b)144 703.2 R 1.916 (uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 633.6 R F12.879 E F0 .379 +(enabled. If)144 715.2 R F12.879 E F0 .379 (is supplied, the output is restricted to the POSIX)2.879 F F2(special) 2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The).2 F .378(return v)2.878 F -(alue)-.25 E .994(is 0 unless a)144 645.6 R F2(name)3.854 E F0 .994 +(alue)-.25 E .994(is 0 unless a)144 727.2 R F2(name)3.854 E F0 .994 (is not a shell b)3.674 F .994(uiltin or there is an error loading a ne) --.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(object.)144 -657.6 Q F1 -2.3 -.15(ev a)108 674.4 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 -E F0(...])2.5 E(The)144 686.4 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C -.671(re read and concatenated together into a single command.)-3.171 F -.67(This command is then read)5.67 F .495(and e)144 698.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 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 710.4 Q -(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(7)203.725 E 0 Cg EP +-.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(GNU Bash-4.2)72 +768 Q(2004 Apr 20)148.735 E(7)203.725 E 0 Cg EP %%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/F1 10 -/Times-Bold@0 SF(exec)108 84 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1 --2.5 E/F2 10/Times-Italic@0 SF(name)2.5 E F0 2.5(][)C F2(command) --2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(]])A(If)144 96 Q F2(command) -3.006 E F0 .306(is speci\214ed, it replaces the shell.)3.576 F .305 -(No ne)5.305 F 2.805(wp)-.25 G .305(rocess is created.)-2.805 F(The) -5.305 E F2(ar)3.135 E(guments)-.37 E F0(become)3.075 E .176(the ar)144 -108 R .176(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft) --5.176 G(he)-2.676 E F12.676 E F0 .176 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(object.)144 84 Q/F1 10/Times-Bold@0 SF -2.3 +-.15(ev a)108 100.8 T(l).15 E F0([)2.5 E/F2 10/Times-Italic@0 SF(ar)A(g) +-.37 E F0(...])2.5 E(The)144 112.8 Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa) +C .671(re read and concatenated together into a single command.)-3.171 F +.67(This command is then read)5.67 F .495(and e)144 124.8 R -.15(xe)-.15 +G .495(cuted by the shell, and its e).15 F .495 +(xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15 +(ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no) +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 136.8 Q +(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 +(exec)108 153.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) +-.37 E F0(]])A(If)144 165.6 Q F2(command)3.006 E F0 .306 +(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 +(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E +(guments)-.37 E F0(become)3.075 E .176(the ar)144 177.6 R .176 +(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G +(he)-2.676 E F12.676 E F0 .176 (option is supplied, the shell places a dash at the be)2.676 F .177 -(ginning of)-.15 F .5(the zeroth ar)144 120 R .5(gument passed to)-.18 F -F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 E -(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 .499 -(option causes)2.999 F F2(com-)3.199 E(mand)144 132 Q F0 .638(to be e) -3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 +(ginning of)-.15 F .5(the zeroth ar)144 189.6 R .5(gument passed to)-.18 +F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 +E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 +.499(option causes)2.999 F F2(com-)3.199 E(mand)144 201.6 Q F0 .638 +(to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 (vironment. If)-.4 F F13.138 E F0 .638 (is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) -3.319 F 1.078(zeroth ar)144 144 R 1.077(gument to the e)-.18 F -.15(xe) --.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077 -(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a).15 F -(non-interacti)144 156 Q .876 -.15(ve s)-.25 H .576(hell e).15 F .576 -(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 +3.319 F 1.078(zeroth ar)144 213.6 R 1.077(gument to the e)-.18 F -.15 +(xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 +1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a) +.15 F(non-interacti)144 225.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F +.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 (shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 -F(ail-)-.1 E 2.505(ure. An)144 168 R(interacti)2.505 E .305 -.15(ve s) +F(ail-)-.1 E 2.505(ure. An)144 237.6 R(interacti)2.505 E .305 -.15(ve s) -.25 H .005(hell returns f).15 F .005(ailure if the \214le cannot be e) -.1 F -.15(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005 -(is not speci\214ed,)3.275 F(an)144 180 Q 3.036(yr)-.15 G .536 +(is not speci\214ed,)3.275 F(an)144 249.6 Q 3.036(yr)-.15 G .536 (edirections tak)-3.036 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 (ect in the current shell, and the return status is 0.).25 F .536 -(If there is a redirection)5.536 F(error)144 192 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 208.8 Q F0([)2.5 E F2(n)A F0 -6.29(]C)C .096(ause the shell to e)-6.29 F .096(xit with a status of) +(If there is a redirection)5.536 F(error)144 261.6 Q 2.5(,t)-.4 G +(he return status is 1.)-2.5 E F1(exit)108 278.4 Q F0([)2.5 E F2(n)A F0 +(])A .096(Cause the shell to e)144 278.4 R .096(xit with a status of) -.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095 (is omitted, the e)2.835 F .095(xit status is that of the last command) --.15 F -.15(exe)144 220.8 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 +-.15 F -.15(exe)144 290.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 /Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G -(cuted before the shell terminates.).15 E F1(export)108 237.6 Q F0([)2.5 +(cuted before the shell terminates.).15 E F1(export)108 307.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E -F0(]] ...)A F1(export \255p)108 249.6 Q F0 .256(The supplied)144 261.6 R +F0(]] ...)A F1(export \255p)108 319.2 Q F0 .256(The supplied)144 331.2 R F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15 -(xe)-.15 G(cuted).15 E 2.627(commands. If)144 273.6 R(the)2.627 E F1 +(xe)-.15 G(cuted).15 E 2.627(commands. If)144 343.2 R(the)2.627 E F1 2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) .15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) 5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126 -(n, or if the).15 F F1144 285.6 Q F0 .048 +(n, or if the).15 F F1144 355.2 Q F0 .048 (option is supplied, a list of names of all e)2.547 F .048(xported v) -.15 F .048(ariables is printed.)-.25 F(The)5.048 E F12.548 E F0 -.048(option causes the)2.548 F -.15(ex)144 297.6 S 1.447 +.048(option causes the)2.548 F -.15(ex)144 367.2 S 1.447 (port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 (rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G 1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) --.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 309.6 S .741(lue of the v) +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 379.2 S .741(lue of the v) .25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 (export)5.741 E F0 .742(returns an e)3.242 F .742 (xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) -.25 F .032(encountered, one of the)144 321.6 R F2(names)2.532 E F0 .032 +.25 F .032(encountered, one of the)144 391.2 R F2(names)2.532 E F0 .032 (is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 F F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 -(that)2.711 E(is not a function.)144 333.6 Q F1(fc)108 350.4 Q F0([)2.5 -E F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 +(that)2.711 E(is not a function.)144 403.2 Q F1(fc)108 420 Q F0([)2.5 E +F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 -362.4 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +432 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 (cmd)-2.5 E F0(])A .431 -(The \214rst form selects a range of commands from)144 374.4 R F2<8c72> +(The \214rst form selects a range of commands from)144 444 R F2<8c72> 4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 (from the history list and displays or)3.612 F .142(edits and re-e)144 -386.4 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +456 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 (may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 398.4 Q .31(ginning with that string\) or as a number \(an inde)-.15 -F 2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05 -(ga)-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .315 -(is used as an of)144 410.4 R .315 -(fset from the current command number\).)-.25 F(If)5.315 E F2(last)2.904 -E F0 .314(is not speci\214ed it is set to the cur)3.494 F(-)-.2 E .948 -(rent command for listing \(so that)144 422.4 R/F4 10/Courier@0 SF .948 -(fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to) -3.448 F F2<8c72>5.359 E(st)-.1 E F0(other)4.129 E(-)-.2 E 2.5(wise. If) -144 434.4 R F2<8c72>4.41 E(st)-.1 E F0 -(is not speci\214ed it is set to the pre)3.18 E -(vious command for editing and \25516 for listing.)-.25 E(The)144 458.4 -Q F12.522 E F0 .022 +144 468 Q .31(ginning with that string\) or as a number \(an inde)-.15 F +2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga) +-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .315(is used as an of) +144 480 R .315(fset from the current command number\).)-.25 F(If)5.315 E +F2(last)2.904 E F0 .314(is not speci\214ed it is set to the cur)3.494 F +(-)-.2 E .948(rent command for listing \(so that)144 492 R/F4 10 +/Courier@0 SF .948(fc \255l \25510)3.448 F F0 .948 +(prints the last 10 commands\) and to)3.448 F F2<8c72>5.359 E(st)-.1 E +F0(other)4.129 E(-)-.2 E 2.5(wise. If)144 504 R F2<8c72>4.41 E(st)-.1 E +F0(is not speci\214ed it is set to the pre)3.18 E +(vious command for editing and \25516 for listing.)-.25 E(The)144 528 Q +F12.522 E F0 .022 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 470.4 R .438(If the) -5.438 F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 +(rses the order of).15 F .438(the commands.)144 540 R .438(If the)5.438 +F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.335(the editor gi)144 482.4 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E -F2(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835 -(do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 -F(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G -(n,).15 E .63(the v)144 494.4 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E -F0 -.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 -F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 -(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 506.4 R .951 +.335(the editor gi)144 552 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 +(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) +.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F +(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G +(n,).15 E .63(the v)144 564 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0 +-.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 F +F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 +(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 576 R .951 (ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95 (When editing is complete, the edited commands are echoed and)5.951 F --.15(exe)144 518.4 S(cuted.).15 E .788(In the second form,)144 542.4 R -F2(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +-.15(exe)144 588 S(cuted.).15 E .788(In the second form,)144 612 R F2 +(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 (cuted after each instance of).15 F F2(pat)3.288 E F0 .788 (is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789 -E(mand)144 554.4 Q F0 .347(is intepreted the same as)2.847 F F2<8c72> -2.847 E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347 +E(mand)144 624 Q F0 .347(is intepreted the same as)2.847 F F2<8c72>2.847 +E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347 (useful alias to use with this is)-2.5 F F4 .346(r='fc \255s')2.847 F F0 -2.846(,s)C 2.846(ot)-2.846 G(hat)-2.846 E(typing)144 566.4 Q F4 7.165 -(rc)3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 +2.846(,s)C 2.846(ot)-2.846 G(hat)-2.846 E(typing)144 636 Q F4 7.165(rc) +3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 (ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r) 3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F -(mand.)144 578.4 Q .142(If the \214rst form is used, the return v)144 -602.4 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(mand.)144 648 Q .142(If the \214rst form is used, the return v)144 672 +R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 (lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F2(last)2.732 E F0 .454(specify history lines out of range.)144 614.4 -R .454(If the)5.454 F F12.954 E F0 .454 +E F2(last)2.732 E F0 .454(specify history lines out of range.)144 684 R +.454(If the)5.454 F F12.954 E F0 .454 (option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 -(alue of the)-.25 F .788(last command e)144 626.4 R -.15(xe)-.15 G .788 +(alue of the)-.25 F .788(last command e)144 696 R -.15(xe)-.15 G .788 (cuted or f).15 F .787 (ailure if an error occurs with the temporary \214le of commands.)-.1 F .787(If the)5.787 F 1.135 (second form is used, the return status is that of the command re-e)144 -638.4 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 -(does not)4.406 F(specify a v)144 650.4 Q +708 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 +(does not)4.406 F(specify a v)144 720 Q (alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F1(fg)108 667.2 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) -144 679.2 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 -(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 -(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0 -1.413(is not present, the)4.223 F(shell')144 691.2 Q 3.116(sn)-.55 G -.616(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617 -(is used.)3.116 F .617(The return v)5.617 F .617 -(alue is that of the command placed into the)-.25 F(fore)144 703.2 Q -.363(ground, or f)-.15 F .363 -(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 -(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 715.2 Q -F0 .004(does not specify a v)2.814 F .004(alid job or)-.25 F F2(jobspec) -4.244 E F0 .004(speci\214es a job that w)2.814 F .004 -(as started without job control.)-.1 F(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(8)203.725 E 0 Cg EP +(ailure.)-.1 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/F1 10 -/Times-Bold@0 SF(getopts)108 84 Q/F2 10/Times-Italic@0 SF -(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs)-.37 E F0(])A F1(getopts)144 -96 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.294 F F2 -(optstring)6.023 E F0 .793(contains the option)3.513 F .149 -(characters to be recognized; if a character is follo)144 108 R .15 -(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45 --.15(ve a)-.2 H(n).15 E(ar)144 120 Q .579 -(gument, which should be separated from it by white space.)-.18 F .578 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(fg)108 84 Q F0([)2.5 +E/F2 10/Times-Italic@0 SF(jobspec)A F0(])A(Resume)144 96 Q F2(jobspec) +5.654 E F0 1.413(in the fore)4.224 F 1.413(ground, and mak)-.15 F 3.913 +(ei)-.1 G 3.913(tt)-3.913 G 1.413(he current job)-3.913 F 6.413(.I)-.4 G +(f)-6.413 E F2(jobspec)5.653 E F0 1.413(is not present, the)4.223 F +(shell')144 108 Q 3.116(sn)-.55 G .616(otion of the)-3.116 F F2(curr) +3.116 E .616(ent job)-.37 F F0 .617(is used.)3.116 F .617(The return v) +5.617 F .617(alue is that of the command placed into the)-.25 F(fore)144 +120 Q .363(ground, or f)-.15 F .363 +(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362 +(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 132 Q +F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0 +(speci\214es a job that w)2.81 E(as started without job control.)-.1 E +F1(getopts)108 148.8 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs) +-.37 E F0(])A F1(getopts)144 160.8 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.293 F F2 +(optstring)6.023 E F0 .793(contains the option)3.513 F .15 +(characters to be recognized; if a character is follo)144 172.8 R .149 +(wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449 +-.15(ve a)-.2 H(n).15 E(ar)144 184.8 Q .578 +(gument, which should be separated from it by white space.)-.18 F .579 (The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 132 R 1.665 +(acters may not be used as option characters.)144 196.8 R 1.665 (Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts) -4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .797 -(option in the shell v)144 144 R(ariable)-.25 E F2(name)3.297 E F0 3.297 -(,i).18 G(nitializing)-3.297 E F2(name)3.657 E F0 .797(if it does not e) -3.477 F .796(xist, and the inde)-.15 F 3.296(xo)-.15 G 3.296(ft)-3.296 G -.796(he ne)-3.296 F(xt)-.15 E(ar)144 156 Q .085 +4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796 +(option in the shell v)144 208.8 R(ariable)-.25 E F2(name)3.296 E F0 +3.296(,i).18 G(nitializing)-3.296 E F2(name)3.657 E F0 .797 +(if it does not e)3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G +3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 220.8 Q .085 (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 .846 -(or a shell script is in)144 168 R -.2(vo)-.4 G -.1(ke).2 G 3.345 +4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845 +(or a shell script is in)144 232.8 R -.2(vo)-.4 G -.1(ke).2 G 3.345 (d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1 -(getopts)3.345 E F0 .845(places that ar)3.345 F(gument)-.18 E .803 -(into the v)144 180 R(ariable)-.25 E F3(OPT)3.303 E(ARG)-.81 E F4(.)A F0 -.803(The shell does not reset)5.303 F F3(OPTIND)3.303 E F0 .804 -(automatically; it must be manually)3.054 F .294 -(reset between multiple calls to)144 192 R F1(getopts)2.793 E F0 .293 +(getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 +(into the v)144 244.8 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A +F0 .803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803 +(automatically; it must be manually)3.053 F .293 +(reset between multiple calls to)144 256.8 R F1(getopts)2.793 E F0 .293 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F -2.793(ws)-.25 G .293(et of parameters)-2.793 F(is to be used.)144 204 Q -2.043(When the end of options is encountered,)144 228 R F1(getopts)4.543 -E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044 -(alue greater than zero.)-.25 F F3(OPTIND)144 240 Q F0 +2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 268.8 +Q 2.044(When the end of options is encountered,)144 292.8 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 304.8 Q F0 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G (he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 -(is set to ?.)2.5 E F1(getopts)144 264 Q F0 2.393 -(normally parses the positional parameters, b)4.893 F 2.392 -(ut if more ar)-.2 F 2.392(guments are gi)-.18 F -.15(ve)-.25 G 4.892 -(ni).15 G(n)-4.892 E F2(ar)4.892 E(gs)-.37 E F0(,).27 E F1(getopts)144 -276 Q F0(parses those instead.)2.5 E F1(getopts)144 300 Q F0 1.165 -(can report errors in tw)3.665 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F -1.165(the \214rst character of)3.665 F F2(optstring)3.895 E F0 1.166 -(is a colon,)3.886 F F2(silent)4.006 E F0(error)4.346 E 1.071 -(reporting is used.)144 312 R 1.071 -(In normal operation, diagnostic messages are printed when in)6.071 F --.25(va)-.4 G 1.07(lid options or).25 F .393(missing option ar)144 324 R -.393(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable)-.25 -E F3(OPTERR)2.894 E F0 .394(is set to 0, no error messages)2.644 F -(will be displayed, e)144 336 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 -G(he \214rst character of)-2.5 E F2(optstring)2.73 E F0(is not a colon.) -2.72 E .667(If an in)144 360 R -.25(va)-.4 G .667(lid option is seen,) -.25 F F1(getopts)3.167 E F0 .667(places ? into)3.167 F F2(name)3.527 E -F0 .666(and, if not silent, prints an error message)3.347 F .399 -(and unsets)144 372 R F3(OPT)2.899 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1 -(getopts)2.899 E F0 .399 -(is silent, the option character found is placed in)2.899 F F3(OPT)2.899 -E(ARG)-.81 E F0 .4(and no)2.65 F(diagnostic message is printed.)144 384 -Q 1.242(If a required ar)144 408 R 1.242(gument is not found, and)-.18 F -F1(getopts)3.741 E F0 1.241(is not silent, a question mark \()3.741 F F1 -(?).833 E F0 3.741(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F -F2(name)144 420 Q F0(,).18 E F3(OPT)2.734 E(ARG)-.81 E F0 .234 -(is unset, and a diagnostic message is printed.)2.484 F(If)5.234 E F1 -(getopts)2.734 E F0 .235(is silent, then a colon \()2.734 F F1(:).833 E -F0(\)).833 E(is placed in)144 432 Q F2(name)2.86 E F0(and)2.68 E F3(OPT) -2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1 -(getopts)144 456 Q F0 .902 +(is set to ?.)2.5 E F1(getopts)144 328.8 Q F0 2.392 +(normally parses the positional parameters, b)4.892 F 2.392 +(ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893 +(ni).15 G(n)-4.893 E F2(ar)4.893 E(gs)-.37 E F0(,).27 E F1(getopts)144 +340.8 Q F0(parses those instead.)2.5 E F1(getopts)144 364.8 Q F0 1.166 +(can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F +1.165(the \214rst character of)3.665 F F2(optstring)3.895 E F0 1.165 +(is a colon,)3.885 F F2(silent)4.005 E F0(error)4.345 E 1.07 +(reporting is used.)144 376.8 R 1.071 +(In normal operation, diagnostic messages are printed when in)6.07 F +-.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144 +388.8 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F +(ariable)-.25 E F3(OPTERR)2.894 E F0 .394 +(is set to 0, no error messages)2.644 F(will be displayed, e)144 400.8 Q +-.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E +F2(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 424.8 R +-.25(va)-.4 G .666(lid option is seen,).25 F F1(getopts)3.166 E F0 .667 +(places ? into)3.167 F F2(name)3.527 E F0 .667 +(and, if not silent, prints an error message)3.347 F .4(and unsets)144 +436.8 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1(getopts)2.899 E +F0 .399(is silent, the option character found is placed in)2.899 F F3 +(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F +(diagnostic message is printed.)144 448.8 Q 1.241(If a required ar)144 +472.8 R 1.241(gument is not found, and)-.18 F F1(getopts)3.741 E F0 +1.241(is not silent, a question mark \()3.741 F F1(?).833 E F0 3.742 +(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F2(name)144 484.8 +Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 E F0 .234 +(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F1 +(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F1(:).833 E +F0(\)).833 E(is placed in)144 496.8 Q F2(name)2.86 E F0(and)2.68 E F3 +(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1 +(getopts)144 520.8 Q F0 .902 (returns true if an option, speci\214ed or unspeci\214ed, is found.) -3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 468 Q F1(hash)108 484.8 -Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E -F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858 -(Each time)144 496.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4 -G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) +3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F +(options is encountered or an error occurs.)144 532.8 Q F1(hash)108 +549.6 Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename) +2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A +.858(Each time)144 561.6 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo) +-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) 3.718 E F0 .858(is determined by searching)3.538 F .956 -(the directories in)144 508.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +(the directories in)144 573.6 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 .956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .242(If the)144 520.8 -R F12.742 E F0 .243 -(option is supplied, no path search is performed, and)2.742 F F2 -(\214lename)4.653 E F0 .243(is used as the full \214lename)2.923 F 1.712 -(of the command.)144 532.8 R(The)6.712 E F14.212 E F0 1.711 -(option causes the shell to for)4.212 F 1.711 -(get all remembered locations.)-.18 F(The)6.711 E F14.211 E F0 -.833(option causes the shell to for)144 544.8 R .833 +(viously-remembered pathname is discarded.)-.25 F .243(If the)144 585.6 +R F12.743 E F0 .243 +(option is supplied, no path search is performed, and)2.743 F F2 +(\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F 1.711 +(of the command.)144 597.6 R(The)6.711 E F14.211 E F0 1.711 +(option causes the shell to for)4.211 F 1.712 +(get all remembered locations.)-.18 F(The)6.712 E F14.212 E F0 +.833(option causes the shell to for)144 609.6 R .833 (get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) -3.333 F .704(plied, the full pathname to which each)144 556.8 R F2(name) -3.204 E F0 .703(corresponds is printed.)3.204 F .703(If multiple)5.703 F -F2(name)3.203 E F0(ar)3.203 E(guments)-.18 E .795(are supplied with)144 -568.8 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 +3.333 F .703(plied, the full pathname to which each)144 621.6 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 +633.6 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 .795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1 3.295 E F0 .795(option causes)3.295 F .934 (output to be displayed in a format that may be reused as input.)144 -580.8 R .934(If no ar)5.934 F .934(guments are gi)-.18 F -.15(ve)-.25 G -.934(n, or if).15 F(only)144 592.8 Q F12.821 E F0 .321 -(is supplied, information about remembered commands is printed.)2.821 F -.322(The return status is true)5.322 F(unless a)144 604.8 Q F2(name)2.86 +645.6 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G +.935(n, or if).15 F(only)144 657.6 Q F12.822 E F0 .322 +(is supplied, information about remembered commands is printed.)2.822 F +.321(The return status is true)5.321 F(unless a)144 669.6 Q F2(name)2.86 E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) -.25 E F1(help)108 621.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 -(pattern)-2.5 E F0(])A .867(Display helpful information about b)144 -633.6 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 -.866(is speci\214ed,)3.607 F F1(help)3.366 E F0(gi)3.366 E -.15(ve)-.25 -G 3.366(sd).15 G(etailed)-3.366 E .306(help on all commands matching)144 -645.6 R F2(pattern)2.806 E F0 2.807(;o).24 G .307 -(therwise help for all the b)-2.807 F .307 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 657.6 Q F1 -144 669.6 Q F0(Display a short description of each)24.74 E F2 -(pattern)2.5 E F1144 681.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 693.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 710.4 Q F2 -(pattern)2.5 E F0(.).24 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(9) -203.725 E 0 Cg EP +.25 E F1(help)108 686.4 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 +(pattern)-2.5 E F0(])A .866(Display helpful information about b)144 +698.4 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 +.867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 +G 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144 +710.4 R F2(pattern)2.807 E F0 2.807(;o).24 G .307 +(therwise help for all the b)-2.807 F .306 +(uiltins and shell control struc-)-.2 F(tures is printed.)144 722.4 Q +(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(9)203.725 E 0 Cg EP %%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 [)108 84 Q/F2 10/Times-Italic@0 SF(n)A F1(])A -(history \255c)108 96 Q(history \255d)108 108 Q F2(of)2.5 E(fset)-.18 E -F1(history \255anrw)108 120 Q F0([)2.5 E F2(\214lename)A F0(])A F1 -(history \255p)108 132 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 144 Q F2(ar)2.5 E(g)-.37 E -F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 156 S .752 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 +(Display a short description of each)180 84 Q/F2 10/Times-Italic@0 SF +(pattern)2.5 E F1144 96 Q F0(Display the description of each)180 +96 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat)-2.5 +E F1144 108 Q F0(Display only a short usage synopsis for each)180 +108 Q F2(pattern)2.5 E F0 +(The return status is 0 unless no command matches)144 124.8 Q F2 +(pattern)2.5 E F0(.).24 E F1(history [)108 141.6 Q F2(n)A F1(])A +(history \255c)108 153.6 Q(history \255d)108 165.6 Q F2(of)2.5 E(fset) +-.18 E F1(history \255anrw)108 177.6 Q F0([)2.5 E F2(\214lename)A F0(])A +F1(history \255p)108 189.6 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 201.6 Q F2(ar)2.5 E(g) +-.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 +213.6 S .752 (th no options, display the command history list with line numbers.).4 F -.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2 -G .38(been modi\214ed.)144 168 R .38(An ar)5.38 F .38(gument of)-.18 F -F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 +.752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 +G .381(been modi\214ed.)144 225.6 R .38(An ar)5.38 F .38(gument of)-.18 +F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 (lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(HISTTIMEFOR-)2.881 E(MA)144 180 Q(T)-.855 E F0 .265 -(is set and not null, it is used as a format string for)2.515 F F2 -(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019 -(ciated with each displayed history entry)144 192 R 6.019(.N)-.65 G +/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 237.6 Q(T)-.855 E F0 .264 +(is set and not null, it is used as a format string for)2.514 F F2 +(strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 +(ciated with each displayed history entry)144 249.6 R 6.019(.N)-.65 G 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 204 R(If)5.176 E F2(\214lename) +(time stamp and the history line.)144 261.6 R(If)5.176 E F2(\214lename) 2.676 E F0 .176 (is supplied, it is used as the name of the history \214le; if)2.676 F -(not, the v)144 216 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 228 Q F0 -(Clear the history list by deleting all the entries.)25.86 E F1144 -240 Q F2(of)2.5 E(fset)-.18 E F0(Delete the history entry at position) -180 252 Q F2(of)2.5 E(fset)-.18 E F0(.)A F1144 264 Q F0 .598 -(Append the `)25.3 F(`ne)-.74 E(w')-.25 E 3.098('h)-.74 G .598 -(istory lines \(history lines entered since the be)-3.098 F .599 -(ginning of the current)-.15 F F1(bash)180 276 Q F0 -(session\) to the history \214le.)2.5 E F1144 288 Q F0 .854(Read \ -the history lines not already read from the history \214le into the cur\ -rent history list.)24.74 F .772 -(These are lines appended to the history \214le since the be)180 300 R -.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E -(sion.)180 312 Q F1144 324 Q F0(Read the contents of the history \ -\214le and append them to the current history list.)25.86 E F1144 -336 Q F0(Write the current history list to the history \214le, o)23.08 E +(not, the v)144 273.6 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) +2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 285.6 Q F0 +(Clear the history list by deleting all the entries.)180 285.6 Q F1 +144 297.6 Q F2(of)2.5 E(fset)-.18 E F0 +(Delete the history entry at position)180 309.6 Q F2(of)2.5 E(fset)-.18 +E F0(.)A F1144 321.6 Q F0 .565(Append the `)180 321.6 R(`ne)-.74 E +(w')-.25 E 3.065('h)-.74 G .564(istory lines to the history \214le.) +-3.065 F .564(These are history lines entered since)5.564 F(the be)180 +333.6 Q(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E +(ut not already appended to the history \214le.)-.2 E F1144 345.6 +Q F0 .854(Read the history lines not already read from the history \214\ +le into the current history list.)180 345.6 R .773 +(These are lines appended to the history \214le since the be)180 357.6 R +.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E +(sion.)180 369.6 Q F1144 381.6 Q F0(Read the contents of the hist\ +ory \214le and append them to the current history list.)180 381.6 Q F1 +144 393.6 Q F0 +(Write the current history list to the history \214le, o)180 393.6 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1144 348 Q F0 .626 -(Perform history substitution on the follo)24.74 F(wing)-.25 E F2(ar) -3.125 E(gs)-.37 E F0 .625(and display the result on the standard)3.125 F -2.975(output. Does)180 360 R .475 +(ontents.)-2.5 E F1144 405.6 Q F0 .625 +(Perform history substitution on the follo)180 405.6 R(wing)-.25 E F2 +(ar)3.125 E(gs)-.37 E F0 .626(and display the result on the standard) +3.125 F 2.975(output. Does)180 417.6 R .475 (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 372 Q(xpansion.)-.15 E F1144 384 Q F0 .363 -(Store the)26.41 F F2(ar)3.193 E(gs)-.37 E F0 .363 -(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362 -(he last command in the history list is)-5.363 F(remo)180 396 Q -.15(ve) --.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .145(If the)144 412.8 R F3(HISTTIMEFORMA)2.645 E(T) +(normal history e)180 429.6 Q(xpansion.)-.15 E F1144 441.6 Q F0 +.362(Store the)180 441.6 R F2(ar)3.192 E(gs)-.37 E F0 .363 +(in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363 +(he last command in the history list is)-5.363 F(remo)180 453.6 Q -.15 +(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .146(If the)144 470.4 R F3(HISTTIMEFORMA)2.645 E(T) -.855 E F0 -.25(va)2.395 G .145 (riable is set, the time stamp information associated with each history) -.25 F .669(entry is written to the history \214le, mark)144 424.8 R .669 -(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668 -(hen the history)-5.668 F .955(\214le is read, lines be)144 436.8 R .956 -(ginning with the history comment character follo)-.15 F .956 -(wed immediately by a digit)-.25 F .416 -(are interpreted as timestamps for the pre)144 448.8 R .416 -(vious history line.)-.25 F .416(The return v)5.416 F .415 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .499(option is e\ -ncountered, an error occurs while reading or writing the history \214le\ -, an in)144 460.8 R -.25(va)-.4 G(lid).25 E F2(of)3 E(fset)-.18 E F0(is) -3 E(supplied as an ar)144 472.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 -489.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 -E F1(jobs \255x)108 501.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 513.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 525.6 Q F0 -(List process IDs in addition to the normal information.)27.52 E F1 -144 537.6 Q F0 .194(Display information only about jobs that ha) -24.74 F .494 -.15(ve c)-.2 H .193(hanged status since the user w).15 F -.193(as last noti-)-.1 F(\214ed of their status.)180 549.6 Q F1144 -561.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 573.6 Q F0 -(Display only running jobs.)25.86 E F1144 585.6 Q F0 -(Display only stopped jobs.)26.41 E(If)144 602.4 Q F2(jobspec)4.553 E F0 -.313(is gi)3.123 F -.15(ve)-.25 G .313 +.25 F .668(entry is written to the history \214le, mark)144 482.4 R .669 +(ed with the history comment character)-.1 F 5.669(.W)-.55 G .669 +(hen the history)-5.669 F .956(\214le is read, lines be)144 494.4 R .956 +(ginning with the history comment character follo)-.15 F .955 +(wed immediately by a digit)-.25 F 1.795 +(are interpreted as timestamps for the follo)144 506.4 R 1.795 +(wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F +1.796(alue is 0 unless an)-.25 F(in)144 518.4 Q -.25(va)-.4 G .768(lid \ +option is encountered, an error occurs while reading or writing the his\ +tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 530.4 Q(fset) +-.18 E F0 1.031(is supplied as an ar)3.531 F 1.031(gument to)-.18 F F1 +3.531 E F0 3.531(,o)C 3.531(rt)-3.531 G 1.031(he history e)-3.531 +F 1.031(xpansion supplied as an ar)-.15 F 1.032(gument to)-.18 F F1 +3.532 E F0 -.1(fa)144 542.4 S(ils.).1 E F1(jobs)108 559.2 Q F0([) +2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 E F1 +(jobs \255x)108 571.2 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 +E F0(... ])2.5 E(The \214rst form lists the acti)144 583.2 Q .3 -.15 +(ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1144 595.2 Q F0 +(List process IDs in addition to the normal information.)180 595.2 Q F1 +144 607.2 Q F0 .194(Display information only about jobs that ha) +180 607.2 R .494 -.15(ve c)-.2 H .193(hanged status since the user w).15 +F .193(as last noti-)-.1 F(\214ed of their status.)180 619.2 Q F1 +144 631.2 Q F0(List only the process ID of the job')180 631.2 Q 2.5(sp) +-.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 643.2 Q F0 +(Display only running jobs.)180 643.2 Q F1144 655.2 Q F0 +(Display only stopped jobs.)180 655.2 Q(If)144 672 Q F2(jobspec)4.553 E +F0 .313(is gi)3.123 F -.15(ve)-.25 G .313 (n, output is restricted to information about that job).15 F 5.314(.T) --.4 G .314(he return status is 0 unless)-5.314 F(an in)144 614.4 Q -.25 +-.4 G .314(he return status is 0 unless)-5.314 F(an in)144 684 Q -.25 (va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F2(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 631.2 R F1 +E F2(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 700.8 R F1 2.895 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 .394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) 3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .394 -(with the corre-)3.164 F(sponding process group ID, and e)144 643.2 Q +(with the corre-)3.164 F(sponding process group ID, and e)144 712.8 Q -.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) 2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E -F1(kill)108 660 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 672 Q F0([)2.5 E F2(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G -(it_status).2 E F0(])A .119(Send the signal named by)144 684 R F2 -(sigspec)2.959 E F0(or)2.929 E F2(signum)2.959 E F0 .119 -(to the processes named by)2.939 F F2(pid)3.87 E F0(or)3.39 E F2 -(jobspec)2.62 E F0(.).31 E F2(sigspec)5.46 E F0(is)2.93 E .319 -(either a case-insensiti)144 696 R .619 -.15(ve s)-.25 H .319 -(ignal name such as).15 F F3(SIGKILL)2.819 E F0 .318 -(\(with or without the)2.569 F F3(SIG)2.818 E F0 .318 -(pre\214x\) or a signal)2.568 F(number;)144 708 Q F2(signum)4.188 E F0 -1.349(is a signal number)4.168 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) -4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 -1.349(is assumed.)3.599 F(An)6.349 E(ar)144 720 Q .523(gument of)-.18 F -F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 -F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F -F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names) -.15 F(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(10)198.725 E 0 Cg EP +(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 .28 -(of the signals corresponding to the ar)144 84 R .28 -(guments are listed, and the return status is 0.)-.18 F(The)5.28 E/F1 10 -/Times-Italic@0 SF -.2(ex)2.78 G(it_status).2 E F0(ar)144 96 Q .378 -(gument to)-.18 F/F2 10/Times-Bold@0 SF2.878 E F0 .378 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(kill)108 84 Q F0([) +2.5 E F1A/F2 10/Times-Italic@0 SF(sigspec)2.5 E F0(|)2.5 E F1 +2.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A F0 2.5 +(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1 +(kill \255l)108 96 Q F0(|)A F1A F0([)2.5 E F2(sigspec)A F0(|)2.5 E +F2 -.2(ex)2.5 G(it_status).2 E F0(])A .119(Send the signal named by)144 +108 R F2(sigspec)2.959 E F0(or)2.929 E F2(signum)2.959 E F0 .119 +(to the processes named by)2.939 F F2(pid)3.87 E F0(or)3.39 E F2 +(jobspec)2.62 E F0(.).31 E F2(sigspec)5.46 E F0(is)2.93 E .319 +(either a case-insensiti)144 120 R .619 -.15(ve s)-.25 H .319 +(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.819 E F0 .318 +(\(with or without the)2.569 F F3(SIG)2.818 E F0 .318 +(pre\214x\) or a signal)2.568 F(number;)144 132 Q F2(signum)4.188 E F0 +1.349(is a signal number)4.168 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) +4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 +1.349(is assumed.)3.599 F(An)6.349 E(ar)144 144 Q .523(gument of)-.18 F +F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 +F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F +F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names) +.15 F .28(of the signals corresponding to the ar)144 156 R .28 +(guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2 +-.2(ex)2.78 G(it_status).2 E F0(ar)144 168 Q .378(gument to)-.18 F F1 +2.878 E F0 .378 (is a number specifying either a signal number or the e)2.878 F .377 -(xit status of a process termi-)-.15 F .593(nated by a signal.)144 108 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 .594(alse if an error)-.1 F -(occurs or an in)144 120 Q -.25(va)-.4 G(lid option is encountered.).25 -E F2(let)108 136.8 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 148.8 Q F1(ar)3.027 E(g)-.37 E F0 .197 -(is an arithmetic e)2.917 F .197(xpression to be e)-.15 F -.25(va)-.25 G -.196(luated \(see).25 F/F3 9/Times-Bold@0 SF .196(ARITHMETIC EV)2.696 F -(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)2.446 E -.15(ve)-.15 G -2.696(\). If).15 F(the last)144 160.8 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 177.6 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 189.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 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 201.6 Q 3.153(yo) --.15 G 3.153(ft)-3.153 G .653(he options accepted by)-3.153 F F2(declar) -3.153 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F2(local)3.152 E F0 .652 +(xit status of a process termi-)-.15 F .962(nated by a signal.)144 180 R +(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 +G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 +(returns true if at least one signal w)3.462 F(as)-.1 E +(successfully sent, or f)144 192 Q(alse if an error occurs or an in)-.1 +E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2 +(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 +220.8 Q F2(ar)3.027 E(g)-.37 E F0 .197(is an arithmetic e)2.917 F .197 +(xpression to be e)-.15 F -.25(va)-.25 G .196(luated \(see).25 F F3 .196 +(ARITHMETIC EV)2.696 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) +2.446 E -.15(ve)-.15 G 2.696(\). If).15 F(the last)144 232.8 Q F2(ar) +2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0 +(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 249.6 Q F0([)2.5 +E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(.. | \255 ])-2.5 E -.15(Fo)144 261.6 S 2.56(re).15 G .06(ach ar)-2.56 F +.06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0 +.06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he) +-5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 273.6 Q 3.153(yo) +-.15 G 3.153(ft)-3.153 G .653(he options accepted by)-3.153 F F1(declar) +3.153 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .652 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -213.6 Q F1(name)3.72 E F0 .86(to ha)3.54 F 1.16 -.15(ve a v)-.2 H .861 -(isible scope restricted to that function and its children.).15 F -.4 -(Wi)5.861 G .861(th no operands,).4 F F2(local)144 225.6 Q F0 1.165 -(writes a list of local v)3.665 F 1.165 -(ariables to the standard output.)-.25 F 1.165(It is an error to use) -6.165 F F2(local)3.664 E F0 1.164(when not)3.664 F .232 -(within a function.)144 237.6 R .233(The return status is 0 unless)5.232 -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.093 E F0(is)2.913 E(supplied, or)144 -249.6 Q F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2 -(logout)108 266.4 Q F0(Exit a login shell.)9.33 E F2(map\214le)108 283.2 -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 295.2 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 .351 -(Read lines from the standard input into the inde)144 307.2 R -.15(xe) --.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F1(arr)2.85 E -(ay)-.15 E F0 2.85(,o).32 G 2.85(rf)-2.85 G .35(rom \214le descriptor) --2.85 F F1(fd)2.85 E F0 1.248(if the)144 319.2 R F23.748 E F0 -1.248(option is supplied.)3.748 F 1.249(The v)6.249 F(ariable)-.25 E F3 -(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 E F1(arr)3.749 E -(ay)-.15 E F0 6.249(.O)C 1.249(ptions, if supplied,)-6.249 F(ha)144 -331.2 Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F2 -144 343.2 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 355.2 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 367.2 Q F0 -(Discard the \214rst)26.41 E F1(count)2.5 E F0(lines read.)2.5 E F2 -144 379.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 F2144 391.2 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 403.2 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 415.2 -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 432 Q F22.968 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 +285.6 Q F2(name)3.281 E F0 .421(to ha)3.101 F .721 -.15(ve a v)-.2 H +.422(isible scope restricted to that function and its children.).15 F +(If)5.422 E F2(name)2.922 E F0 .422(is \255, the set)2.922 F 1.461 +(of shell options is made local to the function in which)144 297.6 R F1 +(local)3.961 E F0 1.461(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.461 +(d: shell options changed).1 F 1.562(using the)144 309.6 R F1(set)4.062 +E F0 -.2(bu)4.062 G 1.563 +(iltin inside the function are restored to their original v).2 F 1.563 +(alues when the function)-.25 F 3.744(returns. W)144 321.6 R 1.244 +(ith no operands,)-.4 F F1(local)3.744 E F0 1.244 +(writes a list of local v)3.744 F 1.243 +(ariables to the standard output.)-.25 F 1.243(It is an)6.243 F .42 +(error to use)144 333.6 R F1(local)2.92 E F0 .42 +(when not within a function.)2.92 F .42(The return status is 0 unless) +5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in) +144 345.6 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or) +2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout) +108 362.4 Q F0(Exit a login shell.)144 362.4 Q F1(map\214le)108 379.2 Q +F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) +2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 +-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 +-2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E +F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E +(ay)-.15 E F0(])A F1 -.18(re)108 391.2 S(adarray).18 E F0([)2.5 E F1 +A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5 +(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 +(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 +(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) +C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 +(])A .351(Read lines from the standard input into the inde)144 403.2 R +-.15(xe)-.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2 +(arr)2.85 E(ay)-.15 E F0 2.85(,o).32 G 2.85(rf)-2.85 G .35 +(rom \214le descriptor)-2.85 F F2(fd)2.85 E F0 1.248(if the)144 415.2 R +F13.748 E F0 1.248(option is supplied.)3.748 F 1.249(The v)6.249 F +(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 +E F2(arr)3.749 E(ay)-.15 E F0 6.249(.O)C 1.249(ptions, if supplied,) +-6.249 F(ha)144 427.2 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 439.2 Q F0(The \214rst character of) +180 439.2 Q F2(delim)2.5 E F0 +(is used to terminate each input line, rather than ne)2.5 E(wline.)-.25 +E F1144 451.2 Q F0(Cop)180 451.2 Q 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost) +-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)2.5 E F0 +(is 0, all lines are copied.)2.5 E F1144 463.2 Q F0(Be)180 463.2 Q +(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x) +-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi) +-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 475.2 Q F0 +(Discard the \214rst)180 475.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +144 487.2 Q F0(Remo)180 487.2 Q .3 -.15(ve a t)-.15 H(railing).15 +E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E +(wline\) from each line read.)-.25 E F1144 499.2 Q F0 +(Read lines from \214le descriptor)180 499.2 Q F2(fd)2.5 E F0 +(instead of the standard input.)2.5 E F1144 511.2 Q F0(Ev)180 +511.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 +(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 +(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 523.2 +Q F0(Specify the number of lines read between each call to)180 523.2 Q +F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 540 Q F12.968 E F0 .467 +(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .261(plied the inde)144 444 R 2.761(xo)-.15 G +(luated, it is sup-).25 F .261(plied the inde)144 552 R 2.761(xo)-.15 G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be assig\ ned and the line to be assigned to that element)-.15 F .275 -(as additional ar)144 456 R(guments.)-.18 E F1(callbac)5.275 E(k)-.2 E +(as additional ar)144 564 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E F0 .275(is e)2.775 F -.25(va)-.25 G .274 (luated after the line is read b).25 F .274 -(ut before the array element is)-.2 F(assigned.)144 468 Q -(If not supplied with an e)144 484.8 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 501.6 Q F0 1.905 +(ut before the array element is)-.2 F(assigned.)144 576 Q +(If not supplied with an e)144 592.8 Q(xplicit origin,)-.15 E F1 +(map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 +(before assigning to it.)2.5 E F1(map\214le)144 609.6 Q F0 1.905 (returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905 -(lid option or option ar).25 F 1.906(gument is supplied,)-.18 F F1(arr) -4.406 E(ay)-.15 E F0(is)4.406 E(in)144 513.6 Q -.25(va)-.4 G -(lid or unassignable, or if).25 E F1(arr)2.5 E(ay)-.15 E F0 +(lid option or option ar).25 F 1.906(gument is supplied,)-.18 F F2(arr) +4.406 E(ay)-.15 E F0(is)4.406 E(in)144 621.6 Q -.25(va)-.4 G +(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 (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 530.4 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 542.4 Q -.15(ve)-.15 G 2.8(se) +F1(popd)108 638.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 650.4 Q -.15(ve)-.15 G 2.8(se) .15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299 (th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G .299(he top directory from the)-2.799 F 1.478(stack, and performs a)144 -554.4 R F2(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 +662.4 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479 (op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479 (uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15 -F(wing)-.25 E(meanings:)144 566.4 Q F2144 578.4 Q F0 .551 -(Suppresses the normal change of directory when remo)24.74 F .551 +F(wing)-.25 E(meanings:)144 674.4 Q F1144 686.4 Q F0 .551 +(Suppresses the normal change of directory when remo)180 686.4 R .551 (ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 590.4 Q F2(+)144 602.4 Q F1(n)A -F0(Remo)25.3 E -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F1(n)2.64 E F0 -.14(th entry counting from the left of the list sho)B .14(wn by)-.25 F -F2(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 -614.4 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 +(that only the stack is manipulated.)180 698.4 Q F1(+)144 710.4 Q F2(n)A +F0(Remo)180 710.4 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E +F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 +F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 +722.4 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 (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 F2144 626.4 Q F1(n)A F0 -(Remo)25.3 E -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F1(n)3.76 E F0 -1.259(th entry counting from the right of the list sho)B 1.259(wn by) --.25 F F2(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5 -(zero. F)180 638.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 .643(If the)144 -655.2 R F2(popd)3.143 E F0 .643(command is successful, a)3.143 F F2 -(dirs)3.143 E F0 .644(is performed as well, and the return status is 0.) -3.143 F F2(popd)5.644 E F0 .416(returns f)144 667.2 R .416 -(alse if an in)-.1 F -.25(va)-.4 G .415 -(lid option is encountered, the directory stack is empty).25 F 2.915 -(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 679.2 Q -(ails.)-.1 E F2(printf)108 696 Q F0([)2.5 E F2A F1(var)2.5 E F0(]) -A F1(format)2.5 E F0([)2.5 E F1(ar)A(guments)-.37 E F0(])A 1.436 -(Write the formatted)144 708 R F1(ar)3.936 E(guments)-.37 E F0 1.437 -(to the standard output under the control of the)3.936 F F1(format)3.937 -E F0 6.437(.T)C(he)-6.437 E F23.937 E F0 .126 -(option causes the output to be assigned to the v)144 720 R(ariable)-.25 -E F1(var)2.626 E F0 .126(rather than being printed to the standard)2.626 -F(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(11)198.725 E 0 Cg EP +-.65 E F4(popd +1)2.5 E F0(the second.)2.5 E(GNU Bash-4.2)72 768 Q +(2004 Apr 20)148.735 E(11)198.725 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E(output.)144 -84 Q(The)144 108 Q/F1 10/Times-Italic@0 SF(format)3.017 E F0 .517(is a \ -character string which contains three types of objects: plain character\ -s, which are)3.017 F .704(simply copied to standard output, character e\ -scape sequences, which are con)144 120 R -.15(ve)-.4 G .703 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/F2 10 +/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15 G 3.76(st).15 G(he) +-3.76 E F2(n)3.76 E F0 1.259 +(th entry counting from the right of the list sho)B 1.259(wn by)-.25 F +F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5(zero. F) +180 96 R(or e)-.15 E(xample:)-.15 E/F3 10/Courier@0 SF(popd -0)2.5 E F0 +(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 +E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144 +112.8 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1 +(dirs)3.143 E F0 .644(is performed as well, and the return status is 0.) +3.143 F F1(popd)5.644 E F0 .416(returns f)144 124.8 R .416 +(alse if an in)-.1 F -.25(va)-.4 G .415 +(lid option is encountered, the directory stack is empty).25 F 2.915 +(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F +(tory stack entry is speci\214ed, or the directory change f)144 136.8 Q +(ails.)-.1 E F1(printf)108 153.6 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436 +(Write the formatted)144 165.6 R F2(ar)3.936 E(guments)-.37 E F0 1.437 +(to the standard output under the control of the)3.936 F F2(format)3.937 +E F0 6.437(.T)C(he)-6.437 E F13.937 E F0 .126 +(option causes the output to be assigned to the v)144 177.6 R(ariable) +-.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) +2.626 F(output.)144 189.6 Q(The)144 213.6 Q F2(format)3.017 E F0 .517(i\ +s a character string which contains three types of objects: plain chara\ +cters, which are)3.017 F .704(simply copied to standard output, charact\ +er escape sequences, which are con)144 225.6 R -.15(ve)-.4 G .703 (rted and copied to).15 F .036(the standard output, and format speci\ -\214cations, each of which causes printing of the ne)144 132 R .037 -(xt successi)-.15 F -.15(ve)-.25 G F1(ar)144 144 Q(gument)-.37 E F0 -5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F1 -(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B/F2 10 -/Times-Bold@0 SF(printf)3.031 E F0 .531(interprets the follo)3.031 F(w-) --.25 E(ing e)144 156 Q(xtensions:)-.15 E F2(%b)144 168 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 180 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 192 Q(ginning with)-.15 E F2(\\0)2.5 E F0 -(may contain up to four digits\).)2.5 E F2(%q)144 204 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 216 Q F2(%\()144 228 Q F1(datefmt)A F2(\)T)A F0(causes)180 -240 Q F2(printf)4.404 E F0 1.904 -(to output the date-time string resulting from using)4.404 F F1(datefmt) -4.404 E F0 1.903(as a format)4.404 F .38(string for)180 252 R F1 -(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F1(ar) +\214cations, each of which causes printing of the ne)144 237.6 R .037 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 249.6 Q(gument)-.37 E F0 +5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2 +(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031 +E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 261.6 Q +(xtensions:)-.15 E F1(%b)144 273.6 Q F0(causes)180 273.6 Q F1(printf) +2.595 E F0 .096(to e)2.595 F .096 +(xpand backslash escape sequences in the corresponding)-.15 F F2(ar) +2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 285.6 Q(ay as) +-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 297.6 Q F0(causes)180 297.6 Q +F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E +(gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F +(input.)180 309.6 Q F1(%\()144 321.6 Q F2(datefmt)A F1(\)T)A F0(causes) +180 333.6 Q F1(printf)4.403 E F0 1.904 +(to output the date-time string resulting from using)4.403 F F2(datefmt) +4.404 E F0 1.904(as a format)4.404 F .381(string for)180 345.6 R F2 +(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 -(ger representing the number)-.15 F .458(of seconds since the epoch.)180 -264 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F -.458(alues may be used: -1 represents the)-.25 F .847 -(current time, and -2 represents the time the shell w)180 276 R .847 -(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.348(d. If).1 F .848(no ar)3.348 -F .848(gument is speci-)-.18 F .355(\214ed, con)180 288 R -.15(ve)-.4 G -.355(rsion beha).15 F -.15(ve)-.2 G 2.855(sa).15 G 2.855(si)-2.855 G -2.855(f-)-2.855 G 2.855(1h)-2.855 G .354(ad been gi)-2.855 F -.15(ve) --.25 G 2.854(n. This).15 F .354(is an e)2.854 F .354 -(xception to the usual)-.15 F F2(printf)2.854 E F0(beha)180 300 Q(vior) --.2 E(.)-.55 E(Ar)144 316.8 Q .463(guments to non-string format speci\ -\214ers are treated as C constants, e)-.18 F .464 -(xcept that a leading plus or)-.15 F 1.259(minus sign is allo)144 328.8 +(ger representing the number)-.15 F .457(of seconds since the epoch.)180 +357.6 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F +.458(alues may be used: -1 represents the)-.25 F .848 +(current time, and -2 represents the time the shell w)180 369.6 R .847 +(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.347(d. If).1 F .847(no ar)3.347 +F .847(gument is speci-)-.18 F .354(\214ed, con)180 381.6 R -.15(ve)-.4 +G .354(rsion beha).15 F -.15(ve)-.2 G 2.854(sa).15 G 2.854(si)-2.854 G +2.854(f-)-2.854 G 2.854(1h)-2.854 G .354(ad been gi)-2.854 F -.15(ve) +-.25 G 2.854(n. This).15 F .355(is an e)2.854 F .355 +(xception to the usual)-.15 F F1(printf)2.855 E F0(beha)180 393.6 Q +(vior)-.2 E(.)-.55 E(Ar)144 410.4 Q .464(guments to non-string format s\ +peci\214ers are treated as C constants, e)-.18 F .463 +(xcept that a leading plus or)-.15 F 1.258(minus sign is allo)144 422.4 R 1.259 (wed, and if the leading character is a single or double quote, the v) --.25 F 1.258(alue is the)-.25 F(ASCII v)144 340.8 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 357.6 Q F1(format)3.423 E -F0 .923(is reused as necessary to consume all of the)3.423 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 .924(requires more)3.424 F F1(ar)144 369.6 Q(guments)-.37 E -F0 .033(than are supplied, the e)2.534 F .033 +-.25 F 1.259(alue is the)-.25 F(ASCII v)144 434.4 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 451.2 Q F2(format)3.424 E +F0 .923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423 +E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) +3.423 E F0 .923(requires more)3.423 F F2(ar)144 463.2 Q(guments)-.37 E +F0 .033(than are supplied, the e)2.533 F .033 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si) -.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .033(alue or null string,) --.25 F(as appropriate, had been supplied.)144 381.6 Q(The return v)5 E -(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F2(pushd) -108 398.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 410.4 Q F0([)2.5 E F2A F0 -2.5(][)C F1(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\ -irectory stack, or rotates the stack, making the ne)144 422.4 R 3.14(wt) --.25 G .64(op of the)-3.14 F 1.316(stack the current w)144 434.4 R 1.316 -(orking directory)-.1 F 6.316(.W)-.65 G 1.315(ith no ar)-6.716 F 1.315 -(guments, e)-.18 F 1.315(xchanges the top tw)-.15 F 3.815(od)-.1 G 1.315 -(irectories and)-3.815 F .871 -(returns 0, unless the directory stack is empty)144 446.4 R 5.871(.A) --.65 G -.18(rg)-5.871 G .872(uments, if supplied, ha).18 F 1.172 -.15 -(ve t)-.2 H .872(he follo).15 F .872(wing mean-)-.25 F(ings:)144 458.4 Q -F2144 470.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 482.4 Q F2(+)144 494.4 Q F1(n)A F0 -1.267(Rotates the stack so that the)25.3 F F1(n)3.767 E F0 1.268 -(th directory \(counting from the left of the list sho)B 1.268(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 F2144 518.4 Q F1(n)A F0 -.92(Rotates the stack so that the)25.3 F F1(n)3.42 E F0 .92 +.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,) +-.25 F(as appropriate, had been supplied.)144 475.2 Q(The return v)5 E +(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) +108 492 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 504 Q F0([)2.5 E F1A F0 2.5 +(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the direc\ +tory stack, or rotates the stack, making the ne)144 516 R 3.139(wt)-.25 +G .639(op of the)-3.139 F .416(stack the current w)144 528 R .416 +(orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F +(guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416 +(changes the top tw).15 F 2.917(od)-.1 G(irectories)-2.917 E 1.625 +(and returns 0, unless the directory stack is empty)144 540 R 6.625(.A) +-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 -.15 +(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 552 Q F1 +144 564 Q F0 1.811(Suppresses the normal change of directory when\ + rotating or adding directories to the)180 564 R +(stack, so that only the stack is manipulated.)180 576 Q F1(+)144 588 Q +F2(n)A F0 1.268(Rotates the stack so that the)180 588 R F2(n)3.768 E F0 +1.267(th directory \(counting from the left of the list sho)B 1.267 +(wn by)-.25 F F1(dirs)180 600 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F1144 612 Q F2(n)A F0 .92 +(Rotates the stack so that the)180 612 R F2(n)3.42 E F0 .92 (th directory \(counting from the right of the list sho)B .92(wn by)-.25 -F F2(dirs)180 530.4 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F1(dir)144.35 542.4 Q F0(Adds)23.98 E F1(dir)3.137 E F0 .287 -(to the directory stack at the top, making it the ne)3.517 F 2.788(wc) --.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F -(if it had been supplied as the ar)180 554.4 Q(gument to the)-.18 E F2 -(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 571.2 R F2(pushd) -2.989 E F0 .489(command is successful, a)2.989 F F2(dirs)2.988 E F0 .488 -(is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F -F2(pushd)2.988 E F0 1.039(returns 0 unless the cd to)144 583.2 R F1(dir) -3.889 E F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,) --.4 F F2(pushd)3.54 E F0 1.04(returns 0 unless the directory)3.54 F .847 -(stack is empty)144 595.2 R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent\ +F F1(dirs)180 624 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 +E F2(dir)144.35 636 Q F0(Adds)180 636 Q F2(dir)3.138 E F0 .288 +(to the directory stack at the top, making it the ne)3.518 F 2.787(wc) +-.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F +(if it had been supplied as the ar)180 648 Q(gument to the)-.18 E F1(cd) +2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 664.8 R F1(pushd)2.988 +E F0 .488(command is successful, a)2.988 F F1(dirs)2.988 E F0 .488 +(is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F +F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 676.8 R F2(dir) +3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 +F F1(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846 +(stack is empty)144 688.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ directory stack element is speci\214ed, or the directory change to the) --.15 F(speci\214ed ne)144 607.2 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E F2(pwd)108 624 Q F0([)2.5 E F2(\255LP)A F0(])A .844 -(Print the absolute pathname of the current w)144 636 R .845 -(orking directory)-.1 F 5.845(.T)-.65 G .845 -(he pathname printed contains no)-5.845 F .182(symbolic links if the)144 -648 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 .181(iltin command is).2 F 3.263(enabled. If) -144 660 R(the)3.263 E F23.263 E F0 .763 -(option is used, the pathname printed may contain symbolic links.)3.263 -F .764(The return)5.764 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 672 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 684 Q F2 -.18(re)108 700.8 S(ad) -.18 E F0([)3.816 E F2(\255ers)A F0 3.816(][)C F2-3.816 E F1(aname) -3.816 E F0 3.816(][)C F2-3.816 E F1(delim)3.816 E F0 3.816(][)C F2 --3.816 E F1(te)3.816 E(xt)-.2 E F0 3.816(][)C F2-3.816 E F1 -(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F2-3.817 E F1(nc) -3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F2-3.817 E F1(pr)3.817 E -(ompt)-.45 E F0 3.817(][)C F2-3.817 E F1(timeout)3.817 E F0 3.817 -(][)C F2-3.817 E F1(fd)3.817 E F0(])A([)108 712.8 Q F1(name)A F0 -(...])2.5 E .516(One line is read from the standard input, or from the \ -\214le descriptor)144 724.8 R F1(fd)3.016 E F0 .516(supplied as an ar) -3.016 F .517(gument to)-.18 F(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 -E(12)198.725 E 0 Cg EP +-.15 F(speci\214ed ne)144 700.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 +E(ails.)-.1 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(12)198.725 E 0 +Cg EP %%Page: 13 13 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 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-Bold@0 SF2.539 E F0 .039(option, and the \214rst w) -2.539 F .038(ord is assigned to the \214rst)-.1 F/F2 10/Times-Italic@0 -SF(name)2.538 E F0 2.538(,t).18 G .038(he second w)-2.538 F .038 -(ord to the second)-.1 F F2(name)2.538 E F0(,).18 E .42 -(and so on, with lefto)144 96 R -.15(ve)-.15 G 2.92(rw).15 G .42 -(ords and their interv)-3.02 F .42 -(ening separators assigned to the last)-.15 F F2(name)2.92 E F0 5.42(.I) -.18 G 2.92(ft)-5.42 G(here)-2.92 E .541(are fe)144 108 R .541(wer w)-.25 -F .541(ords read from the input stream than names, the remaining names \ -are assigned empty)-.1 F -.25(va)144 120 S 3.357(lues. The).25 F .857 -(characters in)3.357 F/F3 9/Times-Bold@0 SF(IFS)3.357 E F0 .857 -(are used to split the line into w)3.107 F .857 -(ords using the same rules the shell)-.1 F .754(uses for e)144 132 R -.753(xpansion \(described abo)-.15 F 1.053 -.15(ve u)-.15 H(nder).15 E -F1 -.75(Wo)3.253 G .753(rd Splitting).75 F F0 3.253(\). The)B .753 -(backslash character \()3.253 F F1(\\)A F0 3.253(\)m)C .753(ay be)-3.253 -F .075(used to remo)144 144 R .375 -.15(ve a)-.15 H .375 -.15(ny s).15 H -.075(pecial meaning for the ne).15 F .076 -(xt character read and for line continuation.)-.15 F(Options,)5.076 E -(if supplied, ha)144 156 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 168 Q F2(aname)2.5 E F0 1.05(The w) -180 180 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 192 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 204 Q -F2(delim)2.5 E F0(The \214rst character of)180 216 Q F2(delim)2.5 E F0 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(pwd)108 84 Q F0([)2.5 +E F1(\255LP)A F0(])A .845(Print the absolute pathname of the current w) +144 96 R .845(orking directory)-.1 F 5.844(.T)-.65 G .844 +(he pathname printed contains no)-5.844 F .181(symbolic links if the)144 +108 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 .181 +(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set) +2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264(enabled. If) +144 120 R(the)3.264 E F13.264 E F0 .763 +(option is used, the pathname printed may contain symbolic links.)3.264 +F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\ + reading the name of the current directory or an in)144 132 R -.25(va) +-.4 G(lid).25 E(option is supplied.)144 144 Q F1 -.18(re)108 160.8 S(ad) +.18 E F0([)3.817 E F1(\255ers)A F0 3.817(][)C F1-3.817 E/F2 10 +/Times-Italic@0 SF(aname)3.817 E F0 3.817(][)C F1-3.817 E F2 +(delim)3.817 E F0 3.817(][)C F1-3.817 E F2(te)3.817 E(xt)-.2 E F0 +3.817(][)C F1-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816 +(][)C F1-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1 +-3.816 E F2(pr)3.816 E(ompt)-.45 E F0 3.816(][)C F1-3.816 E +F2(timeout)3.816 E F0 3.816(][)C F1-3.816 E F2(fd)3.816 E F0(])A +([)108 172.8 Q F2(name)A F0(...])2.5 E .516(One line is read from the s\ +tandard input, or from the \214le descriptor)144 184.8 R F2(fd)3.016 E +F0 .516(supplied as an ar)3.016 F .517(gument to)-.18 F(the)144 196.8 Q +F13.848 E F0 1.348(option, split into w)3.848 F 1.348 +(ords as described abo)-.1 F 1.647 -.15(ve u)-.15 H(nder).15 E F1 -.75 +(Wo)3.847 G 1.347(rd Splitting).75 F F0 3.847(,a)C 1.347 +(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465 +(assigned to the \214rst)144 208.8 R F2(name)3.965 E F0 3.965(,t).18 G +1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F2(name)3.965 E +F0 3.965(,a).18 G 1.465(nd so on.)-3.965 F 1.465(If there are more)6.465 +F -.1(wo)144 220.8 S 1.112(rds than names, the remaining w).1 F 1.112 +(ords and their interv)-.1 F 1.112 +(ening delimiters are assigned to the last)-.15 F F2(name)144 232.8 Q F0 +5.722(.I).18 G 3.222(ft)-5.722 G .722(here are fe)-3.222 F .722(wer w) +-.25 F .723 +(ords read from the input stream than names, the remaining names are)-.1 +F .532(assigned empty v)144 244.8 R 3.032(alues. The)-.25 F .532 +(characters in)3.032 F/F3 9/Times-Bold@0 SF(IFS)3.032 E F0 .531 +(are used to split the line into w)2.782 F .531(ords using the same)-.1 +F .197(rules the shell uses for e)144 256.8 R .197 +(xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F1 +-.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .197 +(backslash charac-)2.697 F .157(ter \()144 268.8 R F1(\\)A F0 2.657(\)m) +C .157(ay be used to remo)-2.657 F .457 -.15(ve a)-.15 H .457 -.15(ny s) +.15 H .157(pecial meaning for the ne).15 F .156 +(xt character read and for line continu-)-.15 F 2.5(ation. Options,)144 +280.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 292.8 Q F2(aname)2.5 E F0 1.049 +(The w)180 304.8 R 1.049 +(ords are assigned to sequential indices of the array v)-.1 F(ariable) +-.25 E F2(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F2 +(aname)180.33 316.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 +(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5 +E(guments are ignored.)-.18 E F1144 328.8 Q F2(delim)2.5 E F0 +(The \214rst character of)180 340.8 Q F2(delim)2.5 E F0 (is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1144 228 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 240 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 252 Q -.15(ve)-.25 G 2.5(\)e).15 G -(diting settings.)-2.5 E F1144 264 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 276 Q(gins.)-.15 E F1144 288 Q F2(nc)2.5 E(har) --.15 E(s)-.1 E F1 -.18(re)180 300 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 312 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 F1144 324 -Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 336 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 348 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 360 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 372 Q F1144 384 Q -F2(pr)2.5 E(ompt)-.45 E F0(Display)180 396 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 408 Q 2.5(yi)-.15 G 2.5(nput. The)-2.5 F +F1144 352.8 Q F0 .373 +(If the standard input is coming from a terminal,)180 352.8 R F1 -.18 +(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo) +2.622 E -.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E +.218(to obtain the line.)180 364.8 R .218 +(Readline uses the current \(or def)5.218 F .218 +(ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E +(acti)180 376.8 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E +F1144 388.8 Q F2(te)2.5 E(xt)-.2 E F0(If)180 388.8 Q F1 -.18(re) +2.716 G(adline).18 E F0 .216(is being used to read the line,)2.716 F F2 +(te)2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2 +E .215(fer before edit-)-.25 F(ing be)180 400.8 Q(gins.)-.15 E F1 +144 412.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 424.8 S(ad).18 +E F0 1.394(returns after reading)3.894 F F2(nc)3.894 E(har)-.15 E(s)-.1 +E F0 1.395(characters rather than w)3.894 F 1.395 +(aiting for a complete line of)-.1 F(input, b)180 436.8 Q +(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 +E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 +144 448.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 460.8 S +(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F2(nc) +3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F +1.269(aiting for a complete)-.1 F .274 +(line of input, unless EOF is encountered or)180 472.8 R F1 -.18(re) +2.775 G(ad).18 E F0 .275(times out.)2.775 F .275 +(Delimiter characters encoun-)5.275 F 1.003 +(tered in the input are not treated specially and do not cause)180 484.8 +R F1 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F2(nc) +3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 496.8 R .608 +(The result is not split on the characters in)5.608 F F1(IFS)3.108 E F0 +3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 508.8 S .67 +(riable is assigned e).25 F .669 +(xactly the characters read \(with the e)-.15 F .669 +(xception of backslash; see the)-.15 F F1180 520.8 Q F0 +(option belo)2.5 E(w\).)-.25 E F1144 532.8 Q F2(pr)2.5 E(ompt)-.45 +E F0(Display)180 544.8 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161 +(on standard error)3.66 F 3.661(,w)-.4 G 1.161(ithout a trailing ne) +-3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 556.8 Q +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 420 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 432 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 444 Q F0(Silent mode.)26.41 E +144 568.8 Q F0 .544(Backslash does not act as an escape character) +180 568.8 R 5.543(.T)-.55 G .543 +(he backslash is considered to be part of)-5.543 F(the line.)180 580.8 Q +(In particular)5 E 2.5(,ab)-.4 G(ackslash-ne)-2.5 E +(wline pair may not be used as a line continuation.)-.25 E F1144 +592.8 Q F0(Silent mode.)180 592.8 Q (If input is coming from a terminal, characters are not echoed.)5 E F1 -144 456 Q F2(timeout)2.5 E F0(Cause)180 468 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 480 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 492 Q +144 604.8 Q F2(timeout)2.5 E F0(Cause)180 616.8 Q F1 -.18(re)2.928 +G(ad).18 E F0 .428(to time out and return f)2.928 F .428 +(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .561 +(ber of characters\) is not read within)180 628.8 R F2(timeout)3.061 E +F0(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number) +3.061 F(with a fractional portion follo)180 640.8 Q (wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E .3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ g input from a terminal, pipe, or other special \214le; it has no ef)180 -504 R .506(fect when reading)-.25 F .59(from re)180 516 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 528 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 540 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 -552 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) -.15 E(xceeded.)-.15 E F1144 564 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 580.8 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 592.8 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 604.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 616.8 Q(gument to)-.18 E F1 -2.5 E F0(.)A F1 -.18(re)108 633.6 S(adonly).18 E F0([)2.5 E F1 -(\255aAf)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A -F2(wor)A(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 645.6 R -.15(ve) --.25 G(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77 -(ed readonly; the v)-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 -.77(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 -657.6 R 1.096(If the)6.096 F F13.596 E F0 1.097 -(option is supplied, the functions corresponding to the)3.596 F F2 -(names)3.597 E F0 1.097(are so)3.597 F(mark)144 669.6 Q 3.334(ed. The) --.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 -(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) --3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .776(ables to associati)144 681.6 R 1.076 -.15(ve a)-.25 H 3.276 -(rrays. If).15 F .777(both options are supplied,)3.276 F F13.277 E -F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name) -3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 693.6 R -.15(ve) --.25 G .521(n, or if the).15 F F13.021 E F0 .521 -(option is supplied, a list of all readonly names is printed.)3.021 F -.521(The other)5.521 F .295(options may be used to restrict the output \ -to a subset of the set of readonly names.)144 705.6 R(The)5.296 E F1 -2.796 E F0(option)2.796 E .786 -(causes output to be displayed in a format that may be reused as input.) -144 717.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -729.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) --3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) -3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) --5.718 F -.25(va)-.4 G(lid).25 E(GNU Bash-4.2)72 768 Q(2004 Apr 20) -148.735 E(13)198.725 E 0 Cg EP +652.8 R .505(fect when reading)-.25 F .589(from re)180 664.8 R .589 +(gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589 +(times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve) +-.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59 +(artial input read into the speci\214ed).15 F -.25(va)180 676.8 S +(riable).25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 +.27(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately) +2.77 F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 +G(ata.)-2.77 E 1.12(The e)180 688.8 R 1.12 +(xit status is 0 if input is a)-.15 F -.25(va)-.2 G 1.12 +(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G 1.12 +(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 700.8 R -.15(ex)2.5 G +(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E +F1144 712.8 Q F2(fd)2.5 E F0(Read input from \214le descriptor)180 +712.8 Q F2(fd)2.5 E F0(.)A .477(If no)144 729.6 R F2(names)3.337 E F0 +.477(are supplied, the line read is assigned to the v)3.247 F(ariable) +-.25 E F3(REPL)2.976 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .476 +(The e)4.976 F .476(xit status is zero,)-.15 F(GNU Bash-4.2)72 768 Q +(2004 Apr 20)148.735 E(13)198.725 E 0 Cg EP %%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 .26 -(option is encountered, one of the)144 84 R/F1 10/Times-Italic@0 SF -(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/F2 10/Times-Bold@0 SF2.76 E F0 .26 -(is supplied with a)2.76 F F1(name)144.36 96 Q F0 -(that is not a function.)2.68 E F2 -.18(re)108 112.8 S(tur).18 E(n)-.15 -E F0([)2.5 E F1(n)A F0(])A .02(Causes a function to stop e)144 124.8 R --.15(xe)-.15 G .02(cuting and return the v).15 F .021 -(alue speci\214ed by)-.25 F F1(n)2.881 E F0 .021(to its caller)2.761 F -5.021(.I)-.55 G(f)-5.021 E F1(n)2.881 E F0 .021(is omitted,)2.761 F .469 -(the return status is that of the last command e)144 136.8 R -.15(xe) --.15 G .469(cuted in the function body).15 F 5.469(.I)-.65 G(f)-5.469 E -F2 -.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 148.8 R .466(ut during e)-.2 F -.15(xe)-.15 G -.467(cution of a script by the).15 F F2(.)2.967 E F0(\()5.467 E F2(sour) -A(ce)-.18 E F0 2.967(\)c)C .467(ommand, it causes the shell to)-2.967 F -.088(stop e)144 160.8 R -.15(xe)-.15 G .087 -(cuting that script and return either).15 F F1(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 172.8 R .613 -(xit status of the script.)-.15 F(If)5.613 E F1(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 184.8 R -.011(return status is non-zero if)2.511 F F2 -.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 196.8 S .409 -(unction and not during e)-2.909 F -.15(xe)-.15 G .41 -(cution of a script by).15 F F2(.)2.91 E F0(or)3.743 E F2(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 F2(RETURN)144 208.8 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 F2(set)108 225.6 Q -F0([)2.5 E F2(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F2-2.5 E -F1(option\255name)2.5 E F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0(...])2.5 E -F2(set)108 237.6 Q F0([)2.5 E F2(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F2 -(+o)-2.5 E F1(option\255name)2.5 E F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0 -(...])2.5 E -.4(Wi)144 249.6 S .836(thout options, the name and v).4 F -.835(alue of each shell v)-.25 F .835 -(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 261.6 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.912(reset. In)144 273.6 R F1(posix)2.912 E F0 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E .772(unless end-of-\214le is encountered,) +144 84 R/F1 10/Times-Bold@0 SF -.18(re)3.272 G(ad).18 E F0 .773 +(times out \(in which case the status is greater than 128\), a)3.272 F +-.25(va)144 96 S 2.004 +(riable assignment error \(such as assigning to a readonly v).25 F 2.004 +(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.004(lid \214le).25 F +(descriptor is supplied as the ar)144 108 Q(gument to)-.18 E F12.5 +E F0(.)A F1 -.18(re)108 124.8 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 +2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E +F0([=)A F2(wor)A(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 136.8 R +-.15(ve)-.25 G(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77 +(ed readonly; the v)-.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 +.77(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 +148.8 R 1.097(If the)6.097 F F13.597 E F0 1.097 +(option is supplied, the functions corresponding to the)3.597 F F2 +(names)3.596 E F0 1.096(are so)3.596 F(mark)144 160.8 Q 3.334(ed. The) +-.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 +(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) +-3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) +-.25 E .777(ables to associati)144 172.8 R 1.077 -.15(ve a)-.25 H 3.277 +(rrays. If).15 F .777(both options are supplied,)3.277 F F13.277 E +F0(tak)3.277 E .776(es precedence.)-.1 F .776(If no)5.776 F F2(name) +3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 184.8 R -.15(ve) +-.25 G .521(n, or if the).15 F F13.021 E F0 .521 +(option is supplied, a list of all readonly names is printed.)3.021 F +.522(The other)5.521 F .295(options may be used to restrict the output \ +to a subset of the set of readonly names.)144 196.8 R(The)5.295 E F1 +2.795 E F0(option)2.795 E .786 +(causes output to be displayed in a format that may be reused as input.) +144 208.8 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144 +220.8 Q .718(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +-3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) +3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) +-5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) +144 232.8 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +-.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 +(is supplied with a)2.76 F F2(name)144.36 244.8 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 261.6 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 273.6 R +-.15(xe)-.15 G .021(cuting and return the v).15 F .021 +(alue speci\214ed by)-.25 F F2(n)2.88 E F0 .02(to its caller)2.76 F 5.02 +(.I)-.55 G(f)-5.02 E F2(n)2.88 E F0 .02(is omitted,)2.76 F .596 +(the return status is that of the last command e)144 285.6 R -.15(xe) +-.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E +F1 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15 +G(cuted).15 E 1.239(by a trap handler)144 297.6 R 3.738(,t)-.4 G 1.238 +(he last command used to determine the status is the last command e) +-3.738 F -.15(xe)-.15 G(cuted).15 E 1.066(before the trap handler)144 +309.6 R 6.067(.i)-.55 G(f)-6.067 E F1 -.18(re)3.567 G(tur).18 E(n)-.15 E +F0 1.067(is e)3.567 F -.15(xe)-.15 G 1.067(cuted during a).15 F F1(DEB) +3.567 E(UG)-.1 E F0 1.067(trap, the last command used to)3.567 F .39 +(determine the status is the last command e)144 321.6 R -.15(xe)-.15 G +.389(cuted by the trap handler before).15 F F1 -.18(re)2.889 G(tur).18 E +(n)-.15 E F0 -.1(wa)2.889 G 2.889(si).1 G -1.9 -.4(nv o)-2.889 H -.1(ke) +.4 G(d.).1 E(If)144 333.6 Q F1 -.18(re)2.583 G(tur).18 E(n)-.15 E F0 +.084(is used outside a function, b)2.583 F .084(ut during e)-.2 F -.15 +(xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E F0(\()5.084 +E F1(sour)A(ce)-.18 E F0 2.584(\)c)C .084(ommand, it)-2.584 F .589 +(causes the shell to stop e)144 345.6 R -.15(xe)-.15 G .589 +(cuting that script and return either).15 F F2(n)3.448 E F0 .588 +(or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e) +144 357.6 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F +.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .326 +(is supplied, the return v)2.826 F .326(alue is)-.25 F .445 +(its least signi\214cant 8 bits.)144 369.6 R .444 +(The return status is non-zero if)5.445 F F1 -.18(re)2.944 G(tur).18 E +(n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381 +(ment, or is used outside a function and not during e)144 381.6 R -.15 +(xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E +F1(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15 +E .75(mand associated with the)144 393.6 R F1(RETURN)3.249 E F0 .749 +(trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 +G .749(cution resumes after the function).15 F(or script.)144 405.6 Q F1 +(set)108 422.4 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C +F1-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E +F0(...])2.5 E F1(set)108 434.4 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 +2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E +(g)-.37 E F0(...])2.5 E -.4(Wi)144 446.4 S .835 +(thout options, the name and v).4 F .835(alue of each shell v)-.25 F +.836(ariable are displayed in a format that can be)-.25 F .784 +(reused as input for setting or resetting the currently-set v)144 458.4 +R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783 +(riables cannot be).25 F 2.911(reset. In)144 470.4 R F2(posix)2.911 E F0 .412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412 -(The output is sorted according to the current)5.412 F 3.53 -(locale. When)144 285.6 R 1.031(options are speci\214ed, the)3.53 F -3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) --.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F -1.624(after option processing are treated as v)144 297.6 R 1.623 +(The output is sorted according to the current)5.412 F 3.531 +(locale. When)144 482.4 R 1.031(options are speci\214ed, the)3.531 F +3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An) +-.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623 +(after option processing are treated as v)144 494.4 R 1.624 (alues for the positional parameters and are assigned, in)-.25 F(order) -144 309.6 Q 2.5(,t)-.4 G(o)-2.5 E F2($1)2.5 E F0(,)A F2($2)2.5 E F0(,)A -F2 2.5(... $)2.5 F F1(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F2144 321.6 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 333.6 Q(vironment of subsequent commands.) --.4 E F2144 345.6 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 357.6 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F2144 369.6 Q F0 -.087(Exit immediately if a)29.86 F F1(pipeline)2.587 E F0 .087 -(\(which may consist of a single)2.587 F F1 .088(simple command)2.588 F -F0 .088(\), a)B F1(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 381.6 Q -F1 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 393.6 R .079(xit if the command that f)-.15 F -.08(ails is part of the command list immediately)-.1 F(follo)184 405.6 Q -1.655(wing a)-.25 F F2(while)4.155 E F0(or)4.155 E F2(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 F2(if)4.154 E F0(or)4.154 E F2(elif)4.154 E F0(reserv) -4.154 E(ed)-.15 E -.1(wo)184 417.6 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 F2 -(&&)3.081 E F0(or)3.081 E F2(||)3.081 E F0 .582(list e)3.082 F .582 -(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 429.6 R -F2(&&)3.418 E F0(or)3.418 E F2(||)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 441.6 S .66(lue is being in).25 F -.15(ve)-.4 G .66 -(rted with).15 F F2(!)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 453.6 R 1.112(ailed while)-.1 F -F23.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 465.6 R 2.677 -(xit. A)-.15 F .177(trap on)2.677 F F2(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 477.6 R .617 +144 506.4 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A +F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 518.4 Q +F0 1.378(Each v)184 518.4 R 1.377 +(ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) +-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F +1.377(ute and)-.2 F(mark)184 530.4 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 542.4 Q F0 .131 +(Report the status of terminated background jobs immediately)184 542.4 R +2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E +(primary prompt.)184 554.4 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 566.4 Q F0 +.088(Exit immediately if a)184 566.4 R F2(pipeline)2.588 E F0 .087 +(\(which may consist of a single)2.588 F F2 .087(simple command)2.587 F +F0 .087(\), a)B F2(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 578.4 Q +F2 1.52(compound command)4.02 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF +1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e) +.15 F 1.521(xits with a non-zero status.)-.15 F .08 +(The shell does not e)184 590.4 R .079(xit if the command that f)-.15 F +.079(ails is part of the command list immediately)-.1 F(follo)184 602.4 +Q 1.654(wing a)-.25 F F1(while)4.154 E F0(or)4.154 E F1(until)4.154 E F0 +-.1(ke)4.154 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.655 +(wing the)-.25 F F1(if)4.155 E F0(or)4.155 E F1(elif)4.155 E F0(reserv) +4.155 E(ed)-.15 E -.1(wo)184 614.4 S .582(rds, part of an).1 F 3.082(yc) +-.15 G .582(ommand e)-3.082 F -.15(xe)-.15 G .581(cuted in a).15 F F1 +(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .581(list e)3.081 F .581 +(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 626.4 R +F1(&&)3.417 E F0(or)3.417 E F1(||)3.417 E F0 3.417(,a)C 1.217 -.15(ny c) +-3.417 H .918(ommand in a pipeline b).15 F .918 +(ut the last, or if the command')-.2 F 3.418(sr)-.55 G(eturn)-3.418 E +-.25(va)184 638.4 S .661(lue is being in).25 F -.15(ve)-.4 G .661 +(rted with).15 F F1(!)3.161 E F0 5.661(.I)C 3.161(fac)-5.661 G .66 +(ompound command other than a subshell returns a)-3.161 F 1.112 +(non-zero status because a command f)184 650.4 R 1.112(ailed while)-.1 F +F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.113 +(eing ignored, the shell does)-3.612 F .178(not e)184 662.4 R 2.678 +(xit. A)-.15 F .178(trap on)2.678 F F1(ERR)2.678 E F0 2.678(,i)C 2.678 +(fs)-2.678 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 +(cuted before the shell e).15 F 2.677(xits. This)-.15 F .177 +(option applies to)2.677 F .617(the shell en)184 674.4 R .617 (vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 489.6 R(ONMENT) +-.4 F F3 .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)184 686.4 R(ONMENT) -.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 (\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 -(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 501.6 -Q 2.042(If a compound command or shell function e)184 519.6 R -.15(xe) --.15 G 2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F24.542 -E F0 2.042(is being)4.542 F 1.435(ignored, none of the commands e)184 -531.6 R -.15(xe)-.15 G 1.436 -(cuted within the compound command or function).15 F .194 -(body will be af)184 543.6 R .194(fected by the)-.25 F F22.694 E -F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F2 -2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) --.1 E 3.39(status. If)184 555.6 R 3.39(ac)3.39 G .89 -(ompound command or shell function sets)-3.39 F F23.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 567.6 Q F23.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 579.6 Q F2 -144 591.6 Q F0(Disable pathname e)30.97 E(xpansion.)-.15 E F2 -144 603.6 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 -615.6 Q(ault.)-.1 E F2144 627.6 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 639.6 Q F2 -144 651.6 Q F0 .148(Monitor mode.)25.97 F .148 -(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F -.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 -(on systems that support it \(see)184 663.6 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 675.6 R -.679(When a background job completes, the shell prints a line containin\ -g its)5.678 F -.15(ex)184 687.6 S(it status.).15 E F2144 699.6 Q -F0 .653(Read commands b)28.74 F .653(ut do not e)-.2 F -.15(xe)-.15 G -.653(cute them.).15 F .652(This may be used to check a shell script for) -5.653 F(syntax errors.)184 711.6 Q(This is ignored by interacti)5 E .3 --.15(ve s)-.25 H(hells.).15 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 -E(14)198.725 E 0 Cg EP +(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 698.4 +Q 2.042(If a compound command or shell function e)184 716.4 R -.15(xe) +-.15 G 2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 +E F0 2.043(is being)4.543 F 1.436(ignored, none of the commands e)184 +728.4 R -.15(xe)-.15 G 1.435 +(cuted within the compound command or function).15 F(GNU Bash-4.2)72 768 +Q(2004 Apr 20)148.735 E(14)198.725 E 0 Cg EP %%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 SF144 84 Q/F2 10/Times-Italic@0 SF(option\255name) -2.5 E F0(The)184 96 Q F2(option\255name)2.5 E F0 -(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 108 Q F0 -(Same as)224 120 Q F12.5 E F0(.)A F1(braceexpand)184 132 Q F0 -(Same as)224 144 Q F12.5 E F0(.)A F1(emacs)184 156 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 168 R -.15(ve)-.25 G 3.45(,u).15 G .95 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E .193(body will be af)184 84 R .193 +(fected by the)-.25 F/F1 10/Times-Bold@0 SF2.693 E F0 .193 +(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 +2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure)-.1 E +3.39(status. If)184 96 R 3.39(ac)3.39 G .89 +(ompound command or shell function sets)-3.39 F F13.39 E F0 .89 +(while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E +(where)184 108 Q F13.153 E F0 .653 +(is ignored, that setting will not ha)3.153 F .954 -.15(ve a)-.2 H .954 +-.15(ny e).15 H -.25(ff).15 G .654(ect until the compound command).25 F +(or the command containing the function call completes.)184 120 Q F1 +144 132 Q F0(Disable pathname e)184 132 Q(xpansion.)-.15 E F1 +144 144 Q F0 2.239(Remember the location of commands as the)184 +144 R 4.738(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F +-.15(xe)-.15 G 4.738(cution. This).15 F(is)4.738 E(enabled by def)184 +156 Q(ault.)-.1 E F1144 168 Q F0 .513(All ar)184 168 R .514 +(guments in the form of assignment statements are placed in the en)-.18 +F .514(vironment for a)-.4 F +(command, not just those that precede the command name.)184 180 Q F1 +144 192 Q F0 .149(Monitor mode.)184 192 R .149 +(Job control is enabled.)5.149 F .148(This option is on by def)5.149 F +.148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .65 +(on systems that support it \(see)184 204 R/F2 9/Times-Bold@0 SF .651 +(JOB CONTR)3.151 F(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151 +(\). All).15 F .651(processes run in a separate)3.151 F .679 +(process group.)184 216 R .678(When a background job completes, the she\ +ll prints a line containing its)5.679 F -.15(ex)184 228 S(it status.).15 +E F1144 240 Q F0 .652(Read commands b)184 240 R .652(ut do not e) +-.2 F -.15(xe)-.15 G .652(cute them.).15 F .653 +(This may be used to check a shell script for)5.652 F(syntax errors.)184 +252 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E +F1144 264 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) +184 276 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E +(wing:)-.25 E F1(allexport)184 288 Q F0(Same as)224 300 Q F12.5 E +F0(.)A F1(braceexpand)184 312 Q F0(Same as)224 324 Q F12.5 E F0(.) +A F1(emacs)184 336 Q F0 .089 +(Use an emacs-style command line editing interf)224 336 R 2.589 +(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 +(when the shell is interacti)224 348 R -.15(ve)-.25 G 3.45(,u).15 G .95 (nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E -F0 2.5(option. This)224 180 R(also af)2.5 E(fects the editing interf) +F0 2.5(option. This)224 360 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 192 Q(exit)-.18 E F0(Same as)11.31 E F12.5 E F0(.)A F1 -(errtrace)184 204 Q F0(Same as)5.03 E F12.5 E F0(.)A F1(functrace) -184 216 Q F0(Same as)224 228 Q F12.5 E F0(.)A F1(hashall)184 240 Q -F0(Same as)9.43 E F12.5 E F0(.)A F1(histexpand)184 252 Q F0 -(Same as)224 264 Q F12.5 E F0(.)A F1(history)184 276 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/F3 9 -/Times-Bold@0 SF(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 288 Q +184 372 Q(exit)-.18 E F0(Same as)224 372 Q F12.5 E F0(.)A F1 +(errtrace)184 384 Q F0(Same as)224 384 Q F12.5 E F0(.)A F1 +(functrace)184 396 Q F0(Same as)224 408 Q F12.5 E F0(.)A F1 +(hashall)184 420 Q F0(Same as)224 420 Q F12.5 E F0(.)A F1 +(histexpand)184 432 Q F0(Same as)224 444 Q F12.5 E F0(.)A F1 +(history)184 456 Q F0 .587(Enable command history)224 456 R 3.087(,a) +-.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 +H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF +(.)A F0 .587(This option is)5.087 F(on by def)224 468 Q (ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -300 Q(eeof)-.18 E F0 1.657(The ef)224 312 R 1.657 +480 Q(eeof)-.18 E F0 1.656(The ef)224 492 R 1.656 (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 -324 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 336 S(yw).1 E(ord)-.1 E F0(Same as)224 348 Q F1 -2.5 E F0(.)A F1(monitor)184 360 Q F0(Same as)5.56 E F12.5 E -F0(.)A F1(noclob)184 372 Q(ber)-.1 E F0(Same as)224 384 Q F12.5 E -F0(.)A F1(noexec)184 396 Q F0(Same as)11.12 E F12.5 E F0(.)A F1 -(noglob)184 408 Q F0(Same as)11.1 E F12.5 E F0(.)A F1(nolog)184 -420 Q F0(Currently ignored.)16.66 E F1(notify)184 432 Q F0(Same as)15 E -F12.5 E F0(.)A F1(nounset)184 444 Q F0(Same as)6.66 E F12.5 -E F0(.)A F1(onecmd)184 456 Q F0(Same as)6.67 E F12.5 E F0(.)A F1 -(ph)184 468 Q(ysical)-.15 E F0(Same as)5.14 E F12.5 E F0(.)A F1 -(pipefail)184 480 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 492 R +4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224 +504 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) +.15 E F1 -.1(ke)184 516 S(yw).1 E(ord)-.1 E F0(Same as)224 528 Q F1 +2.5 E F0(.)A F1(monitor)184 540 Q F0(Same as)224 540 Q F12.5 +E F0(.)A F1(noclob)184 552 Q(ber)-.1 E F0(Same as)224 564 Q F12.5 +E F0(.)A F1(noexec)184 576 Q F0(Same as)224 576 Q F12.5 E F0(.)A +F1(noglob)184 588 Q F0(Same as)224 588 Q F12.5 E F0(.)A F1(nolog) +184 600 Q F0(Currently ignored.)224 600 Q F1(notify)184 612 Q F0 +(Same as)224 612 Q F12.5 E F0(.)A F1(nounset)184 624 Q F0(Same as) +224 624 Q F12.5 E F0(.)A F1(onecmd)184 636 Q F0(Same as)224 636 Q +F12.5 E F0(.)A F1(ph)184 648 Q(ysical)-.15 E F0(Same as)224 648 Q +F12.5 E F0(.)A F1(pipefail)184 660 Q F0 1.03(If set, the return v) +224 660 R 1.029(alue of a pipeline is the v)-.25 F 1.029 +(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 672 R 1.136 (xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 504 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 516 Q F0 -2.09(Change the beha)17.77 F 2.091(vior of)-.2 F F1(bash)4.591 E F0 +-.15 F -.15(ex)224 684 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 696 Q F0 +2.091(Change the beha)224 696 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 (fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 -528 R F2 1.212(posix mode)B F0 3.712(\). See)B F3 1.212(SEE ALSO)3.712 F -F0(belo)3.462 E(w)-.25 E 2.306 -(for a reference to a document that details ho)224 540 R 4.807(wp)-.25 G -2.307(osix mode af)-4.807 F 2.307(fects bash')-.25 F(s)-.55 E(beha)224 -552 Q(vior)-.2 E(.)-.55 E F1(pri)184 564 Q(vileged)-.1 E F0(Same as)224 -576 Q F12.5 E F0(.)A F1 -.1(ve)184 588 S(rbose).1 E F0(Same as) -7.33 E F12.5 E F0(.)A F1(vi)184 600 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 612 Q -(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(xtrace)184 -624 Q F0(Same as)13.35 E F12.5 E F0(.)A(If)184 642 Q F13.052 -E F0 .552(is supplied with no)3.052 F F2(option\255name)3.053 E F0 3.053 -(,t)C .553(he v)-3.053 F .553(alues of the current options are printed.) --.25 F(If)5.553 E F1(+o)184 654 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 666 Q F1 -144 678 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($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 690 R 1.5 -(vironment, and the)-.4 F F3(SHELLOPTS)4 E F4(,)A F3 -.27(BA)184 702 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 714 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 2.196 -(user \(group\) id, and the)184 726 R F14.696 E F0 2.196 -(option is not supplied, these actions are tak)4.696 F 2.196(en and the) --.1 F(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(15)198.725 E 0 Cg EP +708 R F3 1.212(posix mode)B F0 3.712(\). See)B F2 1.212(SEE ALSO)3.712 F +F0(belo)3.463 E(w)-.25 E 2.307 +(for a reference to a document that details ho)224 720 R 4.806(wp)-.25 G +2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E +(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(15)198.725 E 0 Cg EP %%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(ef)184 84 Q -(fecti)-.25 E 1.667 -.15(ve u)-.25 H 1.367 -(ser id is set to the real user id.).15 F 1.367(If the)6.367 F/F1 10 -/Times-Bold@0 SF3.867 E F0 1.366 -(option is supplied at startup, the)3.866 F(ef)184 96 Q(fecti)-.25 E -.708 -.15(ve u)-.25 H .408(ser id is not reset.).15 F -.45(Tu)5.409 G -.409(rning this option of).45 F 2.909(fc)-.25 G .409(auses the ef)-2.909 -F(fecti)-.25 E .709 -.15(ve u)-.25 H .409(ser and group).15 F -(ids to be set to the real user and group ids.)184 108 Q F1144 120 -Q F0(Exit after reading and e)30.97 E -.15(xe)-.15 G -(cuting one command.).15 E F1144 132 Q F0 -.35(Tr)28.74 G .044 -(eat unset v).35 F .044(ariables and parameters other than the special \ -parameters "@" and "*" as an)-.25 F .182 -(error when performing parameter e)184 144 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 156 R 3.246(,t)-.4 G .746 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(beha)224 84 Q(vior)-.2 E(.)-.55 E/F1 10 +/Times-Bold@0 SF(pri)184 96 Q(vileged)-.1 E F0(Same as)224 108 Q F1 +2.5 E F0(.)A F1 -.1(ve)184 120 S(rbose).1 E F0(Same as)224 120 Q +F12.5 E F0(.)A F1(vi)184 132 Q F0 1.465 +(Use a vi-style command line editing interf)224 132 R 3.966(ace. This) +-.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F(interf)224 +144 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 +(xtrace)184 156 Q F0(Same as)224 156 Q F12.5 E F0(.)A(If)184 174 Q +F13.053 E F0 .553(is supplied with no)3.053 F/F2 10/Times-Italic@0 +SF(option\255name)3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 +(alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184 +186 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0 +3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072 +(commands to recreate the current)3.572 F +(option settings is displayed on the standard output.)184 198 Q F1 +144 210 Q F0 -.45(Tu)184 210 S 1.072(rn on).45 F F2(privile)4.822 E -.1 +(ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F +/F3 9/Times-Bold@0 SF($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV) +-.27 E F0 1.071(\214les are not pro-)3.322 F 1.5 +(cessed, shell functions are not inherited from the en)184 222 R 1.501 +(vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A +F3 -.27(BA)184 234 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G +(H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G +.524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F +(vironment,)-.4 E .379(are ignored.)184 246 R .379 +(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15 +(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462 +(user \(group\) id, and the)184 258 R F12.961 E F0 .461 +(option is not supplied, these actions are tak)2.961 F .461 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 270 Q .694 -.15(ve u)-.25 H .394 +(ser id is set to the real user id.).15 F .395(If the)5.395 F F1 +2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25 +E -.15(ve)-.25 G .387(user id is not reset.)184 282 R -.45(Tu)5.387 G +.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886 +F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F +(set to the real user and group ids.)184 294 Q F1144 306 Q F0 +(Exit after reading and e)184 306 Q -.15(xe)-.15 G(cuting one command.) +.15 E F1144 318 Q F0 -.35(Tr)184 318 S .043(eat unset v).35 F .044 +(ariables and parameters other than the special parameters "@" and "*" \ +as an)-.25 F .183(error when performing parameter e)184 330 R 2.683 +(xpansion. If)-.15 F -.15(ex)2.683 G .182 +(pansion is attempted on an unset v).15 F(ari-)-.25 E .746 +(able or parameter)184 342 R 3.246(,t)-.4 G .746 (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 -168 Q F1144 180 Q F0(Print shell input lines as the)29.3 E 2.5(ya) --.15 G(re read.)-2.5 E F1144 192 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 204 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 216 Q +354 Q F1144 366 Q F0(Print shell input lines as the)184 366 Q 2.5 +(ya)-.15 G(re read.)-2.5 E F1144 378 Q F0 .315(After e)184 378 R +.315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25 +(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,) +2.815 E F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184 +390 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F +1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0 +(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 402 Q (xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 228 Q F0 2.578(The shell performs brace e)27.63 F 2.578 +144 414 Q F0 2.579(The shell performs brace e)184 414 R 2.578 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 240 Q -(ault.)-.1 E F1144 252 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 +-.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 426 Q +(ault.)-.1 E F1144 438 Q F0 .213(If set,)184 438 R F1(bash)2.713 E +F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 (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 264 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F +3.054(tors. This)184 450 R .553(may be o)3.053 F -.15(ve)-.15 G .553 (rridden when creating output \214les by using the redirection opera-) -.15 F(tor)184 276 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 288 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 300 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 312 Q F1 -144 324 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 336 Q -.15 -(ve)-.25 G(.).15 E F1144 348 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 360 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 372 R(def)2.685 +.15 F(tor)184 462 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 474 Q F0 .103(If set, an)184 474 R 2.603(yt)-.15 G .103 +(rap on)-2.603 F F1(ERR)2.603 E F0 .104 +(is inherited by shell functions, command substitutions, and com-)2.603 +F .839(mands e)184 486 R -.15(xe)-.15 G .839(cuted in a subshell en).15 +F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838 +(trap is normally not inherited in)3.338 F(such cases.)184 498 Q F1 +144 510 Q F0(Enable)184 510 Q F1(!)3.031 E F0 .531 +(style history substitution.)5.531 F .531(This option is on by def)5.531 +F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 522 Q -.15 +(ve)-.25 G(.).15 E F1144 534 Q F0 .96 +(If set, the shell does not resolv)184 534 R 3.459(es)-.15 G .959 +(ymbolic links when e)-3.459 F -.15(xe)-.15 G .959 +(cuting commands such as).15 F F1(cd)3.459 E F0 2.821 +(that change the current w)184 546 R 2.822(orking directory)-.1 F 7.822 +(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.822 +(ysical directory structure)-.05 F 2.686(instead. By)184 558 R(def)2.686 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 384 Q(.)-.65 E F1144 -396 Q F0 .89(If set, an)27.63 F 3.39(yt)-.15 G .89(raps on)-3.39 F F1 +(mands which change the current directory)184 570 Q(.)-.65 E F1144 +582 Q F0 .89(If set, an)184 582 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 (DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 (are inherited by shell functions, command)3.39 F 1.932 -(substitutions, and commands e)184 408 R -.15(xe)-.15 G 1.932 +(substitutions, and commands e)184 594 R -.15(xe)-.15 G 1.932 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E -(UG)-.1 E F0(and)4.432 E F1(RETURN)184 420 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 432 Q -F0 .401(If no ar)28.6 F .401(guments follo)-.18 F 2.901(wt)-.25 G .401 +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 606 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 618 Q +F0 .4(If no ar)184 618 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401 (his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.4 E(the positional parameters are set to the)184 444 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 +(Otherwise,)5.401 E(the positional parameters are set to the)184 630 Q +F2(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G (ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 -456 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 468 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 480 Q .425(The options are of)144 -496.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +642 Q F0 1.945(Signal the end of options, cause all remaining)184 642 R +F2(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G +1.944(ssigned to the positional)-4.444 F 3.445(parameters. The)184 654 R +F13.445 E F0(and)3.445 E F13.445 E F0 .945 +(options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no) +3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B +(parameters remain unchanged.)184 666 Q .425(The options are of)144 +682.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 (ault unless otherwise noted.)-.1 F .425 -(Using + rather than \255 causes these options)5.425 F .178 -(to be turned of)144 508.8 R 2.678(f. The)-.25 F .178 +(Using + rather than \255 causes these options)5.425 F .177 +(to be turned of)144 694.8 R 2.677(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) --.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066 -(current set of options may be found in)144 520.8 R F1<24ad>2.566 E F0 +-.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066 +(current set of options may be found in)144 706.8 R F1<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 -(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F -(is encountered.)144 532.8 Q F1(shift)108 549.6 Q F0([)2.5 E F2(n)A F0 -(])A .429(The positional parameters from)144 561.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 573.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 585.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 597.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 609.6 Q F1(shopt)108 626.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 638.4 S .64(ggle the v).8 F .639 -(alues of settings controlling optional shell beha)-.25 F(vior)-.2 E -5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374 -(listed belo)144 650.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H -2.874(ft).4 G(he)-2.874 E F12.874 E F0 .375 -(option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 -F F12.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2 -(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 662.4 R .826 -(ith no options, or with the)-.4 F F13.326 E F0 .825 -(option, a list of all settable options is displayed, with an)3.326 F -.945(indication of whether or not each is set.)144 674.4 R(The)5.945 E -F13.445 E F0 .945(option causes output to be displayed in a form) -3.445 F(that may be reused as input.)144 686.4 Q(Other options ha)5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 698.4 Q -F0(Enable \(set\) each)26.41 E F2(optname)2.5 E F0(.)A F1144 710.4 -Q F0(Disable \(unset\) each)24.74 E F2(optname)2.5 E F0(.)A -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(16)198.725 E 0 Cg EP +(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F +(is encountered.)144 718.8 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E +(16)198.725 E 0 Cg EP %%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/F1 10 -/Times-Bold@0 SF144 84 Q F0 .003(Suppresses normal output \(quiet\ - mode\); the return status indicates whether the)24.74 F/F2 10 -/Times-Italic@0 SF(optname)2.503 E F0(is)2.503 E .255(set or unset.)180 -96 R .255(If multiple)5.255 F F2(optname)2.755 E F0(ar)2.755 E .256 -(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G(ith)-2.756 E F1 -2.756 E F0 2.756(,t)C .256(he return status is zero if)-2.756 F -(all)180 108 Q F2(optnames)2.5 E F0(are enabled; non-zero otherwise.)2.5 -E F1144 120 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 .625 -(If either)144 136.8 R F13.125 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.233(set or unset, respecti)144 -148.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 160.8 Q(ault.)-.1 E -1.544(The return status when listing options is zero if all)144 177.6 R -F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)4.044 F -.696 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(shift)108 84 Q F0([) +2.5 E/F2 10/Times-Italic@0 SF(n)A F0(])A .428 +(The positional parameters from)144 96 R F2(n)2.928 E F0 .429 +(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G .429 +(rameters represented by the num-).15 F(bers)144 108 Q F1($#)2.583 E F0 +(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0A F2(n)A F0 .083 +(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga) +-.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to) +.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06 +(is 0, no parameters are changed.)144 120 R(If)5.06 E F2(n)2.92 E F0 .06 +(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F(If) +5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56(,t) +C(he)-2.56 E .144(positional parameters are not changed.)144 132 R .144 +(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 .143 +(is greater than)2.883 F F1($#)2.643 E F0 +(or less than zero; otherwise 0.)144 144 Q F1(shopt)108 160.8 Q F0([)2.5 +E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname)-2.5 E +F0(...])2.5 E -.8(To)144 172.8 S .639(ggle the v).8 F .639 +(alues of settings controlling optional shell beha)-.25 F(vior)-.2 E +5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375 +(listed belo)144 184.8 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H +2.875(ft).4 G(he)-2.875 E F12.875 E F0 .375 +(option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 +F F12.875 E F0 .374(option to the)2.875 F F1(set)2.874 E F0 -.2 +(bu)2.874 G .374(iltin com-).2 F 3.325(mand. W)144 196.8 R .825 +(ith no options, or with the)-.4 F F13.325 E F0 .826 +(option, a list of all settable options is displayed, with an)3.325 F +.945(indication of whether or not each is set.)144 208.8 R(The)5.945 E +F13.445 E F0 .945(option causes output to be displayed in a form) +3.445 F(that may be reused as input.)144 220.8 Q(Other options ha)5 E .3 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 232.8 Q +F0(Enable \(set\) each)180 232.8 Q F2(optname)2.5 E F0(.)A F1144 +244.8 Q F0(Disable \(unset\) each)180 244.8 Q F2(optname)2.5 E F0(.)A F1 +144 256.8 Q F0 .003(Suppresses normal output \(quiet mode\); the \ +return status indicates whether the)180 256.8 R F2(optname)2.504 E F0 +(is)2.504 E .256(set or unset.)180 268.8 R .256(If multiple)5.256 F F2 +(optname)2.756 E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G +2.756(nw).15 G(ith)-2.756 E F12.756 E F0 2.755(,t)C .255 +(he return status is zero if)-2.755 F(all)180 280.8 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 292.8 Q F0 +(Restricts the v)180 292.8 Q(alues of)-.25 E F2(optname)2.5 E F0 +(to be those de\214ned for the)2.5 E F12.5 E F0(option to the)2.5 +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 309.6 R F1 +3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) +3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 +E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.234 +(set or unset, respecti)144 321.6 R -.15(ve)-.25 G(ly).15 E 7.234(.U) +-.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 +2.234(options are disabled \(unset\) by)4.734 F(def)144 333.6 Q(ault.) +-.1 E 1.544(The return status when listing options is zero if all)144 +350.4 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) +4.045 F .696 (When setting or unsetting options, the return status is zero unless an) -144 189.6 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696 -(alid shell)-.25 F(option.)144 201.6 Q(The list of)144 218.4 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(autocd)144 236.4 Q F0 .2 -(If set, a command name that is the name of a directory is e)11.11 F --.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 248.4 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +144 362.4 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 +(alid shell)-.25 F(option.)144 374.4 Q(The list of)144 391.2 Q F1(shopt) +2.5 E F0(options is:)2.5 E F1(autocd)144 409.2 Q F0 .199 +(If set, a command name that is the name of a directory is e)184 409.2 R +-.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E +(ment to the)184 421.2 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1(cdable_v)144 260.4 Q(ars)-.1 E F0 .155(If set, an ar)184 272.4 R .155 -(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156 +F1(cdable_v)144 433.2 Q(ars)-.1 E F0 .156(If set, an ar)184 445.2 R .156 +(gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 284.4 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 296.4 Q F0 +(name of a v)184 457.2 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 469.2 Q F0 1.055 -(If set, minor errors in the spelling of a directory component in a) -10.55 F F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987 -(corrected. The)184 308.4 R 1.487(errors check)3.987 F 1.487 -(ed for are transposed characters, a missing character)-.1 F 3.988(,a) --.4 G(nd)-3.988 E .77(one character too man)184 320.4 R 4.57 -.65(y. I) +(If set, minor errors in the spelling of a directory component in a)184 +469.2 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 481.2 R 1.488(errors check)3.988 F 1.487 +(ed for are transposed characters, a missing character)-.1 F 3.987(,a) +-.4 G(nd)-3.987 E .77(one character too man)184 493.2 R 4.57 -.65(y. I) -.15 H 3.27(fac).65 G .77 (orrection is found, the corrected \214lename is printed, and)-3.27 F -(the command proceeds.)184 332.4 Q +(the command proceeds.)184 505.2 Q (This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(checkhash)144 344.4 Q F0 2.079(If set,)184 356.4 R F1(bash) -4.579 E F0 2.079(checks that a command found in the hash table e)4.579 F -2.08(xists before trying to)-.15 F -.15(exe)184 368.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 380.4 -Q F0 .449(If set,)184 392.4 R F1(bash)2.949 E F0 .449 -(lists the status of an)2.949 F 2.949(ys)-.15 G .448 -(topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15 -F -.15(ve)-.25 G 3.438(shell. If)184 404.4 R(an)3.438 E 3.438(yj)-.15 G -.938(obs are running, this causes the e)-3.438 F .938 -(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203 -(attempted without an interv)184 416.4 R 2.203(ening command \(see)-.15 +.15 E F1(checkhash)144 517.2 Q F0 .737(If set,)184 529.2 R F1(bash)3.237 +E F0 .736(checks that a command found in the hash table e)3.237 F .736 +(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 +541.2 Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 553.2 +Q F0 .448(If set,)184 565.2 R F1(bash)2.948 E F0 .448 +(lists the status of an)2.948 F 2.949(ys)-.15 G .449 +(topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15 +F -.15(ve)-.25 G 3.439(shell. If)184 577.2 R(an)3.439 E 3.439(yj)-.15 G +.938(obs are running, this causes the e)-3.439 F .938 +(xit to be deferred until a second e)-.15 F .938(xit is)-.15 F 2.203 +(attempted without an interv)184 589.2 R 2.203(ening command \(see)-.15 F/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E --.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 428.4 Q -.1(wa) +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 601.2 Q -.1(wa) -.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G -(obs are stopped.)-2.5 E F1(checkwinsize)144 440.4 Q F0 .796(If set,)184 -452.4 R F1(bash)3.296 E F0 .796(checks the windo)3.296 F 3.296(ws)-.25 G -.797(ize after each command and, if necessary)-3.296 F 3.297(,u)-.65 G -.797(pdates the)-3.297 F -.25(va)184 464.4 S(lues of).25 E F3(LINES)2.5 +(obs are stopped.)-2.5 E F1(checkwinsize)144 613.2 Q F0 .797(If set,)184 +625.2 R F1(bash)3.297 E F0 .797(checks the windo)3.297 F 3.297(ws)-.25 G +.796(ize after each command and, if necessary)-3.297 F 3.296(,u)-.65 G +.796(pdates the)-3.296 F -.25(va)184 637.2 S(lues of).25 E F3(LINES)2.5 E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist) -144 476.4 Q F0 1.202(If set,)6.11 F F1(bash)3.702 E F0 1.202 +144 649.2 Q F0 1.202(If set,)184 649.2 R F1(bash)3.702 E F0 1.202 (attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 (ll lines of a multiple-line command in the same history).15 F(entry)184 -488.4 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 500.4 -Q F0 .419(If set,)184 512.4 R F1(bash)2.919 E F0 .419(changes its beha) -2.919 F .419(vior to that of v)-.2 F .42 -(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .462(to the) -184 524.4 R F1([[)2.962 E F0 .462(conditional command')2.962 F(s)-.55 E +661.2 Q 5(.T)-.65 G(his allo)-5 E +(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 673.2 +Q F0 .42(If set,)184 685.2 R F1(bash)2.92 E F0 .42(changes its beha)2.92 +F .419(vior to that of v)-.2 F .419 +(ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .461(to the) +184 697.2 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E F1(=~)2.962 E F0 .462 (operator and locale-speci\214c string comparison when)2.962 F .71 -(using the)184 536.4 R F1([[)3.21 E F0 .71(conditional command')3.21 F +(using the)184 709.2 R F1([[)3.21 E F0 .71(conditional command')3.21 F (s)-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) -3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .821 -(use ASCII collation and)184 548.4 R F2(str)3.321 E(cmp)-.37 E F0 .821 -(\(3\); bash-4.1 and later use the current locale').19 F 3.32(sc)-.55 G -(ollation)-3.32 E(sequence and)184 560.4 Q F2(str)2.5 E(coll)-.37 E F0 -(\(3\).).51 E F1(compat32)144 572.4 Q F0 1.409(If set,)184 584.4 R F1 -(bash)3.909 E F0 1.409(changes its beha)3.909 F 1.409(vior to that of v) --.2 F 1.41(ersion 3.2 with respect to locale-speci\214c)-.15 F .423 -(string comparison when using the)184 596.4 R F1([[)2.922 E F0 .422 -(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) -2.922 E F0 .422(operators \(see pre-)2.922 F(vious item\).)184 608.4 Q -F1(compat40)144 620.4 Q F0 1.409(If set,)184 632.4 R F1(bash)3.909 E F0 -1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 -(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 -(string comparison when using the)184 644.4 R F1([[)4.508 E F0 2.007 -(conditional command')4.508 F(s)-.55 E F1(<)4.507 E F0(and)4.507 E F1(>) -4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 656.4 R -F1(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 -(fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) --.15 E .087(4.0 and later interrupt the list as if the shell recei)184 -668.4 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F -.086(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 680.4 -Q(xt command in the list.)-.15 E F1(compat41)144 692.4 Q F0 1.483 -(If set,)184 704.4 R F1(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F -F2(posix)3.983 E F0 1.484 -(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 -(ex)184 716.4 S .959(pansion as a special character).15 F 5.959(.T)-.55 -G .958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458 -(nn).15 G .958(umber\) and)-3.458 F .59 -(the characters between the single quotes are considered quoted.)184 -728.4 R .59(This is the beha)5.59 F .59(vior of)-.2 F(GNU Bash-4.2)72 -768 Q(2004 Apr 20)148.735 E(17)198.725 E 0 Cg EP +3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82 +(use ASCII collation and)184 721.2 R F2(str)3.321 E(cmp)-.37 E F0 .821 +(\(3\); bash-4.1 and later use the current locale').19 F 3.321(sc)-.55 G +(ollation)-3.321 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(17) +198.725 E 0 Cg EP %%Page: 18 18 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E .59 -(posix mode through v)184 84 R .589(ersion 4.1.)-.15 F .589(The def) +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E(sequence and)184 84 Q/F1 10/Times-Italic@0 +SF(str)2.5 E(coll)-.37 E F0(\(3\).).51 E/F2 10/Times-Bold@0 SF(compat32) +144 96 Q F0 1.41(If set,)184 108 R F2(bash)3.91 E F0 1.41 +(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409 +(ersion 3.2 with respect to locale-speci\214c)-.15 F .422 +(string comparison when using the)184 120 R F2([[)2.922 E F0 .422 +(conditional command')2.922 F(s)-.55 E F2(<)2.922 E F0(and)2.922 E F2(>) +2.923 E F0 .423(operators \(see pre-)2.923 F .481 +(vious item\) and the ef)184 132 R .481 +(fect of interrupting a command list.)-.25 F .48(Bash v)5.481 F .48 +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 144 Q +(xt command in the list after one terminates due to an interrupt.)-.15 E +F2(compat40)144 156 Q F0 1.409(If set,)184 168 R F2(bash)3.909 E F0 +1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 +(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 +(string comparison when using the)184 180 R F2([[)4.508 E F0 2.007 +(conditional command')4.508 F(s)-.55 E F2(<)4.507 E F0(and)4.507 E F2(>) +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 192 R +F2(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 +(fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) +-.15 E .087(4.0 and later interrupt the list as if the shell recei)184 +204 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 +(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 216 Q +(xt command in the list.)-.15 E F2(compat41)144 228 Q F0 1.483(If set,) +184 240 R F2(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F1(posix) +3.983 E F0 1.484 +(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 +(ex)184 252 S .959(pansion as a special character).15 F 5.959(.T)-.55 G +.958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458 +(nn).15 G .958(umber\) and)-3.458 F .59 +(the characters between the single quotes are considered quoted.)184 264 +R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 +(posix mode through v)184 276 R .589(ersion 4.1.)-.15 F .589(The def) 5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589 -(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 96 Q/F1 10/Times-Bold@0 SF -(compat42)144 108 Q F0 1.796(If set,)184 120 R F1(bash)4.296 E F0 1.796 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 288 Q F2(compat42)144 300 Q +F0 1.796(If set,)184 312 R F2(bash)4.296 E F0 1.796 (does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 132 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F1(complete_fullquote)144 144 Q F0 .654(If set,)184 -156 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.524 -(forming completion.)184 168 R 1.524(If not set,)6.524 F F1(bash)4.024 E -F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524 -(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\ -haracters that will be quoted in completed \214lenames when these)184 -180 R .028(metacharacters appear in shell v)184 192 R .028 -(ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029 -(This means)5.029 F 1.073(that dollar signs in v)184 204 R 1.073 +4.296 F(ord)-.1 E -.15(ex)184 324 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F2(compat43)144 336 Q F0 .141(If set,)184 348 R F2 +(bash)2.641 E F0 .141(does not print a w)2.641 F .14 +(arning message if an attempt is made to use a quoted com-)-.1 F .912 +(pound array assignment as an ar)184 360 R .912(gument to)-.18 F F2 +(declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913 +(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 372 S .353 +(tal errors that cause the current command to f).1 F .353(ail \(the def) +-.1 F .352(ault beha)-.1 F .352(vior is to mak)-.2 F 2.852(et)-.1 G(hem) +-2.852 E -.1(fa)184 384 S 1.057(tal errors that cause the shell to e).1 +F 1.058(xit\), and does not reset the loop state when a shell)-.15 F +.375(function is e)184 396 R -.15(xe)-.15 G .375(cuted \(this allo).15 F +(ws)-.25 E F2(br)2.875 E(eak)-.18 E F0(or)2.875 E F2(continue)2.875 E F0 +.374(in a shell function to af)2.875 F .374(fect loops in)-.25 F +(the caller')184 408 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F2 +(complete_fullquote)144 420 Q F0 .653(If set,)184 432 R F2(bash)3.153 E +F0 .653(quotes all shell metacharacters in \214lenames and directory na\ +mes when per)3.153 F(-)-.2 E 1.525(forming completion.)184 444 R 1.524 +(If not set,)6.525 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G +4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F +2.667(from the set of characters that will be quoted in completed \214l\ +enames when these)184 456 R .029(metacharacters appear in shell v)184 +468 R .028(ariable references in w)-.25 F .028(ords to be completed.)-.1 +F .028(This means)5.028 F 1.072(that dollar signs in v)184 480 R 1.073 (ariable names that e)-.25 F 1.073 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 -(ev e)184 216 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ev e)184 492 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.123(his is acti)-6.123 F -.15(ve)-.25 G .59 +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 -228 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 240 Q +504 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 516 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 252 Q(expand)-.18 E F0 .486 -(If set,)184 264 R F1(bash)2.986 E F0 .486 +(ersions through 4.2.)-.15 E F2(dir)144 528 Q(expand)-.18 E F0 .487 +(If set,)184 540 R F2(bash)2.987 E F0 .486 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F -.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 -276 R .179(This changes the contents of the readline editing b)5.18 F -(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) -184 288 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 300 Q F0 .858(If set,)7.77 F -F1(bash)3.358 E F0 .858 -(attempts spelling correction on directory names during w)3.358 F .859 +.486(xpansion when perform-)-.15 F .179(ing \214lename completion.)184 +552 R .179(This changes the contents of the readline editing b)5.179 F +(uf)-.2 E(fer)-.25 E 5.18(.I)-.55 G 2.68(fn)-5.18 G(ot)-2.68 E(set,)184 +564 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F2(dirspell)144 576 Q F0 .859(If set,)184 +576 R F2(bash)3.359 E F0 .858 +(attempts spelling correction on directory names during w)3.359 F .858 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 312 Q(xist.)-.15 E -F1(dotglob)144 324 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 336 Q F0 1.386 -(If set, a non-interacti)7.79 F 1.686 -.15(ve s)-.25 H 1.386 -(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15(xe)-.15 G -1.387(cute the \214le speci\214ed as an).15 F(ar)184 348 Q -(gument to the)-.18 E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E +(the directory name initially supplied does not e)184 588 Q(xist.)-.15 E +F2(dotglob)144 600 Q F0(If set,)184 600 Q F2(bash)2.5 E F0 +(includes \214lenames be)2.5 E(ginning with a `.)-.15 E 2.5('i)-.7 G 2.5 +(nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F2(execfail) +144 612 Q F0 1.386(If set, a non-interacti)184 612 R 1.686 -.15(ve s) +-.25 H 1.386(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15 +(xe)-.15 G 1.387(cute the \214le speci\214ed as an).15 F(ar)184 624 Q +(gument to the)-.18 E F2(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E (An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 -E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 360 Q F0 -.717(If set, aliases are e)184 372 R .717(xpanded as described abo)-.15 -F 1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E -/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F -(by def)184 384 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 396 Q(ug)-.2 E F0(If set, beha)184 408 Q -(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 -420 Q F0(The)28.5 E F14.25 E F0 1.75(option to the)4.25 F F1 -(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 -(iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 432 Q -(gument.)-.18 E F1(2.)184 444 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 456 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 468 Q F0 .84 -(If the command run by the)28.5 F F1(DEB)3.34 E(UG)-.1 E F0 .841 -(trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 -(exe)220 480 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 492 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 504 Q -F2 -.27(BA)28.5 G(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G -(SH_ARGV).27 E F0 .904(are updated as described in their descriptions) -3.154 F(abo)220 516 Q -.15(ve)-.15 G(.).15 E F1(5.)184 528 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 -540 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 552 Q F0 .804(Error tracing is enabled:)28.5 F .805 -(command substitution, shell functions, and subshells)5.804 F(in)220 564 -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 576 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 588 Q -F0(are enabled.)2.5 E F1(extquote)144 600 Q F0 2.473(If set,)184 612 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 624 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 636 Q F0 -1.425(If set, patterns which f)7.77 F 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.424 -(xpansion result in an)-.15 F -.15(ex)184 648 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 660 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.936(If set, the suf)184 672 R<8c78>-.25 E .936(es speci\214ed by the) --.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) --.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 684 R .32 -(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 -(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 -(pletions. See)184 696 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 -(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 -(FIGNORE)2.948 E F3(.)A F0 .448(This option is)4.948 F(enabled by def) -184 708 Q(ault.)-.1 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(18) -198.725 E 0 Cg EP +E F2(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 636 Q F0 +.717(If set, aliases are e)184 648 R .717(xpanded as described abo)-.15 +F 1.017 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(ALIASES)3.217 E +/F4 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F +(by def)184 660 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F2(extdeb)144 672 Q(ug)-.2 E F0 .671(If set at shell in)184 684 R +-.2(vo)-.4 G .671(cation, arrange to e).2 F -.15(xe)-.15 G .671 +(cute the deb).15 F .672(ugger pro\214le before the shell starts,)-.2 F +.221(identical to the)184 696 R F22.721 E(ugger)-.2 E F0 +2.721(option. If)2.721 F .221(set after in)2.721 F -.2(vo)-.4 G .221 +(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 708 Q +(uggers is enabled:)-.2 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E +(18)198.725 E 0 Cg EP %%Page: 19 19 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF(globasciiranges)144 84 Q F0 2.519(If set, range e)184 -96 R 2.519(xpressions used in pattern matching brack)-.15 F 2.518(et e) --.1 F 2.518(xpressions \(see)-.15 F/F2 9/Times-Bold@0 SF -.09(Pa)5.018 G -(tter).09 E(n)-.135 E(Matching)184 108 Q F0(abo)2.964 E -.15(ve)-.15 G -3.214(\)b).15 G(eha)-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214 -(fi)-3.214 G 3.214(nt)-3.214 G .714 -(he traditional C locale when performing comparisons.)-3.214 F 1.02 -(That is, the current locale')184 120 R 3.52(sc)-.55 G 1.02 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(1.)184 84 Q F0(The) +220 84 Q F14.25 E F0 1.75(option to the)4.25 F F1(declar)4.251 E +(e)-.18 E F0 -.2(bu)4.251 G 1.751 +(iltin displays the source \214le name and line).2 F +(number corresponding to each function name supplied as an ar)220 96 Q +(gument.)-.18 E F1(2.)184 108 Q F0 1.667(If the command run by the)220 +108 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F +1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 120 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 132 Q F0 .84 +(If the command run by the)220 132 R F1(DEB)3.34 E(UG)-.1 E F0 .841 +(trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 +(exe)220 144 S .488 +(cuting in a subroutine \(a shell function or a shell script e).15 F +-.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 +(sour)220 156 Q(ce)-.18 E F0 -.2(bu)2.5 G +(iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E +(n)-.15 E F0(.)A F1(4.)184 168 Q/F2 9/Times-Bold@0 SF -.27(BA)220 168 S +(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 +(are updated as described in their descriptions)3.154 F(abo)220 180 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 192 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 192 R +(shells in)220 204 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(\()2.5 E/F3 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 +(inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 +(traps.)2.5 E F1(6.)184 216 Q F0 1.082(Error tracing is enabled: comman\ +d substitution, shell functions, and subshells)220 216 R(in)220 228 Q +-.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3(command) +2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1 +(extglob)144 240 Q F0 .4(If set, the e)184 240 R .4 +(xtended pattern matching features described abo)-.15 F .7 -.15(ve u) +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 252 Q +F0(are enabled.)2.5 E F1(extquote)144 264 Q F0 2.473(If set,)184 276 R +F1($)4.973 E F0<08>A F3(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 +E F0(")A F3(string)A F0 4.973("q)C 2.473(uoting is performed within) +-4.973 F F1(${)4.973 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G +(pansions).15 E(enclosed in double quotes.)184 288 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 300 Q F0 +1.425(If set, patterns which f)184 300 R 1.425 +(ail to match \214lenames during pathname e)-.1 F 1.424 +(xpansion result in an)-.15 F -.15(ex)184 312 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 324 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 336 R<8c78>-.25 E .936(es speci\214ed by the) +-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 348 R .32 +(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 +(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 +(pletions. See)184 360 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 +(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 +(FIGNORE)2.948 E/F4 9/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 +F(enabled by def)184 372 Q(ault.)-.1 E F1(globasciiranges)144 384 Q F0 +2.519(If set, range e)184 396 R 2.519 +(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 +(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E +(Matching)184 408 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 +(nt)-3.214 G .714(he traditional C locale when performing comparisons.) +-3.214 F 1.02(That is, the current locale')184 420 R 3.52(sc)-.55 G 1.02 (ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 -(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 132 R F1(A) +(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 432 R F1(A) 3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)-3.457 F .957(-case and lo)-.2 F(wer)-.25 E .957 -(-case ASCII characters will collate)-.2 F(together)184 144 Q(.)-.55 E -F1(globstar)144 156 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 +(-case ASCII characters will collate)-.2 F(together)184 444 Q(.)-.55 E +F1(globstar)144 456 Q F0 .519(If set, the pattern)184 456 R F1(**)3.019 +E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 (xt will match all \214les and zero)-.15 F .431 -(or more directories and subdirectories.)184 168 R .431 +(or more directories and subdirectories.)184 468 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 -180 Q F1(gnu_errfmt)144 192 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 204 Q F1(histappend)144 -216 Q F0 .676 +480 Q F1(gnu_errfmt)144 492 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 504 Q F1(histappend)144 +516 Q F0 .676 (If set, the history list is appended to the \214le named by the v)184 -228 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 240 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 252 Q(eedit)-.18 -E F0 .575(If set, and)184 264 R F1 -.18(re)3.075 G(adline).18 E F0 .575 +528 R .676(alue of the)-.25 F F2(HISTFILE)3.176 E F0 -.25(va)2.926 G +(ri-).25 E(able when the shell e)184 540 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 552 Q(eedit)-.18 +E F0 .575(If set, and)184 564 R F1 -.18(re)3.075 G(adline).18 E F0 .575 (is being used, a user is gi)3.075 F -.15(ve)-.25 G 3.075(nt).15 G .576 (he opportunity to re-edit a f)-3.075 F .576(ailed his-)-.1 F -(tory substitution.)184 276 Q F1(histv)144 288 Q(erify)-.1 E F0 .403 -(If set, and)184 300 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +(tory substitution.)184 576 Q F1(histv)144 588 Q(erify)-.1 E F0 .403 +(If set, and)184 600 R F1 -.18(re)2.903 G(adline).18 E F0 .403 (is being used, the results of history substitution are not immediately) -2.903 F .661(passed to the shell parser)184 312 R 5.661(.I)-.55 G .662 +2.903 F .661(passed to the shell parser)184 612 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 324 S -.25(ff).2 G(er).25 E +G(adline).18 E F0(editing)3.162 E -.2(bu)184 624 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 336 Q F0 1.182(If set, and)184 348 R F1 -.18(re)3.682 +(hostcomplete)144 636 Q F0 1.182(If set, and)184 648 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 -360 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +660 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 372 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 384 Q F0(If set,) -184 396 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 +F2(READLINE)3.881 E F0(abo)184 672 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 684 Q F0(If set,) +184 696 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 (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 408 Q -.1(ve)-.1 G(_comments).1 E F0 -.33(If set, allo)184 420 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 432 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 444 Q -(ault.)-.1 E F1(lastpipe)144 456 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 468 S(cuted in the background in the current shell en).15 E -(vironment.)-.4 E F1(lithist)144 480 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 492 Q -(wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 504 Q F0 .486 -(The shell sets this option if it is started as a login shell \(see)184 -516 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 528 S(lue may not be changed.).25 -E F1(mailwar)144 540 Q(n)-.15 E F0 .814(If set, and a \214le that)184 -552 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 564 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 576 Q F0 .325(If set, and)184 588 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 600 Q F1 -(nocaseglob)144 612 Q F0 .436(If set,)184 624 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 636 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 648 Q F0 1.194(If set,)184 -660 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 672 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 684 Q F0 -.854(If set,)184 696 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 708 S(pand to a null string, rather than themselv) -.15 E(es.)-.15 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(19)198.725 -E 0 Cg EP +.15 E(xits.)-.15 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(19) +198.725 E 0 Cg EP %%Page: 20 20 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF(pr)144 84 Q(ogcomp)-.18 E F0 .677 -(If set, the programmable completion f)184 96 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 108 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 120 Q(omptv) --.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 132 R 1.448 -(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic) --.15 F -.15(ex)184 144 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 156 Q(ault.)-.1 E -F1 -.18(re)144 168 S(stricted_shell).18 E F0 1.069 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(inherit_err)144 84 Q +(exit)-.18 E F0 .22(If set, command substitution inherits the v)184 96 R +.219(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .219 +(option, instead of unsetting)2.719 F(it in the subshell en)184 108 Q +2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F2 10 +/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti) +144 120 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 132 R 2.83 +(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E F0 +.33(to cause that w)2.83 F .33(ord and all remaining characters on)-.1 F +.967(that line to be ignored in an interacti)184 144 R 1.267 -.15(ve s) +-.25 H .967(hell \(see).15 F/F3 9/Times-Bold@0 SF(COMMENTS)3.467 E F0 +(abo)3.217 E -.15(ve)-.15 G 3.467(\). This).15 F .967(option is)3.467 F +(enabled by def)184 156 Q(ault.)-.1 E F1(lastpipe)144 168 Q F0 .066 +(If set, and job control is not acti)184 168 R -.15(ve)-.25 G 2.566(,t) +.15 G .066(he shell runs the last command of a pipeline not e)-2.566 F +-.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) +184 180 Q(vironment.)-.4 E F1(lithist)144 192 Q F0 .655(If set, and the) +184 192 R F1(cmdhist)3.155 E F0 .654 +(option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G +3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F +(with embedded ne)184 204 Q +(wlines rather than using semicolon separators where possible.)-.25 E F1 +(login_shell)144 216 Q F0 .486 +(The shell sets this option if it is started as a login shell \(see)184 +228 R F3(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) +-.15 G 2.987(\). The).15 F -.25(va)184 240 S(lue may not be changed.).25 +E F1(mailwar)144 252 Q(n)-.15 E F0 .815(If set, and a \214le that)184 +264 R F1(bash)3.315 E F0 .814 +(is checking for mail has been accessed since the last time it)3.315 F +-.1(wa)184 276 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E F2(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i) +-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 288 +Q F0 .324(If set, and)184 300 R F1 -.18(re)2.824 G(adline).18 E F0 .324 +(is being used,)2.824 F F1(bash)2.824 E F0 .324 +(will not attempt to search the)2.824 F F3 -.666(PA)2.825 G(TH)-.189 E +F0 .325(for possible)2.575 F +(completions when completion is attempted on an empty line.)184 312 Q F1 +(nocaseglob)144 324 Q F0 .437(If set,)184 336 R F1(bash)2.937 E F0 .436 +(matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25 +H .436(ashion when performing pathname).05 F -.15(ex)184 348 S +(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 360 Q F0 1.193(If set,)184 +372 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) +3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05 +F .551(while e)184 384 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 +(or)3.051 E F1([[)3.051 E F0 .551 +(conditional commands, when performing pattern substitution)3.051 F -.1 +(wo)184 396 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ +le completions as part of programmable com-)-.15 F(pletion.)184 408 Q F1 +(nullglob)144 420 Q F0 .855(If set,)184 432 R F1(bash)3.355 E F0(allo) +3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) +3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354 +(\)t).15 G(o)-3.354 E -.15(ex)184 444 S +(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 +456 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +468 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 +(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E +(are enabled.)184 480 Q(This option is enabled by def)5 E(ault.)-.1 E F1 +(pr)144 492 Q(omptv)-.18 E(ars)-.1 E F0 1.448 +(If set, prompt strings under)184 504 R 1.448(go parameter e)-.18 F +1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 516 +S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 +(fter being e)-2.67 F .17(xpanded as described in)-.15 F F3(PR)2.671 E +(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 E +(This option is enabled by def)184 528 Q(ault.)-.1 E F1 -.18(re)144 540 +S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 180 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 192 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 204 S(cuted, allo).15 E(wing the startup \214les to disco)-.25 E +184 552 R F3 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 564 Q 2.86 +(w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 +(This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G +(-).15 E(cuted, allo)184 576 Q(wing the startup \214les to disco)-.25 E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E -F1(shift_v)144 216 Q(erbose)-.1 E F0 .501(If set, the)184 228 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 240 Q F1(sour) -144 252 Q(cepath)-.18 E F0 .771(If set, the)184 264 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 276 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) --.1 E F1(xpg_echo)144 288 Q F0(If set, the)184 300 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 316.8 Q F0([)2.5 E F1A F0(])A 1.001 -(Suspend the e)144 328.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 340.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 352.8 S(nless the shell is a login shell and)-2.5 E +F1(shift_v)144 588 Q(erbose)-.1 E F0 .502(If set, the)184 600 R F1 +(shift)3.002 E F0 -.2(bu)3.002 G .501 +(iltin prints an error message when the shift count e).2 F .501 +(xceeds the number)-.15 F(of positional parameters.)184 612 Q F1(sour) +144 624 Q(cepath)-.18 E F0 .77(If set, the)184 636 R F1(sour)3.27 E(ce) +-.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F +.771(alue of)-.25 F F3 -.666(PA)3.271 G(TH)-.189 E F0 .771 +(to \214nd the directory containing the)3.021 F +(\214le supplied as an ar)184 648 Q 2.5(gument. This)-.18 F +(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 660 Q F0 +(If set, the)184 672 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E +(xpands backslash-escape sequences by def)-.15 E(ault.)-.1 E F1(suspend) +108 688.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 700.8 R +-.15(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve) +-.25 G 3.501(sa).15 G F3(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 +(login shell cannot be)3.501 F .022(suspended; the)144 712.8 R F1 +2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 +(rride this and force the suspension.).15 F .023(The return status is) +5.023 F 2.5(0u)144 724.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E F1(test)108 369.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 381.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 393.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 405.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 417.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 435.6 R .785 -(wing operators, listed in decreasing order of prece-)-.25 F 3.411 -(dence. The)144 447.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 459.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 471.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 483.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 495.6 Q F3 -.2 -(ex)144 507.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 519.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 531.6 S -(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 -543.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 560.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 578.4 S -.18(rg)-2.5 G(uments).18 E(The e) -180 590.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 602.4 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 614.4 Q -(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 626.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 638.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 650.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 662.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 674.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 686.4 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 698.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 710.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 722.4 R .578(xpression i\ -s the result of the binary test using the \214rst and third ar)-.15 F -(guments)-.18 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(20)198.725 E -0 Cg EP +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 1.332 -(as operands.)180 84 R(The)6.332 E/F1 10/Times-Bold@0 SF3.832 E F0 -(and)3.832 E F13.832 E F0 1.333 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(test)108 84 Q/F2 10 +/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)108 96 Q F2 -.2(ex)2.5 G +(pr).2 E F1(])2.5 E F0 .878(Return a status of 0 \(true\) or 1 \(f)144 +96 R .877(alse\) depending on the e)-.1 F -.25(va)-.25 G .877 +(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)144 108 S +(pr).2 E F0 5.53(.E).73 G .53 +(ach operator and operand must be a separate ar)-5.53 F 3.03 +(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.08 +(primaries described abo)144 120 R 3.38 -.15(ve u)-.15 H(nder).15 E/F3 9 +/Times-Bold@0 SF(CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9 +/Times-Roman@0 SF(.)A F1(test)7.579 E F0 3.079(does not accept an)5.579 +F(y)-.15 E(options, nor does it accept and ignore an ar)144 132 Q +(gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 +E .785(Expressions may be combined using the follo)144 150 R .786 +(wing operators, listed in decreasing order of prece-)-.25 F 3.412 +(dence. The)144 162 R -.25(eva)3.412 G .912 +(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F +4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F +(used when there are \214v)144 174 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments.)-.18 E F1(!)144 186 Q F2 -.2(ex)2.5 G(pr).2 E F0 -.35 +(Tr)180 186 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.) +-.1 E F1(\()144 198 Q F2 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26 +(Returns the v)180 198 R .26(alue of)-.25 F F2 -.2(ex)2.76 G(pr).2 E F0 +5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 +(rride the normal precedence of opera-).15 F(tors.)180 210 Q F2 -.2(ex) +144 222 S(pr1).2 E F02.5 E F1(a)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35 +(Tr)180 234 S(ue if both).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F2 +-.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F2 -.2(ex)144 246 S(pr1).2 E +F02.5 E F1(o)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 258 S +(ue if either).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F2 -.2(ex)2.5 G +(pr2).2 E F0(is true.)2.52 E F1(test)144 274.8 Q F0(and)2.5 E F1([)2.5 E +F0 -.25(eva)2.5 G(luate conditional e).25 E +(xpressions using a set of rules based on the number of ar)-.15 E +(guments.)-.18 E 2.5(0a)144 292.8 S -.18(rg)-2.5 G(uments).18 E(The e) +180 304.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 316.8 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 328.8 Q +(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 +E 2.5(2a)144 340.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 352.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +F .37(xpression is true if and only if the second ar)-.15 F .37 +(gument is null.)-.18 F .379(If the \214rst ar)180 364.8 R .38 +(gument is one of the unary conditional operators listed abo)-.18 F .68 +-.15(ve u)-.15 H(nder).15 E F3(CONDI-)2.88 E(TION)180 376.8 Q .553 +(AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552 +(xpression is true if the unary test is true.)-.15 F .552 +(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 388.8 Q +(alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E +(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 400.8 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 412.8 R .236 +(wing conditions are applied in the order listed.)-.25 F .236 +(If the second ar)5.236 F .236(gument is one of)-.18 F .855 +(the binary conditional operators listed abo)180 424.8 R 1.155 -.15 +(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F +F4(,)A F0(the)3.104 E .578(result of the e)180 436.8 R .578(xpression i\ +s the result of the binary test using the \214rst and third ar)-.15 F +(guments)-.18 E 1.333(as operands.)180 448.8 R(The)6.333 E F13.833 +E F0(and)3.833 E F13.832 E F0 1.332 (operators are considered binary operators when there are)3.832 F .558 -(three ar)180 96 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 108 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 120 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 132 Q -(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 144 S -.18(rg)-2.5 G -(uments).18 E .384(If the \214rst ar)180 156 R .384(gument is)-.18 F F1 -(!)2.884 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 -G .385(tion of the three-ar).05 F .385(gument e)-.18 F .385 -(xpression com-)-.15 F 1.648(posed of the remaining ar)180 168 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 180 Q -.15(ve) --.15 G(.).15 E 2.5(5o)144 192 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 -E 1.635(The e)180 204 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 216 Q -.15(ve)-.15 G(.).15 E(When used with)144 234 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 250.8 Q F0 +(three ar)180 460.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 +F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F +.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F +(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180 +472.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 +(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02 +F(ar)180 484.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 +2.985(,t)C .485(he result is the one-ar)-2.985 F .485 +(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E +(wise, the e)180 496.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 +508.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 520.8 R +.385(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385 +(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar) +.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F 1.647 +(posed of the remaining ar)180 532.8 R 4.147(guments. Otherwise,)-.18 F +1.647(the e)4.147 F 1.648(xpression is parsed and e)-.15 F -.25(va)-.25 +G(luated).25 E(according to precedence using the rules listed abo)180 +544.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 556.8 S 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments)-.18 E 1.635(The e)180 568.8 R 1.635 +(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635 +(luated according to precedence using the rules listed).25 F(abo)180 +580.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 598.8 Q F1(test)2.5 E +F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1 +(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F1(times)108 615.6 Q F0 1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)13.23 F(The return status is 0.)144 262.8 -Q F1(trap)108 279.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 291.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 303.6 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E -F0 3.108(,e)C .608 + processes run from the shell.)144 615.6 R(The return status is 0.)144 +627.6 Q F1(trap)108 644.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E +F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .703(The command) +144 656.4 R F2(ar)3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F +-.15(xe)-.15 G .702(cuted when the shell recei).15 F -.15(ve)-.25 G +3.202(ss).15 G(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G +(f)-5.702 E F2(ar)3.532 E(g)-.37 E F0(is)3.422 E .608 +(absent \(and there is a single)144 668.4 R F2(sigspec)3.108 E F0 3.108 +(\)o)C(r)-3.108 E F13.108 E F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.658(\(the v)144 315.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 +.659(\(the v)144 680.4 R .659(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 (is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 327.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 339.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 351.6 R F13.36 +144.34 692.4 Q F0 .58(is ignored by the shell and by the commands it in) +3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E +F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 +(been supplied, then the trap commands associated with each)144 704.4 R +F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F(gu-)-.18 E .86(ments are supplied or if only)144 716.4 R F13.36 E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 -(prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 363.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 375.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 387.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 405.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 -417.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 429.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 441.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 453.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 465.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 477.6 Q -.15(xe) --.15 G(cuting.).15 E .521(If a)144 495.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 507.6 R .184(xit status, subject to)-.15 F -.451(the follo)144 519.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 531.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 543.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 555.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 567.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 -585.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 597.6 R .662 -(alues in a subshell or subshell en)-.25 F .661(vironment when one is) --.4 F 2.5(created. The)144 609.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 -626.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 638.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 650.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 662.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 674.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 686.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 698.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 710.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 722.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 +(prints the list of commands associated with each)3.36 F 4.327 +(signal. The)144 728.4 R F14.327 E F0 1.826(option causes the she\ +ll to print a list of signal names and their corresponding)4.327 F (GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(21)198.725 E 0 Cg EP %%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 SF144 84 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 10/Times-Italic@0 SF(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 96 R F1 -3.244 E F0 .744(option is not also used.)3.244 F .743 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E 3.125(numbers. Each)144 84 R/F1 10 +/Times-Italic@0 SF(sigspec)3.465 E F0 .625 +(is either a signal name de\214ned in <)3.435 F F1(signal.h)A F0 .626 +(>, or a signal number)B 5.626(.S)-.55 G(ignal)-5.626 E +(names are case insensiti)144 96 Q .3 -.15(ve a)-.25 H(nd the).15 E/F2 9 +/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a) +144 114 R F1(sigspec)4.489 E F0(is)4.459 E F2(EXIT)4.149 E F0 1.649 +(\(0\) the command)3.899 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F +-.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.)-.15 F +1.648(If a)6.648 F F1(sigspec)4.488 E F0(is)4.458 E F2(DEB)144 126 Q(UG) +-.09 E/F3 9/Times-Roman@0 SF(,)A F0 1.167(the command)3.417 F F1(ar) +3.997 E(g)-.37 E F0 1.167(is e)3.887 F -.15(xe)-.15 G 1.167 +(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F1 1.168(simple command) +3.667 F F0(,)A F1(for)3.668 E F0(command,)3.668 E F1(case)3.668 E F0 +(com-)3.668 E(mand,)144 138 Q F1(select)2.647 E F0 .147(command, e)2.647 +F -.15(ve)-.25 G .147(ry arithmetic).15 F F1(for)2.647 E F0 .146 +(command, and before the \214rst command e)2.647 F -.15(xe)-.15 G .146 +(cutes in a).15 F .145(shell function \(see)144 150 R F2 .145 +(SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15 +F .146(to the description of the)2.646 F/F4 10/Times-Bold@0 SF(extdeb) +2.646 E(ug)-.2 E F0 .146(option to)2.646 F(the)144 162 Q F4(shopt)3.201 +E F0 -.2(bu)3.201 G .7(iltin for details of its ef).2 F .7(fect on the) +-.25 F F4(DEB)3.2 E(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec) +3.54 E F0(is)3.51 E F2(RETURN)3.2 E F3(,)A F0 .7(the com-)2.95 F(mand) +144 174 Q F1(ar)3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G +.643(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G +.644(cuted with the).15 F F4(.)3.144 E F0(or)3.144 E F4(sour)3.144 E(ce) +-.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 186 Q -.15(xe)-.15 +G(cuting.).15 E .961(If a)144 204 R F1(sigspec)3.801 E F0(is)3.771 E F2 +(ERR)3.461 E F3(,)A F0 .961(the command)3.211 F F1(ar)3.791 E(g)-.37 E +F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 +G 3.461(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(sin\ +gle simple command\), a list, or a compound command returns a non\255ze\ +ro e)144 216 R .185(xit status, subject to)-.15 F .452(the follo)144 228 +R .452(wing conditions.)-.25 F(The)5.452 E F2(ERR)2.952 E F0 .451 +(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451 +(ailed command is part of the com-)-.1 F .387 +(mand list immediately follo)144 240 R .387(wing a)-.25 F F4(while)2.887 +E F0(or)2.887 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F1(if)2.898 E F0 .388 +(statement, part)4.848 F .778(of a command e)144 252 R -.15(xe)-.15 G +.778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 .778 +(list e)3.278 F .778(xcept the command follo)-.15 F .778 +(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.277 E F0 +3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 264 R 1.28 +(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78 +F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F4(!) +3.78 E F0(.)A(These are the same conditions obe)144 276 Q(yed by the) +-.15 E F4(err)2.5 E(exit)-.18 E F0(\()2.5 E F4A F0 2.5(\)o)C +(ption.)-2.5 E 1.095 +(Signals ignored upon entry to the shell cannot be trapped or reset.)144 +294 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 +(being ignored are reset to their original v)144 306 R .662 +(alues in a subshell or subshell en)-.25 F .662(vironment when one is) +-.4 F 2.5(created. The)144 318 R(return status is f)2.5 E(alse if an)-.1 +E(y)-.15 E F1(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G +(lid; otherwise).25 E F4(trap)2.5 E F0(returns true.)2.5 E F4(type)108 +334.8 Q F0([)2.5 E F4(\255aftpP)A F0(])A F1(name)2.5 E F0([)2.5 E F1 +(name)A F0(...])2.5 E -.4(Wi)144 346.8 S .174 +(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F1(name) +3.034 E F0 -.1(wo)2.854 G .173 +(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F +F4144 358.8 Q F0 .842(option is used,)3.342 F F4(type)3.342 E F0 +.843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E +F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0 +(,).24 E F1 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F1 +(\214le)5.253 E F0(if)3.523 E F1(name)144.36 370.8 Q F0 .087 +(is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 +(ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 +(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F1 +(name)2.946 E F0 .086(is not)2.766 F .118 +(found, then nothing is printed, and an e)144 382.8 R .118 +(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F +F42.619 E F0 .119(option is used,)2.619 F F4(type)2.619 E F0 .855 +(either returns the name of the disk \214le that w)144 394.8 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0 +.855(were speci\214ed as a com-)3.535 F .64(mand name, or nothing if)144 +406.8 R/F5 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 +(uld not return).1 F F1(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F4 +3.141 E F0 .641(option forces a)3.141 F F2 -.666(PA)3.141 G(TH) +-.189 E F0 .113(search for each)144 418.8 R F1(name)2.613 E F0 2.613(,e) +C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613 +F F0 -.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113 +(.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F4 +2.612 E F0(and)144 430.8 Q F43.23 E F0 .73(print the hashed v)3.23 +F .731 +(alue, which is not necessarily the \214le that appears \214rst in)-.25 +F F2 -.666(PA)3.231 G(TH)-.189 E F3(.)A F0 .731(If the)5.231 F F4 +144 442.8 Q F0 1.749(option is used,)4.249 F F4(type)4.248 E F0 1.748 +(prints all of the places that contain an e)4.248 F -.15(xe)-.15 G 1.748 +(cutable named).15 F F1(name)4.248 E F0 6.748(.T).18 G(his)-6.748 E .744 +(includes aliases and functions, if and only if the)144 454.8 R F4 +3.244 E F0 .744(option is not also used.)3.244 F .744 (The table of hashed)5.744 F 1.223(commands is not consulted when using) -144 108 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 120 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 132 Q F1(ulimit)108 148.8 Q F0([)2.5 E F1 -(\255HST)A(abcde\214lmnpqrstuvx)-.92 E F0([)2.5 E F2(limit)A F0(]])A -(Pro)144 160.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 +144 466.8 R F43.723 E F0 6.223(.T)C(he)-6.223 E F43.723 E F0 +1.223(option suppresses shell function lookup, as)3.723 F .325(with the) +144 478.8 R F4(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F4(type) +5.325 E F0 .325(returns true if all of the ar)2.825 F .326 +(guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326 +(re not)-2.826 F(found.)144 490.8 Q F4(ulimit)108 507.6 Q F0([)2.5 E F4 +(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 +519.6 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 +(he resources a)-2.744 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.944(that allo)144 172.8 R 3.444(ws)-.25 G .944(uch control.)-3.444 F -(The)5.944 E F13.444 E F0(and)3.444 E F13.444 E F0 .943 +.943(that allo)144 531.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F +(The)5.943 E F43.443 E F0(and)3.443 E F43.444 E F0 .944 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 184.8 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 +144 543.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 (hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.708 F .426(be increased up to the v)144 196.8 R .426 -(alue of the hard limit.)-.25 F .425(If neither)5.426 F F12.925 E -F0(nor)2.925 E F12.925 E F0 .425 -(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 -208.8 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 +ft limit may)2.709 F .425(be increased up to the v)144 555.6 R .425 +(alue of the hard limit.)-.25 F .426(If neither)5.425 F F42.926 E +F0(nor)2.926 E F42.926 E F0 .426 +(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 +567.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.742(of the special v)144 220.8 R(alues)-.25 E F1(hard)3.242 E F0(,)A F1 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w) +.741(of the special v)144 579.6 R(alues)-.25 E F4(hard)3.241 E F0(,)A F4 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F4(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 232.8 R -.15(ve)-.25 G(ly).15 E -5.78(.I)-.65 G(f)-5.78 E F2(limit)3.37 E F0 .78 +(soft limit, and no limit, respecti)144 591.6 R -.15(ve)-.25 G(ly).15 E +5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78 (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 244.8 R F12.999 E F0 -.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498 +F .498(resource is printed, unless the)144 603.6 R F42.999 E F0 +.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 (more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 256.8 Q 2.5 -(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F1 -144 268.8 Q F0(All current limits are reported)25.3 E F1144 -280.8 Q F0(The maximum sock)24.74 E(et b)-.1 E(uf)-.2 E(fer size)-.25 E -F1144 292.8 Q F0(The maximum size of core \214les created)25.86 E -F1144 304.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 F1144 316.8 Q F0 -(The maximum scheduling priority \("nice"\))25.86 E F1144 328.8 Q -F0(The maximum size of \214les written by the shell and its children) -26.97 E F1144 340.8 Q F0(The maximum number of pending signals) -27.52 E F1144 352.8 Q F0(The maximum size that may be lock)27.52 E -(ed into memory)-.1 E F1144 364.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 F1144 376.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 388.8 Q F1144 400.8 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))24.74 E F1 -144 412.8 Q F0 -(The maximum number of bytes in POSIX message queues)24.74 E F1144 -424.8 Q F0(The maximum real-time scheduling priority)25.86 E F1144 -436.8 Q F0(The maximum stack size)26.41 E F1144 448.8 Q F0 -(The maximum amount of cpu time in seconds)26.97 E F1144 460.8 Q -F0(The maximum number of processes a)24.74 E -.25(va)-.2 G -(ilable to a single user).25 E F1144 472.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 -484.8 Q F1144 496.8 Q F0(The maximum number of \214le locks)25.3 E -F1144 508.8 Q F0(The maximum number of threads)23.63 E(If)144 -525.6 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 537.6 R -.15(ve)-.25 G .045(n, then).15 F F1 -2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 -(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1 -2.544 E F0 2.544(,w)C .044(hich is)-2.544 F .402(in seconds;)144 -549.6 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 -561.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 -573.6 Q 2.5(wl)-.25 G(imit.)-2.5 E F1(umask)108 590.4 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 602.4 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 614.4 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -626.4 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 638.4 R .547 -(ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G -(he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 650.4 Q F0 .551 -(is omitted, the output is in a form that may be reused as input.)3.231 -F .552(The return status is 0 if the)5.552 F(mode w)144 662.4 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 679.2 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E(Remo)144 691.2 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 703.2 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(GNU Bash-4.2)72 768 Q(2004 Apr 20) -148.735 E(22)198.725 E 0 Cg EP +(limit name and unit are printed before the v)144 615.6 Q 2.5 +(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F4 +144 627.6 Q F0(All current limits are reported)180 627.6 Q F4 +144 639.6 Q F0(The maximum sock)180 639.6 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F4144 651.6 Q F0 +(The maximum size of core \214les created)180 651.6 Q F4144 663.6 +Q F0(The maximum size of a process')180 663.6 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F4144 675.6 Q F0 +(The maximum scheduling priority \("nice"\))180 675.6 Q F4144 +687.6 Q F0 +(The maximum size of \214les written by the shell and its children)180 +687.6 Q F4144 699.6 Q F0(The maximum number of pending signals)180 +699.6 Q F4144 711.6 Q F0 +(The maximum number of kqueues that may be allocated)180 711.6 Q +(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(22)198.725 E 0 Cg EP %%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF(unset)108 84 Q F0<5bad>2.5 E F1(fv)A F0 2.5(][)C --2.5 E F1(n)A F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 96 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 +(The maximum size that may be lock)180 84 Q(ed into memory)-.1 E F1 +144 96 Q F0(The maximum resident set size \(man)180 96 Q 2.5(ys) +-.15 G(ystems do not honor this limit\))-2.5 E F1144 108 Q F0 .791 +(The maximum number of open \214le descriptors \(most systems do not al\ +lo)180 108 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +(be set\))180 120 Q F1144 132 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 132 Q F1 +144 144 Q F0(The maximum number of bytes in POSIX message queues) +180 144 Q F1144 156 Q F0 +(The maximum real-time scheduling priority)180 156 Q F1144 168 Q +F0(The maximum stack size)180 168 Q F1144 180 Q F0 +(The maximum amount of cpu time in seconds)180 180 Q F1144 192 Q +F0(The maximum number of processes a)180 192 Q -.25(va)-.2 G +(ilable to a single user).25 E F1144 204 Q F0 .47 +(The maximum amount of virtual memory a)180 204 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 216 +Q F1144 228 Q F0(The maximum number of \214le locks)180 228 Q F1 +144 240 Q F0(The maximum number of pseudoterminals)180 240 Q F1 +144 252 Q F0(The maximum number of threads)180 252 Q(If)144 268.8 +Q/F2 10/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve) +-.25 G .468(n, and the).15 F F12.968 E F0 .468 +(option is not used,)2.968 F F2(limit)2.968 E F0 .468(is the ne)2.968 F +2.968(wv)-.25 G .468(alue of the speci\214ed resource.)-3.218 F(If)5.468 +E .044(no option is gi)144 280.8 R -.15(ve)-.25 G .044(n, then).15 F F1 +2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1 +2.545 E F0 2.545(,w)C .045(hich is)-2.545 F 1.589(in seconds;)144 +292.8 R F14.089 E F0 4.089(,w)C 1.589 +(hich is in units of 512-byte blocks;)-4.089 F F14.089 E F0(,)A F1 +4.089 E F0(,)A F14.089 E F0(,)A F14.089 E F0(,)A F1 +4.089 E F0 4.089(,a)C(nd)-4.089 E F14.089 E F0 4.088(,w)C +1.588(hich are)-4.088 F 1.438(unscaled v)144 304.8 R 1.438 +(alues; and, when in Posix mode,)-.25 F F13.939 E F0(and)3.939 E +F13.939 E F0 3.939(,w)C 1.439(hich are in 512-byte increments.) +-3.939 F(The)6.439 E .404(return status is 0 unless an in)144 316.8 R +-.25(va)-.4 G .404(lid option or ar).25 F .404 +(gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 +328.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 345.6 Q F0([)2.5 E +F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A +.2(The user \214le-creation mask is set to)144 357.6 R F2(mode)2.7 E F0 +5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 +(gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ +therwise it is interpreted as a symbolic mode mask similar to that acce\ +pted by)144 369.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +381.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 +(alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 +(option causes the mask to be)2.882 F .547 +(printed in symbolic form; the def)144 393.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 405.6 Q F0 .551 +(is omitted, the output is in a form that may be reused as input.)3.231 +F .552(The return status is 0 if the)5.552 F(mode w)144 417.6 Q +(as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E +(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 +(unalias)108 434.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 446.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) +4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E +F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 +F(remo)144 458.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +(alue is true unless a supplied)-.25 E F2(name)2.86 E F0 +(is not a de\214ned alias.)2.68 E F1(unset)108 475.2 Q F0<5bad>2.5 E F1 +(fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) +2.5 E -.15(Fo)144 487.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 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 108 Q F0 1.551 +-.25 G 1.328(n, each).15 F F2(name)144.36 499.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 120 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 132 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1 +4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 511.2 R F1 +4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0 +2.141(refers to a shell function, and the function de\214nition is)4.821 +F(remo)144 523.2 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1 2.537 E F0 .037(option is supplied, and)2.537 F F2(name)2.537 E F0 .037 (is a v)2.537 F .037(ariable with the)-.25 F F2(namer)2.537 E(ef)-.37 E F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.537 E .492 -(be unset rather than the v)144 144 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 +(be unset rather than the v)144 535.2 R .492(ariable it references.)-.25 +F F15.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1 2.992 E F0 .492(option is supplied.)2.992 F .493(If no)5.493 F -.221(options are supplied, each)144 156 R F2(name)2.721 E F0 .221 +.221(options are supplied, each)144 547.2 R F2(name)2.721 E F0 .221 (refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22 (ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188 -(tion with that name is unset.)144 168 R 1.189(Each unset v)6.189 F +(tion with that name is unset.)144 559.2 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 180 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 192 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) +(passed to subsequent commands.)144 571.2 R 3.206(If an)8.206 F 5.706 +(yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 +E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.455 E F4(,)A F3(SECONDS)5.455 E +F4(,)A F3(LINENO)144 583.2 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) 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 204 -Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 G -(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) --.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 220.8 Q +F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 +595.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 +G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) +-.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 612 Q F0([)2.5 E F1A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 -(Wa)144 232.8 S .027(it for each speci\214ed child process and return i\ -ts termination status.).8 F(Each)5.026 E F2(n)2.886 E F0 .026 +(Wa)144 624 S .027(it for each speci\214ed child process and return its\ + termination status.).8 F(Each)5.026 E F2(n)2.886 E F0 .026 (may be a process ID)2.766 F .256 -(or a job speci\214cation; if a job spec is gi)144 244.8 R -.15(ve)-.25 -G .256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 +(or a job speci\214cation; if a job spec is gi)144 636 R -.15(ve)-.25 G +.256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 (ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E -F2(n)3.116 E F0 .318(is not gi)144 256.8 R -.15(ve)-.25 G .318 +F2(n)3.116 E F0 .318(is not gi)144 648 R -.15(ve)-.25 G .318 (n, all currently acti).15 F .618 -.15(ve c)-.25 H .318 (hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318 (nd the return status is zero.)-2.818 F .317(If the)5.317 F F1144 -268.8 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa) +660 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa) 2.861 G .361(its for an).1 F 2.862(yj)-.15 G .362 (ob to terminate and returns its e)-2.862 F .362(xit status.)-.15 F(If) -5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 280.8 S(on-e) +5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 672 S(on-e) -2.596 E .096(xistent process or job, the return status is 127.)-.15 F .095(Otherwise, the return status is the e)5.095 F .095(xit status)-.15 -F(of the last process or job w)144 292.8 Q(aited for)-.1 E(.)-.55 E/F5 -10.95/Times-Bold@0 SF(SEE ALSO)72 309.6 Q F0(bash\(1\), sh\(1\))108 -321.6 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(23)198.725 E 0 Cg EP +F(of the last process or job w)144 684 Q(aited for)-.1 E(.)-.55 E/F5 +10.95/Times-Bold@0 SF(SEE ALSO)72 700.8 Q F0(bash\(1\), sh\(1\))108 +712.8 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(23)198.725 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/rbash.0 b/doc/rbash.0 index 3ac18d8..9becaa4 100644 --- a/doc/rbash.0 +++ b/doc/rbash.0 @@ -1,4 +1,4 @@ -RBASH(1) RBASH(1) +RBASH(1) General Commands Manual RBASH(1) @@ -18,16 +18,16 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o specifying command names containing // - +o specifying a filename containing a // as an argument to the .. + +o specifying a filename containing a // as an argument to the .. builtin command - +o specifying a filename containing a slash as an argument to the + +o specifying a filename containing a slash as an argument to the --pp option to the hhaasshh builtin command - +o importing function definitions from the shell environment at + +o importing function definitions from the shell environment at startup - +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at + +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at startup +o redirecting output using the >, >|, <>, >&, &>, and >> redirect- @@ -36,10 +36,10 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o using the eexxeecc builtin command to replace the shell with another command - +o adding or deleting builtin commands with the --ff and --dd options + +o adding or deleting builtin commands with the --ff and --dd options to the eennaabbllee builtin command - +o using the eennaabbllee builtin command to enable disabled shell + +o using the eennaabbllee builtin command to enable disabled shell builtins +o specifying the --pp option to the ccoommmmaanndd builtin command @@ -48,8 +48,8 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL These restrictions are enforced after any startup files are read. - When a command that is found to be a shell script is executed, rrbbaasshh - turns off any restrictions in the shell spawned to execute the script. + 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) diff --git a/doc/rbash.ps b/doc/rbash.ps index 6d2a450..244a499 100644 --- a/doc/rbash.ps +++ b/doc/rbash.ps @@ -1,9 +1,9 @@ %!PS-Adobe-3.0 -%%Creator: groff version 1.19.2 -%%CreationDate: Mon Feb 24 08:28:31 2014 +%%Creator: groff version 1.22.3 +%%CreationDate: Wed Aug 31 10:24:00 2016 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold -%%DocumentSuppliedResources: procset grops 1.19 2 +%%DocumentSuppliedResources: procset grops 1.22 3 %%Pages: 1 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () @@ -13,7 +13,7 @@ %%PageMedia: Default %%EndDefaults %%BeginProlog -%%BeginResource: procset grops 1.19 2 +%%BeginResource: procset grops 1.22 3 %!PS-Adobe-3.0 Resource-ProcSet /setpacking where{ pop @@ -71,6 +71,7 @@ exch pop add exch pop /level0 save def 1 setlinecap 1 setlinejoin +DEFS/BPhook known{DEFS begin BPhook end}if 72 RES div dup scale LS{ 90 rotate @@ -136,7 +137,10 @@ pop findfont dup maxlength 1 index/FontName known not{1 add}if dict begin { -1 index/FID ne{def}{pop pop}ifelse +1 index/FID ne +2 index/UniqueID ne +and +{def}{pop pop}ifelse }forall /Encoding exch def dup/FontName exch def @@ -174,8 +178,10 @@ newpath userdict begin /showpage{}def /setpagedevice{}def +mark }bind def /PEND{ +cleartomark countdictstack CNT sub{end}repeat level1 restore }bind def @@ -226,47 +232,47 @@ def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron %%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 +/F0 10/Times-Roman@0 SF(RB)72 48 Q 130.47(ASH\(1\) General)-.35 F +(Commands Manual)2.5 E(RB)132.97 E(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 +(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 165.6 Q +(changing directories with)144 165.6 Q F2(cd)2.5 E F0<83>108 182.4 Q +(setting or unsetting the v)144 182.4 Q(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 +(SH_ENV).27 E F0<83>108 199.2 Q(specifying command names containing)144 +199.2 Q F2(/)2.5 E F0<83>108 216 Q(specifying a \214lename containing a) +144 216 Q F2(/)2.5 E F0(as an ar)2.5 E(gument to the)-.18 E F2(.)2.5 E +F0 -.2(bu)5 G(iltin command).2 E<83>108 232.8 Q .45 +(specifying a \214lename containing a slash as an ar)144 232.8 R .449 (gument to the)-.18 F F22.949 E F0 .449(option to the)2.949 F F2 (hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 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 +<83>108 261.6 Q(importing function de\214nitions from the shell en)144 +261.6 Q(vironment at startup)-.4 E<83>108 278.4 Q(parsing the v)144 +278.4 Q(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E +(vironment at startup)-.4 E<83>108 295.2 Q(redirecting output using the\ + >, >|, <>, >&, &>, and >> redirection operators)144 295.2 Q<83>108 312 +Q(using the)144 312 Q F2(exec)2.5 E F0 -.2(bu)2.5 G +(iltin command to replace the shell with another command).2 E<83>108 +328.8 Q(adding or deleting b)144 328.8 Q(uiltin commands with the)-.2 E F22.5 E F0(and)2.5 E F22.5 E F0(options to the)2.5 E F2 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 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 +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 345.6 Q +(using the)144 345.6 Q F2(enable)2.5 E F0 -.2(bu)2.5 G +(iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108 +362.4 Q(specifying the)144 362.4 Q F22.5 E F0(option to the)2.5 E +F2(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 379.2 Q +(turning of)144 379.2 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F2 +(set +r)2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A (These restrictions are enforced after an)108 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 diff --git a/doc/texinfo.tex b/doc/texinfo.tex index bfd765d..d494cce 100644 --- a/doc/texinfo.tex +++ b/doc/texinfo.tex @@ -3,11 +3,12 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2013-09-11.11} +\def\texinfoversion{2015-11-22.14} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. +% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 +% 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 @@ -96,7 +97,9 @@ \let\ptexraggedright=\raggedright \let\ptexrbrace=\} \let\ptexslash=\/ +\let\ptexsp=\sp \let\ptexstar=\* +\let\ptexsup=\sup \let\ptext=\t \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode @@ -193,17 +196,6 @@ wide-spread wrap-around } -% Margin to add to right of even pages, to left of odd pages. -\newdimen\bindingoffset -\newdimen\normaloffset -\newdimen\pagewidth \newdimen\pageheight - -% 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 } - % 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 @@ -248,6 +240,15 @@ \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} +% Output routine +% + +% 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 } + % Do @cropmarks to get crop marks. % \newif\ifcropmarks @@ -274,6 +275,7 @@ % described on page 260 of The TeXbook. It involves outputting two % marks for the sectioning macros, one before the section break, and % one after. I won't pretend I can describe this better than DEK... +% \def\domark{% \toks0=\expandafter{\lastchapterdefs}% \toks2=\expandafter{\lastsectiondefs}% @@ -286,6 +288,9 @@ \noexpand\else \the\toks8 % 2: color marks }% } + +% \gettopheadingmarks, \getbottomheadingmarks - extract needed part of mark. +% % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., @@ -301,36 +306,75 @@ % Avoid "undefined control sequence" errors. \def\lastchapterdefs{} \def\lastsectiondefs{} +\def\lastsection{} \def\prevchapterdefs{} \def\prevsectiondefs{} \def\lastcolordefs{} +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\pagewidth \newdimen\pageheight + % 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. +% \onepageout takes a vbox as an argument. +% \shipout a vbox for a single page, adding an optional header, footer, +% cropmarks, and footnote. This also causes index entries for this page +% to be written to the auxiliary files. +% \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % + % Common context changes for both heading and footing. % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars} % - \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi - \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% + % Retrieve the information for the headings from the marks in the page, + % and call Plain TeX's \makeheadline and \makefootline, which use the + % values in \headline and \footline. % + % This is used to check if we are on the first page of a chapter. + \ifcase0\topmark\fi + \ifx\thischapter\empty + % See comment for \gettopheadingmarks + \ifcase0\firstmark\fi + \let\curchaptername\thischaptername + \ifcase1\firstmark\fi + \let\prevchaptername\thischaptername + \else + \let\curchaptername\thischaptername + \ifcase1\topmark\fi + \let\prevchaptername\thischaptername + \fi + % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + % + \ifx\curchaptername\prevchaptername + \let\thischapterheading\thischapter + \else + % \thischapterheading is the same as \thischapter except it is blank + % for the first page of a chapter. This is to prevent the chapter name + % being shown twice. + \def\thischapterheading{}% + \fi + % + \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}% % {% + % Set context for writing to auxiliary files like index files. % 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. @@ -339,10 +383,10 @@ \normalturnoffactive % \ in index entries must not stay \, e.g., if % the page break happens to be in the middle of an example. % We don't want .vr (or whatever) entries like this: - % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} + % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; % it needs to be - % {\code {{\tt \backslashcurfont }acronym} + % {\code {{\backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi @@ -400,6 +444,7 @@ \newinsert\margin \dimen\margin=\maxdimen +% Main part of page, including any footnotes \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi @@ -422,9 +467,13 @@ \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + +% Argument parsing + % 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. +% For example, \def\foo{\parsearg\fooxxx}. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% @@ -443,9 +492,11 @@ }% } -% First remove any @comment, then any @c comment. +% First remove any @comment, then any @c comment. Also remove a @texinfoc +% comment (see \scanmacro for details). Pass the result on to \argcheckspaces. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} -\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm} +\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % @@ -480,14 +531,13 @@ % \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} + +% \parseargdef - define a command taking an argument on the line +% % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} -% -% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my -% favourite TeX trick. --kasal, 16nov03 - \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } @@ -677,6 +727,12 @@ \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. + \addgroupbox + \prevdepth = \dimen1 + \checkinserts +} + +\def\addgroupbox{ % \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). @@ -689,9 +745,8 @@ \fi \fi \box\groupbox - \prevdepth = \dimen1 - \checkinserts } + % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. @@ -934,12 +989,20 @@ where each line of input produces a line of output.} % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment % -\def\comment{\begingroup \catcode`\^^M=\other% +\def\comment{\begingroup \catcode`\^^M=\active% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other\commentxxx}% + +{\catcode`\^^M=\active% +\gdef\commentxxx#1^^M{\endgroup% +\futurelet\nexttoken\commentxxxx}% +\gdef\commentxxxx{\ifx\nexttoken\aftermacro\expandafter\comment\fi}% +} + +\def\c{\begingroup \catcode`\^^M=\active% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% -\commentxxx} -{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} -% -\let\c=\comment +\cxxx} +{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}} +% See comment in \scanmacro about why the definitions of @c and @comment differ % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. @@ -1010,69 +1073,23 @@ where each line of input produces a line of output.} % paragraph. % \gdef\dosuppressfirstparagraphindent{% - \gdef\indent{% - \restorefirstparagraphindent - \indent - }% - \gdef\noindent{% - \restorefirstparagraphindent - \noindent - }% - \global\everypar = {% - \kern -\parindent - \restorefirstparagraphindent - }% + \gdef\indent {\restorefirstparagraphindent \indent}% + \gdef\noindent{\restorefirstparagraphindent \noindent}% + \global\everypar = {\kern -\parindent \restorefirstparagraphindent}% } - +% \gdef\restorefirstparagraphindent{% - \global \let \indent = \ptexindent - \global \let \noindent = \ptexnoindent - \global \everypar = {}% + \global\let\indent = \ptexindent + \global\let\noindent = \ptexnoindent + \global\everypar = {}% } % @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{% - \fixbackslash % Turn off hack to swallow `\input texinfo'. - \iflinks - \tryauxfile - % Open the new aux file. TeX will close it automatically at exit. - \immediate\openout\auxfile=\jobname.aux - \fi % \openindices needs to do some work in any case. - \openindices - \let\setfilename=\comment % Ignore extra @setfilename cmds. - % - % If texinfo.cnf is present on the system, read it. - % Useful for site-wide @afourpaper, etc. - \openin 1 texinfo.cnf - \ifeof 1 \else \input texinfo.cnf \fi - \closein 1 - % - \comment % Ignore the actual filename. -} - -% Called from \setfilename. -% -\def\openindices{% - \newindex{cp}% - \newcodeindex{fn}% - \newcodeindex{vr}% - \newcodeindex{tp}% - \newcodeindex{ky}% - \newcodeindex{pg}% -} +% @setfilename INFO-FILENAME - ignored +\let\setfilename=\comment % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} @@ -1090,6 +1107,7 @@ where each line of input produces a line of output.} \newtoks\toksC \newtoks\toksD \newbox\boxA +\newbox\boxB \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest @@ -1138,10 +1156,12 @@ output) for that.)} \ifpdf % - % Color manipulation macros based on pdfcolor.tex, + % Color manipulation macros using ideas from pdfcolor.tex, % except using rgb instead of cmyk; the latter is said to render as a % very dark gray on-screen and a very dark halftone in print, instead - % of actual black. + % of actual black. The dark red here is dark enough to print on paper as + % nearly black, but still distinguishable for online viewing. We use + % black by default, though. \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % @@ -1251,10 +1271,9 @@ output) for that.)} % used to mark target names; must be expandable. \def\pdfmkpgn#1{#1} % - % by default, use a color that is dark enough to print on paper as - % nearly black, but still distinguishable for online viewing. - \def\urlcolor{\rgbDarkRed} - \def\linkcolor{\rgbDarkRed} + % by default, use black for everything. + \def\urlcolor{\rgbBlack} + \def\linkcolor{\rgbBlack} \def\endlink{\setcolor{\maincolor}\pdfendlink} % % Adding outlines to PDF; macros for calculating structure of outlines @@ -1825,8 +1844,10 @@ end % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defsl\slshape{10}{\magstep1}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} -\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf +\let\tenttsl=\defttsl \let\tensl=\defsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} @@ -1887,6 +1908,7 @@ end % Section fonts (14.4pt). \def\secnominalsize{14pt} \setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secrmnotbold\rmshape{12}{\magstep1}{OT1} \setfont\secit\itbshape{10}{\magstep2}{OT1IT} \setfont\secsl\slbshape{10}{\magstep2}{OT1} \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} @@ -1956,8 +1978,10 @@ end % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defsl\slshape{10}{\magstephalf}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} -\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf +\let\tensl=\defsl \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} @@ -2089,12 +2113,9 @@ end \endgroup } - % 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). +% we have to define the \textfont of the standard families. We don't +% bother to reset \scriptfont and \scriptscriptfont; awaiting user need. % \def\resetmathfonts{% \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy @@ -2108,8 +2129,8 @@ end % \tenSTYLE to set the current font. % % Each font-changing command also sets the names \lsize (one size lower) -% and \lllsize (three sizes lower). These relative commands are used in -% the LaTeX logo and acronyms. +% and \lllsize (three sizes lower). These relative commands are used +% in, e.g., the LaTeX logo and acronyms. % % This all needs generalizing, badly. % @@ -2145,7 +2166,7 @@ end \let\tenttsl=\secttsl \def\curfontsize{sec}% \def\lsize{subsec}\def\lllsize{reduced}% - \resetmathfonts \setleading{16pt}} + \resetmathfonts \setleading{17pt}} \def\subsecfonts{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc @@ -2574,37 +2595,21 @@ end \let\file=\code \let\option=\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. -% (This \urefnobreak definition isn't used now, leaving it for a while -% for comparison.) -\def\urefnobreak#1{\dourefnobreak #1,,,\finish} -\def\dourefnobreak#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} +% @uref (abbreviation for `urlref') aka @url 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. -% This \urefbreak definition is the active one. +% TeX-only option to allow changing PDF output to show only the second +% arg (if given), and not the url (which is then just the link target). +\newif\ifurefurlonlylink + +% The main macro is \urefbreak, which allows breaking at expected +% places within the url. (There used to be another version, which +% didn't support automatic breaking.) \def\urefbreak{\begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak +% \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} \def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example \unsepspaces @@ -2613,12 +2618,19 @@ end \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else - \setbox0 = \hbox{\ignorespaces #2}% + \setbox0 = \hbox{\ignorespaces #2}% look for second arg \ifdim\wd0 > 0pt \ifpdf - \unhbox0 % PDF: 2nd arg given, show only it + \ifurefurlonlylink + % PDF plus option to not display url, show just arg + \unhbox0 + \else + % PDF, normally display both arg and url for consistency, + % visibility, if the pdf is eventually used to print, etc. + \unhbox0\ (\urefcode{#1})% + \fi \else - \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url + \unhbox0\ (\urefcode{#1})% DVI, always show arg and url \fi \else \urefcode{#1}% only url given, so show it @@ -2658,8 +2670,10 @@ end % we put a little stretch before and after the breakable chars, to help % line breaking of long url's. The unequal skips make look better in % cmtt at least, especially for dots. -\def\urefprestretch{\urefprebreak \hskip0pt plus.13em } -\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } +\def\urefprestretchamount{.13em} +\def\urefpoststretchamount{.1em} +\def\urefprestretch{\urefprebreak \hskip0pt plus\urefprestretchamount\relax} +\def\urefpoststretch{\urefpostbreak \hskip0pt plus\urefprestretchamount\relax} % \def\urefcodeamp{\urefprestretch \&\urefpoststretch} \def\urefcodedot{\urefprestretch .\urefpoststretch} @@ -2786,11 +2800,6 @@ end % \def\dmn#1{\thinspace #1} -% @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} - % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. @@ -2857,6 +2866,8 @@ end \let\v=\check \let\~=\tilde \let\dotaccent=\dot + % have to provide another name for sup operator + \let\mathopsup=\sup $\finishmath } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. @@ -2880,8 +2891,17 @@ end } } -% ctrl is no longer a Texinfo command, but leave this definition for fun. -\def\ctrl #1{{\tt \rawbackslash \hat}#1} +% for @sub and @sup, if in math mode, just do a normal sub/superscript. +% If in text, use math to place as sub/superscript, but switch +% into text mode, with smaller fonts. This is a different font than the +% one used for real math sub/superscripts (8pt vs. 7pt), but let's not +% fix it (significant additions to font machinery) until someone notices. +% +\def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi} +\def\finishsub#1{$\sb{\hbox{\selectfonts\lllsize #1}}$}% +% +\def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi} +\def\finishsup#1{$\ptexsp{\hbox{\selectfonts\lllsize #1}}$}% % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, @@ -3023,11 +3043,16 @@ end \TeX } -% Some math mode symbols. -\def\bullet{$\ptexbullet$} -\def\geq{\ifmmode \ge\else $\ge$\fi} -\def\leq{\ifmmode \le\else $\le$\fi} -\def\minus{\ifmmode -\else $-$\fi} +% Some math mode symbols. Define \ensuremath to switch into math mode +% unless we are already there. Expansion tricks may not be needed here, +% but safer, and can't hurt. +\def\ensuremath{\ifmmode \expandafter\asis \else\expandafter\ensuredmath \fi} +\def\ensuredmath#1{$\relax#1$} +% +\def\bullet{\ensuremath\ptexbullet} +\def\geq{\ensuremath\ge} +\def\leq{\ensuremath\le} +\def\minus{\ensuremath-} % @dots{} outputs an ellipsis using the current font. % We do .5em per period so that it has the same spacing in the cm @@ -3191,8 +3216,15 @@ end \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % -% Use the ec* fonts (cm-super in outline format) for non-CM glyphs. -\def\ecfont{% +% Use the European Computer Modern fonts (cm-super in outline format) +% for non-CM glyphs. That is ec* for regular text and tc* for the text +% companion symbols (LaTeX TS1 encoding). Both are part of the ec +% package and follow the same conventions. +% +\def\ecfont{\etcfont{e}} +\def\tcfont{\etcfont{t}} +% +\def\etcfont#1{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so @@ -3201,14 +3233,14 @@ end \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% \ifmonospace % typewriter: - \font\thisecfont = ectt\ecsize \space at \nominalsize + \font\thisecfont = #1ctt\ecsize \space at \nominalsize \else \ifx\curfontstyle\bfstylename % bold: - \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize + \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize \else % regular: - \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize \fi \fi \thisecfont @@ -3378,7 +3410,7 @@ end \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages -% Now make TeX use those variables +% Now make \makeheadline and \makefootline in Plain TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline @@ -3434,6 +3466,10 @@ end % @everyheadingmarks % @everyfootingmarks +% These define \getoddheadingmarks, \getevenheadingmarks, +% \getoddfootingmarks, and \getevenfootingmarks, each to one of +% \gettopheadingmarks, \getbottomheadingmarks. +% \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} @@ -3481,7 +3517,7 @@ end \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager @@ -3492,8 +3528,8 @@ end \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} @@ -3504,7 +3540,7 @@ end \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } @@ -3512,8 +3548,8 @@ end \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\evenheadline={\line{\thischapterheading\hfil\folio}} +\global\oddheadline={\line{\thischapterheading\hfil\folio}} \global\let\contentsalignmacro = \chappager } @@ -3691,7 +3727,7 @@ end \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi % - % Try typesetting the item mark that if the document erroneously says + % Try typesetting the item mark so that if the document erroneously says % something like @itemize @samp (intending @table), there's an error % right away at the @itemize. It's not the best error message in the % world, but it's better than leaving it to the @item. This means if @@ -3723,7 +3759,12 @@ end \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % - \vadjust{\penalty 1200}}% not good to break after first line of item. + \ifinner\else + \vadjust{\penalty 1200}% not good to break after first line of item. + \fi + % We can be in inner vertical mode in a footnote, although an + % @itemize looks awful there. + }% \flushcr } @@ -3941,19 +3982,23 @@ end } % multitable-only commands. -% -% @headitem starts a heading row, which we typeset in bold. -% Assignments have to be global since we are inside the implicit group -% of an alignment entry. \everycr resets \everytab so we don't have to +% +% @headitem starts a heading row, which we typeset in bold. Assignments +% have to be global since we are inside the implicit group of an +% alignment entry. \everycr below resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% \checkenv\multitable \crcr + \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item }% % +% default for tables with no headings. +\let\headitemcrhook=\relax +% % 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 again encounter the problem the 1sp was intended to solve. @@ -3984,15 +4029,15 @@ end % \everycr = {% \noalign{% - \global\everytab={}% + \global\everytab={}% Reset from possible headitem. \global\colcount=0 % Reset the column counter. - % Check for saved footnotes, etc. + % + % Check for saved footnotes, etc.: \checkinserts - % Keeps underfull box messages off when table breaks over pages. - %\filbreak - % 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. + % + % Perhaps a \nobreak, then reset: + \headitemcrhook + \global\let\headitemcrhook=\relax }% }% % @@ -4341,19 +4386,16 @@ end % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} -% \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. +% \newindex {foo} defines an index named IX. +% It automatically defines \IXindex such that +% \IXindex ...rest of line... puts an entry in the index IX. +% It also defines \IXindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is IX. % 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\chardef\csname#1indfile\endcsname=0 \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } @@ -4367,14 +4409,19 @@ end \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 - \fi + \expandafter\chardef\csname#1indfile\endcsname=0 \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } +% The default indices: +\newindex{cp}% concepts, +\newcodeindex{fn}% functions, +\newcodeindex{vr}% variables, +\newcodeindex{tp}% types, +\newcodeindex{ky}% keys +\newcodeindex{pg}% and programs. + % @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. @@ -4403,26 +4450,19 @@ end \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } -% Define \doindex, the driver for all \fooindex macros. +% Define \doindex, the driver for all index macros. % Argument #1 is generated by the calling \fooindex macro, -% and it is "foo", the name of the index. +% and it the two-letter 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}} +\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} +\def\doindexxxx #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}}} +\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} +\def\docodeindexxxx #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. +% Used when writing an index entry out to an index file, to prevent +% expansion of Texinfo commands that can appear in an index entry. % \def\indexdummies{% \escapechar = `\\ % use backslash in output files. @@ -4434,36 +4474,10 @@ end % complicated, when \tex is in effect and \{ is a \delimiter again. % We can't use \lbracecmd and \rbracecmd because texindex assumes % braces and backslashes are used only as delimiters. Perhaps we - % should define @lbrace and @rbrace commands a la @comma. + % should use @lbracechar and @rbracechar? \def\{{{\tt\char123}}% \def\}{{\tt\char125}}% % - % I don't entirely understand this, but when an index entry is - % generated from a macro call, the \endinput which \scanmacro inserts - % causes processing to be prematurely terminated. This is, - % apparently, because \indexsorttmp is fully expanded, and \endinput - % is an expandable command. The redefinition below makes \endinput - % disappear altogether for that purpose -- although logging shows that - % processing continues to some further point. On the other hand, it - % seems \endinput does not hurt in the printed index arg, since that - % is still getting written without apparent harm. - % - % Sample source (mac-idx3.tex, reported by Graham Percival to - % help-texinfo, 22may06): - % @macro funindex {WORD} - % @findex xyz - % @end macro - % ... - % @funindex commtest - % - % The above is not enough to reproduce the bug, but it gives the flavor. - % - % Sample whatsit resulting: - % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} - % - % So: - \let\endinput = \empty - % % Do the redefinitions. \commondummies } @@ -4487,7 +4501,6 @@ end % Called from \indexdummies and \atdummies. % \def\commondummies{% - % % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for @@ -4564,6 +4577,7 @@ end \definedummyword\guilsinglright \definedummyword\lbracechar \definedummyword\leq + \definedummyword\mathopsup \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds @@ -4577,6 +4591,8 @@ end \definedummyword\quotesinglbase \definedummyword\rbracechar \definedummyword\result + \definedummyword\sub + \definedummyword\sup \definedummyword\textdegree % % We want to disable all macros so that they are not expanded by \write. @@ -4590,6 +4606,8 @@ end } % \commondummiesnofonts: common to \commondummies and \indexnofonts. +% Define \definedumyletter, \definedummyaccent and \definedummyword before +% using. % \def\commondummiesnofonts{% % Control letters and accents. @@ -4651,6 +4669,7 @@ end \definedummyword\samp \definedummyword\strong \definedummyword\tie + \definedummyword\U \definedummyword\uref \definedummyword\url \definedummyword\var @@ -4659,6 +4678,52 @@ end \definedummyword\xref } +% For testing: output @{ and @} in index sort strings as \{ and \}. +\newif\ifusebracesinindexes + +\let\indexlbrace\relax +\let\indexrbrace\relax + +{\catcode`\@=0 +\catcode`\\=13 + @gdef@backslashdisappear{@def\{}} +} + +{ +\catcode`\<=13 +\catcode`\-=13 +\catcode`\`=13 + \gdef\indexnonalnumdisappear{% + \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else + % @set txiindexlquoteignore makes us ignore left quotes in the sort term. + % (Introduced for FSFS 2nd ed.) + \let`=\empty + \fi + % + \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else + \backslashdisappear + \fi + % + \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else + \def-{}% + \fi + \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else + \def<{}% + \fi + \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else + \def\@{}% + \fi + } + + \gdef\indexnonalnumreappear{% + \useindexbackslash + \let-\normaldash + \let<\normalless + \def\@{@}% + } +} + + % \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 @@ -4671,7 +4736,6 @@ end \def\definedummyletter##1{\let##1\empty}% % All control words become @asis by default; overrides below. \let\definedummyword\definedummyaccent - % \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command @@ -4684,14 +4748,11 @@ end \def\_{\normalunderscore}% \def\-{}% @- shouldn't affect sorting % - % Unfortunately, texindex is not prepared to handle braces in the - % content at all. So for index sorting, we map @{ and @} to strings - % starting with |, since that ASCII character is between ASCII { and }. - \def\{{|a}% - \def\lbracechar{|a}% + \def\lbracechar{{\indexlbrace}}% + \def\rbracechar{{\indexrbrace}}% + \let\{=\lbracechar + \let\}=\rbracechar % - \def\}{|b}% - \def\rbracechar{|b}% % % Non-English letters. \def\AA{AA}% @@ -4700,7 +4761,7 @@ end \def\L{L}% \def\OE{OE}% \def\O{O}% - \def\TH{ZZZ}% + \def\TH{TH}% \def\aa{aa}% \def\ae{ae}% \def\dh{dzz}% @@ -4712,7 +4773,7 @@ end \def\o{o}% \def\questiondown{?}% \def\ss{ss}% - \def\th{zzz}% + \def\th{th}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% @@ -4749,9 +4810,6 @@ end \def\result{=>}% \def\textdegree{o}% % - \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax - \else \indexlquoteignore \fi - % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up @@ -4765,19 +4823,18 @@ end \macrolist } -% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us -% ignore left quotes in the sort term. -{\catcode`\`=\active - \gdef\indexlquoteignore{\let`=\empty}} -\let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % Most index entries go through here, but \dosubind is the general case. % #1 is the index name, #2 is the entry text. \def\doind#1#2{\dosubind{#1}{#2}{}} -% Workhorse for all \fooindexes. +% There is also \dosubind {index}{topic}{subtopic} +% which makes an entry in a two-level index such as the operation index. +% TODO: Two-level index? Operation index? + +% Workhorse for all indexes. % #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 most defuns, which call us directly). @@ -4785,6 +4842,7 @@ end \def\dosubind#1#2#3{% \iflinks {% + \requireopenindexfile{#1}% % Store the main index entry text (including the third arg). \toks0 = {#2}% % If third arg is present, precede it with a space. @@ -4800,7 +4858,49 @@ end \fi } -% Write the entry in \toks0 to the index file: +% Check if an index file has been opened, and if not, open it. +\def\requireopenindexfile#1{% +\ifnum\csname #1indfile\endcsname=0 + \expandafter\newwrite \csname#1indfile\endcsname + \edef\suffix{#1}% + % A .fls suffix would conflict with the file extension for the output + % of -recorder, so use .f1s instead. + \ifx\suffix\indexisfl\def\suffix{f1}\fi + % Open the file + \immediate\openout\csname#1indfile\endcsname \jobname.\suffix + % Using \immediate here prevents an object entering into the current box, + % which could confound checks such as those in \safewhatsit for preceding + % skips. +\fi} +\def\indexisfl{fl} + +% Output \ as {\indexbackslash}, because \ is an escape character in +% the index files. +\let\indexbackslash=\relax +{\catcode`\@=0 \catcode`\\=\active + @gdef@useindexbackslash{@def\{{@indexbackslash}}} +} + +% Definition for writing index entry text. +\def\sortas#1{\ignorespaces}% + +% Definition for writing index entry sort key. Should occur at the at +% the beginning of the index entry, like +% @cindex @sortas{september} \september +% The \ignorespaces takes care of following space, but there's no way +% to remove space before it. +{ +\catcode`\-=13 +\gdef\indexwritesortas{% + \begingroup + \indexnonalnumreappear + \indexwritesortasxxx} +\gdef\indexwritesortasxxx#1{% + \xdef\indexsortkey{#1}\endgroup} +} + + +% Write the entry in \toks0 to the index file. % \def\dosubindwrite{% % Put the index entry in the margin if desired. @@ -4810,14 +4910,20 @@ end % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage - \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now - % so it will be output as is; and it will print as backslash. - % - % Process the index entry with all font commands turned off, to - % get the string to sort by. + \useindexbackslash % \indexbackslash isn't defined now so it will be output + % as is; and it will print as backslash. + % Get the string to sort by, by processing the index entry with all + % font commands turned off. {\indexnofonts - \edef\temp{\the\toks0}% need full expansion - \xdef\indexsorttmp{\temp}% + \indexnonalnumdisappear + \xdef\indexsortkey{}% + \let\sortas=\indexwritesortas + \edef\temp{\the\toks0}% + \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas + \ifx\indexsortkey\empty + \xdef\indexsortkey{\temp}% + \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi + \fi }% % % Set up the complete index entry, with both the sort key and @@ -4827,10 +4933,11 @@ end % sorted result. \edef\temp{% \write\writeto{% - \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% + \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}% }% \temp } +\newbox\dummybox % used above % Take care of unwanted page breaks/skips around a whatsit: % @@ -4956,7 +5063,9 @@ end % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 - \openin 1 \jobname.#1s + % See comment in \requireopenindexfile. + \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi + \openin 1 \jobname.\indexname s \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 @@ -4964,43 +5073,96 @@ end % there is some text. \putwordIndexNonexistent \else + \catcode`\\ = 0 + \escapechar = `\\ % % 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 + \read 1 to \thisline \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{\backslashcurfont}% - \catcode`\\ = 0 - \escapechar = `\\ + \def\indexbackslash{\ttbackslash}% + \let\indexlbrace\{ % Likewise, set these sequences for braces + \let\indexrbrace\} % used in the sort key. \begindoublecolumns - \input \jobname.#1s + \let\entryorphanpenalty=\indexorphanpenalty + % + % Read input from the index file line by line. + \loopdo + \ifeof1 + \let\firsttoken\relax + \else + \read 1 to \nextline + \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}% + \act + \fi + \thisline + % + \ifeof1\else + \let\thisline\nextline + \repeat + %% \enddoublecolumns \fi \fi \closein 1 \endgroup} +\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken} +\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1} + +\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx} +\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next} + % 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 +{\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13 +\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 +\catcode`\$=3 +\gdef\initialglyphs{% + % Some changes for non-alphabetic characters. Using the glyphs from the + % math fonts looks more consistent than the typewriter font used elsewhere + % for these characters. + \def\indexbackslash{\math{\backslash}}% + \let\\=\indexbackslash % + % Can't get bold backslash so don't use bold forward slash + \catcode`\/=13 + \def/{{\secrmnotbold \normalslash}}% + \def-{{\normaldash\normaldash}}% en dash `--' + \def^{{\chapbf \normalcaret}}% + \def~{{\chapbf \normaltilde}}% + \def\_{% + \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }% + \def|{$\vert$}% + \def<{$\less$}% + \def>{$\gtr$}% + \def+{$\normalplus$}% +}} + +\def\initial{% + \bgroup + \initialglyphs + \initialx +} + +\def\initialx#1{% % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. + % The glue before the bonus allows a little bit of space at the + % bottom of a column to reduce an increase in inter-line spacing. \nobreak - \vskip 0pt plus 3\baselineskip - \penalty 0 - \vskip 0pt plus -3\baselineskip + \vskip 0pt plus 5\baselineskip + \penalty -300 + \vskip 0pt plus -5\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column @@ -5008,24 +5170,24 @@ end % 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 1.67\baselineskip plus 1\baselineskip + \leftline{\secfonts \kern-0.05em \secbf #1}% + % \secfonts is inside the argument of \leftline so that the change of + % \baselineskip will not affect any glue inserted before the vbox that + % \leftline creates. % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip -}} + \egroup % \initialglyphs +} + +\newdimen\entryrightmargin +\entryrightmargin=0pt % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % -% A straightforward implementation would start like this: -% \def\entry#1#2{... -% But this freezes the catcodes in the argument, and can cause problems to -% @code, which sets - active. This problem was fixed by a kludge--- -% ``-'' was active throughout whole index, but this isn't really right. -% The right solution is to prevent \entry from swallowing the whole text. -% --kasal, 21nov03 \def\entry{% \begingroup % @@ -5033,38 +5195,18 @@ end % 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 - % % When reading the text of entry, convert explicit line breaks % from @* into spaces. The user might give these in long section % titles, for instance. \def\*{\unskip\space\ignorespaces}% - \def\entrybreak{\hfil\break}% + \def\entrybreak{\hfil\break}% An undocumented command + % + % A bit of stretch before each entry for the benefit of balancing + % columns. + \vskip 0pt plus0.5pt % % Swallow the left brace of the text (first parameter): \afterassignment\doentry @@ -5072,45 +5214,148 @@ end } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% + % Save the text of the entry + \global\setbox\boxA=\hbox\bgroup \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. + % Not absorbing as a macro argument reduces the chance of problems + % with catcodes occurring. } -\def\finishentry#1{% +{\catcode`\@=11 +\gdef\finishentry#1{% + \egroup % end box A + \dimen@ = \wd\boxA % Length of text of entry + \global\setbox\boxA=\hbox\bgroup\unhbox\boxA % #1 is the page number. % - % 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. - \setbox\boxA = \hbox{#1}% - \ifdim\wd\boxA = 0pt - \ % + % Get the width of the page numbers, and only use + % leaders if they are present. + \global\setbox\boxB = \hbox{#1}% + \ifdim\wd\boxB = 0pt + \null\nobreak\hfill\ % \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#1.% - \ \the\toksA + \pdfgettoks#1.% + \hskip\skip\thinshrinkable\the\toksA \else - \ #1% + \hskip\skip\thinshrinkable #1% \fi \fi - \par + \egroup % end \boxA + \ifdim\wd\boxB = 0pt + \global\setbox\entryindexbox=\box\boxA + \else + \global\setbox\entryindexbox=\vbox\bgroup\noindent + % We want the text of the entries to be aligned to the left, and the + % page numbers to be aligned to the right. + % + \advance\leftskip by 0pt plus 1fil + \advance\leftskip by 0pt plus -1fill + \rightskip = 0pt plus -1fil + \advance\rightskip by 0pt plus 1fill + % Cause last line, which could consist of page numbers on their own + % if the list of page numbers is long, to be aligned to the right. + \parfillskip=0pt plus -1fill + % + \hangindent=1em + % + \advance\rightskip by \entryrightmargin + % Determine how far we can stretch into the margin. + % This allows, e.g., "Appendix H GNU Free Documentation License" to + % fit on one line in @letterpaper format. + \ifdim\entryrightmargin>2.1em + \dimen@i=2.1em + \else + \dimen@i=0em + \fi + \advance \parfillskip by 0pt minus 1\dimen@i + % + \dimen@ii = \hsize + \advance\dimen@ii by -1\leftskip + \advance\dimen@ii by -1\entryrightmargin + \advance\dimen@ii by 1\dimen@i + \let\maybestrut=\relax + \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line + \let\maybestrut=\strut + \ifdim\dimen@ > 0.8\dimen@ii % due to long index text + \dimen@ = 0.7\dimen@ % Try to split the text roughly evenly + \dimen@ii = \hsize + \advance \dimen@ii by -1em + \ifnum\dimen@>\dimen@ii + % If the entry is too long, use the whole line + \dimen@ = \dimen@ii + \fi + \advance\leftskip by 0pt plus 1fill % ragged right + \advance \dimen@ by 1\rightskip + \parshape = 2 0pt \dimen@ 1em \dimen@ii + % Ideally we'd add a finite glue at the end of the first line only, but + % TeX doesn't seem to provide a way to do such a thing. + \fi\fi + \maybestrut % Add a strut on the first and last lines + \unhbox\boxA + \maybestrut + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % Word spacing - no stretch + \spaceskip=\fontdimen2\font minus \fontdimen4\font + % + \linepenalty=1000 % Discourage line breaks. + \hyphenpenalty=5000 % Discourage hyphenation. + % + \par % format the paragraph + \egroup % The \vbox + \fi \endgroup + % delay text of entry until after penalty + \bgroup\aftergroup\insertindexentrybox + \entryorphanpenalty +}} + +\newskip\thinshrinkable +\skip\thinshrinkable=.15em minus .15em + +\newbox\entryindexbox +\def\insertindexentrybox{% +\lineskip=0pt % This comes into effect when the \vbox has a large + % height due to the paragraph in it having several + % lines. +\box\entryindexbox} + +% Default is no penalty +\let\entryorphanpenalty\egroup + +% Used from \printindex. \firsttoken should be the first token +% after the \entry. If it's not another \entry, we are at the last +% line of a group of index entries, so insert a penalty to discourage +% orphaned index entries. +\long\def\indexorphanpenalty{% + \def\isentry{\entry}% + \ifx\firsttoken\isentry + \else + \unskip\penalty 9000 + % The \unskip here stops breaking before the glue. It relies on the + % \vskip above being there, otherwise there is an error + % "You can't use `\unskip' in vertical mode". There has to be glue + % in the current vertical list that hasn't been added to the + % "current page". See Chapter 24 of the TeXbook. This contradicts + % Section 8.3.7 in "TeX by Topic," though. + \fi + \egroup % now comes the box added with \aftergroup } % Like plain.tex's \dotfill, except uses up at least 1 em. +% The filll stretch here overpowers both the fil and fill stretch to push +% the page number to the right. \def\indexdotfill{\cleaders - \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1filll} + \def\primary #1{\line{#1\hfil}} @@ -5136,6 +5381,11 @@ end \newbox\partialpage \newdimen\doublecolumnhsize +\newdimen\doublecolumntopgap +\doublecolumntopgap = 0pt + +\newtoks\savedtopmark % Used in \begindoublecolumns +\newtoks\savedfirstmark \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. @@ -5157,9 +5407,23 @@ end \unvbox\PAGE \kern-\topskip \kern\baselineskip }% + % Save \topmark and \firstmark + \global\savedtopmark=\expandafter{\topmark}% + \global\savedfirstmark=\expandafter{\firstmark}% }% \eject % run that output routine to set \partialpage % + % We recover the two marks that the last output routine saved in order + % to propagate the information in marks added around a chapter heading, + % which could be otherwise be lost by the time the final page is output. + % + \mark{\the\savedtopmark}% Only mark in page passed to following \output. + \output = {% + \setbox0=\box\PAGE % clear box 255 + }abc\eject + % + \mark{\the\savedfirstmark}% + % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % @@ -5186,11 +5450,15 @@ end % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) + \global\doublecolumntopgap = \topskip + \global\advance\doublecolumntopgap by -1\baselineskip + \global\advance\vsize by -1\doublecolumntopgap \vsize = 2\vsize + \topskip=0pt } % The double-column output routine for all double-column pages except -% the last. +% the last, which is done by \balancecolumns. % \def\doublecolumnout{% \splittopskip=\topskip \splitmaxdepth=\maxdepth @@ -5215,10 +5483,13 @@ end % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize - \hbox to\pagewidth{\box0\hfil\box2}% + \vbox{% + \vskip\doublecolumntopgap + \hbox to\pagewidth{\box0\hfil\box2}}% } -% -% All done with double columns. + + +% Finished with with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the @@ -5272,28 +5543,47 @@ end \pagegoal = \vsize } % -% Called at the end of the double column material. +% Only called for the last of the double column material. \doublecolumnout +% does the others. \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}% + \ifdim\dimen@<14\baselineskip + % Don't split a short final column in two. + \setbox2=\vbox{}% + \else + \divide\dimen@ by 2 % target to split to + \dimen@ii = \dimen@ + \splittopskip = \topskip + % Loop until the second column is no higher than the first + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + % Remove glue from bottom of first column to + % make sure it is higher than the second. + \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}% + \ifdim\ht3>\ht1 + \global\advance\dimen@ by 1pt + \repeat + }% + \multiply\dimen@ii by 4 + \divide\dimen@ii by 5 + \ifdim\ht3<\dimen@ii + % Column heights are too different, so don't make their bottoms + % flush with each other. The glue at the end of the second column + % allows a second column to stretch, reducing the difference in + % height between the two. + \setbox0=\vbox to\dimen@{\unvbox1\vfill}% + \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}% + \else + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + \fi + \fi % \pagesofar } @@ -5314,6 +5604,10 @@ end \let\lastnode=\empty % no node to associate with \writetocentry{part}{#1}{}% but put it in the toc \headingsoff % no headline or footline on the part page + % This outputs a mark at the end of the page that clears \thischapter + % and \thissection, as is done in \startcontents. + \let\pchapsepmacro\relax + \chapmacro{}{Yomitfromtoc}{}% \chapoddpage \endgroup } @@ -5558,9 +5852,6 @@ end % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% - % Well, we could do the following in a group, but that would break - % an assumption that \chapmacro is called at the outermost level. - % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax @@ -5684,7 +5975,11 @@ end % Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} + +% Start a new page \def\chappager{\par\vfill\supereject} + +% \chapoddpage - start on an odd page for a new chapter % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. @@ -5720,17 +6015,20 @@ end \CHAPPAGon -% Chapter opening. +% \chapmacro - Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. +% Not used for @heading series. % % To test against our argument. \def\Ynothingkeyword{Ynothing} -\def\Yomitfromtockeyword{Yomitfromtoc} \def\Yappendixkeyword{Yappendix} +\def\Yomitfromtockeyword{Yomitfromtoc} % \def\chapmacro#1#2#3{% + \checkenv{}% chapters, etc., should not start inside an environment. + % % Insert the first mark before the heading break (see notes for \domark). \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs @@ -5783,6 +6081,7 @@ end % {% \chapfonts \rmisbold + \let\footnote=\errfootnoteheading % give better error message % % Have to define \lastsection before calling \donoderef, because the % xref code eventually uses it. On the other hand, it has to be called @@ -5876,22 +6175,29 @@ end % Print any size, any type, section title. % -% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is -% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the -% section number. +% #1 is the text of the title, +% #2 is the section level (sec/subsec/subsubsec), +% #3 is the section type (Ynumbered, Ynothing, Yappendix, Yomitfromtoc), +% #4 is the section number. % \def\seckeyword{sec} % \def\sectionheading#1#2#3#4{% {% - \checkenv{}% should not be in an environment. + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + % It is ok for the @heading series commands to appear inside an + % environment (it's been historically allowed, though the logic is + % dubious), but not the others. + \ifx\temptype\Yomitfromtockeyword\else + \checkenv{}% non-@*heading should not be in an environment. + \fi + \let\footnote=\errfootnoteheading % % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % - \def\sectionlevel{#2}% - \def\temptype{#3}% - % % Insert first mark before the heading break (see notes for \domark). \let\prevsectiondefs=\lastsectiondefs \ifx\temptype\Ynothingkeyword @@ -6103,7 +6409,7 @@ end \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. - \advance\hsize by -\contentsrightmargin % Don't use the full line length. + \entryrightmargin=\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi @@ -6208,7 +6514,7 @@ end % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} -% + % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% @@ -6223,7 +6529,7 @@ end \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % -\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} @@ -6256,6 +6562,8 @@ end \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup + % Move the page numbers slightly to the right + \advance\entryrightmargin by -0.05em \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup @@ -6318,6 +6626,7 @@ end % other math active characters (just in case), to plain's definitions. \mathactive % + % Inverse of the list at the beginning of the file. \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc @@ -6333,7 +6642,9 @@ end \let\+=\tabalign \let\}=\ptexrbrace \let\/=\ptexslash + \let\sp=\ptexsp \let\*=\ptexstar + %\let\sup=\ptexsup % do not redefine, we want @sup to work in math mode \let\t=\ptext \expandafter \let\csname top\endcsname=\ptextop % we've made it outer \let\frenchspacing=\plainfrenchspacing @@ -6365,6 +6676,24 @@ end % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + \ifnum\lastpenalty<10000 + % Penalize breaking before the environment, because preceding text + % often leads into it. + \penalty100 + \fi + \vskip\envskipamount + \fi + \fi +}} + +\def\afterenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else @@ -6380,8 +6709,6 @@ end \fi }} -\let\afterenvbreak = \aboveenvbreak - % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax @@ -6419,15 +6746,13 @@ end % 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 = t% % % If this cartouche directly follows a sectioning command, we need the % \parskip glue (backspaced over by default) or the cartouche can % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % - \vbox\bgroup + \setbox\groupbox=\vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup @@ -6451,6 +6776,7 @@ end \egroup \cartbot \egroup + \addgroupbox \checkinserts } @@ -6587,9 +6913,13 @@ end % @raggedright does more-or-less normal line breaking but no right -% justification. From plain.tex. +% justification. From plain.tex. Don't stretch around special +% characters in urls in this environment, since the stretch at the right +% should be enough. \envdef\raggedright{% - \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax + \rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax + \def\urefprestretchamount{0pt}% + \def\urefpoststretchamount{0pt}% } \let\Eraggedright\par @@ -6829,7 +7159,7 @@ end % 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. +% possible is desirable. % \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} @@ -6924,7 +7254,7 @@ end \temp } -% \domakedefun \deffn \deffnx \deffnheader +% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) } % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. @@ -7262,34 +7592,42 @@ end } \fi -\def\scanmacro#1{\begingroup +\let\aftermacroxxx\relax +\def\aftermacro{\aftermacroxxx} + +% alias because \c means cedilla in @tex or @math +\let\texinfoc=\c + +% Used at the time of macro expansion. +% Argument is macro body with arguments substituted +\def\scanmacro#1{% \newlinechar`\^^M - \let\xeatspaces\eatspaces + \def\xprocessmacroarg{\eatspaces}% % - % Undo catcode changes of \startcontents and \doprintindex - % When called from @insertcopying or (short)caption, we need active - % backslash to get it printed correctly. Previously, we had - % \catcode`\\=\other instead. We'll see whether a problem appears - % with macro expansion. --kasal, 19aug04 - \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ + % Process the macro body under the current catcode regime. + \scantokens{#1\texinfoc}\aftermacro% % - % ... and for \example: - \spaceisspace - % - % The \empty here causes a following catcode 5 newline to be eaten as - % part of reading whitespace after a control sequence. It does not - % eat a catcode 13 newline. There's no good way to handle the two - % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX - % would then have different behavior). See the Macro Details node in - % the manual for the workaround we recommend for macros and - % line-oriented commands. - % - \scantokens{#1\empty}% -\endgroup} + % The \c is to remove the \newlinechar added by \scantokens, and + % can be noticed by \parsearg. + % The \aftermacro allows a \comment at the end of the macro definition + % to duplicate itself past the final \newlinechar added by \scantokens: + % this is used in the definition of \group to comment out a newline. We + % don't do the same for \c to support Texinfo files with macros that ended + % with a @c, which should no longer be necessary. + % We avoid surrounding the call to \scantokens with \bgroup and \egroup + % to allow macros to open or close groups themselves. +} \def\scanexp#1{% + \bgroup + % Undo catcode changes of \startcontents and \printindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. + % FIXME: This may not be needed. + %\catcode`\@=0 \catcode`\\=\active \escapechar=`\@ \edef\temp{\noexpand\scanmacro{#1}}% \temp + \egroup } \newcount\paramno % Count of parameters @@ -7355,7 +7693,6 @@ end \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other - \catcode`\@=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other @@ -7365,38 +7702,36 @@ end \def\scanargctxt{% used for copying and captions, not macros. \scanctxt + \catcode`\@=\other \catcode`\\=\other \catcode`\^^M=\other } \def\macrobodyctxt{% used for @macro definitions \scanctxt + \catcode`\ =\other + \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other \catcode`\^^M=\other \usembodybackslash } -\def\macroargctxt{% used when scanning invocations +% Used when scanning braced macro arguments. Note, however, that catcode +% changes here are ineffectual if the macro invocation was nested inside +% an argument to another Texinfo command. +\def\macroargctxt{% \scanctxt - \catcode`\\=0 + \catcode`\ =\active + \catcode`\^^M=\other + \catcode`\\=\active } -% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" -% for the single characters \ { }. Thus, we end up with the "commands" -% that would be written @\ @{ @} in a Texinfo document. -% -% We already have @{ and @}. For @\, we define it here, and only for -% this purpose, to produce a typewriter backslash (so, the @\ that we -% define for @math can't be used with @macro calls): -% -\def\\{\normalbackslash}% -% -% We would like to do this for \, too, since that is what makeinfo does. -% But it is not possible, because Texinfo already has a command @, for a -% cedilla accent. Documents must use @comma{} instead. -% -% \anythingelse will almost certainly be an error of some kind. +\def\macrolineargctxt{% used for whole-line arguments without braces + \scanctxt + \catcode`\{=\other + \catcode`\}=\other +} % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N @@ -7468,57 +7803,36 @@ end \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. +% \getargs -- Parse the arguments to a @macro line. Set \macname to +% the name of the macro, and \argl to the braced argument list. \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}} +% This made use of the 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. -% For macro processing make @ a letter so that we can make Texinfo private macro names. -\edef\texiatcatcode{\the\catcode`\@} -\catcode `@=11\relax - -% 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 some hook where the argument si to be expanded. If -% there are less than 10 arguments that hook is to be replaced by ##N where N +% Parse the optional {params} list to @macro or @rmacro. +% Set \paramno to the number of arguments, +% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a +% three-param macro.) Define \macarg.BLAH for each BLAH in the params +% list to some hook where the argument is to be expanded. If there are +% less than 10 arguments that hook is to be replaced by ##N where N % is the position in that list, that is to say the macro arguments are to be % defined `a la TeX in the macro body. % % 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. +% If there are 10 or more arguments, a different technique is used: see +% \parsemmanyargdef. % -% The same technique is used to protect \eatspaces till just before -% the macro is used. -% -% If there are 10 or more arguments, a different technique is used, where the -% hook remains in the body, and when macro is to be expanded the body is -% processed again to replace the arguments. -% -% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the -% argument N value and then \edef the body (nothing else will expand because of -% the catcode regime underwhich the body was input). -% -% If you compile with TeX (not eTeX), and you have macros with 10 or more -% arguments, you need that no macro has more than 256 arguments, otherwise an -% error is produced. \def\parsemargdef#1;{% \paramno=0\def\paramlist{}% \let\hash\relax - \let\xeatspaces\relax + % \hash is redefined to `#' later to get it into definitions + \let\processmacroarg\relax \parsemargdefxxx#1,;,% - % In case that there are 10 or more arguments we parse again the arguments - % list to set new definitions for the \macarg.BLAH macros corresponding to - % each BLAH argument. It was anyhow needed to parse already once this list - % in order to count the arguments, and as macros with at most 9 arguments - % are by far more frequent than macro with 10 or more arguments, defining - % twice the \macarg.BLAH macros does not cost too much processing power. \ifnum\paramno<10\relax\else \paramno0\relax \parsemmanyargdef@@#1,;,% 10 or more arguments @@ -7529,10 +7843,47 @@ end \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% + {\processmacroarg{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} +% \parsemacbody, \parsermacbody +% +% Read recursive and nonrecursive macro bodies. (They're different since +% rec and nonrec macros end differently.) +% +% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro +% body to be transformed. +% Set \macrobody to the body of the macro, and call \defmacro. +% +{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% +{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{% +\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}% + +% Make @ a letter, so that we can make private-to-Texinfo macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + +%%%%%%%%%%%%%% Code for > 10 arguments only %%%%%%%%%%%%%%%%%% + +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime under which the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, no macro can have more than 256 arguments (else error). +% +% In case that there are 10 or more arguments we parse again the arguments +% list to set new definitions for the \macarg.BLAH macros corresponding to +% each BLAH argument. It was anyhow needed to parse already once this list +% in order to count the arguments, and as macros with at most 9 arguments +% are by far more frequent than macro with 10 or more arguments, defining +% twice the \macarg.BLAH macros does not cost too much processing power. \def\parsemmanyargdef@@#1,{% \if#1;\let\next=\relax \else @@ -7548,16 +7899,6 @@ end \advance\paramno by 1\relax \fi\next} -% These two commands read recursive and nonrecursive macro bodies. -% (They're different since rec and nonrec macros end differently.) -% - -\catcode `\@\texiatcatcode -\long\def\parsemacbody#1@end macro% -{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% -\long\def\parsermacbody#1@end rmacro% -{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% -\catcode `\@=11\relax \let\endargs@\relax \let\nil@\relax @@ -7565,7 +7906,7 @@ end \long\def\nillm@{\nil@}% % This macro is expanded during the Texinfo macro expansion, not during its -% definition. It gets all the arguments values and assigns them to macros +% definition. It gets all the arguments' values and assigns them to macros % macarg.ARGNAME % % #1 is the macro name @@ -7586,8 +7927,6 @@ end \getargvals@@ \fi } - -% \def\getargvals@@{% \ifx\paramlist\nilm@ % Some sanity check needed here that \argvaluelist is also empty. @@ -7631,7 +7970,8 @@ end } % Replace arguments by their values in the macro body, and place the result -% in macro \@tempa +% in macro \@tempa. +% \def\macvalstoargs@{% % To do this we use the property that token registers that are \the'ed % within an \edef expand only once. So we are going to place all argument @@ -7655,8 +7995,9 @@ end \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% } +% Define the named-macro outside of this group and then close this group. +% \def\macargexpandinbody@{% - %% Define the named-macro outside of this group and then close this group. \expandafter \endgroup \macargdeflist@ @@ -7693,14 +8034,8 @@ end \next } -% Save the token stack pointer into macro #1 -\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} -% Restore the token stack pointer from number in macro #1 -\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} -% newtoks that can be used non \outer . -\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} - -% Tailing missing arguments are set to empty +% Trailing missing arguments are set to empty. +% \def\setemptyargvalues@{% \ifx\paramlist\nilm@ \let\next\macargexpandinbody@ @@ -7730,99 +8065,244 @@ end \long\def#2{#4}% } -% This defines a Texinfo @macro. There are eight cases: recursive and -% nonrecursive macros of zero, one, up to nine, and many arguments. -% Much magic with \expandafter here. + +%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%% + + + +% Remove following spaces at the expansion stage. +% This works because spaces are discarded before each argument when TeX is +% getting the arguments for a macro. +% This must not be immediately followed by a }. +\long\def\gobblespaces#1{#1} + +% This defines a Texinfo @macro or @rmacro, called by \parsemacbody. +% \macrobody has the body of the macro in it, with placeholders for +% its parameters, looking like "\processmacroarg{\hash 1}". +% \paramno is the number of parameters +% \paramlist is a TeX parameter text, e.g. "#1,#2,#3," +% There are eight cases: recursive and nonrecursive macros of zero, one, +% up to nine, and many arguments. % \xdef is used so that macro definitions will survive the file -% they're defined in; @include reads the file inside a group. +% they're defined in: @include reads the file inside a group. % \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars - \ifrecursive + \ifnum\paramno=1 + \def\processmacroarg{\gobblespaces}% + % This removes the pair of braces around the argument. We don't + % use \eatspaces, because this can cause ends of lines to be lost + % when the argument to \eatspaces is read, leading to line-based + % commands like "@itemize" not being read correctly. + \else + \def\processmacroarg{\xprocessmacroarg}% + \let\xprocessmacroarg\relax + \fi + \ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\scanmacro{\temp}}% + \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt + \bgroup \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup\noexpand\scanmacro{\temp}}% + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname{% + \noexpand\gobblespaces##1\empty}% + % The \empty is for \gobblespaces in case #1 is empty + }% + \expandafter\xdef\csname\the\macname @@@@\endcsname##1{% + \egroup\noexpand\scanmacro{\macrobody}}% \else \ifnum\paramno<10\relax % at most 9 + % See non-recursive section below for comments \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,}% + \bgroup + \noexpand\expandafter + \noexpand\macroargctxt + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \csname\the\macname @@@@\endcsname\paramlist{% + \egroup\noexpand\scanmacro{\macrobody}}% \else % 10 or more \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% - \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi - \else + \else %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%% \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% + \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt + \bgroup \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@\endcsname}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname{% + \noexpand\gobblespaces##1\empty}% + % The \empty is for \gobblespaces in case #1 is empty + }% + \expandafter\xdef\csname\the\macname @@@@\endcsname##1{% \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% + \noexpand\scanmacro{\macrobody}% + }% \else % at most 9 \ifnum\paramno<10\relax + % @MACNAME sets the context for reading the macro argument + % @MACNAME@@ gets the argument, processes backslashes and appends a + % comma. + % @MACNAME@@@ removes braces surrounding the argument list. + % @MACNAME@@@@ scans the macro body with arguments substituted. \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,}% + \bgroup + \noexpand\expandafter % This \expandafter skip any spaces after the + \noexpand\macroargctxt % macro before we change the catcode of space. + \noexpand\expandafter + \expandafter\noexpand\csname\the\macname @@\endcsname}% + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \noexpand\passargtomacro + \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}% + \expandafter\xdef\csname\the\macname @@@\endcsname##1{% + \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% + \csname\the\macname @@@@\endcsname\paramlist{% + \egroup\noexpand\scanmacro{\macrobody}}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% - \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse \fi \fi \fi} -\catcode `\@\texiatcatcode\relax +\catcode `\@\texiatcatcode\relax % end private-to-Texinfo catcodes \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). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +{\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape +@catcode`@_=11 % private names +@catcode`@!=11 % used as argument separator + +% \passargtomacro#1#2 - +% Call #1 with a list of tokens #2, with any doubled backslashes in #2 +% compressed to one. +% +% This implementation works by expansion, and not execution (so we cannot use +% \def or similar). This reduces the risk of this failing in contexts where +% complete expansion is done with no execution (for example, in writing out to +% an auxiliary file for an index entry). +% +% State is kept in the input stream: the argument passed to +% @look_ahead, @gobble_and_check_finish and @add_segment is +% +% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input) +% +% where: +% THE_MACRO - name of the macro we want to call +% ARG_RESULT - argument list we build to pass to that macro +% PENDING_BS - either a backslash or nothing +% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next + +@gdef@passargtomacro#1#2{% + @add_segment #1!{}@relax#2\@_finish\% +} +@gdef@_finish{@_finishx} @global@let@_finishx@relax + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 used to look ahead +% +% If the next token is not a backslash, process the rest of the argument; +% otherwise, remove the next token. +@gdef@look_ahead#1!#2#3#4{% + @ifx#4\% + @expandafter@gobble_and_check_finish + @else + @expandafter@add_segment + @fi#1!{#2}#4#4% +} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 should be a backslash, which is gobbled. +% #5 looks ahead +% +% Double backslash found. Add a single backslash, and look ahead. +@gdef@gobble_and_check_finish#1!#2#3#4#5{% + @add_segment#1\!{}#5#5% +} + +@gdef@is_fi{@fi} + +% #1 - THE_MACRO ARG_RESULT +% #2 - PENDING_BS +% #3 - NEXT_TOKEN +% #4 is input stream until next backslash +% +% Input stream is either at the start of the argument, or just after a +% backslash sequence, either a lone backslash, or a doubled backslash. +% NEXT_TOKEN contains the first token in the input stream: if it is \finish, +% finish; otherwise, append to ARG_RESULT the segment of the argument up until +% the next backslash. PENDING_BACKSLASH contains a backslash to represent +% a backslash just before the start of the input stream that has not been +% added to ARG_RESULT. +@gdef@add_segment#1!#2#3#4\{% +@ifx#3@_finish + @call_the_macro#1!% +@else + % append the pending backslash to the result, followed by the next segment + @expandafter@is_fi@look_ahead#1#2#4!{\}@fi + % this @fi is discarded by @look_ahead. + % we can't get rid of it with \expandafter because we don't know how + % long #4 is. +} + +% #1 - THE_MACRO +% #2 - ARG_RESULT +% #3 discards the res of the conditional in @add_segment, and @is_fi ends the +% conditional. +@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}} + +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \braceorline MAC is used for a one-argument macro MAC. It checks +% whether the next non-whitespace character is a {. It sets the context +% for reading the argument (slightly different in the two cases). Then, +% to read the argument, in the whole-line case, it then calls the regular +% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC. % \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% - \ifx\nchar\bgroup\else - \expandafter\parsearg + \ifx\nchar\bgroup + \macroargctxt + \expandafter\passargtomacro + \else + \macrolineargctxt\expandafter\parsearg \fi \macnamexxx} @@ -7904,6 +8384,7 @@ end \pdfmkdest{#1}% \iflinks {% + \requireauxfile \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef @@ -7943,9 +8424,12 @@ end % 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\pxref{\putwordsee{} \xrefXX} +\def\xref{\putwordSee{} \xrefXX} +\def\ref{\xrefXX} + +\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX} +\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]} % \newbox\toprefbox \newbox\printedrefnamebox @@ -8089,6 +8573,12 @@ end % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + \ifx,\tokenafterxref + \else\ifx.\tokenafterxref + \else\ifx;\tokenafterxref + \else\ifx)\tokenafterxref + \else,% add a , if xref not followed by punctuation + \fi\fi\fi\fi \fi\fi \fi \endlink @@ -8159,6 +8649,7 @@ end % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% + \requireauxfile {% \indexnofonts \otherbackslash @@ -8222,6 +8713,23 @@ end \fi } +% 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 at the beginning of the file. +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% Used when writing to the aux file, or when using data from it. +\def\requireauxfile{% + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi + \global\let\requireauxfile=\relax % Only do this once. +} + % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% @@ -8301,14 +8809,7 @@ end \catcode`\\=\other % % Make the characters 128-255 be printing characters. - {% - \count1=128 - \def\loop{% - \catcode\count1=\other - \advance\count1 by 1 - \ifnum \count1<256 \loop \fi - }% - }% + {\setnonasciicharscatcodenonglobal\other}% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 @@ -8342,8 +8843,6 @@ end % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% - \let\indent=\ptexindent - \let\noindent=\ptexnoindent \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % @@ -8367,6 +8866,11 @@ end % \gdef\dofootnote{% \insert\footins\bgroup + % + % Nested footnotes are not supported in TeX, that would take a lot + % more work. (\startsavinginserts does not suffice.) + \let\footnote=\errfootnotenest + % % 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. @@ -8404,13 +8908,24 @@ end } }%end \catcode `\@=11 +\def\errfootnotenest{% + \errhelp=\EMsimple + \errmessage{Nested footnotes not supported in texinfo.tex, + even though they work in makeinfo; sorry} +} + +\def\errfootnoteheading{% + \errhelp=\EMsimple + \errmessage{Footnotes in chapters, sections, etc., are not supported} +} + % In case a @footnote appears in a vbox, save the footnote text and create % the real \insert just after the vbox finished. Otherwise, the insertion % would be lost. % Similarly, if 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. % And the same can be done for other insert classes. --kasal, 16nov03. - +% % Replace the \insert primitive by a cheating macro. % Deeper inside, just make sure that the saved insertions are not spilled % out prematurely. @@ -8508,6 +9023,7 @@ end \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 + \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro % If the image is by itself, center it. \ifvmode \imagevmodetrue @@ -8688,6 +9204,7 @@ end % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% + \requireauxfile \atdummies % % since we read the caption text in the macro world, where ^^M @@ -8827,20 +9344,20 @@ end { \catcode`\_ = \active \globaldefs=1 -\parseargdef\documentlanguage{\begingroup - \let_=\normalunderscore % normal _ character for filenames +\parseargdef\documentlanguage{% \tex % read txi-??.tex file in plain TeX. % Read the file by the name they passed if it exists. + \let_ = \normalunderscore % normal _ character for filename test \openin 1 txi-#1.tex \ifeof 1 - \documentlanguagetrywithoutunderscore{#1_\finish}% + \documentlanguagetrywithoutunderscore #1_\finish \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 \endgroup % end raw TeX -\endgroup} +} % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. @@ -8910,7 +9427,8 @@ directory should work if nowhere else does.} % @documentencoding sets the definition of non-ASCII characters % according to the specified encoding. % -\parseargdef\documentencoding{% +\def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz} +\def\documentencodingzzz#1{% % Encoding being declared for the document. \def\declaredencoding{\csname #1.enc\endcsname}% % @@ -8939,10 +9457,12 @@ directory should work if nowhere else does.} % \else \ifx \declaredencoding \utfeight \setnonasciicharscatcode\active - \utfeightchardefs + % since we already invoked \utfeightchardefs at the top level + % (below), do not re-invoke it, then our check for duplicated + % definitions triggers. Making non-ascii chars active is enough. % \else - \message{Unknown document encoding #1, ignoring.}% + \message{Ignoring unknown document encoding: #1.}% % \fi % utfeight \fi % latnine @@ -8951,10 +9471,11 @@ directory should work if nowhere else does.} \fi % ascii } +% emacs-page % A message to be logged when using a character that isn't available % the default font encoding (OT1). % -\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} +\def\missingcharmsg#1{\message{Character missing, sorry: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} @@ -8968,17 +9489,17 @@ directory should work if nowhere else does.} \def\latonechardefs{% \gdef^^a0{\tie} \gdef^^a1{\exclamdown} - \gdef^^a2{\missingcharmsg{CENT SIGN}} - \gdef^^a3{{\pounds}} - \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} - \gdef^^a5{\missingcharmsg{YEN SIGN}} - \gdef^^a6{\missingcharmsg{BROKEN BAR}} + \gdef^^a2{{\tcfont \char162}} % cent + \gdef^^a3{\pounds} + \gdef^^a4{{\tcfont \char164}} % currency + \gdef^^a5{{\tcfont \char165}} % yen + \gdef^^a6{{\tcfont \char166}} % broken bar \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\copyright} \gdef^^aa{\ordf} \gdef^^ab{\guillemetleft} - \gdef^^ac{$\lnot$} + \gdef^^ac{\ensuremath\lnot} \gdef^^ad{\-} \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} @@ -8990,12 +9511,10 @@ directory should work if nowhere else does.} \gdef^^b4{\'{}} \gdef^^b5{$\mu$} \gdef^^b6{\P} - % - \gdef^^b7{$^.$} + \gdef^^b7{\ensuremath\cdot} \gdef^^b8{\cedilla\ } \gdef^^b9{$^1$} \gdef^^ba{\ordm} - % \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} @@ -9250,6 +9769,18 @@ directory should work if nowhere else does.} \UTFviiiLoop \endgroup +\def\globallet{\global\let} % save some \expandafter's below + +% @U{xxxx} to produce U+xxxx, if we support it. +\def\U#1{% + \expandafter\ifx\csname uni:#1\endcsname \relax + \errhelp = \EMsimple + \errmessage{Unicode character U+#1 not supported, sorry}% + \else + \csname uni:#1\endcsname + \fi +} + \begingroup \catcode`\"=12 \catcode`\<=12 @@ -9258,7 +9789,6 @@ directory should work if nowhere else does.} \catcode`\;=12 \catcode`\!=12 \catcode`\~=13 - \gdef\DeclareUnicodeCharacter#1#2{% \countUTFz = "#1\relax %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% @@ -9273,6 +9803,13 @@ directory should work if nowhere else does.} \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \gdef\UTFviiiTmp{#2}% + % + \expandafter\ifx\csname uni:#1\endcsname \relax \else + \message{Internal error, already defined: #1}% + \fi + % + % define an additional control sequence for this code point. + \expandafter\globallet\csname uni:#1\endcsname \UTFviiiTmp \endgroup} \gdef\parseXMLCharref{% @@ -9310,23 +9847,53 @@ directory should work if nowhere else does.} \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup +% https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_M +% U+0000..U+007F = https://en.wikipedia.org/wiki/Basic_Latin_(Unicode_block) +% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block) +% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A +% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B +% +% Many of our renditions are less than wonderful, and all the missing +% characters are available somewhere. Loading the necessary fonts +% awaits user request. We can't truly support Unicode without +% reimplementing everything that's been done in LaTeX for many years, +% plus probably using luatex or xetex, and who knows what else. +% We won't be doing that here in this simple file. But we can try to at +% least make most of the characters not bomb out. +% \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} + \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent \DeclareUnicodeCharacter{00A3}{\pounds} + \DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency + \DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen + \DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar + \DeclareUnicodeCharacter{00A7}{\S} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} \DeclareUnicodeCharacter{00AA}{\ordf} \DeclareUnicodeCharacter{00AB}{\guillemetleft} + \DeclareUnicodeCharacter{00AC}{\ensuremath\lnot} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} + \DeclareUnicodeCharacter{00B1}{\ensuremath\pm} + \DeclareUnicodeCharacter{00B2}{$^2$} + \DeclareUnicodeCharacter{00B3}{$^3$} \DeclareUnicodeCharacter{00B4}{\'{ }} + \DeclareUnicodeCharacter{00B5}{$\mu$} + \DeclareUnicodeCharacter{00B6}{\P} + \DeclareUnicodeCharacter{00B7}{\ensuremath\cdot} \DeclareUnicodeCharacter{00B8}{\cedilla{ }} + \DeclareUnicodeCharacter{00B9}{$^1$} \DeclareUnicodeCharacter{00BA}{\ordm} \DeclareUnicodeCharacter{00BB}{\guillemetright} + \DeclareUnicodeCharacter{00BC}{$1\over4$} + \DeclareUnicodeCharacter{00BD}{$1\over2$} + \DeclareUnicodeCharacter{00BE}{$3\over4$} \DeclareUnicodeCharacter{00BF}{\questiondown} \DeclareUnicodeCharacter{00C0}{\`A} @@ -9353,6 +9920,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00D4}{\^O} \DeclareUnicodeCharacter{00D5}{\~O} \DeclareUnicodeCharacter{00D6}{\"O} + \DeclareUnicodeCharacter{00D7}{\ensuremath\times} \DeclareUnicodeCharacter{00D8}{\O} \DeclareUnicodeCharacter{00D9}{\`U} \DeclareUnicodeCharacter{00DA}{\'U} @@ -9386,6 +9954,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00F4}{\^o} \DeclareUnicodeCharacter{00F5}{\~o} \DeclareUnicodeCharacter{00F6}{\"o} + \DeclareUnicodeCharacter{00F7}{\ensuremath\div} \DeclareUnicodeCharacter{00F8}{\o} \DeclareUnicodeCharacter{00F9}{\`u} \DeclareUnicodeCharacter{00FA}{\'u} @@ -9405,20 +9974,23 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} - \DeclareUnicodeCharacter{0118}{\ogonek{E}} - \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} + \DeclareUnicodeCharacter{010F}{d'} + \DeclareUnicodeCharacter{0110}{\DH} + \DeclareUnicodeCharacter{0111}{\dh} \DeclareUnicodeCharacter{0112}{\=E} \DeclareUnicodeCharacter{0113}{\=e} \DeclareUnicodeCharacter{0114}{\u{E}} \DeclareUnicodeCharacter{0115}{\u{e}} \DeclareUnicodeCharacter{0116}{\dotaccent{E}} \DeclareUnicodeCharacter{0117}{\dotaccent{e}} + \DeclareUnicodeCharacter{0118}{\ogonek{E}} + \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{011A}{\v{E}} \DeclareUnicodeCharacter{011B}{\v{e}} \DeclareUnicodeCharacter{011C}{\^G} @@ -9428,14 +10000,20 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} + \DeclareUnicodeCharacter{0122}{\cedilla{G}} + \DeclareUnicodeCharacter{0123}{\cedilla{g}} \DeclareUnicodeCharacter{0124}{\^H} \DeclareUnicodeCharacter{0125}{\^h} + \DeclareUnicodeCharacter{0126}{\missingcharmsg{H WITH STROKE}} + \DeclareUnicodeCharacter{0127}{\missingcharmsg{h WITH STROKE}} \DeclareUnicodeCharacter{0128}{\~I} \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} \DeclareUnicodeCharacter{012A}{\=I} \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} \DeclareUnicodeCharacter{012C}{\u{I}} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} + \DeclareUnicodeCharacter{012E}{\ogonek{I}} + \DeclareUnicodeCharacter{012F}{\ogonek{i}} \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} @@ -9443,15 +10021,29 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0133}{ij} \DeclareUnicodeCharacter{0134}{\^J} \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} + \DeclareUnicodeCharacter{0136}{\cedilla{K}} + \DeclareUnicodeCharacter{0137}{\cedilla{k}} + \DeclareUnicodeCharacter{0138}{\ensuremath\kappa} \DeclareUnicodeCharacter{0139}{\'L} \DeclareUnicodeCharacter{013A}{\'l} + \DeclareUnicodeCharacter{013B}{\cedilla{L}} + \DeclareUnicodeCharacter{013C}{\cedilla{l}} + \DeclareUnicodeCharacter{013D}{L'}% should kern + \DeclareUnicodeCharacter{013E}{l'}% should kern + \DeclareUnicodeCharacter{013F}{L\U{00B7}} + \DeclareUnicodeCharacter{0140}{l\U{00B7}} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} \DeclareUnicodeCharacter{0143}{\'N} \DeclareUnicodeCharacter{0144}{\'n} + \DeclareUnicodeCharacter{0145}{\cedilla{N}} + \DeclareUnicodeCharacter{0146}{\cedilla{n}} \DeclareUnicodeCharacter{0147}{\v{N}} \DeclareUnicodeCharacter{0148}{\v{n}} + \DeclareUnicodeCharacter{0149}{'n} + \DeclareUnicodeCharacter{014A}{\missingcharmsg{ENG}} + \DeclareUnicodeCharacter{014B}{\missingcharmsg{eng}} \DeclareUnicodeCharacter{014C}{\=O} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} @@ -9463,6 +10055,8 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0153}{\oe} \DeclareUnicodeCharacter{0154}{\'R} \DeclareUnicodeCharacter{0155}{\'r} + \DeclareUnicodeCharacter{0156}{\cedilla{R}} + \DeclareUnicodeCharacter{0157}{\cedilla{r}} \DeclareUnicodeCharacter{0158}{\v{R}} \DeclareUnicodeCharacter{0159}{\v{r}} \DeclareUnicodeCharacter{015A}{\'S} @@ -9474,10 +10068,12 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} - \DeclareUnicodeCharacter{0162}{\cedilla{t}} - \DeclareUnicodeCharacter{0163}{\cedilla{T}} + \DeclareUnicodeCharacter{0162}{\cedilla{T}} + \DeclareUnicodeCharacter{0163}{\cedilla{t}} \DeclareUnicodeCharacter{0164}{\v{T}} - + \DeclareUnicodeCharacter{0165}{\v{t}} + \DeclareUnicodeCharacter{0166}{\missingcharmsg{H WITH STROKE}} + \DeclareUnicodeCharacter{0167}{\missingcharmsg{h WITH STROKE}} \DeclareUnicodeCharacter{0168}{\~U} \DeclareUnicodeCharacter{0169}{\~u} \DeclareUnicodeCharacter{016A}{\=U} @@ -9489,6 +10085,8 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} + \DeclareUnicodeCharacter{0172}{\ogonek{U}} + \DeclareUnicodeCharacter{0173}{\ogonek{u}} \DeclareUnicodeCharacter{0174}{\^W} \DeclareUnicodeCharacter{0175}{\^w} \DeclareUnicodeCharacter{0176}{\^Y} @@ -9500,6 +10098,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{017C}{\dotaccent{z}} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} + \DeclareUnicodeCharacter{017F}{\missingcharmsg{LONG S}} \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} @@ -9556,6 +10155,83 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{02DB}{\ogonek{ }} + % Greek letters upper case + \DeclareUnicodeCharacter{0391}{{\it A}} + \DeclareUnicodeCharacter{0392}{{\it B}} + \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}} + \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}} + \DeclareUnicodeCharacter{0395}{{\it E}} + \DeclareUnicodeCharacter{0396}{{\it Z}} + \DeclareUnicodeCharacter{0397}{{\it H}} + \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}} + \DeclareUnicodeCharacter{0399}{{\it I}} + \DeclareUnicodeCharacter{039A}{{\it K}} + \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}} + \DeclareUnicodeCharacter{039C}{{\it M}} + \DeclareUnicodeCharacter{039D}{{\it N}} + \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}} + \DeclareUnicodeCharacter{039F}{{\it O}} + \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}} + \DeclareUnicodeCharacter{03A1}{{\it P}} + %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma + \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}} + \DeclareUnicodeCharacter{03A4}{{\it T}} + \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}} + \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}} + \DeclareUnicodeCharacter{03A7}{{\it X}} + \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}} + \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}} + + % Vowels with accents + \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}} + \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}} + \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}} + \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}} + \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}} + \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}} + + % Standalone accent + \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}} + + % Greek letters lower case + \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha} + \DeclareUnicodeCharacter{03B2}{\ensuremath\beta} + \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma} + \DeclareUnicodeCharacter{03B4}{\ensuremath\delta} + \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon} + \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta} + \DeclareUnicodeCharacter{03B7}{\ensuremath\eta} + \DeclareUnicodeCharacter{03B8}{\ensuremath\theta} + \DeclareUnicodeCharacter{03B9}{\ensuremath\iota} + \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa} + \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda} + \DeclareUnicodeCharacter{03BC}{\ensuremath\mu} + \DeclareUnicodeCharacter{03BD}{\ensuremath\nu} + \DeclareUnicodeCharacter{03BE}{\ensuremath\xi} + \DeclareUnicodeCharacter{03BF}{{\it o}} % omicron + \DeclareUnicodeCharacter{03C0}{\ensuremath\pi} + \DeclareUnicodeCharacter{03C1}{\ensuremath\rho} + \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma} + \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma} + \DeclareUnicodeCharacter{03C4}{\ensuremath\tau} + \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon} + \DeclareUnicodeCharacter{03C6}{\ensuremath\phi} + \DeclareUnicodeCharacter{03C7}{\ensuremath\chi} + \DeclareUnicodeCharacter{03C8}{\ensuremath\psi} + \DeclareUnicodeCharacter{03C9}{\ensuremath\omega} + + % More Greek vowels with accents + \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}} + \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}} + \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}} + \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}} + \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}} + + % Variant Greek letters + \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta} + \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi} + \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho} + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} @@ -9683,6 +10359,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{1EF8}{\~Y} \DeclareUnicodeCharacter{1EF9}{\~y} + % Punctuation \DeclareUnicodeCharacter{2013}{--} \DeclareUnicodeCharacter{2014}{---} \DeclareUnicodeCharacter{2018}{\quoteleft} @@ -9691,26 +10368,227 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{201C}{\quotedblleft} \DeclareUnicodeCharacter{201D}{\quotedblright} \DeclareUnicodeCharacter{201E}{\quotedblbase} + \DeclareUnicodeCharacter{2020}{\ensuremath\dagger} + \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger} \DeclareUnicodeCharacter{2022}{\bullet} + \DeclareUnicodeCharacter{202F}{\thinspace} \DeclareUnicodeCharacter{2026}{\dots} \DeclareUnicodeCharacter{2039}{\guilsinglleft} \DeclareUnicodeCharacter{203A}{\guilsinglright} + \DeclareUnicodeCharacter{20AC}{\euro} \DeclareUnicodeCharacter{2192}{\expansion} \DeclareUnicodeCharacter{21D2}{\result} + % Mathematical symbols + \DeclareUnicodeCharacter{2200}{\ensuremath\forall} + \DeclareUnicodeCharacter{2203}{\ensuremath\exists} + \DeclareUnicodeCharacter{2208}{\ensuremath\in} \DeclareUnicodeCharacter{2212}{\minus} - \DeclareUnicodeCharacter{2217}{\point} + \DeclareUnicodeCharacter{2217}{\ast} + \DeclareUnicodeCharacter{221E}{\ensuremath\infty} + \DeclareUnicodeCharacter{2225}{\ensuremath\parallel} + \DeclareUnicodeCharacter{2227}{\ensuremath\wedge} + \DeclareUnicodeCharacter{2229}{\ensuremath\cap} \DeclareUnicodeCharacter{2261}{\equiv} -}% end of \utfeightchardefs + \DeclareUnicodeCharacter{2264}{\ensuremath\leq} + \DeclareUnicodeCharacter{2265}{\ensuremath\geq} + \DeclareUnicodeCharacter{2282}{\ensuremath\subset} + \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq} + \DeclareUnicodeCharacter{2016}{\ensuremath\Vert} + \DeclareUnicodeCharacter{2032}{\ensuremath\prime} + \DeclareUnicodeCharacter{210F}{\ensuremath\hbar} + \DeclareUnicodeCharacter{2111}{\ensuremath\Im} + \DeclareUnicodeCharacter{2113}{\ensuremath\ell} + \DeclareUnicodeCharacter{2118}{\ensuremath\wp} + \DeclareUnicodeCharacter{211C}{\ensuremath\Re} + \DeclareUnicodeCharacter{2127}{\ensuremath\mho} + \DeclareUnicodeCharacter{2135}{\ensuremath\aleph} + \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow} + \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow} + \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow} + \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow} + \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow} + \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow} + \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow} + \DeclareUnicodeCharacter{2198}{\ensuremath\searrow} + \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow} + \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto} + \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow} + \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow} + \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup} + \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown} + \DeclareUnicodeCharacter{21BE}{\ensuremath\upharpoonright} + \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup} + \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown} + \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons} + \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow} + \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow} + \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow} + \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow} + \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow} + \DeclareUnicodeCharacter{21DD}{\ensuremath\leadsto} + \DeclareUnicodeCharacter{2201}{\ensuremath\complement} + \DeclareUnicodeCharacter{2202}{\ensuremath\partial} + \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset} + \DeclareUnicodeCharacter{2207}{\ensuremath\nabla} + \DeclareUnicodeCharacter{2209}{\ensuremath\notin} + \DeclareUnicodeCharacter{220B}{\ensuremath\owns} + \DeclareUnicodeCharacter{220F}{\ensuremath\prod} + \DeclareUnicodeCharacter{2210}{\ensuremath\coprod} + \DeclareUnicodeCharacter{2211}{\ensuremath\sum} + \DeclareUnicodeCharacter{2213}{\ensuremath\mp} + \DeclareUnicodeCharacter{2218}{\ensuremath\circ} + \DeclareUnicodeCharacter{221A}{\ensuremath\surd} + \DeclareUnicodeCharacter{221D}{\ensuremath\propto} + \DeclareUnicodeCharacter{2220}{\ensuremath\angle} + \DeclareUnicodeCharacter{2223}{\ensuremath\mid} + \DeclareUnicodeCharacter{2228}{\ensuremath\vee} + \DeclareUnicodeCharacter{222A}{\ensuremath\cup} + \DeclareUnicodeCharacter{222B}{\ensuremath\smallint} + \DeclareUnicodeCharacter{222E}{\ensuremath\oint} + \DeclareUnicodeCharacter{223C}{\ensuremath\sim} + \DeclareUnicodeCharacter{2240}{\ensuremath\wr} + \DeclareUnicodeCharacter{2243}{\ensuremath\simeq} + \DeclareUnicodeCharacter{2245}{\ensuremath\cong} + \DeclareUnicodeCharacter{2248}{\ensuremath\approx} + \DeclareUnicodeCharacter{224D}{\ensuremath\asymp} + \DeclareUnicodeCharacter{2250}{\ensuremath\doteq} + \DeclareUnicodeCharacter{2260}{\ensuremath\neq} + \DeclareUnicodeCharacter{226A}{\ensuremath\ll} + \DeclareUnicodeCharacter{226B}{\ensuremath\gg} + \DeclareUnicodeCharacter{227A}{\ensuremath\prec} + \DeclareUnicodeCharacter{227B}{\ensuremath\succ} + \DeclareUnicodeCharacter{2283}{\ensuremath\supset} + \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq} + \DeclareUnicodeCharacter{228E}{\ensuremath\uplus} + \DeclareUnicodeCharacter{228F}{\ensuremath\sqsubset} + \DeclareUnicodeCharacter{2290}{\ensuremath\sqsupset} + \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq} + \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq} + \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap} + \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup} + \DeclareUnicodeCharacter{2295}{\ensuremath\oplus} + \DeclareUnicodeCharacter{2296}{\ensuremath\ominus} + \DeclareUnicodeCharacter{2297}{\ensuremath\otimes} + \DeclareUnicodeCharacter{2298}{\ensuremath\oslash} + \DeclareUnicodeCharacter{2299}{\ensuremath\odot} + \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash} + \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv} + \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop} + \DeclareUnicodeCharacter{22A5}{\ensuremath\bot} + \DeclareUnicodeCharacter{22A8}{\ensuremath\models} + \DeclareUnicodeCharacter{22B4}{\ensuremath\unlhd} + \DeclareUnicodeCharacter{22B5}{\ensuremath\unrhd} + \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge} + \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee} + \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap} + \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup} + \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond} + \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot} + \DeclareUnicodeCharacter{22C6}{\ensuremath\star} + \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie} + \DeclareUnicodeCharacter{2308}{\ensuremath\lceil} + \DeclareUnicodeCharacter{2309}{\ensuremath\rceil} + \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor} + \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor} + \DeclareUnicodeCharacter{2322}{\ensuremath\frown} + \DeclareUnicodeCharacter{2323}{\ensuremath\smile} + + \DeclareUnicodeCharacter{25A1}{\ensuremath\Box} + \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle} + \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright} + \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown} + \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft} + \DeclareUnicodeCharacter{25C7}{\ensuremath\Diamond} + \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit} + \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit} + \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit} + \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit} + \DeclareUnicodeCharacter{266D}{\ensuremath\flat} + \DeclareUnicodeCharacter{266E}{\ensuremath\natural} + \DeclareUnicodeCharacter{266F}{\ensuremath\sharp} + \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc} + \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle} + \DeclareUnicodeCharacter{27C2}{\ensuremath\perp} + \DeclareUnicodeCharacter{27E8}{\ensuremath\langle} + \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow} + \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow} + \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow} + \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto} + \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus} + \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot} + \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus} + \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes} + \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus} + \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup} + \DeclareUnicodeCharacter{2A1D}{\ensuremath\Join} + \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg} + \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq} + \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq} + + \global\mathchardef\checkmark="1370 % actually the square root sign + \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark} +}% end of \utfeightchardefs % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } +% Latin1 (ISO-8859-1) character definitions. +\def\nonasciistringdefs{% + \setnonasciicharscatcode\active + \def\defstringchar##1{\def##1{\string##1}}% + % + \defstringchar^^80\defstringchar^^81\defstringchar^^82\defstringchar^^83% + \defstringchar^^84\defstringchar^^85\defstringchar^^86\defstringchar^^87% + \defstringchar^^88\defstringchar^^89\defstringchar^^8a\defstringchar^^8b% + \defstringchar^^8c\defstringchar^^8d\defstringchar^^8e\defstringchar^^8f% + % + \defstringchar^^90\defstringchar^^91\defstringchar^^92\defstringchar^^93% + \defstringchar^^94\defstringchar^^95\defstringchar^^96\defstringchar^^97% + \defstringchar^^98\defstringchar^^99\defstringchar^^9a\defstringchar^^9b% + \defstringchar^^9c\defstringchar^^9d\defstringchar^^9e\defstringchar^^9f% + % + \defstringchar^^a0\defstringchar^^a1\defstringchar^^a2\defstringchar^^a3% + \defstringchar^^a4\defstringchar^^a5\defstringchar^^a6\defstringchar^^a7% + \defstringchar^^a8\defstringchar^^a9\defstringchar^^aa\defstringchar^^ab% + \defstringchar^^ac\defstringchar^^ad\defstringchar^^ae\defstringchar^^af% + % + \defstringchar^^b0\defstringchar^^b1\defstringchar^^b2\defstringchar^^b3% + \defstringchar^^b4\defstringchar^^b5\defstringchar^^b6\defstringchar^^b7% + \defstringchar^^b8\defstringchar^^b9\defstringchar^^ba\defstringchar^^bb% + \defstringchar^^bc\defstringchar^^bd\defstringchar^^be\defstringchar^^bf% + % + \defstringchar^^c0\defstringchar^^c1\defstringchar^^c2\defstringchar^^c3% + \defstringchar^^c4\defstringchar^^c5\defstringchar^^c6\defstringchar^^c7% + \defstringchar^^c8\defstringchar^^c9\defstringchar^^ca\defstringchar^^cb% + \defstringchar^^cc\defstringchar^^cd\defstringchar^^ce\defstringchar^^cf% + % + \defstringchar^^d0\defstringchar^^d1\defstringchar^^d2\defstringchar^^d3% + \defstringchar^^d4\defstringchar^^d5\defstringchar^^d6\defstringchar^^d7% + \defstringchar^^d8\defstringchar^^d9\defstringchar^^da\defstringchar^^db% + \defstringchar^^dc\defstringchar^^dd\defstringchar^^de\defstringchar^^df% + % + \defstringchar^^e0\defstringchar^^e1\defstringchar^^e2\defstringchar^^e3% + \defstringchar^^e4\defstringchar^^e5\defstringchar^^e6\defstringchar^^e7% + \defstringchar^^e8\defstringchar^^e9\defstringchar^^ea\defstringchar^^eb% + \defstringchar^^ec\defstringchar^^ed\defstringchar^^ee\defstringchar^^ef% + % + \defstringchar^^f0\defstringchar^^f1\defstringchar^^f2\defstringchar^^f3% + \defstringchar^^f4\defstringchar^^f5\defstringchar^^f6\defstringchar^^f7% + \defstringchar^^f8\defstringchar^^f9\defstringchar^^fa\defstringchar^^fb% + \defstringchar^^fc\defstringchar^^fd\defstringchar^^fe\defstringchar^^ff% +} + + +% define all the unicode characters we know about, for the sake of @U. +\utfeightchardefs + + % Make non-ASCII characters printable again for compatibility with % existing Texinfo documents that may use them, even without declaring a % document encoding. @@ -9979,8 +10857,8 @@ directory should work if nowhere else does.} \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde -\chardef\hat=`\^ -\catcode`\^=\active \def\activehat{{\tt \hat}} \let^ = \activehat +\chardef\hatchar=`\^ +\catcode`\^=\active \def\activehat{{\tt \hatchar}} \let^ = \activehat \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} @@ -9997,6 +10875,8 @@ directory should work if nowhere else does.} \catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix +\catcode`\-=\active \let-=\normaldash + % used for headline/footline in the output routine, in case the page % breaks in the middle of an @tex block. @@ -10011,12 +10891,6 @@ directory should work if nowhere else does.} % in principle, all other definitions in \tex have to be undone too. } -% 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} - % Used sometimes to turn off (effectively) the active characters even after % parsing them. \def\turnoffactive{% @@ -10035,23 +10909,22 @@ directory should work if nowhere else does.} % \doublebackslash is two of them (for the pdf outlines). {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} -% In texinfo, backslash is an active character; it prints the backslash +% In Texinfo, backslash is an active character; it prints the backslash % in fixed width font. \catcode`\\=\active % @ for escape char from now on. -% The story here is that in math mode, the \char of \backslashcurfont -% ends up printing the roman \ from the math symbol font (because \char -% in math mode uses the \mathcode, and plain.tex sets -% \mathcode`\\="026E). It seems better for @backslashchar{} to always -% print a typewriter backslash, hence we use an explicit \mathchar, +% Print a typewriter backslash. For math mode, we can't simply use +% \backslashcurfont: the story here is that in math mode, the \char +% of \backslashcurfont ends up printing the roman \ from the math symbol +% font (because \char in math mode uses the \mathcode, and plain.tex +% sets \mathcode`\\="026E). Hence we use an explicit \mathchar, % which is the decimal equivalent of "715c (class 7, e.g., use \fam; % ignored family value; char position "5C). We can't use " for the % usual hex value because it has already been made active. -@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} -@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. -% On startup, @fixbackslash assigns: -% @let \ = @normalbackslash +@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} +@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. + % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with % catcode other. We switch back and forth between these. @@ -10059,51 +10932,77 @@ directory should work if nowhere else does.} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of -% the literal character `\'. Also revert - to its normal character, in -% case the active - from code has slipped in. +% the literal character `\'. % {@catcode`- = @active @gdef@normalturnoffactive{% + @nonasciistringdefs @let-=@normaldash @let"=@normaldoublequote @let$=@normaldollar %$ font-lock fix @let+=@normalplus @let<=@normalless @let>=@normalgreater - @let\=@normalbackslash @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let~=@normaltilde + @let\=@ttbackslash @markupsetuplqdefault @markupsetuprqdefault @unsepspaces } } -% Make _ and + \other characters, temporarily. -% This is canceled by @fixbackslash. -@otherifyactive +% 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 @fixbackslash turn them back on. +@catcode`+=@other @catcode`@_=@other +% \enablebackslashhack - allow file to begin `\input texinfo' +% % 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 +% If the file did not have a `\input texinfo', then it is turned off after +% the first line; otherwise the first `\' in the file would cause an error. +% This is used on the very last line of this file, texinfo.tex. +% We also use @c to call @fixbackslash, in case ends of lines are hidden. +{ +@catcode`@^=7 +@catcode`@^^M=13@gdef@enablebackslashhack{% + @global@let\ = @eatinput% + @catcode`@^^M=13% + @def@c{@fixbackslash@c}% + @def ^^M{@let^^M@secondlinenl}% + @gdef @secondlinenl{@let^^M@thirdlinenl}% + @gdef @thirdlinenl{@fixbackslash}% +}} + +{@catcode`@^=7 @catcode`@^^M=13% +@gdef@eatinput input texinfo#1^^M{@fixbackslash}} -% 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 turn back 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 + @ifx\@eatinput @let\ = @ttbackslash @fi + @catcode13=5 % regular end of line + @let@c=@texinfoc + % Also turn back on active characters that might appear in the input + % file name, in case not using a pre-dumped format. @catcode`+=@active @catcode`@_=@active + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. This macro, @fixbackslash, gets + % called at the beginning of every Texinfo file. Not opening texinfo.cnf + % directly in this file, texinfo.tex, makes it possible to make a format + % file for Texinfo. + % + @openin 1 texinfo.cnf + @ifeof 1 @else @input texinfo.cnf @fi + @closein 1 } + % Say @foo, not \foo, in error messages. @escapechar = `@@ @@ -10132,7 +11031,7 @@ directory should work if nowhere else does.} @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) -@c page-delimiter: "^\\\\message" +@c page-delimiter: "^\\\\message\\|emacs-page" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @@ -10143,3 +11042,4 @@ directory should work if nowhere else does.} @ignore arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 @end ignore +@enablebackslashhack diff --git a/doc/version.texi b/doc/version.texi index 5f71e55..90bdb3e 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,10 +1,11 @@ @ignore -Copyright (C) 1988-2014 Free Software Foundation, Inc. +Copyright (C) 1988-2016 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Sun Feb 2 16:22:00 EST 2014 +@set LASTCHANGE Wed Sep 7 17:12:22 EDT 2016 -@set EDITION 4.3 -@set VERSION 4.3 -@set UPDATED 2 February 2014 -@set UPDATED-MONTH February 2014 +@set EDITION 4.4 +@set VERSION 4.4 + +@set UPDATED 7 September 2016 +@set UPDATED-MONTH September 2016 diff --git a/error.c b/error.c index 64c4f41..b05c39e 100644 --- a/error.c +++ b/error.c @@ -272,6 +272,29 @@ internal_warning (format, va_alist) va_end (args); } +void +#if defined (PREFER_STDARG) +internal_inform (const char *format, ...) +#else +internal_inform (format, va_alist) + const char *format; + va_dcl +#endif +{ + va_list args; + + error_prolog (1); + /* TRANSLATORS: this is a prefix for informational messages. */ + fprintf (stderr, _("INFORM: ")); + + SH_VA_START (args, format); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + + va_end (args); +} + void #if defined (PREFER_STDARG) sys_error (const char *format, ...) diff --git a/error.h b/error.h index 4b17577..964c112 100644 --- a/error.h +++ b/error.h @@ -50,6 +50,9 @@ extern void internal_error __P((const char *, ...)) __attribute__((__format__ ( /* Report an internal warning. */ extern void internal_warning __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); +/* Report an internal informational notice. */ +extern void internal_inform __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2))); + /* Debugging functions, not enabled in released version. */ extern char *strescape __P((const char *)); extern void itrace __P((const char *, ...)) __attribute__ ((__format__ (printf, 1, 2))); diff --git a/eval.c b/eval.c index 1f65aac..db863e7 100644 --- a/eval.c +++ b/eval.c @@ -30,6 +30,8 @@ #include "bashansi.h" #include +#include + #include "bashintl.h" #include "shell.h" @@ -53,6 +55,7 @@ extern int last_command_exit_value, stdin_redir; extern int need_here_doc; extern int current_command_number, current_command_line_count, line_number; extern int expand_aliases; +extern char *ps0_prompt; #if defined (HAVE_POSIX_SIGNALS) extern sigset_t top_level_mask; @@ -85,7 +88,8 @@ reader_loop () unlink_fifo_list (); #endif /* PROCESS_SUBSTITUTION */ - /* XXX - why do we set this every time through the loop? */ + /* XXX - why do we set this every time through the loop? And why do + it if SIGINT is trapped in an interactive shell? */ if (interactive_shell && signal_is_ignored (SIGINT) == 0) set_signal_handler (SIGINT, sigint_sighandler); @@ -157,6 +161,22 @@ reader_loop () executing = 1; stdin_redir = 0; + + /* If the shell is interactive, expand and display $PS0 after reading a + command (possibly a list or pipeline) and before executing it. */ + if (interactive && ps0_prompt) + { + char *ps0_string; + + ps0_string = decode_prompt_string (ps0_prompt); + if (ps0_string && *ps0_string) + { + fprintf (stderr, "%s", ps0_string); + fflush (stderr); + } + free (ps0_string); + } + execute_command (current_command); exec_done: @@ -224,7 +244,10 @@ parse_command () /* Allow the execution of a random command just before the printing of each primary prompt. If the shell variable PROMPT_COMMAND is set then the value of it is the command to execute. */ - if (interactive && bash_input.type != st_string) + /* The tests are a combination of SHOULD_PROMPT() and prompt_again() + from parse.y, which are the conditions under which the prompt is + actually printed. */ + if (interactive && bash_input.type != st_string && parser_expanding_alias() == 0) { command_to_execute = get_string_value ("PROMPT_COMMAND"); if (command_to_execute) diff --git a/examples/functions/dirstack b/examples/functions/dirstack new file mode 100644 index 0000000..d68e619 --- /dev/null +++ b/examples/functions/dirstack @@ -0,0 +1,160 @@ +#!/bin/bash +# @(#) dirstack + +### +# Another implementation of the directory manipulation functions +# published in the Bolsky & Korn book : "The new Korn shell" : +# cd, to change current directory +# d, to display the stack content +# Eric Sanchis (eric.sanchis@iut-rodez.fr), 2012 +# +# 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 . +# +### + + +shopt -s expand_aliases +shopt -s extglob +shopt -s cdable_vars + +alias integer='declare -i' + +integer MAX=32 +integer INDMAX=MAX-1 +integer INDTOP=0 + +unalias cd 2>/dev/null +alias cd=cdir + +unset tab +tab[INDTOP]="$(pwd)" + + +function cdir +{ + local -i ind + local dir + +dir="${1:-$HOME}" +case "$dir" in + - ) # cd - => equivalent to : cd -1 + ind=INDTOP-1 + cd_by_number $ind + ;; + -+([[:digit:]]) ) # cd -n + ind=$INDTOP-${dir#-} + cd_by_number $ind + ;; + *) # cd ~ or cd dir_name + cd_by_name "$dir" +esac +} + + +function cd_by_number +{ + local -i k=$1 + local -i j + local dirtmp + +if (( k < 0 )) + then + echo Impossible to change directory >&2 + return 1 + else + dirtmp="${tab[k]}" + j=k+1 + while (( j <= INDTOP )) + do + tab[j-1]="${tab[j]}" + j=j+1 + done + tab[INDTOP]="$dirtmp" + \cd "${tab[INDTOP]}" +fi +} + + +function cd_by_name +{ + local -i i + local rep + +rep=$( \cd "$1" &>/dev/null && pwd) +if [[ -z "$rep" ]] + then + echo cd : "$1" unknown >&2 + return 1 +fi + + i=$INDTOP + while (( i >= 0 )) + do + if [[ "${tab[i]}" == "$rep" ]] + then break + fi + i=i-1 + done + +if (( i == INDTOP )) + then # cd -0 => we do nothing ! + return 0 + elif (( i == -1 )) + then # the directory isn't in the stack + if (( INDTOP == INDMAX )) + then # the stack is FULL + # the oldest directory is removed + local -i m + + m=1 + while (( m <= INDMAX )) + do + tab[m-1]="${tab[m]}" + m=m+1 + done + else # the new directory is added to the top of the stack + INDTOP=INDTOP+1 + fi + tab[INDTOP]="$rep" + \cd "${tab[INDTOP]}" + return 0 + + else # the directory is already in the stack + # $i gives its index + cd_by_number $i +fi +} + + +function d # display the directory stack +{ + local -i i + local rep + +i=0 +while (( $i <= $INDTOP )) + do + rep="${tab[INDTOP-i]#$HOME/}" + case "$rep" in + $HOME) rep="~" ;; + /* ) : ;; + * ) rep="~/$rep" + esac + + echo "$i ) $rep" + i=i+1 + done +} + + diff --git a/examples/loadables/Makefile.in b/examples/loadables/Makefile.in index 99549bf..ec305cd 100644 --- a/examples/loadables/Makefile.in +++ b/examples/loadables/Makefile.in @@ -1,7 +1,7 @@ # # Simple makefile for the sample loadable builtins # -# Copyright (C) 1996-2009 Free Software Foundation, Inc. +# Copyright (C) 1996-2015 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 @@ -17,6 +17,9 @@ # along with this program. If not, see . # +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + # Include some boilerplate Gnu makefile definitions. prefix = @prefix@ @@ -28,10 +31,22 @@ includedir = @includedir@ datarootdir = @datarootdir@ +loadablesdir = @loadablesdir@ +headersdir = @headersdir@ + topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ + +# Support an alternate destination root directory for package building +DESTDIR = + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALLMODE= -m 0755 @SET_MAKE@ CC = @CC@ @@ -52,6 +67,8 @@ CPPFLAGS = @CPPFLAGS@ BASHINCDIR = ${topdir}/include +SUPPORT_SRC = $(topdir)/support/ + LIBBUILD = ${BUILD_DIR}/lib INTL_LIBSRC = ${topdir}/lib/intl @@ -75,7 +92,7 @@ SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ SHOBJ_LIBS = @SHOBJ_LIBS@ SHOBJ_STATUS = @SHOBJ_STATUS@ -INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins \ +INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins -I${srcdir} \ -I$(BASHINCDIR) -I$(BUILD_DIR) -I$(LIBBUILD) \ -I$(BUILD_DIR)/builtins $(INTL_INC) @@ -83,10 +100,10 @@ INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins \ $(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CCFLAGS) $(INC) -c -o $@ $< -ALLPROG = print truefalse sleep pushd finfo logname basename dirname \ +ALLPROG = print truefalse sleep finfo logname basename dirname \ tty pathchk tee head mkdir rmdir printenv id whoami \ - uname sync push ln unlink realpath strftime mypid -OTHERPROG = necho hello cat + uname sync push ln unlink realpath strftime mypid setpgid +OTHERPROG = necho hello cat pushd all: $(SHOBJ_STATUS) @@ -98,7 +115,7 @@ unsupported: @echo "${topdir}/support/shobj-conf script." @echo "If your operating system provides facilities for dynamic" @echo "loading of shared objects using the dlopen(3) interface," - @echo "please update the script and re-run configure. + @echo "please update the script and re-run configure." @echo "Please send the changes you made to bash-maintainers@gnu.org" @echo "for inclusion in future bash releases." @@ -185,6 +202,10 @@ strftime: strftime.o mypid: mypid.o $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mypid.o $(SHOBJ_LIBS) + +setpgid: setpgid.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ setpgid.o $(SHOBJ_LIBS) + # pushd is a special case. We use the same source that the builtin version # uses, with special compilation options. # @@ -207,9 +228,36 @@ mostlyclean: clean -( cd perl && ${MAKE} ${MFLAGS} $@ ) distclean maintainer-clean: clean - $(RM) Makefile pushd.c + $(RM) Makefile Makefile.inc pushd.c -( cd perl && ${MAKE} ${MFLAGS} $@ ) +installdirs: + @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(loadablesdir) + +install-dev: installdirs + @$(INSTALL_DATA) Makefile.inc $(DESTDIR)$(loadablesdir)/Makefile.inc + @( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" install-headers) + +install-supported: all installdirs install-dev + @echo installing example loadable builtins in $(DESTDIR)${loadablesdir} + @for prog in ${ALLPROG}; do \ + echo $$prog ; \ + $(INSTALL_PROGRAM) $(INSTALLMODE) $$prog $(DESTDIR)$(loadablesdir)/$$prog ;\ + done + +uninstall-dev: + -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc + -( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" uninstall-headers) + +uninstall-supported: uninstall-dev + -( cd $(DESTDIR)${loadablesdir} && $(RM) ${ALLPROG} ) + +install-unsupported: +uninstall-unsupported: + +install: install-$(SHOBJ_STATUS) +uninstall: uninstall-$(SHOBJ_STATUS) + print.o: print.c truefalse.o: truefalse.c sleep.o: sleep.c @@ -234,4 +282,4 @@ push.o: push.c mkdir.o: mkdir.c realpath.o: realpath.c strftime.o: strftime.c -mypid.o: mypid.c +setpgid.o: setpgid.c diff --git a/examples/loadables/Makefile.inc.in b/examples/loadables/Makefile.inc.in new file mode 100644 index 0000000..8b419a7 --- /dev/null +++ b/examples/loadables/Makefile.inc.in @@ -0,0 +1,108 @@ +# +# Sample makefile for bash loadable builtin development +# +# Copyright (C) 2015 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +PACKAGE = @PACKAGE_NAME@ +VERSION = @PACKAGE_VERSION@ + +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ + +# Include some boilerplate Gnu makefile definitions. +prefix = @prefix@ + +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +infodir = @infodir@ +includedir = @includedir@ + +datarootdir = @datarootdir@ + +loadablesdir = @loadablesdir@ +headersdir = @headersdir@ + +topdir = @top_srcdir@ +BUILD_DIR = @BUILD_DIR@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +# Support an alternate destination root directory for package building +DESTDIR = + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALLMODE= -m 0755 + +@SET_MAKE@ +CC = @CC@ +RM = rm -f + +SHELL = @MAKE_SHELL@ + +host_os = @host_os@ +host_cpu = @host_cpu@ +host_vendor = @host_vendor@ + +CFLAGS = @CFLAGS@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ +DEFS = @DEFS@ +LOCAL_DEFS = @LOCAL_DEFS@ + +CPPFLAGS = @CPPFLAGS@ + +BASHINCDIR = ${topdir}/include + +SUPPORT_SRC = $(topdir)/support/ + +LIBBUILD = ${BUILD_DIR}/lib + +INTL_LIBSRC = ${topdir}/lib/intl +INTL_BUILDDIR = ${LIBBUILD}/intl +INTL_INC = @INTL_INC@ +LIBINTL_H = @LIBINTL_H@ + +CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) $(CFLAGS) + +# +# These values are generated for configure by ${topdir}/support/shobj-conf. +# If your system is not supported by that script, but includes facilities for +# dynamic loading of shared objects, please update the script and send the +# changes to bash-maintainers@gnu.org. +# +SHOBJ_CC = @SHOBJ_CC@ +SHOBJ_CFLAGS = @SHOBJ_CFLAGS@ +SHOBJ_LD = @SHOBJ_LD@ +SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ @LDFLAGS@ +SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ +SHOBJ_LIBS = @SHOBJ_LIBS@ +SHOBJ_STATUS = @SHOBJ_STATUS@ + +INC = -I$(headersdir) -I$(headersdir)/include -I$(headersdir)/builtins + +.c.o: + $(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CCFLAGS) $(INC) -c -o $@ $< + +all: example + +example: example.o + $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ example.o $(SHOBJ_LIBS) + +example.o: example.c diff --git a/examples/loadables/README b/examples/loadables/README index d29b43a..2eae9cc 100644 --- a/examples/loadables/README +++ b/examples/loadables/README @@ -34,18 +34,17 @@ new loadable builtins. basename.c Return non-directory portion of pathname. cat.c cat(1) replacement with no options - the way cat was intended. -cut.c cut(1) replacement. dirname.c Return directory portion of pathname. finfo.c Print file info. -getconf.c POSIX.2 getconf utility. -getconf.h Replacement definitions for ones the system doesn't provide. head.c Copy first part of files. hello.c Obligatory "Hello World" / sample loadable. id.c POSIX.2 user identity. ln.c Make links. +loadables.h Start at a file loadable builtins can include for shell definitions logname.c Print login name of current user. Makefile.in Simple makefile for the sample loadable builtins. mkdir.c Make directories. +mypid.c Add $MYPID variable, demonstrate use of unload hook function necho.c echo without options or argument interpretation. pathchk.c Check pathnames for validity and portability. print.c Loadable ksh-93 style print builtin. diff --git a/examples/loadables/basename.c b/examples/loadables/basename.c index 7ee817f..3ca1844 100644 --- a/examples/loadables/basename.c +++ b/examples/loadables/basename.c @@ -31,6 +31,7 @@ #include "shell.h" #include "common.h" +int basename_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/dirname.c b/examples/loadables/dirname.c index 0f30286..69019cb 100644 --- a/examples/loadables/dirname.c +++ b/examples/loadables/dirname.c @@ -31,6 +31,7 @@ #include "shell.h" #include "common.h" +int dirname_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/finfo.c b/examples/loadables/finfo.c index b806ef0..00833f6 100644 --- a/examples/loadables/finfo.c +++ b/examples/loadables/finfo.c @@ -39,6 +39,7 @@ #include "shell.h" #include "builtins.h" #include "common.h" +#include "getopt.h" #ifndef errno extern int errno; @@ -46,8 +47,10 @@ extern int errno; extern char **make_builtin_argv (); +static void perms(); static int printst(); static int printsome(); +static void printmode(); static int printfinfo(); static int finfo_main(); @@ -192,7 +195,7 @@ int m; return (m & (S_IRWXU|S_IRWXG|S_IRWXO|S_ISUID|S_ISGID)); } -static int +static void perms(m) int m; { @@ -236,7 +239,7 @@ int m; printf ("u=%s,g=%s,o=%s", ubits, gbits, obits); } -static int +static void printmode(mode) int mode; { @@ -262,7 +265,7 @@ int mode; printf("\n"); } -static int +static int printst(st) struct stat *st; { @@ -459,7 +462,7 @@ char **argv; void builtin_usage() { - fprintf(stderr, "%s: usage: %s [-%s] [file ...]\n", prog, OPTIONS); + fprintf(stderr, "%s: usage: %s [-%s] [file ...]\n", prog, prog, OPTIONS); } #ifndef HAVE_STRERROR diff --git a/examples/loadables/head.c b/examples/loadables/head.c index 22cf6ab..748bb83 100644 --- a/examples/loadables/head.c +++ b/examples/loadables/head.c @@ -88,8 +88,10 @@ file_head (fp, cnt) break; } } + return (EXECUTION_SUCCESS); } +int head_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/hello.c b/examples/loadables/hello.c index 643156c..b09362b 100644 --- a/examples/loadables/hello.c +++ b/examples/loadables/hello.c @@ -29,9 +29,7 @@ #include -#include "builtins.h" -#include "shell.h" -#include "bashgetopt.h" +#include "loadables.h" /* A builtin `xxx' is normally implemented with an `xxx_builtin' function. If you're converting a command that uses the normal Unix argc/argv @@ -58,6 +56,23 @@ hello_builtin (list) return (EXECUTION_SUCCESS); } +int +hello_builtin_load (s) + char *s; +{ + printf ("hello builtin loaded\n"); + fflush (stdout); + return (1); +} + +void +hello_builtin_unload (s) + char *s; +{ + printf ("hello builtin unloaded\n"); + fflush (stdout); +} + /* An array of strings forming the `long' documentation for a builtin xxx, which is printed by `help xxx'. It must end with a NULL. By convention, the first line is a short description. */ @@ -79,4 +94,3 @@ struct builtin hello_struct = { "hello", /* usage synopsis; becomes short_doc */ 0 /* reserved for internal use */ }; - diff --git a/examples/loadables/ln.c b/examples/loadables/ln.c index ec73636..a853bc9 100644 --- a/examples/loadables/ln.c +++ b/examples/loadables/ln.c @@ -46,10 +46,12 @@ typedef int unix_link_syscall_t __P((const char *, const char *)); #define LN_SYMLINK 0x01 #define LN_UNLINK 0x02 +#define LN_NOFOLLOW 0x04 static unix_link_syscall_t *linkfn; static int dolink (); +int ln_builtin (list) WORD_LIST *list; { @@ -70,6 +72,10 @@ ln_builtin (list) case 's': flags |= LN_SYMLINK; break; + case 'h': + case 'n': + flags |= LN_NOFOLLOW; + break; default: builtin_usage (); return (EX_USAGE); @@ -138,8 +144,10 @@ mkdirpath (dir, file) #if defined (HAVE_LSTAT) # define LSTAT lstat +# define LSTAT_OR_STAT_IF(c, f, b) ((c) ? lstat((f), (b)) : stat((f), (b))) #else # define LSTAT stat +# define LSTAT_OR_STAT_IF(c, f, b) (stat((f), (b))) #endif static int @@ -171,7 +179,7 @@ dolink (src, dst, flags) /* If the destination is a directory, create the final filename by appending the basename of the source to the destination. */ dst_path = 0; - if ((stat (dst, &dsb) == 0) && S_ISDIR (dsb.st_mode)) + if ((LSTAT_OR_STAT_IF((flags & LN_NOFOLLOW), dst, &dsb) == 0) && S_ISDIR (dsb.st_mode)) { if ((p = strrchr (src, '/')) == 0) p = src; @@ -210,7 +218,8 @@ char *ln_doc[] = { "Create a new directory entry with the same modes as the original", "file. The -f option means to unlink any existing file, permitting", "the link to occur. The -s option means to create a symbolic link.", - "By default, ln makes hard links.", + "By default, ln makes hard links. Specifying -n or its synonym -h", + "causes ln to not resolve symlinks in the target file or directory.", (char *)NULL }; @@ -221,6 +230,6 @@ struct builtin ln_struct = { ln_builtin, /* function implementing the builtin */ BUILTIN_ENABLED, /* initial flags for builtin */ ln_doc, /* array of long documentation strings. */ - "ln [-fs] file1 [file2] OR ln [-fs] file ... directory", /* usage synopsis; becomes short_doc */ + "ln [-fhns] file1 [file2] OR ln [-fhns] file ... directory", /* usage synopsis; becomes short_doc */ 0 /* reserved for internal use */ }; diff --git a/examples/loadables/loadables.h b/examples/loadables/loadables.h new file mode 100644 index 0000000..c730357 --- /dev/null +++ b/examples/loadables/loadables.h @@ -0,0 +1,34 @@ +/* loadables.h -- Include files needed by all loadable builtins */ + +/* Copyright (C) 2015 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 __LOADABLES_H_ +#define __LOADABLES_H_ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "builtins.h" +#include "shell.h" +#include "bashgetopt.h" +#include "common.h" + +#endif diff --git a/examples/loadables/logname.c b/examples/loadables/logname.c index 95b7e21..27e6591 100644 --- a/examples/loadables/logname.c +++ b/examples/loadables/logname.c @@ -35,6 +35,7 @@ extern int errno; #endif +int logname_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/mkdir.c b/examples/loadables/mkdir.c index f5c105e..39ae07f 100644 --- a/examples/loadables/mkdir.c +++ b/examples/loadables/mkdir.c @@ -52,7 +52,7 @@ int mkdir_builtin (list) WORD_LIST *list; { - int opt, pflag, omode, rval, octal, nmode, parent_mode, um; + int opt, pflag, omode, rval, nmode, parent_mode; char *mode; WORD_LIST *l; @@ -90,7 +90,6 @@ mkdir_builtin (list) builtin_error ("invalid file mode: %s", mode); return (EXECUTION_FAILURE); } - octal = 1; } else if (mode) { @@ -101,7 +100,6 @@ mkdir_builtin (list) builtin_error ("invalid file mode: %s", mode); return (EXECUTION_FAILURE); } - octal = 0; } /* Make the new mode */ diff --git a/examples/loadables/mypid.c b/examples/loadables/mypid.c index 135cdb3..fc1b267 100644 --- a/examples/loadables/mypid.c +++ b/examples/loadables/mypid.c @@ -5,7 +5,13 @@ * Then, from within bash, enable -f ./mypid enable_mypid, where ./mypid * is the binary obtained from running make. Hereafter, `${MYPID}' * is a shell builtin variable. + * + * This defines an unload hook function that is called when the builtin is + * deleted with enable -d that will unbind the MYPID variable so future + * references to it do not attempt to access memory that is no longer part + * of this process's address space. */ +#include #include #include @@ -17,8 +23,11 @@ #define INIT_DYNAMIC_VAR(var, val, gfunc, afunc) \ do \ { SHELL_VAR *v = bind_variable (var, (val), 0); \ - v->dynamic_value = gfunc; \ - v->assign_func = afunc; \ + if (v) \ + { \ + v->dynamic_value = gfunc; \ + v->assign_func = afunc; \ + } \ } \ while (0) @@ -56,6 +65,12 @@ enable_mypid_builtin(WORD_LIST *list) return 0; } +void +enable_mypid_builtin_unload (char *s) +{ + unbind_variable ("MYPID"); +} + char const *enable_mypid_doc[] = { "Enable $MYPID.", "", diff --git a/examples/loadables/necho.c b/examples/loadables/necho.c index b567389..ee65f18 100644 --- a/examples/loadables/necho.c +++ b/examples/loadables/necho.c @@ -25,6 +25,7 @@ #include "builtins.h" #include "shell.h" +int necho_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/pathchk.c b/examples/loadables/pathchk.c index c5fd24a..85e8a04 100644 --- a/examples/loadables/pathchk.c +++ b/examples/loadables/pathchk.c @@ -98,6 +98,7 @@ extern char *strerror (); static int validate_path (); +int pathchk_builtin (list) WORD_LIST *list; { @@ -323,7 +324,7 @@ validate_path (path, portability) if (!last_elem) { exists = dir_ok (path); - if (dir_ok == 0) + if (exists == 0) { free (parent); return 1; @@ -370,8 +371,8 @@ validate_path (path, portability) free (parent); if (strlen (path) > path_max) { - builtin_error ("path `%s' has length %d; exceeds limit of %d", - path, strlen (path), path_max); + builtin_error ("path `%s' has length %lu; exceeds limit of %d", + path, (unsigned long)strlen (path), path_max); return 1; } diff --git a/examples/loadables/perl/Makefile.in b/examples/loadables/perl/Makefile.in index d8860bd..59f39b6 100644 --- a/examples/loadables/perl/Makefile.in +++ b/examples/loadables/perl/Makefile.in @@ -32,7 +32,7 @@ datarootdir = @datarootdir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ @SET_MAKE@ CC = @CC@ diff --git a/examples/loadables/realpath.c b/examples/loadables/realpath.c index ffcbef8..b19b87f 100644 --- a/examples/loadables/realpath.c +++ b/examples/loadables/realpath.c @@ -60,6 +60,7 @@ extern int errno; extern char *sh_realpath(); +int realpath_builtin(list) WORD_LIST *list; { diff --git a/examples/loadables/rmdir.c b/examples/loadables/rmdir.c index 0cfe6c7..001c2bd 100644 --- a/examples/loadables/rmdir.c +++ b/examples/loadables/rmdir.c @@ -32,6 +32,7 @@ extern int errno; #endif +int rmdir_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/setpgid.c b/examples/loadables/setpgid.c new file mode 100644 index 0000000..7da58f1 --- /dev/null +++ b/examples/loadables/setpgid.c @@ -0,0 +1,121 @@ +/* setpgid.c: bash loadable wrapper for setpgid system call + + An example of how to wrap a system call with a loadable builtin. + + Originally contributed by Jason Vas Dias + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#include + +#if defined (HAVE_UNISTD_H) +# include +#endif +#include +#include + +#include "bashtypes.h" +#include "posixtime.h" + +#include + +#include "builtins.h" +#include "shell.h" +#include "common.h" + +#include "bashgetopt.h" + +#if !defined (_POSIX_VERSION) +# define setpgid(pid, pgrp) setpgrp (pid, pgrp) +#endif + +int +setpgid_builtin (list) + WORD_LIST *list; +{ + register WORD_LIST *wl; + intmax_t pid_arg, pgid_arg; + pid_t pid, pgid; + char *pidstr, *pgidstr; + + wl = list; + pid = pgid = 0; + + if (wl == 0 || wl->next == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + pidstr = wl->word ? wl->word->word : 0; + pgidstr = wl->next->word ? wl->next->word->word : 0; + + if (pidstr == 0 || pgidstr == 0) + { + builtin_usage (); + return (EX_USAGE); + } + + if (legal_number (pidstr, &pid_arg) == 0) + { + builtin_error ("%s: pid argument must be numeric", pidstr); + return (EXECUTION_FAILURE); + } + if (pid_arg < 0) + { + builtin_error("%s: negative pid values not allowed", pidstr); + return (EXECUTION_FAILURE); + } + pid = pid_arg; + + if (legal_number (pgidstr, &pgid_arg) == 0) + { + builtin_error ("%s: pgrp argument must be numeric", pgidstr); + return (EXECUTION_FAILURE); + } + if (pgid_arg < 0) + { + builtin_error ("%s: negative pgrp values not allowed", pgidstr); + return (EXECUTION_FAILURE); + } + pgid = pgid_arg; + + errno = 0; + if (setpgid(pid, pgid) < 0) + { + builtin_error("setpgid failed: %s", strerror (errno)); + return (EXECUTION_FAILURE); + } + return (EXECUTION_SUCCESS); +} + +const char *setpgid_doc[] = { + "invoke the setpgid(2) system call", + "", + "Arguments:", + " pid : numeric process identifer, >= 0", + " pgrpid: numeric process group identifier, >=0", + "See the setpgid(2) manual page.", + (const char *)NULL +}; + +struct builtin setpgid_struct = { + "setpgid", + setpgid_builtin, + BUILTIN_ENABLED, + (char **)setpgid_doc, + "setpgid pid pgrpid", + 0 +}; diff --git a/examples/loadables/sync.c b/examples/loadables/sync.c index d91852e..4fbeee1 100644 --- a/examples/loadables/sync.c +++ b/examples/loadables/sync.c @@ -28,6 +28,7 @@ #include "shell.h" #include "bashgetopt.h" +int sync_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/tee.c b/examples/loadables/tee.c index 8b5715f..9462cda 100644 --- a/examples/loadables/tee.c +++ b/examples/loadables/tee.c @@ -60,6 +60,7 @@ extern int interrupt_immediately; extern char *strerror (); +int tee_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/template.c b/examples/loadables/template.c index 3a5814f..8cfd571 100644 --- a/examples/loadables/template.c +++ b/examples/loadables/template.c @@ -11,9 +11,7 @@ #include #include -#include "builtins.h" -#include "shell.h" -#include "bashgetopt.h" +#include "loadables.h" #if !defined (errno) extern int errno; @@ -21,6 +19,7 @@ extern int errno; extern char *strerror (); +int template_builtin (list) WORD_LIST *list; { @@ -42,6 +41,22 @@ template_builtin (list) return (rval); } +/* Called when `template' is enabled and loaded from the shared object. If this + function returns 0, the load fails. */ +int +template_builtin_load (name) + char *name; +{ + return (1); +} + +/* Called when `template' is disabled. */ +void +template_builtin_unload (name) + char *name; +{ +} + char *template_doc[] = { "Short description.", "" diff --git a/examples/loadables/truefalse.c b/examples/loadables/truefalse.c index 113e88f..e011fa1 100644 --- a/examples/loadables/truefalse.c +++ b/examples/loadables/truefalse.c @@ -25,12 +25,14 @@ #include "builtins.h" #include "common.h" +int true_builtin (list) WORD_LIST *list; { return EXECUTION_SUCCESS; } +int false_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/tty.c b/examples/loadables/tty.c index 1d88506..1adc5b5 100644 --- a/examples/loadables/tty.c +++ b/examples/loadables/tty.c @@ -30,6 +30,7 @@ extern char *ttyname (); +int tty_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/uname.c b/examples/loadables/uname.c index a1bddd5..339ec3d 100644 --- a/examples/loadables/uname.c +++ b/examples/loadables/uname.c @@ -63,6 +63,7 @@ static void uprint(); static int uname_flags; +int uname_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/unlink.c b/examples/loadables/unlink.c index 07e3f3d..ff2a78a 100644 --- a/examples/loadables/unlink.c +++ b/examples/loadables/unlink.c @@ -38,6 +38,7 @@ extern int errno; #endif +int unlink_builtin (list) WORD_LIST *list; { diff --git a/examples/loadables/whoami.c b/examples/loadables/whoami.c index 6f8471a..5aa7382 100644 --- a/examples/loadables/whoami.c +++ b/examples/loadables/whoami.c @@ -28,6 +28,7 @@ #include "bashgetopt.h" #include "common.h" +int whoami_builtin (list) WORD_LIST *list; { diff --git a/execute_cmd.c b/execute_cmd.c index 4ee59c1..2a3df6d 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -1,6 +1,6 @@ /* execute_cmd.c -- Execute a COMMAND structure. */ -/* Copyright (C) 1987-2013 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -58,6 +58,7 @@ extern int errno; #endif #define NEED_FPURGE_DECL +#define NEED_SH_SETLINEBUF_DECL #include "bashansi.h" #include "bashintl.h" @@ -83,6 +84,8 @@ extern int errno; #include "builtins/common.h" #include "builtins/builtext.h" /* list of builtins */ +#include "builtins/getopt.h" + #include #include @@ -98,6 +101,10 @@ extern int errno; # include "bashhist.h" #endif +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif + extern int dollar_dollar_pid; extern int posixly_correct; extern int expand_aliases; @@ -218,7 +225,7 @@ int return_catch_value; procenv_t return_catch; /* The value returned by the last synchronous command. */ -int last_command_exit_value; +volatile int last_command_exit_value; /* Whether or not the last command (corresponding to last_command_exit_value) was terminated by a signal, and, if so, which one. */ @@ -284,7 +291,15 @@ int line_number_for_err_trap; /* A sort of function nesting level counter */ int funcnest = 0; -int funcnest_max = 0; /* bash-4.2 */ +int funcnest_max = 0; + +int evalnest = 0; /* bash-4.4/bash-5.0 */ +int evalnest_max = EVALNEST_MAX; + +int sourcenest = 0; +int sourcenest_max = SOURCENEST_MAX; + +volatile int from_return_trap = 0; int lastpipe_opt = 0; @@ -590,7 +605,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, /* Fork a subshell, turn off the subshell bit, turn off job control and call execute_command () on the command again. */ - line_number_for_err_trap = line_number; + line_number_for_err_trap = line_number; /* XXX - save value? */ tcmd = make_command_string (command); paren_pid = make_child (savestring (tcmd), asynchronous); @@ -617,7 +632,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (s) subshell_exit (last_command_exit_value); else - exit (last_command_exit_value); + sh_exit (last_command_exit_value); /* NOTREACHED */ } else @@ -814,12 +829,16 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, if (asynchronous) { DESCRIBE_PID (last_made_pid); + exec_result = EXECUTION_SUCCESS; + invert = 0; /* async commands always succeed */ } else #if !defined (JOB_CONTROL) /* Do not wait for asynchronous processes started from startup files. */ - if (last_made_pid != last_asynchronous_pid) + if (last_made_pid != NO_PID && last_made_pid != last_asynchronous_pid) +#else + if (last_made_pid != NO_PID) #endif /* When executing a shell function that executes other commands, this causes the last simple command in @@ -846,6 +865,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, { last_command_exit_value = exec_result; run_pending_traps (); + + /* Undo redirections before running exit trap on the way out of + set -e. Report by Mark Farrell 5/19/2014 */ + if (exit_immediately_on_error && signal_is_trapped (0) && + unwind_protect_tag_on_stack ("saved-redirects")) + run_unwind_frame ("saved-redirects"); + jump_to_top_level (ERREXIT); } @@ -944,6 +970,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, case cm_connection: exec_result = execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close); + if (asynchronous) + invert = 0; /* XXX */ + break; #if defined (DPAREN_ARITHMETIC) @@ -1081,6 +1110,19 @@ extern int timeval_to_cpu __P((struct timeval *, struct timeval *, struct timeva static const int precs[] = { 0, 100, 10, 1 }; +#if defined (HAVE_LOCALE_H) && defined (HAVE_LOCALECONV) +static int +decpoint () +{ + struct lconv *lv; + + lv = localeconv (); + return (lv && lv->decimal_point && lv->decimal_point[0]) ? lv->decimal_point[0] : '.'; +} +#else +# define decpoint() '.' +#endif + /* Expand one `%'-prefixed escape sequence from a time format string. */ static int mkfmt (buf, prec, lng, sec, sec_fraction) @@ -1125,7 +1167,7 @@ mkfmt (buf, prec, lng, sec, sec_fraction) and 999. */ if (prec != 0) { - buf[ind++] = '.'; + buf[ind++] = decpoint (); for (aind = 1; aind <= prec; aind++) { buf[ind++] = (sec_fraction / precs[aind]) + '0'; @@ -1253,11 +1295,12 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) int asynchronous, pipe_in, pipe_out; struct fd_bitmap *fds_to_close; { - int rv, posix_time, old_flags, nullcmd; + int rv, posix_time, old_flags, nullcmd, code; time_t rs, us, ss; int rsf, usf, ssf; int cpu; char *time_format; + volatile procenv_t save_top_level; #if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) struct timeval real, user, sys; @@ -1304,9 +1347,13 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) } old_flags = command->flags; + COPY_PROCENV (top_level, save_top_level); command->flags &= ~(CMD_TIME_PIPELINE|CMD_TIME_POSIX); - rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close); + code = setjmp_nosigs (top_level); + if (code == NOT_JUMPED) + rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close); command->flags = old_flags; + COPY_PROCENV (save_top_level, top_level); rs = us = ss = 0; rsf = usf = ssf = cpu = 0; @@ -1365,6 +1412,9 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close) if (time_format && *time_format) print_formatted_time (stderr, time_format, rs, rsf, us, usf, ss, ssf, cpu); + if (code) + sh_longjmp (top_level, code); + return rv; } #endif /* COMMAND_TIMING */ @@ -1442,7 +1492,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) login_shell = interactive = 0; if (user_subshell) - subshell_environment = SUBSHELL_PAREN; + subshell_environment = SUBSHELL_PAREN; /* XXX */ else { subshell_environment = 0; /* XXX */ @@ -1496,12 +1546,19 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) /* If this is a user subshell, set a flag if stdin was redirected. This is used later to decide whether to redirect fd 0 to /dev/null for async commands in the subshell. This adds more - sh compatibility, but I'm not sure it's the right thing to do. */ + sh compatibility, but I'm not sure it's the right thing to do. + Note that an input pipe to a compound command suffices to inhibit + the implicit /dev/null redirection for asynchronous commands + executed as part of that compound command. */ if (user_subshell) { - stdin_redir = stdin_redirects (command->redirects); - restore_default_signal (EXIT_TRAP); + stdin_redir = stdin_redirects (command->redirects) || pipe_in != NO_PIPE; +#if 0 + restore_default_signal (EXIT_TRAP); /* XXX - reset_signal_handlers above */ +#endif } + else if (shell_control_structure (command->type) && pipe_in != NO_PIPE) + stdin_redir = 1; /* If this is an asynchronous command (command &), we want to redirect the standard input from /dev/null in the absence of @@ -1565,7 +1622,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) if (result == EXITPROG) invert = 0, return_code = last_command_exit_value; else if (result) - return_code = EXECUTION_FAILURE; + return_code = (last_command_exit_value == EXECUTION_SUCCESS) ? EXECUTION_FAILURE : last_command_exit_value; else if (function_value) return_code = return_catch_value; else @@ -1584,7 +1641,9 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) return_code = run_exit_trap (); } - subshell_level--; +#if 0 + subshell_level--; /* don't bother, caller will just exit */ +#endif return (return_code); /* NOTREACHED */ } @@ -2061,6 +2120,7 @@ coproc_fdrestore (cp) void coproc_pidchk (pid, status) pid_t pid; + int status; { struct coproc *cp; @@ -2092,6 +2152,7 @@ coproc_setvars (cp) SHELL_VAR *v; char *namevar, *t; int l; + WORD_DESC w; #if defined (ARRAY_VARS) arrayind_t ind; #endif @@ -2099,11 +2160,40 @@ coproc_setvars (cp) if (cp->c_name == 0) return; + /* We could do more here but right now we only check the name, warn if it's + not a valid identifier, and refuse to create variables with invalid names + if a coproc with such a name is supplied. */ + w.word = cp->c_name; + w.flags = 0; + if (check_identifier (&w, 1) == 0) + return; + l = strlen (cp->c_name); namevar = xmalloc (l + 16); #if defined (ARRAY_VARS) v = find_variable (cp->c_name); + + /* This is the same code as in find_or_make_array_variable */ + if (v == 0) + { + v = find_variable_nameref_for_create (cp->c_name, 1); + if (v == INVALID_NAMEREF_VALUE) + return; + if (v && nameref_p (v)) + { + free (cp->c_name); + cp->c_name = savestring (nameref_cell (v)); + v = make_new_array_variable (cp->c_name); + } + } + + if (v && (readonly_p (v) || noassign_p (v))) + { + if (readonly_p (v)) + err_readonly (cp->c_name); + return; + } if (v == 0) v = make_new_array_variable (cp->c_name); if (array_p (v) == 0) @@ -2151,10 +2241,10 @@ coproc_unsetvars (cp) namevar = xmalloc (l + 16); sprintf (namevar, "%s_PID", cp->c_name); - unbind_variable (namevar); + unbind_variable_noref (namevar); #if defined (ARRAY_VARS) - unbind_variable (cp->c_name); + check_unbind_variable (cp->c_name); #else sprintf (namevar, "%s_READ", cp->c_name); unbind_variable (namevar); @@ -2180,7 +2270,7 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close) /* XXX -- can be removed after changes to handle multiple coprocs */ #if !MULTIPLE_COPROCS if (sh_coproc.c_pid != NO_PID) - internal_warning ("execute_coproc: coproc [%d:%s] still exists", sh_coproc.c_pid, sh_coproc.c_name); + internal_warning (_("execute_coproc: coproc [%d:%s] still exists"), sh_coproc.c_pid, sh_coproc.c_name); coproc_init (&sh_coproc); #endif @@ -2411,7 +2501,7 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close) lstdin = wait_for (lastpid); } else - lstdin = wait_for_single_pid (lastpid); /* checks bgpids list */ + lstdin = wait_for_single_pid (lastpid, 0); /* checks bgpids list */ #else lstdin = wait_for (lastpid); #endif @@ -2512,9 +2602,15 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) invert = (command->flags & CMD_INVERT_RETURN) != 0; ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0; - line_number_for_err_trap = line_number; + line_number_for_err_trap = line_number; /* XXX - save value? */ exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close); + if (asynchronous) + { + exec_result = EXECUTION_SUCCESS; + invert = 0; + } + if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS) { last_command_exit_value = exec_result; @@ -2563,10 +2659,11 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) ((command->value.Connection->connector == OR_OR) && (exec_result != EXECUTION_SUCCESS))) { - if (ignore_return && command->value.Connection->second) - command->value.Connection->second->flags |= CMD_IGNORE_RETURN; + second = command->value.Connection->second; + if (ignore_return && second) + second->flags |= CMD_IGNORE_RETURN; - exec_result = execute_command (command->value.Connection->second); + exec_result = execute_command (second); } executing_list--; break; @@ -2580,10 +2677,13 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close) return exec_result; } +/* The test used to be only for interactive_shell, but we don't want to report + job status when the shell is not interactive or when job control isn't + enabled. */ #define REAP() \ do \ { \ - if (!interactive_shell) \ + if (job_control == 0 || interactive_shell == 0) \ reap_dead_jobs (); \ } \ while (0) @@ -2665,17 +2765,24 @@ execute_for_command (for_command) this_command_name = (char *)NULL; /* XXX - special ksh93 for command index variable handling */ - v = find_variable_last_nameref (identifier); + v = find_variable_last_nameref (identifier, 1); if (v && nameref_p (v)) - { - v = bind_variable_value (v, list->word->word, 0); - } + { + if (valid_nameref_value (list->word->word, 1) == 0) + { + sh_invalidid (list->word->word); + v = 0; + } + else + v = bind_variable_value (v, list->word->word, 0); + } else - v = bind_variable (identifier, list->word->word, 0); - if (readonly_p (v) || noassign_p (v)) + v = bind_variable (identifier, list->word->word, 0); + + if (v == 0 || readonly_p (v) || noassign_p (v)) { line_number = save_line_number; - if (readonly_p (v) && interactive_shell == 0 && posixly_correct) + if (v && readonly_p (v) && interactive_shell == 0 && posixly_correct) { last_command_exit_value = EXECUTION_FAILURE; jump_to_top_level (FORCE_EOF); @@ -2688,6 +2795,10 @@ execute_for_command (for_command) return (EXECUTION_FAILURE); } } + + if (ifsname (identifier)) + setifs (v); + retval = execute_command (for_command->action); REAP (); QUIT; @@ -2817,7 +2928,11 @@ execute_arith_for_command (arith_for_command) and the DEBUG trap. */ line_number = arith_lineno = arith_for_command->line; if (variable_context && interactive_shell) - line_number -= function_line_number; + { + line_number -= function_line_number; + if (line_number < 0) + line_number = 0; + } /* Evaluate the initialization expression. */ expresult = eval_arith_for_expr (arith_for_command->init, &expok); @@ -3061,6 +3176,8 @@ select_query (list, list_len, prompt, print_menu) return ((char *)NULL); } repl_string = get_string_value ("REPLY"); + if (repl_string == 0) + return ((char *)NULL); if (*repl_string == 0) { print_menu = 1; @@ -3163,9 +3280,9 @@ execute_select_command (select_command) } v = bind_variable (identifier, selection, 0); - if (readonly_p (v) || noassign_p (v)) + if (v == 0 || readonly_p (v) || noassign_p (v)) { - if (readonly_p (v) && interactive_shell == 0 && posixly_correct) + if (v && readonly_p (v) && interactive_shell == 0 && posixly_correct) { last_command_exit_value = EXECUTION_FAILURE; jump_to_top_level (FORCE_EOF); @@ -3267,7 +3384,7 @@ execute_case_command (case_command) ignore_return = case_command->flags & CMD_IGNORE_RETURN; begin_unwind_frame ("case"); - add_unwind_protect ((Function *)xfree, word); + add_unwind_protect (xfree, word); #define EXIT_CASE() goto exit_case_command @@ -3369,17 +3486,22 @@ execute_while_or_until (while_command, type) loop. The job control code will set `breaking' to loop_level when a job in a loop is stopped with SIGTSTP. If the stopped job is in the loop test, `breaking' will not be reset unless we do - this, and the shell will cease to execute commands. */ + this, and the shell will cease to execute commands. The same holds + true for `continue'. */ if (type == CMD_WHILE && return_value != EXECUTION_SUCCESS) { if (breaking) breaking--; + if (continuing) + continuing--; break; } if (type == CMD_UNTIL && return_value == EXECUTION_SUCCESS) { if (breaking) breaking--; + if (continuing) + continuing--; break; } @@ -3456,7 +3578,11 @@ execute_arith_command (arith_command) line_number = arith_command->line; /* If we're in a function, update the line number information. */ if (variable_context && interactive_shell) - line_number -= function_line_number; + { + line_number -= function_line_number; + if (line_number < 0) + line_number = 0; + } command_string_index = 0; print_arith_command (arith_command->exp); @@ -3654,7 +3780,11 @@ execute_cond_command (cond_command) line_number = cond_command->line; /* If we're in a function, update the line number information. */ if (variable_context && interactive_shell) - line_number -= function_line_number; + { + line_number -= function_line_number; + if (line_number < 0) + line_number = 0; + } command_string_index = 0; print_cond_command (cond_command); @@ -3696,7 +3826,8 @@ bind_lastarg (arg) if (arg == 0) arg = ""; var = bind_variable ("_", arg, 0); - VUNSETATTR (var, att_exported); + if (var) + VUNSETATTR (var, att_exported); } /* Execute a null command. Fork a subshell if the command uses pipes or is @@ -3793,19 +3924,20 @@ fix_assignment_words (words) for (wcmd = words; wcmd; wcmd = wcmd->next) if ((wcmd->word->flags & W_ASSIGNMENT) == 0) break; + /* Posix (post-2008) says that `command' doesn't change whether + or not the builtin it shadows is a `declaration command', even + though it removes other special builtin properties. In Posix + mode, we skip over one or more instances of `command' and + deal with the next word as the assignment builtin. */ + while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command")) + wcmd = wcmd->next; for (w = wcmd; w; w = w->next) if (w->word->flags & W_ASSIGNMENT) { + /* Lazy builtin lookup, only do it if we find an assignment */ if (b == 0) { - /* Posix (post-2008) says that `command' doesn't change whether - or not the builtin it shadows is a `declaration command', even - though it removes other special builtin properties. In Posix - mode, we skip over one or more instances of `command' and - deal with the next word as the assignment builtin. */ - while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command")) - wcmd = wcmd->next; b = builtin_address_internal (wcmd->word->word, 0); if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0) return; @@ -3821,21 +3953,23 @@ fix_assignment_words (words) #endif if (global) w->word->flags |= W_ASSNGLOBAL; - if (integer) - w->word->flags |= W_ASSIGNINT; + + /* If we have an assignment builtin that does not create local variables, + make sure we create global variables even if we internally call + `declare' */ + if (b && ((b->flags & (ASSIGNMENT_BUILTIN|LOCALVAR_BUILTIN)) == ASSIGNMENT_BUILTIN)) + w->word->flags |= W_ASSNGLOBAL; } #if defined (ARRAY_VARS) /* Note that we saw an associative array option to a builtin that takes assignment statements. This is a bit of a kludge. */ - else if (w->word->word[0] == '-' && (strchr (w->word->word+1, 'A') || strchr (w->word->word+1, 'a') || strchr (w->word->word+1, 'g'))) + else if (w->word->word[0] == '-' && (strpbrk (w->word->word+1, "Aag") != 0)) #else else if (w->word->word[0] == '-' && strchr (w->word->word+1, 'g')) #endif { if (b == 0) { - while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command")) - wcmd = wcmd->next; b = builtin_address_internal (wcmd->word->word, 0); if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0) return; @@ -3848,8 +3982,6 @@ fix_assignment_words (words) array = 1; if ((wcmd->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'g')) global = 1; - if ((wcmd->word->flags & W_ASSNBLTIN) && strchr (w->word->word+1, 'i')) - integer = 1; } } @@ -3863,7 +3995,7 @@ is_dirname (pathname) int ret; temp = search_for_command (pathname, 0); - ret = (temp ? file_isdir (temp) : file_isdir (pathname)); + ret = temp ? file_isdir (temp) : file_isdir (pathname); free (temp); return ret; } @@ -3893,7 +4025,11 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) /* If we're in a function, update the line number information. */ if (variable_context && interactive_shell && sourcelevel == 0) - line_number -= function_line_number; + { + line_number -= function_line_number; + if (line_number < 0) + line_number = 0; + } /* Remember what this command line looks like at invocation. */ command_string_index = 0; @@ -3954,7 +4090,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) already_forked = 1; simple_command->flags |= CMD_NO_FORK; - subshell_environment = SUBSHELL_FORK; + subshell_environment = SUBSHELL_FORK; /* XXX */ if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) subshell_environment |= SUBSHELL_PIPE; if (async) @@ -3966,6 +4102,10 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) if (fds_to_close) close_fd_bitmap (fds_to_close); + /* If we fork because of an input pipe, note input pipe for later to + inhibit async commands from redirecting stdin from /dev/null */ + stdin_redir |= pipe_in != NO_PIPE; + do_piping (pipe_in, pipe_out); pipe_in = pipe_out = NO_PIPE; #if defined (COPROCESS_SUPPORT) @@ -3975,6 +4115,9 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) last_asynchronous_pid = old_last_async_pid; CHECK_SIGTERM; + + if (async) + subshell_level++; /* not for pipes yet */ } else { @@ -3996,6 +4139,8 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) } } + QUIT; /* XXX */ + /* If we are re-running this as the result of executing the `command' builtin, do not expand the command words a second time. */ if ((simple_command->flags & CMD_INHIBIT_EXPANSION) == 0) @@ -4023,7 +4168,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) pipe_in, pipe_out, already_forked ? 0 : async); if (already_forked) - exit (result); + sh_exit (result); else { bind_lastarg ((char *)NULL); @@ -4166,7 +4311,8 @@ run_builtin: setup_async_signals (); } - subshell_level++; + if (async == 0) + subshell_level++; execute_subshell_builtin_or_function (words, simple_command->redirects, builtin, func, pipe_in, pipe_out, async, fds_to_close, @@ -4220,8 +4366,10 @@ run_builtin: if (autocd && interactive && words->word && is_dirname (words->word->word)) { + words = make_word_list (make_word ("--"), words); words = make_word_list (make_word ("cd"), words); xtrace_print_word_list (words, 0); + func = find_function ("cd"); goto run_builtin; } @@ -4229,10 +4377,12 @@ run_builtin: command_line = savestring (the_printed_command_except_trap ? the_printed_command_except_trap : ""); #if defined (PROCESS_SUBSTITUTION) - if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0) + /* The old code did not test already_forked and only did this if + subshell_environment&SUBSHELL_COMSUB != 0 (comsubs and procsubs). Other + uses of the no-fork optimization left FIFOs in $TMPDIR */ + if (already_forked == 0 && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0) simple_command->flags &= ~CMD_NO_FORK; #endif - result = execute_disk_command (words, simple_command->redirects, command_line, pipe_in, pipe_out, async, fds_to_close, simple_command->flags); @@ -4283,13 +4433,12 @@ execute_builtin (builtin, words, flags, subshell) WORD_LIST *words; int flags, subshell; { - int old_e_flag, result, eval_unwind; + int result, eval_unwind, ignexit_flag, old_e_flag; int isbltinenv; char *error_trap; error_trap = 0; - old_e_flag = exit_immediately_on_error; - + /* The eval builtin calls parse_and_execute, which does not know about the setting of flags, and always calls the execution functions with flags that will exit the shell on an error if -e is set. If the @@ -4312,6 +4461,7 @@ execute_builtin (builtin, words, flags, subshell) restore_default_signal (ERROR_TRAP); } exit_immediately_on_error = 0; + ignexit_flag = builtin_ignoring_errexit; builtin_ignoring_errexit = 1; eval_unwind = 1; } @@ -4339,6 +4489,31 @@ execute_builtin (builtin, words, flags, subshell) } } + if (subshell == 0 && builtin == eval_builtin) + { + if (evalnest_max > 0 && evalnest >= evalnest_max) + { + internal_error (_("eval: maximum eval nesting level exceeded (%d)"), evalnest); + evalnest = 0; + jump_to_top_level (DISCARD); + } + unwind_protect_int (evalnest); + /* The test for subshell == 0 above doesn't make a difference */ + evalnest++; /* execute_subshell_builtin_or_function sets this to 0 */ + } + else if (subshell == 0 && builtin == source_builtin) + { + if (sourcenest_max > 0 && sourcenest >= sourcenest_max) + { + internal_error (_("%s: maximum source nesting level exceeded (%d)"), this_command_name, sourcenest); + sourcenest = 0; + jump_to_top_level (DISCARD); + } + unwind_protect_int (sourcenest); + /* The test for subshell == 0 above doesn't make a difference */ + sourcenest++; /* execute_subshell_builtin_or_function sets this to 0 */ + } + /* `return' does a longjmp() back to a saved environment in execute_function. If a variable assignment list preceded the command, and the shell is running in POSIX mode, we need to merge that into the shell_variables @@ -4363,8 +4538,8 @@ execute_builtin (builtin, words, flags, subshell) if (eval_unwind) { - exit_immediately_on_error = errexit_flag; - builtin_ignoring_errexit = 0; + builtin_ignoring_errexit = ignexit_flag; + exit_immediately_on_error = builtin_ignoring_errexit ? 0 : errexit_flag; if (error_trap) { set_error_trap (error_trap); @@ -4376,6 +4551,41 @@ execute_builtin (builtin, words, flags, subshell) return (result); } +static void +maybe_restore_getopt_state (gs) + sh_getopt_state_t *gs; +{ + SHELL_VAR *v; + + /* If we have a local copy of OPTIND and it's at the right (current) + context, then we restore getopt's internal state. If not, we just + let it go. We know there is a local OPTIND if gs->gs_flags & 1. + This is set below in execute_function() before the context is run. */ + if (gs->gs_flags & 1) + sh_getopt_restore_istate (gs); + else + free (gs); +} + +#if defined (ARRAY_VARS) +void +restore_funcarray_state (fa) + struct func_array_state *fa; +{ + SHELL_VAR *nfv; + ARRAY *funcname_a; + + array_pop (fa->source_a); + array_pop (fa->lineno_a); + + GET_ARRAY_FROM_VAR ("FUNCNAME", nfv, funcname_a); + if (nfv == fa->funcname_v) + array_pop (funcname_a); + + free (fa); +} +#endif + static int execute_function (var, words, flags, fds_to_close, async, subshell) SHELL_VAR *var; @@ -4388,13 +4598,16 @@ execute_function (var, words, flags, fds_to_close, async, subshell) COMMAND *tc, *fc, *save_current; char *debug_trap, *error_trap, *return_trap; #if defined (ARRAY_VARS) - SHELL_VAR *funcname_v, *nfv, *bash_source_v, *bash_lineno_v; + SHELL_VAR *funcname_v, *bash_source_v, *bash_lineno_v; ARRAY *funcname_a; volatile ARRAY *bash_source_a; volatile ARRAY *bash_lineno_a; + struct func_array_state *fa; #endif FUNCTION_DEF *shell_fn; char *sfile, *t; + sh_getopt_state_t *gs; + SHELL_VAR *gv; USE_VAR(fc); @@ -4415,18 +4628,25 @@ execute_function (var, words, flags, fds_to_close, async, subshell) if (tc && (flags & CMD_IGNORE_RETURN)) tc->flags |= CMD_IGNORE_RETURN; + gs = sh_getopt_save_istate (); if (subshell == 0) { begin_unwind_frame ("function_calling"); push_context (var->name, subshell, temporary_env); + /* This has to be before the pop_context(), because the unwinding of + local variables may cause the restore of a local declaration of + OPTIND to force a getopts state reset. */ + add_unwind_protect (maybe_restore_getopt_state, gs); add_unwind_protect (pop_context, (char *)NULL); unwind_protect_int (line_number); + unwind_protect_int (line_number_for_err_trap); + unwind_protect_int (function_line_number); unwind_protect_int (return_catch_flag); unwind_protect_jmp_buf (return_catch); add_unwind_protect (dispose_command, (char *)tc); unwind_protect_pointer (this_shell_function); - unwind_protect_int (loop_level); unwind_protect_int (funcnest); + unwind_protect_int (loop_level); } else push_context (var->name, subshell, temporary_env); /* don't unwind-protect for subshells */ @@ -4453,7 +4673,7 @@ execute_function (var, words, flags, fds_to_close, async, subshell) { debug_trap = savestring (debug_trap); add_unwind_protect (xfree, debug_trap); - add_unwind_protect (set_debug_trap, debug_trap); + add_unwind_protect (maybe_set_debug_trap, debug_trap); } restore_default_signal (DEBUG_TRAP); } @@ -4465,7 +4685,7 @@ execute_function (var, words, flags, fds_to_close, async, subshell) { error_trap = savestring (error_trap); add_unwind_protect (xfree, error_trap); - add_unwind_protect (set_error_trap, error_trap); + add_unwind_protect (maybe_set_error_trap, error_trap); } restore_default_signal (ERROR_TRAP); } @@ -4482,7 +4702,7 @@ execute_function (var, words, flags, fds_to_close, async, subshell) { return_trap = savestring (return_trap); add_unwind_protect (xfree, return_trap); - add_unwind_protect (set_return_trap, return_trap); + add_unwind_protect (maybe_set_return_trap, return_trap); } restore_default_signal (RETURN_TRAP); } @@ -4500,6 +4720,18 @@ execute_function (var, words, flags, fds_to_close, async, subshell) free (t); #endif +#if defined (ARRAY_VARS) + fa = (struct func_array_state *)xmalloc (sizeof (struct func_array_state)); + fa->source_a = (ARRAY *)bash_source_a; + fa->source_v = bash_source_v; + fa->lineno_a = (ARRAY *)bash_lineno_a; + fa->lineno_v = bash_lineno_v; + fa->funcname_a = (ARRAY *)funcname_a; + fa->funcname_v = funcname_v; + if (subshell == 0) + add_unwind_protect (restore_funcarray_state, fa); +#endif + /* The temporary environment for a function is supposed to apply to all commands executed within the function body. */ @@ -4507,7 +4739,11 @@ execute_function (var, words, flags, fds_to_close, async, subshell) /* Update BASH_ARGV and BASH_ARGC */ if (debugging_mode) - push_args (words->next); + { + push_args (words->next); + if (subshell == 0) + add_unwind_protect (pop_args, 0); + } /* Number of the line on which the function body starts. */ line_number = function_line_number = tc->line; @@ -4517,8 +4753,13 @@ execute_function (var, words, flags, fds_to_close, async, subshell) stop_pipeline (async, (COMMAND *)NULL); #endif + if (shell_compatibility_level > 43) + loop_level = 0; + fc = tc; + from_return_trap = 0; + return_catch_flag++; return_val = setjmp_nosigs (return_catch); @@ -4527,7 +4768,8 @@ execute_function (var, words, flags, fds_to_close, async, subshell) result = return_catch_value; /* Run the RETURN trap in the function's context. */ save_current = currently_executing_command; - run_return_trap (); + if (from_return_trap == 0) + run_return_trap (); currently_executing_command = save_current; } else @@ -4561,26 +4803,23 @@ execute_function (var, words, flags, fds_to_close, async, subshell) showing_function_line = 0; } - /* Restore BASH_ARGC and BASH_ARGV */ - if (debugging_mode) - pop_args (); + /* If we have a local copy of OPTIND, note it in the saved getopts state. */ + gv = find_variable ("OPTIND"); + if (gv && gv->context == variable_context) + gs->gs_flags |= 1; if (subshell == 0) run_unwind_frame ("function_calling"); - #if defined (ARRAY_VARS) - /* These two variables cannot be unset, and cannot be affected by the - function. */ - array_pop ((ARRAY *)bash_source_a); - array_pop ((ARRAY *)bash_lineno_a); - - /* FUNCNAME can be unset, and so can potentially be changed by the - function. */ - GET_ARRAY_FROM_VAR ("FUNCNAME", nfv, funcname_a); - if (nfv == funcname_v) - array_pop (funcname_a); + else + { + restore_funcarray_state (fa); + /* Restore BASH_ARGC and BASH_ARGV */ + if (debugging_mode) + pop_args (); + } #endif - + if (variable_context == 0 || this_shell_function == 0) { make_funcname_visible (0); @@ -4588,7 +4827,7 @@ execute_function (var, words, flags, fds_to_close, async, subshell) unlink_fifo_list (); #endif } - + return (result); } @@ -4642,6 +4881,10 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, /* A subshell is neither a login shell nor interactive. */ login_shell = interactive = 0; + if (builtin == eval_builtin) + evalnest = 0; + else if (builtin == source_builtin) + sourcenest = 0; if (async) subshell_environment |= SUBSHELL_ASYNC; @@ -4698,14 +4941,14 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var, fflush (stdout); if (r == EX_USAGE) r = EX_BADUSAGE; - exit (r); + sh_exit (r); } } else { r = execute_function (var, words, flags, fds_to_close, async, 1); fflush (stdout); - exit (r); + sh_exit (r); } } @@ -4734,7 +4977,6 @@ execute_builtin_or_function (words, builtin, var, redirects, char *ofifo_list; #endif - #if defined (PROCESS_SUBSTITUTION) ofifo = num_fifos (); ofifo_list = copy_fifo_list (&osize); @@ -4765,7 +5007,7 @@ execute_builtin_or_function (words, builtin, var, redirects, if (saved_undo_list) { - begin_unwind_frame ("saved redirects"); + begin_unwind_frame ("saved-redirects"); add_unwind_protect (cleanup_redirects, (char *)saved_undo_list); } @@ -4801,13 +5043,13 @@ execute_builtin_or_function (words, builtin, var, redirects, redirection_undo_list = exec_redirection_undo_list; saved_undo_list = exec_redirection_undo_list = (REDIRECT *)NULL; if (discard) - discard_unwind_frame ("saved redirects"); + discard_unwind_frame ("saved-redirects"); } if (saved_undo_list) { redirection_undo_list = saved_undo_list; - discard_unwind_frame ("saved redirects"); + discard_unwind_frame ("saved-redirects"); } if (redirection_undo_list) @@ -4885,12 +5127,13 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, int cmdflags; { char *pathname, *command, **args; - int nofork, result; + int nofork, stdpath, result; pid_t pid; SHELL_VAR *hookf; WORD_LIST *wl; - nofork = (cmdflags & CMD_NO_FORK); /* Don't fork, just exec, if no pipes */ + stdpath = (cmdflags & CMD_STDPATH); /* use command -p path */ + nofork = (cmdflags & CMD_NO_FORK); /* Don't fork, just exec, if no pipes */ pathname = words->word->word; result = EXECUTION_SUCCESS; @@ -4911,7 +5154,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, } #endif /* RESTRICTED_SHELL */ - command = search_for_command (pathname, 1); + command = search_for_command (pathname, CMDSRCH_HASH|(stdpath ? CMDSRCH_STDPATH : 0)); if (command) { @@ -4964,7 +5207,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, if (async) interactive = 0; - subshell_environment = SUBSHELL_FORK; + subshell_environment |= SUBSHELL_FORK; /* XXX - was just = */ if (redirects && (do_redirections (redirects, RX_ACTIVE) != 0)) { @@ -4985,8 +5228,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, if (hookf == 0) { /* Make sure filenames are displayed using printable characters */ - if (ansic_shouldquote (pathname)) - pathname = ansic_quote (pathname, 0, NULL); + pathname = printable_filename (pathname, 0); internal_error (_("%s: command not found"), pathname); exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */ } @@ -5142,9 +5384,10 @@ initialize_subshell () history_lines_this_session = 0; #endif -#if defined (JOB_CONTROL) /* Forget about the way job control was working. We are in a subshell. */ without_job_control (); + +#if defined (JOB_CONTROL) set_sigchld_handler (); init_job_stats (); #endif /* JOB_CONTROL */ @@ -5167,7 +5410,7 @@ initialize_subshell () parse_and_execute_level = 0; /* nothing left to restore it */ /* We're no longer inside a shell function. */ - variable_context = return_catch_flag = funcnest = 0; + variable_context = return_catch_flag = funcnest = evalnest = sourcenest = 0; executing_list = 0; /* XXX */ @@ -5183,13 +5426,15 @@ initialize_subshell () # define SETOSTYPE(x) #endif +#define HASH_BANG_BUFSIZ 128 + #define READ_SAMPLE_BUF(file, buf, len) \ do \ { \ fd = open(file, O_RDONLY); \ if (fd >= 0) \ { \ - len = read (fd, buf, 80); \ + len = read (fd, buf, HASH_BANG_BUFSIZ); \ close (fd); \ } \ else \ @@ -5205,7 +5450,7 @@ shell_execve (command, args, env) char **args, **env; { int larray, i, fd; - char sample[80]; + char sample[HASH_BANG_BUFSIZ]; int sample_len; SETOSTYPE (0); /* Some systems use for USG/POSIX semantics */ @@ -5218,6 +5463,8 @@ shell_execve (command, args, env) Maybe it is something we can hack ourselves. */ if (i != ENOEXEC) { + /* make sure this is set correctly for file_error/report_error */ + last_command_exit_value = (i == ENOENT) ? EX_NOTFOUND : EX_NOEXEC; /* XXX Posix.2 says that exit status is 126 */ if (file_isdir (command)) #if defined (EISDIR) internal_error (_("%s: %s"), command, strerror (EISDIR)); @@ -5241,7 +5488,8 @@ shell_execve (command, args, env) run it for some reason. See why. */ #if defined (HAVE_HASH_BANG_EXEC) READ_SAMPLE_BUF (command, sample, sample_len); - sample[sample_len - 1] = '\0'; + if (sample_len > 0) + sample[sample_len - 1] = '\0'; if (sample_len > 2 && sample[0] == '#' && sample[1] == '!') { char *interp; @@ -5265,7 +5513,7 @@ shell_execve (command, args, env) errno = i; file_error (command); } - return ((i == ENOENT) ? EX_NOTFOUND : EX_NOEXEC); /* XXX Posix.2 says that exit status is 126 */ + return (last_command_exit_value); } /* This file is executable. @@ -5295,6 +5543,7 @@ shell_execve (command, args, env) if (check_binary_file (sample, sample_len)) { internal_error (_("%s: cannot execute binary file: %s"), command, strerror (i)); + errno = i; return (EX_BINARY_FILE); } } @@ -5302,6 +5551,7 @@ shell_execve (command, args, env) /* We have committed to attempting to execute the contents of this file as shell commands. */ + reset_parser (); initialize_subshell (); set_sigint_handler (); @@ -5342,7 +5592,11 @@ shell_execve (command, args, env) unbind_args (); /* remove the positional parameters */ - longjmp (subshell_top_level, 1); +#if defined (PROCESS_SUBSTITUTION) + clear_fifo_list (); /* pipe fds are what they are now */ +#endif + + sh_longjmp (subshell_top_level, 1); /*NOTREACHED*/ } @@ -5368,7 +5622,7 @@ execute_intern_function (name, funcdef) { internal_error (_("`%s': is a special builtin"), name->word); last_command_exit_value = EX_BADUSAGE; - jump_to_top_level (ERREXIT); + jump_to_top_level (interactive_shell ? DISCARD : ERREXIT); } var = find_function (name->word); diff --git a/execute_cmd.h b/execute_cmd.h index 67ae93a..62bec82 100644 --- a/execute_cmd.h +++ b/execute_cmd.h @@ -1,6 +1,6 @@ /* execute_cmd.h - functions from execute_cmd.c. */ -/* Copyright (C) 1993-2009 Free Software Foundation, Inc. +/* Copyright (C) 1993-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -23,6 +23,18 @@ #include "stdc.h" +#if defined (ARRAY_VARS) +struct func_array_state + { + ARRAY *funcname_a; + SHELL_VAR *funcname_v; + ARRAY *source_a; + SHELL_VAR *source_v; + ARRAY *lineno_a; + SHELL_VAR *lineno_v; + }; +#endif + extern struct fd_bitmap *new_fd_bitmap __P((int)); extern void dispose_fd_bitmap __P((struct fd_bitmap *)); extern void close_fd_bitmap __P((struct fd_bitmap *)); @@ -65,4 +77,8 @@ extern void coproc_unsetvars __P((struct coproc *)); extern void close_all_files __P((void)); #endif +#if defined (ARRAY_VARS) +extern void restore_funcarray_state __P((struct func_array_state *)); +#endif + #endif /* _EXECUTE_CMD_H_ */ diff --git a/expr.c b/expr.c index 1462c10..1ddb693 100644 --- a/expr.c +++ b/expr.c @@ -1,6 +1,6 @@ /* expr.c -- arithmetic expression evaluation. */ -/* Copyright (C) 1990-2013 Free Software Foundation, Inc. +/* Copyright (C) 1990-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -316,7 +316,7 @@ expr_bind_variable (lhs, rhs) v = bind_int_variable (lhs, rhs); if (v && (readonly_p (v) || noassign_p (v))) - longjmp (evalbuf, 1); /* variable assignment error */ + sh_longjmp (evalbuf, 1); /* variable assignment error */ stupidly_hack_special_variables (lhs); } @@ -1123,6 +1123,9 @@ expr_streval (tok, e, lvalue) FREE (value); /* array_variable_name returns new memory */ #endif + if (no_longjmp_on_fatal_error && interactive_shell) + sh_longjmp (evalbuf, 1); + if (interactive_shell) { expr_unwind (); @@ -1416,7 +1419,7 @@ evalerror (msg) internal_error (_("%s%s%s: %s (error token is \"%s\")"), name ? name : "", name ? ": " : "", t, msg, (lasttp && *lasttp) ? lasttp : ""); - longjmp (evalbuf, 1); + sh_longjmp (evalbuf, 1); } /* Convert a string to an intmax_t integer, with an arbitrary base. diff --git a/externs.h b/externs.h index 8db43f2..fa0603d 100644 --- a/externs.h +++ b/externs.h @@ -103,6 +103,7 @@ extern char **brace_expand __P((char *)); /* Miscellaneous functions from parse.y */ extern int yyparse __P((void)); extern int return_EOF __P((void)); +extern void push_token __P((int)); extern char *xparse_dolparen __P((char *, char *, int *, int)); extern void reset_parser __P((void)); extern WORD_LIST *parse_string_to_word_list __P((char *, int, const char *)); @@ -115,6 +116,8 @@ extern int parser_expanding_alias __P((void)); extern void parser_save_alias __P((void)); extern void parser_restore_alias __P((void)); +extern void clear_shell_input_line __P((void)); + extern char *decode_prompt_string __P((char *)); extern int get_current_prompt_level __P((void)); @@ -150,7 +153,7 @@ extern int find_index_in_alist __P((char *, STRING_INT_ALIST *, int)); extern char *substring __P((const char *, int, int)); extern char *strsub __P((char *, char *, char *, int)); -extern char *strcreplace __P((char *, int, char *, int)); +extern char *strcreplace __P((char *, int, const char *, int)); extern void strip_leading __P((char *)); extern void strip_trailing __P((char *, int, int)); extern void xbcopy __P((char *, char *, int)); @@ -302,7 +305,7 @@ extern int sh_setlinebuf __P((FILE *)); #endif /* declarations for functions defined in lib/sh/shaccess.c */ -extern int sh_eaccess __P((char *, int)); +extern int sh_eaccess __P((const char *, int)); /* declarations for functions defined in lib/sh/shmatch.c */ extern int sh_regmatch __P((const char *, const char *, int)); @@ -323,8 +326,9 @@ extern char *sh_mkdoublequoted __P((const char *, int, int)); extern char *sh_un_double_quote __P((char *)); extern char *sh_backslash_quote __P((char *, const char *, int)); extern char *sh_backslash_quote_for_double_quotes __P((char *)); -extern int sh_contains_shell_metas __P((char *)); -extern int sh_contains_quotes __P((char *)); +extern char *sh_quote_reusable __P((char *, int)); +extern int sh_contains_shell_metas __P((const char *)); +extern int sh_contains_quotes __P((const char *)); /* declarations for functions defined in lib/sh/spell.c */ extern int spname __P((char *, char *)); @@ -487,7 +491,7 @@ extern void get_new_window_size __P((int, int *, int *)); extern int zcatfd __P((int, int, char *)); /* declarations for functions defined in lib/sh/zgetline.c */ -extern ssize_t zgetline __P((int, char **, size_t *, int)); +extern ssize_t zgetline __P((int, char **, size_t *, int, int)); /* declarations for functions defined in lib/sh/zmapfd.c */ extern int zmapfd __P((int, char **, char *)); @@ -506,11 +510,11 @@ extern void zsyncfd __P((int)); extern int zwrite __P((int, char *, size_t)); /* declarations for functions defined in lib/glob/gmisc.c */ -extern int match_pattern_char __P((char *, char *)); +extern int match_pattern_char __P((char *, char *, int)); extern int umatchlen __P((char *, size_t)); #if defined (HANDLE_MULTIBYTE) -extern int match_pattern_wchar __P((wchar_t *, wchar_t *)); +extern int match_pattern_wchar __P((wchar_t *, wchar_t *, int)); extern int wmatchlen __P((wchar_t *, size_t)); #endif diff --git a/findcmd.c b/findcmd.c index 9f3d954..7ff349c 100644 --- a/findcmd.c +++ b/findcmd.c @@ -1,6 +1,6 @@ /* findcmd.c -- Functions to search for commands by name. */ -/* Copyright (C) 1997-2012 Free Software Foundation, Inc. +/* Copyright (C) 1997-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -44,6 +44,8 @@ #include "hashcmd.h" #include "findcmd.h" /* matching prototypes and declarations */ +#include + #if !defined (errno) extern int errno; #endif @@ -69,7 +71,7 @@ static char *file_to_lose_on; /* Non-zero if we should stat every command found in the hash table to make sure it still exists. */ -int check_hashed_filenames; +int check_hashed_filenames = CHECKHASH_DEFAULT; /* DOT_FOUND_IN_SEARCH becomes non-zero when find_user_command () encounters a `.' as the directory pathname while scanning the @@ -77,6 +79,36 @@ int check_hashed_filenames; containing the file of interest. */ int dot_found_in_search = 0; +/* Set up EXECIGNORE; a blacklist of patterns that executable files should not + match. */ +static struct ignorevar execignore = +{ + "EXECIGNORE", + NULL, + 0, + NULL, + NULL +}; + +void +setup_exec_ignore (varname) + char *varname; +{ + setup_ignore_patterns (&execignore); +} + +static int +exec_name_should_ignore (name) + const char *name; +{ + struct ign *p; + + for (p = execignore.ignores; p && p->val; p++) + if (strmatch (p->val, (char *)name, FNMATCH_EXTFLAG|FNM_CASEFOLD) != FNM_NOMATCH) + return 1; + return 0; +} + /* Return some flags based on information about this file. The EXISTS bit is non-zero if the file is found. The EXECABLE bit is non-zero the file is executble. @@ -104,7 +136,7 @@ file_status (name) file access mechanisms into account. eaccess uses the effective user and group IDs, not the real ones. We could use sh_eaccess, but we don't want any special treatment for /dev/fd. */ - if (eaccess (name, X_OK) == 0) + if (exec_name_should_ignore (name) == 0 && eaccess (name, X_OK) == 0) r |= FS_EXECABLE; if (eaccess (name, R_OK) == 0) r |= FS_READABLE; @@ -114,7 +146,7 @@ file_status (name) /* We have to use access(2) to determine access because AFS does not support Unix file system semantics. This may produce wrong answers for non-AFS files when ruid != euid. I hate AFS. */ - if (access (name, X_OK) == 0) + if (exec_name_should_ignore (name) == 0 && access (name, X_OK) == 0) r |= FS_EXECABLE; if (access (name, R_OK) == 0) r |= FS_READABLE; @@ -131,7 +163,7 @@ file_status (name) if (current_user.euid == (uid_t)0) { r |= FS_READABLE; - if (finfo.st_mode & S_IXUGO) + if (exec_name_should_ignore (name) == 0 && (finfo.st_mode & S_IXUGO)) r |= FS_EXECABLE; return r; } @@ -139,7 +171,7 @@ file_status (name) /* If we are the owner of the file, the owner bits apply. */ if (current_user.euid == finfo.st_uid) { - if (finfo.st_mode & S_IXUSR) + if (exec_name_should_ignore (name) == 0 && (finfo.st_mode & S_IXUSR)) r |= FS_EXECABLE; if (finfo.st_mode & S_IRUSR) r |= FS_READABLE; @@ -148,7 +180,7 @@ file_status (name) /* If we are in the owning group, the group permissions apply. */ else if (group_member (finfo.st_gid)) { - if (finfo.st_mode & S_IXGRP) + if (exec_name_should_ignore (name) == 0 && (finfo.st_mode & S_IXGRP)) r |= FS_EXECABLE; if (finfo.st_mode & S_IRGRP) r |= FS_READABLE; @@ -157,7 +189,7 @@ file_status (name) /* Else we check whether `others' have permission to execute the file */ else { - if (finfo.st_mode & S_IXOTH) + if (exec_name_should_ignore (name) == 0 && finfo.st_mode & S_IXOTH) r |= FS_EXECABLE; if (finfo.st_mode & S_IROTH) r |= FS_READABLE; @@ -178,7 +210,7 @@ executable_file (file) int s; s = file_status (file); -#if defined EISDIR +#if defined (EISDIR) if (s & FS_DIRECTORY) errno = EISDIR; /* let's see if we can improve error messages */ #endif @@ -297,15 +329,17 @@ get_next_path_element (path_list, path_index_pointer) /* Look for PATHNAME in $PATH. Returns either the hashed command corresponding to PATHNAME or the first instance of PATHNAME found - in $PATH. If (FLAGS&1) is non-zero, insert the instance of PATHNAME - found in $PATH into the command hash table. Returns a newly-allocated - string. */ + in $PATH. If (FLAGS&CMDSRCH_HASH) is non-zero, insert the instance of + PATHNAME found in $PATH into the command hash table. If (FLAGS&CMDSRCH_STDPATH) + is non-zero, we are running in a `command -p' environment and should use + the Posix standard path. + Returns a newly-allocated string. */ char * search_for_command (pathname, flags) const char *pathname; int flags; { - char *hashed_file, *command; + char *hashed_file, *command, *pathlist; int temp_path, st; SHELL_VAR *path; @@ -315,13 +349,11 @@ search_for_command (pathname, flags) hash table to search for the full pathname. */ path = find_variable_tempenv ("PATH"); temp_path = path && tempvar_p (path); - if (temp_path == 0 && path) - path = (SHELL_VAR *)NULL; /* Don't waste time trying to find hashed data for a pathname that is already completely specified or if we're using a command- specific value for PATH. */ - if (path == 0 && absolute_program (pathname) == 0) + if (temp_path == 0 && absolute_program (pathname) == 0) hashed_file = phash_search (pathname); /* If a command found in the hash table no longer exists, we need to @@ -347,18 +379,34 @@ search_for_command (pathname, flags) command = savestring (pathname); else { - /* If $PATH is in the temporary environment, we've already retrieved - it, so don't bother trying again. */ - if (temp_path) - { - command = find_user_command_in_path (pathname, value_cell (path), - FS_EXEC_PREFERRED|FS_NODIRS); - } + if (flags & CMDSRCH_STDPATH) + pathlist = conf_standard_path (); + else if (temp_path || path) + pathlist = value_cell (path); else - command = find_user_command (pathname); - if (command && hashing_enabled && temp_path == 0 && (flags & 1)) - phash_insert ((char *)pathname, command, dot_found_in_search, 1); /* XXX fix const later */ + pathlist = 0; + + command = find_user_command_in_path (pathname, pathlist, FS_EXEC_PREFERRED|FS_NODIRS); + + if (command && hashing_enabled && temp_path == 0 && (flags & CMDSRCH_HASH)) + { + /* If we found the full pathname the same as the command name, the + command probably doesn't exist. Don't put it into the hash + table. */ + if (STREQ (command, pathname)) + { + st = file_status (command); + if (st & FS_EXECABLE) + phash_insert ((char *)pathname, command, dot_found_in_search, 1); + } + else + phash_insert ((char *)pathname, command, dot_found_in_search, 1); + } + + if (flags & CMDSRCH_STDPATH) + free (pathlist); } + return (command); } @@ -478,7 +526,7 @@ find_in_path_element (name, path, flags, name_len, dotinfop) int status; char *full_path, *xpath; - xpath = (*path == '~') ? bash_tilde_expand (path, 0) : path; + xpath = (posixly_correct == 0 && *path == '~') ? bash_tilde_expand (path, 0) : path; /* Remember the location of "." in the path, in all its forms (as long as they begin with a `.', e.g. `./.') */ @@ -520,7 +568,7 @@ find_in_path_element (name, path, flags, name_len, dotinfop) /* The file is not executable, but it does exist. If we prefer an executable, then remember this one if it is the first one we have found. */ - if ((flags & FS_EXEC_PREFERRED) && file_to_lose_on == 0) + if ((flags & FS_EXEC_PREFERRED) && file_to_lose_on == 0 && exec_name_should_ignore (full_path) == 0) file_to_lose_on = savestring (full_path); /* If we want only executable files, or we don't want directories and @@ -621,3 +669,14 @@ find_user_command_in_path (name, path_list, flags) return (file_to_lose_on); } + +/* External interface to find a command given a $PATH. Separate from + find_user_command_in_path to allow future customization. */ +char * +find_in_path (name, path_list, flags) + const char *name; + char *path_list; + int flags; +{ + return (find_user_command_in_path (name, path_list, flags)); +} diff --git a/findcmd.h b/findcmd.h index 52ad1d0..bc4a41a 100644 --- a/findcmd.h +++ b/findcmd.h @@ -1,6 +1,6 @@ /* findcmd.h - functions from findcmd.c. */ -/* Copyright (C) 1997-2012 Free Software Foundation, Inc. +/* Copyright (C) 1997-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -23,13 +23,20 @@ #include "stdc.h" +/* Flags for search_for_command */ +#define CMDSRCH_HASH 0x01 +#define CMDSRCH_STDPATH 0x02 +#define CMDSRCH_TEMPENV 0x04 + extern int file_status __P((const char *)); extern int executable_file __P((const char *)); extern int is_directory __P((const char *)); extern int executable_or_directory __P((const char *)); extern char *find_user_command __P((const char *)); +extern char *find_in_path __P((const char *, char *, int)); extern char *find_path_file __P((const char *)); extern char *search_for_command __P((const char *, int)); extern char *user_command_matches __P((const char *, int, int)); +extern void setup_exec_ignore __P((char *)); #endif /* _FINDCMD_H_ */ diff --git a/flags.c b/flags.c index eaec9aa..4b94fb0 100644 --- a/flags.c +++ b/flags.c @@ -1,7 +1,7 @@ /* flags.c -- Everything about flags except the `set' command. That is in builtins.c */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -90,6 +90,7 @@ int unbound_vars_is_error = 0; /* Non-zero means type out input lines after you read them. */ int echo_input_at_read = 0; +int verbose_flag = 0; /* Non-zero means type out the command definition after reading, but before executing. */ @@ -197,7 +198,7 @@ const struct flags_alist shell_flags[] = { #endif /* RESTRICTED_SHELL */ { 't', &just_one_command }, { 'u', &unbound_vars_is_error }, - { 'v', &echo_input_at_read }, + { 'v', &verbose_flag }, { 'x', &echo_command_at_execute }, /* New flags that control non-standard things. */ @@ -297,6 +298,9 @@ change_flag (flag, on_or_off) break; #endif + case 'v': + echo_input_at_read = verbose_flag; + break; } return (old_value); @@ -324,14 +328,45 @@ which_set_flags () return (temp); } +char * +get_current_flags () +{ + char *temp; + int i; + + temp = (char *)xmalloc (1 + NUM_SHELL_FLAGS); + for (i = 0; shell_flags[i].name; i++) + temp[i] = *(shell_flags[i].value); + temp[i] = '\0'; + return (temp); +} + +void +set_current_flags (bitmap) + const char *bitmap; +{ + int i; + + if (bitmap == 0) + return; + for (i = 0; shell_flags[i].name; i++) + *(shell_flags[i].value) = bitmap[i]; +} + void reset_shell_flags () { - mark_modified_vars = exit_immediately_on_error = disallow_filename_globbing = 0; + mark_modified_vars = disallow_filename_globbing = 0; place_keywords_in_env = read_but_dont_execute = just_one_command = 0; - noclobber = unbound_vars_is_error = echo_input_at_read = 0; + noclobber = unbound_vars_is_error = 0; echo_command_at_execute = jobs_m_flag = forced_interactive = 0; - no_symbolic_links = no_invisible_vars = privileged_mode = pipefail_opt = 0; + no_symbolic_links = no_invisible_vars = 0; + privileged_mode = pipefail_opt = 0; + + error_trace_mode = function_trace_mode = 0; + + exit_immediately_on_error = errexit_flag = 0; + echo_input_at_read = verbose_flag = 0; hashing_enabled = interactive_comments = 1; @@ -340,7 +375,11 @@ reset_shell_flags () #endif #if defined (BANG_HISTORY) +# if defined (STRICT_POSIX) + history_expansion = 0; +# else history_expansion = 1; +# endif /* STRICT_POSIX */ #endif #if defined (BRACE_EXPANSION) diff --git a/flags.h b/flags.h index 830edab..d5ed334 100644 --- a/flags.h +++ b/flags.h @@ -1,7 +1,7 @@ /* flags.h -- a list of all the flags that the shell knows about. You add a flag to this program by adding the name here, and in flags.c. */ -/* Copyright (C) 1993-2009 Free Software Foundation, Inc. +/* Copyright (C) 1993-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -44,7 +44,7 @@ extern int mark_modified_vars, errexit_flag, exit_immediately_on_error, disallow_filename_globbing, place_keywords_in_env, read_but_dont_execute, - just_one_command, unbound_vars_is_error, echo_input_at_read, + just_one_command, unbound_vars_is_error, echo_input_at_read, verbose_flag, echo_command_at_execute, no_invisible_vars, noclobber, hashing_enabled, forced_interactive, privileged_mode, jobs_m_flag, asynchronous_notification, interactive_comments, no_symbolic_links, @@ -72,6 +72,9 @@ extern int change_flag __P((int, int)); extern char *which_set_flags __P((void)); extern void reset_shell_flags __P((void)); +extern char *get_current_flags __P((void)); +extern void set_current_flags __P((const char *)); + extern void initialize_flags __P((void)); /* A macro for efficiency. */ diff --git a/general.c b/general.c index 087689e..2d327ad 100644 --- a/general.c +++ b/general.c @@ -1,6 +1,6 @@ /* general.c -- Stuff that is used by all files. */ -/* Copyright (C) 1987-2011 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -42,6 +42,10 @@ #include "test.h" #include "trap.h" +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif + #include #if !defined (errno) @@ -53,6 +57,8 @@ extern int interactive_comments; extern int check_hashed_filenames; extern int source_uses_path; extern int source_searches_cwd; +extern int posixly_correct; +extern int inherit_errexit; static char *bash_special_tilde_expansions __P((char *)); static int unquoted_tilde_word __P((const char *)); @@ -70,6 +76,7 @@ posix_initialize (on) if (on != 0) { interactive_comments = source_uses_path = expand_aliases = 1; + inherit_errexit = 1; source_searches_cwd = 0; } @@ -147,9 +154,9 @@ print_rlimtype (n, addnl) /* Return non-zero if all of the characters in STRING are digits. */ int all_digits (string) - char *string; + const char *string; { - register char *s; + register const char *s; for (s = string; *s; s++) if (DIGIT (*s) == 0) @@ -204,9 +211,9 @@ legal_number (string, result) digit. */ int legal_identifier (name) - char *name; + const char *name; { - register char *s; + register const char *s; unsigned char c; if (!name || !(c = *name) || (legal_variable_starter (c) == 0)) @@ -220,6 +227,57 @@ legal_identifier (name) return (1); } +/* Return 1 if NAME is a valid value that can be assigned to a nameref + variable. FLAGS can be 2, in which case the name is going to be used + to create a variable. Other values are currently unused, but could + be used to allow values to be stored and indirectly referenced, but + not used in assignments. */ +int +valid_nameref_value (name, flags) + const char *name; + int flags; +{ + if (name == 0 || *name == 0) + return 0; + + /* valid identifier */ +#if defined (ARRAY_VARS) + if (legal_identifier (name) || (flags != 2 && valid_array_reference (name, 0))) +#else + if (legal_identifier (name)) +#endif + return 1; + + return 0; +} + +int +check_selfref (name, value, flags) + const char *name; + char *value; + int flags; +{ + char *t; + + if (STREQ (name, value)) + return 1; + +#if defined (ARRAY_VARS) + if (valid_array_reference (value, 0)) + { + t = array_variable_name (value, (char **)NULL, (int *)NULL); + if (t && STREQ (name, t)) + { + free (t); + return 1; + } + free (t); + } +#endif + + return 0; /* not a self reference */ +} + /* Make sure that WORD is a valid shell identifier, i.e. does not contain a dollar sign, nor is quoted in any way. Nor does it consist of all digits. If CHECK_WORD is non-zero, @@ -244,15 +302,45 @@ check_identifier (word, check_word) return (1); } +/* Return 1 if STRING is a function name that the shell will import from + the environment. Currently we reject attempts to import shell functions + containing slashes, beginning with newlines or containing blanks. In + Posix mode, we require that STRING be a valid shell identifier. Not + used yet. */ +int +importable_function_name (string, len) + const char *string; + size_t len; +{ + if (absolute_program (string)) /* don't allow slash */ + return 0; + if (*string == '\n') /* can't start with a newline */ + return 0; + if (shellblank (*string) || shellblank(string[len-1])) + return 0; + return (posixly_correct ? legal_identifier (string) : 1); +} + +int +exportable_function_name (string) + const char *string; +{ + if (absolute_program (string)) + return 0; + if (mbschr (string, '=') != 0) + return 0; + return 1; +} + /* Return 1 if STRING comprises a valid alias name. The shell accepts essentially all characters except those which must be quoted to the parser (which disqualifies them from alias expansion anyway) and `/'. */ int legal_alias_name (string, flags) - char *string; + const char *string; int flags; { - register char *s; + register const char *s; for (s = string; *s; s++) if (shellbreak (*s) || shellxquote (*s) || shellexp (*s) || (*s == '/')) @@ -372,9 +460,7 @@ fd_ispipe (fd) int fd; { errno = 0; - if (lseek ((fd), 0L, SEEK_CUR) < 0) - return (errno == ESPIPE); - return 0; + return ((lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE)); } /* There is a bug in the NeXT 2.1 rlogind that causes opens @@ -411,7 +497,7 @@ check_dev_tty () corresponding to PATH1 and PATH2, respectively. */ int same_file (path1, path2, stp1, stp2) - char *path1, *path2; + const char *path1, *path2; struct stat *stp1, *stp2; { struct stat st1, st2; @@ -480,7 +566,7 @@ move_to_high_fd (fd, check_new, maxfd) int check_binary_file (sample, sample_len) - char *sample; + const char *sample; int sample_len; { register int i; @@ -541,7 +627,7 @@ sh_closepipe (pv) int file_exists (fn) - char *fn; + const char *fn; { struct stat sb; @@ -550,7 +636,7 @@ file_exists (fn) int file_isdir (fn) - char *fn; + const char *fn; { struct stat sb; @@ -559,7 +645,7 @@ file_isdir (fn) int file_iswdir (fn) - char *fn; + const char *fn; { return (file_isdir (fn) && sh_eaccess (fn, W_OK) == 0); } @@ -623,7 +709,7 @@ absolute_program (string) begin with. */ char * make_absolute (string, dot_path) - char *string, *dot_path; + const char *string, *dot_path; { char *result; @@ -777,6 +863,27 @@ trim_pathname (name, maxlen) return name; } +/* Return a printable representation of FN without special characters. The + caller is responsible for freeing memory if this returns something other + than its argument. If FLAGS is non-zero, we are printing for portable + re-input and should single-quote filenames appropriately. */ +char * +printable_filename (fn, flags) + char *fn; + int flags; +{ + char *newf; + + if (ansic_shouldquote (fn)) + newf = ansic_quote (fn, 0, NULL); + else if (flags && sh_contains_shell_metas (fn)) + newf = sh_single_quote (fn); + else + newf = fn; + + return newf; +} + /* Given a string containing units of information separated by colons, return the next one pointed to by (P_INDEX), or NULL if there are no more. Advance (P_INDEX) to the character after the colon. */ @@ -983,6 +1090,7 @@ bash_tilde_expand (s, assign_p) int old_immed, old_term, r; char *ret; +#if 0 old_immed = interrupt_immediately; old_term = terminate_immediately; /* We want to be able to interrupt tilde expansion. Ordinarily, we can just @@ -992,6 +1100,7 @@ bash_tilde_expand (s, assign_p) if (any_signals_trapped () < 0) interrupt_immediately = 1; terminate_immediately = 1; +#endif tilde_additional_prefixes = assign_p == 0 ? (char **)0 : (assign_p == 2 ? bash_tilde_prefixes2 : bash_tilde_prefixes); @@ -1001,8 +1110,10 @@ bash_tilde_expand (s, assign_p) r = (*s == '~') ? unquoted_tilde_word (s) : 1; ret = r ? tilde_expand (s) : savestring (s); +#if 0 interrupt_immediately = old_immed; terminate_immediately = old_term; +#endif QUIT; @@ -1175,3 +1286,38 @@ get_group_array (ngp) *ngp = ngroups; return group_iarray; } + +/* **************************************************************** */ +/* */ +/* Miscellaneous functions */ +/* */ +/* **************************************************************** */ + +/* Return a value for PATH that is guaranteed to find all of the standard + utilities. This uses Posix.2 configuration variables, if present. It + uses a value defined in config.h as a last resort. */ +char * +conf_standard_path () +{ +#if defined (_CS_PATH) && defined (HAVE_CONFSTR) + char *p; + size_t len; + + len = (size_t)confstr (_CS_PATH, (char *)NULL, (size_t)0); + if (len > 0) + { + p = (char *)xmalloc (len + 2); + *p = '\0'; + confstr (_CS_PATH, p, len); + return (p); + } + else + return (savestring (STANDARD_UTILS_PATH)); +#else /* !_CS_PATH || !HAVE_CONFSTR */ +# if defined (CS_PATH) + return (savestring (CS_PATH)); +# else + return (savestring (STANDARD_UTILS_PATH)); +# endif /* !CS_PATH */ +#endif /* !_CS_PATH || !HAVE_CONFSTR */ +} diff --git a/general.h b/general.h index 1f8c54a..819634c 100644 --- a/general.h +++ b/general.h @@ -1,6 +1,6 @@ /* general.h -- defines that everybody likes to use. */ -/* Copyright (C) 1993-2009 Free Software Foundation, Inc. +/* Copyright (C) 1993-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -124,7 +124,7 @@ typedef struct { int token; } STRING_INT_ALIST; -/* A macro to avoid making an unneccessary function call. */ +/* A macro to avoid making an unnecessary function call. */ #define REVERSE_LIST(list, type) \ ((list && list->next) ? (type)list_reverse ((GENERIC_LIST *)list) \ : (type)(list)) @@ -219,6 +219,9 @@ typedef int sh_ignore_func_t __P((const char *)); /* sh_icpfunc_t */ typedef int sh_assign_func_t __P((const char *)); typedef int sh_wassign_func_t __P((WORD_DESC *, int)); +typedef int sh_load_func_t __P((char *)); +typedef void sh_unload_func_t __P((char *)); + typedef int sh_builtin_func_t __P((WORD_LIST *)); /* sh_wlist_func_t */ #endif /* SH_FUNCTION_TYPEDEF */ @@ -280,11 +283,15 @@ extern RLIMTYPE string_to_rlimtype __P((char *)); extern void print_rlimtype __P((RLIMTYPE, int)); #endif -extern int all_digits __P((char *)); +extern int all_digits __P((const char *)); extern int legal_number __P((const char *, intmax_t *)); -extern int legal_identifier __P((char *)); +extern int legal_identifier __P((const char *)); +extern int importable_function_name __P((const char *, size_t)); +extern int exportable_function_name __P((const char *)); extern int check_identifier __P((WORD_DESC *, int)); -extern int legal_alias_name __P((char *, int)); +extern int valid_nameref_value __P((const char *, int)); +extern int check_selfref __P((const char *, char *, int)); +extern int legal_alias_name __P((const char *, int)); extern int assignment __P((const char *, int)); extern int sh_unset_nodelay_mode __P((int)); @@ -292,27 +299,28 @@ extern int sh_validfd __P((int)); extern int fd_ispipe __P((int)); extern void check_dev_tty __P((void)); extern int move_to_high_fd __P((int, int, int)); -extern int check_binary_file __P((char *, int)); +extern int check_binary_file __P((const char *, int)); #ifdef _POSIXSTAT_H_ -extern int same_file __P((char *, char *, struct stat *, struct stat *)); +extern int same_file __P((const char *, const char *, struct stat *, struct stat *)); #endif extern int sh_openpipe __P((int *)); extern int sh_closepipe __P((int *)); -extern int file_exists __P((char *)); -extern int file_isdir __P((char *)); -extern int file_iswdir __P((char *)); +extern int file_exists __P((const char *)); +extern int file_isdir __P((const char *)); +extern int file_iswdir __P((const char *)); extern int path_dot_or_dotdot __P((const char *)); extern int absolute_pathname __P((const char *)); extern int absolute_program __P((const char *)); -extern char *make_absolute __P((char *, char *)); +extern char *make_absolute __P((const char *, const char *)); extern char *base_pathname __P((char *)); extern char *full_pathname __P((char *)); extern char *polite_directory_format __P((char *)); extern char *trim_pathname __P((char *, int)); +extern char *printable_filename __P((char *, int)); extern char *extract_colon_unit __P((char *, int *)); @@ -324,4 +332,6 @@ extern int group_member __P((gid_t)); extern char **get_group_list __P((int *)); extern int *get_group_array __P((int *)); +extern char *conf_standard_path __P((void)); + #endif /* _GENERAL_H_ */ diff --git a/hashlib.c b/hashlib.c index ea67dfc..e23641c 100644 --- a/hashlib.c +++ b/hashlib.c @@ -179,6 +179,7 @@ hash_search (string, table, flags) for (list = table->bucket_array ? table->bucket_array[bucket] : 0; list; list = list->next) { + /* This is the comparison function */ if (hv == list->khash && STREQ (list->key, string)) { list->times_found++; @@ -402,13 +403,22 @@ fatal_error (const char *format, ...) abort(); } +void +internal_warning (const char *format, ...) +{ +} + main () { char string[256]; int count = 0; BUCKET_CONTENTS *tt; +#if defined (TEST_NBUCKETS) + table = hash_create (TEST_NBUCKETS); +#else table = hash_create (0); +#endif for (;;) { diff --git a/hashlib.h b/hashlib.h index 4620e42..88ea778 100644 --- a/hashlib.h +++ b/hashlib.h @@ -73,7 +73,7 @@ extern unsigned int hash_string __P((const char *)); (BUCKET_CONTENTS *)NULL) /* Default number of buckets in the hash table. */ -#define DEFAULT_HASH_BUCKETS 64 /* was 107, then 53, must be power of two now */ +#define DEFAULT_HASH_BUCKETS 128 /* must be power of two */ #define HASH_ENTRIES(ht) ((ht) ? (ht)->nentries : 0) diff --git a/include/chartypes.h b/include/chartypes.h index c708018..098cfb9 100644 --- a/include/chartypes.h +++ b/include/chartypes.h @@ -46,11 +46,11 @@ #endif #if !defined (isprint) && !defined (HAVE_ISPRINT) -# define isprint(c) (isalpha(c) || isdigit(c) || ispunct(c)) +# define isprint(c) (isalpha((unsigned char)c) || isdigit((unsigned char)c) || ispunct((unsigned char)c)) #endif #if defined (isblank) || defined (HAVE_ISBLANK) -# define ISBLANK(c) (IN_CTYPE_DOMAIN (c) && isblank (c)) +# define ISBLANK(c) (IN_CTYPE_DOMAIN (c) && isblank ((unsigned char)c)) #else # define ISBLANK(c) ((c) == ' ' || (c) == '\t') #endif @@ -58,7 +58,7 @@ #if defined (isgraph) || defined (HAVE_ISGRAPH) # define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isgraph (c)) #else -# define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isprint (c) && !isspace (c)) +# define ISGRAPH(c) (IN_CTYPE_DOMAIN (c) && isprint ((unsigned char)c) && !isspace ((unsigned char)c)) #endif #if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) @@ -67,16 +67,16 @@ #undef ISPRINT -#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c)) -#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) -#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (c)) -#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) -#define ISCNTRL(c) (IN_CTYPE_DOMAIN (c) && iscntrl (c)) -#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c)) -#define ISPUNCT(c) (IN_CTYPE_DOMAIN (c) && ispunct (c)) -#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) -#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) -#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (c)) +#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint ((unsigned char)c)) +#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit ((unsigned char)c)) +#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum ((unsigned char)c)) +#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha ((unsigned char)c)) +#define ISCNTRL(c) (IN_CTYPE_DOMAIN (c) && iscntrl ((unsigned char)c)) +#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower ((unsigned char)c)) +#define ISPUNCT(c) (IN_CTYPE_DOMAIN (c) && ispunct ((unsigned char)c)) +#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace ((unsigned char)c)) +#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper ((unsigned char)c)) +#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit ((unsigned char)c)) #define ISLETTER(c) (ISALPHA(c)) @@ -103,7 +103,7 @@ #ifndef TOCTRL /* letter to control char -- ASCII. The TOUPPER is in there so \ce and \cE will map to the same character in $'...' expansions. */ -# define TOCTRL(x) (TOUPPER(x) & 037) +# define TOCTRL(x) ((x) == '?' ? 0x7f : (TOUPPER(x) & 0x1f)) #endif #ifndef UNCTRL /* control char to letter -- ASCII */ diff --git a/include/posixjmp.h b/include/posixjmp.h index 98cf718..9c7e99e 100644 --- a/include/posixjmp.h +++ b/include/posixjmp.h @@ -1,6 +1,6 @@ /* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */ -/* Copyright (C) 1987,1991 Free Software Foundation, Inc. +/* Copyright (C) 1987,1991-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -27,16 +27,20 @@ #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 */ + +# define setjmp_nosigs(x) sigsetjmp((x), 0) +# define setjmp_sigs(x) sigsetjmp((x), 1) + +# define _rl_longjmp(x, n) siglongjmp((x), (n)) +# define sh_longjmp(x, n) siglongjmp((x), (n)) #else # define procenv_t jmp_buf -# define setjmp_nosigs setjmp + +# define setjmp_nosigs setjmp +# define setjmp_sigs setjmp + +# define _rl_longjmp(x, n) longjmp((x), (n)) +# define sh_longjmp(x, n) longjmp((x), (n)) #endif #endif /* _POSIXJMP_H_ */ diff --git a/include/shmbchar.h b/include/shmbchar.h index a475f56..a4f3f24 100644 --- a/include/shmbchar.h +++ b/include/shmbchar.h @@ -16,132 +16,6 @@ /* Written by Bruno Haible . */ -/* A multibyte character is a short subsequence of a char* string, - representing a single wide character. - - We use multibyte characters instead of wide characters because of - the following goals: - 1) correct multibyte handling, i.e. operate according to the LC_CTYPE - locale, - 2) ease of maintenance, i.e. the maintainer needs not know all details - of the ISO C 99 standard, - 3) don't fail grossly if the input is not in the encoding set by the - locale, because often different encodings are in use in the same - countries (ISO-8859-1/UTF-8, EUC-JP/Shift_JIS, ...), - 4) fast in the case of ASCII characters, - 5) portability, i.e. don't make unportable assumptions about wchar_t. - - Multibyte characters are only accessed through the mb* macros. - - mb_ptr (mbc) - return a pointer to the beginning of the multibyte sequence. - - mb_len (mbc) - returns the number of bytes occupied by the multibyte sequence. - Always > 0. - - mb_iseq (mbc, sc) - returns true if mbc is the standard ASCII character sc. - - mb_isnul (mbc) - returns true if mbc is the nul character. - - mb_cmp (mbc1, mbc2) - returns a positive, zero, or negative value depending on whether mbc1 - sorts after, same or before mbc2. - - mb_casecmp (mbc1, mbc2) - returns a positive, zero, or negative value depending on whether mbc1 - sorts after, same or before mbc2, modulo upper/lowercase conversion. - - mb_equal (mbc1, mbc2) - returns true if mbc1 and mbc2 are equal. - - mb_caseequal (mbc1, mbc2) - returns true if mbc1 and mbc2 are equal modulo upper/lowercase conversion. - - mb_isalnum (mbc) - returns true if mbc is alphanumeric. - - mb_isalpha (mbc) - returns true if mbc is alphabetic. - - mb_isascii(mbc) - returns true if mbc is plain ASCII. - - mb_isblank (mbc) - returns true if mbc is a blank. - - mb_iscntrl (mbc) - returns true if mbc is a control character. - - mb_isdigit (mbc) - returns true if mbc is a decimal digit. - - mb_isgraph (mbc) - returns true if mbc is a graphic character. - - mb_islower (mbc) - returns true if mbc is lowercase. - - mb_isprint (mbc) - returns true if mbc is a printable character. - - mb_ispunct (mbc) - returns true if mbc is a punctuation character. - - mb_isspace (mbc) - returns true if mbc is a space character. - - mb_isupper (mbc) - returns true if mbc is uppercase. - - mb_isxdigit (mbc) - returns true if mbc is a hexadecimal digit. - - mb_width (mbc) - returns the number of columns on the output device occupied by mbc. - Always >= 0. - - mb_putc (mbc, stream) - outputs mbc on stream, a byte oriented FILE stream opened for output. - - mb_setascii (&mbc, sc) - assigns the standard ASCII character sc to mbc. - - mb_copy (&destmbc, &srcmbc) - copies srcmbc to destmbc. - - Here are the function prototypes of the macros. - - typedef int bool; - extern const char * mb_ptr (const mbchar_t mbc); - extern size_t mb_len (const mbchar_t mbc); - extern bool mb_iseq (const mbchar_t mbc, char sc); - extern bool mb_isnul (const mbchar_t mbc); - extern int mb_cmp (const mbchar_t mbc1, const mbchar_t mbc2); - extern int mb_casecmp (const mbchar_t mbc1, const mbchar_t mbc2); - extern bool mb_equal (const mbchar_t mbc1, const mbchar_t mbc2); - extern bool mb_caseequal (const mbchar_t mbc1, const mbchar_t mbc2); - extern bool mb_isalnum (const mbchar_t mbc); - extern bool mb_isalpha (const mbchar_t mbc); - extern bool mb_isascii (const mbchar_t mbc); - extern bool mb_isblank (const mbchar_t mbc); - extern bool mb_iscntrl (const mbchar_t mbc); - extern bool mb_isdigit (const mbchar_t mbc); - extern bool mb_isgraph (const mbchar_t mbc); - extern bool mb_islower (const mbchar_t mbc); - extern bool mb_isprint (const mbchar_t mbc); - extern bool mb_ispunct (const mbchar_t mbc); - extern bool mb_isspace (const mbchar_t mbc); - extern bool mb_isupper (const mbchar_t mbc); - extern bool mb_isxdigit (const mbchar_t mbc); - extern int mb_width (const mbchar_t mbc); - extern void mb_putc (const mbchar_t mbc, FILE *stream); - extern void mb_setascii (mbchar_t *new, char sc); - extern void mb_copy (mbchar_t *new, const mbchar_t *old); - */ - #ifndef _SHMBCHAR_H #define _SHMBCHAR_H 1 @@ -158,126 +32,10 @@ #include #include -#define MBCHAR_BUF_SIZE 24 - -struct mbchar -{ - const char *ptr; /* pointer to current character */ - size_t bytes; /* number of bytes of current character, > 0 */ - int wc_valid; /* true if wc is a valid wide character */ - wchar_t wc; /* if wc_valid: the current character */ - char buf[MBCHAR_BUF_SIZE]; /* room for the bytes, used for file input only */ -}; - -/* EOF (not a real character) is represented with bytes = 0 and - wc_valid = false. */ - -typedef struct mbchar mbchar_t; - -/* Access the current character. */ -#define mb_ptr(mbc) ((mbc).ptr) -#define mb_len(mbc) ((mbc).bytes) - -/* Comparison of characters. */ -#define mb_iseq(mbc, sc) ((mbc).wc_valid && (mbc).wc == (sc)) -#define mb_isnul(mbc) ((mbc).wc_valid && (mbc).wc == 0) -#define mb_cmp(mbc1, mbc2) \ - ((mbc1).wc_valid \ - ? ((mbc2).wc_valid \ - ? (int) (mbc1).wc - (int) (mbc2).wc \ - : -1) \ - : ((mbc2).wc_valid \ - ? 1 \ - : (mbc1).bytes == (mbc2).bytes \ - ? memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) \ - : (mbc1).bytes < (mbc2).bytes \ - ? (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) > 0 ? 1 : -1) \ - : (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc2).bytes) >= 0 ? 1 : -1))) -#define mb_casecmp(mbc1, mbc2) \ - ((mbc1).wc_valid \ - ? ((mbc2).wc_valid \ - ? (int) towlower ((mbc1).wc) - (int) towlower ((mbc2).wc) \ - : -1) \ - : ((mbc2).wc_valid \ - ? 1 \ - : (mbc1).bytes == (mbc2).bytes \ - ? memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) \ - : (mbc1).bytes < (mbc2).bytes \ - ? (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) > 0 ? 1 : -1) \ - : (memcmp ((mbc1).ptr, (mbc2).ptr, (mbc2).bytes) >= 0 ? 1 : -1))) -#define mb_equal(mbc1, mbc2) \ - ((mbc1).wc_valid && (mbc2).wc_valid \ - ? (mbc1).wc == (mbc2).wc \ - : (mbc1).bytes == (mbc2).bytes \ - && memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) == 0) -#define mb_caseequal(mbc1, mbc2) \ - ((mbc1).wc_valid && (mbc2).wc_valid \ - ? towlower ((mbc1).wc) == towlower ((mbc2).wc) \ - : (mbc1).bytes == (mbc2).bytes \ - && memcmp ((mbc1).ptr, (mbc2).ptr, (mbc1).bytes) == 0) - -/* , classification. */ -#define mb_isascii(mbc) \ - ((mbc).wc_valid && (mbc).wc >= 0 && (mbc).wc <= 127) -#define mb_isalnum(mbc) ((mbc).wc_valid && iswalnum ((mbc).wc)) -#define mb_isalpha(mbc) ((mbc).wc_valid && iswalpha ((mbc).wc)) -#define mb_isblank(mbc) ((mbc).wc_valid && iswblank ((mbc).wc)) -#define mb_iscntrl(mbc) ((mbc).wc_valid && iswcntrl ((mbc).wc)) -#define mb_isdigit(mbc) ((mbc).wc_valid && iswdigit ((mbc).wc)) -#define mb_isgraph(mbc) ((mbc).wc_valid && iswgraph ((mbc).wc)) -#define mb_islower(mbc) ((mbc).wc_valid && iswlower ((mbc).wc)) -#define mb_isprint(mbc) ((mbc).wc_valid && iswprint ((mbc).wc)) -#define mb_ispunct(mbc) ((mbc).wc_valid && iswpunct ((mbc).wc)) -#define mb_isspace(mbc) ((mbc).wc_valid && iswspace ((mbc).wc)) -#define mb_isupper(mbc) ((mbc).wc_valid && iswupper ((mbc).wc)) -#define mb_isxdigit(mbc) ((mbc).wc_valid && iswxdigit ((mbc).wc)) - -/* Extra function. */ - -/* Unprintable characters appear as a small box of width 1. */ -#define MB_UNPRINTABLE_WIDTH 1 - -static inline int -mb_width_aux (wint_t wc) -{ - int w = wcwidth (wc); - /* For unprintable characters, arbitrarily return 0 for control characters - and MB_UNPRINTABLE_WIDTH otherwise. */ - return (w >= 0 ? w : iswcntrl (wc) ? 0 : MB_UNPRINTABLE_WIDTH); -} - -#define mb_width(mbc) \ - ((mbc).wc_valid ? mb_width_aux ((mbc).wc) : MB_UNPRINTABLE_WIDTH) - -/* Output. */ -#define mb_putc(mbc, stream) fwrite ((mbc).ptr, 1, (mbc).bytes, (stream)) - -/* Assignment. */ -#define mb_setascii(mbc, sc) \ - ((mbc)->ptr = (mbc)->buf, (mbc)->bytes = 1, (mbc)->wc_valid = 1, \ - (mbc)->wc = (mbc)->buf[0] = (sc)) - -/* Copying a character. */ -static inline void -mb_copy (mbchar_t *new_mbc, const mbchar_t *old_mbc) -{ - if (old_mbc->ptr == &old_mbc->buf[0]) - { - memcpy (&new_mbc->buf[0], &old_mbc->buf[0], old_mbc->bytes); - new_mbc->ptr = &new_mbc->buf[0]; - } - else - new_mbc->ptr = old_mbc->ptr; - new_mbc->bytes = old_mbc->bytes; - if ((new_mbc->wc_valid = old_mbc->wc_valid)) - new_mbc->wc = old_mbc->wc; -} - /* is_basic(c) tests whether the single-byte character c is in the - ISO C "basic character set". - This is a convenience function, and is in this file only to share code - between mbiter_multi.h and mbfile_multi.h. */ + ISO C "basic character set". */ + #if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ @@ -320,6 +78,7 @@ is_basic (char c) { switch (c) { + case '\b': case '\r': case '\n': case '\t': case '\v': case '\f': case ' ': case '!': case '"': case '#': case '%': case '&': case '\'': case '(': case ')': case '*': diff --git a/include/shmbutil.h b/include/shmbutil.h index afb381a..dbaaba8 100644 --- a/include/shmbutil.h +++ b/include/shmbutil.h @@ -499,5 +499,34 @@ extern int locale_mb_cur_max; /* XXX */ \ goto add_string +# define SADD_MBCHAR_BODY(_dst, _src, _si, _srcsize) \ +\ + int i; \ + mbstate_t state_bak; \ + size_t mblength; \ +\ + i = is_basic (*((_src) + (_si))); \ + if (i) \ + mblength = 1; \ + else \ + { \ + state_bak = state; \ + mblength = mbrlen ((_src) + (_si), (_srcsize) - (_si), &state); \ + } \ + if (mblength == (size_t)-1 || mblength == (size_t)-2) \ + { \ + state = state_bak; \ + mblength = 1; \ + } \ + if (mblength < 1) \ + mblength = 1; \ +\ + (_dst) = (char *)xmalloc (mblength + 1); \ + for (i = 0; i < mblength; i++) \ + (_dst)[i+1] = (_src)[(_si)++]; \ + (_dst)[mblength+1] = '\0'; \ +\ + goto add_string + #endif /* HANDLE_MULTIBYTE */ #endif /* _SH_MBUTIL_H_ */ diff --git a/input.c b/input.c index 14c6f4e..308b87e 100644 --- a/input.c +++ b/input.c @@ -205,7 +205,7 @@ make_buffered_stream (fd, buffer, bufsize) if (bufsize == 1) bp->b_flag |= B_UNBUFF; if (O_TEXT && (fcntl (fd, F_GETFL) & O_TEXT) != 0) - bp->b_flag |= O_TEXT; + bp->b_flag |= B_TEXT; return (bp); } @@ -272,7 +272,7 @@ save_bash_input (fd, new_fd) return -1; } - if (buffers[nfd]) + if (nfd < nbuffers && buffers[nfd]) { /* What's this? A stray buffer without an associated open file descriptor? Free up the buffer and report the error. */ diff --git a/jobs.c b/jobs.c index b6e59eb..cef3c79 100644 --- a/jobs.c +++ b/jobs.c @@ -3,7 +3,7 @@ /* This file works with both POSIX and BSD systems. It implements job control. */ -/* Copyright (C) 1989-2013 Free Software Foundation, Inc. +/* Copyright (C) 1989-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -75,6 +75,10 @@ #include "builtins/builtext.h" #include "builtins/common.h" +#if defined (READLINE) +# include +#endif + #if !defined (errno) extern int errno; #endif /* !errno */ @@ -97,6 +101,10 @@ extern int killpg __P((pid_t, int)); #define MAX_JOBS_IN_ARRAY 128 /* testing */ #endif +/* XXX for now */ +#define PIDSTAT_TABLE_SZ 4096 +#define BGPIDS_TABLE_SZ 512 + /* Flag values for second argument to delete_job */ #define DEL_WARNSTOPPED 1 /* warn about deleting stopped jobs */ #define DEL_NOBGPID 2 /* don't add pgrp leader to bgpids */ @@ -165,12 +173,18 @@ extern sh_builtin_func_t *this_shell_builtin; extern char *shell_name, *this_command_name; extern sigset_t top_level_mask; extern procenv_t wait_intr_buf; +extern int wait_intr_flag; extern int wait_signal_received; extern WORD_LIST *subst_assign_varlist; +extern SigHandler **original_signals; + +extern void set_original_signal __P((int, SigHandler *)); + static struct jobstats zerojs = { -1L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NO_JOB, NO_JOB, 0, 0 }; struct jobstats js = { -1L, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NO_JOB, NO_JOB, 0, 0 }; +ps_index_t pidstat_table[PIDSTAT_TABLE_SZ]; struct bgpids bgpids = { 0, 0, 0 }; /* The array of known jobs. */ @@ -223,6 +237,9 @@ PROCESS *the_pipeline = (PROCESS *)NULL; /* If this is non-zero, do job control. */ int job_control = 1; +/* Are we running in background? (terminal_pgrp != shell_pgrp) */ +int running_in_background = 0; + /* Call this when you start making children. */ int already_making_children = 0; @@ -230,6 +247,8 @@ int already_making_children = 0; exits from get_tty_state(). */ int check_window_size = CHECKWINSIZE_DEFAULT; +PROCESS *last_procsub_child = (PROCESS *)NULL; + /* Functions local to this file. */ static sighandler wait_sigint_handler __P((int)); @@ -270,7 +289,6 @@ static void cleanup_dead_jobs __P((void)); static int processes_in_job __P((int)); static void realloc_jobs_list __P((void)); static int compact_jobs_list __P((int)); -static int discard_pipeline __P((PROCESS *)); static void add_process __P((char *, pid_t)); static void print_pipeline __P((PROCESS *, int, int, FILE *)); static void pretty_print_job __P((int, int, FILE *)); @@ -286,12 +304,19 @@ static void restore_sigint_handler __P((void)); static void pipe_read __P((int *)); #endif -static struct pidstat *bgp_alloc __P((pid_t, int)); +/* Hash table manipulation */ + +static ps_index_t *pshash_getbucket __P((pid_t)); +static void pshash_delindex __P((ps_index_t)); + +/* Saved background process status management */ static struct pidstat *bgp_add __P((pid_t, int)); static int bgp_delete __P((pid_t)); static void bgp_clear __P((void)); static int bgp_search __P((pid_t)); -static void bgp_prune __P((void)); + +static ps_index_t bgp_getindex __P((void)); +static void bgp_resize __P((void)); /* XXX */ #if defined (ARRAY_VARS) static int *pstatuses; /* list of pipeline statuses */ @@ -316,7 +341,7 @@ static SigHandler *old_tstp, *old_ttou, *old_ttin; static SigHandler *old_cont = (SigHandler *)SIG_DFL; /* A place to temporarily save the current pipeline. */ -static PROCESS *saved_pipeline; +static struct pipeline_saver *saved_pipeline; static int saved_already_making_children; /* Set this to non-zero whenever you don't want the jobs list to change at @@ -428,27 +453,58 @@ cleanup_the_pipeline () discard_pipeline (disposer); } +struct pipeline_saver * +alloc_pipeline_saver () +{ + struct pipeline_saver *ret; + + ret = (struct pipeline_saver *)xmalloc (sizeof (struct pipeline_saver)); + ret->pipeline = 0; + ret->next = 0; + return ret; +} + void save_pipeline (clear) int clear; { - saved_pipeline = the_pipeline; + sigset_t set, oset; + struct pipeline_saver *saver; + + BLOCK_CHILD (set, oset); + saver = alloc_pipeline_saver (); + saver->pipeline = the_pipeline; + saver->next = saved_pipeline; + saved_pipeline = saver; if (clear) the_pipeline = (PROCESS *)NULL; saved_already_making_children = already_making_children; + UNBLOCK_CHILD (oset); } -void +PROCESS * restore_pipeline (discard) int discard; { PROCESS *old_pipeline; + sigset_t set, oset; + struct pipeline_saver *saver; + BLOCK_CHILD (set, oset); old_pipeline = the_pipeline; - the_pipeline = saved_pipeline; + the_pipeline = saved_pipeline->pipeline; + saver = saved_pipeline; + saved_pipeline = saved_pipeline->next; + free (saver); already_making_children = saved_already_making_children; + UNBLOCK_CHILD (oset); + if (discard && old_pipeline) - discard_pipeline (old_pipeline); + { + discard_pipeline (old_pipeline); + return ((PROCESS *)NULL); + } + return old_pipeline; } /* Start building a pipeline. */ @@ -640,10 +696,11 @@ stop_pipeline (async, deferred) * the parent gives it away. * * Don't give the terminal away if this shell is an asynchronous - * subshell. + * subshell or if we're a (presumably non-interactive) shell running + * in the background. * */ - if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0) + if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0 && running_in_background == 0) maybe_give_terminal_to (shell_pgrp, newjob->pgrp, 0); } } @@ -654,20 +711,82 @@ stop_pipeline (async, deferred) } /* Functions to manage the list of exited background pids whose status has - been saved. */ + been saved. -static struct pidstat * -bgp_alloc (pid, status) - pid_t pid; - int status; + pidstat_table: + + The current implementation is a hash table using a single (separate) arena + for storage that can be allocated and freed as a unit. The size of the hash + table is a multiple of PIDSTAT_TABLE_SZ (4096) and multiple PIDs that hash + to the same value are chained through the bucket_next and bucket_prev + pointers (basically coalesced hashing for collision resolution). + + bgpids.storage: + + All pid/status storage is done using the circular buffer bgpids.storage. + This must contain at least js.c_childmax entries. The circular buffer is + used to supply the ordered list Posix requires ("the last CHILD_MAX + processes"). To avoid searching the entire storage table for a given PID, + the hash table (pidstat_table) holds pointers into the storage arena and + uses a doubly-linked list of cells (bucket_next/bucket_prev, also pointers + into the arena) to implement collision resolution. */ + +/* The number of elements in bgpids.storage always has to be > js.c_childmax for + the circular buffer to work right. */ +static void +bgp_resize () { - struct pidstat *ps; + ps_index_t nsize; + ps_index_t psi; - ps = (struct pidstat *)xmalloc (sizeof (struct pidstat)); - ps->pid = pid; - ps->status = status; - ps->next = (struct pidstat *)0; - return ps; + if (bgpids.nalloc == 0) + { + /* invalidate hash table when bgpids table is reallocated */ + for (psi = 0; psi < PIDSTAT_TABLE_SZ; psi++) + pidstat_table[psi] = NO_PIDSTAT; + nsize = BGPIDS_TABLE_SZ; /* should be power of 2 */ + bgpids.head = 0; + } + else + nsize = bgpids.nalloc; + + while (nsize < js.c_childmax) + nsize *= 2; + + if (bgpids.nalloc < js.c_childmax) + { + bgpids.storage = (struct pidstat *)xrealloc (bgpids.storage, nsize * sizeof (struct pidstat)); + + for (psi = bgpids.nalloc; psi < nsize; psi++) + bgpids.storage[psi].pid = NO_PID; + + bgpids.nalloc = nsize; + + } + else if (bgpids.head >= bgpids.nalloc) /* wrap around */ + bgpids.head = 0; +} + +static ps_index_t +bgp_getindex () +{ + ps_index_t psi; + + if (bgpids.nalloc < js.c_childmax || bgpids.head >= bgpids.nalloc) + bgp_resize (); + + pshash_delindex (bgpids.head); /* XXX - clear before reusing */ + return bgpids.head++; +} + +static ps_index_t * +pshash_getbucket (pid) + pid_t pid; +{ + unsigned long hash; /* XXX - u_bits32_t */ + + hash = pid * 0x9e370001UL; + return (&pidstat_table[hash % PIDSTAT_TABLE_SZ]); } static struct pidstat * @@ -675,61 +794,75 @@ bgp_add (pid, status) pid_t pid; int status; { + ps_index_t *bucket, psi; struct pidstat *ps; - ps = bgp_alloc (pid, status); + bucket = pshash_getbucket (pid); + psi = bgp_getindex (); + ps = &bgpids.storage[psi]; + + ps->pid = pid; + ps->status = status; + ps->bucket_next = *bucket; + ps->bucket_prev = NO_PIDSTAT; - if (bgpids.list == 0) - { - bgpids.list = bgpids.end = ps; - bgpids.npid = 0; /* just to make sure */ - } - else - { - bgpids.end->next = ps; - bgpids.end = ps; - } bgpids.npid++; +#if 0 if (bgpids.npid > js.c_childmax) bgp_prune (); +#endif + + if (ps->bucket_next != NO_PIDSTAT) + bgpids.storage[ps->bucket_next].bucket_prev = psi; + + *bucket = psi; /* set chain head in hash table */ return ps; } +static void +pshash_delindex (psi) + ps_index_t psi; +{ + struct pidstat *ps; + + ps = &bgpids.storage[psi]; + if (ps->pid == NO_PID) + return; + + if (ps->bucket_next != NO_PID) + bgpids.storage[ps->bucket_next].bucket_prev = ps->bucket_prev; + if (ps->bucket_prev != NO_PID) + bgpids.storage[ps->bucket_prev].bucket_next = ps->bucket_next; + else + *(pshash_getbucket (ps->pid)) = ps->bucket_next; +} + static int bgp_delete (pid) pid_t pid; { - struct pidstat *prev, *p; + ps_index_t psi; - for (prev = p = bgpids.list; p; prev = p, p = p->next) - if (p->pid == pid) - { - prev->next = p->next; /* remove from list */ - break; - } + if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) + return 0; - if (p == 0) + /* Search chain using hash to find bucket in pidstat_table */ + for (psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) + if (bgpids.storage[psi].pid == pid) + break; + + if (psi == NO_PIDSTAT) return 0; /* not found */ #if defined (DEBUG) itrace("bgp_delete: deleting %d", pid); #endif - /* Housekeeping in the border cases. */ - if (p == bgpids.list) - bgpids.list = bgpids.list->next; - else if (p == bgpids.end) - bgpids.end = prev; + pshash_delindex (psi); /* hash table management */ bgpids.npid--; - if (bgpids.npid == 0) - bgpids.list = bgpids.end = 0; - else if (bgpids.npid == 1) - bgpids.end = bgpids.list; /* just to make sure */ - - free (p); return 1; } @@ -737,45 +870,45 @@ bgp_delete (pid) static void bgp_clear () { - struct pidstat *ps, *p; + if (bgpids.storage == 0 || bgpids.nalloc == 0) + return; + + free (bgpids.storage); + + bgpids.storage = 0; + bgpids.nalloc = 0; + bgpids.head = 0; - for (ps = bgpids.list; ps; ) - { - p = ps; - ps = ps->next; - free (p); - } - bgpids.list = bgpids.end = 0; bgpids.npid = 0; } /* Search for PID in the list of saved background pids; return its status if - found. If not found, return -1. */ + found. If not found, return -1. We hash to the right spot in pidstat_table + and follow the bucket chain to the end. */ static int bgp_search (pid) pid_t pid; { - struct pidstat *ps; + ps_index_t psi; + + if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0) + return -1; + + /* Search chain using hash to find bucket in pidstat_table */ + for (psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next) + if (bgpids.storage[psi].pid == pid) + return (bgpids.storage[psi].status); - for (ps = bgpids.list ; ps; ps = ps->next) - if (ps->pid == pid) - return ps->status; return -1; } +#if 0 static void bgp_prune () { - struct pidstat *ps; - - while (bgpids.npid > js.c_childmax) - { - ps = bgpids.list; - bgpids.list = bgpids.list->next; - free (ps); - bgpids.npid--; - } + return; } +#endif /* Reset the values of js.j_lastj and js.j_firstj after one or both have been deleted. The caller should check whether js.j_njobs is 0 before @@ -846,6 +979,15 @@ cleanup_dead_jobs () delete_job (i, 0); } +#if defined (PROCESS_SUBSTITUTION) + if (last_procsub_child && last_procsub_child->running == PS_DONE) + { + bgp_add (last_procsub_child->pid, process_exit_status (last_procsub_child->status)); /* XXX */ + discard_pipeline (last_procsub_child); + last_procsub_child = (PROCESS *)NULL; + } +#endif + #if defined (COPROCESS_SUPPORT) coproc_reap (); #endif @@ -1014,10 +1156,9 @@ delete_job (job_index, dflags) if (temp == 0) return; - if ((dflags & DEL_NOBGPID) == 0) + if ((dflags & DEL_NOBGPID) == 0 && (temp->flags & (J_ASYNC|J_FOREGROUND)) == J_ASYNC) { proc = find_last_proc (job_index, 0); - /* Could do this just for J_ASYNC jobs, but we save all. */ if (proc) bgp_add (proc->pid, process_exit_status (proc->status)); } @@ -1075,7 +1216,7 @@ nohup_job (job_index) } /* Get rid of the data structure associated with a process chain. */ -static int +int discard_pipeline (chain) register PROCESS *chain; { @@ -1330,6 +1471,20 @@ find_pipeline (pid, alive_only, jobp) } while (p != the_pipeline); } + /* Now look in the last process substitution pipeline, since that sets $! */ + if (last_procsub_child) + { + p = last_procsub_child; + do + { + /* Return it if we found it. Don't ever return a recycled pid. */ + if (p->pid == pid && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p))) + return (p); + + p = p->next; + } + while (p != last_procsub_child); + } job = find_job (pid, alive_only, &p); if (jobp) @@ -1447,7 +1602,7 @@ j_strsignal (s) if (x == 0) { x = retcode_name_buffer; - sprintf (x, _("Signal %d"), s); + snprintf (x, sizeof(retcode_name_buffer), _("Signal %d"), s); } return x; } @@ -1470,7 +1625,7 @@ printable_job_status (j, p, format) else { temp = retcode_name_buffer; - sprintf (temp, _("Stopped(%s)"), signal_name (WSTOPSIG (p->status))); + snprintf (temp, sizeof(retcode_name_buffer), _("Stopped(%s)"), signal_name (WSTOPSIG (p->status))); } } else if (RUNNING (j)) @@ -1486,11 +1641,14 @@ printable_job_status (j, p, format) temp = retcode_name_buffer; es = WEXITSTATUS (p->status); if (es == 0) - strcpy (temp, _("Done")); + { + strncpy (temp, _("Done"), sizeof (retcode_name_buffer) - 1); + temp[sizeof (retcode_name_buffer) - 1] = '\0'; + } else if (posixly_correct) - sprintf (temp, _("Done(%d)"), es); + snprintf (temp, sizeof(retcode_name_buffer), _("Done(%d)"), es); else - sprintf (temp, _("Exit %d"), es); + snprintf (temp, sizeof(retcode_name_buffer), _("Exit %d"), es); } else temp = _("Unknown status"); @@ -1747,15 +1905,21 @@ make_child (command, async_p) while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX) { /* bash-4.2 */ + sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL); /* If we can't create any children, try to reap some dead ones. */ waitchld (-1, 0); + errno = EAGAIN; /* restore errno */ sys_error ("fork: retry"); RESET_SIGTERM; if (sleep (forksleep) != 0) break; forksleep <<= 1; + + if (interrupt_state) + break; + sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL); } if (pid != 0) @@ -1790,6 +1954,8 @@ make_child (command, async_p) unset_bash_input (0); #endif /* BUFFERED_INPUT */ + CLRINTERRUPT; /* XXX - children have their own interrupt state */ + /* Restore top-level signal mask. */ sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL); @@ -1824,7 +1990,7 @@ make_child (command, async_p) In this case, we don't want to give the terminal to the shell's process group (we could be in the middle of a pipeline, for example). */ - if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0)) + if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&(SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0) && running_in_background == 0) give_terminal_to (pipeline_pgrp, 0); #if defined (PGRP_PIPE) @@ -1935,12 +2101,51 @@ ignore_tty_job_signals () set_signal_handler (SIGTTOU, SIG_IGN); } +/* Reset the tty-generated job control signals to SIG_DFL unless that signal + was ignored at entry to the shell, in which case we need to set it to + SIG_IGN in the child. We can't rely on resetting traps, since the hard + ignored signals can't be trapped. */ void default_tty_job_signals () { - set_signal_handler (SIGTSTP, SIG_DFL); - set_signal_handler (SIGTTIN, SIG_DFL); - set_signal_handler (SIGTTOU, SIG_DFL); + if (signal_is_trapped (SIGTSTP) == 0 && signal_is_hard_ignored (SIGTSTP)) + set_signal_handler (SIGTSTP, SIG_IGN); + else + set_signal_handler (SIGTSTP, SIG_DFL); + + if (signal_is_trapped (SIGTTIN) == 0 && signal_is_hard_ignored (SIGTTIN)) + set_signal_handler (SIGTTIN, SIG_IGN); + else + set_signal_handler (SIGTTIN, SIG_DFL); + + if (signal_is_trapped (SIGTTOU) == 0 && signal_is_hard_ignored (SIGTTOU)) + set_signal_handler (SIGTTOU, SIG_IGN); + else + set_signal_handler (SIGTTOU, SIG_DFL); +} + +/* Called once in a parent process. */ +void +get_original_tty_job_signals () +{ + static int fetched = 0; + + if (fetched == 0) + { + if (interactive_shell) + { + set_original_signal (SIGTSTP, SIG_DFL); + set_original_signal (SIGTTIN, SIG_DFL); + set_original_signal (SIGTTOU, SIG_DFL); + } + else + { + get_original_signal (SIGTSTP); + get_original_signal (SIGTTIN); + get_original_signal (SIGTTOU); + } + fetched = 1; + } } /* When we end a job abnormally, or if we stop a job, we set the tty to the @@ -2113,10 +2318,13 @@ find_last_pid (job, block) This low-level function prints an error message if PID is not a child of this shell. It returns -1 if it fails, or whatever wait_for returns otherwise. If the child is not found in the - jobs table, it returns 127. */ + jobs table, it returns 127. If FLAGS doesn't include 1, we + suppress the error message if PID isn't found. */ + int -wait_for_single_pid (pid) +wait_for_single_pid (pid, flags) pid_t pid; + int flags; { register PROCESS *child; sigset_t set, oset; @@ -2135,7 +2343,8 @@ wait_for_single_pid (pid) if (child == 0) { - internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); + if (flags & 1) + internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid); return (127); } @@ -2195,7 +2404,7 @@ wait_for_background_pids () UNBLOCK_CHILD (oset); QUIT; errno = 0; /* XXX */ - r = wait_for_single_pid (pid); + r = wait_for_single_pid (pid, 1); if (r == -1) { /* If we're mistaken about job state, compensate. */ @@ -2221,6 +2430,14 @@ static int wait_sigint_received; static int child_caught_sigint; static int waiting_for_child; +/* Clean up state after longjmp to wait_intr_buf */ +void +wait_sigint_cleanup () +{ + queue_sigchld = 0; + waiting_for_child = 0; +} + static void restore_sigint_handler () { @@ -2254,10 +2471,10 @@ wait_sigint_handler (sig) { trap_handler (SIGINT); /* set pending_traps[SIGINT] */ wait_signal_received = SIGINT; - if (interrupt_immediately) + if (interrupt_immediately && wait_intr_flag) { interrupt_immediately = 0; - longjmp (wait_intr_buf, 1); + sh_longjmp (wait_intr_buf, 1); } else /* Let CHECK_WAIT_INTR handle it in wait_for/waitchld */ @@ -2450,7 +2667,7 @@ wait_for (pid) job to finish. Otherwise, we are waiting for the child to finish. We check for JDEAD in case the job state has been set by waitchld after receipt of a SIGCHLD. */ - if (job == NO_JOB) + if (job == NO_JOB) /* XXX -- && pid != ANY_PID ? */ job = find_job (pid, 0, NULL); /* waitchld() takes care of setting the state of the job. If the job @@ -2468,6 +2685,7 @@ wait_for (pid) struct sigaction act, oact; sigset_t nullset, chldset; + queue_sigchld = 1; sigemptyset (&nullset); sigemptyset (&chldset); sigprocmask (SIG_SETMASK, &nullset, &chldset); @@ -2553,12 +2771,12 @@ itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, chil of the last child in the pipeline is the significant one. If the command or job was terminated by a signal, note that value also. */ termination_state = (job != NO_JOB) ? job_exit_status (job) - : process_exit_status (child->status); + : (child ? process_exit_status (child->status) : EXECUTION_SUCCESS); last_command_exit_signal = (job != NO_JOB) ? job_exit_signal (job) - : process_exit_signal (child->status); + : (child ? process_exit_signal (child->status) : 0); /* XXX */ - if ((job != NO_JOB && JOBSTATE (job) == JSTOPPED) || WIFSTOPPED (child->status)) + if ((job != NO_JOB && JOBSTATE (job) == JSTOPPED) || (child && WIFSTOPPED (child->status))) termination_state = 128 + WSTOPSIG (child->status); if (job == NO_JOB || IS_JOBCONTROL (job)) @@ -2580,7 +2798,13 @@ itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, chil if (job == NO_JOB) itrace("wait_for: job == NO_JOB, giving the terminal to shell_pgrp (%ld)", (long)shell_pgrp); #endif - give_terminal_to (shell_pgrp, 0); + /* Don't modify terminal pgrp if we are running in background or a + subshell. Make sure subst.c:command_substitute uses the same + conditions to determine whether or not it should undo this and + give the terminal to pipeline_pgrp. */ + + if (running_in_background == 0 && (subshell_environment&(SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0) + give_terminal_to (shell_pgrp, 0); } /* If the command did not exit cleanly, or the job is just @@ -2614,6 +2838,11 @@ if (job == NO_JOB) get_new_window_size (0, (int *)0, (int *)0); } else +#if defined (READLINE) + /* We don't want to do this if we are running a process during + programmable completion. */ + if (RL_ISSTATE (RL_STATE_COMPLETING) == 0) +#endif get_tty_state (); /* If job control is enabled, the job was started with job @@ -2629,6 +2858,14 @@ if (job == NO_JOB) SIGINT signal handler; maybe it should. */ if (signal_is_trapped (SIGINT) == 0 && (loop_level || (shell_compatibility_level > 32 && executing_list))) ADDINTERRUPT; + /* Call any SIGINT trap handler if the shell is running a loop, so + the loop can be broken. This seems more useful and matches the + behavior when the shell is running a builtin command in a loop + when it is interrupted. Change ADDINTERRUPT to + trap_handler (SIGINT) to run the trap without interrupting the + loop. */ + else if (signal_is_trapped (SIGINT) && loop_level) + ADDINTERRUPT; else { putchar ('\n'); @@ -2643,8 +2880,6 @@ if (job == NO_JOB) something like a while loop or a for loop, simulate getting and being killed by the SIGINT to pass the status back to our parent. */ - s = job_signal_status (job); - if (child_caught_sigint == 0 && signal_is_trapped (SIGINT) == 0) { UNBLOCK_CHILD (oset); @@ -3226,6 +3461,10 @@ waitchld (wpid, block) #if 0 if (wpid != -1 && block) itrace("waitchld: blocking waitpid returns %d", pid); +#endif +#if 0 +if (wpid != -1) + itrace("waitchld: %s waitpid returns %d", block?"blocking":"non-blocking", pid); #endif /* WCONTINUED may be rejected by waitpid as invalid even when defined */ if (wcontinued && pid < 0 && errno == EINVAL) @@ -3250,7 +3489,7 @@ if (wpid != -1 && block) } #if 0 -itrace("waitchld: waitpid returns %d block = %d", pid, block); +itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, block, children_exited); #endif /* If waitpid returns 0, there are running children. If it returns -1, the only other error POSIX says it can return is EINTR. */ @@ -3268,6 +3507,13 @@ itrace("waitchld: waitpid returns %d block = %d", pid, block); if (pid <= 0) continue; /* jumps right to the test */ + /* Linux kernels appear to signal the parent but not interrupt the + waitpid() (or restart it even without SA_RESTART) on SIGINT, so if + we saw a SIGINT and the process exited or died due to some other + signal, assume the child caught the SIGINT. */ + if (wait_sigint_received && (WIFSIGNALED (status) == 0 || WTERMSIG (status) != SIGINT)) + child_caught_sigint = 1; + /* If the child process did die due to SIGINT, forget our assumption that it caught or otherwise handled it. */ if (WIFSIGNALED (status) && WTERMSIG (status) == SIGINT) @@ -3309,7 +3555,7 @@ itrace("waitchld: waitpid returns %d block = %d", pid, block); if (job != NO_JOB) js.c_reaped++; } - + if (job == NO_JOB) continue; @@ -3333,7 +3579,8 @@ itrace("waitchld: waitpid returns %d block = %d", pid, block); } /* Call a SIGCHLD trap handler for each child that exits, if one is set. */ - if (job_control && signal_is_trapped (SIGCHLD) && children_exited && + if (job_control && children_exited && + (signal_is_trapped (SIGCHLD) || trap_list[SIGCHLD] == (char *)IMPOSSIBLE_TRAP_HANDLER) && trap_list[SIGCHLD] != (char *)IGNORE_SIG) { if (posixly_correct && this_shell_builtin && this_shell_builtin == wait_builtin) @@ -3345,14 +3592,18 @@ itrace("waitchld: waitpid returns %d block = %d", pid, block); wait_signal_received = SIGCHLD; /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up; run_pending_traps will call run_sigchld_trap later */ - if (sigchld == 0) - longjmp (wait_intr_buf, 1); + if (sigchld == 0 && wait_intr_flag) + sh_longjmp (wait_intr_buf, 1); } /* If not in posix mode and not executing the wait builtin, queue the signal for later handling. Run the trap immediately if we are executing the wait builtin, but don't break out of `wait'. */ else if (sigchld) /* called from signal handler */ queue_sigchld_trap (children_exited); + else if (signal_in_progress (SIGCHLD)) + queue_sigchld_trap (children_exited); + else if (trap_list[SIGCHLD] == (char *)IMPOSSIBLE_TRAP_HANDLER) + queue_sigchld_trap (children_exited); else if (running_trap) queue_sigchld_trap (children_exited); else if (this_shell_builtin == wait_builtin) @@ -3494,7 +3745,10 @@ set_job_status_and_cleanup (job) seen it, and wait_sigint_received is non-zero, because keyboard signals are sent to process groups) or via kill(2) to the foreground process by another process (or itself). If the shell did receive the - SIGINT, it needs to perform normal SIGINT processing. */ + SIGINT, it needs to perform normal SIGINT processing. XXX - should + this change its behavior depending on whether the last command in an + pipeline exited due to SIGINT, or any process in the pipeline? Right + now it does this if any process in the pipeline exits due to SIGINT. */ else if (wait_sigint_received && child_caught_sigint == 0 && IS_FOREGROUND (job) && IS_JOBCONTROL (job) == 0) @@ -3534,7 +3788,7 @@ set_job_status_and_cleanup (job) In this case, we have to fix things up. What a crock. */ if (temp_handler == trap_handler && signal_is_trapped (SIGINT) == 0) temp_handler = trap_to_sighandler (SIGINT); - restore_sigint_handler (); + restore_sigint_handler (); if (temp_handler == SIG_DFL) termsig_handler (SIGINT); /* XXX */ else if (temp_handler != SIG_IGN) @@ -3600,6 +3854,7 @@ run_sigchld_trap (nchild) unwind_protect_pointer (the_pipeline); unwind_protect_pointer (subst_assign_varlist); unwind_protect_pointer (this_shell_builtin); + unwind_protect_pointer (temporary_env); /* We have to add the commands this way because they will be run in reverse order of adding. We don't want maybe_set_sigchld_trap () @@ -3609,6 +3864,7 @@ run_sigchld_trap (nchild) subst_assign_varlist = (WORD_LIST *)NULL; the_pipeline = (PROCESS *)NULL; + temporary_env = 0; /* traps should not run with temporary env */ running_trap = SIGCHLD + 1; @@ -3792,6 +4048,7 @@ initialize_job_control (force) job_control = 0; original_pgrp = NO_PID; shell_tty = fileno (stderr); + terminal_pgrp = tcgetpgrp (shell_tty); /* for checking later */ } else { @@ -3820,7 +4077,8 @@ initialize_job_control (force) { shell_pgrp = getpid (); setpgid (0, shell_pgrp); - tcsetpgrp (shell_tty, shell_pgrp); + if (shell_tty != -1) + tcsetpgrp (shell_tty, shell_pgrp); } while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1) @@ -3829,7 +4087,7 @@ initialize_job_control (force) { SigHandler *ottin; - ottin = set_signal_handler(SIGTTIN, SIG_DFL); + ottin = set_signal_handler (SIGTTIN, SIG_DFL); kill (0, SIGTTIN); set_signal_handler (SIGTTIN, ottin); continue; @@ -3891,6 +4149,8 @@ initialize_job_control (force) internal_error (_("no job control in this shell")); } + running_in_background = terminal_pgrp != shell_pgrp; + if (shell_tty != fileno (stderr)) SET_CLOSE_ON_EXEC (shell_tty); @@ -3906,6 +4166,11 @@ initialize_job_control (force) if (js.c_childmax < 0) js.c_childmax = DEFAULT_CHILD_MAX; +#if 0 + if (js.c_childmax > MAX_CHILD_MAX) + js.c_childmax = MAX_CHILD_MAX; +#endif + return job_control; } @@ -3994,7 +4259,7 @@ initialize_job_signals () old_ttin = set_signal_handler (SIGTTIN, sigstop_sighandler); old_ttou = set_signal_handler (SIGTTOU, sigstop_sighandler); } - /* Leave these things alone for non-interactive shells without job + /* Leave disposition unmodified for non-interactive shells without job control. */ } @@ -4089,7 +4354,7 @@ maybe_give_terminal_to (opgrp, npgrp, flags) else if (tpgrp != opgrp) { #if defined (DEBUG) - internal_warning ("maybe_give_terminal_to: terminal pgrp == %d shell pgrp = %d new pgrp = %d", tpgrp, opgrp, npgrp); + internal_warning ("%d: maybe_give_terminal_to: terminal pgrp == %d shell pgrp = %d new pgrp = %d in_background = %d", (int)getpid(), tpgrp, opgrp, npgrp, running_in_background); #endif return -1; } @@ -4126,7 +4391,12 @@ delete_all_jobs (running_only) itrace("delete_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj); #endif if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i)))) - delete_job (i, DEL_WARNSTOPPED); + /* We don't want to add any of these pids to bgpids. If running_only + is non-zero, we don't want to add running jobs to the list. + If we are interested in all jobs, not just running jobs, and + we are going to clear the bgpids list below (bgp_clear()), we + don't need to bother. */ + delete_job (i, DEL_WARNSTOPPED|DEL_NOBGPID); } if (running_only == 0) { @@ -4277,6 +4547,11 @@ mark_dead_jobs_as_notified (force) if (js.c_childmax < 0) js.c_childmax = DEFAULT_CHILD_MAX; +#if 0 + if (js.c_childmax > MAX_CHILD_MAX) + js.c_childmax = MAX_CHILD_MAX; +#endif + /* Don't do anything if the number of dead processes is less than CHILD_MAX and we're not forcing a cleanup. */ if (ndeadproc <= js.c_childmax) @@ -4326,10 +4601,14 @@ itrace("mark_dead_jobs_as_notified: child_max = %d ndead = %d ndeadproc = %d", j /* Here to allow other parts of the shell (like the trap stuff) to freeze and unfreeze the jobs list. */ -void +int freeze_jobs_list () { + int o; + + o = jobs_list_frozen; jobs_list_frozen = 1; + return o; } void @@ -4349,6 +4628,21 @@ set_job_control (arg) old = job_control; job_control = arg; + if (terminal_pgrp == NO_PID) + terminal_pgrp = tcgetpgrp (shell_tty); + + running_in_background = (terminal_pgrp != shell_pgrp); + +#if 0 + if (interactive_shell == 0 && running_in_background == 0 && job_control != old) + { + if (job_control) + initialize_job_signals (); + else + default_tty_job_signals (); + } +#endif + /* If we're turning on job control, reset pipeline_pgrp so make_child will put new child processes into the right pgrp */ if (job_control != old && job_control) diff --git a/jobs.h b/jobs.h index bec9527..4ba3513 100644 --- a/jobs.h +++ b/jobs.h @@ -1,6 +1,6 @@ /* jobs.h -- structures and definitions used by the jobs.c file. */ -/* Copyright (C) 1993-2009 Free Software Foundation, Inc. +/* Copyright (C) 1993-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -61,6 +61,11 @@ typedef struct process { char *command; /* The particular program that is running. */ } PROCESS; +struct pipeline_saver { + struct process *pipeline; + struct pipeline_saver *next; +}; + /* PALIVE really means `not exited' */ #define PSTOPPED(p) (WIFSTOPPED((p)->status)) #define PRUNNING(p) ((p)->running == PS_RUNNING) @@ -137,18 +142,28 @@ struct jobstats { JOB *j_lastasync; /* last async job allocated by stop_pipeline */ }; +/* Revised to accommodate new hash table bgpids implementation. */ +typedef pid_t ps_index_t; + struct pidstat { - struct pidstat *next; - pid_t pid; - int status; + ps_index_t bucket_next; + ps_index_t bucket_prev; + + pid_t pid; + bits16_t status; /* only 8 bits really needed */ }; struct bgpids { - struct pidstat *list; - struct pidstat *end; + struct pidstat *storage; /* storage arena */ + + ps_index_t head; + ps_index_t nalloc; + int npid; }; +#define NO_PIDSTAT (ps_index_t)-1 + #define NO_JOB -1 /* An impossible job array index. */ #define DUP_JOB -2 /* A possible return value for get_job_spec (). */ #define BAD_JOBSPEC -3 /* Bad syntax for job spec. */ @@ -176,9 +191,10 @@ extern void making_children __P((void)); extern void stop_making_children __P((void)); extern void cleanup_the_pipeline __P((void)); extern void save_pipeline __P((int)); -extern void restore_pipeline __P((int)); +extern PROCESS *restore_pipeline __P((int)); extern void start_pipeline __P((void)); extern int stop_pipeline __P((int, COMMAND *)); +extern int discard_pipeline __P((PROCESS *)); extern void append_process __P((char *, pid_t, int, int)); extern void delete_job __P((int, int)); @@ -214,12 +230,14 @@ extern int set_tty_state __P((void)); extern int job_exit_status __P((int)); extern int job_exit_signal __P((int)); -extern int wait_for_single_pid __P((pid_t)); +extern int wait_for_single_pid __P((pid_t, int)); extern void wait_for_background_pids __P((void)); extern int wait_for __P((pid_t)); extern int wait_for_job __P((int)); extern int wait_for_any_job __P((void)); +extern void wait_sigint_cleanup __P((void)); + extern void notify_and_cleanup __P((void)); extern void reap_dead_jobs __P((void)); extern int start_job __P((int, int)); @@ -230,7 +248,7 @@ extern int give_terminal_to __P((pid_t, int)); extern void run_sigchld_trap __P((int)); -extern void freeze_jobs_list __P((void)); +extern int freeze_jobs_list __P((void)); extern void unfreeze_jobs_list __P((void)); extern int set_job_control __P((int)); extern void without_job_control __P((void)); @@ -239,6 +257,7 @@ extern void restart_job_control __P((void)); extern void set_sigchld_handler __P((void)); extern void ignore_tty_job_signals __P((void)); extern void default_tty_job_signals __P((void)); +extern void get_original_tty_job_signals __P((void)); extern void init_job_stats __P((void)); diff --git a/lib/glob/Makefile.in b/lib/glob/Makefile.in index 12cbb61..23bf8c8 100644 --- a/lib/glob/Makefile.in +++ b/lib/glob/Makefile.in @@ -20,7 +20,7 @@ # along with this program. If not, see . srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ @@ -52,7 +52,7 @@ BASHINCDIR = ${topdir}/include INCLUDES = -I. -I../.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) ${INCLUDES} \ +CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) ${INCLUDES} $(CPPFLAGS) \ $(LOCAL_CFLAGS) $(CFLAGS) # Here is a rule for making .o files from .c files that doesn't force diff --git a/lib/glob/glob.c b/lib/glob/glob.c index ac59e8d..7f6eafe 100644 --- a/lib/glob/glob.c +++ b/lib/glob/glob.c @@ -84,7 +84,7 @@ struct globval }; extern void throw_to_top_level __P((void)); -extern int sh_eaccess __P((char *, int)); +extern int sh_eaccess __P((const char *, int)); extern char *sh_makepath __P((const char *, const char *, int)); extern int signal_is_pending __P((int)); extern void run_pending_traps __P((void)); @@ -1061,7 +1061,10 @@ glob_filename (pathname, flags) directory_name = (char *) malloc (directory_len + 1); if (directory_name == 0) /* allocation failed? */ - return (NULL); + { + free (result); + return (NULL); + } bcopy (pathname, directory_name, directory_len); directory_name[directory_len] = '\0'; @@ -1249,7 +1252,12 @@ glob_filename (pathname, flags) (char **)realloc (result, (result_size + l) * sizeof (char *)); if (result == NULL) - goto memory_error; + { + for (l = 0; array[l]; ++l) + free (array[l]); + free ((char *)array); + goto memory_error; + } for (l = 0; array[l] != NULL; ++l) result[result_size++ - 1] = array[l]; @@ -1281,7 +1289,11 @@ only_filename: { result = (char **) realloc ((char *) result, 2 * sizeof (char *)); if (result == NULL) - return (NULL); + { + if (free_dirname) + free (directory_name); + return (NULL); + } /* Handle GX_MARKDIRS here. */ result[0] = (char *) malloc (directory_len + 1); if (result[0] == NULL) diff --git a/lib/glob/gmisc.c b/lib/glob/gmisc.c index 96b1bc0..31906a4 100644 --- a/lib/glob/gmisc.c +++ b/lib/glob/gmisc.c @@ -28,9 +28,14 @@ #include "bashansi.h" #include "shmbutil.h" +#include "chartypes.h" #include "stdc.h" +#ifndef FNM_CASEFOLD +# include "strmatch.h" +#endif + #ifndef LPAREN # define LPAREN '(' #endif @@ -42,25 +47,31 @@ #define WLPAREN L'(' #define WRPAREN L')' +/* Make sure these names continue to agree with what's in smatch.c */ extern char *glob_patscan __P((char *, char *, int)); +extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); + +#define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c)) /* Return 1 of the first character of WSTRING could match the first - character of pattern WPAT. Wide character version. */ + character of pattern WPAT. Wide character version. FLAGS is a + subset of strmatch flags; used to do case-insensitive matching for now. */ int -match_pattern_wchar (wpat, wstring) +match_pattern_wchar (wpat, wstring, flags) wchar_t *wpat, *wstring; + int flags; { wchar_t wc; if (*wstring == 0) - return (0); + return (*wpat == L'*'); /* XXX - allow only * to match empty string */ switch (wc = *wpat++) { default: - return (*wstring == wc); + return (FOLD(*wstring) == FOLD(wc)); case L'\\': - return (*wstring == *wpat); + return (FOLD(*wstring) == FOLD(*wpat)); case L'?': return (*wpat == WLPAREN ? 1 : (*wstring != L'\0')); case L'*': @@ -68,7 +79,7 @@ match_pattern_wchar (wpat, wstring) case L'+': case L'!': case L'@': - return (*wpat == WLPAREN ? 1 : (*wstring == wc)); + return (*wpat == WLPAREN ? 1 : (FOLD(*wstring) == FOLD(wc))); case L'[': return (*wstring != L'\0'); } @@ -221,23 +232,31 @@ extglob_pattern_p (pat) return 0; } +#undef FOLD +#define FOLD(c) ((flags & FNM_CASEFOLD) \ + ? TOLOWER ((unsigned char)c) \ + : ((unsigned char)c)) + /* Return 1 of the first character of STRING could match the first - character of pattern PAT. Used to avoid n2 calls to strmatch(). */ + character of pattern PAT. Used to avoid n2 calls to strmatch(). + FLAGS is a subset of strmatch flags; used to do case-insensitive + matching for now. */ int -match_pattern_char (pat, string) +match_pattern_char (pat, string, flags) char *pat, *string; + int flags; { char c; if (*string == 0) - return (0); + return (*pat == '*'); /* XXX - allow only * to match empty string */ switch (c = *pat++) { default: - return (*string == c); + return (FOLD(*string) == FOLD(c)); case '\\': - return (*string == *pat); + return (FOLD(*string) == FOLD(*pat)); case '?': return (*pat == LPAREN ? 1 : (*string != '\0')); case '*': @@ -245,7 +264,7 @@ match_pattern_char (pat, string) case '+': case '!': case '@': - return (*pat == LPAREN ? 1 : (*string == c)); + return (*pat == LPAREN ? 1 : (FOLD(*string) == FOLD(c))); case '[': return (*string != '\0'); } @@ -378,6 +397,7 @@ bad_bracket: return matlen; } +#if defined (EXTENDED_GLOB) /* Skip characters in PAT and return the final occurrence of DIRSEP. This is only called when extended_glob is set, so we have to skip over extglob patterns x(...) */ @@ -408,3 +428,4 @@ glob_dirscan (pat, dirsep) } return d; } +#endif /* EXTENDED_GLOB */ diff --git a/lib/glob/sm_loop.c b/lib/glob/sm_loop.c index 7e7f538..c3a2aa3 100644 --- a/lib/glob/sm_loop.c +++ b/lib/glob/sm_loop.c @@ -119,9 +119,6 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); break; case '*': /* Match zero or more characters */ - if (p == pe) - return 0; - if ((flags & FNM_PERIOD) && sc == L('.') && (n == string || ((flags & FNM_PATHNAME) && n[-1] == L('/')))) /* `*' cannot match a `.' if it is the first character of the @@ -129,6 +126,9 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); we are matching a pathname. */ return FNM_NOMATCH; + if (p == pe) + return 0; + /* Collapse multiple consecutive `*' and `?', but make sure that one character of the string is consumed for each `?'. */ for (c = *p++; (c == L('?') || c == L('*')); c = *p++) @@ -140,14 +140,26 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); else if ((flags & FNM_EXTMATCH) && c == L('?') && *p == L('(')) /* ) */ { CHAR *newn; + +#if 0 for (newn = n; newn < se; ++newn) { if (EXTMATCH (c, newn, se, p, pe, flags) == 0) return (0); } - /* We didn't match. If we have a `?(...)', we can match 0 - or 1 times. */ - return 0; +#else + /* We can match 0 or 1 times. If we match, return success */ + if (EXTMATCH (c, n, se, p, pe, flags) == 0) + return (0); +#endif + + /* We didn't match the extended glob pattern, but + that's OK, since we can match 0 or 1 occurrences. + We need to skip the glob pattern and see if we + match the rest of the string. */ + newn = PATSCAN (p + 1, pe, 0); + /* If NEWN is 0, we have an ill-formed pattern. */ + p = newn ? newn : pe; } #endif else if (c == L('?')) @@ -187,6 +199,22 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); break; } + /* The wildcards are the last element of the pattern. The name + cannot match completely if we are looking for a pathname and + it contains another slash, unless FNM_LEADING_DIR is set. */ + if (c == L('\0')) + { + int r = (flags & FNM_PATHNAME) == 0 ? 0 : FNM_NOMATCH; + if (flags & FNM_PATHNAME) + { + if (flags & FNM_LEADING_DIR) + r = 0; + else if (MEMCHR (n, L('/'), se - n) == NULL) + r = 0; + } + return r; + } + /* If we've hit the end of the pattern and the last character of the pattern was handled by the loop above, we've succeeded. Otherwise, we need to match that last character. */ @@ -205,13 +233,30 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe); } #endif + /* If we stop at a slash in the pattern and we are looking for a + pathname ([star]/foo), then consume enough of the string to stop + at any slash and then try to match the rest of the pattern. If + the string doesn't contain a slash, fail */ + if (c == L('/') && (flags & FNM_PATHNAME)) + { + while (n < se && *n != L('/')) + ++n; + if (n < se && *n == L('/') && (GMATCH (n+1, se, p, pe, flags) == 0)) + return 0; + return FNM_NOMATCH; /* XXX */ + } + /* General case, use recursion. */ { U_CHAR c1; + const CHAR *endp; + endp = MEMCHR (n, (flags & FNM_PATHNAME) ? L('/') : L('\0'), se - n); + if (endp == 0) + endp = se; c1 = ((flags & FNM_NOESCAPE) == 0 && c == L('\\')) ? *p : c; c1 = FOLD (c1); - for (--p; n < se; ++n) + for (--p; n < endp; ++n) { /* Only call strmatch if the first character indicates a possible match. We can check the first character if @@ -533,7 +578,8 @@ matched: embedded () and []. If DELIM is 0, we scan until a matching `)' because we're scanning a `patlist'. Otherwise, we scan until we see DELIM. In all cases, we never scan past END. The return value is the - first character after the matching DELIM. */ + first character after the matching DELIM or NULL if the pattern is + empty or invalid. */ /*static*/ CHAR * PATSCAN (string, end, delim) CHAR *string, *end; @@ -797,6 +843,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags); #undef STRCOLL #undef STRLEN #undef STRCMP +#undef MEMCHR #undef COLLEQUIV #undef RANGECMP #undef L diff --git a/lib/glob/smatch.c b/lib/glob/smatch.c index 848610a..edc5b95 100644 --- a/lib/glob/smatch.c +++ b/lib/glob/smatch.c @@ -231,6 +231,7 @@ is_cclass (c, name) #define STRCOMPARE strcompare #define EXTMATCH extmatch #define STRCHR(S, C) strchr((S), (C)) +#define MEMCHR(S, C, N) memchr((S), (C), (N)) #define STRCOLL(S1, S2) strcoll((S1), (S2)) #define STRLEN(S) strlen(S) #define STRCMP(S1, S2) strcmp((S1), (S2)) @@ -333,6 +334,8 @@ is_wcclass (wc, name) memset (&state, '\0', sizeof (mbstate_t)); mbs = (char *) malloc (wcslen(name) * MB_CUR_MAX + 1); + if (mbs == 0) + return -1; mbslength = wcsrtombs (mbs, (const wchar_t **)&name, (wcslen(name) * MB_CUR_MAX + 1), &state); if (mbslength == (size_t)-1 || mbslength == (size_t)-2) @@ -363,6 +366,7 @@ is_wcclass (wc, name) #define STRCOMPARE wscompare #define EXTMATCH extmatch_wc #define STRCHR(S, C) wcschr((S), (C)) +#define MEMCHR(S, C, N) wmemchr((S), (C), (N)) #define STRCOLL(S1, S2) wcscoll((S1), (S2)) #define STRLEN(S) wcslen(S) #define STRCMP(S1, S2) wcscmp((S1), (S2)) diff --git a/lib/intl/l10nflist.c b/lib/intl/l10nflist.c index 7556c8c..4ce284a 100644 --- a/lib/intl/l10nflist.c +++ b/lib/intl/l10nflist.c @@ -332,7 +332,10 @@ _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0)) * sizeof (struct loaded_l10nfile *))); if (retval == NULL) - return NULL; + { + free (abs_filename); + return NULL; + } retval->filename = abs_filename; diff --git a/lib/intl/loadmsgcat.c b/lib/intl/loadmsgcat.c index 83ca63f..adbd7b4 100644 --- a/lib/intl/loadmsgcat.c +++ b/lib/intl/loadmsgcat.c @@ -978,7 +978,11 @@ _nl_load_domain (domain_file, domainbinding) data = (struct mo_file_header *) malloc (size); if (data == NULL) - return; + { + if (use_mmap == 0) + close (fd); + return; + } to_read = size; read_ptr = (char *) data; @@ -1019,7 +1023,15 @@ _nl_load_domain (domain_file, domainbinding) domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); if (domain == NULL) - return; + { +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + return; + } domain_file->data = domain; domain->data = (char *) data; diff --git a/lib/intl/localealias.c b/lib/intl/localealias.c index 0d5ded7..7a730db 100644 --- a/lib/intl/localealias.c +++ b/lib/intl/localealias.c @@ -321,7 +321,10 @@ read_alias_file (fname, fname_len) ? alias_len + value_len : 1024)); char *new_pool = (char *) realloc (string_space, new_size); if (new_pool == NULL) - return added; + { + fclose (fp); + return added; + } if (__builtin_expect (string_space != new_pool, 0)) { diff --git a/lib/malloc/Makefile.in b/lib/malloc/Makefile.in index abe0eca..0ef3cfd 100644 --- a/lib/malloc/Makefile.in +++ b/lib/malloc/Makefile.in @@ -16,7 +16,7 @@ # along with this program. If not, see . srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ diff --git a/lib/malloc/malloc.c b/lib/malloc/malloc.c index cd987c0..053305f 100644 --- a/lib/malloc/malloc.c +++ b/lib/malloc/malloc.c @@ -866,8 +866,8 @@ internal_free (mem, file, line, flags) p = (union mhead *) ap - 1; } -#if defined (MALLOC_TRACE) || defined (MALLOC_REGISTER) - if (malloc_trace || malloc_register) +#if defined (MALLOC_TRACE) || defined (MALLOC_REGISTER) || defined (MALLOC_WATCH) + if (malloc_trace || malloc_register || _malloc_nwatch > 0) ubytes = p->mh_nbytes; #endif diff --git a/lib/malloc/stats.c b/lib/malloc/stats.c index 8665918..ae555a1 100644 --- a/lib/malloc/stats.c +++ b/lib/malloc/stats.c @@ -110,7 +110,7 @@ _print_malloc_stats (s, fp) } fprintf (fp, "\nTotal bytes in use: %lu, total bytes free: %lu\n", totused, totfree); - fprintf (fp, "\nTotal bytes requested by application: %lu\n", _mstats.bytesreq); + fprintf (fp, "\nTotal bytes requested by application: %lu\n", (unsigned long)_mstats.bytesreq); fprintf (fp, "Total mallocs: %d, total frees: %d, total reallocs: %d (%d copies)\n", _mstats.nmal, _mstats.nfre, _mstats.nrealloc, _mstats.nrcopy); fprintf (fp, "Total sbrks: %d, total bytes via sbrk: %d\n", diff --git a/lib/malloc/table.c b/lib/malloc/table.c index dfa29e2..97946dc 100644 --- a/lib/malloc/table.c +++ b/lib/malloc/table.c @@ -37,14 +37,25 @@ extern int malloc_register; #ifdef MALLOC_REGISTER -#define FIND_ALLOC 0x01 /* allocate new entry or find existing */ -#define FIND_EXIST 0x02 /* find existing entry */ +extern FILE *_imalloc_fopen __P((char *, char *, char *, char *, size_t)); + +#define FIND_ALLOC 0x01 /* find slot for new allocation */ +#define FIND_EXIST 0x02 /* find slot for existing entry for free() or search */ static int table_count = 0; static int table_allocated = 0; +static int table_bucket_index = REG_TABLE_SIZE-1; static mr_table_t mem_table[REG_TABLE_SIZE]; static mr_table_t mem_overflow; +#ifndef STREQ +#define STREQ(a, b) ((a)[0] == (b)[0] && strcmp(a, b) == 0) +#endif + +static int location_table_index = 0; +static int location_table_count = 0; +static ma_table_t mlocation_table[REG_TABLE_SIZE]; + /* * NOTE: taken from dmalloc (http://dmalloc.com) and modified. */ @@ -72,8 +83,15 @@ which_bucket (mem) { return (mt_hash ((unsigned char *)mem) & (REG_TABLE_SIZE-1)); } + #else #define which_bucket(mem) (mt_hash ((unsigned char *)(mem)) & (REG_TABLE_SIZE-1)); + +#define next_bucket() ((table_bucket_index + 1) & (REG_TABLE_SIZE-1)) +#define next_entry(mem) ((mem == mem_table + REG_TABLE_SIZE - 1) ? mem_table : ++mem) + +#define prev_bucket() (table_bucket_index == 0 ? REG_TABLE_SIZE-1 : table_bucket_index-1) +#define prev_entry(mem) ((mem == mem_table) ? mem_table + REG_TABLE_SIZE - 1 : mem - 1) #endif static mr_table_t * @@ -83,60 +101,37 @@ find_entry (mem, flags) { unsigned int bucket; register mr_table_t *tp; - mr_table_t *endp, *lastp; + mr_table_t *endp; if (mem_overflow.mem == mem) return (&mem_overflow); - bucket = which_bucket (mem); /* get initial hash */ - tp = endp = mem_table + bucket; - lastp = mem_table + REG_TABLE_SIZE; + /* If we want to insert an allocation entry just use the next slot */ + if (flags & FIND_ALLOC) + { + table_bucket_index = next_bucket(); + table_count++; + tp = mem_table + table_bucket_index; + memset(tp, 0, sizeof (mr_table_t)); /* overwrite next existing entry */ + return tp; + } + + tp = endp = mem_table + table_bucket_index; + /* search for last allocation corresponding to MEM, return entry pointer */ while (1) { if (tp->mem == mem) return (tp); - if (tp->mem == 0 && (flags & FIND_ALLOC)) - { - table_count++; - return (tp); - } - tp++; + tp = prev_entry (tp); - if (tp == lastp) /* wrap around */ - tp = mem_table; - - if (tp == endp && (flags & FIND_EXIST)) + /* if we went all the way around and didn't find it, return NULL */ + if (tp == endp) return ((mr_table_t *)NULL); - - if (tp == endp && (flags & FIND_ALLOC)) - break; } - /* oops. table is full. replace an existing free entry. */ - do - { - /* If there are no free entries, punt right away without searching. */ - if (table_allocated == REG_TABLE_SIZE) - break; - - if (tp->flags & MT_FREE) - { - memset(tp, 0, sizeof (mr_table_t)); - return (tp); - } - tp++; - - if (tp == lastp) - tp = mem_table; - } - while (tp != endp); - - /* wow. entirely full. return mem_overflow dummy entry. */ - tp = &mem_overflow; - memset (tp, 0, sizeof (mr_table_t)); - return tp; + return (mr_table_t *)NULL; } mr_table_t * @@ -186,6 +181,8 @@ mregister_alloc (tag, mem, size, file, line) blocked_sigs = 1; } + mlocation_register_alloc (file, line); + tentry = find_entry (mem, FIND_ALLOC); if (tentry == 0) @@ -293,7 +290,9 @@ _register_dump_table(fp) { entry = mem_table[i]; if (entry.mem) - fprintf (fp, "[%d] %p:%d:%s:%s:%s:%d:%d:%d\n", i, + fprintf (fp, "%s[%d] %p:%zu:%s:%s:%s:%d:%d:%d\n", + (i == table_bucket_index) ? "*" : "", + i, entry.mem, entry.size, _entry_flags(entry.flags), entry.func ? entry.func : "unknown", @@ -317,6 +316,105 @@ mregister_table_init () table_count = 0; } +/* Simple for now */ + +static ma_table_t * +find_location_entry (file, line) + const char *file; + int line; +{ + register ma_table_t *tp, *endp; + + endp = mlocation_table + location_table_count; + for (tp = mlocation_table; tp <= endp; tp++) + { + if (tp->line == line && STREQ (file, tp->file)) + return tp; + } + return (ma_table_t *)NULL; +} + +void +mlocation_register_alloc (file, line) + const char *file; + int line; +{ + ma_table_t *lentry; + const char *nfile; + + if (file == 0) + { + mlocation_table[0].nalloc++; + return; + } + + nfile = strrchr (file, '/'); + if (nfile) + nfile++; + else + nfile = file; + + lentry = find_location_entry (nfile, line); + if (lentry == 0) + { + location_table_index++; + if (location_table_index == REG_TABLE_SIZE) + location_table_index = 1; /* slot 0 reserved */ + lentry = mlocation_table + location_table_index; + lentry->file = nfile; + lentry->line = line; + lentry->nalloc = 1; + if (location_table_count < REG_TABLE_SIZE) + location_table_count++; /* clamp at REG_TABLE_SIZE for now */ + } + else + lentry->nalloc++; +} + +static void +_location_dump_table (fp) + FILE *fp; +{ + register ma_table_t *tp, *endp; + + endp = mlocation_table + location_table_count; + for (tp = mlocation_table; tp < endp; tp++) + fprintf (fp, "%s:%d\t%d\n", tp->file ? tp->file : "unknown", + tp->line ? tp->line : 0, + tp->nalloc); +} + +void +mlocation_dump_table () +{ + _location_dump_table (stderr); +} + +#define LOCROOT "/var/tmp/maltrace/locations." + +void +mlocation_write_table () +{ + FILE *fp; + char defname[sizeof (LOCROOT) + 64]; + + fp = _imalloc_fopen ((char *)NULL, (char *)NULL, LOCROOT, defname, sizeof (defname)); + if (fp == 0) + return; /* XXX - no error message yet */ + _location_dump_table (fp); + fclose (fp); +} + +void +mlocation_table_init () +{ + memset (mlocation_table, 0, sizeof (ma_table_t) * REG_TABLE_SIZE); + mlocation_table[0].file = ""; /* reserve slot 0 for unknown locations */ + mlocation_table[0].line = 0; + mlocation_table[0].nalloc = 0; + location_table_count = 1; +} + #endif /* MALLOC_REGISTER */ int diff --git a/lib/malloc/table.h b/lib/malloc/table.h index 41ce9f7..7494f0a 100644 --- a/lib/malloc/table.h +++ b/lib/malloc/table.h @@ -64,6 +64,17 @@ extern void mregister_describe_mem (); extern void mregister_dump_table __P((void)); extern void mregister_table_init __P((void)); +typedef struct ma_table { + const char *file; + int line; + int nalloc; +} ma_table_t; + +extern void mlocation_register_alloc __P((const char *, int)); +extern void mlocation_table_init __P((void)); +extern void mlocation_dump_table __P((void)); +extern void mlocation_write_table __P((void)); + /* NOTE: HASH_MIX taken from dmalloc (http://dmalloc.com) */ /* diff --git a/lib/malloc/trace.c b/lib/malloc/trace.c index 6d93f99..95898b7 100644 --- a/lib/malloc/trace.c +++ b/lib/malloc/trace.c @@ -52,10 +52,10 @@ mtrace_alloc (tag, mem, size, file, line) _mtrace_fp = stderr; if (_mtrace_verbose) - fprintf (_mtrace_fp, "alloc: %s: %p (%d bytes) from '%s:%d'\n", + fprintf (_mtrace_fp, "alloc: %s: %p (%zu bytes) from '%s:%d'\n", tag, mem, size, file ? file : "unknown", line); else - fprintf (_mtrace_fp, "alloc:%p:%d:%s:%d\n", + fprintf (_mtrace_fp, "alloc:%p:%zu:%s:%d\n", mem, size, file ? file : "unknown", line); } diff --git a/lib/readline/Makefile.in b/lib/readline/Makefile.in index acccd02..1291249 100644 --- a/lib/readline/Makefile.in +++ b/lib/readline/Makefile.in @@ -28,7 +28,7 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_VERSION = @PACKAGE_VERSION@ srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ @@ -52,8 +52,10 @@ SHELL = @MAKE_SHELL@ ETAGS = etags -tw CTAGS = ctags -tw +DEBUG = @DEBUG@ + CFLAGS = @CFLAGS@ -LOCAL_CFLAGS = @LOCAL_CFLAGS@ +LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ @@ -175,7 +177,8 @@ bind.o: history.h rlstdc.h callback.o: rlconf.h ansi_stdlib.h callback.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h callback.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h -compat.o: rlstdc.h +compat.o: ${BUILD_DIR}/config.h +compat.o: rlstdc.h rltypedefs.h complete.o: ansi_stdlib.h posixdir.h posixstat.h complete.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h complete.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h @@ -237,6 +240,7 @@ readline.o: posixstat.h ansi_stdlib.h posixjmp.h rltty.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h rltty.o: rltty.h rltty.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h +savestring.o: ${BUILD_DIR}/config.h search.o: rldefs.h ${BUILD_DIR}/config.h rlconf.h search.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h search.o: ansi_stdlib.h history.h rlstdc.h diff --git a/lib/readline/bind.c b/lib/readline/bind.c index 8acf4ac..f1098c4 100644 --- a/lib/readline/bind.c +++ b/lib/readline/bind.c @@ -1,6 +1,6 @@ /* bind.c -- key binding and startup file support for the readline library. */ -/* Copyright (C) 1987-2012 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -74,8 +74,13 @@ Keymap rl_binding_keymap; static int _rl_skip_to_delim PARAMS((char *, int, int)); +#if defined (USE_VARARGS) && defined (PREFER_STDARG) +static void _rl_init_file_error (const char *, ...) __attribute__((__format__ (printf, 1, 2))); +#else +static void _rl_init_file_error (); +#endif + static char *_rl_read_file PARAMS((char *, size_t *)); -static void _rl_init_file_error PARAMS((const char *)); static int _rl_read_init_file PARAMS((const char *, int)); static int glean_key_from_name PARAMS((char *)); @@ -117,6 +122,9 @@ rl_bind_key (key, function) int key; rl_command_func_t *function; { + char keyseq[3]; + int l; + if (key < 0) return (key); @@ -135,8 +143,24 @@ rl_bind_key (key, function) return (key); } - _rl_keymap[key].type = ISFUNC; - _rl_keymap[key].function = function; + /* If it's bound to a function or macro, just overwrite. Otherwise we have + to treat it as a key sequence so rl_generic_bind handles shadow keymaps + for us. If we are binding '\' make sure to escape it so it makes it + through the call to rl_translate_keyseq. */ + if (_rl_keymap[key].type != ISKMAP) + { + _rl_keymap[key].type = ISFUNC; + _rl_keymap[key].function = function; + } + else + { + l = 0; + if (key == '\\') + keyseq[l++] = '\\'; + keyseq[l++] = key; + keyseq[l] = '\0'; + rl_bind_keyseq (keyseq, function); + } rl_binding_keymap = _rl_keymap; return (0); } @@ -542,7 +566,7 @@ rl_translate_keyseq (seq, array, len) case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': i++; - for (temp = 2, c -= '0'; ISOCTAL (seq[i]) && temp--; i++) + for (temp = 2, c -= '0'; ISOCTAL ((unsigned char)seq[i]) && temp--; i++) c = (c * 8) + OCTVALUE (seq[i]); i--; /* auto-increment in for loop */ array[l++] = c & largest_char; @@ -970,14 +994,35 @@ _rl_read_init_file (filename, include_level) } static void -_rl_init_file_error (msg) - const char *msg; +#if defined (PREFER_STDARG) +_rl_init_file_error (const char *format, ...) +#else +_rl_init_file_error (va_alist) + va_dcl +#endif { + va_list args; +#if defined (PREFER_VARARGS) + char *format; +#endif + +#if defined (PREFER_STDARG) + va_start (args, format); +#else + va_start (args); + format = va_arg (args, char *); +#endif + + fprintf (stderr, "readline: "); if (currently_reading_init_file) - _rl_errmsg ("%s: line %d: %s\n", current_readline_init_file, - current_readline_init_lineno, msg); - else - _rl_errmsg ("%s", msg); + fprintf (stderr, "%s: line %d: ", current_readline_init_file, + current_readline_init_lineno); + + vfprintf (stderr, format, args); + fprintf (stderr, "\n"); + fflush (stderr); + + va_end (args); } /* **************************************************************** */ @@ -1197,7 +1242,7 @@ handle_parser_directive (statement) } /* display an error message about the unknown parser directive */ - _rl_init_file_error ("unknown parser directive"); + _rl_init_file_error ("%s: unknown parser directive", directive); return (1); } @@ -1243,7 +1288,7 @@ rl_parse_and_bind (string) { char *funname, *kname; register int c, i; - int key, equivalency; + int key, equivalency, foundmod, foundsep; while (string && whitespace (*string)) string++; @@ -1273,7 +1318,7 @@ rl_parse_and_bind (string) /* If we didn't find a closing quote, abort the line. */ if (string[i] == '\0') { - _rl_init_file_error ("no closing `\"' in key binding"); + _rl_init_file_error ("%s: no closing `\"' in key binding", string); return 1; } else @@ -1285,6 +1330,8 @@ rl_parse_and_bind (string) equivalency = (c == ':' && string[i + 1] == '='); + foundsep = c != 0; + /* Mark the end of the command (or keyname). */ if (string[i]) string[i++] = '\0'; @@ -1374,6 +1421,12 @@ remove_trailing: return 0; } + if (foundsep == 0) + { + _rl_init_file_error ("%s: no key sequence terminator", string); + return 1; + } + /* If this is a new-style key-binding, then do the binding with rl_bind_keyseq (). Otherwise, let the older code deal with it. */ if (*string == '"') @@ -1430,11 +1483,24 @@ remove_trailing: key = glean_key_from_name (kname); /* Add in control and meta bits. */ + foundmod = 0; if (substring_member_of_array (string, _rl_possible_control_prefixes)) - key = CTRL (_rl_to_upper (key)); + { + key = CTRL (_rl_to_upper (key)); + foundmod = 1; + } if (substring_member_of_array (string, _rl_possible_meta_prefixes)) - key = META (key); + { + key = META (key); + foundmod = 1; + } + + if (foundmod == 0 && kname != string) + { + _rl_init_file_error ("%s: unknown key modifier", string); + return 1; + } /* Temporary. Handle old-style keyname with macro-binding. */ if (*funname == '\'' || *funname == '"') @@ -1461,6 +1527,7 @@ remove_trailing: #endif /* PREFIX_META_HACK */ else rl_bind_key (key, rl_named_function (funname)); + return 0; } @@ -1479,6 +1546,7 @@ static const struct { { "blink-matching-paren", &rl_blink_matching_paren, V_SPECIAL }, { "byte-oriented", &rl_byte_oriented, 0 }, #if defined (COLOR_SUPPORT) + { "colored-completion-prefix",&_rl_colored_completion_prefix, 0 }, { "colored-stats", &_rl_colored_stats, 0 }, #endif { "completion-ignore-case", &_rl_completion_case_fold, 0 }, @@ -1486,6 +1554,7 @@ static const struct { { "convert-meta", &_rl_convert_meta_chars_to_ascii, 0 }, { "disable-completion", &rl_inhibit_completion, 0 }, { "echo-control-characters", &_rl_echo_control_chars, 0 }, + { "enable-bracketed-paste", &_rl_enable_bracketed_paste, 0 }, { "enable-keypad", &_rl_enable_keypad, 0 }, { "enable-meta-key", &_rl_enable_meta, 0 }, { "expand-tilde", &rl_complete_with_tilde_expansion, 0 }, @@ -1569,10 +1638,13 @@ static int sv_dispprefix PARAMS((const char *)); static int sv_compquery PARAMS((const char *)); static int sv_compwidth PARAMS((const char *)); static int sv_editmode PARAMS((const char *)); +static int sv_emacs_modestr PARAMS((const char *)); static int sv_histsize PARAMS((const char *)); static int sv_isrchterm PARAMS((const char *)); static int sv_keymap PARAMS((const char *)); static int sv_seqtimeout PARAMS((const char *)); +static int sv_viins_modestr PARAMS((const char *)); +static int sv_vicmd_modestr PARAMS((const char *)); static const struct { const char * const name; @@ -1585,10 +1657,13 @@ static const struct { { "completion-prefix-display-length", V_INT, sv_dispprefix }, { "completion-query-items", V_INT, sv_compquery }, { "editing-mode", V_STRING, sv_editmode }, + { "emacs-mode-string", V_STRING, sv_emacs_modestr }, { "history-size", V_INT, sv_histsize }, { "isearch-terminators", V_STRING, sv_isrchterm }, { "keymap", V_STRING, sv_keymap }, { "keyseq-timeout", V_INT, sv_seqtimeout }, + { "vi-cmd-mode-string", V_STRING, sv_vicmd_modestr }, + { "vi-ins-mode-string", V_STRING, sv_viins_modestr }, { (char *)NULL, 0, (_rl_sv_func_t *)0 } }; @@ -1605,7 +1680,7 @@ find_string_var (name) } /* A boolean value that can appear in a `set variable' command is true if - the value is null or empty, `on' (case-insenstive), or "1". Any other + the value is null or empty, `on' (case-insensitive), or "1". Any other values result in 0 (false). */ static int bool_to_int (value) @@ -1654,10 +1729,14 @@ rl_variable_bind (name, value) i = find_string_var (name); - /* For the time being, unknown variable names or string names without a - handler function are simply ignored. */ + /* For the time being, string names without a handler function are simply + ignored. */ if (i < 0 || string_varlist[i].set_func == 0) - return 0; + { + if (i < 0) + _rl_init_file_error ("%s: unknown variable name", name); + return 0; + } v = (*string_varlist[i].set_func) (value); return v; @@ -1832,7 +1911,7 @@ sv_isrchterm (value) } else { - for (beg = end = 0; whitespace (v[end]) == 0; end++) + for (beg = end = 0; v[end] && whitespace (v[end]) == 0; end++) ; } @@ -1846,7 +1925,96 @@ sv_isrchterm (value) xfree (v); return 0; } - + +extern char *_rl_emacs_mode_str; + +static int +sv_emacs_modestr (value) + const char *value; +{ + if (value && *value) + { + FREE (_rl_emacs_mode_str); + _rl_emacs_mode_str = (char *)xmalloc (2 * strlen (value) + 1); + rl_translate_keyseq (value, _rl_emacs_mode_str, &_rl_emacs_modestr_len); + _rl_emacs_mode_str[_rl_emacs_modestr_len] = '\0'; + return 0; + } + else if (value) + { + FREE (_rl_emacs_mode_str); + _rl_emacs_mode_str = (char *)xmalloc (1); + _rl_emacs_mode_str[_rl_emacs_modestr_len = 0] = '\0'; + return 0; + } + else if (value == 0) + { + FREE (_rl_emacs_mode_str); + _rl_emacs_mode_str = 0; /* prompt_modestr does the right thing */ + _rl_emacs_modestr_len = 0; + return 0; + } + return 1; +} + +static int +sv_viins_modestr (value) + const char *value; +{ + if (value && *value) + { + FREE (_rl_vi_ins_mode_str); + _rl_vi_ins_mode_str = (char *)xmalloc (2 * strlen (value) + 1); + rl_translate_keyseq (value, _rl_vi_ins_mode_str, &_rl_vi_ins_modestr_len); + _rl_vi_ins_mode_str[_rl_vi_ins_modestr_len] = '\0'; + return 0; + } + else if (value) + { + FREE (_rl_vi_ins_mode_str); + _rl_vi_ins_mode_str = (char *)xmalloc (1); + _rl_vi_ins_mode_str[_rl_vi_ins_modestr_len = 0] = '\0'; + return 0; + } + else if (value == 0) + { + FREE (_rl_vi_ins_mode_str); + _rl_vi_ins_mode_str = 0; /* prompt_modestr does the right thing */ + _rl_vi_ins_modestr_len = 0; + return 0; + } + return 1; +} + +static int +sv_vicmd_modestr (value) + const char *value; +{ + if (value && *value) + { + FREE (_rl_vi_cmd_mode_str); + _rl_vi_cmd_mode_str = (char *)xmalloc (2 * strlen (value) + 1); + rl_translate_keyseq (value, _rl_vi_cmd_mode_str, &_rl_vi_cmd_modestr_len); + _rl_vi_cmd_mode_str[_rl_vi_cmd_modestr_len] = '\0'; + return 0; + } + else if (value) + { + FREE (_rl_vi_cmd_mode_str); + _rl_vi_cmd_mode_str = (char *)xmalloc (1); + _rl_vi_cmd_mode_str[_rl_vi_cmd_modestr_len = 0] = '\0'; + return 0; + } + else if (value == 0) + { + FREE (_rl_vi_cmd_mode_str); + _rl_vi_cmd_mode_str = 0; /* prompt_modestr does the right thing */ + _rl_vi_cmd_modestr_len = 0; + return 0; + } + return 1; +} + /* Return the character which matches NAME. For example, `Space' returns ' '. */ @@ -2420,6 +2588,12 @@ _rl_get_string_variable_value (name) sprintf (numbuf, "%d", _rl_keyseq_timeout); return (numbuf); } + else if (_rl_stricmp (name, "emacs-mode-string") == 0) + return (_rl_emacs_mode_str ? _rl_emacs_mode_str : RL_EMACS_MODESTR_DEFAULT); + else if (_rl_stricmp (name, "vi-cmd-mode-string") == 0) + return (_rl_vi_cmd_mode_str ? _rl_vi_cmd_mode_str : RL_VI_CMD_MODESTR_DEFAULT); + else if (_rl_stricmp (name, "vi-ins-mode-string") == 0) + return (_rl_vi_ins_mode_str ? _rl_vi_ins_mode_str : RL_VI_INS_MODESTR_DEFAULT); else return (0); } diff --git a/lib/readline/callback.c b/lib/readline/callback.c index 6bb2c3e..cc3ce11 100644 --- a/lib/readline/callback.c +++ b/lib/readline/callback.c @@ -1,6 +1,6 @@ /* callback.c -- functions to use readline as an X `callback' mechanism. */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -50,6 +50,14 @@ _rl_callback_func_t *_rl_callback_func = 0; _rl_callback_generic_arg *_rl_callback_data = 0; +/* Applications can set this to non-zero to have readline's signal handlers + installed during the entire duration of reading a complete line, as in + readline-6.2. This should be used with care, because it can result in + readline receiving signals and not handling them until it's called again + via rl_callback_read_char, thereby stealing them from the application. + By default, signal handlers are only active while readline is active. */ +int rl_persistent_signal_handlers = 0; + /* **************************************************************** */ /* */ /* Callback Readline Functions */ @@ -82,6 +90,11 @@ _rl_callback_newline () if (rl_prep_term_function) (*rl_prep_term_function) (_rl_meta_flag); + +#if defined (HANDLE_SIGNALS) + if (rl_persistent_signal_handlers) + rl_set_signals (); +#endif } readline_internal_setup (); @@ -103,7 +116,8 @@ rl_callback_handler_install (prompt, linefunc) #if defined (HANDLE_SIGNALS) #define CALLBACK_READ_RETURN() \ do { \ - rl_clear_signals (); \ + if (rl_persistent_signal_handlers == 0) \ + rl_clear_signals (); \ return; \ } while (0) #else @@ -140,7 +154,8 @@ rl_callback_read_char () #if defined (HANDLE_SIGNALS) /* Install signal handlers only when readline has control. */ - rl_set_signals (); + if (rl_persistent_signal_handlers == 0) + rl_set_signals (); #endif do @@ -161,6 +176,36 @@ rl_callback_read_char () CALLBACK_READ_RETURN (); } #if defined (VI_MODE) + /* States that can occur while in state VIMOTION have to be checked + before RL_STATE_VIMOTION */ + else if (RL_ISSTATE (RL_STATE_CHARSEARCH)) + { + int k; + + k = _rl_callback_data->i2; + + eof = (*_rl_callback_func) (_rl_callback_data); + /* If the function `deregisters' itself, make sure the data is + cleaned up. */ + if (_rl_callback_func == 0) /* XXX - just sanity check */ + { + if (_rl_callback_data) + { + _rl_callback_data_dispose (_rl_callback_data); + _rl_callback_data = 0; + } + } + + /* Messy case where vi motion command can be char search */ + if (RL_ISSTATE (RL_STATE_VIMOTION)) + { + _rl_vi_domove_motion_cleanup (k, _rl_vimvcxt); + _rl_internal_char_cleanup (); + CALLBACK_READ_RETURN (); + } + + _rl_internal_char_cleanup (); + } else if (RL_ISSTATE (RL_STATE_VIMOTION)) { eof = _rl_vi_domove_callback (_rl_vimvcxt); @@ -284,10 +329,36 @@ _rl_callback_data_alloc (count) return arg; } -void _rl_callback_data_dispose (arg) +void +_rl_callback_data_dispose (arg) _rl_callback_generic_arg *arg; { xfree (arg); } +/* Make sure that this agrees with cases in rl_callback_read_char */ +void +rl_callback_sigcleanup () +{ + if (RL_ISSTATE (RL_STATE_CALLBACK) == 0) + return; + + if (RL_ISSTATE (RL_STATE_ISEARCH)) + _rl_isearch_cleanup (_rl_iscxt, 0); + else if (RL_ISSTATE (RL_STATE_NSEARCH)) + _rl_nsearch_cleanup (_rl_nscxt, 0); + else if (RL_ISSTATE (RL_STATE_VIMOTION)) + RL_UNSETSTATE (RL_STATE_VIMOTION); + else if (RL_ISSTATE (RL_STATE_NUMERICARG)) + { + _rl_argcxt = 0; + RL_UNSETSTATE (RL_STATE_NUMERICARG); + } + else if (RL_ISSTATE (RL_STATE_MULTIKEY)) + RL_UNSETSTATE (RL_STATE_MULTIKEY); + if (RL_ISSTATE (RL_STATE_CHARSEARCH)) + RL_UNSETSTATE (RL_STATE_CHARSEARCH); + + _rl_callback_func = 0; +} #endif diff --git a/lib/readline/chardefs.h b/lib/readline/chardefs.h index 1fa1b08..3cf1326 100644 --- a/lib/readline/chardefs.h +++ b/lib/readline/chardefs.h @@ -1,6 +1,6 @@ /* chardefs.h -- Character definitions for readline. */ -/* Copyright (C) 1994-2009 Free Software Foundation, Inc. +/* Copyright (C) 1994-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -73,7 +73,7 @@ #endif #if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus) -# define isxdigit(c) (isdigit((c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) +# define isxdigit(c) (isdigit((unsigned char)(c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) #endif #if defined (CTYPE_NON_ASCII) @@ -87,13 +87,13 @@ /* Beware: these only work with single-byte ASCII characters. */ -#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum (c)) -#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) -#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) -#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c)) -#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c)) -#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper (c)) -#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit (c)) +#define ISALNUM(c) (IN_CTYPE_DOMAIN (c) && isalnum ((unsigned char)c)) +#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha ((unsigned char)c)) +#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit ((unsigned char)c)) +#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower ((unsigned char)c)) +#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint ((unsigned char)c)) +#define ISUPPER(c) (IN_CTYPE_DOMAIN (c) && isupper ((unsigned char)c)) +#define ISXDIGIT(c) (IN_CTYPE_DOMAIN (c) && isxdigit ((unsigned char)c)) #define _rl_lowercase_p(c) (NON_NEGATIVE(c) && ISLOWER(c)) #define _rl_uppercase_p(c) (NON_NEGATIVE(c) && ISUPPER(c)) diff --git a/lib/readline/colors.c b/lib/readline/colors.c index 89d9035..7859f5d 100644 --- a/lib/readline/colors.c +++ b/lib/readline/colors.c @@ -2,8 +2,8 @@ Modified by Chet Ramey for Readline. - Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012 Free Software Foundation, - Inc. + Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015 + 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 @@ -98,9 +98,29 @@ _rl_set_normal_color (void) } } +bool +_rl_print_prefix_color (void) +{ + struct bin_str *s; + + /* What do we want to use for the prefix? Let's try cyan first, see colors.h */ + s = &_rl_color_indicator[C_PREFIX]; + if (s->string != NULL) + { + if (is_colored (C_NORM)) + restore_default_color (); + _rl_put_indicator (&_rl_color_indicator[C_LEFT]); + _rl_put_indicator (s); + _rl_put_indicator (&_rl_color_indicator[C_RIGHT]); + return 0; + } + else + return 1; +} + /* Returns whether any color sequence was printed. */ bool -_rl_print_color_indicator (char *f) +_rl_print_color_indicator (const char *f) { enum indicator_no colored_filetype; COLOR_EXT_TYPE *ext; /* Color extension */ @@ -108,10 +128,9 @@ _rl_print_color_indicator (char *f) const char* name; char *filename; - struct stat astat; + struct stat astat, linkstat; mode_t mode; - int linkok; - + int linkok; /* 1 == ok, 0 == dangling symlink, -1 == missing */ int stat_ok; name = f; @@ -130,10 +149,20 @@ _rl_print_color_indicator (char *f) #else stat_ok = stat(name, &astat); #endif - if( stat_ok == 0 ) { - mode = astat.st_mode; - linkok = 1; //f->linkok; - } + if (stat_ok == 0) + { + mode = astat.st_mode; +#if defined (HAVE_LSTAT) + if (S_ISLNK (mode)) + { + linkok = stat (name, &linkstat) == 0; + if (linkok && strncmp (_rl_color_indicator[C_LINK].string, "target", 6) == 0) + mode = linkstat.st_mode; + } + else +#endif + linkok = 1; + } else linkok = -1; @@ -141,6 +170,8 @@ _rl_print_color_indicator (char *f) if (linkok == -1 && _rl_color_indicator[C_MISSING].string != NULL) colored_filetype = C_MISSING; + else if (linkok == 0 && S_ISLNK(mode) && _rl_color_indicator[C_ORPHAN].string != NULL) + colored_filetype = C_ORPHAN; /* dangling symlink */ else if(stat_ok != 0) { static enum indicator_no filetype_indicator[] = FILETYPE_INDICATORS; @@ -181,10 +212,7 @@ _rl_print_color_indicator (char *f) #endif } else if (S_ISLNK (mode)) - colored_filetype = ((linkok == 0 - && (!strncmp (_rl_color_indicator[C_LINK].string, "target", 6) - || _rl_color_indicator[C_ORPHAN].string)) - ? C_ORPHAN : C_LINK); + colored_filetype = C_LINK; else if (S_ISFIFO (mode)) colored_filetype = C_FIFO; else if (S_ISSOCK (mode)) diff --git a/lib/readline/colors.h b/lib/readline/colors.h index fc926e5..6561ad9 100644 --- a/lib/readline/colors.h +++ b/lib/readline/colors.h @@ -2,8 +2,8 @@ Modified by Chet Ramey for Readline. - Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012 Free Software Foundation, - Inc. + Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015 + 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 @@ -114,9 +114,13 @@ enum filetype arg_directory }; +/* Prefix color, currently same as socket */ +#define C_PREFIX C_SOCK + extern void _rl_put_indicator (const struct bin_str *ind); extern void _rl_set_normal_color (void); -extern bool _rl_print_color_indicator (char *f); +extern bool _rl_print_prefix_color (void); +extern bool _rl_print_color_indicator (const char *f); extern void _rl_prep_non_filename_text (void); #endif /* !_COLORS_H_ */ diff --git a/lib/readline/complete.c b/lib/readline/complete.c index 3d36e92..0a81129 100644 --- a/lib/readline/complete.c +++ b/lib/readline/complete.c @@ -1,6 +1,6 @@ /* complete.c -- filename completion for readline. */ -/* Copyright (C) 1987-2012 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 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. @@ -111,8 +111,10 @@ static int stat_char PARAMS((char *)); #endif #if defined (COLOR_SUPPORT) -static int colored_stat_start PARAMS((char *)); +static int colored_stat_start PARAMS((const char *)); static void colored_stat_end PARAMS((void)); +static int colored_prefix_start PARAMS((void)); +static void colored_prefix_end PARAMS((void)); #endif static int path_isdir PARAMS((const char *)); @@ -126,7 +128,7 @@ static int get_y_or_n PARAMS((int)); static int _rl_internal_pager PARAMS((int)); static char *printable_part PARAMS((char *)); static int fnwidth PARAMS((const char *)); -static int fnprint PARAMS((const char *, int)); +static int fnprint PARAMS((const char *, int, const char *)); static int print_filename PARAMS((char *, char *, int)); static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int)); @@ -172,7 +174,7 @@ int _rl_complete_mark_symlink_dirs = 0; int _rl_print_completions_horizontally; /* Non-zero means that case is not significant in filename completion. */ -#if defined (__MSDOS__) && !defined (__DJGPP__) +#if (defined (__MSDOS__) && !defined (__DJGPP__)) || (defined (_WIN32) && !defined (__CYGWIN__)) int _rl_completion_case_fold = 1; #else int _rl_completion_case_fold = 0; @@ -209,6 +211,10 @@ int rl_visible_stats = 0; /* Non-zero means to use colors to indicate file type when listing possible completions. The colors used are taken from $LS_COLORS, if set. */ int _rl_colored_stats = 0; + +/* Non-zero means to use a color (currently magenta) to indicate the common + prefix of a set of possible word completions. */ +int _rl_colored_completion_prefix = 0; #endif /* If non-zero, when completing in the middle of a word, don't insert @@ -404,6 +410,8 @@ static int completion_changed_buffer; /* The result of the query to the user about displaying completion matches */ static int completion_y_or_n; +static int _rl_complete_display_matches_interrupt = 0; + /*************************************/ /* */ /* Bindable completion functions */ @@ -487,7 +495,10 @@ _rl_complete_sigcleanup (sig, ptr) void *ptr; { if (sig == SIGINT) /* XXX - for now */ - _rl_free_match_list ((char **)ptr); + { + _rl_free_match_list ((char **)ptr); + _rl_complete_display_matches_interrupt = 1; + } } /* Set default values for readline word completion. These are the variables @@ -505,6 +516,9 @@ set_completion_defaults (what_to_do) /* The completion entry function may optionally change this. */ rl_completion_mark_symlink_dirs = _rl_complete_mark_symlink_dirs; + + /* Reset private state. */ + _rl_complete_display_matches_interrupt = 0; } /* The user must press "y" or "n". Non-zero return means "y" pressed. */ @@ -638,11 +652,23 @@ stat_char (filename) #endif else if (S_ISREG (finfo.st_mode)) { +#if defined (_WIN32) && !defined (__CYGWIN__) + char *ext; + + /* Windows doesn't do access and X_OK; check file extension instead */ + ext = strrchr (fn, '.'); + if (ext && (_rl_stricmp (ext, ".exe") == 0 || + _rl_stricmp (ext, ".cmd") == 0 || + _rl_stricmp (ext, ".bat") == 0 || + _rl_stricmp (ext, ".com") == 0)) + character = '*'; +#else if (access (filename, X_OK) == 0) character = '*'; +#endif } - free (f); + xfree (f); return (character); } #endif /* VISIBLE_STATS */ @@ -650,7 +676,7 @@ stat_char (filename) #if defined (COLOR_SUPPORT) static int colored_stat_start (filename) - char *filename; + const char *filename; { _rl_set_normal_color (); return (_rl_print_color_indicator (filename)); @@ -662,6 +688,19 @@ colored_stat_end () _rl_prep_non_filename_text (); _rl_put_indicator (&_rl_color_indicator[C_CLR_TO_EOL]); } + +static int +colored_prefix_start () +{ + _rl_set_normal_color (); + return (_rl_print_prefix_color ()); +} + +static void +colored_prefix_end () +{ + colored_stat_end (); /* for now */ +} #endif /* Return the portion of PATHNAME that should be output when listing @@ -682,7 +721,7 @@ printable_part (pathname) return (pathname); temp = strrchr (pathname, '/'); -#if defined (__MSDOS__) +#if defined (__MSDOS__) || defined (_WIN32) if (temp == 0 && ISALPHA ((unsigned char)pathname[0]) && pathname[1] == ':') temp = pathname + 1; #endif @@ -761,12 +800,14 @@ fnwidth (string) #define ELLIPSIS_LEN 3 static int -fnprint (to_print, prefix_bytes) +fnprint (to_print, prefix_bytes, real_pathname) const char *to_print; int prefix_bytes; + const char *real_pathname; { int printed_len, w; const char *s; + int common_prefix_len, print_len; #if defined (HANDLE_MULTIBYTE) mbstate_t ps; const char *end; @@ -774,18 +815,26 @@ fnprint (to_print, prefix_bytes) int width; wchar_t wc; - end = to_print + strlen (to_print) + 1; + print_len = strlen (to_print); + end = to_print + print_len + 1; memset (&ps, 0, sizeof (mbstate_t)); #endif - printed_len = 0; + printed_len = common_prefix_len = 0; /* Don't print only the ellipsis if the common prefix is one of the - possible completions */ - if (to_print[prefix_bytes] == '\0') + possible completions. Only cut off prefix_bytes if we're going to be + printing the ellipsis, which takes precedence over coloring the + completion prefix (see print_filename() below). */ + if (_rl_completion_prefix_display_length > 0 && prefix_bytes >= print_len) prefix_bytes = 0; - if (prefix_bytes) +#if defined (COLOR_SUPPORT) + if (_rl_colored_stats && (prefix_bytes == 0 || _rl_colored_completion_prefix <= 0)) + colored_stat_start (real_pathname); +#endif + + if (prefix_bytes && _rl_completion_prefix_display_length > 0) { char ellipsis; @@ -794,6 +843,15 @@ fnprint (to_print, prefix_bytes) putc (ellipsis, rl_outstream); printed_len = ELLIPSIS_LEN; } +#if defined (COLOR_SUPPORT) + else if (prefix_bytes && _rl_colored_completion_prefix > 0) + { + common_prefix_len = prefix_bytes; + prefix_bytes = 0; + /* XXX - print color indicator start here */ + colored_prefix_start (); + } +#endif s = to_print + prefix_bytes; while (*s) @@ -844,8 +902,25 @@ fnprint (to_print, prefix_bytes) printed_len++; #endif } + if (common_prefix_len > 0 && (s - to_print) >= common_prefix_len) + { +#if defined (COLOR_SUPPORT) + /* printed bytes = s - to_print */ + /* printed bytes should never be > but check for paranoia's sake */ + colored_prefix_end (); + if (_rl_colored_stats) + colored_stat_start (real_pathname); /* XXX - experiment */ +#endif + common_prefix_len = 0; + } } +#if defined (COLOR_SUPPORT) + /* XXX - unconditional for now */ + if (_rl_colored_stats) + colored_stat_end (); +#endif + return printed_len; } @@ -866,7 +941,7 @@ print_filename (to_print, full_pathname, prefix_bytes) /* Defer printing if we want to prefix with a color indicator */ if (_rl_colored_stats == 0 || rl_filename_completion_desired == 0) #endif - printed_len = fnprint (to_print, prefix_bytes); + printed_len = fnprint (to_print, prefix_bytes, to_print); if (rl_filename_completion_desired && ( #if defined (VISIBLE_STATS) @@ -928,20 +1003,17 @@ print_filename (to_print, full_pathname, prefix_bytes) { dn = savestring (new_full_pathname); (*rl_filename_stat_hook) (&dn); - free (new_full_pathname); + xfree (new_full_pathname); new_full_pathname = dn; } if (path_isdir (new_full_pathname)) extension_char = '/'; } + /* Move colored-stats code inside fnprint() */ #if defined (COLOR_SUPPORT) if (_rl_colored_stats) - { - colored_stat_start (new_full_pathname); - printed_len = fnprint (to_print, prefix_bytes); - colored_stat_end (); - } + printed_len = fnprint (to_print, prefix_bytes, new_full_pathname); #endif xfree (new_full_pathname); @@ -958,15 +1030,11 @@ print_filename (to_print, full_pathname, prefix_bytes) if (_rl_complete_mark_directories && path_isdir (s)) extension_char = '/'; + /* Move colored-stats code inside fnprint() */ #if defined (COLOR_SUPPORT) if (_rl_colored_stats) - { - colored_stat_start (s); - printed_len = fnprint (to_print, prefix_bytes); - colored_stat_end (); - } + printed_len = fnprint (to_print, prefix_bytes, s); #endif - } xfree (s); @@ -1504,15 +1572,29 @@ rl_display_match_list (matches, len, max) if (_rl_completion_prefix_display_length > 0) { t = printable_part (matches[0]); - temp = strrchr (t, '/'); + /* check again in case of /usr/src/ */ + temp = rl_filename_completion_desired ? strrchr (t, '/') : 0; common_length = temp ? fnwidth (temp) : fnwidth (t); sind = temp ? strlen (temp) : strlen (t); + if (common_length > max || sind > max) + common_length = sind = 0; if (common_length > _rl_completion_prefix_display_length && common_length > ELLIPSIS_LEN) max -= common_length - ELLIPSIS_LEN; else common_length = sind = 0; } +#if defined (COLOR_SUPPORT) + else if (_rl_colored_completion_prefix > 0) + { + t = printable_part (matches[0]); + temp = rl_filename_completion_desired ? strrchr (t, '/') : 0; + common_length = temp ? fnwidth (temp) : fnwidth (t); + sind = temp ? RL_STRLEN (temp+1) : RL_STRLEN (t); /* want portion after final slash */ + if (common_length > max || sind > max) + common_length = sind = 0; + } +#endif /* How many items of MAX length can we fit in the screen window? */ cols = complete_get_screenwidth (); @@ -1559,12 +1641,23 @@ rl_display_match_list (matches, len, max) printed_len = print_filename (temp, matches[l], sind); if (j + 1 < limit) - for (k = 0; k < max - printed_len; k++) - putc (' ', rl_outstream); + { + if (max <= printed_len) + putc (' ', rl_outstream); + else + for (k = 0; k < max - printed_len; k++) + putc (' ', rl_outstream); + } } l += count; } rl_crlf (); +#if defined (SIGWINCH) + if (RL_SIG_RECEIVED () && RL_SIGWINCH_RECEIVED() == 0) +#else + if (RL_SIG_RECEIVED ()) +#endif + return; lines++; if (_rl_page_completions && lines >= (_rl_screenheight - 1) && i < count) { @@ -1582,6 +1675,12 @@ rl_display_match_list (matches, len, max) temp = printable_part (matches[i]); printed_len = print_filename (temp, matches[i], sind); /* Have we reached the end of this line? */ +#if defined (SIGWINCH) + if (RL_SIG_RECEIVED () && RL_SIGWINCH_RECEIVED() == 0) +#else + if (RL_SIG_RECEIVED ()) +#endif + return; if (matches[i+1]) { if (limit == 1 || (i && (limit > 1) && (i % limit) == 0)) @@ -1595,6 +1694,8 @@ rl_display_match_list (matches, len, max) return; } } + else if (max <= printed_len) + putc (' ', rl_outstream); else for (k = 0; k < max - printed_len; k++) putc (' ', rl_outstream); @@ -2046,8 +2147,16 @@ rl_complete_internal (what_to_do) { _rl_sigcleanup = _rl_complete_sigcleanup; _rl_sigcleanarg = matches; + _rl_complete_display_matches_interrupt = 0; } display_matches (matches); + if (_rl_complete_display_matches_interrupt) + { + matches = 0; /* already freed by rl_complete_sigcleanup */ + _rl_complete_display_matches_interrupt = 0; + if (rl_signal_event_hook) + (*rl_signal_event_hook) (); /* XXX */ + } _rl_sigcleanup = 0; _rl_sigcleanarg = 0; break; @@ -2073,6 +2182,8 @@ rl_complete_internal (what_to_do) RL_UNSETSTATE(RL_STATE_COMPLETING); _rl_reset_completion_state (); + + RL_CHECK_SIGNALS (); return 0; } @@ -2372,6 +2483,7 @@ rl_filename_completion_function (text, state) static int filename_len; char *temp, *dentry, *convfn; int dirlen, dentlen, convlen; + int tilde_dirname; struct dirent *entry; /* If we don't have any state, then do some initialization. */ @@ -2395,7 +2507,7 @@ rl_filename_completion_function (text, state) temp = strrchr (dirname, '/'); -#if defined (__MSDOS__) +#if defined (__MSDOS__) || defined (_WIN32) /* special hack for //X/... */ if (dirname[0] == '/' && dirname[1] == '/' && ISALPHA ((unsigned char)dirname[2]) && dirname[3] == '/') temp = strrchr (dirname + 3, '/'); @@ -2406,7 +2518,7 @@ rl_filename_completion_function (text, state) strcpy (filename, ++temp); *temp = '\0'; } -#if defined (__MSDOS__) +#if defined (__MSDOS__) || (defined (_WIN32) && !defined (__CYGWIN__)) /* searches from current directory on the drive */ else if (ISALPHA ((unsigned char)dirname[0]) && dirname[1] == ':') { @@ -2429,11 +2541,13 @@ rl_filename_completion_function (text, state) else users_dirname = savestring (dirname); + tilde_dirname = 0; if (*dirname == '~') { temp = tilde_expand (dirname); xfree (dirname); dirname = temp; + tilde_dirname = 1; } /* We have saved the possibly-dequoted version of the directory name @@ -2452,7 +2566,7 @@ rl_filename_completion_function (text, state) xfree (users_dirname); users_dirname = savestring (dirname); } - else if (rl_completion_found_quote && rl_filename_dequoting_function) + else if (tilde_dirname == 0 && rl_completion_found_quote && rl_filename_dequoting_function) { /* delete single and double quotes */ xfree (dirname); diff --git a/lib/readline/display.c b/lib/readline/display.c index 4df1f73..41fb053 100644 --- a/lib/readline/display.c +++ b/lib/readline/display.c @@ -1,6 +1,6 @@ /* display.c -- readline redisplay facility. */ -/* Copyright (C) 1987-2013 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 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. @@ -69,6 +69,12 @@ static void delete_chars PARAMS((int)); static void insert_some_chars PARAMS((char *, int, int)); static void open_some_spaces PARAMS((int)); static void cr PARAMS((void)); +static void redraw_prompt PARAMS((char *)); + +/* Values for FLAGS */ +#define PMT_MULTILINE 0x01 + +static char *expand_prompt PARAMS((char *, int, int *, int *, int *, int *)); /* State of visible and invisible lines. */ struct line_state @@ -77,8 +83,8 @@ struct line_state int *lbreaks; int lbsize; #if defined (HANDLE_MULTIBYTE) - int *wrapped_line; int wbsize; + int *wrapped_line; #endif }; @@ -113,6 +119,8 @@ static int _rl_col_width PARAMS((const char *, int, int, int)); buffer index in others. This macro is used when deciding whether the current cursor position is in the middle of a prompt string containing invisible characters. XXX - might need to take `modmark' into account. */ +/* XXX - only valid when tested against _rl_last_c_pos; buffer indices need + to use prompt_last_invisible directly. */ #define PROMPT_ENDING_INDEX \ ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) ? prompt_physical_chars : prompt_last_invisible+1) @@ -158,6 +166,16 @@ int _rl_want_redisplay = 0; This is usually pointing to rl_prompt. */ char *rl_display_prompt = (char *)NULL; +/* Variables used to include the editing mode in the prompt. */ +char *_rl_emacs_mode_str; +int _rl_emacs_modestr_len; + +char *_rl_vi_ins_mode_str; +int _rl_vi_ins_modestr_len; + +char *_rl_vi_cmd_mode_str; +int _rl_vi_cmd_modestr_len; + /* Pseudo-global variables declared here. */ /* The visible cursor position. If you print some text, adjust this. */ @@ -176,6 +194,8 @@ static int prompt_multibyte_chars; /* Number of lines currently on screen minus 1. */ int _rl_vis_botlin = 0; +static int _rl_inv_botlin = 0; + /* Variables used only in this file. */ /* The last left edge of text that was displayed. This is used when doing horizontal scrolling. It shifts in thirds of a screenwidth. */ @@ -239,16 +259,30 @@ static int saved_local_length; static int saved_invis_chars_first_line; static int saved_physical_chars; -/* Return a character indicating the editing mode, for use in the prompt. */ -static int -prompt_modechar () +/* Return a string indicating the editing mode, for use in the prompt. */ + +static char * +prompt_modestr (lenp) + int *lenp; { if (rl_editing_mode == emacs_mode) - return '@'; + { + if (lenp) + *lenp = _rl_emacs_mode_str ? _rl_emacs_modestr_len : RL_EMACS_MODESTR_DEFLEN; + return _rl_emacs_mode_str ? _rl_emacs_mode_str : RL_EMACS_MODESTR_DEFAULT; + } else if (_rl_keymap == vi_insertion_keymap) - return '+'; /* vi insert mode */ + { + if (lenp) + *lenp = _rl_vi_ins_mode_str ? _rl_vi_ins_modestr_len : RL_VI_INS_MODESTR_DEFLEN; + return _rl_vi_ins_mode_str ? _rl_vi_ins_mode_str : RL_VI_INS_MODESTR_DEFAULT; /* vi insert mode */ + } else - return ':'; /* vi command mode */ + { + if (lenp) + *lenp = _rl_vi_cmd_mode_str ? _rl_vi_cmd_modestr_len : RL_VI_CMD_MODESTR_DEFLEN; + return _rl_vi_cmd_mode_str ? _rl_vi_cmd_mode_str : RL_VI_CMD_MODESTR_DEFAULT; /* vi command mode */ + } } /* Expand the prompt string S and return the number of visible @@ -266,26 +300,37 @@ prompt_modechar () the returned string; all characters except those between \001 and \002 are assumed to be `visible'. */ +/* Possible values for FLAGS: + PMT_MULTILINE caller indicates that this is part of a multiline prompt +*/ + static char * -expand_prompt (pmt, lp, lip, niflp, vlp) +expand_prompt (pmt, flags, lp, lip, niflp, vlp) char *pmt; + int flags; int *lp, *lip, *niflp, *vlp; { - char *r, *ret, *p, *igstart; + char *r, *ret, *p, *igstart, *nprompt, *ms; int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; + int mlen; + + /* We only expand the mode string for the last line of a multiline prompt + (a prompt with embedded newlines). */ + ms = (((pmt == rl_prompt) ^ (flags & PMT_MULTILINE)) && _rl_show_mode_in_prompt) ? prompt_modestr (&mlen) : 0; + if (ms) + { + l = strlen (pmt); + nprompt = (char *)xmalloc (l + mlen + 1); + memcpy (nprompt, ms, mlen); + strcpy (nprompt + mlen, pmt); + } + else + nprompt = pmt; /* Short-circuit if we can. */ - if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (pmt, RL_PROMPT_START_IGNORE) == 0) + if ((MB_CUR_MAX <= 1 || rl_byte_oriented) && strchr (nprompt, RL_PROMPT_START_IGNORE) == 0) { - if (pmt == rl_prompt && _rl_show_mode_in_prompt) - { - l = strlen (pmt); - r = (char *)xmalloc (l + 2); - r[0] = prompt_modechar (); - strcpy (r + 1, pmt); - } - else - r = savestring (pmt); + r = (nprompt == pmt) ? savestring (pmt) : nprompt; if (lp) *lp = strlen (r); @@ -298,21 +343,15 @@ expand_prompt (pmt, lp, lip, niflp, vlp) return r; } - l = strlen (pmt); - r = ret = (char *)xmalloc (l + 2); - - rl = physchars = 0; /* move up here so mode show can set them */ - if (pmt == rl_prompt && _rl_show_mode_in_prompt) - { - *r++ = prompt_modechar (); - rl = physchars = 1; - } + l = strlen (nprompt); /* XXX */ + r = ret = (char *)xmalloc (l + 1); + rl = physchars = 0; /* mode string now part of nprompt */ invfl = 0; /* invisible chars in first line of prompt */ invflset = 0; /* we only want to set invfl once */ - igstart = 0; - for (ignoring = last = ninvis = 0, p = pmt; p && *p; p++) + + for (ignoring = last = ninvis = 0, p = nprompt; p && *p; p++) { /* This code strips the invisible character string markers RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE */ @@ -334,8 +373,8 @@ expand_prompt (pmt, lp, lip, niflp, vlp) #if defined (HANDLE_MULTIBYTE) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) { - pind = p - pmt; - ind = _rl_find_next_mbchar (pmt, pind, 1, MB_FIND_NONZERO); + pind = p - nprompt; + ind = _rl_find_next_mbchar (nprompt, pind, 1, MB_FIND_NONZERO); l = ind - pind; while (l--) *r++ = *p++; @@ -347,7 +386,7 @@ expand_prompt (pmt, lp, lip, niflp, vlp) not be the same as the number of physical characters on the screen in the presence of multibyte characters */ rl += ind - pind; - physchars += _rl_col_width (pmt, pind, ind, 0); + physchars += _rl_col_width (nprompt, pind, ind, 0); } else ninvis += ind - pind; @@ -386,6 +425,10 @@ expand_prompt (pmt, lp, lip, niflp, vlp) *niflp = invfl; if (vlp) *vlp = physchars; + + if (nprompt != pmt) + free (nprompt); + return ret; } @@ -397,7 +440,7 @@ _rl_strip_prompt (pmt) { char *ret; - ret = expand_prompt (pmt, (int *)NULL, (int *)NULL, (int *)NULL, (int *)NULL); + ret = expand_prompt (pmt, 0, (int *)NULL, (int *)NULL, (int *)NULL, (int *)NULL); return ret; } @@ -444,13 +487,13 @@ rl_expand_prompt (prompt) return (0); p = strrchr (prompt, '\n'); - if (!p) + if (p == 0) { /* The prompt is only one logical line, though it might wrap. */ - local_prompt = expand_prompt (prompt, &prompt_visible_length, - &prompt_last_invisible, - &prompt_invis_chars_first_line, - &prompt_physical_chars); + local_prompt = expand_prompt (prompt, 0, &prompt_visible_length, + &prompt_last_invisible, + &prompt_invis_chars_first_line, + &prompt_physical_chars); local_prompt_prefix = (char *)0; local_prompt_len = local_prompt ? strlen (local_prompt) : 0; return (prompt_visible_length); @@ -459,14 +502,16 @@ rl_expand_prompt (prompt) { /* The prompt spans multiple lines. */ t = ++p; - local_prompt = expand_prompt (p, &prompt_visible_length, + local_prompt = expand_prompt (p, PMT_MULTILINE, + &prompt_visible_length, &prompt_last_invisible, &prompt_invis_chars_first_line, &prompt_physical_chars); c = *t; *t = '\0'; /* The portion of the prompt string up to and including the final newline is now null-terminated. */ - local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length, + local_prompt_prefix = expand_prompt (prompt, PMT_MULTILINE, + &prompt_prefix_length, (int *)NULL, (int *)NULL, (int *)NULL); @@ -539,6 +584,7 @@ rl_redisplay () int inv_botlin, lb_botlin, lb_linenum, o_cpos; int newlines, lpos, temp, n0, num, prompt_lines_estimate; char *prompt_this_line; + int mb_cur_max = MB_CUR_MAX; #if defined (HANDLE_MULTIBYTE) wchar_t wc; size_t wc_bytes; @@ -695,6 +741,8 @@ rl_redisplay () /* inv_lbreaks[i] is where line i starts in the buffer. */ inv_lbreaks[newlines = 0] = 0; + /* lpos is a physical cursor position, so it needs to be adjusted by the + number of invisible characters in the prompt, per line */ lpos = prompt_physical_chars + modmark; #if defined (HANDLE_MULTIBYTE) @@ -714,7 +762,17 @@ rl_redisplay () contents of the command line? */ while (lpos >= _rl_screenwidth) { - int z; + int z, p; + int nocorrect, wadjust; + + nocorrect = 0; + /* Adjust depending on the invisible characters in the line. We use a + heuristic based on experience: invisible characters nearly always + appear in the first and last lines of the prompt */ + wadjust = (newlines == 0) + ? prompt_invis_chars_first_line + : ((newlines == prompt_lines_estimate) ? wrap_offset : prompt_invis_chars_first_line); + /* fix from Darin Johnson for prompt string with invisible characters that is longer than the screen width. The prompt_invis_chars_first_line variable could be made into an array @@ -723,20 +781,31 @@ rl_redisplay () prompts that exceed two physical lines? Additional logic fix from Edward Catmur */ #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) { + nocorrect = 1; n0 = num; temp = local_prompt_len; while (num < temp) { - z = _rl_col_width (local_prompt, n0, num, 1); + /* This has to take invisible characters in the prompt into + account. */ + z = _rl_col_width (local_prompt, n0, num, 1) - wadjust; if (z > _rl_screenwidth) { num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); break; } else if (z == _rl_screenwidth) - break; + { + /* If we are in the middle or at the end of a multibyte + character, we want to move to the start, then find out + where it ends so we know where to insert the newline. + If this isn't a multibyte character, its the same as num++ */ + p = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); + num = _rl_find_next_mbchar (local_prompt, p, 1, MB_FIND_ANY); + break; + } num++; } temp = num; @@ -748,16 +817,18 @@ rl_redisplay () /* Now account for invisible characters in the current line. */ /* XXX - this assumes that the invisible characters may be split, but only between the first and the last lines. */ - temp += (newlines == 0) ? prompt_invis_chars_first_line - : ((newlines == prompt_lines_estimate) ? wrap_offset : prompt_invis_chars_first_line); + if (nocorrect == 0) + temp += wadjust; inv_lbreaks[++newlines] = temp; #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) - lpos -= _rl_col_width (local_prompt, n0, num, 1); + /* lpos is a physical cursor position, so it needs to take the invisible + characters into account. */ + if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0) + lpos -= _rl_col_width (local_prompt, n0, num, 1) - wadjust; else #endif - lpos -= _rl_screenwidth; + lpos -= _rl_screenwidth; /* all physical cursor positions */ } prompt_last_screen_line = newlines; @@ -770,7 +841,7 @@ rl_redisplay () lb_linenum = 0; #if defined (HANDLE_MULTIBYTE) in = 0; - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { memset (&ps, 0, sizeof (mbstate_t)); /* XXX - what if wc_bytes ends up <= 0? check for MB_INVALIDCH */ @@ -786,7 +857,7 @@ rl_redisplay () c = (unsigned char)rl_line_buffer[in]; #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { if (MB_INVALIDCH (wc_bytes)) { @@ -895,7 +966,7 @@ rl_redisplay () else { #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { register int i; @@ -931,7 +1002,7 @@ rl_redisplay () } #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { in += wc_bytes; /* XXX - what if wc_bytes ends up <= 0? check for MB_INVALIDCH */ @@ -949,7 +1020,7 @@ rl_redisplay () lb_linenum = newlines; } - inv_botlin = lb_botlin = newlines; + inv_botlin = lb_botlin = _rl_inv_botlin = newlines; CHECK_INV_LBREAKS (); inv_lbreaks[newlines+1] = out; cursor_linenum = lb_linenum; @@ -979,9 +1050,11 @@ rl_redisplay () not the first. */ if (out >= _rl_screenchars) { - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +#if defined (HANDLE_MULTIBYTE) + if (mb_cur_max > 1 && rl_byte_oriented == 0) out = _rl_find_prev_mbchar (line, _rl_screenchars, MB_FIND_ANY); else +#endif out = _rl_screenchars - 1; } @@ -1027,15 +1100,15 @@ rl_redisplay () time update_line is called, then we can assume in our calculations that o_cpos does not need to be adjusted by wrap_offset. */ - if (linenum == 0 && (MB_CUR_MAX > 1 && rl_byte_oriented == 0) && OLD_CPOS_IN_PROMPT()) + if (linenum == 0 && (mb_cur_max > 1 && rl_byte_oriented == 0) && OLD_CPOS_IN_PROMPT()) _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth && - (MB_CUR_MAX > 1 && rl_byte_oriented == 0) && + (mb_cur_max > 1 && rl_byte_oriented == 0) && cpos_adjusted == 0 && _rl_last_c_pos != o_cpos && _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line)) _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line); - + /* If this is the line with the prompt, we might need to compensate for invisible characters in the new line. Do this only if there is not more than one new line (which @@ -1047,7 +1120,7 @@ rl_redisplay () (wrap_offset > visible_wrap_offset) && (_rl_last_c_pos < visible_first_line_len)) { - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) nleft = _rl_screenwidth - _rl_last_c_pos; else nleft = _rl_screenwidth + wrap_offset - _rl_last_c_pos; @@ -1099,7 +1172,7 @@ rl_redisplay () the physical cursor position on the screen stays the same, but the buffer position needs to be adjusted to account for invisible characters. */ - if ((MB_CUR_MAX == 1 || rl_byte_oriented) && cursor_linenum == 0 && wrap_offset) + if ((mb_cur_max == 1 || rl_byte_oriented) && cursor_linenum == 0 && wrap_offset) _rl_last_c_pos += wrap_offset; } @@ -1126,7 +1199,7 @@ rl_redisplay () _rl_output_some_chars ("*", 1); _rl_output_some_chars (local_prompt, nleft); - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft, 1) - wrap_offset + modmark; else _rl_last_c_pos = nleft + modmark; @@ -1150,7 +1223,7 @@ rl_redisplay () if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos) { /* TX == new physical cursor position in multibyte locale. */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) tx = _rl_col_width (&visible_line[pos], 0, nleft, 1) - visible_wrap_offset; else tx = nleft; @@ -1165,7 +1238,7 @@ rl_redisplay () _rl_last_c_pos as an absolute cursor position, but moving to a point specified by a buffer position (NLEFT) that doesn't take invisible characters into account. */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) _rl_move_cursor_relative (nleft, &invisible_line[pos]); else if (nleft != _rl_last_c_pos) _rl_move_cursor_relative (nleft, &invisible_line[pos]); @@ -1246,7 +1319,7 @@ rl_redisplay () _rl_screenwidth + (lmargin ? 0 : wrap_offset), 0); - if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && + if ((mb_cur_max > 1 && rl_byte_oriented == 0) && displaying_prompt_first_line && OLD_CPOS_IN_PROMPT()) _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */ @@ -1318,6 +1391,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) int current_invis_chars; int col_lendiff, col_temp; int bytes_to_insert; + int mb_cur_max = MB_CUR_MAX; #if defined (HANDLE_MULTIBYTE) mbstate_t ps_new, ps_old; int new_offset, old_offset; @@ -1328,7 +1402,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) the exact cursor position and cut-and-paste with certain terminal emulators. In this calculation, TEMP is the physical screen position of the cursor. */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) temp = _rl_last_c_pos; else temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset); @@ -1336,7 +1410,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) && _rl_last_v_pos == current_line - 1) { #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { wchar_t wc; mbstate_t ps; @@ -1350,7 +1424,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) _rl_clear_to_eol (line_state_visible->wrapped_line[current_line]); memset (&ps, 0, sizeof (mbstate_t)); - ret = mbrtowc (&wc, new, MB_CUR_MAX, &ps); + ret = mbrtowc (&wc, new, mb_cur_max, &ps); if (MB_INVALIDCH (ret)) { tempwidth = 1; @@ -1370,7 +1444,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) _rl_last_c_pos = tempwidth; _rl_last_v_pos++; memset (&ps, 0, sizeof (mbstate_t)); - ret = mbrtowc (&wc, old, MB_CUR_MAX, &ps); + ret = mbrtowc (&wc, old, mb_cur_max, &ps); if (ret != 0 && bytes != 0) { if (MB_INVALIDCH (ret)) @@ -1409,7 +1483,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) /* Find first difference. */ #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { /* See if the old line is a subset of the new line, so that the only change is adding characters. */ @@ -1466,7 +1540,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) return; #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_utf8locale) + if (mb_cur_max > 1 && rl_byte_oriented == 0 && _rl_utf8locale) { wchar_t wc; mbstate_t ps = { 0 }; @@ -1475,7 +1549,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) /* If the first character in the difference is a zero-width character, assume it's a combining character and back one up so the two base characters no longer compare equivalently. */ - t = mbrtowc (&wc, ofd, MB_CUR_MAX, &ps); + t = mbrtowc (&wc, ofd, mb_cur_max, &ps); if (t > 0 && UNICODE_COMBINING_CHAR (wc) && WCWIDTH (wc) == 0) { old_offset = _rl_find_prev_mbchar (old, ofd - old, MB_FIND_ANY); @@ -1489,7 +1563,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) wsatend = 1; /* flag for trailing whitespace */ #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY); nls = new + _rl_find_prev_mbchar (new, ne - new, MB_FIND_ANY); @@ -1547,14 +1621,14 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) { if (*ols) /* don't step past the NUL */ { - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) ols = old + _rl_find_next_mbchar (old, ols - old, 1, MB_FIND_ANY); else ols++; } if (*nls) { - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) nls = new + _rl_find_next_mbchar (new, nls - new, 1, MB_FIND_ANY); else nls++; @@ -1566,7 +1640,12 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if (_rl_last_v_pos != current_line) { _rl_move_vert (current_line); - if ((MB_CUR_MAX == 1 || rl_byte_oriented) && current_line == 0 && visible_wrap_offset) + /* We have moved up to a new screen line. This line may or may not have + invisible characters on it, but we do our best to recalculate + visible_wrap_offset based on what we know. */ + if (current_line == 0) + visible_wrap_offset = prompt_invis_chars_first_line; /* XXX */ + if ((mb_cur_max == 1 || rl_byte_oriented) && current_line == 0 && visible_wrap_offset) _rl_last_c_pos += visible_wrap_offset; } @@ -1577,16 +1656,31 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) string, then redraw the entire prompt string. We can only do this reliably if the terminal supports a `cr' capability. + This can also happen if the prompt string has changed, and the first + difference in the line is in the middle of the prompt string, after a + sequence of invisible characters (worst case) and before the end of + the prompt. In this case, we have to redraw the entire prompt string + so that the entire sequence of invisible characters is drawn. We need + to handle the worst case, when the difference is after (or in the middle + of) a sequence of invisible characters that changes the text color and + before the sequence that restores the text color to normal. Then we have + to make sure that the lines still differ -- if they don't, we can + return immediately. + This is not an efficiency hack -- there is a problem with redrawing portions of the prompt string if they contain terminal escape sequences (like drawing the `unbold' sequence without a corresponding `bold') that manifests itself on certain terminals. */ lendiff = local_prompt_len; + if (lendiff > nmax) + lendiff = nmax; od = ofd - old; /* index of first difference in visible line */ + nd = nfd - new; /* nd, od are buffer indexes */ if (current_line == 0 && !_rl_horizontal_scroll_mode && _rl_term_cr && lendiff > prompt_visible_length && _rl_last_c_pos > 0 && - od >= lendiff && _rl_last_c_pos < PROMPT_ENDING_INDEX) + (((od > 0 || nd > 0) && (od <= prompt_last_invisible || nd <= prompt_last_invisible)) || + ((od >= lendiff) && _rl_last_c_pos < PROMPT_ENDING_INDEX))) { #if defined (__MSDOS__) putc ('\r', rl_outstream); @@ -1596,7 +1690,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if (modmark) _rl_output_some_chars ("*", 1); _rl_output_some_chars (local_prompt, lendiff); - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { /* We take wrap_offset into account here so we can pass correct information to _rl_move_cursor_relative. */ @@ -1605,6 +1699,43 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) } else _rl_last_c_pos = lendiff + modmark; + + /* Now if we have printed the prompt string because the first difference + was within the prompt, see if we need to recompute where the lines + differ. Check whether where we are now is past the last place where + the old and new lines are the same and short-circuit now if we are. */ + if ((od <= prompt_last_invisible || nd <= prompt_last_invisible) && + omax == nmax && + lendiff > (ols-old) && lendiff > (nls-new)) + return; + + /* XXX - we need to fix up our calculations if we are now past the + old ofd/nfd and the prompt length (or line length) has changed. + We punt on the problem and do a dumb update. We'd like to be able + to just output the prompt from the beginning of the line up to the + first difference, but you don't know the number of invisible + characters in that case. + This needs a lot of work to be efficient. */ + if ((od <= prompt_last_invisible || nd <= prompt_last_invisible)) + { + nfd = new + lendiff; /* number of characters we output above */ + nd = lendiff; + + /* Do a dumb update and return */ + temp = ne - nfd; + if (temp > 0) + { + _rl_output_some_chars (nfd, temp); + if (mb_cur_max > 1 && rl_byte_oriented == 0) + _rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1); + else + _rl_last_c_pos += temp; + } + if (nmax < omax) + goto clear_rest_of_line; /* XXX */ + else + return; + } } o_cpos = _rl_last_c_pos; @@ -1618,7 +1749,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) /* We need to indicate that the cursor position is correct in the presence of invisible characters in the prompt string. Let's see if setting this when we make sure we're at the end of the drawn prompt string works. */ - if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && + if (current_line == 0 && mb_cur_max > 1 && rl_byte_oriented == 0 && (_rl_last_c_pos > 0 || o_cpos > 0) && _rl_last_c_pos == prompt_physical_chars) cpos_adjusted = 1; @@ -1629,7 +1760,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) col_lendiff == difference on screen (columns) When not using multibyte characters, these are equal */ lendiff = (nls - nfd) - (ols - ofd); - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) col_lendiff = _rl_col_width (new, nfd - new, nls - new, 1) - _rl_col_width (old, ofd - old, ols - old, 1); else col_lendiff = lendiff; @@ -1640,7 +1771,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */ current_invis_chars != visible_wrap_offset) { - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { lendiff += visible_wrap_offset - current_invis_chars; col_lendiff += visible_wrap_offset - current_invis_chars; @@ -1658,7 +1789,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) and writes TEMP bytes. */ /* Insert (diff (len (old), len (new)) ch. */ temp = ne - nfd; - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) col_temp = _rl_col_width (new, nfd - new, ne - new, 1); else col_temp = temp; @@ -1709,7 +1840,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) _rl_last_c_pos == 0 && lendiff > prompt_visible_length && current_invis_chars > 0) == 0) && - (((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && + (((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible) && (col_lendiff < prompt_visible_length)) == 0) && @@ -1717,12 +1848,12 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) { open_some_spaces (col_lendiff); _rl_output_some_chars (nfd, bytes_to_insert); - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) _rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1); else _rl_last_c_pos += bytes_to_insert; } - else if ((MB_CUR_MAX == 1 || rl_byte_oriented != 0) && *ols == 0 && lendiff > 0) + else if ((mb_cur_max == 1 || rl_byte_oriented != 0) && *ols == 0 && lendiff > 0) { /* At the end of a line the characters do not have to be "inserted". They can just be placed on the screen. */ @@ -1737,7 +1868,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) /* If nfd begins before the last invisible character in the prompt, adjust _rl_last_c_pos to account for wrap_offset and set cpos_adjusted to let the caller know. */ - if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) + if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { _rl_last_c_pos -= wrap_offset; cpos_adjusted = 1; @@ -1750,7 +1881,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) /* If nfd begins before the last invisible character in the prompt, adjust _rl_last_c_pos to account for wrap_offset and set cpos_adjusted to let the caller know. */ - if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) + if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible)) { _rl_last_c_pos -= wrap_offset; cpos_adjusted = 1; @@ -1766,11 +1897,15 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) char in the current line (which implies we just output some invisible characters) we need to adjust _rl_last_c_pos, since it represents a physical character position. */ - if ((MB_CUR_MAX > 1 && rl_byte_oriented == 0) && + /* The current_line*rl_screenwidth+prompt_invis_chars_first_line is a + crude attempt to compute how far into the new line buffer we are. + It doesn't work well in the face of multibyte characters and needs + to be rethought. XXX */ + if ((mb_cur_max > 1 && rl_byte_oriented == 0) && current_line == prompt_last_screen_line && wrap_offset && displaying_prompt_first_line && wrap_offset != prompt_invis_chars_first_line && - ((nfd-new) < (prompt_last_invisible-(current_line*_rl_screenwidth)))) + ((nfd-new) < (prompt_last_invisible-(current_line*_rl_screenwidth+prompt_invis_chars_first_line)))) { _rl_last_c_pos -= wrap_offset - prompt_invis_chars_first_line; cpos_adjusted = 1; @@ -1810,7 +1945,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) in a multibyte locale to account for the wrap offset and set cpos_adjusted accordingly. */ _rl_output_some_chars (nfd, bytes_to_insert); - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { _rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1); if (current_line == 0 && wrap_offset && @@ -1845,7 +1980,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) set cpos_adjusted accordingly. */ _rl_output_some_chars (nfd, temp); _rl_last_c_pos += col_temp; /* XXX */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { if (current_line == 0 && wrap_offset && displaying_prompt_first_line && @@ -1859,7 +1994,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin) } clear_rest_of_line: lendiff = (oe - old) - (ne - new); - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) col_lendiff = _rl_col_width (old, 0, oe - old, 1) - _rl_col_width (new, 0, ne - new, 1); else col_lendiff = lendiff; @@ -1869,7 +2004,7 @@ clear_rest_of_line: space_to_eol will insert too many spaces. XXX - maybe we should adjust col_lendiff based on the difference between _rl_last_c_pos and _rl_screenwidth */ - if (col_lendiff && ((MB_CUR_MAX == 1 || rl_byte_oriented) || (_rl_last_c_pos < _rl_screenwidth))) + if (col_lendiff && ((mb_cur_max == 1 || rl_byte_oriented) || (_rl_last_c_pos < _rl_screenwidth))) { if (_rl_term_autowrap && current_line < inv_botlin) space_to_eol (col_lendiff); @@ -1895,6 +2030,34 @@ rl_on_new_line () return 0; } +/* Clear all screen lines occupied by the current readline line buffer + (visible line) */ +int +rl_clear_visible_line () +{ + int curr_line; + + /* Make sure we move to column 0 so we clear the entire line */ +#if defined (__MSDOS__) + putc ('\r', rl_outstream); +#else + tputs (_rl_term_cr, 1, _rl_output_character_function); +#endif + _rl_last_c_pos = 0; + + /* Move to the last screen line of the current visible line */ + _rl_move_vert (_rl_vis_botlin); + + /* And erase screen lines going up to line 0 (first visible line) */ + for (curr_line = _rl_last_v_pos; curr_line >= 0; curr_line--) + { + _rl_move_vert (curr_line); + _rl_clear_to_eol (0); + } + + return 0; +} + /* Tell the update routines that we have moved onto a new line with the prompt already displayed. Code originally from the version of readline distributed with CLISP. rl_expand_prompt must have already been called @@ -1972,11 +2135,25 @@ rl_forced_update_display () return 0; } +/* Redraw only the last line of a multi-line prompt. */ +void +rl_redraw_prompt_last_line () +{ + char *t; + + t = strrchr (rl_display_prompt, '\n'); + if (t) + redraw_prompt (++t); + else + rl_forced_update_display (); +} + /* Move the cursor from _rl_last_c_pos to NEW, which are buffer indices. (Well, when we don't have multibyte characters, _rl_last_c_pos is a buffer index.) DATA is the contents of the screen line of interest; i.e., where - the movement is being done. */ + the movement is being done. + DATA is always the visible line or the invisible line */ void _rl_move_cursor_relative (new, data) int new; @@ -1986,6 +2163,8 @@ _rl_move_cursor_relative (new, data) int woff; /* number of invisible chars on current line */ int cpos, dpos; /* current and desired cursor positions */ int adjust; + int in_invisline; + int mb_cur_max = MB_CUR_MAX; woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset); cpos = _rl_last_c_pos; @@ -1999,7 +2178,7 @@ _rl_move_cursor_relative (new, data) this case, NEW's display position is not obvious and must be calculated. We need to account for invisible characters in this line, as long as we are past them and they are counted by _rl_col_width. */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { adjust = 1; /* Try to short-circuit common cases and eliminate a bunch of multibyte @@ -2024,14 +2203,28 @@ _rl_move_cursor_relative (new, data) if (displaying_prompt_first_line == 0) adjust = 0; + /* yet another special case: printing the last line of a prompt with + multibyte characters and invisible characters whose printable length + exceeds the screen width with the last invisible character + (prompt_last_invisible) in the last line. IN_INVISLINE is the + offset of DATA in invisible_line */ + in_invisline = 0; + if (data > invisible_line && data < invisible_line+inv_lbreaks[_rl_inv_botlin+1]) + in_invisline = data - invisible_line; + /* Use NEW when comparing against the last invisible character in the prompt string, since they're both buffer indices and DPOS is a desired display position. */ + /* NEW is relative to the current displayed line, while + PROMPT_LAST_INVISIBLE is relative to the entire (wrapped) line. + Need a way to reconcile these two variables by turning NEW into a + buffer position relative to the start of the line */ if (adjust && ((new > prompt_last_invisible) || /* XXX - don't use woff here */ - (prompt_physical_chars >= _rl_screenwidth && + (new+in_invisline > prompt_last_invisible) || /* invisible line */ + (prompt_physical_chars >= _rl_screenwidth && /* visible line */ _rl_last_v_pos == prompt_last_screen_line && wrap_offset >= woff && dpos >= woff && - new > (prompt_last_invisible-(_rl_screenwidth*_rl_last_v_pos)-wrap_offset)))) + new > (prompt_last_invisible-(vis_lbreaks[_rl_last_v_pos])-wrap_offset)))) /* XXX last comparison might need to be >= */ { dpos -= woff; @@ -2053,7 +2246,7 @@ _rl_move_cursor_relative (new, data) of moving backwards. */ /* i == current physical cursor position. */ #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) i = _rl_last_c_pos; else #endif @@ -2088,7 +2281,7 @@ _rl_move_cursor_relative (new, data) in the buffer and we have to go back to the beginning of the screen line. In this case, we can use the terminal sequence to move forward if it's available. */ - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + if (mb_cur_max > 1 && rl_byte_oriented == 0) { if (_rl_term_forward_char) { @@ -2246,7 +2439,7 @@ rl_message (va_alist) msg_buf = xmalloc (msg_bufsiz = 128); #if defined (HAVE_VSNPRINTF) - bneed = vsnprintf (msg_buf, msg_bufsiz - 1, format, args); + bneed = vsnprintf (msg_buf, msg_bufsiz, format, args); if (bneed >= msg_bufsiz - 1) { msg_bufsiz = bneed + 1; @@ -2279,10 +2472,10 @@ rl_message (va_alist) local_prompt = (char *)NULL; } rl_display_prompt = msg_buf; - local_prompt = expand_prompt (msg_buf, &prompt_visible_length, - &prompt_last_invisible, - &prompt_invis_chars_first_line, - &prompt_physical_chars); + local_prompt = expand_prompt (msg_buf, 0, &prompt_visible_length, + &prompt_last_invisible, + &prompt_invis_chars_first_line, + &prompt_physical_chars); local_prompt_prefix = (char *)NULL; local_prompt_len = local_prompt ? strlen (local_prompt) : 0; (*rl_redisplay_function) (); @@ -2312,10 +2505,10 @@ rl_message (format, arg1, arg2) FREE (local_prompt_prefix); local_prompt = (char *)NULL; } - local_prompt = expand_prompt (msg_buf, &prompt_visible_length, - &prompt_last_invisible, - &prompt_invis_chars_first_line, - &prompt_physical_chars); + local_prompt = expand_prompt (msg_buf, 0, &prompt_visible_length, + &prompt_last_invisible, + &prompt_invis_chars_first_line, + &prompt_physical_chars); local_prompt_prefix = (char *)NULL; local_prompt_len = local_prompt ? strlen (local_prompt) : 0; (*rl_redisplay_function) (); @@ -2502,7 +2695,7 @@ static void open_some_spaces (col) int col; { -#if !defined (__MSDOS__) && !defined (__MINGW32__) +#if !defined (__MSDOS__) && (!defined (__MINGW32__) || defined (NCURSES_VERSION)) char *buffer; register int i; @@ -2531,7 +2724,7 @@ open_some_spaces (col) for (i = col; i--; ) tputs (_rl_term_ic, 1, _rl_output_character_function); } -#endif /* !__MSDOS__ && !__MINGW32__ */ +#endif /* !__MSDOS__ && (!__MINGW32__ || NCURSES_VERSION)*/ } /* Delete COUNT characters from the display line. */ @@ -2542,7 +2735,7 @@ delete_chars (count) if (count > _rl_screenwidth) /* XXX */ return; -#if !defined (__MSDOS__) && !defined (__MINGW32__) +#if !defined (__MSDOS__) && (!defined (__MINGW32__) || defined (NCURSES_VERSION)) if (_rl_term_DC && *_rl_term_DC) { char *buffer; @@ -2555,7 +2748,7 @@ delete_chars (count) while (count--) tputs (_rl_term_dc, 1, _rl_output_character_function); } -#endif /* !__MSDOS__ && !__MINGW32__ */ +#endif /* !__MSDOS__ && (!__MINGW32__ || NCURSES_VERSION)*/ } void @@ -2618,7 +2811,8 @@ redraw_prompt (t) rl_save_prompt (); rl_display_prompt = t; - local_prompt = expand_prompt (t, &prompt_visible_length, + local_prompt = expand_prompt (t, PMT_MULTILINE, + &prompt_visible_length, &prompt_last_invisible, &prompt_invis_chars_first_line, &prompt_physical_chars); @@ -2699,6 +2893,12 @@ _rl_erase_entire_line () fflush (rl_outstream); } +void +_rl_ttyflush () +{ + fflush (rl_outstream); +} + /* return the `current display line' of the cursor -- the number of lines to move up to get to the first screen line of the current readline line. */ int diff --git a/lib/readline/doc/history.texi b/lib/readline/doc/history.texi index a991fe5..98e2233 100644 --- a/lib/readline/doc/history.texi +++ b/lib/readline/doc/history.texi @@ -12,7 +12,7 @@ This document describes the GNU History library a programming tool that provides a consistent user interface for recalling lines of previously typed input. -Copyright @copyright{} 1988--2014 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2016 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/lib/readline/doc/hstech.texi b/lib/readline/doc/hstech.texi index 6487f20..bba7b59 100644 --- a/lib/readline/doc/hstech.texi +++ b/lib/readline/doc/hstech.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988-2014 Free Software Foundation, Inc. +Copyright (C) 1988-2016 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual @@ -242,6 +242,7 @@ is greater than the history length, return a @code{NULL} pointer. @deftypefun time_t history_get_time (HIST_ENTRY *entry) Return the time stamp associated with the history entry @var{entry}. +If the timestamp is missing or invalid, return 0. @end deftypefun @deftypefun int history_total_bytes (void) @@ -270,9 +271,11 @@ a @code{NULL} pointer. @end deftypefun @deftypefun {HIST_ENTRY *} next_history (void) -Move the current history offset forward to the next history entry, and -return the a pointer to that entry. If there is no next entry, return -a @code{NULL} pointer. +If the current history offset refers to a valid history entry, +increment the current history offset. +If the possibly-incremented history offset refers to a valid history +entry, return a pointer to that entry; +otherwise, return a @code{BNULL} pointer. @end deftypefun @node Searching the History List @@ -467,8 +470,8 @@ carriage return, and @samp{=}. @end deftypevar @deftypevar int history_quotes_inhibit_expansion -If non-zero, single-quoted words are not scanned for the history expansion -character. The default value is 0. +If non-zero, double-quoted words are not scanned for the history expansion +character or the history comment character. The default value is 0. @end deftypevar @deftypevar {rl_linebuf_func_t *} history_inhibit_expansion_function diff --git a/lib/readline/doc/hsuser.texi b/lib/readline/doc/hsuser.texi index 69a5016..04e192e 100644 --- a/lib/readline/doc/hsuser.texi +++ b/lib/readline/doc/hsuser.texi @@ -1,7 +1,7 @@ @ignore This file documents the user interface to the GNU History library. -Copyright (C) 1988--2014 Free Software Foundation, Inc. +Copyright (C) 1988--2016 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. Permission is granted to make and distribute verbatim copies of this manual @@ -102,7 +102,7 @@ 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. +as timestamps for the following history entry. The builtin command @code{fc} may be used to list or edit and re-execute a portion of the history list. @@ -202,9 +202,9 @@ Delete the history entry at position @var{offset}. displayed. @item -a -Append the new -history lines (history lines entered since the beginning of the -current Bash session) to the history file. +Append the new history lines to the history file. +These are history lines entered since the beginning of the current +Bash session, but not already appended to the history file. @item -n Append the history lines not already read from the history file @@ -249,6 +249,11 @@ 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. +@ifset BashFeatures +History expansion is performed immediately after a complete line +is read, before the shell breaks it into words. +@end ifset + 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 @@ -262,7 +267,9 @@ History expansions are introduced by the appearance of the history expansion character, which is @samp{!} by default. @ifset BashFeatures Only @samp{\} and @samp{'} may be used to escape the history expansion -character. +character, but the history expansion character is +also treated as quoted if it immediately precedes the closing double quote +in a double-quoted string. @end ifset @ifset BashFeatures diff --git a/lib/readline/doc/rlman.texi b/lib/readline/doc/rlman.texi index 17a8292..737f971 100644 --- a/lib/readline/doc/rlman.texi +++ b/lib/readline/doc/rlman.texi @@ -13,7 +13,7 @@ This manual describes the GNU Readline Library consistency of user interface across discrete programs which provide a command line interface. -Copyright @copyright{} 1988--2014 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2016 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/lib/readline/doc/rltech.texi b/lib/readline/doc/rltech.texi index 40de49c..b8ce90f 100644 --- a/lib/readline/doc/rltech.texi +++ b/lib/readline/doc/rltech.texi @@ -7,7 +7,7 @@ This document describes the GNU Readline Library, a utility for aiding in the consistency of user interface across discrete programs that need to provide a command line interface. -Copyright (C) 1988--2014 Free Software Foundation, Inc. +Copyright (C) 1988--2016 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -282,7 +282,7 @@ At the very least, it should be aware that it can be passed a negative argument. A command function should return 0 if its action completes successfully, -and a non-zero value if some error occurs. +and a value greater than zero if some error occurs. This is the convention obeyed by all of the builtin Readline bindable command functions. @@ -963,6 +963,10 @@ redisplay. It should be used after setting @var{rl_already_prompted}. @end deftypefun +@deftypefun int rl_clear_visible_line (void) +Clear the screen lines corresponding to the current line's contents. +@end deftypefun + @deftypefun int rl_reset_line_state (void) Reset the display state to a clean state and redisplay the current line starting on a new line. @@ -1020,7 +1024,7 @@ It returns the number of visible characters on the last line of the Applications may indicate that the prompt contains characters that take up no physical screen space when displayed by bracketing a sequence of such characters with the special markers @code{RL_PROMPT_START_IGNORE} -and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h}. This may +and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h}). This may be used to embed terminal-specific escape sequences in prompts. @end deftypefun @@ -1136,6 +1140,14 @@ that the terminal editing characters are bound to @code{rl_insert}. The bindings are performed in @var{kmap}. @end deftypefun +@deftypefun int rl_tty_set_echoing (int value) +Set Readline's idea of whether or not it is echoing output to its output +stream (@var{rl_outstream}). If @var{value} is 0, Readline does not display +output to @var{rl_outstream}; any other value enables output. The initial +value is set when Readline initializes the terminal settings. +This function returns the previous value. +@end deftypefun + @deftypefun int rl_reset_terminal (const char *terminal_name) Reinitialize Readline's idea of the terminal settings using @var{terminal_name} as the terminal type (e.g., @code{vt100}). @@ -1307,6 +1319,8 @@ expanded value of @var{prompt}. Save the value of @var{lhandler} to use as a handler function to call when a complete line of input has been entered. The handler function receives the text of the line as an argument. +As with @code{readline()}, the handler function should @code{free} the +line when it it finished with it. @end deftypefun @deftypefun void rl_callback_read_char (void) @@ -1326,9 +1340,17 @@ the terminal settings are modified for Readline's use again. @code{NULL} line. @end deftypefun +@deftypefun void rl_callback_sigcleanup (void) +Clean up any internal state the callback interface uses to maintain state +between calls to rl_callback_read_char (e.g., the state of any active +incremental searches). This is intended to be used by applications that +wish to perform their own signal handling; Readline's internal signal handler +calls this when appropriate. +@end deftypefun + @deftypefun void rl_callback_handler_remove (void) Restore the terminal to its initial state and remove the line handler. -This may be called from within a callback as well as independently. +You may call this function from within a callback as well as independently. If the @var{lhandler} installed by @code{rl_callback_handler_install} does not exit the program, either this function or the function referred to by the value of @code{rl_deprep_term_function} should be called before @@ -1413,12 +1435,16 @@ It understands the EOF character or "exit" to exit the program. @example /* Standard include files. stdio.h is required. */ #include +#include #include +#include /* Used for select(2) */ #include #include +#include + #include /* Standard readline include files. */ @@ -1426,10 +1452,20 @@ It understands the EOF character or "exit" to exit the program. #include static void cb_linehandler (char *); +static void sighandler (int); int running; +int sigwinch_received; const char *prompt = "rltest$ "; +/* Handle SIGWINCH and window size changes when readline is not active and + reading a character. */ +static void +sighandler (int sig) +@{ + sigwinch_received = 1; +@} + /* Callback function called for each line when accept-line executed, EOF seen, or EOF character read. This sets a flag and returns; it could also call exit(3). */ @@ -1464,6 +1500,13 @@ main (int c, char **v) fd_set fds; int r; + /* Set the default locale values according to environment variables. */ + setlocale (LC_ALL, ""); + + /* Handle window size changes when readline is not active and reading + characters. */ + signal (SIGWINCH, sighandler); + /* Install the line handler. */ rl_callback_handler_install (prompt, cb_linehandler); @@ -1478,12 +1521,19 @@ main (int c, char **v) FD_SET (fileno (rl_instream), &fds); r = select (FD_SETSIZE, &fds, NULL, NULL, NULL); - if (r < 0) + if (r < 0 && errno != EINTR) @{ perror ("rltest: select"); rl_callback_handler_remove (); break; @} + if (sigwinch_received) + @{ + rl_resize_terminal (); + sigwinch_received = 0; + @} + if (r < 0) + continue; if (FD_ISSET (fileno (rl_instream), &fds)) rl_callback_read_char (); @@ -1532,7 +1582,30 @@ resetting the terminal to its original state. If the application's signal handler does more than update its idea of the terminal size and return (for example, a @code{longjmp} back to a main processing loop), it @emph{must} call @code{rl_cleanup_after_signal()} (described below), to restore the -terminal state. +terminal state. + +When an application is using the callback interface +(@pxref{Alternate Interface}), Readline installs signal handlers only for +the duration of the call to @code{rl_callback_read_char}. Applications +using the callback interface should be prepared to clean up Readline's +state if they wish to handle the signal before the line handler completes +and restores the terminal state. + +If an application using the callback interface wishes to have Readline +install its signal handlers at the time the application calls +@code{rl_callback_handler_install} and remove them only when a complete +line of input has been read, it should set the +@code{rl_persistent_signal_handlers} variable to a non-zero value. +This allows an application to defer all of the handling of the signals +Readline catches to Readline. +Applications should use this variable with care; it can result in Readline +catching signals and not acting on them (or allowing the application to react +to them) until the application calls @code{rl_callback_read_char}. This +can result in an application becoming less responsive to keyboard signals +like SIGINT. +If an application does not want or need to perform any signal handling, or +does not need to do any processing between calls to @code{rl_callback_read_char}, +setting this variable may be desirable. Readline provides two variables that allow application writers to control whether or not it will catch certain signals and act on them @@ -1555,6 +1628,15 @@ Readline will install a signal handler for @code{SIGWINCH}. The default value of @code{rl_catch_sigwinch} is 1. @end deftypevar +@deftypevar int rl_persistent_signal_handlers +If an application using the callback interface wishes Readline's signal +handlers to be installed and active during the set of calls to +@code{rl_callback_read_char} that constitutes an entire single line, +it should set this variable to a non-zero value. + +The default value of @code{rl_persistent_signal_handlers} is 0. +@end deftypevar + @deftypevar int rl_change_environment If this variable is set to a non-zero value, and Readline is handling @code{SIGWINCH}, Readline will modify the @@ -1570,6 +1652,11 @@ for example), Readline provides convenience functions to do the necessary terminal and internal state cleanup upon receipt of a signal. +@deftypefun int rl_pending_signal (void) +Return the signal number of the most recent signal Readline received but +has not yet handled, or 0 if there is no pending signal. +@end deftypefun + @deftypefun void rl_cleanup_after_signal (void) This function will reset the state of the terminal to what it was before @code{readline()} was called, and remove the Readline signal handlers for @@ -1942,8 +2029,8 @@ where @var{matches} is the array of matching strings, @var{num_matches} is the number of strings in that array, and @var{max_length} is the length of the longest string in that array. Readline provides a convenience function, @code{rl_display_match_list}, -that takes care of doing the display to Readline's output stream. That -function may be called from this hook. +that takes care of doing the display to Readline's output stream. +You may call that function from this hook. @end deftypevar @deftypevar {const char *} rl_basic_word_break_characters diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi index 0af6c02..4c094c8 100644 --- a/lib/readline/doc/rluser.texi +++ b/lib/readline/doc/rluser.texi @@ -9,7 +9,7 @@ use these features. There is a document entitled "readline.texinfo" which contains both end-user and programmer documentation for the GNU Readline Library. -Copyright (C) 1988--2014 Free Software Foundation, Inc. +Copyright (C) 1988--2016 Free Software Foundation, Inc. Authored by Brian Fox and Chet Ramey. @@ -423,9 +423,23 @@ the terminal's bell. @item bind-tty-special-chars @vindex bind-tty-special-chars -If set to @samp{on}, Readline attempts to bind the control characters -treated specially by the kernel's terminal driver to their Readline -equivalents. +If set to @samp{on} (the default), Readline attempts to bind the control +characters treated specially by the kernel's terminal driver to their +Readline equivalents. + +@item blink-matching-paren +@vindex blink-matching-paren +If set to @samp{on}, Readline attempts to briefly move the cursor to an +opening parenthesis when a closing parenthesis is inserted. The default +is @samp{off}. + +@item colored-completion-prefix +@vindex colored-completion-prefix +If set to @samp{on}, when listing completions, Readline displays the +common prefix of the set of possible completions using a different color. +The color definitions are taken from the value of the @env{LS_COLORS} +environment variable. +The default is @samp{off}. @item colored-stats @vindex colored-stats @@ -485,7 +499,9 @@ The default limit is @code{100}. If set to @samp{on}, Readline will convert characters with the eighth bit set to an @sc{ascii} key sequence by stripping the eighth bit and prefixing an @key{ESC} character, converting them to a -meta-prefixed key sequence. The default value is @samp{on}. +meta-prefixed key sequence. The default value is @samp{on}, but +will be set to @samp{off} if the locale is one that contains +eight-bit characters. @item disable-completion @vindex disable-completion @@ -493,6 +509,12 @@ If set to @samp{On}, Readline will inhibit word completion. Completion characters will be inserted into the line as if they had been mapped to @code{self-insert}. The default is @samp{off}. +@item echo-control-characters +@vindex echo-control-characters +When set to @samp{on}, on operating systems that indicate they support it, +readline echoes a character corresponding to a signal generated from the +keyboard. The default is @samp{on}. + @item editing-mode @vindex editing-mode The @code{editing-mode} variable controls which default set of @@ -500,10 +522,24 @@ 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 @samp{emacs} or @samp{vi}. -@item echo-control-characters -When set to @samp{on}, on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the -keyboard. The default is @samp{on}. +@item emacs-mode-string +@vindex emacs-mode-string +This string is displayed immediately before the last line of the primary +prompt when emacs editing mode is active. The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is @samp{@@}. + +@item enable-bracketed-paste +@vindex enable-bracketed-paste +When set to @samp{On}, Readline will configure the terminal in a way +that will enable it to insert each paste into the editing buffer as a +single string of characters, instead of treating each character as if +it had been read from the keyboard. This can prevent pasted characters +from being interpreted as editing commands. The default is @samp{off}. @item enable-keypad @vindex enable-keypad @@ -537,6 +573,8 @@ 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. +If an attempt is made to set @var{history-size} to a non-numeric value, +the maximum number of history entries will be set to 500. @item horizontal-scroll-mode @vindex horizontal-scroll-mode @@ -552,8 +590,9 @@ this variable is set to @samp{off}. If set to @samp{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 @samp{off}. The name @code{meta-flag} is a -synonym for this variable. +default value is @samp{off}, but Readline will set it to @samp{on} if the +locale contains eight-bit characters. +The name @code{meta-flag} is a synonym for this variable. @item isearch-terminators @vindex isearch-terminators @@ -574,8 +613,9 @@ Acceptable @code{keymap} names are @code{vi-move}, @code{vi-command}, and @code{vi-insert}. -@code{vi} is equivalent to @code{vi-command}; @code{emacs} is -equivalent to @code{emacs-standard}. The default value is @code{emacs}. +@code{vi} is equivalent to @code{vi-command} (@code{vi-move} is also a +synonym); @code{emacs} is equivalent to @code{emacs-standard}. +The default value is @code{emacs}. The value of the @code{editing-mode} variable also affects the default keymap. @@ -631,7 +671,9 @@ the list. The default is @samp{off}. @vindex output-meta If set to @samp{on}, Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape -sequence. The default is @samp{off}. +sequence. +The default is @samp{off}, but Readline will set it to @samp{on} if the +locale contains eight-bit characters. @item page-completions @vindex page-completions @@ -673,8 +715,8 @@ The default value is @samp{off}. @item show-mode-in-prompt @vindex show-mode-in-prompt If set to @samp{on}, add a character to the beginning of the prompt -indicating the editing mode: emacs (@samp{@@}), vi command (@samp{:}), -or vi insertion (@samp{+}). +indicating the editing mode: emacs, vi command, or vi insertion. +The mode strings are user-settable. The default value is @samp{off}. @item skip-completed-text @@ -691,6 +733,30 @@ rather than @samp{Makefilefile}, assuming there is a single possible completion. The default value is @samp{off}. +@item vi-cmd-mode-string +@vindex vi-cmd-mode-string +This string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in command mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is @samp{(cmd)}. + +@item vi-ins-mode-string +@vindex vi-ins-mode-string +This string is displayed immediately before the last line of the primary +prompt when vi editing mode is active and in insertion mode. +The value is expanded like a +key binding, so the standard set of meta- and control prefixes and +backslash escape sequences is available. +Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of +non-printing characters, which can be used to embed a terminal control +sequence into the mode string. +The default is @samp{(ins)}. + @item visible-stats @vindex visible-stats If set to @samp{on}, a character denoting a file's type @@ -1122,17 +1188,19 @@ the history as necessary. This is an incremental search. @item 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. +the history as necessary. This is an incremental search. @item non-incremental-reverse-search-history (M-p) Search backward starting at the current line and moving `up' through the history as necessary using a non-incremental search for a string supplied by the user. +The search string may match anywhere in a history line. @item 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 +through the history as necessary using a non-incremental search for a string supplied by the user. +The search string may match anywhere in a history line. @item history-search-forward () Search forward through the history for the string of characters @@ -1224,6 +1292,14 @@ Insert a tab character. @item self-insert (a, b, A, 1, !, @dots{}) Insert yourself. +@item bracketed-paste-begin () +This function is intended to be bound to the "bracketed paste" escape +sequence sent by some terminals, and such a binding is assigned by default. +It allows Readline to insert the pasted text as a single unit without treating +each character as if it had been read from the keyboard. The characters +are inserted as if each one was bound to @code{self-insert}) instead of +executing any editing commands. + @item transpose-chars (C-t) Drag the character before the cursor forward over the character at the cursor, moving the @@ -1275,7 +1351,7 @@ By default, this command is unbound. Kill the text from point to the end of the line. @item backward-kill-line (C-x Rubout) -Kill backward to the beginning of the line. +Kill backward from the cursor to the beginning of the current line. @item unix-line-discard (C-u) Kill backward from the cursor to the beginning of the current line. @@ -1357,7 +1433,7 @@ leading minus sign, those digits define the argument. If the command is followed by digits, executing @code{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 +character that is neither a digit nor minus sign, the argument count for the next command is multiplied by four. The argument count is initially one, so executing this function the first time makes the argument count four, a second time makes the @@ -1788,6 +1864,10 @@ is removed before attempting a match. Any completion that matches the pattern will be removed from the list. A leading @samp{!} negates the pattern; in this case any completion not matching the pattern will be removed. +If the @code{nocasematch} shell option +(see the description of @code{shopt} in @ref{The Shopt Builtin}) +is enabled, the match is performed without regard to the case +of alphabetic characters. Finally, any prefix and suffix specified with the @option{-P} and @option{-S} options are added to each member of the completion list, and the result is @@ -1941,6 +2021,9 @@ with @option{-F}. Tell Readline not to quote the completed words if they are filenames (quoting filenames is the default). +@item nosort +Tell Readline not to sort the list of possible completions alphabetically. + @item nospace Tell Readline not to append a space (the default) to words completed at the end of the line. diff --git a/lib/readline/doc/rluserman.texi b/lib/readline/doc/rluserman.texi index ba6b0ad..b575438 100644 --- a/lib/readline/doc/rluserman.texi +++ b/lib/readline/doc/rluserman.texi @@ -12,7 +12,7 @@ This manual describes the end user interface of the GNU Readline Library consistency of user interface across discrete programs which provide a command line interface. -Copyright @copyright{} 1988--2014 Free Software Foundation, Inc. +Copyright @copyright{} 1988--2016 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/lib/readline/doc/version.texi b/lib/readline/doc/version.texi index 70b6658..9dc2998 100644 --- a/lib/readline/doc/version.texi +++ b/lib/readline/doc/version.texi @@ -1,10 +1,10 @@ @ignore -Copyright (C) 1988-2014 Free Software Foundation, Inc. +Copyright (C) 1988-2016 Free Software Foundation, Inc. @end ignore -@set EDITION 6.3 -@set VERSION 6.3 -@set UPDATED 6 January 2014 -@set UPDATED-MONTH January 2014 +@set EDITION 7.0 +@set VERSION 7.0 +@set UPDATED 16 July 2016 +@set UPDATED-MONTH July 2016 -@set LASTCHANGE Mon Jan 6 16:26:51 EST 2014 +@set LASTCHANGE Sat Jul 16 13:43:15 EDT 2016 diff --git a/lib/readline/examples/fileman.c b/lib/readline/examples/fileman.c index f7eed8a..c821df0 100644 --- a/lib/readline/examples/fileman.c +++ b/lib/readline/examples/fileman.c @@ -63,6 +63,12 @@ extern char *xmalloc PARAMS((size_t)); +void initialize_readline PARAMS((void)); +void too_dangerous PARAMS((char *)); + +int execute_line PARAMS((char *)); +int valid_argument PARAMS((char *, char *)); + /* The names of functions that actually do the manipulation. */ int com_list PARAMS((char *)); int com_view PARAMS((char *)); @@ -119,6 +125,7 @@ dupstr (s) return (r); } +int main (argc, argv) int argc; char **argv; @@ -241,6 +248,7 @@ char **fileman_completion PARAMS((const char *, int, int)); /* Tell the GNU Readline library how to complete. We want to try to complete on command names if this is the first word in the line, or on filenames if not. */ +void initialize_readline () { /* Allow conditional parsing of the ~/.inputrc file. */ @@ -317,6 +325,7 @@ command_generator (text, state) static char syscom[1024]; /* List the file(s) named in arg. */ +int com_list (arg) char *arg; { @@ -327,6 +336,7 @@ com_list (arg) return (system (syscom)); } +int com_view (arg) char *arg; { @@ -342,6 +352,7 @@ com_view (arg) return (system (syscom)); } +int com_rename (arg) char *arg; { @@ -349,6 +360,7 @@ com_rename (arg) return (1); } +int com_stat (arg) char *arg; { @@ -377,6 +389,7 @@ com_stat (arg) return (0); } +int com_delete (arg) char *arg; { @@ -386,6 +399,7 @@ com_delete (arg) /* Print out help for ARG, or for all of the commands if ARG is not present. */ +int com_help (arg) char *arg; { @@ -425,6 +439,7 @@ com_help (arg) } /* Change to the directory ARG. */ +int com_cd (arg) char *arg; { @@ -439,6 +454,7 @@ com_cd (arg) } /* Print out the current working directory. */ +int com_pwd (ignore) char *ignore; { @@ -456,6 +472,7 @@ com_pwd (ignore) } /* The user wishes to quit using this program. Just set DONE non-zero. */ +int com_quit (arg) char *arg; { @@ -464,6 +481,7 @@ com_quit (arg) } /* Function which tells you that you can't do this. */ +void too_dangerous (caller) char *caller; { diff --git a/lib/readline/examples/rl-callbacktest.c b/lib/readline/examples/rl-callbacktest.c index a7e451c..0f00e57 100644 --- a/lib/readline/examples/rl-callbacktest.c +++ b/lib/readline/examples/rl-callbacktest.c @@ -1,16 +1,25 @@ /* Standard include files. stdio.h is required. */ #include #include +#include /* Used for select(2) */ #include #include +#include #include /* Standard readline include files. */ -#include -#include +#if defined (READLINE_LIBRARY) +# include "readline.h" +# include "history.h" +#else +# include +# include +#endif + +extern int errno; static void cb_linehandler (char *); @@ -65,7 +74,7 @@ main (int c, char **v) FD_SET (fileno (rl_instream), &fds); r = select (FD_SETSIZE, &fds, NULL, NULL, NULL); - if (r < 0) + if (r < 0 && errno != EINTR) { perror ("rltest: select"); rl_callback_handler_remove (); diff --git a/lib/readline/examples/rl.c b/lib/readline/examples/rl.c index 845a4b1..a5cf276 100644 --- a/lib/readline/examples/rl.c +++ b/lib/readline/examples/rl.c @@ -28,6 +28,7 @@ # include #endif +#include #include #include diff --git a/lib/readline/funmap.c b/lib/readline/funmap.c index 363507b..34b1d6b 100644 --- a/lib/readline/funmap.c +++ b/lib/readline/funmap.c @@ -1,6 +1,6 @@ /* funmap.c -- attach names to functions. */ -/* Copyright (C) 1987-2010 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -68,6 +68,7 @@ static const FUNMAP default_funmap[] = { { "backward-word", rl_backward_word }, { "beginning-of-history", rl_beginning_of_history }, { "beginning-of-line", rl_beg_of_line }, + { "bracketed-paste-begin", rl_bracketed_paste_begin }, { "call-last-kbd-macro", rl_call_last_kbd_macro }, { "capitalize-word", rl_capitalize_word }, { "character-search", rl_char_search }, @@ -115,7 +116,7 @@ static const FUNMAP default_funmap[] = { { "non-incremental-reverse-search-history-again", rl_noninc_reverse_search_again }, { "old-menu-complete", rl_old_menu_complete }, { "overwrite-mode", rl_overwrite_mode }, -#ifdef __CYGWIN__ +#if defined (_WIN32) { "paste-from-clipboard", rl_paste_from_clipboard }, #endif { "possible-completions", rl_possible_completions }, @@ -177,7 +178,7 @@ static const FUNMAP default_funmap[] = { { "vi-fword", rl_vi_fword }, { "vi-goto-mark", rl_vi_goto_mark }, { "vi-insert-beg", rl_vi_insert_beg }, - { "vi-insertion-mode", rl_vi_insertion_mode }, + { "vi-insertion-mode", rl_vi_insert_mode }, { "vi-match", rl_vi_match }, { "vi-movement-mode", rl_vi_movement_mode }, { "vi-next-word", rl_vi_next_word }, @@ -193,7 +194,9 @@ static const FUNMAP default_funmap[] = { { "vi-set-mark", rl_vi_set_mark }, { "vi-subst", rl_vi_subst }, { "vi-tilde-expand", rl_vi_tilde_expand }, + { "vi-unix-word-rubout", rl_vi_unix_word_rubout }, { "vi-yank-arg", rl_vi_yank_arg }, + { "vi-yank-pop", rl_vi_yank_pop }, { "vi-yank-to", rl_vi_yank_to }, #endif /* VI_MODE */ diff --git a/lib/readline/histexpand.c b/lib/readline/histexpand.c index 4899b9d..b84a6b8 100644 --- a/lib/readline/histexpand.c +++ b/lib/readline/histexpand.c @@ -1,6 +1,6 @@ /* histexpand.c -- history expansion. */ -/* Copyright (C) 1989-2012 Free Software Foundation, Inc. +/* Copyright (C) 1989-2015 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -44,12 +44,14 @@ #include "history.h" #include "histlib.h" +#include "chardefs.h" #include "rlshell.h" #include "xmalloc.h" #define HISTORY_WORD_DELIMITERS " \t\n;&()|<>" #define HISTORY_QUOTE_CHARACTERS "\"'`" +#define HISTORY_EVENT_DELIMITERS "^$*%-" #define slashify_in_quotes "\\`\"$" @@ -62,6 +64,10 @@ static char *subst_rhs; static int subst_lhs_len; static int subst_rhs_len; +/* Characters that delimit history event specifications and separate event + specifications from word designators. Static for now */ +static char *history_event_delimiter_chars = HISTORY_EVENT_DELIMITERS; + static char *get_history_word_specifier PARAMS((char *, char *, int *)); static int history_tokenize_word PARAMS((const char *, int)); static char **history_tokenize_internal PARAMS((const char *, int, int *)); @@ -112,7 +118,6 @@ rl_linebuf_func_t *history_inhibit_expansion_function; /* The last string searched for by a !?string? search. */ static char *search_string; - /* The last string matched by a !?string? search. */ static char *search_match; @@ -225,6 +230,7 @@ get_history_event (string, caller_index, delimiting_quote) #endif /* HANDLE_MULTIBYTE */ if ((!substring_okay && (whitespace (c) || c == ':' || + (history_event_delimiter_chars && member (c, history_event_delimiter_chars)) || (history_search_delimiter_chars && member (c, history_search_delimiter_chars)) || string[i] == delimiting_quote)) || string[i] == '\n' || @@ -873,7 +879,7 @@ history_expand_internal (string, start, qc, end_index_ptr, ret_string, current_l 1) If expansions did take place 2) If the `p' modifier was given and the caller should print the result - If an error ocurred in expansion, then OUTPUT contains a descriptive + If an error occurred in expansion, then OUTPUT contains a descriptive error message. */ #define ADD_STRING(s) \ @@ -991,6 +997,7 @@ history_expand (hstring, output) history expansion performed on it. Skip the rest of the line and break out of the loop. */ if (history_comment_char && string[i] == history_comment_char && + dquote == 0 && (i == 0 || member (string[i - 1], history_word_delimiters))) { while (string[i]) @@ -1149,7 +1156,8 @@ history_expand (hstring, output) } case -2: /* history_comment_char */ - if (i == 0 || member (string[i - 1], history_word_delimiters)) + if ((dquote == 0 || history_quotes_inhibit_expansion == 0) && + (i == 0 || member (string[i - 1], history_word_delimiters))) { temp = (char *)xmalloc (l - i + 1); strcpy (temp, string + i); @@ -1213,7 +1221,7 @@ history_expand (hstring, output) ADD_STRING (temp); xfree (temp); } - only_printing = r == 1; + only_printing += r == 1; i = eindex; } break; @@ -1414,7 +1422,7 @@ history_tokenize_word (string, ind) const char *string; int ind; { - register int i; + register int i, j; int delimiter, nestdelim, delimopen; i = ind; @@ -1426,6 +1434,22 @@ history_tokenize_word (string, ind) return i; } + if (ISDIGIT (string[i])) + { + j = i; + while (string[j] && ISDIGIT (string[j])) + j++; + if (string[j] == 0) + return (j); + if (string[j] == '<' || string[j] == '>') + i = j; /* digit sequence is a file descriptor */ + else + { + i = j; + goto get_word; /* digit sequence is part of a word */ + } + } + if (member (string[i], "<>;&|$")) { int peek = string[i + 1]; @@ -1439,8 +1463,16 @@ history_tokenize_word (string, ind) i += 2; return i; } - else if ((peek == '&' && (string[i] == '>' || string[i] == '<')) || - (peek == '>' && string[i] == '&')) + else if (peek == '&' && (string[i] == '>' || string[i] == '<')) + { + j = i + 2; + while (string[j] && ISDIGIT (string[j])) /* file descriptor */ + j++; + if (string[j] =='-') /* <&[digits]-, >&[digits]- */ + j++; + return j; + } + else if ((peek == '>' && string[i] == '&') || (peek == '|' && string[i] == '>')) { i += 2; return i; diff --git a/lib/readline/histfile.c b/lib/readline/histfile.c index bb74315..5b057cd 100644 --- a/lib/readline/histfile.c +++ b/lib/readline/histfile.c @@ -1,6 +1,6 @@ /* histfile.c - functions to manipulate the history file. */ -/* Copyright (C) 1989-2010 Free Software Foundation, Inc. +/* Copyright (C) 1989-2016 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -35,6 +35,10 @@ #include +#if defined (HAVE_LIMITS_H) +# include +#endif + #include #if ! defined (_MINIX) && defined (HAVE_SYS_FILE_H) # include @@ -99,12 +103,41 @@ extern int errno; #include "rlshell.h" #include "xmalloc.h" +#if !defined (PATH_MAX) +# define PATH_MAX 1024 /* default */ +#endif + +extern void _hs_append_history_line PARAMS((int, const char *)); + +/* history file version; currently unused */ +int history_file_version = 1; + /* If non-zero, we write timestamps to the history file in history_do_write() */ int history_write_timestamps = 0; +/* If non-zero, we assume that a history file that starts with a timestamp + uses timestamp-delimited entries and can include multi-line history + entries. Used by read_history_range */ +int history_multiline_entries = 0; + +/* Immediately after a call to read_history() or read_history_range(), this + will return the number of lines just read from the history file in that + call. */ +int history_lines_read_from_file = 0; + +/* Immediately after a call to write_history() or history_do_write(), this + will return the number of lines just written to the history file in that + call. This also works with history_truncate_file. */ +int history_lines_written_to_file = 0; + /* Does S look like the beginning of a history timestamp entry? Placeholder for more extensive tests. */ -#define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char && isdigit ((s)[1]) ) +#define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char && isdigit ((unsigned char)(s)[1]) ) + +static char *history_backupfile PARAMS((const char *)); +static char *history_tempfile PARAMS((const char *)); +static int histfile_backup PARAMS((const char *, const char *)); +static int histfile_restore PARAMS((const char *, const char *)); /* Return the string that should be used in the place of this filename. This only matters when you don't specify the @@ -123,6 +156,10 @@ history_filename (filename) return (return_val); home = sh_get_env_value ("HOME"); +#if defined (_WIN32) + if (home == 0) + home = sh_get_env_value ("APPDATA"); +#endif if (home == 0) return (NULL); @@ -145,17 +182,71 @@ static char * history_backupfile (filename) const char *filename; { - char *ret; + const char *fn; + char *ret, linkbuf[PATH_MAX+1]; size_t len; + ssize_t n; + struct stat fs; - len = strlen (filename); + fn = filename; +#if defined (HAVE_READLINK) + /* Follow symlink to avoid backing up symlink itself; call will fail if + not a symlink */ + if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0) + { + linkbuf[n] = '\0'; + fn = linkbuf; + } +#endif + + len = strlen (fn); ret = xmalloc (len + 2); - strcpy (ret, filename); + strcpy (ret, fn); ret[len] = '-'; ret[len+1] = '\0'; return ret; } +static char * +history_tempfile (filename) + const char *filename; +{ + const char *fn; + char *ret, linkbuf[PATH_MAX+1]; + size_t len; + ssize_t n; + struct stat fs; + int pid; + + fn = filename; +#if defined (HAVE_READLINK) + /* Follow symlink so tempfile created in the same directory as any symlinked + history file; call will fail if not a symlink */ + if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0) + { + linkbuf[n] = '\0'; + fn = linkbuf; + } +#endif + + len = strlen (fn); + ret = xmalloc (len + 11); + strcpy (ret, fn); + + pid = (int)getpid (); + + /* filename-PID.tmp */ + ret[len] = '-'; + ret[len+1] = (pid / 10000 % 10) + '0'; + ret[len+2] = (pid / 1000 % 10) + '0'; + ret[len+3] = (pid / 100 % 10) + '0'; + ret[len+4] = (pid / 10 % 10) + '0'; + ret[len+5] = (pid % 10) + '0'; + strcpy (ret + len + 6, ".tmp"); + + return ret; +} + /* Add the contents of FILENAME to the history list, a line at a time. If FILENAME is NULL, then read from ~/.history. Returns 0 if successful, or errno if not. */ @@ -178,7 +269,7 @@ read_history_range (filename, from, to) { register char *line_start, *line_end, *p; char *input, *buffer, *bufend, *last_ts; - int file, current_line, chars_read; + int file, current_line, chars_read, has_timestamps, reset_comment_char; struct stat finfo; size_t file_size; #if defined (EFBIG) @@ -189,6 +280,8 @@ read_history_range (filename, from, to) int overflow_errno = EIO; #endif + history_lines_read_from_file = 0; + buffer = last_ts = (char *)NULL; input = history_filename (filename); file = input ? open (input, O_RDONLY|O_BINARY, 0666) : -1; @@ -253,6 +346,19 @@ read_history_range (filename, from, to) bufend = buffer + chars_read; current_line = 0; + /* Heuristic: the history comment character rarely changes, so assume we + have timestamps if the buffer starts with `#[:digit:]' and temporarily + set history_comment_char so timestamp parsing works right */ + reset_comment_char = 0; + if (history_comment_char == '\0' && buffer[0] == '#' && isdigit ((unsigned char)buffer[1])) + { + history_comment_char = '#'; + reset_comment_char = 1; + } + + has_timestamps = HIST_TIMESTAMP_START (buffer); + history_multiline_entries += has_timestamps && history_write_timestamps; + /* Skip lines until we are at FROM. */ for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++) if (*line_end == '\n') @@ -279,7 +385,10 @@ read_history_range (filename, from, to) { if (HIST_TIMESTAMP_START(line_start) == 0) { - add_history (line_start); + if (last_ts == NULL && history_multiline_entries) + _hs_append_history_line (history_length - 1, line_start); + else + add_history (line_start); if (last_ts) { add_history_time (last_ts); @@ -301,6 +410,10 @@ read_history_range (filename, from, to) line_start = line_end + 1; } + history_lines_read_from_file = current_line; + if (reset_comment_char) + history_comment_char = '\0'; + FREE (input); #ifndef HISTORY_USE_MMAP FREE (buffer); @@ -311,23 +424,68 @@ read_history_range (filename, from, to) return (0); } +/* Save FILENAME to BACK, handling case where FILENAME is a symlink + (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */ +static int +histfile_backup (filename, back) + const char *filename; + const char *back; +{ +#if defined (HAVE_READLINK) + char linkbuf[PATH_MAX+1]; + ssize_t n; + + /* Follow to target of symlink to avoid renaming symlink itself */ + if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0) + { + linkbuf[n] = '\0'; + return (rename (linkbuf, back)); + } +#endif + return (rename (filename, back)); +} + +/* Restore ORIG from BACKUP handling case where ORIG is a symlink + (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */ +static int +histfile_restore (backup, orig) + const char *backup; + const char *orig; +{ +#if defined (HAVE_READLINK) + char linkbuf[PATH_MAX+1]; + ssize_t n; + + /* Follow to target of symlink to avoid renaming symlink itself */ + if ((n = readlink (orig, linkbuf, sizeof (linkbuf) - 1)) > 0) + { + linkbuf[n] = '\0'; + return (rename (backup, linkbuf)); + } +#endif + return (rename (backup, orig)); +} + /* Truncate the history file FNAME, leaving only LINES trailing lines. - If FNAME is NULL, then use ~/.history. Returns 0 on success, errno - on failure. */ + If FNAME is NULL, then use ~/.history. Writes a new file and renames + it to the original name. Returns 0 on success, errno on failure. */ int history_truncate_file (fname, lines) const char *fname; int lines; { - char *buffer, *filename, *bp, *bp1; /* bp1 == bp+1 */ - int file, chars_read, rv; + char *buffer, *filename, *tempname, *bp, *bp1; /* bp1 == bp+1 */ + int file, chars_read, rv, orig_lines, exists, r; struct stat finfo; size_t file_size; + history_lines_written_to_file = 0; + buffer = (char *)NULL; filename = history_filename (fname); + tempname = 0; file = filename ? open (filename, O_RDONLY|O_BINARY, 0666) : -1; - rv = 0; + rv = exists = 0; /* Don't try to truncate non-regular files. */ if (file == -1 || fstat (file, &finfo) == -1) @@ -337,6 +495,7 @@ history_truncate_file (fname, lines) close (file); goto truncate_exit; } + exists = 1; if (S_ISREG (finfo.st_mode) == 0) { @@ -368,6 +527,7 @@ history_truncate_file (fname, lines) buffer = (char *)malloc (file_size + 1); if (buffer == 0) { + rv = errno; close (file); goto truncate_exit; } @@ -381,6 +541,7 @@ history_truncate_file (fname, lines) goto truncate_exit; } + orig_lines = lines; /* Count backwards from the end of buffer until we have passed LINES lines. bp1 is set funny initially. But since bp[1] can't be a comment character (since it's off the end) and *bp can't be @@ -409,29 +570,56 @@ history_truncate_file (fname, lines) /* Write only if there are more lines in the file than we want to truncate to. */ - if (bp > buffer && ((file = open (filename, O_WRONLY|O_TRUNC|O_BINARY, 0600)) != -1)) + if (bp <= buffer) + { + rv = 0; + /* No-op if LINES == 0 at this point */ + history_lines_written_to_file = orig_lines - lines; + goto truncate_exit; + } + + tempname = history_tempfile (filename); + + if ((file = open (tempname, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0600)) != -1) { if (write (file, bp, chars_read - (bp - buffer)) < 0) rv = errno; -#if defined (__BEOS__) - /* BeOS ignores O_TRUNC. */ - ftruncate (file, chars_read - (bp - buffer)); -#endif - if (close (file) < 0 && rv == 0) rv = errno; } + else + rv = errno; truncate_exit: - FREE (buffer); + history_lines_written_to_file = orig_lines - lines; + + if (rv == 0 && filename && tempname) + rv = histfile_restore (tempname, filename); + + if (rv != 0) + { + if (tempname) + unlink (tempname); + history_lines_written_to_file = 0; + } + + /* Make sure the new filename is owned by the same user as the old. If one + user is running this, it's a no-op. If the shell is running after sudo + with a shared history file, we don't want to leave the history file + owned by root. */ + if (rv == 0 && exists) + r = chown (filename, finfo.st_uid, finfo.st_gid); + xfree (filename); + FREE (tempname); + return rv; } -/* Workhorse function for writing history. Writes NELEMENT entries +/* Workhorse function for writing history. Writes the last NELEMENT entries from the history list to FILENAME. OVERWRITE is non-zero if you wish to replace FILENAME with the entries. */ static int @@ -440,20 +628,23 @@ history_do_write (filename, nelements, overwrite) int nelements, overwrite; { register int i; - char *output, *bakname; - int file, mode, rv; + char *output, *tempname, *histname; + int file, mode, rv, exists; + struct stat finfo; #ifdef HISTORY_USE_MMAP size_t cursize; + history_lines_written_to_file = 0; + mode = overwrite ? O_RDWR|O_CREAT|O_TRUNC|O_BINARY : O_RDWR|O_APPEND|O_BINARY; #else mode = overwrite ? O_WRONLY|O_CREAT|O_TRUNC|O_BINARY : O_WRONLY|O_APPEND|O_BINARY; #endif - output = history_filename (filename); - bakname = (overwrite && output) ? history_backupfile (output) : 0; + histname = history_filename (filename); + exists = histname ? (stat (histname, &finfo) == 0) : 0; - if (output && bakname) - rename (output, bakname); + tempname = (overwrite && exists && S_ISREG (finfo.st_mode)) ? history_tempfile (histname) : 0; + output = tempname ? tempname : histname; file = output ? open (output, mode, 0600) : -1; rv = 0; @@ -461,10 +652,8 @@ history_do_write (filename, nelements, overwrite) if (file == -1) { rv = errno; - if (output && bakname) - rename (bakname, output); - FREE (output); - FREE (bakname); + FREE (histname); + FREE (tempname); return (rv); } @@ -506,10 +695,10 @@ history_do_write (filename, nelements, overwrite) mmap_error: rv = errno; close (file); - if (output && bakname) - rename (bakname, output); - FREE (output); - FREE (bakname); + if (tempname) + unlink (tempname); + FREE (histname); + FREE (tempname); return rv; } #else @@ -518,10 +707,10 @@ mmap_error: { rv = errno; close (file); - if (output && bakname) - rename (bakname, output); - FREE (output); - FREE (bakname); + if (tempname) + unlink (tempname); + FREE (histname); + FREE (tempname); return rv; } #endif @@ -540,7 +729,7 @@ mmap_error: } #ifdef HISTORY_USE_MMAP - if (msync (buffer, buffer_size, 0) != 0 || munmap (buffer, buffer_size) != 0) + if (msync (buffer, buffer_size, MS_ASYNC) != 0 || munmap (buffer, buffer_size) != 0) rv = errno; #else if (write (file, buffer, buffer_size) < 0) @@ -549,16 +738,30 @@ mmap_error: #endif } + history_lines_written_to_file = nelements; + if (close (file) < 0 && rv == 0) rv = errno; - if (rv != 0 && output && bakname) - rename (bakname, output); - else if (rv == 0 && bakname) - unlink (bakname); + if (rv == 0 && histname && tempname) + rv = histfile_restore (tempname, histname); - FREE (output); - FREE (bakname); + if (rv != 0) + { + if (tempname) + unlink (tempname); + history_lines_written_to_file = 0; + } + + /* Make sure the new filename is owned by the same user as the old. If one + user is running this, it's a no-op. If the shell is running after sudo + with a shared history file, we don't want to leave the history file + owned by root. */ + if (rv == 0 && exists) + mode = chown (histname, finfo.st_uid, finfo.st_gid); + + FREE (histname); + FREE (tempname); return (rv); } diff --git a/lib/readline/histlib.h b/lib/readline/histlib.h index c938a10..28cad14 100644 --- a/lib/readline/histlib.h +++ b/lib/readline/histlib.h @@ -76,7 +76,4 @@ extern char *strchr (); #define HISTORY_APPEND 0 #define HISTORY_OVERWRITE 1 -/* Some variable definitions shared across history source files. */ -extern int history_offset; - #endif /* !_HISTLIB_H_ */ diff --git a/lib/readline/history.c b/lib/readline/history.c index 1181e7c..3b8dbc5 100644 --- a/lib/readline/history.c +++ b/lib/readline/history.c @@ -1,6 +1,6 @@ /* history.c -- standalone history library */ -/* Copyright (C) 1989-2011 Free Software Foundation, Inc. +/* Copyright (C) 1989-2015 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -43,11 +43,20 @@ # include #endif +#include + #include "history.h" #include "histlib.h" #include "xmalloc.h" +#if !defined (errno) +extern int errno; +#endif + +/* How big to make the_history when we first allocate it. */ +#define DEFAULT_HISTORY_INITIAL_SIZE 502 + /* The number of slots to increase the_history by. */ #define DEFAULT_HISTORY_GROW_SIZE 50 @@ -236,7 +245,10 @@ history_get_time (hist) ts = hist->timestamp; if (ts[0] != history_comment_char) return 0; + errno = 0; t = (time_t) strtol (ts + 1, (char **)NULL, 10); /* XXX - should use strtol() here */ + if (errno == ERANGE) + return (time_t)0; return t; } @@ -279,9 +291,14 @@ add_history (string) if (the_history[0]) (void) free_history_entry (the_history[0]); - /* Copy the rest of the entries, moving down one slot. */ + /* Copy the rest of the entries, moving down one slot. Copy includes + trailing NULL. */ +#if 0 for (i = 0; i < history_length; i++) the_history[i] = the_history[i + 1]; +#else + memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *)); +#endif history_base++; } @@ -289,7 +306,10 @@ add_history (string) { if (history_size == 0) { - history_size = DEFAULT_HISTORY_GROW_SIZE; + if (history_stifled && history_max_entries > 0) + history_size = history_max_entries + 2; + else + history_size = DEFAULT_HISTORY_INITIAL_SIZE; the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *)); history_length = 1; } @@ -305,7 +325,7 @@ add_history (string) } } - temp = alloc_history_entry (string, hist_inittime ()); + temp = alloc_history_entry ((char *)string, hist_inittime ()); the_history[history_length] = (HIST_ENTRY *)NULL; the_history[history_length - 1] = temp; @@ -387,6 +407,30 @@ replace_history_entry (which, line, data) return (old_value); } +/* Append LINE to the history line at offset WHICH, adding a newline to the + end of the current line first. This can be used to construct multi-line + history entries while reading lines from the history file. */ +void +_hs_append_history_line (which, line) + int which; + const char *line; +{ + HIST_ENTRY *hent; + size_t newlen, curlen; + char *newline; + + hent = the_history[which]; + curlen = strlen (hent->line); + newlen = curlen + strlen (line) + 2; + newline = realloc (hent->line, newlen); + if (newline) + { + hent->line = newline; + hent->line[curlen++] = '\n'; + strcpy (hent->line + curlen, line); + } +} + /* Replace the DATA in the specified history entries, replacing OLD with NEW. WHICH says which one(s) to replace: WHICH == -1 means to replace all of the history entries where entry->data == OLD; WHICH == -2 means @@ -394,7 +438,7 @@ replace_history_entry (which, line, data) WHICH >= 0 means to replace that particular history entry's data, as long as it matches OLD. */ void -replace_history_data (which, old, new) +_hs_replace_history_data (which, old, new) int which; histdata_t *old, *new; { diff --git a/lib/readline/history.h b/lib/readline/history.h index c8af47e..8ce7c80 100644 --- a/lib/readline/history.h +++ b/lib/readline/history.h @@ -1,6 +1,6 @@ /* history.h -- the names of functions that you can call in history. */ -/* Copyright (C) 1989-2009 Free Software Foundation, Inc. +/* Copyright (C) 1989-2015 Free Software Foundation, Inc. This file contains the GNU History Library (History), a set of routines for managing the text of previously typed lines. @@ -91,6 +91,13 @@ extern void add_history_time PARAMS((const char *)); elements are numbered from 0. */ extern HIST_ENTRY *remove_history PARAMS((int)); +/* Allocate a history entry consisting of STRING and TIMESTAMP and return + a pointer to it. */ +extern HIST_ENTRY *alloc_history_entry PARAMS((char *, char *)); + +/* Copy the history entry H, but not the (opaque) data pointer */ +extern HIST_ENTRY *copy_history_entry PARAMS((HIST_ENTRY *)); + /* Free the history entry H and return any application-specific data associated with it. */ extern histdata_t free_history_entry PARAMS((HIST_ENTRY *)); @@ -241,6 +248,11 @@ extern char **history_tokenize PARAMS((const char *)); extern int history_base; extern int history_length; extern int history_max_entries; +extern int history_offset; + +extern int history_lines_read_from_file; +extern int history_lines_written_to_file; + extern char history_expansion_char; extern char history_subst_char; extern char *history_word_delimiters; @@ -251,6 +263,10 @@ extern int history_quotes_inhibit_expansion; extern int history_write_timestamps; +/* These two are undocumented; the second is reserved for future use */ +extern int history_multiline_entries; +extern int history_file_version; + /* Backwards compatibility */ extern int max_input_history; diff --git a/lib/readline/input.c b/lib/readline/input.c index f3f6d59..286897d 100644 --- a/lib/readline/input.c +++ b/lib/readline/input.c @@ -1,6 +1,6 @@ /* input.c -- character input functions for readline. */ -/* Copyright (C) 1994-2013 Free Software Foundation, Inc. +/* Copyright (C) 1994-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -95,6 +95,22 @@ static int ibuffer_space PARAMS((void)); static int rl_get_char PARAMS((int *)); static int rl_gather_tyi PARAMS((void)); +/* Windows isatty returns true for every character device, including the null + device, so we need to perform additional checks. */ +#if defined (_WIN32) && !defined (__CYGWIN__) +#include +#define WIN32_LEAN_AND_MEAN 1 +#include + +int +win32_isatty (int fd) +{ + return (_isatty (fd) ? ((((long) (HANDLE) _get_osfhandle (fd)) & 3) == 3) : 0); +} + +#define isatty(x) win32_isatty(x) +#endif + /* **************************************************************** */ /* */ /* Character Input Buffering */ @@ -185,6 +201,7 @@ rl_gather_tyi () #endif chars_avail = 0; + input = 0; tty = fileno (rl_instream); #if defined (HAVE_SELECT) @@ -199,11 +216,13 @@ rl_gather_tyi () #endif result = -1; -#if defined (FIONREAD) errno = 0; +#if defined (FIONREAD) result = ioctl (tty, FIONREAD, &chars_avail); if (result == -1 && errno == EIO) return -1; + if (result == -1) + chars_avail = 0; #endif #if defined (O_NDELAY) @@ -217,6 +236,8 @@ rl_gather_tyi () fcntl (tty, F_SETFL, tem); if (chars_avail == -1 && errno == EAGAIN) return 0; + if (chars_avail == -1 && errno == EIO) + return -1; if (chars_avail == 0) /* EOF */ { rl_stuff_char (EOF); @@ -445,7 +466,7 @@ rl_read_key () if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */ { rl_done = 1; - return ('\n'); + return (errno == EIO ? (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF) : '\n'); } else if (r > 0) /* read something */ continue; @@ -474,6 +495,10 @@ rl_getc (stream) { int result; unsigned char c; +#if defined (HAVE_PSELECT) + sigset_t empty_set; + fd_set readfds; +#endif while (1) { @@ -483,9 +508,17 @@ rl_getc (stream) #if defined (__MINGW32__) if (isatty (fileno (stream))) - return (getch ()); + return (_getch ()); /* "There is no error return." */ #endif - result = read (fileno (stream), &c, sizeof (unsigned char)); + result = 0; +#if defined (HAVE_PSELECT) + sigemptyset (&empty_set); + FD_ZERO (&readfds); + FD_SET (fileno (stream), &readfds); + result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &empty_set); +#endif + if (result >= 0) + result = read (fileno (stream), &c, sizeof (unsigned char)); if (result == sizeof (unsigned char)) return (c); @@ -524,26 +557,42 @@ rl_getc (stream) /* fprintf(stderr, "rl_getc: result = %d errno = %d\n", result, errno); */ +handle_error: /* If the error that we received was EINTR, then try again, this is simply an interrupted system call to read (). We allow - the read to be interrupted if we caught SIGHUP or SIGTERM (but - not SIGINT; let the signal handler deal with that), but if the + the read to be interrupted if we caught SIGHUP, SIGTERM, or any + of the other signals readline treats specially. If the application sets an event hook, call it for other signals. Otherwise (not EINTR), some error occurred, also signifying EOF. */ if (errno != EINTR) return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); + /* fatal signals of interest */ +#if defined (SIGHUP) else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM) +#else + else if (_rl_caught_signal == SIGTERM) +#endif return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); /* keyboard-generated signals of interest */ +#if defined (SIGQUIT) else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT) +#else + else if (_rl_caught_signal == SIGINT) +#endif RL_CHECK_SIGNALS (); /* non-keyboard-generated signals of interest */ +#if defined (SIGWINCH) + else if (_rl_caught_signal == SIGWINCH) + RL_CHECK_SIGNALS (); +#endif /* SIGWINCH */ +#if defined (SIGALRM) else if (_rl_caught_signal == SIGALRM -#if defined (SIGVTALRM) +# if defined (SIGVTALRM) || _rl_caught_signal == SIGVTALRM -#endif +# endif ) RL_CHECK_SIGNALS (); +#endif /* SIGALRM */ if (rl_signal_event_hook) (*rl_signal_event_hook) (); diff --git a/lib/readline/isearch.c b/lib/readline/isearch.c index 6f6a7a6..819fcbc 100644 --- a/lib/readline/isearch.c +++ b/lib/readline/isearch.c @@ -6,7 +6,7 @@ /* */ /* **************************************************************** */ -/* Copyright (C) 1987-2012 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 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. @@ -66,7 +66,6 @@ static int rl_search_history PARAMS((int, int)); static _rl_search_cxt *_rl_isearch_init PARAMS((int)); static void _rl_isearch_fini PARAMS((_rl_search_cxt *)); -static int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int)); /* Last line found by the current incremental search, so we don't `find' identical lines many times in a row. Now part of isearch context. */ @@ -553,8 +552,20 @@ add_character: do until we have a real isearch-undo. */ if (cxt->search_string_index == 0) rl_ding (); - else + else if (MB_CUR_MAX == 1 || rl_byte_oriented) cxt->search_string[--cxt->search_string_index] = '\0'; + else + { + wstart = _rl_find_prev_mbchar (cxt->search_string, cxt->search_string_index, MB_FIND_NONZERO); + if (wstart >= 0) + cxt->search_string[cxt->search_string_index = wstart] = '\0'; + else + cxt->search_string[cxt->search_string_index = 0] = '\0'; + } + + if (cxt->search_string_index == 0) + rl_ding (); + break; case -4: /* C-G, abort */ @@ -647,6 +658,12 @@ add_character: for (cxt->sflags &= ~(SF_FOUND|SF_FAILED);; ) { + if (cxt->search_string_index == 0) + { + cxt->sflags |= SF_FAILED; + break; + } + limit = cxt->sline_len - cxt->search_string_index + 1; /* Search the current line. */ @@ -716,7 +733,7 @@ add_character: return 1; } -static int +int _rl_isearch_cleanup (cxt, r) _rl_search_cxt *cxt; int r; diff --git a/lib/readline/kill.c b/lib/readline/kill.c index 1a78783..696f193 100644 --- a/lib/readline/kill.c +++ b/lib/readline/kill.c @@ -1,6 +1,6 @@ /* kill.c -- kill ring management. */ -/* Copyright (C) 1994 Free Software Foundation, Inc. +/* Copyright (C) 1994-2015 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. @@ -97,7 +97,7 @@ _rl_copy_to_kill_ring (text, append) int slot; /* First, find the slot to work with. */ - if (_rl_last_command_was_kill == 0) + if (_rl_last_command_was_kill == 0 || rl_kill_ring == 0) { /* Get a new slot. */ if (rl_kill_ring == 0) @@ -278,7 +278,7 @@ rl_backward_kill_line (direction, ignore) return (rl_kill_line (1, ignore)); else { - if (!rl_point) + if (rl_point == 0) rl_ding (); else { @@ -506,7 +506,7 @@ rl_yank (count, ignore) if (rl_kill_ring == 0) { _rl_abort_internal (); - return -1; + return 1; } _rl_set_mark_at_pos (rl_point); @@ -528,7 +528,7 @@ rl_yank_pop (count, key) !rl_kill_ring) { _rl_abort_internal (); - return -1; + return 1; } l = strlen (rl_kill_ring[rl_kill_index]); @@ -546,10 +546,44 @@ rl_yank_pop (count, key) else { _rl_abort_internal (); - return -1; + return 1; } } +#if defined (VI_MODE) +int +rl_vi_yank_pop (count, key) + int count, key; +{ + int l, n; + + if (((rl_last_func != rl_vi_yank_pop) && (rl_last_func != rl_vi_put)) || + !rl_kill_ring) + { + _rl_abort_internal (); + return 1; + } + + l = strlen (rl_kill_ring[rl_kill_index]); + n = rl_point - l; + if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l)) + { + rl_delete_text (n, rl_point); + rl_point = n; + rl_kill_index--; + if (rl_kill_index < 0) + rl_kill_index = rl_kill_ring_length - 1; + rl_vi_put (1, 'p'); + return 0; + } + else + { + _rl_abort_internal (); + return 1; + } +} +#endif /* VI_MODE */ + /* Yank the COUNTh argument from the previous history line, skipping HISTORY_SKIP lines before looking for the `previous line'. */ static int @@ -575,7 +609,7 @@ rl_yank_nth_arg_internal (count, ignore, history_skip) if (entry == 0) { rl_ding (); - return -1; + return 1; } arg = history_arg_extract (count, count, entry->line); @@ -583,7 +617,7 @@ rl_yank_nth_arg_internal (count, ignore, history_skip) { rl_ding (); FREE (arg); - return -1; + return 1; } rl_begin_undo_group (); @@ -656,8 +690,58 @@ rl_yank_last_arg (count, key) return retval; } -/* A special paste command for users of Cygnus's cygwin32. */ -#if defined (__CYGWIN__) +/* Having read the special escape sequence denoting the beginning of a + `bracketed paste' sequence, read the rest of the pasted input until the + closing sequence and insert the pasted text as a single unit without + interpretation. */ +int +rl_bracketed_paste_begin (count, key) + int count, key; +{ + int retval, c; + size_t len, cap; + char *buf; + + retval = 1; + len = 0; + buf = xmalloc (cap = 64); + + RL_SETSTATE (RL_STATE_MOREINPUT); + while ((c = rl_read_key ()) >= 0) + { + if (RL_ISSTATE (RL_STATE_MACRODEF)) + _rl_add_macro_char (c); + + if (c == '\r') /* XXX */ + c = '\n'; + + if (len == cap) + buf = xrealloc (buf, cap *= 2); + + buf[len++] = c; + if (len >= BRACK_PASTE_SLEN && c == BRACK_PASTE_LAST && + STREQN (buf + len - BRACK_PASTE_SLEN, BRACK_PASTE_SUFF, BRACK_PASTE_SLEN)) + { + len -= BRACK_PASTE_SLEN; + break; + } + } + RL_UNSETSTATE (RL_STATE_MOREINPUT); + + if (c >= 0) + { + if (len == cap) + buf = xrealloc (buf, cap + 1); + buf[len] = '\0'; + retval = rl_insert_text (buf); + } + + xfree (buf); + return (retval); +} + +/* A special paste command for Windows users.. */ +#if defined (_WIN32) #include int @@ -691,4 +775,4 @@ rl_paste_from_clipboard (count, key) } return (0); } -#endif /* __CYGWIN__ */ +#endif /* _WIN32 */ diff --git a/lib/readline/macro.c b/lib/readline/macro.c index b99a1a6..c7017cc 100644 --- a/lib/readline/macro.c +++ b/lib/readline/macro.c @@ -219,7 +219,7 @@ rl_start_kbd_macro (ignore1, ignore2) if (RL_ISSTATE (RL_STATE_MACRODEF)) { _rl_abort_internal (); - return -1; + return 1; } if (rl_explicit_arg) @@ -244,7 +244,7 @@ rl_end_kbd_macro (count, ignore) if (RL_ISSTATE (RL_STATE_MACRODEF) == 0) { _rl_abort_internal (); - return -1; + return 1; } current_macro_index -= rl_key_sequence_length; diff --git a/lib/readline/mbutil.c b/lib/readline/mbutil.c index b036e0c..314a49b 100644 --- a/lib/readline/mbutil.c +++ b/lib/readline/mbutil.c @@ -1,6 +1,6 @@ /* mbutil.c -- readline multibyte character utility functions */ -/* Copyright (C) 2001-2009 Free Software Foundation, Inc. +/* Copyright (C) 2001-2015 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. @@ -145,7 +145,7 @@ _rl_find_next_mbchar_internal (string, seed, count, find_non_zero) return point; } -static int +/*static*/ int _rl_find_prev_mbchar_internal (string, seed, find_non_zero) char *string; int seed, find_non_zero; diff --git a/lib/readline/misc.c b/lib/readline/misc.c index a890cda..f7acdee 100644 --- a/lib/readline/misc.c +++ b/lib/readline/misc.c @@ -1,6 +1,6 @@ /* misc.c -- miscellaneous bindable readline functions. */ -/* Copyright (C) 1987-2012 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 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. @@ -56,8 +56,6 @@ static int rl_digit_loop PARAMS((void)); static void _rl_history_set_point PARAMS((void)); -extern int history_offset; - /* Forward declarations used in this file */ void _rl_free_history_entry PARAMS((HIST_ENTRY *)); @@ -128,7 +126,7 @@ _rl_arg_dispatch (cxt, c) /* If we see a key bound to `universal-argument' after seeing digits, it ends the argument but is otherwise ignored. */ - if (_rl_keymap[c].type == ISFUNC && _rl_keymap[c].function == rl_universal_argument) + if (c >= 0 && _rl_keymap[c].type == ISFUNC && _rl_keymap[c].function == rl_universal_argument) { if ((cxt & NUM_SAWDIGITS) == 0) { @@ -268,6 +266,8 @@ _rl_arg_callback (cxt) int c, r; c = _rl_arg_getchar (); + if (c < 0) + return (1); /* EOF */ if (_rl_argcxt & NUM_READONE) { diff --git a/lib/readline/parens.c b/lib/readline/parens.c index 9c98488..ecc465c 100644 --- a/lib/readline/parens.c +++ b/lib/readline/parens.c @@ -1,6 +1,6 @@ /* parens.c -- implementation of matching parentheses feature. */ -/* Copyright (C) 1987, 1989, 1992-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987, 1989, 1992-2015 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. @@ -57,11 +57,7 @@ static int find_matching_open PARAMS((char *, int, int)); /* Non-zero means try to blink the matching open parenthesis when the close parenthesis is inserted. */ -#if defined (HAVE_SELECT) -int rl_blink_matching_paren = 1; -#else /* !HAVE_SELECT */ int rl_blink_matching_paren = 0; -#endif /* !HAVE_SELECT */ static int _paren_blink_usec = 500000; @@ -72,16 +68,32 @@ _rl_enable_paren_matching (on_or_off) int on_or_off; { if (on_or_off) - { /* ([{ */ + { + /* ([{ */ rl_bind_key_in_map (')', rl_insert_close, emacs_standard_keymap); rl_bind_key_in_map (']', rl_insert_close, emacs_standard_keymap); rl_bind_key_in_map ('}', rl_insert_close, emacs_standard_keymap); + +#if defined (VI_MODE) + /* ([{ */ + rl_bind_key_in_map (')', rl_insert_close, vi_insertion_keymap); + rl_bind_key_in_map (']', rl_insert_close, vi_insertion_keymap); + rl_bind_key_in_map ('}', rl_insert_close, vi_insertion_keymap); +#endif } else - { /* ([{ */ + { + /* ([{ */ rl_bind_key_in_map (')', rl_insert, emacs_standard_keymap); rl_bind_key_in_map (']', rl_insert, emacs_standard_keymap); rl_bind_key_in_map ('}', rl_insert, emacs_standard_keymap); + +#if defined (VI_MODE) + /* ([{ */ + rl_bind_key_in_map (')', rl_insert, vi_insertion_keymap); + rl_bind_key_in_map (']', rl_insert, vi_insertion_keymap); + rl_bind_key_in_map ('}', rl_insert, vi_insertion_keymap); +#endif } } @@ -117,7 +129,7 @@ rl_insert_close (count, invoking_key) /* Emacs might message or ring the bell here, but I don't. */ if (match_point < 0) - return -1; + return 1; FD_ZERO (&readfds); FD_SET (fileno (rl_instream), &readfds); diff --git a/lib/readline/posixjmp.h b/lib/readline/posixjmp.h index 98cf718..9c7e99e 100644 --- a/lib/readline/posixjmp.h +++ b/lib/readline/posixjmp.h @@ -1,6 +1,6 @@ /* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */ -/* Copyright (C) 1987,1991 Free Software Foundation, Inc. +/* Copyright (C) 1987,1991-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -27,16 +27,20 @@ #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 */ + +# define setjmp_nosigs(x) sigsetjmp((x), 0) +# define setjmp_sigs(x) sigsetjmp((x), 1) + +# define _rl_longjmp(x, n) siglongjmp((x), (n)) +# define sh_longjmp(x, n) siglongjmp((x), (n)) #else # define procenv_t jmp_buf -# define setjmp_nosigs setjmp + +# define setjmp_nosigs setjmp +# define setjmp_sigs setjmp + +# define _rl_longjmp(x, n) longjmp((x), (n)) +# define sh_longjmp(x, n) longjmp((x), (n)) #endif #endif /* _POSIXJMP_H_ */ diff --git a/lib/readline/readline.c b/lib/readline/readline.c index abb29a0..e51df4f 100644 --- a/lib/readline/readline.c +++ b/lib/readline/readline.c @@ -1,7 +1,7 @@ /* readline.c -- a general facility for reading lines of input with emacs style editing and completion. */ -/* Copyright (C) 1987-2013 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 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. @@ -94,6 +94,8 @@ static void readline_initialize_everything PARAMS((void)); static void bind_arrow_keys_internal PARAMS((Keymap)); static void bind_arrow_keys PARAMS((void)); +static void bind_bracketed_paste_prefix PARAMS((void)); + static void readline_default_bindings PARAMS((void)); static void reset_default_bindings PARAMS((void)); @@ -149,7 +151,7 @@ static int running_in_emacs; #endif /* Flags word encapsulating the current readline state. */ -int rl_readline_state = RL_STATE_NONE; +unsigned long rl_readline_state = RL_STATE_NONE; /* The current offset in the current input line. */ int rl_point; @@ -306,6 +308,11 @@ int _rl_echo_control_chars = 1; the editing mode: @ for emacs, : for vi-command, + for vi-insert. */ int _rl_show_mode_in_prompt = 0; +/* Non-zero means to attempt to put the terminal in `bracketed paste mode', + where it will prefix pasted text with an escape sequence and send + another to mark the end of the paste. */ +int _rl_enable_bracketed_paste = 0; + /* **************************************************************** */ /* */ /* Top Level Functions */ @@ -379,7 +386,7 @@ readline (prompt) RL_SETSTATE (RL_STATE_CALLBACK); #endif -#if HAVE_DECL_AUDIT_TTY && defined (ENABLE_TTY_AUDIT_SUPPORT) +#if HAVE_DECL_AUDIT_USER_TTY && defined (HAVE_LIBAUDIT_H) && defined (ENABLE_TTY_AUDIT_SUPPORT) if (value) _rl_audit_tty (value); #endif @@ -525,10 +532,10 @@ readline_internal_charloop () static int lastc, eof_found; int c, code, lk; - lastc = -1; - eof_found = 0; + lastc = EOF; #if !defined (READLINE_CALLBACKS) + eof_found = 0; while (rl_done == 0) { #endif @@ -556,8 +563,7 @@ readline_internal_charloop () { /* Then initialize the argument and number of keys read. */ _rl_reset_argument (); - rl_key_sequence_length = 0; - rl_executing_keyseq[0] = 0; + rl_executing_keyseq[rl_key_sequence_length = 0] = '\0'; } RL_SETSTATE(RL_STATE_READCMD); @@ -579,15 +585,36 @@ readline_internal_charloop () #endif } - /* EOF typed to a non-blank line is a . If we want to change this, - to force any existing line to be ignored when read(2) reads EOF, - for example, this is the place to change. */ + /* EOF typed to a non-blank line is ^D the first time, EOF the second + time in a row. This won't return any partial line read from the tty. + If we want to change this, to force any existing line to be returned + when read(2) reads EOF, for example, this is the place to change. */ if (c == EOF && rl_end) - c = NEWLINE; + { + if (RL_SIG_RECEIVED ()) + { + RL_CHECK_SIGNALS (); + if (rl_signal_event_hook) + (*rl_signal_event_hook) (); /* XXX */ + } + + /* XXX - reading two consecutive EOFs returns EOF */ + if (RL_ISSTATE (RL_STATE_TERMPREPPED)) + { + if (lastc == _rl_eof_char || lastc == EOF) + rl_end = 0; + else + c = _rl_eof_char; + } + else + c = NEWLINE; + } /* The character _rl_eof_char typed to blank line, and not as the - previous character is interpreted as EOF. */ - if (((c == _rl_eof_char && lastc != c) || c == EOF) && !rl_end) + previous character is interpreted as EOF. This doesn't work when + READLINE_CALLBACKS is defined, so hitting a series of ^Ds will + erase all the chars on the line and then return EOF. */ + if (((c == _rl_eof_char && lastc != c) || c == EOF) && rl_end == 0) { #if defined (READLINE_CALLBACKS) RL_SETSTATE(RL_STATE_DONE); @@ -818,7 +845,7 @@ _rl_dispatch_subseq (key, map, got_subseq) /* Special case rl_do_lowercase_version (). */ if (func == rl_do_lowercase_version) /* Should we do anything special if key == ANYOTHERKEY? */ - return (_rl_dispatch (_rl_to_lower (key), map)); + return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map)); rl_executing_keymap = map; rl_executing_key = key; @@ -888,8 +915,10 @@ _rl_dispatch_subseq (key, map, got_subseq) default) or a timeout determined by the value of `keyseq-timeout' */ /* _rl_keyseq_timeout specified in milliseconds; _rl_input_queued takes microseconds, so multiply by 1000 */ - if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap - && _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) + if (rl_editing_mode == vi_mode && key == ESC && map == vi_insertion_keymap && + (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && + _rl_pushed_input_available () == 0 && + _rl_input_queued ((_rl_keyseq_timeout > 0) ? _rl_keyseq_timeout*1000 : 0) == 0) return (_rl_dispatch (ANYOTHERKEY, FUNCTION_TO_KEYMAP (map, key))); #endif @@ -900,6 +929,16 @@ _rl_dispatch_subseq (key, map, got_subseq) /* Allocate new context here. Use linked contexts (linked through cxt->ocxt) to simulate recursion */ #if defined (READLINE_CALLBACKS) +# if defined (VI_MODE) + /* If we're redoing a vi mode command and we know there is a shadowed + function corresponding to this key, just call it -- all the redoable + vi mode commands already have all the input they need, and rl_vi_redo + assumes that one call to rl_dispatch is sufficient to complete the + command. */ + if (_rl_vi_redoing && RL_ISSTATE (RL_STATE_CALLBACK) && + map[ANYOTHERKEY].function != 0) + return (_rl_subseq_result (-2, map, key, got_subseq)); +# endif if (RL_ISSTATE (RL_STATE_CALLBACK)) { /* Return 0 only the first time, to indicate success to @@ -947,7 +986,7 @@ _rl_dispatch_subseq (key, map, got_subseq) } else { - _rl_abort_internal (); + _rl_abort_internal (); /* XXX */ return -1; } break; @@ -962,6 +1001,7 @@ _rl_dispatch_subseq (key, map, got_subseq) } break; } + #if defined (VI_MODE) if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && key != ANYOTHERKEY && @@ -994,22 +1034,27 @@ _rl_subseq_result (r, map, key, got_subseq) type = m[ANYOTHERKEY].type; func = m[ANYOTHERKEY].function; if (type == ISFUNC && func == rl_do_lowercase_version) - r = _rl_dispatch (_rl_to_lower (key), map); - else if (type == ISFUNC && func == rl_insert) + r = _rl_dispatch (_rl_to_lower ((unsigned char)key), map); + else if (type == ISFUNC) { - /* If the function that was shadowed was self-insert, we - somehow need a keymap with map[key].func == self-insert. - Let's use this one. */ + /* If we shadowed a function, whatever it is, we somehow need a + keymap with map[key].func == shadowed-function. + Let's use this one. Then we can dispatch using the original + key, since there are commands (e.g., in vi mode) for which it + matters. */ nt = m[key].type; nf = m[key].function; m[key].type = type; m[key].function = func; - r = _rl_dispatch (key, m); + /* Don't change _rl_dispatching_keymap, set it here */ + _rl_dispatching_keymap = map; /* previous map */ + r = _rl_dispatch_subseq (key, m, 0); m[key].type = nt; m[key].function = nf; } else + /* We probably shadowed a keymap, so keep going. */ r = _rl_dispatch (ANYOTHERKEY, m); } else if (r && map[ANYOTHERKEY].function) @@ -1179,13 +1224,17 @@ readline_initialize_everything () /* Try to bind a common arrow key prefix, if not already bound. */ bind_arrow_keys (); + /* Bind the bracketed paste prefix assuming that the user will enable + it on terminals that support it. */ + bind_bracketed_paste_prefix (); + /* If the completion parser's default word break characters haven't been set yet, then do so now. */ if (rl_completer_word_break_characters == (char *)NULL) rl_completer_word_break_characters = (char *)rl_basic_word_break_characters; #if defined (COLOR_SUPPORT) - if (_rl_colored_stats) + if (_rl_colored_stats || _rl_colored_completion_prefix) _rl_parse_colors (); #endif @@ -1289,6 +1338,22 @@ bind_arrow_keys () #endif } +static void +bind_bracketed_paste_prefix () +{ + Keymap xkeymap; + + xkeymap = _rl_keymap; + + _rl_keymap = emacs_standard_keymap; + rl_bind_keyseq_if_unbound (BRACK_PASTE_PREF, rl_bracketed_paste_begin); + + _rl_keymap = vi_insertion_keymap; + rl_bind_keyseq_if_unbound (BRACK_PASTE_PREF, rl_bracketed_paste_begin); + + _rl_keymap = xkeymap; +} + /* **************************************************************** */ /* */ /* Saving and Restoring Readline's state */ @@ -1317,6 +1382,7 @@ rl_save_state (sp) sp->lastfunc = rl_last_func; sp->insmode = rl_insert_mode; sp->edmode = rl_editing_mode; + sp->kseq = rl_executing_keyseq; sp->kseqlen = rl_key_sequence_length; sp->inf = rl_instream; sp->outf = rl_outstream; @@ -1326,6 +1392,12 @@ rl_save_state (sp) sp->catchsigs = rl_catch_signals; sp->catchsigwinch = rl_catch_sigwinch; + sp->entryfunc = rl_completion_entry_function; + sp->menuentryfunc = rl_menu_completion_entry_function; + sp->ignorefunc = rl_ignore_some_completions_function; + sp->attemptfunc = rl_attempted_completion_function; + sp->wordbreakchars = rl_completer_word_break_characters; + return (0); } @@ -1351,6 +1423,7 @@ rl_restore_state (sp) rl_last_func = sp->lastfunc; rl_insert_mode = sp->insmode; rl_editing_mode = sp->edmode; + rl_executing_keyseq = sp->kseq; rl_key_sequence_length = sp->kseqlen; rl_instream = sp->inf; rl_outstream = sp->outf; @@ -1360,5 +1433,11 @@ rl_restore_state (sp) rl_catch_signals = sp->catchsigs; rl_catch_sigwinch = sp->catchsigwinch; + rl_completion_entry_function = sp->entryfunc; + rl_menu_completion_entry_function = sp->menuentryfunc; + rl_ignore_some_completions_function = sp->ignorefunc; + rl_attempted_completion_function = sp->attemptfunc; + rl_completer_word_break_characters = sp->wordbreakchars; + return (0); } diff --git a/lib/readline/readline.h b/lib/readline/readline.h index 08dcd2b..924bbfb 100644 --- a/lib/readline/readline.h +++ b/lib/readline/readline.h @@ -1,6 +1,6 @@ /* Readline.h -- the names of functions callable from within readline. */ -/* Copyright (C) 1987-2013 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -39,9 +39,9 @@ extern "C" { #endif /* Hex-encoded Readline version number. */ -#define RL_READLINE_VERSION 0x0603 /* Readline 6.3 */ -#define RL_VERSION_MAJOR 6 -#define RL_VERSION_MINOR 3 +#define RL_READLINE_VERSION 0x0700 /* Readline 7.0 */ +#define RL_VERSION_MAJOR 7 +#define RL_VERSION_MINOR 0 /* Readline data structures. */ @@ -172,8 +172,9 @@ extern int rl_yank PARAMS((int, int)); extern int rl_yank_pop PARAMS((int, int)); extern int rl_yank_nth_arg PARAMS((int, int)); extern int rl_yank_last_arg PARAMS((int, int)); -/* Not available unless __CYGWIN__ is defined. */ -#ifdef __CYGWIN__ +extern int rl_bracketed_paste_begin PARAMS((int, int)); +/* Not available unless _WIN32 is defined. */ +#if defined (_WIN32) extern int rl_paste_from_clipboard PARAMS((int, int)); #endif @@ -219,6 +220,7 @@ extern int rl_insert_close PARAMS((int, int)); extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *)); extern void rl_callback_read_char PARAMS((void)); extern void rl_callback_handler_remove PARAMS((void)); +extern void rl_callback_sigcleanup PARAMS((void)); /* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */ /* VI-mode bindable commands. */ @@ -247,9 +249,11 @@ extern int rl_vi_column PARAMS((int, int)); extern int rl_vi_delete_to PARAMS((int, int)); extern int rl_vi_change_to PARAMS((int, int)); extern int rl_vi_yank_to PARAMS((int, int)); +extern int rl_vi_yank_pop PARAMS((int, int)); extern int rl_vi_rubout PARAMS((int, int)); extern int rl_vi_delete PARAMS((int, int)); extern int rl_vi_back_to_indent PARAMS((int, int)); +extern int rl_vi_unix_word_rubout PARAMS((int, int)); extern int rl_vi_first_print PARAMS((int, int)); extern int rl_vi_char_search PARAMS((int, int)); extern int rl_vi_match PARAMS((int, int)); @@ -375,6 +379,7 @@ extern void rl_redisplay PARAMS((void)); extern int rl_on_new_line PARAMS((void)); extern int rl_on_new_line_with_prompt PARAMS((void)); extern int rl_forced_update_display PARAMS((void)); +extern int rl_clear_visible_line PARAMS((void)); extern int rl_clear_message PARAMS((void)); extern int rl_reset_line_state PARAMS((void)); extern int rl_crlf PARAMS((void)); @@ -389,6 +394,7 @@ extern int rl_show_char PARAMS((int)); /* Undocumented in texinfo manual. */ extern int rl_character_len PARAMS((int, int)); +extern void rl_redraw_prompt_last_line PARAMS((void)); /* Save and restore internal prompt redisplay information. */ extern void rl_save_prompt PARAMS((void)); @@ -436,6 +442,8 @@ extern void rl_cleanup_after_signal PARAMS((void)); extern void rl_reset_after_signal PARAMS((void)); extern void rl_free_line_state PARAMS((void)); +extern int rl_pending_signal PARAMS((void)); + extern void rl_echo_signal_char PARAMS((int)); extern int rl_set_paren_blink_timeout PARAMS((int)); @@ -489,7 +497,7 @@ extern int rl_readline_version; /* e.g., 0x0402 */ extern int rl_gnu_readline_p; /* Flags word encapsulating the current readline state. */ -extern int rl_readline_state; +extern unsigned long rl_readline_state; /* Says which editing mode readline is currently using. 1 means emacs mode; 0 means vi mode. */ @@ -634,7 +642,7 @@ extern rl_compentry_func_t *rl_completion_entry_function; /* Optional generator for menu completion. Default is rl_completion_entry_function (rl_filename_completion_function). */ - extern rl_compentry_func_t *rl_menu_completion_entry_function; +extern rl_compentry_func_t *rl_menu_completion_entry_function; /* If rl_ignore_some_completions_function is non-NULL it is the address of a function to call after all of the possible matches have been @@ -826,6 +834,14 @@ extern int rl_ignore_completion_duplicates; completion character will be inserted as any other. */ extern int rl_inhibit_completion; +/* Applications can set this to non-zero to have readline's signal handlers + installed during the entire duration of reading a complete line, as in + readline-6.2. This should be used with care, because it can result in + readline receiving signals and not handling them until it's called again + via rl_callback_read_char, thereby stealing them from the application. + By default, signal handlers are only active while readline is active. */ +extern int rl_persistent_signal_handlers; + /* Input error; can be returned by (*rl_getc_function) if readline is reading a top-level command (RL_ISSTATE (RL_STATE_READCMD)). */ #define READERR (-2) @@ -866,9 +882,10 @@ extern int rl_inhibit_completion; #define RL_STATE_VIMOTION 0x0100000 /* reading vi motion arg */ #define RL_STATE_MULTIKEY 0x0200000 /* reading multiple-key command */ #define RL_STATE_VICMDONCE 0x0400000 /* entered vi command mode at least once */ -#define RL_STATE_REDISPLAYING 0x0800000 /* updating terminal display */ +#define RL_STATE_CHARSEARCH 0x0800000 /* vi mode char search */ +#define RL_STATE_REDISPLAYING 0x1000000 /* updating terminal display */ -#define RL_STATE_DONE 0x1000000 /* done; accepted line */ +#define RL_STATE_DONE 0x2000000 /* done; accepted line */ #define RL_SETSTATE(x) (rl_readline_state |= (x)) #define RL_UNSETSTATE(x) (rl_readline_state &= ~(x)) @@ -879,8 +896,8 @@ struct readline_state { int point; int end; int mark; - char *buffer; int buflen; + char *buffer; UNDO_LIST *ul; char *prompt; @@ -893,10 +910,12 @@ struct readline_state { rl_command_func_t *lastfunc; int insmode; int edmode; + char *kseq; int kseqlen; + + int pendingin; FILE *inf; FILE *outf; - int pendingin; char *macro; /* signal state */ @@ -906,9 +925,16 @@ struct readline_state { /* search state */ /* completion state */ + rl_compentry_func_t *entryfunc; + rl_compentry_func_t *menuentryfunc; + rl_compignore_func_t *ignorefunc; + rl_completion_func_t *attemptfunc; + char *wordbreakchars; /* options state */ + /* hook state */ + /* reserved for future expansion, so the struct size doesn't change */ char reserved[64]; }; diff --git a/lib/readline/rlconf.h b/lib/readline/rlconf.h index 1a40afc..98c970a 100644 --- a/lib/readline/rlconf.h +++ b/lib/readline/rlconf.h @@ -1,6 +1,6 @@ /* rlconf.h -- readline configuration definitions */ -/* Copyright (C) 1992-2012 Free Software Foundation, Inc. +/* Copyright (C) 1992-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -64,6 +64,16 @@ /* Define this if you want to enable code that talks to the Linux kernel tty auditing system. */ -#define ENABLE_TTY_AUDIT_SUPPORT +/* #define ENABLE_TTY_AUDIT_SUPPORT */ + +/* Defaults for the various editing mode indicators, inserted at the beginning + of the last (maybe only) line of the prompt if show-mode-in-prompt is on */ +#define RL_EMACS_MODESTR_DEFAULT "@" +#define RL_EMACS_MODESTR_DEFLEN 1 + +#define RL_VI_INS_MODESTR_DEFAULT "(ins)" +#define RL_VI_INS_MODESTR_DEFLEN 5 +#define RL_VI_CMD_MODESTR_DEFAULT "(cmd)" +#define RL_VI_CMD_MODESTR_DEFLEN 5 #endif /* _RLCONF_H_ */ diff --git a/lib/readline/rlmbutil.h b/lib/readline/rlmbutil.h index 06d85ab..4748a61 100644 --- a/lib/readline/rlmbutil.h +++ b/lib/readline/rlmbutil.h @@ -1,6 +1,6 @@ /* rlmbutil.h -- utility functions for multibyte characters. */ -/* Copyright (C) 2001-2009 Free Software Foundation, Inc. +/* Copyright (C) 2001-2015 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. @@ -123,13 +123,53 @@ extern int _rl_walphabetic PARAMS((wchar_t)); #define MB_INVALIDCH(x) ((x) == (size_t)-1 || (x) == (size_t)-2) #define MB_NULLWCH(x) ((x) == 0) +/* Try and shortcut the printable ascii characters to cut down the number of + calls to a libc wcwidth() */ +static inline int +_rl_wcwidth (wc) + wchar_t wc; +{ + switch (wc) + { + case ' ': case '!': case '"': case '#': case '%': + case '&': case '\'': case '(': case ')': case '*': + case '+': case ',': case '-': case '.': case '/': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case ':': case ';': case '<': case '=': case '>': + case '?': + case 'A': case 'B': case 'C': case 'D': case 'E': + case 'F': case 'G': case 'H': case 'I': case 'J': + case 'K': case 'L': case 'M': case 'N': case 'O': + case 'P': case 'Q': case 'R': case 'S': case 'T': + case 'U': case 'V': case 'W': case 'X': case 'Y': + case 'Z': + case '[': case '\\': case ']': case '^': case '_': + case 'a': case 'b': case 'c': case 'd': case 'e': + case 'f': case 'g': case 'h': case 'i': case 'j': + case 'k': case 'l': case 'm': case 'n': case 'o': + case 'p': case 'q': case 'r': case 's': case 't': + case 'u': case 'v': case 'w': case 'x': case 'y': + case 'z': case '{': case '|': case '}': case '~': + return 1; + default: + return wcwidth (wc); + } +} + /* Unicode combining characters range from U+0300 to U+036F */ #define UNICODE_COMBINING_CHAR(x) ((x) >= 768 && (x) <= 879) #if defined (WCWIDTH_BROKEN) -# define WCWIDTH(wc) ((_rl_utf8locale && UNICODE_COMBINING_CHAR(wc)) ? 0 : wcwidth(wc)) +# define WCWIDTH(wc) ((_rl_utf8locale && UNICODE_COMBINING_CHAR(wc)) ? 0 : _rl_wcwidth(wc)) #else -# define WCWIDTH(wc) wcwidth(wc) +# define WCWIDTH(wc) _rl_wcwidth(wc) +#endif + +#if defined (WCWIDTH_BROKEN) +# define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0 && iswcntrl(x) == 0) +#else +# define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0) #endif #else /* !HANDLE_MULTIBYTE */ diff --git a/lib/readline/rlprivate.h b/lib/readline/rlprivate.h index 14a370d..fc3856a 100644 --- a/lib/readline/rlprivate.h +++ b/lib/readline/rlprivate.h @@ -1,7 +1,7 @@ /* rlprivate.h -- functions and variables global to the readline library, but not intended for use by applications. */ -/* Copyright (C) 1999-2012 Free Software Foundation, Inc. +/* Copyright (C) 1999-2015 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. @@ -44,6 +44,7 @@ #define RL_SIG_RECEIVED() (_rl_caught_signal != 0) #define RL_SIGINT_RECEIVED() (_rl_caught_signal == SIGINT) +#define RL_SIGWINCH_RECEIVED() (_rl_caught_signal == SIGWINCH) #define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay) #define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc) @@ -124,10 +125,11 @@ typedef struct __rl_keyseq_context int flags; int subseq_arg; int subseq_retval; /* XXX */ - Keymap dmap; - - Keymap oldmap; int okey; + + Keymap dmap; + Keymap oldmap; + struct __rl_keyseq_context *ocxt; int childval; } _rl_keyseq_cxt; @@ -185,6 +187,7 @@ extern int rl_visible_stats; #endif /* VISIBLE_STATS */ #if defined (COLOR_SUPPORT) extern int _rl_colored_stats; +extern int _rl_colored_completion_prefix; #endif /* readline.c */ @@ -290,9 +293,20 @@ extern void _rl_scxt_dispose PARAMS((_rl_search_cxt *, int)); extern int _rl_isearch_dispatch PARAMS((_rl_search_cxt *, int)); extern int _rl_isearch_callback PARAMS((_rl_search_cxt *)); +extern int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int)); extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); +/* kill.c */ +#define BRACK_PASTE_PREF "\033[200~" +#define BRACK_PASTE_SUFF "\033[201~" + +#define BRACK_PASTE_LAST '~' +#define BRACK_PASTE_SLEN 6 + +#define BRACK_PASTE_INIT "\033[?2004h" +#define BRACK_PASTE_FINI "\033[?2004l" + /* macro.c */ extern void _rl_with_macro_input PARAMS((char *)); extern int _rl_next_macro_key PARAMS((void)); @@ -334,6 +348,7 @@ extern int _rl_restore_tty_signals PARAMS((void)); /* search.c */ extern int _rl_nsearch_callback PARAMS((_rl_search_cxt *)); +extern int _rl_nsearch_cleanup PARAMS((_rl_search_cxt *, int)); /* signals.c */ extern void _rl_signal_handler PARAMS((int)); @@ -410,8 +425,10 @@ extern void _rl_vi_initialize_line PARAMS((void)); extern void _rl_vi_reset_last PARAMS((void)); extern void _rl_vi_set_last PARAMS((int, int, int)); extern int _rl_vi_textmod_command PARAMS((int)); +extern int _rl_vi_motion_command PARAMS((int)); extern void _rl_vi_done_inserting PARAMS((void)); extern int _rl_vi_domove_callback PARAMS((_rl_vimotion_cxt *)); +extern int _rl_vi_domove_motion_cleanup PARAMS((int, _rl_vimotion_cxt *)); /************************************************************************* * Undocumented private variables * @@ -446,6 +463,13 @@ extern int _rl_last_c_pos; extern int _rl_suppress_redisplay; extern int _rl_want_redisplay; +extern char *_rl_emacs_mode_str; +extern int _rl_emacs_modestr_len; +extern char *_rl_vi_ins_mode_str; +extern int _rl_vi_ins_modestr_len; +extern char *_rl_vi_cmd_mode_str; +extern int _rl_vi_cmd_modestr_len; + /* isearch.c */ extern char *_rl_isearch_terminators; @@ -475,6 +499,7 @@ extern int _rl_bind_stty_chars; extern int _rl_revert_all_at_newline; extern int _rl_echo_control_chars; extern int _rl_show_mode_in_prompt; +extern int _rl_enable_bracketed_paste; extern char *_rl_comment_begin; extern unsigned char _rl_parsing_conditionalized_out; extern Keymap _rl_keymap; @@ -524,12 +549,16 @@ extern int _rl_screenchars; extern int _rl_terminal_can_insert; extern int _rl_term_autowrap; +/* text.c */ +extern int _rl_optimize_typeahead; + /* undo.c */ extern int _rl_doing_an_undo; extern int _rl_undo_group_level; /* vi_mode.c */ extern int _rl_vi_last_command; +extern int _rl_vi_redoing; extern _rl_vimotion_cxt *_rl_vimvcxt; #endif /* _RL_PRIVATE_H_ */ diff --git a/lib/readline/rltty.c b/lib/readline/rltty.c index 908bae1..b1c7929 100644 --- a/lib/readline/rltty.c +++ b/lib/readline/rltty.c @@ -1,10 +1,10 @@ /* rltty.c -- functions to prepare and restore the terminal for readline's use. */ -/* Copyright (C) 1992-2005 Free Software Foundation, Inc. +/* Copyright (C) 1992-2016 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library - for reading lines of text with interactive input and history editing. + for reading lines of text with interactive input and history editing. Readline is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -37,11 +37,11 @@ #include "rldefs.h" -#if defined (GWINSZ_IN_SYS_IOCTL) -# include -#endif /* GWINSZ_IN_SYS_IOCTL */ - #include "rltty.h" +#if defined (HAVE_SYS_IOCTL_H) +# include /* include for declaration of ioctl */ +#endif + #include "readline.h" #include "rlprivate.h" @@ -60,7 +60,13 @@ static void set_winsize PARAMS((int)); /* */ /* **************************************************************** */ -/* Non-zero means that the terminal is in a prepped state. */ +/* Non-zero means that the terminal is in a prepped state. There are several + flags that are OR'd in to denote whether or not we have sent various + init strings to the terminal. */ +#define TPX_PREPPED 0x01 +#define TPX_BRACKPASTE 0x02 +#define TPX_METAKEY 0x04 + static int terminal_prepped; static _RL_TTY_CHARS _rl_tty_chars, _rl_last_tty_chars; @@ -595,7 +601,7 @@ void rl_prep_terminal (meta_flag) int meta_flag; { - int tty; + int tty, nprep; TIOTYPE tio; if (terminal_prepped) @@ -642,7 +648,7 @@ rl_prep_terminal (meta_flag) /* If editing in vi mode, make sure we set the bindings in the insertion keymap no matter what keymap we ended up in. */ if (rl_editing_mode == vi_mode) - _rl_bind_tty_special_chars (vi_insertion_keymap, tio); + _rl_bind_tty_special_chars (vi_insertion_keymap, tio); else #endif _rl_bind_tty_special_chars (_rl_keymap, tio); @@ -659,8 +665,16 @@ rl_prep_terminal (meta_flag) if (_rl_enable_keypad) _rl_control_keypad (1); + nprep = TPX_PREPPED; + + if (_rl_enable_bracketed_paste) + { + fprintf (rl_outstream, BRACK_PASTE_INIT); + nprep |= TPX_BRACKPASTE; + } + fflush (rl_outstream); - terminal_prepped = 1; + terminal_prepped = nprep; RL_SETSTATE(RL_STATE_TERMPREPPED); _rl_release_sigint (); @@ -672,7 +686,7 @@ rl_deprep_terminal () { int tty; - if (!terminal_prepped) + if (terminal_prepped == 0) return; /* Try to keep this function from being interrupted. */ @@ -680,6 +694,9 @@ rl_deprep_terminal () tty = rl_instream ? fileno (rl_instream) : fileno (stdin); + if (terminal_prepped & TPX_BRACKPASTE) + fprintf (rl_outstream, BRACK_PASTE_FINI); + if (_rl_enable_keypad) _rl_control_keypad (0); @@ -697,6 +714,19 @@ rl_deprep_terminal () _rl_release_sigint (); } #endif /* !NO_TTY_DRIVER */ + +/* Set readline's idea of whether or not it is echoing output to the terminal, + returning the old value. */ +int +rl_tty_set_echoing (u) + int u; +{ + int o; + + o = _rl_echoing_p; + _rl_echoing_p = u; + return o; +} /* **************************************************************** */ /* */ @@ -859,6 +889,11 @@ _rl_bind_tty_special_chars (kmap, ttybuff) # endif /* VLNEXT && TERMIOS_TTY_DRIVER */ # if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER) +# if defined (VI_MODE) + if (rl_editing_mode == vi_mode) + SET_SPECIAL (VWERASE, rl_vi_unix_word_rubout); + else +# endif SET_SPECIAL (VWERASE, rl_unix_word_rubout); # endif /* VWERASE && TERMIOS_TTY_DRIVER */ } diff --git a/lib/readline/rltypedefs.h b/lib/readline/rltypedefs.h index b113ee6..f9f5cd3 100644 --- a/lib/readline/rltypedefs.h +++ b/lib/readline/rltypedefs.h @@ -26,6 +26,25 @@ extern "C" { #endif +/* Old-style, attempt to mark as deprecated in some way people will notice. */ + +#if !defined (_FUNCTION_DEF) +# define _FUNCTION_DEF + +#if defined(__GNUC__) || defined(__clang__) +typedef int Function () __attribute__ ((deprecated)); +typedef void VFunction () __attribute__ ((deprecated)); +typedef char *CPFunction () __attribute__ ((deprecated)); +typedef char **CPPFunction () __attribute__ ((deprecated)); +#else +typedef int Function (); +typedef void VFunction (); +typedef char *CPFunction (); +typedef char **CPPFunction (); +#endif + +#endif /* _FUNCTION_DEF */ + /* New style. */ #if !defined (_RL_FUNCTION_TYPEDEF) diff --git a/lib/readline/search.c b/lib/readline/search.c index 028c250..45d95d2 100644 --- a/lib/readline/search.c +++ b/lib/readline/search.c @@ -1,6 +1,6 @@ /* search.c - code for non-incremental searching in emacs and vi modes. */ -/* Copyright (C) 1992-2013 Free Software Foundation, Inc. +/* Copyright (C) 1992-2015 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. @@ -58,7 +58,7 @@ _rl_search_cxt *_rl_nscxt = 0; extern HIST_ENTRY *_rl_saved_line_for_history; /* Functions imported from the rest of the library. */ -extern int _rl_free_history_entry PARAMS((HIST_ENTRY *)); +extern void _rl_free_history_entry PARAMS((HIST_ENTRY *)); static char *noninc_search_string = (char *) NULL; static int noninc_history_pos; @@ -80,7 +80,6 @@ static int rl_history_search_internal PARAMS((int, int)); static void rl_history_search_reinit PARAMS((int)); static _rl_search_cxt *_rl_nsearch_init PARAMS((int, int)); -static int _rl_nsearch_cleanup PARAMS((_rl_search_cxt *, int)); static void _rl_nsearch_abort PARAMS((_rl_search_cxt *)); static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int)); @@ -224,7 +223,7 @@ _rl_nsearch_init (dir, pchar) return cxt; } -static int +int _rl_nsearch_cleanup (cxt, r) _rl_search_cxt *cxt; int r; @@ -411,7 +410,7 @@ rl_noninc_forward_search_again (count, key) if (!noninc_search_string) { rl_ding (); - return (-1); + return (1); } r = noninc_dosearch (noninc_search_string, 1); return (r != 1); @@ -428,7 +427,7 @@ rl_noninc_reverse_search_again (count, key) if (!noninc_search_string) { rl_ding (); - return (-1); + return (1); } r = noninc_dosearch (noninc_search_string, -1); return (r != 1); diff --git a/lib/readline/signals.c b/lib/readline/signals.c index 61f02f9..927f532 100644 --- a/lib/readline/signals.c +++ b/lib/readline/signals.c @@ -1,6 +1,6 @@ /* signals.c -- signal handling support for readline. */ -/* Copyright (C) 1987-2011 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 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. @@ -213,15 +213,31 @@ _rl_handle_signal (sig) case SIGINT: _rl_reset_completion_state (); rl_free_line_state (); +#if defined (READLINE_CALLBACKS) + rl_callback_sigcleanup (); +#endif + /* FALLTHROUGH */ - case SIGTERM: - case SIGHUP: #if defined (SIGTSTP) case SIGTSTP: - case SIGTTOU: case SIGTTIN: +# if defined (HAVE_POSIX_SIGNALS) + /* Block SIGTTOU so we can restore the terminal settings to something + sane without stopping on SIGTTOU if we have been placed into the + background. Even trying to get the current terminal pgrp with + tcgetpgrp() will generate SIGTTOU, so we don't bother. Don't bother + doing this if we've been stopped on SIGTTOU; it's aready too late. */ + sigemptyset (&set); + sigaddset (&set, SIGTTOU); + sigprocmask (SIG_BLOCK, &set, (sigset_t *)NULL); +# endif + case SIGTTOU: #endif /* SIGTSTP */ + case SIGTERM: +#if defined (SIGHUP) + case SIGHUP: +#endif #if defined (SIGALRM) case SIGALRM: #endif @@ -232,6 +248,10 @@ _rl_handle_signal (sig) rl_cleanup_after_signal (); #if defined (HAVE_POSIX_SIGNALS) + /* Unblock SIGTTOU blocked above */ + if (sig == SIGTTIN || sig == SIGTSTP) + sigprocmask (SIG_UNBLOCK, &set, (sigset_t *)NULL); + sigemptyset (&set); sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set); sigdelset (&set, sig); @@ -397,7 +417,9 @@ rl_set_signals () sigaddset (&bset, SIGINT); sigaddset (&bset, SIGTERM); +#if defined (SIGHUP) sigaddset (&bset, SIGHUP); +#endif #if defined (SIGQUIT) sigaddset (&bset, SIGQUIT); #endif @@ -426,7 +448,9 @@ rl_set_signals () rl_maybe_set_sighandler (SIGINT, rl_signal_handler, &old_int); rl_maybe_set_sighandler (SIGTERM, rl_signal_handler, &old_term); +#if defined (SIGHUP) rl_maybe_set_sighandler (SIGHUP, rl_signal_handler, &old_hup); +#endif #if defined (SIGQUIT) rl_maybe_set_sighandler (SIGQUIT, rl_signal_handler, &old_quit); #endif @@ -491,7 +515,9 @@ rl_clear_signals () overhead */ rl_maybe_restore_sighandler (SIGINT, &old_int); rl_maybe_restore_sighandler (SIGTERM, &old_term); +#if defined (SIGHUP) rl_maybe_restore_sighandler (SIGHUP, &old_hup); +#endif #if defined (SIGQUIT) rl_maybe_restore_sighandler (SIGQUIT, &old_quit); #endif @@ -567,6 +593,11 @@ rl_free_line_state () _rl_reset_argument (); } +int +rl_pending_signal () +{ + return (_rl_caught_signal); +} #endif /* HANDLE_SIGNALS */ /* **************************************************************** */ diff --git a/lib/readline/tcap.h b/lib/readline/tcap.h index 9d09b7a..859e6ee 100644 --- a/lib/readline/tcap.h +++ b/lib/readline/tcap.h @@ -1,6 +1,6 @@ /* tcap.h -- termcap library functions and variables. */ -/* Copyright (C) 1996-2009 Free Software Foundation, Inc. +/* Copyright (C) 1996-2015 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. @@ -31,6 +31,8 @@ # include "rltty.h" # endif # include +#elif defined (HAVE_NCURSES_TERMCAP_H) +# include #else /* On Solaris2, sys/types.h #includes sys/reg.h, which #defines PC. diff --git a/lib/readline/terminal.c b/lib/readline/terminal.c index 1212ec4..ef2884e 100644 --- a/lib/readline/terminal.c +++ b/lib/readline/terminal.c @@ -1,6 +1,6 @@ /* terminal.c -- controlling the terminal with termcap. */ -/* Copyright (C) 1996-2009 Free Software Foundation, Inc. +/* Copyright (C) 1996-2015 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. @@ -51,15 +51,14 @@ /* System-specific feature definitions and include files. */ #include "rldefs.h" -#if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ) -# include -#endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */ - #ifdef __MSDOS__ # include #endif #include "rltty.h" +#if defined (HAVE_SYS_IOCTL_H) +# include /* include for declaration of ioctl */ +#endif #include "tcap.h" /* Some standard library routines. */ diff --git a/lib/readline/text.c b/lib/readline/text.c index f29adf8..c353252 100644 --- a/lib/readline/text.c +++ b/lib/readline/text.c @@ -1,6 +1,6 @@ /* text.c -- text handling commands for readline. */ -/* Copyright (C) 1987-2010 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 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. @@ -71,6 +71,8 @@ static int _rl_char_search_callback PARAMS((_rl_callback_generic_arg *)); rl_insert_text. Text blocks larger than this are divided. */ #define TEXT_COUNT_MAX 1024 +int _rl_optimize_typeahead = 1; /* rl_insert tries to read typeahead */ + /* **************************************************************** */ /* */ /* Insert and Delete */ @@ -570,7 +572,7 @@ rl_refresh_line (ignore1, ignore2) _rl_clear_to_eol (0); /* arg of 0 means to not use spaces */ - rl_forced_update_display (); + rl_redraw_prompt_last_line (); rl_display_fixed = 1; return 0; @@ -608,7 +610,7 @@ rl_skip_csi_sequence (count, key) while (ch >= 0x20 && ch < 0x40); RL_UNSETSTATE (RL_STATE_MOREINPUT); - return 0; + return (ch < 0); } int @@ -620,6 +622,8 @@ rl_arrow_keys (count, c) RL_SETSTATE(RL_STATE_MOREINPUT); ch = rl_read_key (); RL_UNSETSTATE(RL_STATE_MOREINPUT); + if (ch < 0) + return (1); switch (_rl_to_upper (ch)) { @@ -890,8 +894,49 @@ int rl_insert (count, c) int count, c; { - return (rl_insert_mode == RL_IM_INSERT ? _rl_insert_char (count, c) - : _rl_overwrite_char (count, c)); + int r, n, x; + + r = (rl_insert_mode == RL_IM_INSERT) ? _rl_insert_char (count, c) : _rl_overwrite_char (count, c); + + /* XXX -- attempt to batch-insert pending input that maps to self-insert */ + x = 0; + n = (unsigned short)-2; + while (_rl_optimize_typeahead && + (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) && + _rl_pushed_input_available () == 0 && + _rl_input_queued (0) && + (n = rl_read_key ()) > 0 && + _rl_keymap[(unsigned char)n].type == ISFUNC && + _rl_keymap[(unsigned char)n].function == rl_insert) + { + r = (rl_insert_mode == RL_IM_INSERT) ? _rl_insert_char (1, n) : _rl_overwrite_char (1, n); + /* _rl_insert_char keeps its own set of pending characters to compose a + complete multibyte character, and only returns 1 if it sees a character + that's part of a multibyte character but too short to complete one. We + can try to read another character in the hopes that we will get the + next one or just punt. Right now we try to read another character. + We don't want to call rl_insert_next if _rl_insert_char has already + stored the character in the pending_bytes array because that will + result in doubled input. */ + n = (unsigned short)-2; + x++; /* count of bytes of typeahead read, currently unused */ + if (r == 1) /* read partial multibyte character */ + continue; + if (rl_done || r != 0) + break; + } + + if (n != (unsigned short)-2) /* -2 = sentinel value for having inserted N */ + { + /* setting rl_pending_input inhibits setting rl_last_func so we do it + ourselves here */ + rl_last_func = rl_insert; + _rl_reset_argument (); + rl_executing_keyseq[rl_key_sequence_length = 0] = '\0'; + r = rl_execute_next (n); + } + + return r; } /* Insert the next typed character verbatim. */ @@ -906,7 +951,7 @@ _rl_insert_next (count) RL_UNSETSTATE(RL_STATE_MOREINPUT); if (c < 0) - return -1; + return 1; if (RL_ISSTATE (RL_STATE_MACRODEF)) _rl_add_macro_char (c); @@ -1066,7 +1111,7 @@ rl_rubout (count, key) if (!rl_point) { rl_ding (); - return -1; + return 1; } if (rl_insert_mode == RL_IM_OVERWRITE) @@ -1089,7 +1134,7 @@ _rl_rubout_char (count, key) if (rl_point == 0) { rl_ding (); - return -1; + return 1; } orig_point = rl_point; @@ -1103,7 +1148,7 @@ _rl_rubout_char (count, key) c = rl_line_buffer[--rl_point]; rl_delete_text (rl_point, orig_point); /* The erase-at-end-of-line hack is of questionable merit now. */ - if (rl_point == rl_end && ISPRINT (c) && _rl_last_c_pos) + if (rl_point == rl_end && ISPRINT ((unsigned char)c) && _rl_last_c_pos) { int l; l = rl_character_len (c, rl_point); @@ -1133,7 +1178,7 @@ rl_delete (count, key) if (rl_point == rl_end) { rl_ding (); - return -1; + return 1; } if (count > 1 || rl_explicit_arg) @@ -1303,7 +1348,7 @@ rl_change_case (count, op) if (op != UpCase && op != DownCase && op != CapCase) { rl_ding (); - return -1; + return 1; } if (count < 0) @@ -1337,7 +1382,7 @@ rl_change_case (count, op) } else nop = op; - if (MB_CUR_MAX == 1 || rl_byte_oriented || isascii (c)) + if (MB_CUR_MAX == 1 || rl_byte_oriented || isascii ((unsigned char)c)) { nc = (nop == UpCase) ? _rl_to_upper (c) : _rl_to_lower (c); rl_line_buffer[start] = nc; @@ -1403,7 +1448,7 @@ rl_transpose_words (count, key) { rl_ding (); rl_point = orig_point; - return -1; + return 1; } /* Get the text of the words. */ @@ -1456,7 +1501,7 @@ rl_transpose_chars (count, key) if (!rl_point || rl_end < 2) { rl_ding (); - return -1; + return 1; } rl_begin_undo_group (); @@ -1519,7 +1564,7 @@ _rl_char_search_internal (count, dir, schar) #endif if (dir == 0) - return -1; + return 1; pos = rl_point; inc = (dir < 0) ? -1 : 1; @@ -1528,7 +1573,7 @@ _rl_char_search_internal (count, dir, schar) if ((dir < 0 && pos <= 0) || (dir > 0 && pos >= rl_end)) { rl_ding (); - return -1; + return 1; } #if defined (HANDLE_MULTIBYTE) @@ -1583,7 +1628,7 @@ _rl_char_search (count, fdir, bdir) mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX); if (mb_len <= 0) - return -1; + return 1; if (count < 0) return (_rl_char_search_internal (-count, bdir, mbchar, mb_len)); @@ -1602,7 +1647,7 @@ _rl_char_search (count, fdir, bdir) RL_UNSETSTATE(RL_STATE_MOREINPUT); if (c < 0) - return -1; + return 1; if (count < 0) return (_rl_char_search_internal (-count, bdir, c)); @@ -1671,7 +1716,7 @@ _rl_set_mark_at_pos (position) int position; { if (position > rl_end) - return -1; + return 1; rl_mark = position; return 0; @@ -1696,7 +1741,7 @@ rl_exchange_point_and_mark (count, key) if (rl_mark == -1) { rl_ding (); - return -1; + return 1; } else SWAP (rl_point, rl_mark); diff --git a/lib/readline/tilde.c b/lib/readline/tilde.c index 1c53a45..95bc421 100644 --- a/lib/readline/tilde.c +++ b/lib/readline/tilde.c @@ -236,7 +236,11 @@ tilde_expand (string) string += end; expansion = tilde_expand_word (tilde_word); - xfree (tilde_word); + + if (expansion == 0) + expansion = tilde_word; + else + xfree (tilde_word); len = strlen (expansion); #ifdef __CYGWIN__ @@ -360,6 +364,10 @@ tilde_expand_word (filename) { /* Prefix $HOME to the rest of the string. */ expansion = sh_get_env_value ("HOME"); +#if defined (_WIN32) + if (expansion == 0) + expansion = sh_get_env_value ("APPDATA"); +#endif /* If there is no HOME variable, look up the directory in the password database. */ diff --git a/lib/readline/undo.c b/lib/readline/undo.c index e9369b1..5836304 100644 --- a/lib/readline/undo.c +++ b/lib/readline/undo.c @@ -1,7 +1,6 @@ -/* readline.c -- a general facility for reading lines of input - with emacs style editing and completion. */ +/* undo.c - manage list of changes to lines, offering opportunity to undo them */ -/* Copyright (C) 1987-2012 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -50,7 +49,7 @@ #include "rlprivate.h" #include "xmalloc.h" -extern void replace_history_data PARAMS((int, histdata_t *, histdata_t *)); +extern void _hs_replace_history_data PARAMS((int, histdata_t *, histdata_t *)); /* Non-zero tells rl_delete_text and rl_insert_text to not add to the undo list. */ @@ -129,7 +128,7 @@ rl_free_undo_list () orig_list = rl_undo_list; _rl_free_undo_list (rl_undo_list); rl_undo_list = (UNDO_LIST *)NULL; - replace_history_data (-1, (histdata_t *)orig_list, (histdata_t *)NULL); + _hs_replace_history_data (-1, (histdata_t *)orig_list, (histdata_t *)NULL); } UNDO_LIST * @@ -245,7 +244,7 @@ rl_do_undo () xfree (temp); } - replace_history_data (-1, (histdata_t *)release, (histdata_t *)rl_undo_list); + _hs_replace_history_data (-1, (histdata_t *)release, (histdata_t *)rl_undo_list); xfree (release); } diff --git a/lib/readline/util.c b/lib/readline/util.c index fa3a667..4589c61 100644 --- a/lib/readline/util.c +++ b/lib/readline/util.c @@ -1,6 +1,6 @@ /* util.c -- readline utility functions */ -/* Copyright (C) 1987-2012 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -55,6 +55,7 @@ #include "rlprivate.h" #include "xmalloc.h" +#include "rlshell.h" /* **************************************************************** */ /* */ @@ -107,12 +108,11 @@ _rl_abort_internal () while (rl_executing_macro) _rl_pop_executing_macro (); + RL_UNSETSTATE (RL_STATE_MULTIKEY); /* XXX */ + rl_last_func = (rl_command_func_t *)NULL; -#if defined (HAVE_POSIX_SIGSETJMP) - siglongjmp (_rl_top_level, 1); -#else - longjmp (_rl_top_level, 1); -#endif + + _rl_longjmp (_rl_top_level, 1); return (0); } @@ -198,12 +198,14 @@ rl_tilde_expand (ignore, key) xfree (homedir); return (0); } - else if (rl_line_buffer[start] != '~') + else if (start >= 0 && rl_line_buffer[start] != '~') { for (; !whitespace (rl_line_buffer[start]) && start >= 0; start--) ; start++; } + else if (start < 0) + start = 0; end = start; do @@ -476,6 +478,7 @@ _rl_savestring (s) return (strcpy ((char *)xmalloc (1 + (int)strlen (s)), (s))); } +#if defined (DEBUG) #if defined (USE_VARARGS) static FILE *_rl_tracefp; @@ -511,11 +514,18 @@ _rl_trace (va_alist) int _rl_tropen () { - char fnbuf[128]; + char fnbuf[128], *x; if (_rl_tracefp) fclose (_rl_tracefp); - sprintf (fnbuf, "/var/tmp/rltrace.%ld", (long)getpid()); +#if defined (_WIN32) && !defined (__CYGWIN__) + x = sh_get_env_value ("TEMP"); + if (x == 0) + x = "."; +#else + x = "/var/tmp"; +#endif + sprintf (fnbuf, "%s/rltrace.%ld", x, (long)getpid()); unlink(fnbuf); _rl_tracefp = fopen (fnbuf, "w+"); return _rl_tracefp != 0; @@ -538,10 +548,12 @@ _rl_settracefp (fp) _rl_tracefp = fp; } #endif +#endif /* DEBUG */ -#if HAVE_DECL_AUDIT_USER_TTY && defined (ENABLE_TTY_AUDIT_SUPPORT) +#if HAVE_DECL_AUDIT_USER_TTY && defined (HAVE_LIBAUDIT_H) && defined (ENABLE_TTY_AUDIT_SUPPORT) #include +#include #include #include @@ -550,42 +562,33 @@ void _rl_audit_tty (string) char *string; { + struct audit_message req; struct sockaddr_nl addr; - struct msghdr msg; - struct nlmsghdr nlm; - struct iovec iov[2]; size_t size; int fd; - fd = socket (AF_NETLINK, SOCK_RAW, NETLINK_AUDIT); + fd = socket (PF_NETLINK, SOCK_RAW, NETLINK_AUDIT); if (fd < 0) return; size = strlen (string) + 1; - nlm.nlmsg_len = NLMSG_LENGTH (size); - nlm.nlmsg_type = AUDIT_USER_TTY; - nlm.nlmsg_flags = NLM_F_REQUEST; - nlm.nlmsg_seq = 0; - nlm.nlmsg_pid = 0; + if (NLMSG_SPACE (size) > MAX_AUDIT_MESSAGE_LENGTH) + return; - iov[0].iov_base = &nlm; - iov[0].iov_len = sizeof (nlm); - iov[1].iov_base = string; - iov[1].iov_len = size; + memset (&req, 0, sizeof(req)); + req.nlh.nlmsg_len = NLMSG_SPACE (size); + req.nlh.nlmsg_type = AUDIT_USER_TTY; + req.nlh.nlmsg_flags = NLM_F_REQUEST; + req.nlh.nlmsg_seq = 0; + if (size && string) + memcpy (NLMSG_DATA(&req.nlh), string, size); + memset (&addr, 0, sizeof(addr)); addr.nl_family = AF_NETLINK; addr.nl_pid = 0; addr.nl_groups = 0; - msg.msg_name = &addr; - msg.msg_namelen = sizeof (addr); - msg.msg_iov = iov; - msg.msg_iovlen = 2; - msg.msg_control = NULL; - msg.msg_controllen = 0; - msg.msg_flags = 0; - - (void)sendmsg (fd, &msg, 0); + sendto (fd, &req, req.nlh.nlmsg_len, 0, (struct sockaddr*)&addr, sizeof(addr)); close (fd); } #endif diff --git a/lib/readline/vi_keymap.c b/lib/readline/vi_keymap.c index 60c925d..e5da2e0 100644 --- a/lib/readline/vi_keymap.c +++ b/lib/readline/vi_keymap.c @@ -1,6 +1,6 @@ /* vi_keymap.c -- the keymap for vi_mode in readline (). */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -55,7 +55,7 @@ KEYMAP_ENTRY_ARRAY vi_movement_keymap = { { ISFUNC, rl_transpose_chars }, /* Control-t */ { ISFUNC, rl_unix_line_discard }, /* Control-u */ { ISFUNC, rl_quoted_insert }, /* Control-v */ - { ISFUNC, rl_unix_word_rubout }, /* Control-w */ + { ISFUNC, rl_vi_unix_word_rubout }, /* Control-w */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-x */ { ISFUNC, rl_yank }, /* Control-y */ { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-z */ @@ -334,7 +334,7 @@ KEYMAP_ENTRY_ARRAY vi_insertion_keymap = { { ISFUNC, rl_transpose_chars }, /* Control-t */ { ISFUNC, rl_unix_line_discard }, /* Control-u */ { ISFUNC, rl_quoted_insert }, /* Control-v */ - { ISFUNC, rl_unix_word_rubout }, /* Control-w */ + { ISFUNC, rl_vi_unix_word_rubout }, /* Control-w */ { ISFUNC, rl_insert }, /* Control-x */ { ISFUNC, rl_yank }, /* Control-y */ { ISFUNC, rl_insert }, /* Control-z */ diff --git a/lib/readline/vi_mode.c b/lib/readline/vi_mode.c index 0864192..56d2e72 100644 --- a/lib/readline/vi_mode.c +++ b/lib/readline/vi_mode.c @@ -1,7 +1,7 @@ /* vi_mode.c -- A vi emulation mode for Bash. Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */ -/* Copyright (C) 1987-2012 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 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. @@ -67,6 +67,9 @@ int _rl_vi_last_command = 'i'; /* default `.' puts you in insert mode */ _rl_vimotion_cxt *_rl_vimvcxt = 0; +/* Non-zero indicates we are redoing a vi-mode command with `.' */ +int _rl_vi_redoing; + /* Non-zero means enter insertion mode. */ static int _rl_vi_doing_insert; @@ -100,8 +103,6 @@ static int _rl_vi_last_replacement; static int _rl_vi_last_key_before_insert; -static int vi_redoing; - /* Text modification commands. These are the `redoable' commands. */ static const char * const vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~"; @@ -192,6 +193,13 @@ _rl_vi_textmod_command (c) return (member (c, vi_textmod)); } +int +_rl_vi_motion_command (c) + int c; +{ + return (member (c, vi_motion)); +} + static void _rl_vi_replace_insert (count) int count; @@ -234,7 +242,7 @@ rl_vi_redo (count, c) } r = 0; - vi_redoing = 1; + _rl_vi_redoing = 1; /* If we're redoing an insert with `i', stuff in the inserted text and do not go into insertion mode. */ if (_rl_vi_last_command == 'i' && vi_insert_buffer && *vi_insert_buffer) @@ -280,7 +288,8 @@ rl_vi_redo (count, c) } else r = _rl_dispatch (_rl_vi_last_command, _rl_keymap); - vi_redoing = 0; + + _rl_vi_redoing = 0; return (r); } @@ -464,7 +473,7 @@ rl_vi_end_word (count, key) if (count < 0) { rl_ding (); - return -1; + return 1; } if (_rl_uppercase_p (key)) @@ -1089,28 +1098,55 @@ static int rl_domove_motion_callback (m) _rl_vimotion_cxt *m; { - int c, save, r; - int old_end; + int c; _rl_vi_last_motion = c = m->motion; /* Append a blank character temporarily so that the motion routines - work right at the end of the line. */ - old_end = rl_end; + work right at the end of the line. Original value of rl_end is saved + as m->end. */ rl_line_buffer[rl_end++] = ' '; rl_line_buffer[rl_end] = '\0'; _rl_dispatch (c, _rl_keymap); - /* Remove the blank that we added. */ - rl_end = old_end; +#if defined (READLINE_CALLBACKS) + if (RL_ISSTATE (RL_STATE_CALLBACK)) + { + /* Messy case where char search can be vi motion command; see rest of + details in callback.c. vi_char_search and callback_char_search just + set and unset the CHARSEARCH state. This is where any vi motion + command that needs to set its own state should be handled, with any + corresponding code to manage that state in callback.c */ + if (RL_ISSTATE (RL_STATE_CHARSEARCH)) + return 0; + else + return (_rl_vi_domove_motion_cleanup (c, m)); + } +#endif + + return (_rl_vi_domove_motion_cleanup (c, m)); +} + +int +_rl_vi_domove_motion_cleanup (c, m) + int c; + _rl_vimotion_cxt *m; +{ + int r; + + /* Remove the blank that we added in rl_domove_motion_callback. */ + rl_end = m->end; rl_line_buffer[rl_end] = '\0'; if (rl_point > rl_end) rl_point = rl_end; /* No change in position means the command failed. */ if (rl_mark == rl_point) - return (-1); + { + RL_UNSETSTATE (RL_STATE_VIMOTION); + return (-1); + } /* rl_vi_f[wW]ord () leaves the cursor on the first character of the next word. If we are not at the end of the line, and we are on a @@ -1244,8 +1280,8 @@ _rl_vi_domove_callback (m) int c, r; m->motion = c = rl_vi_domove_getchar (m); - /* XXX - what to do if this returns -1? Should we return 1 for eof to - callback code? */ + if (c < 0) + return 1; /* EOF */ r = rl_domove_read_callback (m); return ((r == 0) ? r : 1); /* normalize return values */ @@ -1301,12 +1337,12 @@ rl_vi_delete_to (count, key) _rl_vimvcxt->motion = '$'; r = rl_domove_motion_callback (_rl_vimvcxt); } - else if (vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */ + else if (_rl_vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */ { _rl_vimvcxt->motion = _rl_vi_last_motion; r = rl_domove_motion_callback (_rl_vimvcxt); } - else if (vi_redoing) /* handle redoing `dd' here */ + else if (_rl_vi_redoing) /* handle redoing `dd' here */ { _rl_vimvcxt->motion = _rl_vi_last_motion; rl_mark = rl_end; @@ -1351,7 +1387,7 @@ vi_change_dispatch (m) if ((_rl_to_upper (m->motion) == 'W') && rl_point < m->start) rl_point = m->start; - if (vi_redoing) + if (_rl_vi_redoing) { if (vi_insert_buffer && *vi_insert_buffer) rl_begin_undo_group (); @@ -1391,12 +1427,12 @@ rl_vi_change_to (count, key) _rl_vimvcxt->motion = '$'; r = rl_domove_motion_callback (_rl_vimvcxt); } - else if (vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */ + else if (_rl_vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */ { _rl_vimvcxt->motion = _rl_vi_last_motion; r = rl_domove_motion_callback (_rl_vimvcxt); } - else if (vi_redoing) /* handle redoing `cc' here */ + else if (_rl_vi_redoing) /* handle redoing `cc' here */ { _rl_vimvcxt->motion = _rl_vi_last_motion; rl_mark = rl_end; @@ -1460,12 +1496,12 @@ rl_vi_yank_to (count, key) _rl_vimvcxt->motion = '$'; r = rl_domove_motion_callback (_rl_vimvcxt); } - else if (vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */ + else if (_rl_vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */ { _rl_vimvcxt->motion = _rl_vi_last_motion; r = rl_domove_motion_callback (_rl_vimvcxt); } - else if (vi_redoing) /* handle redoing `yy' here */ + else if (_rl_vi_redoing) /* handle redoing `yy' here */ { _rl_vimvcxt->motion = _rl_vi_last_motion; rl_mark = rl_end; @@ -1534,7 +1570,7 @@ rl_vi_rubout (count, key) if (rl_point == 0) { rl_ding (); - return -1; + return 1; } opoint = rl_point; @@ -1565,7 +1601,7 @@ rl_vi_delete (count, key) if (rl_end == 0) { rl_ding (); - return -1; + return 1; } if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) @@ -1584,6 +1620,62 @@ rl_vi_delete (count, key) return (0); } +/* This does what Posix specifies vi-mode C-w to do: using whitespace and + punctuation characters as the word boundaries. */ + +#define vi_unix_word_boundary(c) (whitespace(c) || ispunct(c)) + +int +rl_vi_unix_word_rubout (count, key) + int count, key; +{ + int orig_point; + + if (rl_point == 0) + rl_ding (); + else + { + orig_point = rl_point; + if (count <= 0) + count = 1; + + while (count--) + { + /* This isn't quite what ksh93 does but it seems to match what the + Posix description of sh specifies, with a few accommodations + for sequences of whitespace characters between words and at + the end of the line. */ + + /* Skip over whitespace at the end of the line as a special case */ + if (rl_point > 0 && (rl_line_buffer[rl_point] == 0) && + whitespace (rl_line_buffer[rl_point - 1])) + while (--rl_point > 0 && whitespace (rl_line_buffer[rl_point])) + ; + + /* If we're at the start of a word, move back to word boundary so we + move back to the `preceding' word */ + if (rl_point > 0 && (vi_unix_word_boundary (rl_line_buffer[rl_point]) == 0) && + vi_unix_word_boundary (rl_line_buffer[rl_point - 1])) + rl_point--; + + /* If we are at a word boundary (whitespace/punct), move backward + past a sequence of word boundary characters. If we are at the + end of a word (non-word boundary), move back to a word boundary */ + if (rl_point > 0 && vi_unix_word_boundary (rl_line_buffer[rl_point])) + while (rl_point && vi_unix_word_boundary (rl_line_buffer[rl_point - 1])) + rl_point--; + else if (rl_point > 0 && vi_unix_word_boundary (rl_line_buffer[rl_point]) == 0) + while (rl_point && (vi_unix_word_boundary (rl_line_buffer[rl_point - 1]) == 0)) + rl_point--; + } + + rl_kill_text (orig_point, rl_point); + } + + return 0; +} + + int rl_vi_back_to_indent (count, key) int count, key; @@ -1618,7 +1710,10 @@ _rl_vi_callback_char_search (data) #endif if (c <= 0) - return -1; + { + RL_UNSETSTATE (RL_STATE_CHARSEARCH); + return -1; + } #if !defined (HANDLE_MULTIBYTE) _rl_vi_last_search_char = c; @@ -1626,6 +1721,7 @@ _rl_vi_callback_char_search (data) _rl_callback_func = 0; _rl_want_redisplay = 1; + RL_UNSETSTATE (RL_STATE_CHARSEARCH); #if defined (HANDLE_MULTIBYTE) return (_rl_char_search_internal (data->count, _rl_cs_dir, _rl_vi_last_search_mbchar, _rl_vi_last_search_mblen)); @@ -1650,13 +1746,13 @@ rl_vi_char_search (count, key) if (key == ';' || key == ',') { if (_rl_cs_orig_dir == 0) - return -1; + return 1; #if defined (HANDLE_MULTIBYTE) if (_rl_vi_last_search_mblen == 0) - return -1; + return 1; #else if (_rl_vi_last_search_char == 0) - return -1; + return 1; #endif _rl_cs_dir = (key == ';') ? _rl_cs_orig_dir : -_rl_cs_orig_dir; } @@ -1681,7 +1777,7 @@ rl_vi_char_search (count, key) break; } - if (vi_redoing) + if (_rl_vi_redoing) { /* set target and tlen below */ } @@ -1690,7 +1786,9 @@ rl_vi_char_search (count, key) { _rl_callback_data = _rl_callback_data_alloc (count); _rl_callback_data->i1 = _rl_cs_dir; + _rl_callback_data->i2 = key; _rl_callback_func = _rl_vi_callback_char_search; + RL_SETSTATE (RL_STATE_CHARSEARCH); return (0); } #endif @@ -1755,7 +1853,7 @@ rl_vi_match (ignore, key) { rl_point = pos; rl_ding (); - return -1; + return 1; } } @@ -1785,7 +1883,7 @@ rl_vi_match (ignore, key) else { rl_ding (); - return -1; + return 1; } } } @@ -1809,7 +1907,7 @@ rl_vi_match (ignore, key) else { rl_ding (); - return -1; + return 1; } } } @@ -1915,7 +2013,7 @@ rl_vi_change_char (count, key) int c; char mb[MB_LEN_MAX]; - if (vi_redoing) + if (_rl_vi_redoing) { c = _rl_vi_last_replacement; mb[0] = c; @@ -1943,7 +2041,7 @@ rl_vi_subst (count, key) int count, key; { /* If we are redoing, rl_vi_change_to will stuff the last motion char */ - if (vi_redoing == 0) + if (_rl_vi_redoing == 0) rl_stuff_char ((key == 'S') ? 'c' : 'l'); /* `S' == `cc', `s' == `cl' */ return (rl_vi_change_to (count, 'c')); @@ -2083,7 +2181,7 @@ _rl_vi_set_mark () if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ { rl_ding (); - return -1; + return 1; } ch -= 'a'; vi_mark_chars[ch] = rl_point; @@ -2135,14 +2233,14 @@ _rl_vi_goto_mark () else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */ { rl_ding (); - return -1; + return 1; } ch -= 'a'; if (vi_mark_chars[ch] == -1) { rl_ding (); - return -1; + return 1; } rl_point = vi_mark_chars[ch]; return 0; diff --git a/lib/sh/Makefile.in b/lib/sh/Makefile.in index 36a8305..2ca921b 100644 --- a/lib/sh/Makefile.in +++ b/lib/sh/Makefile.in @@ -26,7 +26,7 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_VERSION = @PACKAGE_VERSION@ srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ @@ -160,6 +160,7 @@ itos.o: itos.c mailstat.o: mailstat.c makepath.o: makepath.c mbscasecmp.o: mbscasecmp.c +mbschr.o: mbschr.c mbscmp.o: mbscmp.c memset.o: memset.c mktime.o: mktime.c @@ -170,12 +171,14 @@ pathcanon.o: pathcanon.c pathphys.o: pathphys.c rename.o: rename.c setlinebuf.o: setlinebuf.c +shmatch.o: shmatch.c shmbchar.o: shmbchar.c shquote.o: shquote.c shtty.o: shtty.c snprintf.o: snprintf.c spell.o: spell.c strcasecmp.o: strcasecmp.c +strchrnul.o: strchrnul.c strerror.o: strerror.c strftime.o: strftime.c strcasestr.o: strcasestr.c @@ -196,11 +199,12 @@ timeval.o: timeval.c tmpfile.o: tmpfile.c uconvert.o: uconvert.c ufuncs.o: ufuncs.c +unicode.o: unicode.c vprint.o: vprint.c wcsdup.o: wcsdup.c wcsnwidth.o: wcsnwidth.c wcswidth.o: wcswidth.c -mbschr.o: mbschr.c +winsize.o: winsize.c zcatfd.o: zcatfd.c zmapfd.o: zmapfd.c zgetline.o: zgetline.c @@ -233,6 +237,7 @@ itos.o: ${BUILD_DIR}/config.h mailstat.o: ${BUILD_DIR}/config.h makepath.o: ${BUILD_DIR}/config.h mbscasecmp.o: ${BUILD_DIR}/config.h +mbschr.o: ${BUILD_DIR}/config.h mbscmp.o: ${BUILD_DIR}/config.h memset.o: ${BUILD_DIR}/config.h mktime.o: ${BUILD_DIR}/config.h @@ -243,12 +248,14 @@ pathcanon.o: ${BUILD_DIR}/config.h pathphys.o: ${BUILD_DIR}/config.h rename.o: ${BUILD_DIR}/config.h setlinebuf.o: ${BUILD_DIR}/config.h -shmbchare.o: ${BUILD_DIR}/config.h +shmatch.o: ${BUILD_DIR}/config.h +shmbchar.o: ${BUILD_DIR}/config.h shquote.o: ${BUILD_DIR}/config.h shtty.o: ${BUILD_DIR}/config.h snprintf.o: ${BUILD_DIR}/config.h spell.o: ${BUILD_DIR}/config.h strcasecmp.o: ${BUILD_DIR}/config.h +strchrnul.o: ${BUILD_DIR}/config.h strerror.o: ${BUILD_DIR}/config.h strftime.o: ${BUILD_DIR}/config.h strcasestr.o: ${BUILD_DIR}/config.h @@ -269,11 +276,12 @@ timeval.o: ${BUILD_DIR}/config.h tmpfile.o: ${BUILD_DIR}/config.h uconvert.o: ${BUILD_DIR}/config.h ufuncs.o: ${BUILD_DIR}/config.h +unicode.o: ${BUILD_DIR}/config.h vprint.o: ${BUILD_DIR}/config.h wcsdup.o: ${BUILD_DIR}/config.h wcsnwidth.o: ${BUILD_DIR}/config.h wcswidth.o: ${BUILD_DIR}/config.h -mbschr.o: ${BUILD_DIR}/config.h +winsize.o: ${BUILD_DIR}/config.h zcatfd.o: ${BUILD_DIR}/config.h zgetline.o: ${BUILD_DIR}/config.h zmapfd.o: ${BUILD_DIR}/config.h @@ -389,14 +397,26 @@ eaccess.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h eaccess.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h #eaccess.o: ${BUILD_DIR}/version.h +shmatch.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h +shmatch.o: ${BASHINCDIR}/ansi_stdlib.h ${topdir}/xmalloc.h +shmatch.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +shmatch.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +shmatch.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +shmatch.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +shmatch.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +shmatch.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +shmatch.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h + shquote.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h shquote.o: ${BASHINCDIR}/ansi_stdlib.h ${topdir}/xmalloc.h +shquote.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h shtty.o: ${BASHINCDIR}/shtty.h shtty.o: ${BASHINCDIR}/stdc.h snprintf.o: ${BASHINCDIR}/stdc.h ${topdir}/bashansi.h ${topdir}/xmalloc.h snprintf.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h +snprintf.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h snprintf.o: ${BASHINCDIR}/typemax.h spell.o: ${topdir}/bashtypes.h @@ -475,6 +495,7 @@ strtrans.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h strtrans.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h strtrans.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h strtrans.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h +strtrans.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h #strtrans.o: ${BUILD_DIR}/version.h times.o: ${BASHINCDIR}/systimes.h @@ -483,10 +504,26 @@ times.o: ${BASHINCDIR}/posixtime.h timeval.o: ${BASHINCDIR}/posixtime.h tmpfile.o: ${topdir}/bashtypes.h +tmpfile.o: ${BASHINCDIR}/chartypes.h tmpfile.o: ${BASHINCDIR}/posixstat.h tmpfile.o: ${BASHINCDIR}/filecntl.h +tmpfile.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +tmpfile.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +tmpfile.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +tmpfile.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +tmpfile.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +tmpfile.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +tmpfile.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h uconvert.o: ${topdir}/bashtypes.h +uconvert.o: ${BASHINCDIR}/chartypes.h +uconvert.o: ${topdir}/shell.h ${topdir}/syntax.h ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h +uconvert.o: ${topdir}/command.h ${BASHINCDIR}/stdc.h ${topdir}/error.h +uconvert.o: ${topdir}/general.h ${topdir}/bashtypes.h ${topdir}/variables.h ${topdir}/conftypes.h +uconvert.o: ${topdir}/array.h ${topdir}/hashlib.h ${topdir}/quit.h +uconvert.o: ${topdir}/unwind_prot.h ${topdir}/dispose_cmd.h +uconvert.o: ${topdir}/make_cmd.h ${topdir}/subst.h ${topdir}/sig.h +uconvert.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h ufuncs.o: ${topdir}/bashtypes.h @@ -569,3 +606,18 @@ fnxform.o: ${topdir}/bashtypes.h fnxform.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h shmbchar.o: ${BASHINCDIR}/shmbchar.h +shmbchar.o: ${BASHINCDIR}/shmbutil.h + +unicode.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +unicode.o: ${BASHINCDIR}/stdc.h +unicode.o: ${topdir}/xmalloc.h + +winsize.o: ${BASHINCDIR}/stdc.h +winsize.o: ${topdir}/xmalloc.h +winsize.o: ${topdir}/bashtypes.h + +zmapfd.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h +zmapfd.o: ${BASHINCDIR}/stdc.h +zmapfd.o: ${topdir}/command.h +zmapfd.o: ${topdir}/general.h +zmapfd.o: ${topdir}/bashtypes.h ${BASHINCDIR}/chartypes.h ${topdir}/xmalloc.h diff --git a/lib/sh/casemod.c b/lib/sh/casemod.c index bbcffa6..f68303b 100644 --- a/lib/sh/casemod.c +++ b/lib/sh/casemod.c @@ -1,6 +1,6 @@ /* casemod.c -- functions to change case of strings */ -/* Copyright (C) 2008,2009 Free Software Foundation, Inc. +/* Copyright (C) 2008,2009,2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -49,7 +49,7 @@ #if !defined (HANDLE_MULTIBYTE) # define cval(s, i) ((s)[(i)]) # define iswalnum(c) (isalnum(c)) -# define TOGGLE(x) (ISUPPER (x) ? tolower (x) : (TOUPPER (x))) +# define TOGGLE(x) (ISUPPER (x) ? tolower ((unsigned char)x) : (TOUPPER (x))) #else # define TOGGLE(x) (iswupper (x) ? towlower (x) : (_to_wupper(x))) #endif @@ -105,10 +105,11 @@ sh_modcase (string, pat, flags) char *pat; int flags; { - int start, next, end; + int start, next, end, retind; int inword, c, nc, nop, match, usewords; char *ret, *s; wchar_t wc; + int mb_cur_max; #if defined (HANDLE_MULTIBYTE) wchar_t nwc; char mb[MB_LEN_MAX+1]; @@ -130,9 +131,10 @@ sh_modcase (string, pat, flags) start = 0; end = strlen (string); + mb_cur_max = MB_CUR_MAX; - ret = (char *)xmalloc (end + 1); - strcpy (ret, string); + ret = (char *)xmalloc (2*end + 1); + retind = 0; /* See if we are supposed to split on alphanumerics and operate on each word */ usewords = (flags & CASE_USEWORDS); @@ -141,26 +143,23 @@ sh_modcase (string, pat, flags) inword = 0; while (start < end) { - wc = cval (ret, start); + wc = cval ((char *)string, start); if (iswalnum (wc) == 0) - { - inword = 0; -#if 0 - ADVANCE_CHAR (ret, end, start); - continue; -#endif - } + inword = 0; if (pat) { next = start; - ADVANCE_CHAR (ret, end, next); - s = substring (ret, start, next); + ADVANCE_CHAR (string, end, next); + s = substring ((char *)string, start, next); match = strmatch (pat, s, FNM_EXTMATCH) != FNM_NOMATCH; free (s); if (match == 0) { + /* copy unmatched portion */ + memcpy (ret + retind, string + start, next - start); + retind += next - start; start = next; inword = 1; continue; @@ -210,27 +209,27 @@ sh_modcase (string, pat, flags) else nop = flags; - /* Need to check UCHAR_MAX since wc may have already been converted to a - wide character by cval() */ - if (MB_CUR_MAX == 1 || (wc <= UCHAR_MAX && is_basic ((int)wc))) + /* Can't short-circuit, some locales have multibyte upper and lower + case equivalents of single-byte ascii characters (e.g., Turkish) */ + if (mb_cur_max == 1) { singlebyte: switch (nop) - { - default: - case CASE_NOOP: nc = wc; break; - case CASE_UPPER: nc = TOUPPER (wc); break; - case CASE_LOWER: nc = TOLOWER (wc); break; - case CASE_TOGGLEALL: - case CASE_TOGGLE: nc = TOGGLE (wc); break; - } - ret[start] = nc; + { + default: + case CASE_NOOP: nc = wc; break; + case CASE_UPPER: nc = TOUPPER (wc); break; + case CASE_LOWER: nc = TOLOWER (wc); break; + case CASE_TOGGLEALL: + case CASE_TOGGLE: nc = TOGGLE (wc); break; + } + ret[retind++] = nc; } #if defined (HANDLE_MULTIBYTE) else { m = mbrtowc (&wc, string + start, end - start, &state); - if (MB_INVALIDCH (m)) + if (MB_INVALIDCH (m) || m == 1) { wc = (unsigned char)string[start]; goto singlebyte; @@ -238,28 +237,34 @@ singlebyte: else if (MB_NULLWCH (m)) wc = L'\0'; switch (nop) - { - default: - case CASE_NOOP: nwc = wc; break; - case CASE_UPPER: nwc = _to_wupper (wc); break; - case CASE_LOWER: nwc = _to_wlower (wc); break; - case CASE_TOGGLEALL: - case CASE_TOGGLE: nwc = TOGGLE (wc); break; - } - if (nwc != wc) /* just skip unchanged characters */ + { + default: + case CASE_NOOP: nwc = wc; break; + case CASE_UPPER: nwc = _to_wupper (wc); break; + case CASE_LOWER: nwc = _to_wlower (wc); break; + case CASE_TOGGLEALL: + case CASE_TOGGLE: nwc = TOGGLE (wc); break; + } + + /* We don't have to convert `wide' characters that are in the + unsigned char range back to single-byte `multibyte' characters. */ + if ((int)nwc <= UCHAR_MAX && is_basic ((int)nwc)) + ret[retind++] = nwc; + else { mlen = wcrtomb (mb, nwc, &state); if (mlen > 0) mb[mlen] = '\0'; - /* Assume the same width */ - strncpy (ret + start, mb, mlen); + /* Don't assume the same width */ + strncpy (ret + retind, mb, mlen); + retind += mlen; } } #endif - /* This assumes that the upper and lower case versions are the same width. */ - ADVANCE_CHAR (ret, end, start); + ADVANCE_CHAR (string, end, start); } + ret[retind] = '\0'; return ret; } diff --git a/lib/sh/eaccess.c b/lib/sh/eaccess.c index 8132a9a..8fd8a43 100644 --- a/lib/sh/eaccess.c +++ b/lib/sh/eaccess.c @@ -53,9 +53,9 @@ extern int errno; #endif /* R_OK */ static int path_is_devfd __P((const char *)); -static int sh_stataccess __P((char *, int)); +static int sh_stataccess __P((const char *, int)); #if HAVE_DECL_SETREGID -static int sh_euidaccess __P((char *, int)); +static int sh_euidaccess __P((const char *, int)); #endif static int @@ -135,7 +135,7 @@ sh_stat (path, finfo) executable. This version uses stat(2). */ static int sh_stataccess (path, mode) - char *path; + const char *path; int mode; { struct stat st; @@ -172,7 +172,7 @@ sh_stataccess (path, mode) the effective and real uid and gid as appropriate. */ static int sh_euidaccess (path, mode) - char *path; + const char *path; int mode; { int r, e; @@ -197,7 +197,7 @@ sh_euidaccess (path, mode) int sh_eaccess (path, mode) - char *path; + const char *path; int mode; { int ret; diff --git a/lib/sh/mbscasecmp.c b/lib/sh/mbscasecmp.c index 3828164..0ab9560 100644 --- a/lib/sh/mbscasecmp.c +++ b/lib/sh/mbscasecmp.c @@ -1,6 +1,6 @@ /* mbscasecmp - case-insensitive multibyte string comparison. */ -/* Copyright (C) 2009 Free Software Foundation, Inc. +/* Copyright (C) 2009-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -35,17 +35,18 @@ mbscasecmp (mbs1, mbs2) const char *mbs1; const char *mbs2; { - int len1, len2; + int len1, len2, mb_cur_max; wchar_t c1, c2, l1, l2; len1 = len2 = 0; /* Reset multibyte characters to their initial state. */ (void) mblen ((char *) NULL, 0); + mb_cur_max = MB_CUR_MAX; do { - len1 = mbtowc (&c1, mbs1, MB_CUR_MAX); - len2 = mbtowc (&c2, mbs2, MB_CUR_MAX); + len1 = mbtowc (&c1, mbs1, mb_cur_max); + len2 = mbtowc (&c2, mbs2, mb_cur_max); if (len1 == 0) return len2 == 0 ? 0 : -1; diff --git a/lib/sh/mbscmp.c b/lib/sh/mbscmp.c index e0eae5d..aaf81f5 100644 --- a/lib/sh/mbscmp.c +++ b/lib/sh/mbscmp.c @@ -1,6 +1,6 @@ /* mbscmp - multibyte string comparison. */ -/* Copyright (C) 1995 Free Software Foundation, Inc. +/* Copyright (C) 1995-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -32,17 +32,18 @@ mbscmp (mbs1, mbs2) const char *mbs1; const char *mbs2; { - int len1, len2; + int len1, len2, mb_cur_max; wchar_t c1, c2; len1 = len2 = 0; /* Reset multibyte characters to their initial state. */ (void) mblen ((char *) NULL, 0); + mb_cur_max = MB_CUR_MAX; do { - len1 = mbtowc (&c1, mbs1, MB_CUR_MAX); - len2 = mbtowc (&c2, mbs2, MB_CUR_MAX); + len1 = mbtowc (&c1, mbs1, mb_cur_max); + len2 = mbtowc (&c2, mbs2, mb_cur_max); if (len1 == 0) return len2 == 0 ? 0 : -1; diff --git a/lib/sh/mktime.c b/lib/sh/mktime.c index 7888ee1..b2b0d3f 100644 --- a/lib/sh/mktime.c +++ b/lib/sh/mktime.c @@ -50,11 +50,11 @@ #include "bashansi.h" -#if DEBUG +#if DEBUG_MKTIME #include /* Make it work even if the system's libc has its own mktime routine. */ #define mktime my_mktime -#endif /* DEBUG */ +#endif /* DEBUG_MKTIME */ #ifndef __P #if defined (__GNUC__) || (defined (__STDC__) && __STDC__) @@ -75,12 +75,27 @@ #define INT_MAX (~0 - INT_MIN) #endif +/* True if the arithmetic type T is signed. */ +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* The maximum and minimum values for the integer type T. These + macros have undefined behavior if T is signed and has padding bits. + If this is a problem for you, please let us know how to fix it for + your host. */ +#define TYPE_MINIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) 0 \ + : ~ TYPE_MAXIMUM (t))) +#define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ + : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) + #ifndef TIME_T_MIN -#define TIME_T_MIN (0 < (time_t) -1 ? (time_t) 0 \ - : ~ (time_t) 0 << (sizeof (time_t) * CHAR_BIT - 1)) +# define TIME_T_MIN TYPE_MINIMUM (time_t) #endif #ifndef TIME_T_MAX -#define TIME_T_MAX (~ (time_t) 0 - TIME_T_MIN) +# define TIME_T_MAX TYPE_MAXIMUM (time_t) #endif #define TM_YEAR_BASE 1900 @@ -303,7 +318,7 @@ __mktime_internal (tp, convert, offset) weak_alias (mktime, timelocal) #endif -#if DEBUG +#if DEBUG_MKTIME static int not_equal_tm (a, b) @@ -414,7 +429,7 @@ main (argc, argv) return status; } -#endif /* DEBUG */ +#endif /* DEBUG_MKTIME */ /* Local Variables: diff --git a/lib/sh/netconn.c b/lib/sh/netconn.c index 36e5bf5..e20f104 100644 --- a/lib/sh/netconn.c +++ b/lib/sh/netconn.c @@ -44,7 +44,7 @@ int isnetconn (fd) int fd; { -#if defined (HAVE_GETPEERNAME) && !defined (SVR4_2) && !defined (__BEOS__) +#if defined (HAVE_SYS_SOCKET_H) && defined (HAVE_GETPEERNAME) && !defined (SVR4_2) && !defined (__BEOS__) int rv; socklen_t l; struct sockaddr sa; @@ -52,7 +52,7 @@ isnetconn (fd) l = sizeof(sa); rv = getpeername(fd, &sa, &l); /* Posix.2 says getpeername can return these errors. */ - return ((rv < 0 && (errno == ENOTSOCK || errno == ENOTCONN || errno == EINVAL)) ? 0 : 1); + return ((rv < 0 && (errno == ENOTSOCK || errno == ENOTCONN || errno == EINVAL || errno == EBADF)) ? 0 : 1); #else /* !HAVE_GETPEERNAME || SVR4_2 || __BEOS__ */ # if defined (SVR4) || defined (SVR4_2) /* Sockets on SVR4 and SVR4.2 are character special (streams) devices. */ diff --git a/lib/sh/netopen.c b/lib/sh/netopen.c index 736d413..bc3d8f8 100644 --- a/lib/sh/netopen.c +++ b/lib/sh/netopen.c @@ -5,7 +5,7 @@ * chet@ins.CWRU.Edu */ -/* Copyright (C) 1987-2002 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -304,6 +304,7 @@ netopen (path) if (t == 0) { internal_error (_("%s: bad network path specification"), path); + free (np); return -1; } *t++ = '\0'; diff --git a/lib/sh/shmatch.c b/lib/sh/shmatch.c index 3abefed..da05211 100644 --- a/lib/sh/shmatch.c +++ b/lib/sh/shmatch.c @@ -2,7 +2,7 @@ * shmatch.c -- shell interface to posix regular expression matching. */ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -79,7 +79,8 @@ sh_regmatch (string, pattern, flags) matches = NULL; #endif - if (regexec (®ex, string, regex.re_nsub + 1, matches, 0)) + /* man regexec: NULL PMATCH ignored if NMATCH == 0 */ + if (regexec (®ex, string, matches ? regex.re_nsub + 1 : 0, matches, 0)) result = EXECUTION_FAILURE; else result = EXECUTION_SUCCESS; /* match */ @@ -91,11 +92,11 @@ sh_regmatch (string, pattern, flags) /* Store the parenthesized subexpressions in the array BASH_REMATCH. Element 0 is the portion that matched the entire regexp. Element 1 is the part that matched the first subexpression, and so on. */ - unbind_variable ("BASH_REMATCH"); + unbind_variable_noref ("BASH_REMATCH"); rematch = make_new_array_variable ("BASH_REMATCH"); amatch = array_cell (rematch); - if ((flags & SHMAT_SUBEXP) && result == EXECUTION_SUCCESS && subexp_str) + if (matches && (flags & SHMAT_SUBEXP) && result == EXECUTION_SUCCESS && subexp_str) { for (subexp_ind = 0; subexp_ind <= regex.re_nsub; subexp_ind++) { diff --git a/lib/sh/shmbchar.c b/lib/sh/shmbchar.c index 042c9f1..7f14208 100644 --- a/lib/sh/shmbchar.c +++ b/lib/sh/shmbchar.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2001, 2006, 2009, 2010, 2012 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2006, 2009, 2010, 2012, 2015 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 @@ -43,10 +43,11 @@ mbstrlen (s) { size_t clen, nc; mbstate_t mbs = { 0 }, mbsbak = { 0 }; - int f; + int f, mb_cur_max; nc = 0; - while (*s && (clen = (f = is_basic (*s)) ? 1 : mbrlen(s, MB_CUR_MAX, &mbs)) != 0) + mb_cur_max = MB_CUR_MAX; + while (*s && (clen = (f = is_basic (*s)) ? 1 : mbrlen(s, mb_cur_max, &mbs)) != 0) { if (MB_INVALIDCH(clen)) { @@ -71,13 +72,15 @@ mbsmbchar (s) char *t; size_t clen; mbstate_t mbs = { 0 }; + int mb_cur_max; + mb_cur_max = MB_CUR_MAX; for (t = (char *)s; *t; t++) { if (is_basic (*t)) continue; - clen = mbrlen (t, MB_CUR_MAX, &mbs); + clen = mbrlen (t, mb_cur_max, &mbs); if (clen == 0) return 0; diff --git a/lib/sh/shquote.c b/lib/sh/shquote.c index fff4f81..ecec597 100644 --- a/lib/sh/shquote.c +++ b/lib/sh/shquote.c @@ -1,6 +1,6 @@ /* shquote - functions to quote and dequote strings */ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -28,10 +28,17 @@ #endif #include +#include #include "syntax.h" #include +#include "shmbchar.h" +#include "shmbutil.h" + +extern char *ansic_quote __P((char *, int, int *)); +extern int ansic_shouldquote __P((const char *)); + /* Default set of characters that should be backslash-quoted in strings */ static const char bstab[256] = { @@ -141,8 +148,11 @@ sh_double_quote (string) /* Backslash-newline disappears within double quotes, so don't add one. */ if ((sh_syntaxtab[c] & CBSDQUOTE) && c != '\n') *r++ = '\\'; +#if 0 + /* Assume that the string will not be further expanded. */ else if (c == CTLESC || c == CTLNUL) *r++ = CTLESC; /* could be '\\'? */ +#endif *r++ = c; } @@ -226,15 +236,36 @@ sh_backslash_quote (string, table, flags) char *table; int flags; { - int c; - char *result, *r, *s, *backslash_table; + int c, mb_cur_max; + size_t slen; + char *result, *r, *s, *backslash_table, *send; + DECLARE_MBSTATE; - result = (char *)xmalloc (2 * strlen (string) + 1); + slen = strlen (string); + send = string + slen; + result = (char *)xmalloc (2 * slen + 1); backslash_table = table ? table : (char *)bstab; + mb_cur_max = MB_CUR_MAX; + for (r = result, s = string; s && (c = *s); s++) { - if (backslash_table[c] == 1) +#if defined (HANDLE_MULTIBYTE) + /* XXX - isascii, even if is_basic(c) == 0 - works in most cases. */ + if (c >= 0 && c <= 127 && backslash_table[(unsigned char)c] == 1) + { + *r++ = '\\'; + *r++ = c; + continue; + } + if (mb_cur_max > 1 && is_basic (c) == 0) + { + COPY_CHAR_P (r, s, send); + s--; /* compensate for auto-increment in loop above */ + continue; + } +#endif + if (backslash_table[(unsigned char)c] == 1) *r++ = '\\'; else if (c == '#' && s == string) /* comment char */ *r++ = '\\'; @@ -277,11 +308,36 @@ sh_backslash_quote_for_double_quotes (string) } #endif /* PROMPT_STRING_DECODE */ +char * +sh_quote_reusable (s, flags) + char *s; + int flags; +{ + char *ret; + + if (s == 0) + return s; + else if (*s == 0) + { + ret = (char *)xmalloc (3); + ret[0] = ret[1] = '\''; + ret[2] = '\0'; + } + else if (ansic_shouldquote (s)) + ret = ansic_quote (s, 0, (int *)0); + else if (flags) + ret = sh_backslash_quote (s, 0, 1); + else + ret = sh_single_quote (s); + + return ret; +} + int sh_contains_shell_metas (string) - char *string; + const char *string; { - char *s; + const char *s; for (s = string; s && *s; s++) { @@ -314,9 +370,9 @@ sh_contains_shell_metas (string) int sh_contains_quotes (string) - char *string; + const char *string; { - char *s; + const char *s; for (s = string; s && *s; s++) { diff --git a/lib/sh/strtrans.c b/lib/sh/strtrans.c index ae88e69..7983147 100644 --- a/lib/sh/strtrans.c +++ b/lib/sh/strtrans.c @@ -1,6 +1,6 @@ /* strtrans.c - Translate and untranslate strings with ANSI-C escape sequences. */ -/* Copyright (C) 2000-2011 Free Software Foundation, Inc. +/* Copyright (C) 2000-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -60,7 +60,10 @@ ansicstr (string, len, flags, sawc, rlen) return ((char *)NULL); #if defined (HANDLE_MULTIBYTE) - ret = (char *)xmalloc (4*len + 1); + temp = 4*len + 1; + if (temp < 12) + temp = 12; /* ensure enough for eventual u32cesc */ + ret = (char *)xmalloc (temp); #else ret = (char *)xmalloc (2*len + 1); /* 2*len for possible CTLESC */ #endif @@ -309,8 +312,9 @@ ansic_wshouldquote (string) slen = mbstowcs (wcstr, string, 0); - if (slen == -1) - slen = 0; + if (slen == (size_t)-1) + return 1; + wcstr = (wchar_t *)xmalloc (sizeof (wchar_t) * (slen + 1)); mbstowcs (wcstr, string, slen + 1); diff --git a/lib/sh/tmpfile.c b/lib/sh/tmpfile.c index c06ad65..e41e45b 100644 --- a/lib/sh/tmpfile.c +++ b/lib/sh/tmpfile.c @@ -2,7 +2,7 @@ * tmpfile.c - functions to create and safely open temp files for the shell. */ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -47,6 +47,11 @@ extern int errno; #define DEFAULT_TMPDIR "." /* bogus default, should be changed */ #define DEFAULT_NAMEROOT "shtmp" +/* Use ANSI-C rand() interface if random(3) is not available */ +#if !HAVE_RANDOM +#define random() rand() +#endif + extern pid_t dollar_dollar_pid; static char *get_sys_tmpdir __P((void)); @@ -109,6 +114,23 @@ get_tmpdir (flags) return tdir; } +static void +sh_seedrand () +{ +#if HAVE_RANDOM + int d; + static int seeded = 0; + if (seeded == 0) + { + struct timeval tv; + + gettimeofday (&tv, NULL); + srandom (tv.tv_sec ^ tv.tv_usec ^ (getpid () << 16) ^ (uintptr_t)&d); + seeded = 1; + } +#endif +} + char * sh_mktmpname (nameroot, flags) char *nameroot; @@ -117,6 +139,7 @@ sh_mktmpname (nameroot, flags) char *filename, *tdir, *lroot; struct stat sb; int r, tdlen; + static int seeded = 0; filename = (char *)xmalloc (PATH_MAX + 1); tdir = get_tmpdir (flags); @@ -132,6 +155,7 @@ sh_mktmpname (nameroot, flags) filename = NULL; } #else /* !USE_MKTEMP */ + sh_seedrand (); while (1) { filenum = (filenum << 1) ^ @@ -162,7 +186,7 @@ sh_mktmpfd (nameroot, flags, namep) { char *filename, *tdir, *lroot; int fd, tdlen; - + filename = (char *)xmalloc (PATH_MAX + 1); tdir = get_tmpdir (flags); tdlen = strlen (tdir); @@ -181,6 +205,7 @@ sh_mktmpfd (nameroot, flags, namep) *namep = filename; return fd; #else /* !USE_MKSTEMP */ + sh_seedrand (); do { filenum = (filenum << 1) ^ diff --git a/lib/sh/ufuncs.c b/lib/sh/ufuncs.c index ed526fe..fcd4c04 100644 --- a/lib/sh/ufuncs.c +++ b/lib/sh/ufuncs.c @@ -37,6 +37,10 @@ #include #endif +#if defined (HAVE_SELECT) +# include "posixselect.h" +#endif + /* A version of `alarm' using setitimer if it's available. */ #if defined (HAVE_SETITIMER) diff --git a/lib/sh/unicode.c b/lib/sh/unicode.c index 798260e..b58eaef 100644 --- a/lib/sh/unicode.c +++ b/lib/sh/unicode.c @@ -1,6 +1,6 @@ /* unicode.c - functions to convert unicode characters */ -/* Copyright (C) 2010-2012 Free Software Foundation, Inc. +/* Copyright (C) 2010-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -236,7 +236,7 @@ u32toutf16 (c, s) } /* convert a single unicode-32 character into a multibyte string and put the - result in S, which must be large enough (at least MB_LEN_MAX bytes) */ + result in S, which must be large enough (at least max(10,MB_LEN_MAX) bytes) */ int u32cconv (c, s) unsigned long c; diff --git a/lib/sh/winsize.c b/lib/sh/winsize.c index 64a9858..ab83433 100644 --- a/lib/sh/winsize.c +++ b/lib/sh/winsize.c @@ -1,6 +1,6 @@ /* winsize.c - handle window size changes and information. */ -/* Copyright (C) 2005 Free Software Foundation, Inc. +/* Copyright (C) 2005-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -32,9 +32,11 @@ /* Try to find the definitions of `struct winsize' and TIOGCWINSZ */ +#if 0 #if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ) # include #endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */ +#endif #if defined (STRUCT_WINSIZE_IN_TERMIOS) && !defined (STRUCT_WINSIZE_IN_SYS_IOCTL) # include diff --git a/lib/sh/zgetline.c b/lib/sh/zgetline.c index 9cef975..a686ba3 100644 --- a/lib/sh/zgetline.c +++ b/lib/sh/zgetline.c @@ -48,9 +48,12 @@ typedef ssize_t creadfunc_t __P((int, char *)); /* Derived from GNU libc's getline. The behavior is almost the same as getline. See man getline. The differences are - (1) using file descriptor instead of FILE *, - (2) the order of arguments; the file descriptor comes the first, and - (3) the addition of third argument, UNBUFFERED_READ; this argument + (1) using file descriptor instead of FILE *; + (2) the order of arguments: the file descriptor comes first; + (3) the addition of a fourth argument, DELIM; sets the delimiter to + be something other than newline if desired. If setting DELIM, + the next argument should be 1; and + (4) the addition of a fifth argument, UNBUFFERED_READ; this argument controls whether get_line uses buffering or not to get a byte data from FD. get_line uses zreadc if UNBUFFERED_READ is zero; and uses zread if UNBUFFERED_READ is non-zero. @@ -58,10 +61,11 @@ typedef ssize_t creadfunc_t __P((int, char *)); Returns number of bytes read or -1 on error. */ ssize_t -zgetline (fd, lineptr, n, unbuffered_read) +zgetline (fd, lineptr, n, delim, unbuffered_read) int fd; char **lineptr; size_t *n; + int delim; int unbuffered_read; { int nr, retval; @@ -110,7 +114,7 @@ zgetline (fd, lineptr, n, unbuffered_read) line[nr] = c; nr++; - if (c == '\n') + if (c == delim) { line[nr] = '\0'; break; diff --git a/lib/termcap/Makefile.in b/lib/termcap/Makefile.in index aeee47f..66dd7c1 100644 --- a/lib/termcap/Makefile.in +++ b/lib/termcap/Makefile.in @@ -20,7 +20,7 @@ # along with this program. If not, see . srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ diff --git a/lib/termcap/termcap.c b/lib/termcap/termcap.c index 7311349..ba3dab2 100644 --- a/lib/termcap/termcap.c +++ b/lib/termcap/termcap.c @@ -309,7 +309,7 @@ static int speeds[] = }; __private_extern__ -void +int tputs (str, nlines, outfun) register char *str; int nlines; @@ -335,7 +335,7 @@ tputs (str, nlines, outfun) #endif if (!str) - return; + return -1; while (*str >= '0' && *str <= '9') { @@ -372,6 +372,8 @@ tputs (str, nlines, outfun) while (padcount-- > 0) (*outfun) (PC); + + return 0; } /* Finding the termcap entry in the termcap data base. */ diff --git a/lib/termcap/termcap.h b/lib/termcap/termcap.h index 5d71595..b0e3061 100644 --- a/lib/termcap/termcap.h +++ b/lib/termcap/termcap.h @@ -29,7 +29,7 @@ extern char *tgetstr (const char *name, char **area); extern char PC; extern short ospeed; -extern void tputs (const char *string, int nlines, int (*outfun) (int)); +extern int tputs (const char *string, int nlines, int (*outfun) (int)); extern char *tparam (const char *ctlstring, char *buffer, int size, ...); diff --git a/lib/tilde/Makefile.in b/lib/tilde/Makefile.in index d5506c5..7ca3b78 100644 --- a/lib/tilde/Makefile.in +++ b/lib/tilde/Makefile.in @@ -20,7 +20,7 @@ # along with this program. If not, see . srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ topdir = @top_srcdir@ BUILD_DIR = @BUILD_DIR@ diff --git a/lib/tilde/tilde.c b/lib/tilde/tilde.c index 1c53a45..95bc421 100644 --- a/lib/tilde/tilde.c +++ b/lib/tilde/tilde.c @@ -236,7 +236,11 @@ tilde_expand (string) string += end; expansion = tilde_expand_word (tilde_word); - xfree (tilde_word); + + if (expansion == 0) + expansion = tilde_word; + else + xfree (tilde_word); len = strlen (expansion); #ifdef __CYGWIN__ @@ -360,6 +364,10 @@ tilde_expand_word (filename) { /* Prefix $HOME to the rest of the string. */ expansion = sh_get_env_value ("HOME"); +#if defined (_WIN32) + if (expansion == 0) + expansion = sh_get_env_value ("APPDATA"); +#endif /* If there is no HOME variable, look up the directory in the password database. */ diff --git a/locale.c b/locale.c index 8dabc7d..a199cdf 100644 --- a/locale.c +++ b/locale.c @@ -309,7 +309,7 @@ get_locale_var (var) locale = lc_all; if (locale == 0 || *locale == 0) - locale = get_string_value (var); /* XXX - mem leak? */ + locale = get_string_value (var); /* XXX - no mem leak */ if (locale == 0 || *locale == 0) locale = lang; if (locale == 0 || *locale == 0) @@ -535,7 +535,7 @@ locale_setblanks () for (x = 0; x < sh_syntabsiz; x++) { - if (isblank (x)) + if (isblank ((unsigned char)x)) sh_syntaxtab[x] |= CSHBRK|CBLANK; else if (member (x, shell_break_chars)) { diff --git a/make_cmd.c b/make_cmd.c index b01d084..b42e9ff 100644 --- a/make_cmd.c +++ b/make_cmd.c @@ -56,13 +56,16 @@ extern int line_number, current_command_line_count, parser_state; extern int last_command_exit_value; +extern int shell_initialized; + +int here_doc_first_line = 0; /* Object caching */ sh_obj_cache_t wdcache = {0, 0, 0}; sh_obj_cache_t wlcache = {0, 0, 0}; -#define WDCACHESIZE 60 -#define WLCACHESIZE 60 +#define WDCACHESIZE 128 +#define WLCACHESIZE 128 static COMMAND *make_for_or_select __P((enum command_type, WORD_DESC *, WORD_LIST *, COMMAND *, int)); #if defined (ARITH_FOR_COMMAND) @@ -261,6 +264,9 @@ make_arith_for_expr (s) return ((WORD_LIST *)NULL); wd = make_word (s); wd->flags |= W_NOGLOB|W_NOSPLIT|W_QUOTED|W_DQUOTE; /* no word splitting or globbing */ +#if defined (PROCESS_SUBSTITUTION) + wd->flags |= W_NOPROCSUB; /* no process substitution */ +#endif result = make_word_list (wd, (WORD_LIST *)NULL); return result; } @@ -292,7 +298,7 @@ make_arith_for_command (exprs, action, lineno) s++; start = s; /* skip to the semicolon or EOS */ - i = skip_to_delim (start, 0, ";", SD_NOJMP); + i = skip_to_delim (start, 0, ";", SD_NOJMP|SD_NOPROCSUB); s = start + i; t = (i > 0) ? substring (start, 0, i) : (char *)NULL; @@ -619,6 +625,7 @@ make_here_document (temp, lineno) register char *line; int len; + here_doc_first_line = 0; line = full_line; line_number++; @@ -670,6 +677,7 @@ document_done: document[0] = '\0'; } temp->redirectee.filename->word = document; + here_doc_first_line = 0; } /* Generate a REDIRECT from SOURCE, DEST, and INSTRUCTION. @@ -790,11 +798,18 @@ make_function_def (name, command, lineno, lstart) if (bash_source_a && array_num_elements (bash_source_a) > 0) temp->source_file = array_reference (bash_source_a, 0); #endif + /* Assume that shell functions without a source file before the shell is + initialized come from the environment. Otherwise default to "main" + (usually functions being defined interactively) */ + if (temp->source_file == 0) + temp->source_file = shell_initialized ? "main" : "environment"; + #if defined (DEBUGGER) bind_function_def (name->word, temp); #endif temp->source_file = temp->source_file ? savestring (temp->source_file) : 0; + return (make_command (cm_function_def, (SIMPLE_COM *)temp)); } diff --git a/nojobs.c b/nojobs.c index 0c9bd75..fdbe0ae 100644 --- a/nojobs.c +++ b/nojobs.c @@ -46,6 +46,7 @@ #include "shell.h" #include "jobs.h" #include "execute_cmd.h" +#include "trap.h" #include "builtins/builtext.h" /* for wait_builtin */ @@ -81,11 +82,16 @@ extern sh_builtin_func_t *this_shell_builtin; extern sigset_t top_level_mask; #endif extern procenv_t wait_intr_buf; +extern int wait_intr_flag; extern int wait_signal_received; +extern void set_original_signal __P((int, SigHandler *)); + volatile pid_t last_made_pid = NO_PID; volatile pid_t last_asynchronous_pid = NO_PID; +static int queue_sigchld, waiting_for_child; /* dummy declarations */ + /* Call this when you start making children. */ int already_making_children = 0; @@ -99,6 +105,8 @@ int check_window_size = CHECKWINSIZE_DEFAULT; /* We don't have job control. */ int job_control = 0; +int running_in_background = 0; /* can't tell without job control */ + /* STATUS and FLAGS are only valid if pid != NO_PID STATUS is only valid if (flags & PROC_RUNNING) == 0 */ struct proc_status { @@ -124,7 +132,7 @@ static int wait_sigint_received; static long child_max = -1L; static void alloc_pid_list __P((void)); -static int find_proc_slot __P((void)); +static int find_proc_slot __P((pid_t)); static int find_index_by_pid __P((pid_t)); static int find_status_by_pid __P((pid_t)); static int process_exit_status __P((WAIT)); @@ -168,12 +176,13 @@ alloc_pid_list () /* Return the offset within the PID_LIST array of an empty slot. This can create new slots if all of the existing slots are taken. */ static int -find_proc_slot () +find_proc_slot (pid) + pid_t pid; { register int i; for (i = 0; i < pid_list_size; i++) - if (pid_list[i].pid == NO_PID) + if (pid_list[i].pid == NO_PID || pid_list[i].pid == pid) return (i); if (i == pid_list_size) @@ -329,7 +338,7 @@ add_pid (pid, async) { int slot; - slot = find_proc_slot (); + slot = find_proc_slot (pid); pid_list[slot].pid = pid; pid_list[slot].status = -1; @@ -410,6 +419,7 @@ reap_dead_jobs () } /* Initialize the job control mechanism, and set up the tty stuff. */ +int initialize_job_control (force) int force; { @@ -417,6 +427,7 @@ initialize_job_control (force) if (interactive) get_tty_state (); + return 0; } /* Setup this shell to handle C-C, etc. */ @@ -541,6 +552,8 @@ make_child (command, async_p) unset_bash_input (0); #endif /* BUFFERED_INPUT */ + CLRINTERRUPT; /* XXX - children have their own interrupt state */ + #if defined (HAVE_POSIX_SIGNALS) /* Restore top-level signal mask. */ sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL); @@ -582,21 +595,57 @@ void default_tty_job_signals () { #if defined (SIGTSTP) - set_signal_handler (SIGTSTP, SIG_DFL); - set_signal_handler (SIGTTIN, SIG_DFL); - set_signal_handler (SIGTTOU, SIG_DFL); + if (signal_is_trapped (SIGTSTP) == 0 && signal_is_hard_ignored (SIGTSTP)) + set_signal_handler (SIGTSTP, SIG_IGN); + else + set_signal_handler (SIGTSTP, SIG_DFL); + if (signal_is_trapped (SIGTTIN) == 0 && signal_is_hard_ignored (SIGTTIN)) + set_signal_handler (SIGTTIN, SIG_IGN); + else + set_signal_handler (SIGTTIN, SIG_DFL); + if (signal_is_trapped (SIGTTOU) == 0 && signal_is_hard_ignored (SIGTTOU)) + set_signal_handler (SIGTTOU, SIG_IGN); + else + set_signal_handler (SIGTTOU, SIG_DFL); #endif } +/* Called once in a parent process. */ +void +get_original_tty_job_signals () +{ + static int fetched = 0; + + if (fetched == 0) + { +#if defined (SIGTSTP) + if (interactive_shell) + { + set_original_signal (SIGTSTP, SIG_DFL); + set_original_signal (SIGTTIN, SIG_DFL); + set_original_signal (SIGTTOU, SIG_DFL); + } + else + { + get_original_signal (SIGTSTP); + get_original_signal (SIGTTIN); + get_original_signal (SIGTTOU); + } +#endif + fetched = 1; + } +} + /* Wait for a single pid (PID) and return its exit status. Called by the wait builtin. */ int -wait_for_single_pid (pid) +wait_for_single_pid (pid, flags) pid_t pid; + int flags; { pid_t got_pid; WAIT status; - int pstatus, flags; + int pstatus; pstatus = find_status_by_pid (pid); @@ -675,6 +724,11 @@ wait_for_background_pids () cleanup_dead_jobs (); } +void +wait_sigint_cleanup () +{ +} + /* Make OLD_SIGINT_HANDLER the SIGINT signal handler. */ #define INVALID_SIGNAL_HANDLER (SigHandler *)wait_for_background_pids static SigHandler *old_sigint_handler = INVALID_SIGNAL_HANDLER; @@ -879,6 +933,7 @@ static TTYSTRUCT shell_tty_info; static int got_tty_state; /* Fill the contents of shell_tty_info with the current tty info. */ +int get_tty_state () { int tty; @@ -891,6 +946,7 @@ get_tty_state () if (check_window_size) get_new_window_size (0, (int *)0, (int *)0); } + return 0; } /* Make the current tty use the state in shell_tty_info. */ @@ -910,10 +966,12 @@ set_tty_state () } /* Give the terminal to PGRP. */ +int give_terminal_to (pgrp, force) pid_t pgrp; int force; { + return 0; } /* Stop a pipeline. */ @@ -938,6 +996,14 @@ stop_making_children () already_making_children = 0; } +/* The name is kind of a misnomer, but it's what the job control code uses. */ +void +without_job_control () +{ + stop_making_children (); + last_made_pid = NO_PID; /* XXX */ +} + int get_job_by_pid (pid, block) pid_t pid; @@ -957,9 +1023,10 @@ describe_pid (pid) fprintf (stderr, "%ld\n", (long) pid); } -void +int freeze_jobs_list () { + return 0; } void diff --git a/parse.y b/parse.y index 9cf7be8..f415d2e 100644 --- a/parse.y +++ b/parse.y @@ -1,6 +1,6 @@ /* parse.y - Yacc grammar for bash. */ -/* Copyright (C) 1989-2012 Free Software Foundation, Inc. +/* Copyright (C) 1989-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -69,6 +69,8 @@ #if defined (JOB_CONTROL) # include "jobs.h" +#else +extern int cleanup_dead_jobs __P((void)); #endif /* JOB_CONTROL */ #if defined (ALIAS) @@ -125,6 +127,7 @@ extern char *dist_version; extern int patch_level; extern int dump_translatable_strings, dump_po_strings; extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; +extern int here_doc_first_line; #if defined (BUFFERED_INPUT) extern int bash_input_fd_changed; #endif @@ -232,6 +235,9 @@ char *secondary_prompt = SPROMPT; /* PROMPT_STRING_POINTER points to one of these, never to an actual string. */ char *ps1_prompt, *ps2_prompt; +/* Displayed after reading a command but before executing it in an interactive shell */ +char *ps0_prompt; + /* Handle on the current prompt string. Indirectly points through ps1_ or ps2_prompt. */ char **prompt_string_pointer = (char **)NULL; @@ -268,8 +274,6 @@ 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. */ -#define HEREDOC_MAX 16 - static REDIRECT *redir_stack[HEREDOC_MAX]; int need_here_doc; @@ -1224,6 +1228,8 @@ pipeline_command: pipeline /* XXX - let's cheat and push a newline back */ if ($2 == '\n') token_to_read = '\n'; + else if ($2 == ';') + token_to_read = ';'; } | BANG list_terminator { @@ -1242,6 +1248,8 @@ pipeline_command: pipeline /* XXX - let's cheat and push a newline back */ if ($2 == '\n') token_to_read = '\n'; + if ($2 == ';') + token_to_read = ';'; } ; @@ -1428,9 +1436,9 @@ yy_readline_get () int line_len; unsigned char c; - if (!current_readline_line) + if (current_readline_line == 0) { - if (!bash_readline_initialized) + if (bash_readline_initialized == 0) initialize_readline (); #if defined (JOB_CONTROL) @@ -1438,7 +1446,7 @@ yy_readline_get () give_terminal_to (shell_pgrp, 0); #endif /* JOB_CONTROL */ - old_sigint = (SigHandler *)IMPOSSIBLE_TRAP_HANDLER; + old_sigint = IMPOSSIBLE_TRAP_HANDLER; if (signal_is_ignored (SIGINT) == 0) { /* interrupt_immediately++; */ @@ -1953,6 +1961,13 @@ parser_restore_alias () #endif } +void +clear_shell_input_line () +{ + if (shell_input_line) + shell_input_line[shell_input_line_index = 0] = '\0'; +} + /* 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 @@ -2059,10 +2074,10 @@ read_secondary_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. + /* To make adding 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++; @@ -2204,11 +2219,12 @@ shell_getc (remove_quoted_newline) int remove_quoted_newline; { register int i; - int c, truncating; + int c, truncating, last_was_backslash; unsigned char uc; QUIT; + last_was_backslash = 0; if (sigwinch_received) { sigwinch_received = 0; @@ -2305,7 +2321,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 (%zu) exceeds SIZE_MAX (%llu): line truncated", shell_input_line_size, SIZE_MAX); + internal_warning(_("shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"), shell_input_line_size, (unsigned long)SIZE_MAX); shell_input_line[i] = '\0'; truncating = 1; } @@ -2339,6 +2355,8 @@ shell_getc (remove_quoted_newline) current_command_line_count++; break; } + + last_was_backslash = last_was_backslash == 0 && c == '\\'; } shell_input_line_index = 0; @@ -2360,6 +2378,8 @@ shell_getc (remove_quoted_newline) if (current_delimiter (dstack) == '\'') history_expansion_inhibited = 1; # endif + /* Calling with a third argument of 1 allows remember_on_history to + determine whether or not the line is saved to the history list */ expansions = pre_process_line (shell_input_line, 1, 1); # if defined (BANG_HISTORY) history_expansion_inhibited = old_hist; @@ -2433,7 +2453,14 @@ shell_getc (remove_quoted_newline) shell_input_line = (char *)xrealloc (shell_input_line, 1 + (shell_input_line_size += 2)); - shell_input_line[shell_input_line_len] = '\n'; + /* Don't add a newline to a string that ends with a backslash if we're + going to be removing quoted newlines, since that will eat the + backslash. Add another backslash instead (will be removed by + word expansion). */ + if (bash_input.type == st_string && expanding_alias() == 0 && last_was_backslash && c == EOF && remove_quoted_newline) + shell_input_line[shell_input_line_len] = '\\'; + else + shell_input_line[shell_input_line_len] = '\n'; shell_input_line[shell_input_line_len + 1] = '\0'; set_line_mbstate (); @@ -2544,7 +2571,7 @@ parser_remaining_input () if (shell_input_line == 0) return 0; if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) - return '\0'; /* XXX */ + return ""; /* XXX */ return (shell_input_line + shell_input_line_index); } @@ -2595,6 +2622,17 @@ execute_variable_command (command, vname) token_to_read = 0; } +void +push_token (x) + int x; +{ + two_tokens_ago = token_before_that; + token_before_that = last_read_token; + last_read_token = current_token; + + current_token = x; +} + /* Place to remember the token. We try to keep the buffer at a reasonable size, but it can grow. */ static char *token = (char *)NULL; @@ -2672,23 +2710,43 @@ gather_here_documents () int r; r = 0; + here_doc_first_line = 1; while (need_here_doc > 0) { parser_state |= PST_HEREDOC; make_here_document (redir_stack[r++], line_number); parser_state &= ~PST_HEREDOC; need_here_doc--; + redir_stack[r - 1] = 0; /* XXX */ } + here_doc_first_line = 0; /* just in case */ } /* When non-zero, an open-brace used to create a group is awaiting a close brace partner. */ static int open_brace_count; +/* In the following three macros, `token' is always last_read_token */ + +/* Are we in the middle of parsing a redirection where we are about to read + a word? This is used to make sure alias expansion doesn't happen in the + middle of a redirection, even though we're parsing a simple command. */ +#define parsing_redirection(token) \ + (token == '<' || token == '>' || \ + token == GREATER_GREATER || token == GREATER_BAR || \ + token == LESS_GREATER || token == LESS_LESS_MINUS || \ + token == LESS_LESS || token == LESS_LESS_LESS || \ + token == LESS_AND || token == GREATER_AND || token == AND_GREATER) + +/* Is `token' one that will allow a WORD to be read in a command position? + We can read a simple command name on which we should attempt alias expansion + or we can read an assignment statement. */ #define command_token_position(token) \ - (((token) == ASSIGNMENT_WORD) || (parser_state&PST_REDIRLIST) || \ + (((token) == ASSIGNMENT_WORD) || \ + ((parser_state&PST_REDIRLIST) && parsing_redirection(token) == 0) || \ ((token) != SEMI_SEMI && (token) != SEMI_AND && (token) != SEMI_SEMI_AND && reserved_word_acceptable(token))) +/* Are we in a position where we can read an assignment statement? */ #define assignment_acceptable(token) \ (command_token_position(token) && ((parser_state & PST_CASEPAT) == 0)) @@ -2707,6 +2765,8 @@ static int open_brace_count; break; \ if (word_token_alist[i].token == TIME && time_command_acceptable () == 0) \ break; \ + if ((parser_state & PST_CASEPAT) && last_read_token == '|' && word_token_alist[i].token == ESAC) \ + break; /* Posix grammar rule 4 */ \ if (word_token_alist[i].token == ESAC) \ parser_state &= ~(PST_CASEPAT|PST_CASESTMT); \ else if (word_token_alist[i].token == CASE) \ @@ -2751,7 +2811,7 @@ mk_alexpansion (s) 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') + if (r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) r[l++] = ' '; r[l] = '\0'; return r; @@ -2815,6 +2875,9 @@ time_command_acceptable () case 0: case ';': case '\n': + if (token_before_that == '|') + return (0); + /* FALLTHROUGH */ case AND_AND: case OR_OR: case '&': @@ -2972,12 +3035,14 @@ reset_parser () #endif parser_state = 0; + here_doc_first_line = 0; #if defined (ALIAS) || defined (DPAREN_ARITHMETIC) if (pushed_string_list) free_string_list (); #endif /* ALIAS || DPAREN_ARITHMETIC */ + /* This is where we resynchronize to the next newline on error/reset */ if (shell_input_line) { free (shell_input_line); @@ -3095,7 +3160,16 @@ read_token (command) parser_state &= ~PST_ASSIGNOK; - peek_char = shell_getc (1); + /* If we are parsing a command substitution and we have read a character + that marks the end of it, don't bother to skip over quoted newlines + when we read the next token. We're just interested in a character + that will turn this into a two-character token, so we let the higher + layers deal with quoted newlines following the command substitution. */ + if ((parser_state & PST_CMDSUBST) && character == shell_eof_token) + peek_char = shell_getc (0); + else + peek_char = shell_getc (1); + if (character == peek_char) { switch (character) @@ -3252,7 +3326,8 @@ tokword: #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 LEX_QUOTEDDOC 0x400 /* here doc with quoted delim */ +#define LEX_INWORD 0x800 #define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') @@ -3498,7 +3573,7 @@ parse_matched_pair (qc, open, close, lenp, flags) APPEND_NESTRET (); FREE (nestret); } - else if ((flags & P_ARRAYSUB) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ goto parse_dollar_word; } /* Parse an old-style command substitution within double quotes as a @@ -3544,6 +3619,81 @@ parse_dollar_word: return ret; } +#if defined (DEBUG) +static void +dump_tflags (flags) + int flags; +{ + int f; + + f = flags; + fprintf (stderr, "%d -> ", f); + if (f & LEX_WASDOL) + { + f &= ~LEX_WASDOL; + fprintf (stderr, "LEX_WASDOL%s", f ? "|" : ""); + } + if (f & LEX_CKCOMMENT) + { + f &= ~LEX_CKCOMMENT; + fprintf (stderr, "LEX_CKCOMMENT%s", f ? "|" : ""); + } + if (f & LEX_INCOMMENT) + { + f &= ~LEX_INCOMMENT; + fprintf (stderr, "LEX_INCOMMENT%s", f ? "|" : ""); + } + if (f & LEX_PASSNEXT) + { + f &= ~LEX_PASSNEXT; + fprintf (stderr, "LEX_PASSNEXT%s", f ? "|" : ""); + } + if (f & LEX_RESWDOK) + { + f &= ~LEX_RESWDOK; + fprintf (stderr, "LEX_RESWDOK%s", f ? "|" : ""); + } + if (f & LEX_CKCASE) + { + f &= ~LEX_CKCASE; + fprintf (stderr, "LEX_CKCASE%s", f ? "|" : ""); + } + if (f & LEX_INCASE) + { + f &= ~LEX_INCASE; + fprintf (stderr, "LEX_INCASE%s", f ? "|" : ""); + } + if (f & LEX_INHEREDOC) + { + f &= ~LEX_INHEREDOC; + fprintf (stderr, "LEX_INHEREDOC%s", f ? "|" : ""); + } + if (f & LEX_HEREDELIM) + { + f &= ~LEX_HEREDELIM; + fprintf (stderr, "LEX_HEREDELIM%s", f ? "|" : ""); + } + if (f & LEX_STRIPDOC) + { + f &= ~LEX_STRIPDOC; + fprintf (stderr, "LEX_WASDOL%s", f ? "|" : ""); + } + if (f & LEX_QUOTEDDOC) + { + f &= ~LEX_QUOTEDDOC; + fprintf (stderr, "LEX_QUOTEDDOC%s", f ? "|" : ""); + } + if (f & LEX_INWORD) + { + f &= ~LEX_INWORD; + fprintf (stderr, "LEX_INWORD%s", f ? "|" : ""); + } + + fprintf (stderr, "\n"); + fflush (stderr); +} +#endif + /* Parse a $(...) command substitution. This is messier than I'd like, and reproduces a lot more of the token-reading code than I'd like. */ static char * @@ -3621,7 +3771,7 @@ eof_error: tind++; if (STREQN (ret + tind, heredelim, hdlen)) { - tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC); + tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); /*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ free (heredelim); heredelim = 0; @@ -3641,21 +3791,29 @@ eof_error: 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);*/ +/*itrace("parse_comsub:%d: in here doc, ch == close, retind - firstind = %d hdlen = %d retind = %d", line_number, retind-lex_firstind, hdlen, retind);*/ tind = lex_firstind; while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') tind++; if (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);*/ + tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); +/*itrace("parse_comsub:%d: found here doc end `%*s'", line_number, hdlen, ret + tind);*/ free (heredelim); heredelim = 0; lex_firstind = -1; } } - /* Don't bother counting parens or doing anything else if in a comment */ + /* Don't bother counting parens or doing anything else if in a comment or + here document (not exactly right for here-docs -- if we want to allow + recursive calls to parse_comsub to have their own here documents, + change the LEX_INHEREDOC to LEX_QUOTEDDOC here and uncomment the next + clause below. Note that to make this work completely, we need to make + additional changes to allow xparse_dolparen to work right when the + command substitution is parsed, because read_secondary_line doesn't know + to recursively parse through command substitutions embedded in here- + documents */ if (tflags & (LEX_INCOMMENT|LEX_INHEREDOC)) { /* Add this character. */ @@ -3670,6 +3828,21 @@ eof_error: continue; } +#if 0 + /* If we're going to recursively parse a command substitution inside a + here-document, make sure we call parse_comsub recursively below. See + above for additional caveats. */ + if ((tflags & LEX_INHEREDOC) && ((tflags & LEX_WASDOL) == 0 || ch != '(')) /*)*/ + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + if MBTEST(ch == '$') + tflags |= LEX_WASDOL; + else + tflags &= ~LEX_WASDOL; + } +#endif if (tflags & LEX_PASSNEXT) /* last char was backslash */ { @@ -3747,9 +3920,11 @@ eof_error: { 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 (STREQ (heredelim, nestret) == 0) + tflags |= LEX_QUOTEDDOC; + free (nestret); } if (ch == '\n') { @@ -3799,7 +3974,7 @@ eof_error: /* If we can read a reserved word, try to read one. */ if (tflags & LEX_RESWDOK) { - if MBTEST(islower (ch)) + if MBTEST(islower ((unsigned char)ch)) { /* Add this character. */ RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); @@ -3812,14 +3987,34 @@ eof_error: if (STREQN (ret + retind - 4, "case", 4)) { tflags |= LEX_INCASE; + tflags &= ~LEX_RESWDOK; /*itrace("parse_comsub:%d: found `case', lex_incase -> 1 lex_reswdok -> 0", line_number);*/ } else if (STREQN (ret + retind - 4, "esac", 4)) { tflags &= ~LEX_INCASE; -/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 0", line_number);*/ +/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 1", line_number);*/ + tflags |= LEX_RESWDOK; + lex_rwlen = 0; + } + else if (STREQN (ret + retind - 4, "done", 4) || + STREQN (ret + retind - 4, "then", 4) || + STREQN (ret + retind - 4, "else", 4) || + STREQN (ret + retind - 4, "elif", 4) || + STREQN (ret + retind - 4, "time", 4)) + { + /* these are four-character reserved words that can be + followed by a reserved word; anything else turns off + the reserved-word-ok flag */ +/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 1", line_number, ret+retind-4);*/ + tflags |= LEX_RESWDOK; + lex_rwlen = 0; + } + else + { + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/ } - 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 */ @@ -3827,11 +4022,11 @@ eof_error: 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') && + (isblank((unsigned char)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);*/ +/*itrace("parse_comsub:%d: lex_incase == 0 found `%c', found \"do\"", line_number, ch);*/ lex_rwlen = 0; } else if MBTEST((tflags & LEX_INCASE) && ch != '\n') @@ -3852,7 +4047,7 @@ eof_error: #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) + else if MBTEST(isblank ((unsigned char)ch) && lex_rwlen > 0) { tflags &= ~LEX_RESWDOK; /*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ @@ -4037,7 +4232,8 @@ xparse_dolparen (base, string, indp, flags) /*(*/ parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ shell_eof_token = ')'; - parse_string (string, "command substitution", sflags, &ep); + + nc = parse_string (string, "command substitution", sflags, &ep); shell_eof_token = orig_eof_token; restore_parser_state (&ps); @@ -4047,6 +4243,11 @@ xparse_dolparen (base, string, indp, flags) token_to_read = 0; + /* If parse_string returns < 0, we need to jump to top level with the + negative of the return value */ + if (nc < 0) + jump_to_top_level (-nc); /* XXX */ + /* Need to find how many characters parse_and_execute consumed, update *indp, if flags != 0, copy the portion of the string parsed into RET and return it. If flags & 1 (EX_NOALLOC) we can return NULL. */ @@ -4502,7 +4703,7 @@ read_token_word (character) /* Non-zero means to ignore the value of the next character, and just to add it no matter what. */ - int pass_next_character; + int pass_next_character; /* The current delimiting character. */ int cd; @@ -4799,7 +5000,6 @@ read_token_word (character) } got_character: - if (character == CTLESC || character == CTLNUL) { RESIZE_MALLOCED_BUFFER (token, token_index, 2, token_buffer_size, @@ -4876,7 +5076,7 @@ got_token: #endif CHECK_FOR_RESERVED_WORD (token); - the_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); + the_word = alloc_word_desc (); the_word->word = (char *)xmalloc (1 + token_index); the_word->flags = 0; strcpy (the_word->word, token); @@ -4919,7 +5119,7 @@ got_token: /* 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)) + if (legal_identifier (token+1) || valid_array_reference (token+1, 0)) #else if (legal_identifier (token+1)) #endif @@ -5092,7 +5292,7 @@ history_delimiting_chars (line) last_was_heredoc = 0; return "\n"; } - return (current_command_line_count == 2 ? "\n" : ""); + return (here_doc_first_line ? "\n" : ""); } if (parser_state & PST_COMPASSIGN) @@ -5113,7 +5313,7 @@ history_delimiting_chars (line) command lists. It's a suboptimal solution. */ else if (parser_state & PST_CASESTMT) /* case statement pattern */ return " "; - else + else return "; "; /* (...) subshell */ } else if (token_before_that == WORD && two_tokens_ago == FUNCTION) @@ -5127,7 +5327,8 @@ history_delimiting_chars (line) last_was_heredoc = 1; return "\n"; } - + else if ((parser_state & PST_HEREDOC) == 0 && current_command_line_count > 1 && need_here_doc > 0) + return "\n"; else if (token_before_that == WORD && two_tokens_ago == FOR) { /* Tricky. `for i\nin ...' should not have a semicolon, but @@ -5164,6 +5365,8 @@ prompt_again () ps1_prompt = get_string_value ("PS1"); ps2_prompt = get_string_value ("PS2"); + ps0_prompt = get_string_value ("PS0"); + if (!prompt_string_pointer) prompt_string_pointer = &ps1_prompt; @@ -5256,9 +5459,10 @@ decode_prompt_string (string) struct dstack save_dstack; int last_exit_value, last_comsub_pid; #if defined (PROMPT_STRING_DECODE) - int result_size, result_index; + size_t result_size; + int result_index; int c, n, i; - char *temp, octal_string[4]; + char *temp, *t_host, octal_string[4]; struct tm *tm; time_t the_time; char timebuf[128]; @@ -5406,7 +5610,11 @@ decode_prompt_string (string) case 's': temp = base_pathname (shell_name); - temp = savestring (temp); + /* Try to quote anything the user can set in the file system */ + if (promptvars || posixly_correct) + temp = sh_backslash_quote_for_double_quotes (temp); + else + temp = savestring (temp); goto add_string; case 'v': @@ -5496,9 +5704,17 @@ decode_prompt_string (string) case 'h': case 'H': - temp = savestring (current_host_name); - if (c == 'h' && (t = (char *)strchr (temp, '.'))) + t_host = savestring (current_host_name); + if (c == 'h' && (t = (char *)strchr (t_host, '.'))) *t = '\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 (t_host); + else + temp = savestring (t_host); + free (t_host); goto add_string; case '#': @@ -5589,6 +5805,10 @@ not_escape: else { RESIZE_MALLOCED_BUFFER (result, result_index, 3, result_size, PROMPT_GROWTH); + /* dequote_string should take care of removing this if we are not + performing the rest of the word expansions. */ + if (c == CTLESC || c == CTLNUL) + result[result_index++] = CTLESC; result[result_index++] = c; result[result_index] = '\0'; } @@ -6082,6 +6302,8 @@ sh_parser_state_t * save_parser_state (ps) sh_parser_state_t *ps; { + int i; + if (ps == 0) ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t)); if (ps == 0) @@ -6115,6 +6337,17 @@ save_parser_state (ps) ps->expand_aliases = expand_aliases; ps->echo_input_at_read = echo_input_at_read; ps->need_here_doc = need_here_doc; + ps->here_doc_first_line = here_doc_first_line; + +#if 0 + for (i = 0; i < HEREDOC_MAX; i++) + ps->redir_stack[i] = redir_stack[i]; +#else + if (need_here_doc == 0) + ps->redir_stack[0] = 0; + else + memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); +#endif ps->token = token; ps->token_buffer_size = token_buffer_size; @@ -6129,6 +6362,8 @@ void restore_parser_state (ps) sh_parser_state_t *ps; { + int i; + if (ps == 0) return; @@ -6164,6 +6399,17 @@ restore_parser_state (ps) expand_aliases = ps->expand_aliases; echo_input_at_read = ps->echo_input_at_read; need_here_doc = ps->need_here_doc; + here_doc_first_line = ps->here_doc_first_line; + +#if 0 + for (i = 0; i < HEREDOC_MAX; i++) + redir_stack[i] = ps->redir_stack[i]; +#else + if (need_here_doc == 0) + redir_stack[0] = 0; + else + memcpy (redir_stack, ps->redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); +#endif FREE (token); token = ps->token; @@ -6222,8 +6468,7 @@ set_line_mbstate () 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); + shell_input_line_property = (char *)xrealloc (shell_input_line_property, len + 1); memset (&prevs, '\0', sizeof (mbstate_t)); for (i = previ = 0; i < len; i++) diff --git a/parser-built b/parser-built index b280e40..b367eb2 100644 --- a/parser-built +++ b/parser-built @@ -1,14 +1,13 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + 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. + 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 @@ -16,9 +15,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -33,60 +30,69 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Tokens. */ +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ #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 - }; + 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 @@ -137,13 +143,13 @@ #define BAR_AND 303 #define yacc_EOF 304 - - - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 324 "/usr/homes/chet/src/bash/src/parse.y" + +union YYSTYPE { +#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909 */ + WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ WORD_LIST *word_list; @@ -151,14 +157,18 @@ typedef union YYSTYPE 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 + +#line 162 "y.tab.h" /* yacc.c:1909 */ +}; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 #endif + extern YYSTYPE yylval; +int yyparse (void); + +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ diff --git a/patchlevel.h b/patchlevel.h index 22bb68c..1cd7c96 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -1,6 +1,6 @@ /* patchlevel.h -- current bash patch level */ -/* Copyright (C) 2001-2012 Free Software Foundation, Inc. +/* Copyright (C) 2001-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -25,6 +25,6 @@ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh looks for to find the patch level (for the sccs version string). */ -#define PATCHLEVEL 46 +#define PATCHLEVEL 0 #endif /* _PATCHLEVEL_H_ */ diff --git a/pathexp.c b/pathexp.c index d7315e3..21fc148 100644 --- a/pathexp.c +++ b/pathexp.c @@ -184,6 +184,7 @@ quote_string_for_globbing (pathname, qflags) char *temp; register int i, j; int brack, cclass, collsym, equiv, c, last_was_backslash; + int savei, savej; temp = (char *)xmalloc (2 * strlen (pathname) + 1); @@ -226,6 +227,8 @@ quote_string_for_globbing (pathname, qflags) { brack = 1; temp[j++] = pathname[i++]; /* open bracket */ + savej = j; + savei = i; c = pathname[i++]; /* c == char after open bracket */ do { @@ -282,7 +285,19 @@ quote_string_for_globbing (pathname, qflags) else temp[j++] = c; } - while ((c = pathname[i++]) != ']'); + while (((c = pathname[i++]) != ']') && c != 0); + + /* If we don't find the closing bracket before we hit the end of + the string, rescan string without treating it as a bracket + expression (has implications for backslash and special ERE + chars) */ + if (c == 0) + { + i = savei - 1; /* -1 for autoincrement above */ + j = savej; + continue; + } + temp[j++] = c; /* closing right bracket */ i--; /* increment will happen above in loop */ continue; /* skip double assignment below */ @@ -313,10 +328,11 @@ endpat: char * quote_globbing_chars (string) - char *string; + const char *string; { size_t slen; - char *temp, *s, *t, *send; + char *temp, *t; + const char *s, *send; DECLARE_MBSTATE; slen = strlen (string); @@ -461,7 +477,7 @@ glob_name_is_acceptable (name) if (name[0] == '.' && (name[1] == '\0' || (name[1] == '.' && name[2] == '\0'))) return (0); - flags = FNM_PATHNAME | FNMATCH_EXTFLAG; + flags = FNM_PATHNAME | FNMATCH_EXTFLAG | FNMATCH_NOCASEGLOB; for (p = globignore.ignores; p->val; p++) { if (strmatch (p->val, (char *)name, flags) != FNM_NOMATCH) @@ -538,7 +554,7 @@ split_ignorespec (s, ip) if (s[i] == 0) return 0; - n = skip_to_delim (s, i, ":", SD_NOJMP|SD_EXTGLOB); + n = skip_to_delim (s, i, ":", SD_NOJMP|SD_EXTGLOB|SD_GLOB); t = substring (s, i, n); if (s[n] == ':') diff --git a/pathexp.h b/pathexp.h index 20d0baf..183a212 100644 --- a/pathexp.h +++ b/pathexp.h @@ -1,6 +1,6 @@ /* pathexp.h -- The shell interface to the globbing library. */ -/* Copyright (C) 1987-2009 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -43,6 +43,7 @@ extern char *glob_error_return; #endif /* !EXTENDED_GLOB */ #define FNMATCH_IGNCASE (match_ignore_case ? FNM_CASEFOLD : 0) +#define FNMATCH_NOCASEGLOB (glob_ignore_case ? FNM_CASEFOLD : 0) extern int glob_dot_filenames; extern int extended_glob; @@ -64,13 +65,13 @@ extern int unquoted_glob_pattern_p __P((char *)); extern char *quote_string_for_globbing __P((const char *, int)); extern int glob_char_p __P((const char *)); -extern char *quote_globbing_chars __P((char *)); +extern char *quote_globbing_chars __P((const char *)); /* Call the glob library to do globbing on PATHNAME. */ extern char **shell_glob_filename __P((const char *)); /* Filename completion ignore. Used to implement the "fignore" facility of - tcsh and GLOBIGNORE (like ksh-93 FIGNORE). + tcsh, GLOBIGNORE (like ksh-93 FIGNORE), and EXECIGNORE. It is passed a NULL-terminated array of (char *)'s that must be free()'d if they are deleted. The first element (names[0]) is the @@ -86,7 +87,7 @@ struct ign { typedef int sh_iv_item_func_t __P((struct ign *)); struct ignorevar { - char *varname; /* FIGNORE or GLOBIGNORE */ + char *varname; /* FIGNORE, GLOBIGNORE, or EXECIGNORE */ struct ign *ignores; /* Store the ignore strings here */ int num_ignores; /* How many are there? */ char *last_ignoreval; /* Last value of variable - cached for speed */ diff --git a/pcomplete.c b/pcomplete.c index 70cbc98..ac0903a 100644 --- a/pcomplete.c +++ b/pcomplete.c @@ -117,7 +117,7 @@ static int it_init_setopts __P((ITEMLIST *)); static int it_init_shopts __P((ITEMLIST *)); static int shouldexp_filterpat __P((char *)); -static char *preproc_filterpat __P((char *, char *)); +static char *preproc_filterpat __P((char *, const char *)); static void init_itemlist_from_varlist __P((ITEMLIST *, SVFUNC *)); @@ -273,7 +273,7 @@ shouldexp_filterpat (s) static char * preproc_filterpat (pat, text) char *pat; - char *text; + const char *text; { char *ret; @@ -289,7 +289,8 @@ preproc_filterpat (pat, text) STRINGLIST * filter_stringlist (sl, filterpat, text) STRINGLIST *sl; - char *filterpat, *text; + char *filterpat; + const char *text; { int i, m, not; STRINGLIST *ret; @@ -300,13 +301,17 @@ filter_stringlist (sl, filterpat, text) npat = shouldexp_filterpat (filterpat) ? preproc_filterpat (filterpat, text) : filterpat; +#if defined (EXTENDED_GLOB) + not = (npat[0] == '!' && (extended_glob == 0 || npat[1] != '(')); /*)*/ +#else not = (npat[0] == '!'); +#endif t = not ? npat + 1 : npat; ret = strlist_create (sl->list_size); for (i = 0; i < sl->list_len; i++) { - m = strmatch (t, sl->list[i], FNMATCH_EXTFLAG); + m = strmatch (t, sl->list[i], FNMATCH_EXTFLAG | FNMATCH_IGNCASE); if ((not && m == FNM_NOMATCH) || (not == 0 && m != FNM_NOMATCH)) free (sl->list[i]); else @@ -1020,13 +1025,13 @@ static void unbind_compfunc_variables (exported) int exported; { - unbind_variable ("COMP_LINE"); - unbind_variable ("COMP_POINT"); - unbind_variable ("COMP_TYPE"); - unbind_variable ("COMP_KEY"); + unbind_variable_noref ("COMP_LINE"); + unbind_variable_noref ("COMP_POINT"); + unbind_variable_noref ("COMP_TYPE"); + unbind_variable_noref ("COMP_KEY"); #ifdef ARRAY_VARS - unbind_variable ("COMP_WORDS"); - unbind_variable ("COMP_CWORD"); + unbind_variable_noref ("COMP_WORDS"); + unbind_variable_noref ("COMP_CWORD"); #endif if (exported) array_needs_making = 1; @@ -1178,7 +1183,7 @@ gen_shell_function_matches (cs, cmd, text, line, ind, lwords, nw, cw, foundp) } /* XXX - should we unbind COMPREPLY here? */ - unbind_variable ("COMPREPLY"); + unbind_variable_noref ("COMPREPLY"); return (sl); #endif @@ -1187,9 +1192,9 @@ gen_shell_function_matches (cs, cmd, text, line, ind, lwords, nw, cw, foundp) /* Build a command string with $0 == cs->command (command to execute for completion list) $1 == command name (command being completed) - $2 = word to be completed (possibly null) - $3 = previous word - and run in with command substitution. Parse the results, one word + $2 == word to be completed (possibly null) + $3 == previous word + and run it with command substitution. Parse the results, one word per line, with backslashes allowed to escape newlines. Build a STRINGLIST from the results and return it. */ @@ -1292,7 +1297,7 @@ command_line_to_word_list (line, llen, sentinel, nwp, cwp) #else delims = rl_completer_word_break_characters; #endif - ret = split_at_delims (line, llen, delims, sentinel, SD_NOQUOTEDELIM, nwp, cwp); + ret = split_at_delims (line, llen, delims, sentinel, SD_NOQUOTEDELIM|SD_COMPLETE, nwp, cwp); return (ret); } @@ -1522,6 +1527,8 @@ pcomp_set_readline_variables (flags, nval) option is supposed to turn it off */ if (flags & COPT_NOQUOTE) rl_filename_quoting_desired = 1 - nval; + if (flags & COPT_NOSORT) + rl_sort_completion_matches = 1 - nval; } /* Set or unset FLAGS in the options word of the current compspec. @@ -1636,7 +1643,7 @@ programmable_completions (cmd, word, start, end, foundp) if (count > 32) { - internal_warning ("programmable_completion: %s: possible retry loop", cmd); + internal_warning (_("programmable_completion: %s: possible retry loop"), cmd); break; } } diff --git a/pcomplete.h b/pcomplete.h index 67f6393..0514245 100644 --- a/pcomplete.h +++ b/pcomplete.h @@ -75,6 +75,7 @@ typedef struct compspec { #define COPT_NOSPACE (1<<5) #define COPT_BASHDEFAULT (1<<6) #define COPT_PLUSDIRS (1<<7) +#define COPT_NOSORT (1<<8) /* List of items is used by the code that implements the programmable completions. */ diff --git a/pcomplib.c b/pcomplib.c index 7361bb1..70c7a17 100644 --- a/pcomplib.c +++ b/pcomplib.c @@ -37,7 +37,7 @@ #include "shell.h" #include "pcomplete.h" -#define COMPLETE_HASH_BUCKETS 128 /* must be power of two */ +#define COMPLETE_HASH_BUCKETS 256 /* must be power of two */ #define STRDUP(x) ((x) ? savestring (x) : (char *)NULL) @@ -96,7 +96,7 @@ compspec_copy (cs) new = (COMPSPEC *)xmalloc (sizeof (COMPSPEC)); - new->refcount = cs->refcount; + new->refcount = 1; /* was cs->refcount, but this is a fresh copy */ new->actions = cs->actions; new->options = cs->options; diff --git a/po/LINGUAS b/po/LINGUAS index a97ac6a..9c17d26 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,2 +1,2 @@ # Set of available languages. -en@quot en@boldquot af bg ca cs da de el eo es et fi fr ga gl hr hu id it ja lt nl pl pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW +en@quot en@boldquot af bg ca cs da de el eo es et fi fr ga gl hr hu id it ja lt nb nl pl pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW diff --git a/po/af.gmo b/po/af.gmo index 9bb144e8f0c6327910b225cecd348ced24aaea2d..65138ec151053345618126dc37d6793a1e18f11e 100644 GIT binary patch delta 404 zcmXZXu}%U(5P;!X?#yv=;sqmOVw70eU2+gY0@_d-=}2tNnkd@Pk=UJ;FR)sfQ1AfS z*jr+SFMvLPg|wFb157ga?d;vn?9RfEF#9g~PeN>xd*mazLq>)Naf91JgTx z-&XYmBkC{o@dxub#{mCOXGl(@2r)7*lLHp|;|W&q6uW$UiF%M%Pvi(EsPBJK8w5-# zV;MIv!8JU_5IeYzXQ+M7F~$KNVul6jiHuq7vhjk^-gRdkU8WGdhXd~K+#*U8Y;}YKDIzCME zF(%}%)BFQ@?3=ENKN#XKmeG~WX0d`bOmM+$U`+7`Htl%lC-X+F%Zg$6@$qSEj_=t6UK^0UmG|ur~K)G(B zq6)3ih6-({&_(n|b-=Pea*M9!yRPqYKXLEzPTJZ|v#gP2dA66fcKuW7zS=3SdN)O{ Tn>UIJ-ww|FI2bU0D;)g+-25r> diff --git a/po/af.po b/po/af.po index bef026b..54feb49 100644 --- a/po/af.po +++ b/po/af.po @@ -6,80 +6,86 @@ msgid "" msgstr "" "Project-Id-Version: bash 2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\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 +#: arrayfunc.c:54 #, fuzzy msgid "bad array subscript" msgstr "Os/2 Biskaart Skikking" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: illegal option -- %c\n" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: kan nie %s skep nie" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "%s: illegal option -- %c\n" @@ -88,356 +94,385 @@ msgstr "%s: illegal option -- %c\n" msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, fuzzy, c-format msgid "%s: cannot read: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, fuzzy, c-format msgid "`%s': cannot unbind" msgstr "%s: bevel nie gevind nie" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, fuzzy, c-format msgid "`%s': unknown function name" msgstr "%s: leesalleen-funksie" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "" -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 #, fuzzy msgid "loop count" msgstr "Afteken" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 #, fuzzy msgid "too many arguments" msgstr "te veel parameters" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "boonste lêergids." + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "" -#: builtins/common.c:101 +#: builtins/common.c:102 #, fuzzy, c-format msgid "line %d: " msgstr "3d modus" -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, fuzzy, c-format msgid "warning: " msgstr "besig om te skryf" -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "" -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "%s: option `%s' requires an argument\n" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "" -#: builtins/common.c:205 +#: builtins/common.c:213 #, fuzzy, c-format msgid "%s: not found" msgstr "%s: bevel nie gevind nie" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%s: illegal option -- %c\n" -#: builtins/common.c:221 +#: builtins/common.c:229 #, fuzzy, c-format msgid "%s: invalid option name" msgstr "%s: illegal option -- %c\n" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, fuzzy, c-format msgid "`%s': not a valid identifier" msgstr "Die datum is nie geldige!" -#: builtins/common.c:238 +#: builtins/common.c:246 #, fuzzy msgid "invalid octal number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:240 +#: builtins/common.c:248 #, fuzzy msgid "invalid hex number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 #, fuzzy msgid "invalid number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, fuzzy, c-format msgid "%s: readonly variable" msgstr "Veranderlike boom" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 #, fuzzy msgid "argument" msgstr "argument verwag\n" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "" -#: builtins/common.c:290 +#: builtins/common.c:298 #, fuzzy, c-format msgid "%s: no job control" msgstr "geen taakbeheer in hierdie dop nie" -#: builtins/common.c:292 +#: builtins/common.c:300 #, fuzzy msgid "no job control" msgstr "geen taakbeheer in hierdie dop nie" -#: builtins/common.c:302 +#: builtins/common.c:310 #, fuzzy, c-format msgid "%s: restricted" msgstr "Die bediener beëindig Die verbinding." -#: builtins/common.c:304 +#: builtins/common.c:312 #, fuzzy msgid "restricted" msgstr "" "\n" "Bevel beëindig\n" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:321 +#: builtins/common.c:329 #, fuzzy, c-format msgid "write error: %s" msgstr "pypfout: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, fuzzy, c-format msgid "%s: ambiguous job spec" msgstr "%s: dubbelsinnige herroetering" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: illegal option -- %c\n" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: leesalleen-funksie" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, fuzzy, c-format msgid "cannot open shared object %s: %s" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, fuzzy, c-format msgid "%s: cannot delete: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: is 'n gids" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, fuzzy, c-format msgid "%s: not a regular file" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, fuzzy, c-format msgid "%s: cannot execute: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, fuzzy, c-format msgid "logout\n" msgstr "Afteken" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "" -#: builtins/fc.def:262 +#: builtins/fc.def:269 #, fuzzy msgid "no command found" msgstr "%s: bevel nie gevind nie" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, fuzzy, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "" @@ -456,35 +491,35 @@ msgstr "%s: option `%s' requires an argument\n" msgid "hashing disabled" msgstr "" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "Bevelreël" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:199 +#: builtins/help.def:226 #, fuzzy, c-format msgid "%s: cannot open: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -496,15 +531,20 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: illegal option -- %c\n" + +#: builtins/history.def:375 #, fuzzy, c-format msgid "%s: history expansion failed" msgstr "%s: heelgetal-uitdrukking is verwag\n" @@ -518,119 +558,119 @@ msgstr "%s: heelgetal-uitdrukking is verwag\n" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:263 +#: builtins/kill.def:265 #, fuzzy msgid "Unknown error" msgstr "Onbekende fout %d" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 #, fuzzy msgid "expression expected" msgstr "Bools uitdrukking verwag" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, fuzzy, c-format msgid "%s: not an indexed array" msgstr "Veranderlike boom" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: illegal option -- %c\n" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: illegal option -- %c\n" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "Die sein nommer wat was gevang het" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 #, fuzzy msgid "empty array variable name" msgstr "Veranderlike boom" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: illegal option -- %c\n" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 #, fuzzy msgid "no other directory" msgstr "boonste lêergids." -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: illegal option -- %c\n" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 #, fuzzy msgid "" msgstr "Nuutste gebruik word werksaam gids" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 #, fuzzy msgid "directory stack index" msgstr "Stapel grootte verhoog" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 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 +694,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -679,7 +719,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -700,147 +740,157 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:678 +#: builtins/read.def:696 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "pypfout: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:826 +#: builtins/set.def:888 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: kan nie %s skep nie" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: kan nie %s skep nie" -#: builtins/set.def:854 +#: builtins/set.def:922 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "Veranderlike boom" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, fuzzy, c-format msgid "%s: not a function" msgstr "%s: leesalleen-funksie" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: kan nie %s skep nie" + +#: builtins/shift.def:73 builtins/shift.def:79 #, fuzzy msgid "shift count" msgstr "Shift" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "" -#: builtins/source.def:155 +#: builtins/source.def:157 #, fuzzy, c-format msgid "%s: file not found" msgstr "%s: bevel nie gevind nie" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 #, fuzzy msgid "cannot suspend a login shell" msgstr "Begin aanteken tolk" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "" -#: builtins/type.def:274 +#: builtins/type.def:276 #, fuzzy, c-format msgid "%s is a function\n" msgstr "%s: leesalleen-funksie" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, fuzzy, c-format msgid "`%c': bad command" msgstr "%s: illegal option -- %c\n" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, fuzzy, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 #, fuzzy msgid "limit" msgstr "Filter beperk:" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, fuzzy, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/umask.def:114 +#: builtins/umask.def:115 #, fuzzy msgid "octal number" msgstr "Die sein nommer wat was gevang het" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr "" @@ -854,87 +904,108 @@ msgstr "Bevelre msgid "Aborting..." msgstr "" -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 #, fuzzy msgid "unknown command error" msgstr "Onbekende fout %d" -#: error.c:441 +#: error.c:464 #, fuzzy msgid "bad command type" msgstr "bevelnaam" -#: error.c:442 +#: error.c:465 #, fuzzy msgid "bad connector" msgstr "foutiewe verbinder`%d'" -#: error.c:443 +#: error.c:466 #, fuzzy msgid "bad jump" msgstr "Spring na:" -#: error.c:481 +#: error.c:504 #, fuzzy, c-format msgid "%s: unbound variable" msgstr "Veranderlike boom" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 #, fuzzy msgid "pipe error" msgstr "pypfout: %s" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: bevel nie gevind nie" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: is 'n gids" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" @@ -984,41 +1055,41 @@ msgstr "" msgid "missing `)'" msgstr "Ontbrekende '>'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 #, fuzzy msgid "syntax error: operand expected" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1416 +#: expr.c:1419 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" "Hierdie is die fout boodskap van %1:\n" "%2" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "waarde te groot vir basis" -#: expr.c:1543 +#: expr.c:1546 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "%s: heelgetal-uitdrukking is verwag\n" -#: general.c:62 +#: general.c:68 #, fuzzy msgid "getcwd: cannot access parent directories" msgstr "Kan nie die program uitvoer nie:" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, fuzzy, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" @@ -1033,152 +1104,152 @@ msgstr "" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1435 +#: jobs.c:1590 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "E108: Geen veranderlike: \"%s\"" -#: jobs.c:1450 +#: jobs.c:1605 #, fuzzy, c-format msgid "Signal %d" msgstr "Sein kwaliteit:" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Klaar" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 #, fuzzy msgid "Stopped" msgstr "Op gehou" -#: jobs.c:1473 +#: jobs.c:1628 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Op gehou" -#: jobs.c:1477 +#: jobs.c:1632 #, fuzzy msgid "Running" msgstr "aktief" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Klaar(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Verlaat %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Onbekende status" -#: jobs.c:1583 +#: jobs.c:1741 #, fuzzy, c-format msgid "(core dumped) " msgstr "Kern Ontwikkelaar" -#: jobs.c:1602 +#: jobs.c:1760 #, fuzzy, c-format msgid " (wd: %s)" msgstr "Aktiveer nou dadelik" -#: jobs.c:1819 +#: jobs.c:1985 #, fuzzy, c-format msgid "child setpgid (%ld to %ld)" msgstr "Fout in die skryf van %s" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2986 +#: jobs.c:3221 #, fuzzy, c-format msgid "%s: job has terminated" msgstr "Die bediener beëindig Die verbinding." -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3711 +#: jobs.c:3970 #, fuzzy, c-format msgid "%s: line %d: " msgstr "3d modus" -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, fuzzy, c-format msgid " (core dumped)" msgstr "Kern Ontwikkelaar" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, fuzzy, c-format msgid "(wd now: %s)\n" msgstr "Aktiveer nou dadelik" -#: jobs.c:3782 +#: jobs.c:4041 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "Inisialisering van OpenGL het misluk." -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3853 +#: jobs.c:4114 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "Inisialisering van OpenGL het misluk." -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "geen taakbeheer in hierdie dop nie" @@ -1231,17 +1302,17 @@ msgstr "" msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1265,7 +1336,7 @@ msgstr "" msgid "%s: bad network path specification" msgstr "" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "" @@ -1304,274 +1375,319 @@ msgstr "Wanneer nuwe pos arriveer in" msgid "The mail in %s has been read\n" msgstr "" -#: make_cmd.c:323 +#: make_cmd.c:329 #, fuzzy msgid "syntax error: arithmetic expression required" msgstr "Sintaks fout in patroon" -#: make_cmd.c:325 +#: make_cmd.c:331 #, fuzzy msgid "syntax error: `;' unexpected" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: make_cmd.c:326 +#: make_cmd.c:332 #, fuzzy, c-format msgid "syntax error: `((%s))'" msgstr "sintaksfout" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4179 +#: parse.y:4419 #, fuzzy msgid "syntax error in conditional expression" msgstr "Sintaks fout in patroon" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4261 +#: parse.y:4501 #, fuzzy msgid "expected `)'" msgstr "')' is verwag\n" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4339 +#: parse.y:4579 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: parse.y:4343 +#: parse.y:4583 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4380 +#: parse.y:4620 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:4383 +#: parse.y:4623 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:4387 +#: parse.y:4627 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:5755 +#: parse.y:6014 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "Sintaks fout in patroon" -#: parse.y:5765 +#: parse.y:6024 #, fuzzy msgid "syntax error: unexpected end of file" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "sintaksfout" -#: parse.y:5827 +#: parse.y:6086 #, fuzzy, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gebruik Kaart na Los Tronk" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "" -#: redir.c:177 +#: redir.c:178 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: dubbelsinnige herroetering" -#: redir.c:181 +#: redir.c:182 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "Jy het gespesifiseer 'n bestaande lêer" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:195 +#: redir.c:196 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "Pypfout.\n" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:890 +#: shell.c:927 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%s: illegal option -- %c\n" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: is 'n gids" + +#: shell.c:1777 msgid "I have no name!" msgstr "Ek het nie 'n naam nie!" -#: shell.c:1827 +#: shell.c:1930 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "bedryfstelselkernweergawe" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:1830 +#: shell.c:1933 #, fuzzy msgid "GNU long options:\n" msgstr "Gnu C Saamsteller Opsies" -#: shell.c:1834 +#: shell.c:1937 #, fuzzy msgid "Shell options:\n" msgstr "opneem opsies" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1850 +#: shell.c:1953 #, fuzzy, c-format msgid "\t-%s or -o option\n" msgstr "" "Gebruik so: %s LÊER \n" " of: %s OPSIE\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1777,92 +1893,107 @@ msgstr "Sein kwaliteit:" msgid "Unknown Signal #%d" msgstr "Sein kwaliteit:" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "--Geen reëls in buffer--" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "Woord Substitusie" -#: subst.c:5113 +#: subst.c:5798 #, fuzzy msgid "cannot make child for process substitution" msgstr "Woord Substitusie" -#: subst.c:5158 +#: subst.c:5848 #, fuzzy, c-format msgid "cannot open named pipe %s for reading" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:5160 +#: subst.c:5850 #, fuzzy, c-format msgid "cannot open named pipe %s for writing" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:5178 +#: subst.c:5873 #, fuzzy, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "--Geen reëls in buffer--" + +#: subst.c:6083 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "Woord Substitusie" -#: subst.c:5414 +#: subst.c:6127 #, fuzzy msgid "cannot make child for command substitution" msgstr "Woord Substitusie" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "" - -#: subst.c:6320 subst.c:6335 -#, fuzzy, c-format -msgid "%s: substring expression < 0" -msgstr "ongeldige uitdrukking" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, fuzzy, c-format msgid "%s: bad substitution" msgstr "Woord Substitusie" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: illegal option -- %c\n" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "%s: illegal option -- %c\n" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "" + +#: subst.c:7089 subst.c:7104 +#, fuzzy, c-format +msgid "%s: substring expression < 0" +msgstr "ongeldige uitdrukking" + +#: subst.c:8450 #, fuzzy, c-format msgid "$%s: cannot assign in this way" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8421 +#: subst.c:9349 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "--Geen reëls in buffer--" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "" @@ -1877,124 +2008,124 @@ msgstr "argument verwag\n" msgid "%s: integer expression expected" msgstr "%s: heelgetal-uitdrukking is verwag\n" -#: test.c:264 +#: test.c:265 #, fuzzy msgid "`)' expected" msgstr "')' is verwag\n" -#: test.c:266 +#: test.c:267 #, fuzzy, c-format msgid "`)' expected, found %s" msgstr "')' is verwag, maar %s gevind\n" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, fuzzy, c-format msgid "%s: unary operator expected" msgstr "%s: unitêre operator is verwag\n" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, fuzzy, c-format msgid "%s: binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: test.c:860 +#: test.c:869 #, fuzzy msgid "missing `]'" msgstr "Ontbrekende '>'" -#: trap.c:217 +#: trap.c:224 #, fuzzy msgid "invalid signal number" msgstr "Die sein nommer wat was gevang het" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: variables.c:3646 +#: variables.c:3043 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5257 +#: variables.c:5619 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: kan nie %s skep nie" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "" #: version.c:47 version2.c:47 @@ -2016,10 +2147,6 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2040,387 +2167,370 @@ msgstr "" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: kan nie %s skep nie" -#: builtins.c:43 +#: builtins.c:45 #, fuzzy msgid "alias [-p] [name[=value] ... ]" msgstr "E418: Ongeldige waarde: %s" -#: builtins.c:47 +#: builtins.c:49 #, fuzzy msgid "unalias [-a] name [name ...]" msgstr "Volle Naam:" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -#: builtins.c:54 +#: builtins.c:56 #, fuzzy msgid "break [n]" msgstr "Breek" -#: builtins.c:56 +#: builtins.c:58 #, fuzzy msgid "continue [n]" msgstr "Gaan voort" -#: builtins.c:58 +#: builtins.c:60 #, fuzzy msgid "builtin [shell-builtin [arg ...]]" msgstr "Ontfouting %1 (met arg %2 %3)" -#: builtins.c:61 +#: builtins.c:63 #, fuzzy msgid "caller [expr]" msgstr "/Opsies/Toets" -#: builtins.c:64 +#: builtins.c:66 #, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "init_cache_dir %s... " -#: builtins.c:66 +#: builtins.c:68 #, fuzzy msgid "pwd [-LP]" msgstr "miniserv.pl is gestop\n" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "" - -#: builtins.c:72 -msgid "false" -msgstr "" - -#: builtins.c:74 +#: builtins.c:76 #, fuzzy msgid "command [-pVv] command [arg ...]" msgstr "Gebruik so: %s [OPSIE] [BEVEL [ARG]...]\n" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "E418: Ongeldige waarde: %s" -#: builtins.c:78 +#: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "E418: Ongeldige waarde: %s" -#: builtins.c:80 +#: builtins.c:82 #, fuzzy msgid "local [option] name[=value] ..." msgstr "Name=Plaaslike Netwerk" -#: builtins.c:83 +#: builtins.c:85 #, fuzzy msgid "echo [-neE] [arg ...]" msgstr "Ontfouting %1 (met arg %2 %3)" -#: builtins.c:87 +#: builtins.c:89 #, fuzzy msgid "echo [-n] [arg ...]" msgstr "Konfigureer Eggo" -#: builtins.c:90 +#: builtins.c:92 #, fuzzy msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "Teruglus lêernaam:" -#: builtins.c:92 +#: builtins.c:94 #, fuzzy msgid "eval [arg ...]" msgstr "Ontfouting %1 (met arg %2 %3)" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "" -#: builtins.c:98 +#: builtins.c:100 #, fuzzy msgid "exit [n]" msgstr "Verlaat" -#: builtins.c:100 +#: builtins.c:102 #, fuzzy msgid "logout [n]" msgstr "Afteken" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" -#: builtins.c:107 +#: builtins.c:109 #, fuzzy msgid "fg [job_spec]" msgstr "Kort Spesifikasie werkvoorbeeld" -#: builtins.c:111 +#: builtins.c:113 #, fuzzy msgid "bg [job_spec ...]" msgstr "Kort Spesifikasie werkvoorbeeld" -#: builtins.c:114 +#: builtins.c:116 #, fuzzy msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "Teruglus lêernaam:" -#: builtins.c:117 +#: builtins.c:119 #, fuzzy msgid "help [-dms] [pattern ...]" msgstr "enige patroon" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -#: builtins.c:134 +#: builtins.c:136 #, fuzzy msgid "let arg [arg ...]" msgstr "Kom ons begin!" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" -#: builtins.c:138 +#: builtins.c:140 #, fuzzy msgid "return [n]" msgstr "Terug Adres - 3/4 x 2\"" -#: builtins.c:140 +#: builtins.c:142 #, fuzzy msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "Gebruik so: %s [OPSIE]... [-] [GEBRUIKER [ARG]...]\n" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "Volle Naam:" -#: builtins.c:144 +#: builtins.c:146 #, fuzzy msgid "export [-fn] [name[=value] ...] or export -p" msgstr "Bediener of domein naam:" -#: builtins.c:146 +#: builtins.c:148 #, fuzzy msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "Bediener of domein naam:" -#: builtins.c:148 +#: builtins.c:150 #, fuzzy msgid "shift [n]" msgstr "Verlaat" -#: builtins.c:150 +#: builtins.c:152 #, fuzzy msgid "source filename [arguments]" msgstr "Kies Lêernaam" -#: builtins.c:152 +#: builtins.c:154 #, fuzzy msgid ". filename [arguments]" msgstr ". lêernaam" -#: builtins.c:155 +#: builtins.c:157 #, fuzzy msgid "suspend [-f]" msgstr "|uitsit}\n" -#: builtins.c:158 +#: builtins.c:160 #, fuzzy msgid "test [expr]" msgstr "/Opsies/Toets" -#: builtins.c:160 +#: builtins.c:162 #, fuzzy msgid "[ arg... ]" msgstr "Arg %1" -#: builtins.c:162 -#, fuzzy -msgid "times" -msgstr "Herhaal %1 times " - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "" -#: builtins.c:166 +#: builtins.c:168 #, fuzzy msgid "type [-afptP] name [name ...]" msgstr "Tipe die naam van die %1 speler." -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "Grootte beperk (Kb):" -#: builtins.c:172 +#: builtins.c:174 #, fuzzy msgid "umask [-p] [-S] [mode]" msgstr "Belmetode" -#: builtins.c:175 +#: builtins.c:177 #, fuzzy msgid "wait [-n] [id ...]" msgstr "Wag:" -#: builtins.c:179 +#: builtins.c:181 #, fuzzy msgid "wait [pid ...]" msgstr "Wag:" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "" -#: builtins.c:196 +#: builtins.c:198 #, fuzzy msgid "until COMMANDS; do COMMANDS; done" msgstr "Bediener of domein naam:" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "" -#: builtins.c:200 +#: builtins.c:202 #, fuzzy msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "Bediener of domein naam:" -#: builtins.c:202 +#: builtins.c:204 #, fuzzy msgid "{ COMMANDS ; }" msgstr "Opdragte" -#: builtins.c:204 +#: builtins.c:206 #, fuzzy msgid "job_spec [&]" msgstr "Kort Spesifikasie werkvoorbeeld" -#: builtins.c:206 +#: builtins.c:208 #, fuzzy msgid "(( expression ))" msgstr "Bools uitdrukking verwag" -#: builtins.c:208 +#: builtins.c:210 #, fuzzy msgid "[[ expression ]]" msgstr "Bools uitdrukking verwag" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "" -#: builtins.c:213 +#: builtins.c:215 #, fuzzy msgid "pushd [-n] [+N | -N | dir]" msgstr "Tydelike gids:" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "" -#: builtins.c:224 +#: builtins.c:226 #, fuzzy msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "Volle Naam:" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -#: builtins.c:237 +#: builtins.c:239 #, fuzzy msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "Tipe die naam van die %1 speler." -#: builtins.c:240 +#: builtins.c:242 msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2432,7 +2542,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2440,17 +2550,17 @@ msgid "" " defined." msgstr "" -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2484,14 +2594,15 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2502,7 +2613,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2513,7 +2624,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2527,7 +2638,7 @@ msgid "" " not a shell builtin.." msgstr "" -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2543,7 +2654,7 @@ msgid "" " is invalid." msgstr "" -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2566,16 +2677,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2588,13 +2699,13 @@ msgid "" " -P is used; non-zero otherwise." msgstr "" -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2604,7 +2715,7 @@ msgid "" " cannot be read." msgstr "" -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2614,7 +2725,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2622,7 +2733,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2630,7 +2741,7 @@ msgid "" " Always fails." msgstr "" -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2640,16 +2751,16 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2659,9 +2770,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2689,14 +2800,14 @@ msgid "" " assignment error occurs." msgstr "" -#: builtins.c:527 +#: builtins.c:530 msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2711,7 +2822,7 @@ msgid "" " assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2737,15 +2848,15 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2758,7 +2869,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2785,7 +2896,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2797,7 +2908,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2838,7 +2949,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2849,8 +2960,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2861,7 +2972,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -2869,7 +2980,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2878,7 +2989,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2908,7 +3019,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2920,7 +3031,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2934,7 +3045,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -2943,22 +3054,22 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -2970,7 +3081,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2980,7 +3091,7 @@ msgid "" "given." msgstr "" -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2989,23 +3100,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3014,7 +3125,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3024,7 +3135,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3038,7 +3149,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3048,14 +3159,14 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3067,7 +3178,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3077,7 +3189,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3122,7 +3234,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3143,27 +3255,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3173,7 +3286,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3185,7 +3298,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3253,7 +3366,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3270,7 +3384,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3280,7 +3394,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3292,7 +3406,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3311,7 +3425,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3323,9 +3437,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3333,7 +3446,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3344,7 +3457,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3358,7 +3471,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3372,7 +3485,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3436,9 +3549,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3455,7 +3568,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3463,7 +3576,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3475,7 +3588,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3519,7 +3632,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3528,18 +3641,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3549,7 +3662,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3567,6 +3680,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3578,7 +3692,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3596,7 +3711,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3614,7 +3729,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3634,7 +3749,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3649,7 +3764,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3662,7 +3777,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3679,7 +3794,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3699,7 +3814,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3715,7 +3830,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3726,7 +3841,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3747,7 +3862,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3758,7 +3873,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3769,7 +3884,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3779,10 +3894,10 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3796,7 +3911,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3807,7 +3922,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3821,7 +3936,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3832,7 +3947,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3860,7 +3975,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3914,7 +4029,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -3924,19 +4039,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3945,7 +4060,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -3954,16 +4069,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3972,7 +4087,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -3983,25 +4098,25 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -4022,7 +4137,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4039,15 +4154,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -4061,7 +4176,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4074,11 +4189,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -4088,7 +4203,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4101,7 +4216,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4132,7 +4247,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4143,20 +4258,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4173,13 +4289,20 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#~ msgid ":" +#~ msgstr ":" + +#, fuzzy +#~ msgid "times" +#~ msgstr "Herhaal %1 times " + #, fuzzy #~ msgid "wait [pid]" #~ msgstr "Wag:" @@ -4188,9 +4311,6 @@ msgstr "" #~ msgid " new current working directory." #~ msgstr "Nuutste gebruik word werksaam gids" -#~ msgid "top directory." -#~ msgstr "boonste lêergids." - #, fuzzy #~ msgid "Obsolete. See `declare'." #~ msgstr "Verkeerde verklaring tipe" diff --git a/po/bash.pot b/po/bash.pot index 1ef1208..e2d353f 100644 --- a/po/bash.pot +++ b/po/bash.pot @@ -8,80 +8,85 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\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" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "" @@ -90,345 +95,373 @@ msgstr "" msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "" -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +msgid "null directory" +msgstr "" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "" -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "" -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "" -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "" -#: builtins/common.c:274 -#, c-format -msgid "%s out of range" -msgstr "" - #: builtins/common.c:282 #, c-format -msgid "%s: no such job" +msgid "%s out of range" msgstr "" #: builtins/common.c:290 #, c-format +msgid "%s: no such job" +msgstr "" + +#: builtins/common.c:298 +#, c-format msgid "%s: no job control" msgstr "" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "" @@ -447,35 +480,35 @@ msgstr "" msgid "hashing disabled" msgstr "" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -487,15 +520,20 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, c-format +msgid "%s: invalid timestamp" +msgstr "" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -509,113 +547,113 @@ msgstr "" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -639,7 +677,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -664,7 +702,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -685,143 +723,153 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr "" @@ -835,82 +883,103 @@ msgstr "" msgid "Aborting..." msgstr "" -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" @@ -955,37 +1024,37 @@ msgstr "" msgid "missing `)'" msgstr "" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" @@ -1000,148 +1069,148 @@ msgstr "" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "" -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "" @@ -1193,17 +1262,17 @@ msgstr "" msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1227,7 +1296,7 @@ msgstr "" msgid "%s: bad network path specification" msgstr "" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "" @@ -1264,263 +1333,308 @@ msgstr "" msgid "The mail in %s has been read\n" msgstr "" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "" + +#: shell.c:1777 msgid "I have no name!" msgstr "" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1694,88 +1808,102 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5376 +#: subst.c:5959 +msgid "command substitution: ignored null byte in input" +msgstr "" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "" @@ -1789,121 +1917,121 @@ msgstr "" msgid "%s: integer expression expected" msgstr "" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "" -#: variables.c:3646 +#: variables.c:3043 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "" #: version.c:47 version2.c:47 @@ -1925,10 +2053,6 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1949,338 +2073,322 @@ msgstr "" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "" -#: builtins.c:68 -msgid ":" -msgstr "" - -#: builtins.c:70 -msgid "true" -msgstr "" - -#: builtins.c:72 -msgid "false" -msgstr "" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +#: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "" -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "" -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr "" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "" -#: builtins.c:162 -msgid "times" -msgstr "" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "" -#: builtins.c:240 +#: builtins.c:242 msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2292,7 +2400,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2300,17 +2408,17 @@ msgid "" " defined." msgstr "" -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2344,14 +2452,15 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2362,7 +2471,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2373,7 +2482,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2387,7 +2496,7 @@ msgid "" " not a shell builtin.." msgstr "" -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2403,7 +2512,7 @@ msgid "" " is invalid." msgstr "" -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2426,16 +2535,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2448,13 +2557,13 @@ msgid "" " -P is used; non-zero otherwise." msgstr "" -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2464,7 +2573,7 @@ msgid "" " cannot be read." msgstr "" -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2474,7 +2583,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2482,7 +2591,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2490,7 +2599,7 @@ msgid "" " Always fails." msgstr "" -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2500,16 +2609,16 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2519,9 +2628,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2549,14 +2658,14 @@ msgid "" " assignment error occurs." msgstr "" -#: builtins.c:527 +#: builtins.c:530 msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2571,7 +2680,7 @@ msgid "" " assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2597,15 +2706,15 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2618,7 +2727,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2645,7 +2754,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2657,7 +2766,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2698,7 +2807,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2709,8 +2818,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2721,7 +2830,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -2729,7 +2838,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2738,7 +2847,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2768,7 +2877,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2780,7 +2889,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2794,7 +2903,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -2803,22 +2912,22 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -2830,7 +2939,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2840,7 +2949,7 @@ msgid "" "given." msgstr "" -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2849,23 +2958,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -2874,7 +2983,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -2884,7 +2993,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -2898,7 +3007,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2908,14 +3017,14 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -2927,7 +3036,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -2937,7 +3047,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -2982,7 +3092,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3003,27 +3113,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3033,7 +3144,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3045,7 +3156,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3113,7 +3224,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3130,7 +3242,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3140,7 +3252,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3152,7 +3264,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3171,7 +3283,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3183,9 +3295,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3193,7 +3304,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3204,7 +3315,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3218,7 +3329,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3232,7 +3343,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3296,9 +3407,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3315,7 +3426,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3323,7 +3434,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3335,7 +3446,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3379,7 +3490,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3388,18 +3499,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3409,7 +3520,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3427,6 +3538,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3438,7 +3550,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3456,7 +3569,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3474,7 +3587,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3494,7 +3607,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3509,7 +3622,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3522,7 +3635,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3539,7 +3652,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3559,7 +3672,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3575,7 +3688,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3586,7 +3699,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3607,7 +3720,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3618,7 +3731,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3629,7 +3742,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3639,10 +3752,10 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3656,7 +3769,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3667,7 +3780,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3681,7 +3794,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3692,7 +3805,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3720,7 +3833,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3774,7 +3887,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -3784,19 +3897,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3805,7 +3918,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -3814,16 +3927,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3832,7 +3945,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -3843,25 +3956,25 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -3882,7 +3995,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3899,15 +4012,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -3921,7 +4034,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3934,11 +4047,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -3948,7 +4061,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -3961,7 +4074,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -3992,7 +4105,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4003,20 +4116,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4033,7 +4147,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/bg.gmo b/po/bg.gmo index 7721c82e864f2534d5ee41bdf1189bfbe5074f25..d30439946942e8b7784acadb2bda778383674a5b 100644 GIT binary patch delta 15575 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 delta 27446 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 diff --git a/po/bg.po b/po/bg.po index 1aa9f0c..eb9236c 100644 --- a/po/bg.po +++ b/po/bg.po @@ -1,88 +1,98 @@ # Bulgarian translation of bash po-file. -# Copyright (C) 2007, 2010, 2012, 2013, 2014 Free Software Foundation, Inc. +# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Alexander Shopov , 2007, 2010, 2012, 2013, 2014. +# Alexander Shopov , 2007, 2010, 2012, 2013, 2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash-4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-01-23 16:04-0500\n" -"PO-Revision-Date: 2014-02-12 07:59+0200\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-29 08:17+0200\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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "грешен Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð° маÑив" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: маÑивът не може да бъде преобразуван към речник" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: грешно име на ключ в речник" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не може да Ñе приÑвоÑва на нецифров индекÑ" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: при приÑвоÑване към речник трÑбва да Ñе използва индекÑ" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не може да Ñе Ñъздаде: %s" -#: bashline.c:3971 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "изпълнение на команда на Ð®Ð½Ð¸ÐºÑ Ð¾Ñ‚ bash: не може да Ñе открие подредбата на\n" "функциите на клавишите за командата" -#: bashline.c:4058 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: първиÑÑ‚ непразен знак не е „\"“" -#: bashline.c:4087 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "в %2$s липÑва затварÑщ знак „%1$c“" -#: bashline.c:4121 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: разделителÑÑ‚ „:“ липÑва" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за „%s“" +msgstr "" +"замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за „%s“" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за %d елемента" +msgstr "" +"замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за %d " +"елемента" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за „%s“" +msgstr "" +"замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за „%s“" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: грешно име на Ñиноним" @@ -91,45 +101,45 @@ msgstr "„%s“: грешно име на Ñиноним" msgid "line editing not enabled" msgstr "редактирането на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´ не е включено" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: грешно име на подредбата на функциите на клавишите" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не може да Ñе прочете: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "„%s“: не може да Ñе премахне приÑвоÑване" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: име на непозната функциÑ" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s не е зададена на никой клавиш.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s може да Ñе извика чрез " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "брой цикли" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "валидно Ñамо за циклите Ñ â€žfor“, „while“ и „until“" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -139,300 +149,329 @@ msgstr "" " \n" " Без ИЗРÐЗ връща " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "Променливата „HOME“ не е зададена" -#: builtins/cd.def:327 builtins/common.c:166 test.c:855 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "прекалено много аргументи" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "нÑма друга директориÑ" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "Променливата „OLDPWD“ не е зададена" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "ред %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "предупреждение: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: употреба: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: опциÑта изиÑква аргумент" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: изиÑква Ñе чиÑлов аргумент" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: не е открит" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: грешна опциÑ" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: грешно име на опциÑ" -#: builtins/common.c:228 general.c:234 general.c:239 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: грешен идентификатор" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "грешно оÑмично чиÑло" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "грешно шеÑтнайÑетично чиÑло" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "грешно чиÑло" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: грешно указване на Ñигнал" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: грешен идентификатор на Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸Ð»Ð¸ задача" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: променлива Ñ Ð¿Ñ€Ð°Ð²Ð° Ñамо за четене" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "аргументът" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: нÑма такава задача" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: нÑма управление на задачите" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "нÑма управление на задачите" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: ограничена обвивка" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "ограничена обвивка" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: не е команда вградена в обвивката" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "грешка при запиÑ: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "грешка при задаване на атрибутите на терминала: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "грешка при получаване на атрибутите на терминала: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: грешка при получаване на текущата директориÑ: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: нееднозначно указана задача" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "помощта не е включена в тази верÑиÑ" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: грешно име на дейÑтвие" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: не е указано допиÑване" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "предупреждение: опциÑта „-F“ може да не работи Ñпоред очакваниÑта ви" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "предупреждение: опциÑта „-C“ може да не работи Ñпоред очакваниÑта ви" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "в момента не Ñе изпълнÑва Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° допиÑване" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "може да Ñе използва Ñамо във функциÑ" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: променливата-указател не може да е маÑив" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: променливата-указател не може да Ñочи към Ñебе Ñи" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: цикъл в променливите-указатели" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: неправилно име за променлива-указател" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "„-f“ не може да Ñе използва за Ñъздаването на функции" -#: builtins/declare.def:410 execute_cmd.c:5349 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð° Ñамо за четене" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: ÑÑŠÑтавното приÑвоÑване на маÑив чрез цитат е оÑтарÑло" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: променливите за маÑиви не могат да Ñе унищожават така" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: речник не може да Ñе преобразува в маÑив" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "липÑва възможноÑÑ‚ за динамично зареждане" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "ÑподелениÑÑ‚ обект „%s“ не може да бъде зареден: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "„%s“ не може да Ñе открие в ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "зареждащата Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° „%s“ върна грешка (%d): не е зареден" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: не е зареден динамично" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: не може да Ñе изтрие: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5196 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: е директориÑ" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: не е обикновен файл" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: файлът е прекалено голÑм" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: двоичниÑÑ‚ файл не може да бъде изпълнен" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не може да Ñе изпълни: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "изход\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "това не е входна обвивка: използвайте „exit“" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Има Ñпрени задачи.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Има изпълнÑвани задачи.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "не е открита команда" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "указване на иÑториÑта" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не може да Ñе отвори временен файл: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "текуща" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "задача %d е Ñтартирана без управление на задачите" @@ -451,36 +490,37 @@ msgstr "%s: опциÑта изиÑква аргумент — %c\n" msgid "hashing disabled" msgstr "хеширането е изключено" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: таблицата Ñ Ñ…ÐµÑˆÐ¾Ð²Ðµ е празна\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "Ñъвпад.\tкоманда\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Команди на обвивката, които напаÑват на ключовата дума „" msgstr[1] "Команди на обвивката, които напаÑват на ключовите думи „" -#: builtins/help.def:182 +#: builtins/help.def:187 #, 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 "" "нÑма теми в помощта, които да отговарÑÑ‚ на „%s“. Опитайте Ñ\n" "„help help“, „man -k %s“ или „info %s“." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не може да Ñе отвори: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -495,20 +535,26 @@ msgstr "" "Ðапишете „help“, за да видите ÑпиÑъка.\n" "Ðапишете „help ИМЕ_ÐÐ_ФУÐКЦИЯ“ за повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Ñъответната функциÑ.\n" "Ðапишете „info bash“ за повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° обвивката като цÑло.\n" -"Ðапишете „man -k“ или „info“ за повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° командите извън ÑпиÑъка.\n" +"Ðапишете „man -k“ или „info“ за повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° командите извън " +"ÑпиÑъка.\n" "\n" "Знакът звездичка „*“ до името на команда означава, че Ñ‚Ñ Ðµ изключена.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "не може да Ñе ползва едновременно повече от една от опциите „-anrw“" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð² иÑториÑта" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: грешен аргумент" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: неуÑпешно замеÑтване чрез иÑториÑта" @@ -522,113 +568,113 @@ msgstr "%s: неуÑпешно извикване на inlib" msgid "no other options allowed with `-x'" msgstr "не е позволена друга Ð¾Ð¿Ñ†Ð¸Ñ Ñ â€ž-x“" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументите трÑбва да Ñа идентификатори на процеÑи или задачи" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "ÐеизвеÑтна грешка" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "очаква Ñе израз" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: не е маÑив" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: грешно указване на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: грешен файлов деÑкриптор: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: грешен номер на ред" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: грешен начален Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° маÑив" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: грешно количеÑтво редове за обработка" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "празно име на променлива за маÑив" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "изиÑква Ñе поддръжка на променливи за маÑиви" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "„%s“: липÑва форматиращ знак" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: грешен формат на времето" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: грешен форматиращ знак" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "предупреждение: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "неуÑпешен анализ на форма̀та: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "липÑва шеÑтнадеÑетична цифра за \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "липÑва цифра за Уникод за \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "нÑма друга директориÑ" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: грешен аргумент" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "«нÑма текуща директориÑ»" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "Ñтекът Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸ е празен" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° Ñтека Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 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,10 +689,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Извежда ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ запомнените директории. СпиÑъкът Ñе попълва чрез\n" @@ -662,13 +710,15 @@ msgstr "" " Ñтека.\n" "\n" " Ðргументи: \n" -" +N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка отпечатан от командата „dirs“,\n" +" +N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка отпечатан от командата " +"„dirs“,\n" " когато е Ñтартирана без опции. Брои Ñе от 0.\n" "\n" -" -N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка отпечатан от командата „dirs“,\n" +" -N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка отпечатан от командата " +"„dirs“,\n" " когато е Ñтартирана без опции. Брои Ñе от 0." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -697,24 +747,30 @@ msgstr "" " аргументи ÑÐ¼ÐµÐ½Ñ Ð½Ð°Ð¹-горните две директории.\n" " \n" " Опции:\n" -" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ добавÑнето на\n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ добавÑнето " +"на\n" " директории към Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n" "\n" " Ðргументи:\n" -" +N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от лÑвата\n" -" Ñтрана на ÑпиÑъка, отпечатан от командата „dirs“ като Ñе почва от 0)\n" +" +N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от " +"лÑвата\n" +" Ñтрана на ÑпиÑъка, отпечатан от командата „dirs“ като Ñе почва от " +"0)\n" " да е най-отгоре.\n" " \n" -" -N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от дÑÑната\n" -" Ñтрана на ÑпиÑъка, отпечатан от командата „dirs“ като Ñе почва от 0)\n" +" -N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от " +"дÑÑната\n" +" Ñтрана на ÑпиÑъка, отпечатан от командата „dirs“ като Ñе почва от " +"0)\n" " да е най-отгоре.\n" "\n" -" dir Ð”Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð  най-отгоре в Ñтека на директориите, като Ñ Ð¿Ñ€Ð°Ð²Ð¸ новата\n" +" dir Ð”Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð  най-отгоре в Ñтека на директориите, като Ñ Ð¿Ñ€Ð°Ð²Ð¸ " +"новата\n" " текуща работна директориÑ.\n" " \n" " Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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,11 +790,13 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Маха директории от Ñтека Ñ Ñ‚ÑÑ…. Без аргументи премахва поÑледната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð²\n" +"Маха директории от Ñтека Ñ Ñ‚ÑÑ…. Без аргументи премахва поÑледната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ " +"в\n" " Ñтека и влиза в новата поÑледна директориÑ.\n" "\n" " Опции:\n" -" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ махането на\n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ махането " +"на\n" " Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¾Ñ‚ Ñтека — Ñамо той Ñе променÑ.\n" "\n" " Ðргументи:\n" @@ -746,149 +804,163 @@ msgstr "" " командата „dirs“, като Ñе брои от 0. Ðапр.: „popd +0“ премахва\n" " първата директориÑ, „popd +1“ - втората.\n" "\n" -" -N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отдÑÑно в ÑпиÑъка отпечатан от\n" +" -N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отдÑÑно в ÑпиÑъка отпечатан " +"от\n" " командата „dirs“, като Ñе брои от 0. Ðапр.: „popd -0“ премахва\n" " поÑледната директориÑ, „popd -1“ - предпоÑледната.\n" "\n" " Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: грешно указване на изтичането на времето" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "грешка при четене: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" -msgstr "„return“ е възможен Ñамо от Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ изпълнен в текущата обвивка Ñкрипт" +msgstr "" +"„return“ е възможен Ñамо от Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ изпълнен в текущата обвивка Ñкрипт" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" -msgstr "не може едновременно да Ñе премахват задаваниÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸ променлива" +msgstr "" +"не може едновременно да Ñе премахват задаваниÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸ променлива" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: не може да Ñе премахне" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не може да Ñе премахне: %s е Ñамо за четене" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: не е променлива за маÑив" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: не е функциÑ" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: не може да Ñе изнеÑе" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "брой на премеÑтваниÑта" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" -msgstr "не може едновременно да Ñе задават и да Ñе премахват опции на обвивката" +msgstr "" +"не може едновременно да Ñе задават и да Ñе премахват опции на обвивката" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: грешно име на Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° обвивката" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "изиÑква Ñе аргумент име на файл" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: файлът не е открит" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "не може да бъде временно ÑпрÑна" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "входната обвивка не може да бъде временно ÑпрÑна" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s е Ñиноним на „%s“\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s е ключова дума на обвивката\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s е функциÑ\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s е Ñпециална, вградена команда в обвивката\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s е вградена команда в обвивката\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s е %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s е хеширан (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: грешен аргумент за ограничение" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "„%c“: грешна команда" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ограничението не може да бъде получено: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "ограничение" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ограничението не може да бъде променено: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "оÑмично чиÑло" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "„%c“: неправилен оператор за опиÑателен режим" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format 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:348 error.c:350 error.c:352 msgid " line " msgstr " ред " @@ -902,82 +974,106 @@ msgstr "поÑледна команда: %s\n" msgid "Aborting..." msgstr "ПреуÑтановÑване…" -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "ИÐФОРМÐЦИЯ: " + +#: error.c:463 msgid "unknown command error" msgstr "неизвеÑтна грешка в команда" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "грешен вид команда" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "грешна връзка" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "грешен преход" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: променлива без ÑтойноÑÑ‚" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" -msgstr "\aвремето за изчакване на вход изтече: Ñледва автоматично излизане от ÑиÑтемата\n" +msgstr "" +"\aвремето за изчакване на вход изтече: Ñледва автоматично излизане от " +"ÑиÑтемата\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "ÑтандартниÑÑ‚ вход не може да бъде пренаÑочен от „/dev/null“: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "в променливата $TIMEFORMAT: „%c“: грешен форматиращ знак" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "грешка в програмен канал" -#: execute_cmd.c:4374 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: превишено е макÑималното ниво на влагане на „eval“ (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: превишено е макÑималното ниво на влагане на код (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: превишено е макÑималното ниво на влагане на функции (%d)" -#: execute_cmd.c:4872 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: ограничение: в имената на командите не може да приÑÑŠÑтва знакът „/“" +msgstr "" +"%s: ограничение: в имената на командите не може да приÑÑŠÑтва знакът „/“" -#: execute_cmd.c:4961 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: командата не е открита" -#: execute_cmd.c:5194 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5231 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: лош интерпретатор" -#: execute_cmd.c:5268 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: двоичниÑÑ‚ файл не може да бъде изпълнен: %s" -#: execute_cmd.c:5340 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“ е вградена команда в обвивката" -#: execute_cmd.c:5392 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "файловиÑÑ‚ деÑкриптор %d не може да Ñе дублира като деÑкриптор %d" @@ -1022,197 +1118,203 @@ msgstr "очаква Ñе идентификатор Ñлед предварит msgid "missing `)'" msgstr "липÑва „)“" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "Ñинтактична грешка: очаква Ñе оператор" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "Ñинтактична грешка: грешен аритметичен оператор" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (грешната лекÑема е „%s“)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "грешна аритметична оÑнова на бройна ÑиÑтема" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "ÑтойноÑтта е прекалено голÑма за оÑновата" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: грешка в израза\n" -#: general.c:61 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: нÑма доÑтъп до родителÑките директории" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не може да Ñе изчиÑти режимът без забавÑне на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор %d" -#: input.c:269 +#: input.c:271 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "не може да Ñе задели нов файлов деÑкриптор за вход на bash от деÑкриптор %d" +msgstr "" +"не може да Ñе задели нов файлов деÑкриптор за вход на bash от деÑкриптор %d" -#: input.c:277 +#: input.c:279 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "запазване на входа на bash: вече ÑъщеÑтвува буфер за Ð½Ð¾Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² деÑкриптор %d" +msgstr "" +"запазване на входа на bash: вече ÑъщеÑтвува буфер за Ð½Ð¾Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² деÑкриптор " +"%d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "" "Ñтартиране на програмен канал: не може да Ñе комуникира Ñ Ð²Ð¾Ð´Ð°Ñ‡Ð° на канала\n" "(pgrp pipe)" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "ÑтартираниÑÑ‚ Ð¿Ñ€Ð¾Ñ†ÐµÑ %d е в работещата задача %d" +msgstr "ÑтартираниÑÑ‚ Ð¿Ñ€Ð¾Ñ†ÐµÑ %d е в изпълнÑваната задача %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "изтриване на ÑпрÑната задача %d в групата процеÑи %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "добавÑне на процеÑ: процеÑÑŠÑ‚ %5ld (%s) е в Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð»" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "добавÑне на процеÑ: процеÑÑŠÑ‚ %5ld (%s) е отбелÑзан като още жив" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" -msgstr "опиÑателен идентификатор на процеÑ: %ld: нÑма такъв идентификатор на процеÑ" +msgstr "" +"опиÑателен идентификатор на процеÑ: %ld: нÑма такъв идентификатор на процеÑ" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Завършен" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "СпрÑн" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "СпрÑн (%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "ИзпълнÑван" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Завършен (%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Изход %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Ðепознато ÑÑŠÑтоÑние" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(паметта е разтоварена)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "дъщерниÑÑ‚ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñмени групата при изпълнение (от %ld на %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "изчакване: процеÑÑŠÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %ld не е дъщерен на тази обвивка" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "изчакване: липÑват данни за Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "изчакване на задача: задачата %d е ÑпрÑна" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: задачата е приключила" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: задача %d вече е във фонов режим" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "изчакване на дъщерен процеÑ: включване на незабавното излизане от функциÑта\n" "чрез WNOHANG, за да Ñе избегне недефиниран блок" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: ред %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (паметта е разтоварена)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(работната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ðµ: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: неуÑпешно изпълнение на getpgrp" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: диÑциплина на линиÑта" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" -msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: задаване на група при изпълнение (setpgid)" +msgstr "" +"Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: задаване на група при изпълнение " +"(setpgid)" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "групата на процеÑите на терминала не може да бъде зададена (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "в тази обвивка нÑма управление на задачите" @@ -1236,11 +1338,13 @@ msgstr "непознат" #: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" -msgstr "заделÑне на памет: блок в ÑпиÑъка ÑÑŠÑ Ñвободни блокове е зает или неподходÑщ" +msgstr "" +"заделÑне на памет: блок в ÑпиÑъка ÑÑŠÑ Ñвободни блокове е зает или неподходÑщ" #: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" -msgstr "изчиÑтване на памет: извикано е Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² аргумент, който вече е изчиÑтен" +msgstr "" +"изчиÑтване на памет: извикано е Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² аргумент, който вече е изчиÑтен" #: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" @@ -1254,7 +1358,8 @@ msgstr "" #: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" -msgstr "изчиÑтване на памет: къÑовете на началната и крайната облаÑти Ñе различават" +msgstr "" +"изчиÑтване на памет: къÑовете на началната и крайната облаÑти Ñе различават" #: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" @@ -1270,17 +1375,18 @@ msgstr "" msgid "realloc: start and end chunk sizes differ" msgstr "презаделÑне: къÑовете на началната и крайната облаÑти Ñе различават" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "региÑтриране на презаделÑне: таблицата за заделÑниÑта е пълна Ñ FIND_ALLOC?\n" +msgstr "" +"региÑтриране на презаделÑне: таблицата за заделÑниÑта е пълна Ñ FIND_ALLOC?\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "региÑтриране на презаделÑне: %p вече е в таблицата като заделен?\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "региÑтриране на Ñвободни: %p вече е в таблицата като Ñвободен?\n" @@ -1304,7 +1410,7 @@ msgstr "%s: неправилна уÑлуга" msgid "%s: bad network path specification" msgstr "%s: неправилно указан мрежов път" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "не Ñе поддържат мрежови операции" @@ -1341,224 +1447,269 @@ msgstr "Имате нова поща в $_" msgid "The mail in %s has been read\n" msgstr "Пощата в %s вече е прочетена\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "Ñинтактична грешка: изиÑква Ñе аритметичен израз" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "Ñинтактична грешка: неочакван знак „;“" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "Ñинтактична грешка: „((%s))“" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "вътрешен документ Ñ â€ž<<“: неправилен вид инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "вътрешниÑÑ‚ документ на ред %d е отделен ÑÑŠÑ Ð·Ð½Ð°Ðº за нов ред (а трÑбва да е „%s“)" +msgstr "" +"вътрешниÑÑ‚ документ на ред %d е отделен ÑÑŠÑ Ð·Ð½Ð°Ðº за нов ред (а трÑбва да е „%" +"s“)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "пренаÑочване: инÑтрукциÑта за пренаÑочване „%d“ е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" +msgstr "" +"пренаÑочване: инÑтрукциÑта за пренаÑочване „%d“ е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" -#: parse.y:3273 parse.y:3556 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "превишен е маÑкималниÑÑ‚ брой възможни вътрешни документи" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "неочакван знак за край на файл „EOF“, а Ñе очакваше ÑъответÑтващ знак „%c“" +msgstr "" +"неочакван знак за край на файл „EOF“, а Ñе очакваше ÑъответÑтващ знак „%c“" -#: parse.y:4163 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "неочакван знак за край на файл „EOF“, а Ñе очакваше „]]“" -#: parse.y:4168 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Ñинтактична грешка в уÑловен израз: неочаквана лекÑема „%s“" -#: parse.y:4172 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "Ñинтактична грешка в уÑловен израз" -#: parse.y:4250 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочаквана лекÑема „%s“, а Ñе очакваше знакът „)“" -#: parse.y:4254 +#: parse.y:4501 msgid "expected `)'" msgstr "очакваше Ñе „)“" -#: parse.y:4282 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочакван аргумент „%s“ за унарен уÑловен оператор" -#: parse.y:4286 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "неочакван аргумент за унарен уÑловен оператор" -#: parse.y:4332 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочаквана лекÑема „%s“, очакваше Ñе бинарен уÑловен оператор" -#: parse.y:4336 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "очакваше Ñе бинарен уÑловен оператор" -#: parse.y:4358 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочакван аргумент „%s“ за бинарен уÑловен оператор" -#: parse.y:4362 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "неочакван аргумент за бинарен уÑловен оператор" -#: parse.y:4373 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочаквана лекÑема „%c“ в уÑловна команда" -#: parse.y:4376 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочаквана лекÑема „%s“ в уÑловна команда" -#: parse.y:4380 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочаквана лекÑема %d в уÑловна команда" -#: parse.y:5730 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "Ñинтактична грешка в близоÑÑ‚ до неочакваната лекÑема „%s“" -#: parse.y:5748 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "Ñинтактична грешка в близоÑÑ‚ до „%s“" -#: parse.y:5758 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "Ñинтактична грешка: неочакван край на файл" -#: parse.y:5758 +#: parse.y:6024 msgid "syntax error" msgstr "Ñинтактична грешка" -#: parse.y:5820 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Използвайте „%s“, за да излезете от обвивката.\n" -#: parse.y:5982 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "неочакван знак за край на файл „EOF“, очакваше Ñе знакът „)“" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "допиÑване: функциÑта „%s“ не е открита" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "вмъкване на завършване на команда: %s указване на команда, което е NULL" +msgstr "" +"вмъкване на завършване на команда: %s указване на команда, което е NULL" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "команда за печат: лош конектор „%d“" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: грешен файлов деÑкриптор" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: указател към файл – NULL" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "отпечатване: „%c“: неправилен форматиращ знак" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "файловиÑÑ‚ деÑкриптор е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: двуÑмиÑлено пренаÑочване" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не може да Ñе презапише ÑъщеÑтвуващ файл" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: поради ограничение изходът не може да Ñе пренаÑочи" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не може да Ñе Ñъздаде временен файл за вътрешен документ: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: на променлива не може да Ñе приÑвои файлов деÑкриптор" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" -msgstr "„/dev/(tcp|udp)/host/port“ не Ñе поддържат, ако нÑма поддръжка на мрежа" +msgstr "" +"„/dev/(tcp|udp)/host/port“ не Ñе поддържат, ако нÑма поддръжка на мрежа" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "грешка при пренаÑочване: файловиÑÑ‚ деÑкриптор не може да бъде дублиран" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "не е открита директориÑта „/tmp“. Създайте Ñ!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "„/tmp“ трÑбва да е директориÑ" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: неправилна опциÑ" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" +"идентификаторът на потребител на процеÑа не може да Ñе зададе да е %d,\n" +"ефективниÑÑ‚ идентификатор на потребител на процеÑа е %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" +"идентификаторът на група на процеÑа не може да Ñе зададе да е %d,\n" +"ефективниÑÑ‚ идентификатор на група на процеÑа е %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: е директориÑ" + +#: shell.c:1777 msgid "I have no name!" msgstr "Ðе може да Ñе получи името на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, верÑÐ¸Ñ %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1567,39 +1718,53 @@ msgstr "" "Употреба: %s [дълга Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° GNU] [опциÑ]…\n" " %s [дълга Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° GNU] [опциÑ] файл-Ñкрипт…\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Дълги опции на GNU:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Опции на обвивката:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr " -ilrsD или -c команда, или -O къÑа_Ð¾Ð¿Ñ†Ð¸Ñ (Ñамо при Ñтартиране)\n" +msgstr "" +" -ilrsD или -c команда, или -O къÑа_Ð¾Ð¿Ñ†Ð¸Ñ (Ñамо при Ñтартиране)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr " -%s или -o опциÑ\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените в обвивката команди въведете „%s -c help“.\n" +msgstr "" +"За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените в обвивката команди въведете „%s -c " +"help“.\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "За да докладвате грешки, използвайте командата „bashbug“.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "Интернет Ñтраница на bash: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Помощ за Ñофтуера GNU: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "маÑка за обработката на Ñигнали: %d: грешна операциÑ" @@ -1773,90 +1938,107 @@ msgstr "Ðепознат Ñигнал #" msgid "Unknown Signal #%d" msgstr "Ðепознат Ñигнал #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "лошо замеÑтване: липÑва затварÑщ знак „%s“ в %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: на член от маÑив не може да Ñе приÑвои ÑпиÑък" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "не може да Ñе Ñъздаде програмен канал за замеÑтване на процеÑи" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "не може да Ñе Ñъздаде дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° замеÑтване на процеÑи" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "именуваниÑÑ‚ програмен канал %s не може да Ñе отвори за четене" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "именуваниÑÑ‚ програмен канал %s не може да Ñе отвори за запиÑ" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "именуваниÑÑ‚ програмен канал %s не може да Ñе\n" "дублира като Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "лошо замеÑтване: липÑва затварÑщ знак „`“ в %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "не може да Ñе Ñъздаде програмен канал за замеÑтване на команди" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "не може да Ñе Ñъздаде дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° замеÑтване на команди" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "замеÑтване на команди: каналът не може да Ñе дублира като fd 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: неправилно име за променлива-указател" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: аргументът е „null“ или не е зададен" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: изразът от подниза е < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: лошо замеÑтване" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: грешно непрÑко замеÑтване" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "„%s“: грешно име на променлива" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: аргументът е „null“ или не е зададен" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: изразът от подниза е < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не може да Ñе задава по този начин" -#: subst.c:7917 -msgid "future versions of the shell will force evaluation as an arithmetic substitution" +#: subst.c:8802 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" msgstr "" "бъдещите верÑии на обвивката ще използват изчиÑлÑване като аритметично\n" "замеÑтване" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "лошо замеÑтване: липÑва затварÑщ знак „`“ в %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "нÑма Ñъвпадение: %s" @@ -1870,139 +2052,147 @@ msgstr "очаква Ñе аргумент" msgid "%s: integer expression expected" msgstr "%s: очаква Ñе целочиÑлен израз" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "очаква Ñе „)“" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "очаква Ñе „)“, а е получено %s" -#: test.c:281 test.c:721 test.c:724 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: очаква Ñе унарен оператор" -#: test.c:468 test.c:764 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: очаква Ñе бинарен оператор" -#: test.c:839 +#: test.c:869 msgid "missing `]'" msgstr "липÑва „]“" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "неправилен номер на Ñигнал" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" "Ñтартиране на предÑтоÑщите прихващаниÑ: неправилна ÑтойноÑÑ‚ в\n" "trap_list[%d]: %p" -#: trap.c:375 +#: trap.c:391 #, 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 "" "Ñтартиране на предÑтоÑщите прихващаниÑ: обработката на Ñигнали е SIG_DFL.\n" "%d (%s) е преизпратен на текущата обвивка" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "обработка на прихващаниÑ: неправилен Ñигнал %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "грешка при внаÑÑнето на дефинициÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° „%s“" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "нивото на обвивката (%d) е прекалено голÑмо. Задава Ñе да е 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: цикъл в променливите-указатели" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" -"Ñъздаване на локална променлива: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата облаÑÑ‚\n" +"Ñъздаване на локална променлива: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата " +"облаÑÑ‚\n" "на видимоÑÑ‚" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: на тази променлива не може да Ñе приÑвои ÑтойноÑÑ‚" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: неправилно име за променлива-указател" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" "вÑички локални променливи: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата облаÑÑ‚ на\n" "видимоÑÑ‚" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s: аргументът за низа за изнаÑÑне не трÑбва да е „null“" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "неправилен знак на Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ %d в низа за изнаÑÑне за %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "липÑва „=“ в низа за изнаÑÑне за %s" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -"изваждане на контекÑÑ‚ на променливи: в началото на Ñтруктурата за променливи на\n" +"изваждане на контекÑÑ‚ на променливи: в началото на Ñтруктурата за променливи " +"на\n" "обвивката (shell_variables) е нещо, което не е контекÑÑ‚ на функциÑ" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "" "изваждане на контекÑÑ‚ на променливи: липÑва контекÑÑ‚ за глобални променливи\n" "(global_variables)" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "изваждане на облаÑÑ‚: в началото на Ñтруктурата за променливи на обвивката\n" "(shell_variables) е нещо, което не е временна облаÑÑ‚ в обкръжението" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s не може да Ñе отвори като ФÐЙЛ" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: грешен файлов деÑкриптор за файла за траÑиране" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "ÐвторÑки права (C) 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "ÐвторÑки права (C) 2015 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "Лиценз GPLv3+: ОПЛ на GNU, верÑÐ¸Ñ 3 или по-виÑока \n" +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Лиценз GPLv3+: ОПЛ на GNU, верÑÐ¸Ñ 3 или по-виÑока \n" #: version.c:86 version2.c:86 #, c-format @@ -2017,10 +2207,6 @@ msgstr "Това е Ñвободен Ñофтуер. Можете да го пр msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "ÐÑма ÐИКÐКВИ ГÐРÐÐЦИИ до Ñтепента позволена от закона." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "ÐвторÑки права (C) 2012 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2041,343 +2227,352 @@ msgstr "%s: %s:%d: не могат да Ñе заделÑÑ‚ %lu байта (за msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не могат да Ñе заделÑÑ‚ %lu байта" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [ИМЕ[=СТОЙÐОСТ]…]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] ИМЕ [ИМЕ…]" -#: 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]" +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" "bind [-lpsvPSVX] [-m ПОДРЕДБÐ_ÐÐ_КЛÐВИÐТУРÐТÐ] [-f ИМЕ_ÐÐ_ФÐЙЛ]\n" " [-q ИМЕ] [-u ИМЕ] [-r ПОСЛЕДОВÐТЕЛÐОСТ_ОТ_КЛÐВИШИ]\n" " [-x ПОСЛЕДОВÐТЕЛÐОСТ_ОТ_КЛÐВИШИ:КОМÐÐДÐ_ÐÐ_ОБВИВКÐТÐ]\n" -" [ПОСЛЕДОВÐТЕЛÐОСТ_ОТ_КЛÐВИШИ:КОМÐÐДÐ_ÐÐ_ОБВИВКÐТРили КОМÐÐДÐ_ÐÐ_READLINE]" +" [ПОСЛЕДОВÐТЕЛÐОСТ_ОТ_КЛÐВИШИ:КОМÐÐДÐ_ÐÐ_ОБВИВКÐТРили " +"КОМÐÐДÐ_ÐÐ_READLINE]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [БРОЙ]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [БРОЙ]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [ВГРÐДЕÐÐ_КОМÐÐДР[ÐРГУМЕÐТ…]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [ИЗРÐЗ]" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]] [-@]] [ДИРЕКТОРИЯ]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] команда [ÐРГУМЕÐТ…]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [ИМЕ[=СТОЙÐОСТ]…]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] [ИМЕ[=СТОЙÐОСТ]…]" - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] ИМЕ[=СТОЙÐОСТ]…" + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [ОПЦИЯ] ИМЕ[=СТОЙÐОСТ]…" -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [ÐРГУМЕÐТ…]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [ÐРГУМЕÐТ…]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f ФÐЙЛ] [ÐРГУМЕÐТ…]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [ÐРГУМЕÐТ…]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts ÐИЗ_С_ОПЦИИ ИМЕ [ÐРГУМЕÐТ]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a ИМЕ] [КОМÐÐДР[ÐРГУМЕÐТИ…]] [ПРЕÐÐСОЧВÐÐЕ…]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [ЦИФРОВ_КОД]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [ЦИФРОВ_КОД]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e РЕДÐКТОР] [-lnr] [ПЪРВИ] [ПОСЛЕДЕÐ] или fc -s [ШÐБЛОÐ=ЗÐМЕСТИТЕЛ…] [КОМÐÐДÐ]" +msgstr "" +"fc [-e РЕДÐКТОР] [-lnr] [ПЪРВИ] [ПОСЛЕДЕÐ] или fc -s [ШÐБЛОÐ=ЗÐМЕСТИТЕЛ…] " +"[КОМÐÐДÐ]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [ЗÐДÐЧÐ]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [ЗÐДÐЧÐ…]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p ПЪТ] [-dt] [ИМЕ…]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [ШÐБЛОÐ…]" -#: builtins.c:121 -msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" msgstr "" "history [-c] [-d ОТМЕСТВÐÐЕ] [БРОЙ] или \n" "history -anrw [ИМЕ_ÐÐ_ФÐЙЛ] или\n" "history -ps ÐРГ [ÐРГ…]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [ЗÐДÐЧÐ…] или jobs -x КОМÐÐДР[ÐРГУМЕÐТИ]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [ЗÐДÐЧÐ…]" -#: builtins.c:132 -msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" msgstr "" "kill [-s СИГÐÐЛ | -n ÐОМЕР_ÐÐ_СИГÐÐЛ | -СИГÐÐЛ] ИДЕÐТИФИКÐТОР_ÐÐ_ПРОЦЕС\n" " | ИДЕÐТИФИКÐТОР_ÐÐ_ЗÐДÐЧÐ…\n" "или\n" "kill -l [СИГÐÐЛ]" -#: builtins.c:134 +#: builtins.c:136 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 ...]" +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" msgstr "" "read [-ers] [-a МÐСИВ] [-d РÐЗДЕЛИТЕЛ] [-i ТЕКСТ] [-n БРОЙ_ЗÐÐЦИ]\n" " [-N БРОЙ_ЗÐÐЦИ] [-p ПОДСКÐЗКÐ] [-t БРОЙ_ЗÐÐЦИ] [-u ФÐЙЛОВ_ДЕСКРИПТОР]\n" " [ИМЕ…]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [ЦИФРОВ_КОД]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o ОПЦИЯ] [--] [ÐРГУМЕÐТИ…]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [ИМЕ…]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [ИМЕ[=СТОЙÐОСТ]…] или export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [ИМЕ[=СТОЙÐОСТ]…] или readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [БРОЙ]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source ФÐЙЛ [ÐРГУМЕÐТИ]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". ФÐЙЛ [аргументи]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [ИЗРÐЗ]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ ÐРГУМЕÐТ…]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[ÐРГУМЕÐТ] СИГÐÐЛ…]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] ИМЕ [ИМЕ…]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [ОГРÐÐИЧЕÐИЕ]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ОГРÐÐИЧЕÐИЕ]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [МÐСКÐ]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [ИД…]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [ИД_ПР…]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for ИМЕ [in ДУМИ…] ; do КОМÐÐДИ; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( ИЗРÐЗ_1; ИЗРÐЗ_2; ИЗРÐЗ_3 )); do КОМÐÐДИ; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select ИМЕ [in ДУМИ…;] do КОМÐÐДИ; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] ПРОГРÐМЕÐ_КÐÐÐЛ" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case ДУМРin [ШÐБЛОР[| ШÐБЛОÐ]…) КОМÐÐДИ ;;]… esac" -#: builtins.c:192 -msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" -msgstr "if КОМÐÐДИ; then КОМÐÐДИ; [ elif КОМÐÐДИ; then КОМÐÐДИ; ]… [ else КОМÐÐДИ; ] fi" - #: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if КОМÐÐДИ; then КОМÐÐДИ; [ elif КОМÐÐДИ; then КОМÐÐДИ; ]… [ else КОМÐÐДИ; ] " +"fi" + +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while КОМÐÐДИ; do КОМÐÐДИ; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until КОМÐÐДИ; do КОМÐÐДИ; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [ИМЕ] КОМÐÐДР[ПРЕÐÐСОЧВÐÐИЯ]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function name { КОМÐÐДИ ; } или name () { КОМÐÐДИ ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ КОМÐÐДИ ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "%ЗÐДÐЧР[&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( ИЗРÐЗ ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ ИЗРÐЗ ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables имена и значение на нÑкои от променливите на обвивката" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | ДИР]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [ОПЦИЯ…]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v ПРОМЕÐЛИВÐ] ФОРМÐТ [ÐРГУМЕÐТИ]" -#: 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 ...]" +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" msgstr "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o ОПЦИЯ] [-A ДЕЙСТВИЕ]\n" " [-G ШÐБЛОÐ] [-W ДУМИ] [-F ФУÐКЦИЯ] [-C КОМÐÐДÐ] [-X ФИЛТЪР]\n" " [-P ПРЕДСТÐВКÐ] [-S ÐÐСТÐВКÐ] [ИМЕ…]" -#: 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]" +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o ОПЦИЯ] [-A ДЕЙСТВИЕ] [-G ШÐБЛОÐ]\n" " [-W ДУМИ] [-F ФУÐКЦИЯ] [-C КОМÐÐДÐ] [-X ФИЛТЪР] [-P ПРЕДСТÐВКÐ]\n" " [-S ÐÐСТÐВКÐ] [ДУМÐ]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o ОПЦИЯ] [-DE] [ИМЕ…]" -#: builtins.c:240 -msgid "mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "" -"mapfile [-n БРОЙ] [-O ÐÐЧÐЛО] [-s БРОЙ] [-t] [-u ФÐЙЛ_ДЕСКР]\n" -" [-C ФУÐКЦИЯ] [-c КВÐÐТ] [МÐСИВ]" - #: builtins.c:242 -msgid "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d РÐЗДЕЛИТЕЛ] [-n БРОЙ] [-O ÐÐЧÐЛО] [-s БРОЙ] [-t]\n" +" [-u ФÐЙЛ_ДЕСКР] [-C ФУÐКЦИЯ] [-c КВÐÐТ] [МÐСИВ]" + +#: builtins.c:244 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" msgstr "" "readarray [-n БРОЙ] [-O ÐÐЧÐЛО] [-s БРОЙ] [-t] [-u ФÐЙЛ_ДЕСКР]\n" " [-C ФУÐКЦИЯ] [-c КВÐÐТ] [МÐСИВ]" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2389,10 +2584,11 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has been\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" " defined." msgstr "" "Дефиниране или извеждане на Ñиноними.\n" @@ -2411,12 +2607,12 @@ msgstr "" " alias връща 0, оÑвен в Ñлучаите, когато Ñе зададе ИМЕ, за което\n" " не е дефиниран Ñиноним." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2429,7 +2625,7 @@ msgstr "" " Връща 0, оÑвен в Ñлучаите, когато Ñе зададе ИМЕ, за което\n" " не е дефиниран Ñиноним." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2441,25 +2637,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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2475,40 +2676,49 @@ msgstr "" "\n" " Опции:\n" " -m ПОДРЕДБР\n" -" Използване на ПОДРЕДБÐта като подредба на функциите на клавишите\n" +" Използване на ПОДРЕДБÐта като подредба на функциите на " +"клавишите\n" " докато командата Ñе изпълнÑва. Валидни Ñа Ñледните имена:\n" " „emacs“, „emacs-standard“, „emacs-meta“, „emacs-ctlx“, „vi“,\n" " „vi-move“, „vi-command“ и „vi-insert“.\n" " -l СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на функциите.\n" " -P СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на функциите и приÑвоÑваниÑта.\n" -" -p СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на функциите и приÑвоÑваниÑта във вид, който може\n" +" -p СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на функциите и приÑвоÑваниÑта във вид, който " +"може\n" " да Ñе използва за вход.\n" -" -S СпиÑък Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ½Ð¸Ñ‚Ðµ поÑледователноÑти, които извикват макроÑи и\n" +" -S СпиÑък Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ½Ð¸Ñ‚Ðµ поÑледователноÑти, които извикват макроÑи " +"и\n" " ÑтойноÑтите им.\n" -" -s СпиÑък Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ½Ð¸Ñ‚Ðµ поÑледователноÑти, които извикват макроÑи и\n" +" -s СпиÑък Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ½Ð¸Ñ‚Ðµ поÑледователноÑти, които извикват макроÑи " +"и\n" " ÑтойноÑтите им във вид, който може да Ñе използва за вход.\n" " -V СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на променливите и ÑтойноÑтите им.\n" -" -v СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на променливите и ÑтойноÑтите им във вид, който\n" +" -v СпиÑък Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на променливите и ÑтойноÑтите им във вид, " +"който\n" " може да Ñе използва за вход.\n" " -q ИМЕ_ÐÐ_ФУÐКЦИЯ\n" " Проверка кои клавиши извикват функциÑта Ñ Ñ‚Ð¾Ð²Ð° име.\n" " -u ИМЕ_ÐÐ_ФУÐКЦИЯ\n" -" Премахване на приÑвоÑваниÑта към вÑички клавиши на функциÑта Ñ\n" +" Премахване на приÑвоÑваниÑта към вÑички клавиши на функциÑта " +"Ñ\n" " това име.\n" " -r КЛÐВИШÐÐ_ПОСЛЕДОВÐТЕЛÐОСТ\n" -" Премахване на приÑвоената Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚ КЛÐВИШÐÐта_ПОСЛЕДОВÐТЕЛÐОСТ.\n" +" Премахване на приÑвоената Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ñ‚ " +"КЛÐВИШÐÐта_ПОСЛЕДОВÐТЕЛÐОСТ.\n" " -f ФÐЙЛ\n" " Прочитане на приÑвоÑваниÑта на клавиши от ФÐЙЛа.\n" " -x КЛÐВИШÐÐ_ПОСЛЕДОВÐТЕЛÐОСТ:КОМÐÐДÐ_ÐÐ_ОБВИВКÐТÐ\n" " Изпълнение на КОМÐÐДÐта_ÐÐ_ОБВИВКÐТРпри въвеждането на\n" " КЛÐВИШÐÐта_ПОСЛЕДОВÐТЕЛÐОСТ.\n" -" -X Извеждане на клавишните комбинации зададени Ñ â€ž-x“ и Ñвързаните Ñ Ñ‚ÑÑ…\n" +" -X Извеждане на клавишните комбинации зададени Ñ â€ž-x“ и Ñвързаните Ñ " +"Ñ‚ÑÑ…\n" " команди във форма, коÑто може да Ñе ползва и за вход\n" "\n" " Изходен код:\n" -" bind връща 0, оÑвен когато е зададена непозната Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка." +" bind връща 0, оÑвен когато е зададена непозната Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне " +"грешка." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2520,13 +2730,14 @@ msgid "" msgstr "" "Изход от цикли чрез „for“, „while“ или „until“.\n" " \n" -" Изход от цикли организирани чрез „for“, „while“ или „until“. Ðко е зададен\n" +" Изход от цикли организирани чрез „for“, „while“ или „until“. Ðко е " +"зададен\n" " БРОЙ Ñе излиза от толкова на БРОЙ обхващащи цикли.\n" " \n" " Изходен код:\n" " 0, оÑвен ако е зададен БРОЙ, който е по-малък от 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2538,20 +2749,23 @@ msgid "" msgstr "" "Продължаване на цикъл чрез „for“, „while“ или „until“.\n" "\n" -" Продължаване ÑÑŠÑ Ñледващата Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ цикъл, организиран Ñ â€žfor“, „while“\n" -" или „until“. Ðко е зададен БРОЙ, Ñе продължава ÑÑŠÑ Ñледващата итерациÑ\n" +" Продължаване ÑÑŠÑ Ñледващата Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ цикъл, организиран Ñ â€žfor“, " +"„while“\n" +" или „until“. Ðко е зададен БРОЙ, Ñе продължава ÑÑŠÑ Ñледващата " +"итерациÑ\n" " на Ð¾Ð±Ñ…Ð²Ð°Ñ‰Ð°Ñ‰Ð¸Ñ Ñ†Ð¸ÐºÑŠÐ» зададен Ñ Ñ‚Ð¾Ð·Ð¸ БРОЙ.\n" "\n" " Изходен код:\n" " 0, оÑвен ако е зададен БРОЙ, който е по-малък от 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the function.\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2560,7 +2774,8 @@ msgstr "" "Изпълнение на вградени команди.\n" "\n" " Изпълнение на ВГРÐДЕÐÐта_КОМÐÐÐ”Ð Ñ ÐРГУМЕÐТи, без да Ñе търÑи нормална\n" -" команда. Това е полезно в Ñлучаите, когато иÑкате да Ñъздадете вградена\n" +" команда. Това е полезно в Ñлучаите, когато иÑкате да Ñъздадете " +"вградена\n" " команда като Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката, но във функциÑта иÑкате да изпълните\n" " вградената команда.\n" "\n" @@ -2568,7 +2783,7 @@ msgstr "" " Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на ВГРÐДЕÐÐта_КОМÐÐДРили лъжа, ако извиканата \n" " ВГРÐДЕÐÐ_КОМÐÐДРвÑъщноÑÑ‚ не е вградена команда." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2589,46 +2804,57 @@ msgstr "" " „$line $subroutine $filename“. Допълнителната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶Ðµ да Ñе\n" " използва за получаване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑÑŠÑтоÑнието на Ñтека.\n" " \n" -" СтойноÑтта на ИЗРÐЗа показва за колко рамки ÑпрÑмо текущата да Ñе изведе\n" +" СтойноÑтта на ИЗРÐЗа показва за колко рамки ÑпрÑмо текущата да Ñе " +"изведе\n" " информациÑ. Ðай-горната рамка е 0.\n" " \n" " Изходен код:\n" -" Връща 0, оÑвен ако обвивката изпълнÑва Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð° в обвивката или\n" +" Връща 0, оÑвен ако обвивката изпълнÑва Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð° в обвивката " +"или\n" " ИЗРÐЗът е грешен." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of the\n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -" A null directory name is the same as the current directory. If DIR begins\n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is set,\n" -" the word is assumed to be a variable name. If that variable has a value,\n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" -" `..' is processed by removing the immediately previous pathname component\n" +" `..' 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" @@ -2636,40 +2862,51 @@ msgstr "" " СмÑна на текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð´Ð° е ДИРЕКТОРИЯ. Променливата „HOME“ е\n" " Ñтандартната директориÑ.\n" "\n" -" Променливата „CDPATH“ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¿ÑŠÑ‚Ñ Ð·Ð° търÑене на директории, които могат да\n" +" Променливата „CDPATH“ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¿ÑŠÑ‚Ñ Ð·Ð° търÑене на директории, които " +"могат да\n" " Ñъдържат ДИРЕКТОРИЯта. Директориите в „CDPATH“ Ñа разделени Ñ â€ž:“. \n" -" ЛипÑващо име на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð° текущата директориÑ, Ñ‚.е. „.“. Ðко името\n" +" ЛипÑващо име на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð° текущата директориÑ, Ñ‚.е. „.“. Ðко " +"името\n" " на ДИРЕКТОРИЯта започва Ñ Ð½Ð°ÐºÐ»Ð¾Ð½ÐµÐ½Ð° черта „/“, „CDPATH“ не Ñе ползва.\n" "\n" " Ðко директориÑта не е открита, но е зададена опциÑта на обвивката\n" -" „cdable_vars“, то думата Ñе пробва като име на променлива. Ðко променливата\n" -" има ÑтойноÑÑ‚, то директориÑта Ñе ÑÐ¼ÐµÐ½Ñ ÐºÑŠÐ¼ ÑтойноÑтта на тази променлива.\n" +" „cdable_vars“, то думата Ñе пробва като име на променлива. Ðко " +"променливата\n" +" има ÑтойноÑÑ‚, то директориÑта Ñе ÑÐ¼ÐµÐ½Ñ ÐºÑŠÐ¼ ÑтойноÑтта на тази " +"променлива.\n" " \n" " Опции:\n" " -L налага Ñледването на Ñимволните връзки. Символните връзки в\n" -" ДИРЕКТОРИЯта Ñе обработват Ñлед указателите към горна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž..“.\n" -" -P налага използването на фактичеÑката подредба на директориите, вмеÑто\n" -" да Ñе Ñледват Ñимволните връзки. Символните връзки в ДИРЕКТОРИЯта Ñе\n" +" ДИРЕКТОРИЯта Ñе обработват Ñлед указателите към горна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ " +"„..“.\n" +" -P налага използването на фактичеÑката подредба на директориите, " +"вмеÑто\n" +" да Ñе Ñледват Ñимволните връзки. Символните връзки в ДИРЕКТОРИЯта " +"Ñе\n" " обработват Ñлед указателите към горна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž..“.\n" -" -e ако е използвана опциÑта „-P“ и текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ðµ може да бъде\n" +" -e ако е използвана опциÑта „-P“ и текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ðµ може да " +"бъде\n" " определена, командата завършва Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ² изход.\n" -" -@ на ÑиÑтемите Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на разширени атрибути файлът Ñе предÑтавÑ\n" +" -@ на ÑиÑтемите Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на разширени атрибути файлът Ñе " +"предÑтавÑ\n" " като директориÑ, в коÑто Ñа атрибутите.\n" "\n" -" Стандартно Ñимволните връзки Ñе Ñледват, вÑе едно е зададена опциÑта „-L“\n" +" Стандартно Ñимволните връзки Ñе Ñледват, вÑе едно е зададена опциÑта „-" +"L“\n" "\n" " Изходен код:\n" -" Връща 0 при ÑмÑна на директориÑта. Когато е зададена опциÑта „-P“, 0 Ñе\n" +" Връща 0 при ÑмÑна на директориÑта. Когато е зададена опциÑта „-P“, 0 " +"Ñе\n" " връща при уÑпешно задаване на променливата „PWD„. Във вÑички оÑтанали\n" " Ñлучаи изходът е ненулев." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2688,10 +2925,11 @@ msgstr "" " Стандартно поведението на „pwd“ без аргументи ÑъответÑтва на „-L“.\n" " \n" " Изходен код:\n" -" 0, оÑвен ако е подадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ðµ може да\n" +" 0, оÑвен ако е подадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ðµ може " +"да\n" " бъде прочетена." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2707,7 +2945,7 @@ msgstr "" " Изходен код:\n" " Винаги завършва уÑпешно." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2719,7 +2957,7 @@ msgstr "" " Изходен код:\n" " Винаги завършва уÑпешно." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2731,19 +2969,20 @@ msgstr "" " Изходен код:\n" " Винаги завършва неуÑпешно." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke commands\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2751,20 +2990,24 @@ msgstr "" "Изпълнение на нормална команда или извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° команди.\n" " \n" " Изпълнение на КОМÐÐДÐта Ñ ÐРГументи, без Ñ‚Ñ Ð´Ð° Ñе търÑи като Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð°\n" -" обвивката, или извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° указаните КОМÐÐДи. Може да Ñе\n" -" използва за изпълнението на външни команди, дори когато ÑъщеÑтвува функциÑ\n" +" обвивката, или извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° указаните КОМÐÐДи. Може да " +"Ñе\n" +" използва за изпълнението на външни команди, дори когато ÑъщеÑтвува " +"функциÑ\n" " ÑÑŠÑ Ñъщото име.\n" " \n" " Опции:\n" -" -p използване на Ñтандартна ÑтойноÑÑ‚ на PATH. Така могат да Ñе откриÑÑ‚\n" +" -p използване на Ñтандартна ÑтойноÑÑ‚ на PATH. Така могат да Ñе " +"откриÑÑ‚\n" " вÑички Ñтандартни инÑтрументи\n" -" -v извежда опиÑание на КОМÐÐДÐта подобно на вградената команда „type“\n" +" -v извежда опиÑание на КОМÐÐДÐта подобно на вградената команда " +"„type“\n" " -V извежда по пълно опиÑание на вÑÑка КОМÐÐДÐ\n" " \n" " Изходен код:\n" " Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на КОМÐÐДÐта или грешка, ако такава не е открита." -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2774,9 +3017,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2795,7 +3038,8 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the `local'\n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" @@ -2804,15 +3048,20 @@ msgid "" msgstr "" "Задаване на ÑтойноÑти на променливите и атрибутите.\n" " \n" -" Деклариране на променливи и задаване на атрибутите им. Ðко не Ñа дадени\n" +" Деклариране на променливи и задаване на атрибутите им. Ðко не Ñа " +"дадени\n" " ИМЕна Ñе изобразÑват атрибутите и ÑтойноÑтите на вÑички променливи.\n" " \n" " Опции:\n" -" -f Ограничаване на дейÑтвието или извеждането до имената и дефинициите\n" +" -f Ограничаване на дейÑтвието или извеждането до имената и " +"дефинициите\n" " на функциите\n" -" -F Ограничаване на извеждането Ñамо до имената на функциите, заедно Ñ\n" -" номерата на редовете и изходните файлове при изчиÑтване на грешките\n" -" -g Създаване на глобална променлива, когато опциÑта е употребена във\n" +" -F Ограничаване на извеждането Ñамо до имената на функциите, заедно " +"Ñ\n" +" номерата на редовете и изходните файлове при изчиÑтване на " +"грешките\n" +" -g Създаване на глобална променлива, когато опциÑта е употребена " +"във\n" " функциÑ. Ð’ противен Ñлучай Ñе пренебрегва\n" " -p Извеждане на атрибутите и ÑтойноÑтта на вÑÑко ИМЕ\n" " \n" @@ -2834,25 +3083,29 @@ msgstr "" " чиÑло Ñе извършва аритметично изчиÑлÑване (вижте командата „let“).\n" " the `let' command).\n" " \n" -" Когато Ñе използва във функциÑ, командата „declare“ прави ИМЕната локални,\n" -" вÑе едно Ñе изпълнÑва командата „local“. ОпциÑта „-g“ предотвратÑва това\n" +" Когато Ñе използва във функциÑ, командата „declare“ прави ИМЕната " +"локални,\n" +" вÑе едно Ñе изпълнÑва командата „local“. ОпциÑта „-g“ предотвратÑва " +"това\n" " поведение.\n" " \n" " Изходен код:\n" -" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка при задаването\n" +" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка при " +"задаването\n" " на ÑтойноÑÑ‚ на променлива." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Задаване на ÑтойноÑÑ‚ и атрибути на променливи.\n" " \n" " ОÑтарÑло. Виж „help declare“." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2868,21 +3121,25 @@ msgid "" msgstr "" "Дефиниране на локални променливи.\n" " \n" -" Създаване на локална променлива Ñ Ñ‚Ð¾Ð²Ð° ИМЕ и зададената СТОЙÐОСТ. ОПЦИЯта\n" +" Създаване на локална променлива Ñ Ñ‚Ð¾Ð²Ð° ИМЕ и зададената СТОЙÐОСТ. " +"ОПЦИЯта\n" " може да е вÑÑка приемана от вградената команда „declare“.\n" " \n" -" Локалните променливи могат да Ñе използват Ñамо във функциÑ. Те Ñа видими\n" +" Локалните променливи могат да Ñе използват Ñамо във функциÑ. Те Ñа " +"видими\n" " Ñамо в Ð½ÐµÑ Ð¸ нейните наÑледници.\n" " \n" " Изходен код:\n" -" 0, оÑвен ако е зададена неправилна ОПЦИЯ, възникне грешка при задаването на\n" +" 0, оÑвен ако е зададена неправилна ОПЦИЯ, възникне грешка при задаването " +"на\n" " ÑтойноÑÑ‚ на променлива, или в момента не Ñе изпълнÑва функциÑ." -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by a\n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -2903,9 +3160,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2917,7 +3174,8 @@ msgstr "" "\n" " Опции:\n" " -n не Ñе извежда знак за нов ред.\n" -" -e включва Ñе интерпретирането на знаците, изброени по-долу, екранирани\n" +" -e включва Ñе интерпретирането на знаците, изброени по-долу, " +"екранирани\n" " Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð° наклонена черта — „\\“\n" " -Е изрично Ñе Ñпира интерпретирането на долните знаци\n" "\n" @@ -2934,16 +3192,18 @@ msgstr "" " \\v вертикална табулациÑ\n" " \\\\ обратно наклонена черта\n" " \\0nnn\n" -" знакът Ñ ÐºÐ¾Ð´ в ASCII NNN (в оÑмична бройна ÑиÑтема). NNN може да Ñе\n" +" знакът Ñ ÐºÐ¾Ð´ в ASCII NNN (в оÑмична бройна ÑиÑтема). NNN може да " +"Ñе\n" " ÑÑŠÑтои от 1 до 3 оÑмични цифри.\n" " \\xHH\n" -" знакът Ñ ÐºÐ¾Ð´ в ASCII HH (в шеÑтнайÑетична бройна ÑиÑтема). HH може\n" +" знакът Ñ ÐºÐ¾Ð´ в ASCII HH (в шеÑтнайÑетична бройна ÑиÑтема). HH " +"може\n" " да Ñе ÑÑŠÑтои от 1 до 2 шеÑтнайÑетични цифри.\n" "\n" " Изходен код:\n" " Връща 0, оÑвен ако не възникне грешка при извеждането." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2957,7 +3217,8 @@ msgid "" msgstr "" "Извеждане на аргументите на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n" " \n" -" Извеждане на ÐРГументите на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ поÑледвани от знак за нов ред.\n" +" Извеждане на ÐРГументите на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ поÑледвани от знак за нов " +"ред.\n" " \n" " Опции:\n" " -n без извеждане на знак за нов ред\n" @@ -2965,7 +3226,7 @@ msgstr "" " Изходен код:\n" " Връща 0, оÑвен ако възникне грешка при извеждането." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2994,17 +3255,21 @@ msgstr "" "Включване и изключване на вградените в обвивката команди.\n" " \n" " Включване и изключване на командите вградени в обвивката. Изключването\n" -" позволÑва извикването на външна команда ÑÑŠÑ Ñъщото име като вградена без\n" +" позволÑва извикването на външна команда ÑÑŠÑ Ñъщото име като вградена " +"без\n" " използването на пълното име Ñ Ð¿ÑŠÑ‚Ñ.\n" " \n" " Опции:\n" " -a Извеждане на ÑпиÑъка Ñ Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð¸Ñ‚Ðµ команди заедно Ñ Ñ‚Ð¾Ð²Ð° дали Ñа\n" " включени или не\n" " -n Изключване на вградените команди Ñ Ð¿Ð¾Ñочените ИМЕна. Ðко не Ñа\n" -" дадени ИМЕна, Ñе извежда ÑпиÑъкът Ñ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ‚Ðµ вътрешни команди\n" -" -p Извеждане на ÑпиÑъка Ñ Ð²ÑŠÑ‚Ñ€ÐµÑˆÐ½Ð¸ команди във формат, който може да\n" +" дадени ИМЕна, Ñе извежда ÑпиÑъкът Ñ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ‚Ðµ вътрешни " +"команди\n" +" -p Извеждане на ÑпиÑъка Ñ Ð²ÑŠÑ‚Ñ€ÐµÑˆÐ½Ð¸ команди във формат, който може " +"да\n" " Ñе ползва като вход\n" -" -s Извеждане Ñамо на имената на Ñпециалните вградени команди Ñпоред\n" +" -s Извеждане Ñамо на имената на Ñпециалните вградени команди " +"Ñпоред\n" " POSIX\n" " \n" " Опции за динамичното зареждане:\n" @@ -3015,17 +3280,19 @@ msgstr "" " Ðко не Ñа зададени опции, вÑÑка от вътрешните команди Ñ Ñ‚Ð°ÐºÐ¾Ð²Ð° ИМЕ бива\n" " включена.\n" " \n" -" За да ползвате командата „test“, коÑто Ñе намира в Ð¿ÑŠÑ‚Ñ Ð·Ð° изпълнение $PATH,\n" +" За да ползвате командата „test“, коÑто Ñе намира в Ð¿ÑŠÑ‚Ñ Ð·Ð° изпълнение " +"$PATH,\n" " вмеÑто Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð¸Ñ Ð² обвивката вариант изпълнете: „enable -n test“.\n" " \n" " Изходен код:\n" " 0, оÑвен ако ИМЕто не е на вградена команда или не възникне грешка." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the shell,\n" +" 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" @@ -3039,7 +3306,7 @@ msgstr "" " Изходен код:\n" " Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на командата или код за уÑпех, ако командата е нулева." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3081,79 +3348,102 @@ msgid "" msgstr "" "Ðнализиране на опциите и аргументите.\n" "\n" -" getopts Ñе използва от процедурите на обвивката за анализа на позиционните\n" +" getopts Ñе използва от процедурите на обвивката за анализа на " +"позиционните\n" " аргументи и опции.\n" " \n" -" ÐИЗът_С_ОПЦИИ Ñъдържа знаците, които трÑбва да Ñе разпознават като опции.\n" -" Ðко буквата е Ñледвана от двоеточие, очаква Ñе опциÑта да получава аргумент,\n" +" ÐИЗът_С_ОПЦИИ Ñъдържа знаците, които трÑбва да Ñе разпознават като " +"опции.\n" +" Ðко буквата е Ñледвана от двоеточие, очаква Ñе опциÑта да получава " +"аргумент,\n" " който да е разделен от Ð½ÐµÑ Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»(и).\n" " \n" -" При вÑÑко извикване „getopts“ поÑÑ‚Ð°Ð²Ñ Ñледващата Ð¾Ð¿Ñ†Ð¸Ñ Ð² променливата на\n" -" обвивката „name“, като Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð°, ако Ñ‚Ñ Ð½Ðµ ÑъщеÑтвува, а индекÑÑŠÑ‚ на\n" -" ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚, който трÑбва да Ñе обработи, в променливата на обвивката\n" -" „OPTIND“. „OPTIND“ Ñе инициализира да е 1 при вÑÑко извикване на обвивка\n" +" При вÑÑко извикване „getopts“ поÑÑ‚Ð°Ð²Ñ Ñледващата Ð¾Ð¿Ñ†Ð¸Ñ Ð² променливата " +"на\n" +" обвивката „name“, като Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð°, ако Ñ‚Ñ Ð½Ðµ ÑъщеÑтвува, а индекÑÑŠÑ‚ " +"на\n" +" ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚, който трÑбва да Ñе обработи, в променливата на " +"обвивката\n" +" „OPTIND“. „OPTIND“ Ñе инициализира да е 1 при вÑÑко извикване на " +"обвивка\n" " или Ñкрипт. Когато опциÑта Ñе нуждае от аргумент, той Ñе поÑÑ‚Ð°Ð²Ñ Ð²\n" " променливата на обвивката „OPTARG“.\n" " \n" " „getopts“ докладва грешки по един от два начина. Ðко първиÑÑ‚ знак на\n" -" „OPTSTRING“ е двоеточие, „getopts“ използва тихо докладване. Ð’ този режим\n" -" не Ñе извеждат никакви ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешка. Ðко Ñе Ñрещне неправилна опциÑ,\n" -" „getopts“ Ñлага ÑÑ€ÐµÑ‰Ð½Ð°Ñ‚Ð¸Ñ Ð·Ð½Ð°Ðº за Ð¾Ð¿Ñ†Ð¸Ñ Ð² „OPTARG“. Ðко липÑва задължителен\n" -" аргумент, „getopts“ Ñлага „:“ в променливата „ИМЕ“, а в „OPTARG“ — ÑрещнатиÑ\n" -" знак за опциÑ. Когато „getopts“ не е в режим на тихо докладване и Ñе Ñрещне\n" -" неправилна опциÑ, в променливата „ИМЕ“ Ñе Ñлага „?“, а „OPTARG“ Ñе премахва,\n" -" а ако липÑва задължителен аргумент, допълнително Ñе изпиÑва диагноÑтично\n" +" „OPTSTRING“ е двоеточие, „getopts“ използва тихо докладване. Ð’ този " +"режим\n" +" не Ñе извеждат никакви ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешка. Ðко Ñе Ñрещне неправилна " +"опциÑ,\n" +" „getopts“ Ñлага ÑÑ€ÐµÑ‰Ð½Ð°Ñ‚Ð¸Ñ Ð·Ð½Ð°Ðº за Ð¾Ð¿Ñ†Ð¸Ñ Ð² „OPTARG“. Ðко липÑва " +"задължителен\n" +" аргумент, „getopts“ Ñлага „:“ в променливата „ИМЕ“, а в „OPTARG“ — " +"ÑрещнатиÑ\n" +" знак за опциÑ. Когато „getopts“ не е в режим на тихо докладване и Ñе " +"Ñрещне\n" +" неправилна опциÑ, в променливата „ИМЕ“ Ñе Ñлага „?“, а „OPTARG“ Ñе " +"премахва,\n" +" а ако липÑва задължителен аргумент, допълнително Ñе изпиÑва " +"диагноÑтично\n" " Ñъобщение.\n" " \n" -" Ðко променливата на обвивката „OPTERR“ е ÑÑŠÑ ÑтойноÑÑ‚ 0, „getopts“ изключва\n" -" извеждането на диагноÑтични ÑъобщениÑ, дори първиÑÑ‚ знак в „OPTSTRING“ да не\n" +" Ðко променливата на обвивката „OPTERR“ е ÑÑŠÑ ÑтойноÑÑ‚ 0, „getopts“ " +"изключва\n" +" извеждането на диагноÑтични ÑъобщениÑ, дори първиÑÑ‚ знак в „OPTSTRING“ " +"да не\n" " е двоеточие. По подразбиране „OPTERR“ е ÑÑŠÑ ÑтойноÑÑ‚ 1.\n" " \n" -" „getopts“ по принцип анализира позиционните аргументи ($0 — $9), но ако Ñа\n" +" „getopts“ по принцип анализира позиционните аргументи ($0 — $9), но ако " +"Ñа\n" " дадени повече аргументи, те биват анализирани вмеÑто това.\n" "\n" " Изходен код:\n" -" Връща 0 при откриването на опциÑ. Връща друга ÑтойноÑÑ‚ при Ñтигането на\n" +" Връща 0 при откриването на опциÑ. Връща друга ÑтойноÑÑ‚ при Ñтигането " +"на\n" " поÑледната Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ при възникването на грешка." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" "ЗамеÑтване на обвивката Ñ Ð´Ð°Ð´ÐµÐ½Ð°Ñ‚Ð° команда.\n" "\n" -" ИзпълнÑване на КОМÐÐДÐта, като Ñ‚Ñ Ð·Ð°Ð¼ÐµÑтва текущата обвивка. ÐРГУМЕÐТите\n" +" ИзпълнÑване на КОМÐÐДÐта, като Ñ‚Ñ Ð·Ð°Ð¼ÐµÑтва текущата обвивка. " +"ÐРГУМЕÐТите\n" " Ñе подават на КОМÐÐДÐта. Ðко не е дадена КОМÐÐДÐ, пренаÑочваниÑта Ñе\n" " извършват в текущата обвивка.\n" "\n" " Опции:\n" " -a ИМЕ ИМЕ-то Ñе подава като Ð½ÑƒÐ»ÐµÐ²Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ на КОМÐÐДÐта\n" -" -c изпълнÑване на КОМÐÐДÐта в нулева Ñреда\n" +" -c изпълнÑване на КОМÐÐДÐта в празна Ñреда\n" " -l поÑтавÑне на тире в Ð½ÑƒÐ»ÐµÐ²Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ на КОМÐÐДÐта\n" "\n" -" Ðко КОМÐÐДÐта не може да бъде изпълнена, трÑбва да ÑъщеÑтвува неинтерактивна\n" +" Ðко КОМÐÐДÐта не може да бъде изпълнена, трÑбва да ÑъщеÑтвува " +"неинтерактивна\n" " обвивка, оÑвен ако не е зададена опциÑта на обвивката „execfail“.\n" "\n" " Изходен код:\n" " 0, оÑвен когато КОМÐÐДÐта не е открита или възникне грешка при\n" " пренаÑочването." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3162,32 +3452,37 @@ msgid "" msgstr "" "Изход от обвивката.\n" " \n" -" Изход от обвивката Ñ Ñ‚Ð¾Ð·Ð¸ ЦИФРОВ_КОД. Ðко той е изпуÑнат, то изходниÑÑ‚ код\n" +" Изход от обвивката Ñ Ñ‚Ð¾Ð·Ð¸ ЦИФРОВ_КОД. Ðко той е изпуÑнат, то изходниÑÑ‚ " +"код\n" " е този на поÑледната изпълнена команда." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" "Изход от входната обвивка.\n" " \n" -" Изход от входната обвивка Ñ Ñ‚Ð¾Ð·Ð¸ ЦИФРОВ_КОД. Връща грешка, ако е изпълнена\n" +" Изход от входната обвивка Ñ Ñ‚Ð¾Ð·Ð¸ ЦИФРОВ_КОД. Връща грешка, ако е " +"изпълнена\n" " в обвивка, коÑто не е входна." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" 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" @@ -3201,36 +3496,44 @@ 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" +" fc Ñе използва за изброÑването или редактирането и повторното изпълнение " +"на\n" " команди от ÑпиÑъка на иÑториÑта.\n" -" ПЪРВИ и ПОСЛЕДЕРÑа номера, които могат да указват допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½. Ðко\n" +" ПЪРВИ и ПОСЛЕДЕРÑа номера, които могат да указват допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½. " +"Ðко\n" " е зададен Ñамо ПЪРВИÑÑ‚ аргумент, той задава низ, който е началото на\n" " команда.\n" " \n" " Опции:\n" " -e РЕДÐКТОР\n" " избор на текÑтов редактор, който да Ñе използва. Стандартно е\n" -" указаниÑÑ‚ в променливата „FCEDIT“, Ñлед това Ñе проверÑва „EDITOR“ и\n" +" указаниÑÑ‚ в променливата „FCEDIT“, Ñлед това Ñе проверÑва „EDITOR“ " +"и\n" " в краен Ñлучай е „vi“.\n" " -l редовете да Ñе покажат вмеÑто редактират.\n" " -n номерата на редовете да не Ñе отпечатват.\n" " -r обратна подредба (отпред да е най-новиÑÑ‚ ред).\n" " \n" -" При варианта „fc -s [ШÐБЛОÐ=ЗÐМЕСТИТЕЛ…] [КОМÐÐДÐ]“ командата Ñе изпълнÑва, като\n" +" При варианта „fc -s [ШÐБЛОÐ=ЗÐМЕСТИТЕЛ…] [КОМÐÐДÐ]“ командата Ñе " +"изпълнÑва, като\n" " вÑÑка поÑва на ШÐБЛона Ñе Ð·Ð°Ð¼ÐµÐ½Ñ ÑÑŠÑ Ð—ÐМЕСТителÑ.\n" " \n" -" Удобен за използване Ñиноним е „r='fc -s'“. По такъв начин, ако напишете\n" -" „r cc“, ще Ñе изпълни поÑледната команда, коÑто започва Ñ â€žcc“, а когато\n" +" Удобен за използване Ñиноним е „r='fc -s'“. По такъв начин, ако " +"напишете\n" +" „r cc“, ще Ñе изпълни поÑледната команда, коÑто започва Ñ â€žcc“, а " +"когато\n" " Ñе въведе Ñамо „r“, ще Ñе изпълни поÑледната команда.\n" "\n" " Изходен код:\n" -" Връща 0 или изхода от поÑледната команда, който не е 0 в Ñлучай на грешка." +" Връща 0 или изхода от поÑледната команда, който не е 0 в Ñлучай на " +"грешка." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3250,12 +3553,14 @@ msgstr "" " Изходът от командата, коÑто е зададена да е текуща или грешка, ако при\n" " поÑтавÑнето на задачата от фонов към текущ режим възникне такава." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" 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" @@ -3264,38 +3569,41 @@ msgstr "" "ПоÑтавÑне на задачи във фонов режим.\n" "\n" " ПоÑÑ‚Ð°Ð²Ñ Ð²ÑÑка ЗÐДÐЧРвъв фонов режим, вÑе едно е била Ñтартирана Ñ â€ž&“.\n" -" Ðко липÑва аргумент ЗÐДÐЧÐ, Ñе използва текущата задача Ñпоред обвивката.\n" +" Ðко липÑва аргумент ЗÐДÐЧÐ, Ñе използва текущата задача Ñпоред " +"обвивката.\n" "\n" " Изходен код:\n" " 0, оÑвен ако управлението на задачи е изключено или възникне грешка." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" "ЗапомнÑне или извеждане на меÑтоположениÑта на програми.\n" -" \n" -" ОпределÑне и запомнÑне на пълното име Ñ Ð¿ÑŠÑ‚Ñ Ð½Ð° вÑÑко ИМЕ. Ðко не Ñа дадени\n" +"\n" +" ОпределÑне и запомнÑне на пълното име Ñ Ð¿ÑŠÑ‚Ñ Ð½Ð° вÑÑко ИМЕ. Ðко не Ñа " +"дадени\n" " аргументи, Ñе извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вÑички запомнени команди.\n" -" \n" +"\n" " Опции:\n" " -d ЗабравÑне на запомненото меÑтоположение на вÑички ИМЕна\n" " -l Извеждане във формат за преизползване като вход\n" @@ -3303,16 +3611,18 @@ msgstr "" " Използване на поÑÐ¾Ñ‡ÐµÐ½Ð¸Ñ ÐŸÐªÐ¢ като пълен път за ИМЕто\n" " -r ЗабравÑне на вÑички запомнени меÑтоположениÑ\n" " -t Извеждане на запомнените меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° вÑички ИМЕна. Ðко е\n" -" поÑочено повече от едно ИМЕ, вÑÑко меÑтоположение Ñе предшеÑтва от\n" +" поÑочено повече от едно ИМЕ, вÑÑко меÑтоположение Ñе предшеÑтва " +"от\n" " ИМЕто\n" " Ðргументи:\n" -" ИМЕ Ð’ÑÑко име Ñе търÑи в Ð¿ÑŠÑ‚Ñ Ð·Ð° изпълнение „PATH“ и при намирането му\n" +" ИМЕ Ð’ÑÑко име Ñе търÑи в Ð¿ÑŠÑ‚Ñ Ð·Ð° изпълнение „PATH“ и при намирането " +"му\n" " Ñе Ð´Ð¾Ð±Ð°Ð²Ñ Ð² ÑпиÑъка ÑÑŠÑ Ð·Ð°Ð¿Ð¾Ð¼Ð½ÐµÐ½Ð¸ команди.\n" -" \n" +"\n" " Изходен код:\n" " 0, оÑвен ако ИМЕто не бъде открито или е дадена неправилна опциÑ." -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3324,34 +3634,40 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" "Извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените команди.\n" " \n" -" Извежда кратка Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените команди. Ðко е указан ШÐБЛОÐ, Ñе\n" -" извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° напаÑващите команди. Ð’ противен Ñлучай Ñе изважда\n" +" Извежда кратка Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените команди. Ðко е указан ШÐБЛОÐ, " +"Ñе\n" +" извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° напаÑващите команди. Ð’ противен Ñлучай Ñе " +"изважда\n" " Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вÑички команди.\n" " \n" " Опции:\n" " -d Извеждане на кратко опиÑание на вÑÑка тема\n" " -m Извеждане във формат наподобÑващ Ñтраница от ръководÑтвата\n" -" -s Извеждане Ñамо на кратко обобщение за използването на вÑÑка команда,\n" +" -s Извеждане Ñамо на кратко обобщение за използването на вÑÑка " +"команда,\n" " Ñъвпадаща Ñ Ð¨ÐБЛОÐа\n" " \n" " Ðргументи:\n" -" ШÐБЛОРШаблон за имената на командите, за които да Ñе изведе информациÑ\n" +" ШÐБЛОРШаблон за имената на командите, за които да Ñе изведе " +"информациÑ\n" " \n" " Изходен код:\n" " 0, оÑвен ако Ð½Ð¸ÐºÐ¾Ñ Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð° команда не Ñъвпада Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° или е дадена\n" " неправилна опциÑ." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3360,32 +3676,34 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3395,27 +3713,33 @@ msgstr "" " изтрива елемента в иÑториÑта намиращ Ñе поÑочената ПОЗИЦИЯ.\n" " -a Ð´Ð¾Ð±Ð°Ð²Ñ Ð¸ÑториÑта от текущата ÑеÑÐ¸Ñ ÐºÑŠÐ¼ файла Ñ Ð¸ÑториÑта.\n" " -n прочитане на непрочетените редове от файла Ñ Ð¸ÑториÑта.\n" -" -r прочитане на файла Ñ Ð¸ÑториÑта и добавÑне на Ñъдържанието към текущата\n" +" -r прочитане на файла Ñ Ð¸ÑториÑта и добавÑне на Ñъдържанието към " +"текущата\n" " иÑториÑ.\n" " -w запиÑване на текущата иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²ÑŠÐ² файла за иÑториÑта.\n" -" -p извършване на иÑторичеÑко замеÑтване за вÑеки ÐРГУМЕÐТ, а резултатът да\n" +" -p извършване на иÑторичеÑко замеÑтване за вÑеки ÐРГУМЕÐТ, а резултатът " +"да\n" " Ñе изведе, без нищо да Ñе запиÑва в иÑториÑта на командите.\n" -" -s аргументите, които не Ñа опции, Ñе добавÑÑ‚ като един елемент към файла Ñ\n" +" -s аргументите, които не Ñа опции, Ñе добавÑÑ‚ като един елемент към " +"файла Ñ\n" " иÑториÑта.\n" " \n" " Ðко аргументът ИМЕ_ÐÐ_ФÐЙЛ е зададен, той Ñе използва като файл за\n" " иÑториÑта. Ðко той липÑва, Ñе използва файлът Ñочен в променливата на\n" " Ñредата „HISTFILE“. Ð’ противен Ñлучай Ñе ползва „~/.bash_history“.\n" " \n" -" Ðко променливата „HISTTIMEFORMAT“ е зададена и не е „null“, ÑтойноÑтта Ñ Ñе\n" -" използва като Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ð½Ð¸Ð· за функциÑта „strftime“, за да Ñе отбелÑзва\n" -" времето Ñвързано Ñ Ð²Ñеки елемент от иÑториÑта. Ð’ противен Ñлучай времето не\n" +" Ðко променливата „HISTTIMEFORMAT“ е зададена и не е „null“, ÑтойноÑтта Ñ " +"Ñе\n" +" използва като Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ð½Ð¸Ð· за функциÑта „strftime“, за да Ñе " +"отбелÑзва\n" +" времето Ñвързано Ñ Ð²Ñеки елемент от иÑториÑта. Ð’ противен Ñлучай " +"времето не\n" " Ñе запиÑва.\n" " \n" " Изходен код:\n" " 0. Ðко възникне грешка или е подадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð²Ñ€ÑŠÑ‰Ð° грешка." -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3424,8 +3748,8 @@ msgid "" " \n" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" -" -n\tlist only processes that have changed status since the last\n" -" \tnotification\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3449,18 +3773,20 @@ msgstr "" " -n извеждат Ñе Ñамо процеÑите Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½ÐµÐ½Ð¾ ÑÑŠÑтоÑние от поÑледното\n" " извеждане на тази информациÑ.\n" " -p извежда Ñамо идентификаторите на процеÑите.\n" -" -r ограничаване на изхода Ñамо до работещите задачи.\n" +" -r ограничаване на изхода Ñамо до изпълнÑваните задачи.\n" " -s ограничаване на изхода Ñамо до Ñпрените задачи.\n" "\n" " Ðко е зададена опциÑта „-x“, КОМÐÐДÐта Ñе изпълнÑва, Ñлед като вÑички\n" -" ЗÐДÐЧи, които Ñе поÑвÑват като ÐРГУМЕÐТи, Ñе заменÑÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° на\n" +" ЗÐДÐЧи, които Ñе поÑвÑват като ÐРГУМЕÐТи, Ñе заменÑÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° " +"на\n" " водача на групата процеÑи.\n" "\n" " Изходен код:\n" -" 0, оÑвен ако не е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникни грешка. Ðко Ñе\n" +" 0, оÑвен ако не е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникни грешка. Ðко " +"Ñе\n" " ползва „-x“, връща изходното ÑÑŠÑтоÑние на КОМÐÐДÐта." -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3470,7 +3796,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3478,7 +3804,8 @@ msgid "" msgstr "" "Премахване на ЗÐДÐЧи от текущата обвивка.\n" " \n" -" Премахва вÑеки аргумент-задача от таблицата на активните задачи. Ðко ЗÐДÐЧÐ\n" +" Премахва вÑеки аргумент-задача от таблицата на активните задачи. Ðко " +"ЗÐДÐЧÐ\n" " не е указана, Ñе използва тази, коÑто обвивката Ñчита за текуща.\n" " \n" " Опции:\n" @@ -3490,7 +3817,8 @@ msgstr "" " Изходен код:\n" " 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ неÑъщеÑтвуваща ЗÐДÐЧÐ." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3502,7 +3830,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3523,25 +3852,30 @@ msgstr "" " -n СИГÐÐЛ\n" " СИГÐÐЛ Ñе интерпретира като номер на Ñигнал\n" " -l изброÑва имената на Ñигналите. Ðко към командата Ñа добавени\n" -" аргументи, те Ñе интерпретират като номера на Ñигналите чиито имена\n" +" аргументи, те Ñе интерпретират като номера на Ñигналите чиито " +"имена\n" " да Ñе изброÑÑ‚.\n" "\n" -" „kill“ е команда вградена в обвивката поради две причини: позволÑва да Ñе\n" -" използват и идентификатори на задачи оÑвен идентификатори на процеÑи, а и\n" -" ако Ñте пуÑнали макÑимално Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð·Ð° Ð²Ð°Ñ Ð±Ñ€Ð¾Ð¹ процеÑи, нÑма да ви Ñе\n" +" „kill“ е команда вградена в обвивката поради две причини: позволÑва да " +"Ñе\n" +" използват и идентификатори на задачи оÑвен идентификатори на процеÑи, а " +"и\n" +" ако Ñте пуÑнали макÑимално Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð·Ð° Ð²Ð°Ñ Ð±Ñ€Ð¾Ð¹ процеÑи, нÑма да ви " +"Ñе\n" " налага да пуÑнете още един процеÑ, за да убиете друг.\n" "\n" " Изходен код:\n" " 0. Ðко възникне грешка или е подадена неправилна опциÑ, връща грешка." -#: builtins.c:938 +#: builtins.c:942 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" @@ -3579,7 +3913,8 @@ msgid "" msgstr "" "ИзчиÑлÑване на аритметичен израз.\n" "\n" -" Ð’Ñеки ÐРГУМЕÐТ е аритметичен израз, който Ñе бъде изчиÑлен. ИзчиÑлениÑта\n" +" Ð’Ñеки ÐРГУМЕÐТ е аритметичен израз, който Ñе бъде изчиÑлен. " +"ИзчиÑлениÑта\n" " Ñе извършват в аритметика Ñ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñлени ÑтойноÑти Ñ Ð¿Ð¾ÑтоÑнна широчина\n" " без проверка за препълване. Делението на 0 Ñе прихваща и Ñе отбелÑзва\n" " грешка. СледващиÑÑ‚ ÑпиÑък Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¸ е разделен на групи Ñпоред\n" @@ -3605,86 +3940,105 @@ msgstr "" " =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=\n" " приÑвоÑване\n" " \n" -" Разрешено е ползването на променливи на обвивката като операнди. Името на\n" +" Разрешено е ползването на променливи на обвивката като операнди. Името " +"на\n" " променлива Ñе замеÑтва Ñ Ð½ÐµÐ¹Ð½Ð°Ñ‚Ð° ÑтойноÑÑ‚ (коÑто Ñе преобразува до цÑло\n" -" чиÑло Ñ Ð¿Ð¾ÑтоÑнна широчина) в израза. Ðе е необходимо променливата да е Ñ\n" +" чиÑло Ñ Ð¿Ð¾ÑтоÑнна широчина) в израза. Ðе е необходимо променливата да е " +"Ñ\n" " атрибут за целочиÑленоÑÑ‚, за да Ñе използва в израз.\n" " \n" -" Операторите Ñе изчиÑлÑват по приоритет. Подизразите в Ñкоби Ñе изчиÑлÑват\n" +" Операторите Ñе изчиÑлÑват по приоритет. Подизразите в Ñкоби Ñе " +"изчиÑлÑват\n" " първи и могат да променÑÑ‚ приоритета.\n" " \n" " Изходен код:\n" " Ðко поÑледниÑÑ‚ ÐРГУМЕÐТ Ñе изчиÑлÑва като 0, „let“ връща 1. Ð’ противен\n" " Ñлучай — връща 0." -#: builtins.c:983 +#: builtins.c:987 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" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out\n" -" (in which case it's greater than 128), a variable assignment error occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" "Изчитане на ред от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ и разделÑнето му по полета.\n" "\n" -" От ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ или от Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор ФД, ако е използвана опциÑта\n" -" „-u“, Ñе прочита един ред. Редът Ñе Ñ€Ð°Ð·Ð´ÐµÐ»Ñ Ð½Ð° полета — думи. Първата дума\n" +" От ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ или от Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор ФД, ако е използвана " +"опциÑта\n" +" „-u“, Ñе прочита един ред. Редът Ñе Ñ€Ð°Ð·Ð´ÐµÐ»Ñ Ð½Ð° полета — думи. Първата " +"дума\n" " Ñе приÑвоÑва на първото ИМЕ, втората дума на второто ИМЕ и Ñ‚.н., а на\n" -" поÑледното ИМЕ Ñе приÑвоÑват оÑтаващите думи. Като разделители на думи Ñе\n" +" поÑледното ИМЕ Ñе приÑвоÑват оÑтаващите думи. Като разделители на думи " +"Ñе\n" " използват Ñамо знаците указани в променливата „IFS“.\n" "\n" -" Ðко не Ñа дадени ИМЕна, прочетениÑÑ‚ ред Ñе запазва в променливата „REPLY“.\n" +" Ðко не Ñа дадени ИМЕна, прочетениÑÑ‚ ред Ñе запазва в променливата " +"„REPLY“.\n" "\n" " Опции:\n" -" -a прочетените думи Ñе приÑвоÑват поÑледователно на елементите на МÐСИВа,\n" +" -a прочетените думи Ñе приÑвоÑват поÑледователно на елементите на " +"МÐСИВа,\n" " като индекÑÑŠÑ‚ му започва от 0.\n" -" -d РÐЗДелител\n" -" четенето продължава прочитането на Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð·Ð½Ð°Ðº, който приÑÑŠÑтва в\n" +" -d РÐЗДЕЛИТЕЛ\n" +" четенето продължава до прочитането на Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð·Ð½Ð°Ðº, който приÑÑŠÑтва " +"в\n" " променливата „DELIM“, а не до минаването на нов ред.\n" " -e за четене на реда Ñе използва readline, когато обвивката е\n" " интерактивна.\n" " -i ТЕКСТ\n" " за първоначален текÑÑ‚ в readline Ñе ползва ТЕКСТ\n" " -n БРОЙ_ЗÐÐЦИ\n" -" четенето завършва Ñлед прочитането на този БРОЙ_ЗÐÐЦИ, не Ñе чака за\n" +" четенето завършва Ñлед прочитането на този БРОЙ_ЗÐÐЦИ, не Ñе чака " +"за\n" " нов ред. Разделител в рамките на този БРОЙ_ЗÐÐЦИ Ñе зачита.\n" " -N БРОЙ_ЗÐÐЦИ\n" -" четенето завършва Ñ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½ÐµÑ‚Ð¾ на точно този БРОЙ_ЗÐÐЦИ, оÑвен ако\n" +" четенето завършва Ñ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½ÐµÑ‚Ð¾ на точно този БРОЙ_ЗÐÐЦИ, оÑвен " +"ако\n" " не Ñе поÑви EOF или времето за изчакване на въвеждане не изтече.\n" " Ð’Ñички разделители Ñе пренебрегват.\n" " -p ПОДСКÐЗКÐ\n" @@ -3693,21 +4047,27 @@ msgstr "" " -r замеÑтването на екранираните Ñ â€ž\\“ знаци Ñе изключва.\n" " -s входът от терминал не Ñе отпечатва на екрана.\n" " -t БРОЙ_СЕКУÐДИ\n" -" задава интервал от този БРОЙ_СЕКУÐДИ, в който трÑбва да Ñе въведе цÑл\n" +" задава интервал от този БРОЙ_СЕКУÐДИ, в който трÑбва да Ñе въведе " +"цÑл\n" " ред. Ð’ противен Ñлучай read завършва Ñ Ð³Ñ€ÐµÑˆÐºÐ°. Ðко е зададена,\n" -" ÑтойноÑтта на променливата „TMOUT“ обозначава времето, за което трÑбва\n" -" да Ñе въведе редът. За БРОЙ_СЕКУÐДИ може да Ñе ползва и нецÑло чиÑло.\n" -" Ðко БРОЙ_СЕКУÐДИ e 0, read незабавно завършва работа, без да Ñе опитва\n" -" да чете данни и връща код 0, Ñамо ако от ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² деÑкриптор\n" +" ÑтойноÑтта на променливата „TMOUT“ обозначава времето, за което " +"трÑбва\n" +" да Ñе въведе редът. За БРОЙ_СЕКУÐДИ може да Ñе ползва и нецÑло " +"чиÑло.\n" +" Ðко БРОЙ_СЕКУÐДИ e 0, read незабавно завършва работа, без да Ñе " +"опитва\n" +" да чете данни и връща код 0, Ñамо ако от ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² " +"деÑкриптор\n" " могат да Ñе прочетат данни.\n" "\n" " Изходен код:\n" -" 0, оÑвен ако не Ñе Ñрещне знак за край на файл EOF, изтече време повече от\n" +" 0, оÑвен ако не Ñе Ñрещне знак за край на файл EOF, изтече време повече " +"от\n" " указаното в БРОЙ_СЕКУÐДИ, при което кодът за изход е над 128, възникне\n" " грешка при задаване на ÑтойноÑÑ‚ на променлива или е зададен неправилен\n" " файлов деÑкриптор като аргумент на -u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3721,14 +4081,17 @@ msgstr "" "Връщане от Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката.\n" "\n" " Кара изпълнÑваната Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ Ñкрипт да завършат работа ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð¸Ñ\n" -" изходен ЦИФРОВ_КОД. Ðко не е зададен ЦИФРОВ_КОД Ñе използва Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на\n" +" изходен ЦИФРОВ_КОД. Ðко не е зададен ЦИФРОВ_КОД Ñе използва Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ " +"на\n" " поÑледно изпълнената команда във функциÑта или Ñкрипта.\n" "\n" " Изходен код:\n" -" Връща ЦИФРОВиÑ_КОД или грешка, ако обвивката в момента не изпълнÑва функциÑ\n" +" Връща ЦИФРОВиÑ_КОД или грешка, ако обвивката в момента не изпълнÑва " +"функциÑ\n" " или Ñкрипт." -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3771,7 +4134,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" @@ -3795,7 +4159,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3820,10 +4185,13 @@ msgstr "" " -a ОтбелÑзване на променливите, които Ñа Ñъздадени или променени, да\n" " бъдат изнеÑени.\n" " -b Ðезабавно извеÑÑ‚Ñване на Ñпиране на задача.\n" -" -e Ðезабавен изход, ако команда приключи команда Ñ ÐºÐ¾Ð´, който не е 0.\n" -" -f Изключване на генерирането на имена на файлове (чрез „*“, „?“ и Ñ‚.н.).\n" +" -e Ðезабавен изход, ако команда приключи команда Ñ ÐºÐ¾Ð´, който не е " +"0.\n" +" -f Изключване на генерирането на имена на файлове (чрез „*“, „?“ и Ñ‚." +"н.).\n" " -h ЗапомнÑне на меÑтоположението на команди при търÑенето им.\n" -" -k Ð’Ñички аргументи за приÑвоÑване Ñе помеÑтват в Ñредата на команда, не\n" +" -k Ð’Ñички аргументи за приÑвоÑване Ñе помеÑтват в Ñредата на команда, " +"не\n" " Ñамо тези, които предхождат името на команда.\n" " -m Включване на управлението на задачи.\n" " -n Прочитане на команди, без да Ñе изпълнÑват.\n" @@ -3838,7 +4206,8 @@ msgstr "" " hashall Ñъщото като „-h“\n" " histexpand Ñъщото като „-H“\n" " history включване на иÑториÑта на командите\n" -" ignoreeof обвивката нÑма да излезе при откриване на знак за край\n" +" ignoreeof обвивката нÑма да излезе при откриване на знак за " +"край\n" " на файл „EOF“.\n" " interactive-comments\n" " позволÑване на коментари в интерактивните команди\n" @@ -3852,48 +4221,65 @@ msgstr "" " nounset Ñъщото като „-u“\n" " onecmd Ñъщото като „-t“\n" " physical Ñъщото като „-P“\n" -" pipefail изходниÑÑ‚ код на Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð» е този на поÑледната\n" +" pipefail изходниÑÑ‚ код на Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð» е този на " +"поÑледната\n" " команда, коÑто завършва Ñ ÐºÐ¾Ð´ различен от 0\n" -" posix промÑна на поведението на „bash“ да Ð¾Ñ‚Ð³Ð¾Ð²Ð°Ñ€Ñ Ð¿Ð¾-добре\n" +" posix промÑна на поведението на „bash“ да Ð¾Ñ‚Ð³Ð¾Ð²Ð°Ñ€Ñ Ð¿Ð¾-" +"добре\n" " на Ñтандарта POSIX\n" " privileged Ñъщото като „-p“\n" " verbose Ñъщото като „-v“\n" -" vi използване на Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð·Ð° редактиране подобен на „vi“\n" +" vi използване на Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð·Ð° редактиране подобен на " +"„vi“\n" " xtrace Ñъщото като „-x“\n" -" -p ОпциÑта e включена, когато реалниÑÑ‚ и ефективниÑÑ‚ идентификатори на\n" +" -p ОпциÑта e включена, когато реалниÑÑ‚ и ефективниÑÑ‚ идентификатори " +"на\n" " процеÑи не Ñъвпадат. Изключва обработката на файла поÑочен в\n" -" променливата „ENV“ и внаÑÑнето на функции на обвивката. Изключването\n" -" на тази Ð¾Ð¿Ñ†Ð¸Ñ Ð²Ð¾Ð´Ð¸ до това ефективните идентификатори за потребител и\n" +" променливата „ENV“ и внаÑÑнето на функции на обвивката. " +"Изключването\n" +" на тази Ð¾Ð¿Ñ†Ð¸Ñ Ð²Ð¾Ð´Ð¸ до това ефективните идентификатори за " +"потребител и\n" " група да Ñтанат равни на реалните.\n" " -t Изход Ñлед прочитането и изпълнението на една команда.\n" -" -u Ðезададените променливи да Ñе третират като грешки при замеÑтването.\n" +" -u Ðезададените променливи да Ñе третират като грешки при " +"замеÑтването.\n" " -v Отпечатване на входните редове към обвивката при прочитането им.\n" " -x Отпечатване на командите и аргументите им при изпълнението им.\n" " -B Обвивката ще извършва замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби.\n" -" -C ПредотвратÑване на презапиÑването на ÑъщеÑтвуващите обикновени файлове\n" +" -C ПредотвратÑване на презапиÑването на ÑъщеÑтвуващите обикновени " +"файлове\n" " чрез пренаÑочване на изхода.\n" " -E Прихващането за „ERR“ да Ñе наÑледÑва от функциите на обвивката.\n" -" -H Включване на замеÑтването чрез иÑториÑта Ñ â€ž!“. Стандартно тази опциÑ\n" +" -H Включване на замеÑтването чрез иÑториÑта Ñ â€ž!“. Стандартно тази " +"опциÑ\n" " е налична Ñамо за интерактивните обвивки.\n" -" -P Да не Ñе Ñледват Ñимволните връзки при изпълнението на команди като\n" +" -P Да не Ñе Ñледват Ñимволните връзки при изпълнението на команди " +"като\n" " „cd“, които променÑÑ‚ текущата директориÑ.\n" -" -T Прихващането за „DEBUG“ да Ñе наÑледÑва от функциите на обвивката.\n" -" -- ОÑтаващите аргументи да Ñе тълкуват като позиционни. Ðко нÑма повече\n" +" -T Прихващането за „DEBUG“ да Ñе наÑледÑва от функциите на " +"обвивката.\n" +" -- ОÑтаващите аргументи да Ñе тълкуват като позиционни. Ðко нÑма " +"повече\n" " аргументи, Ñе изтриват Ñъответните позиционни.\n" -" - ОÑтаващите аргументи да Ñе тълкуват като позиционни. Опциите „-x“ и\n" +" - ОÑтаващите аргументи да Ñе тълкуват като позиционни. Опциите „-x“ " +"и\n" " „-v“ Ñа изключени.\n" " \n" -" Използването на „+“ вмеÑто „-“ изключва опциите. Тези опции могат да Ñе\n" -" използват и при Ñтартирането на обвивката. Текущото им ÑÑŠÑтоÑние Ñе намира\n" -" в променливата „-“ (получава Ñе Ñ â€ž$-“). ОÑтаналите ÐРГументи Ñа позиционни\n" -" и Ñе приÑвоÑват Ñъответно на променливите Ñ Ð¸Ð¼ÐµÐ½Ð° „1“, „2“,… „n“ (получават\n" +" Използването на „+“ вмеÑто „-“ изключва опциите. Тези опции могат да " +"Ñе\n" +" използват и при Ñтартирането на обвивката. Текущото им ÑÑŠÑтоÑние Ñе " +"намира\n" +" в променливата „-“ (получава Ñе Ñ â€ž$-“). ОÑтаналите ÐРГументи Ñа " +"позиционни\n" +" и Ñе приÑвоÑват Ñъответно на променливите Ñ Ð¸Ð¼ÐµÐ½Ð° „1“, „2“,… " +"„n“ (получават\n" " Ñе Ñ â€ž$1“, „$2“,… „${n}“). Ðко не Ñа зададени ÐРГументи, Ñе извеждат\n" " вÑички променливи на Ñредата.\n" "\n" " Изходен код:\n" " 0, оÑвен ако не е зададена неправилна опциÑ." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3903,9 +4289,10 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -3913,7 +4300,8 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -"Изтриване на ÑтойноÑтите и атрибутите на променливите и функциите на обвивката.\n" +"Изтриване на ÑтойноÑтите и атрибутите на променливите и функциите на " +"обвивката.\n" " \n" " За вÑÑко ИМЕ изтрива Ñъответната променлива или функциÑ.\n" " \n" @@ -3933,12 +4321,13 @@ msgstr "" " 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е Ñамо за\n" " четене." -#: builtins.c:1148 +#: builtins.c:1154 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" @@ -3953,7 +4342,8 @@ msgstr "" "Задаване на атрибута за изнаÑÑне на променливите на обвивката.\n" " \n" " Обозначава вÑÑко едно от ИМЕната за изнаÑÑне в Ñредата на изпълнение на\n" -" поÑледващо изпълнените команди. Ðко е дадена СТОЙÐОСТ, Ñ‚Ñ Ñе приÑвоÑва на\n" +" поÑледващо изпълнените команди. Ðко е дадена СТОЙÐОСТ, Ñ‚Ñ Ñе приÑвоÑва " +"на\n" " ИМЕто преди изнаÑÑнето.\n" " \n" " Опции:\n" @@ -3965,9 +4355,10 @@ msgstr "" " Ðргументът „--“ прекъÑва по нататъшната обработка на опции.\n" " \n" " Изходен код:\n" -" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е неправилно." +" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е " +"неправилно." -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3979,8 +4370,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3989,23 +4380,27 @@ msgid "" msgstr "" "Задаване на променливи на обвивката като непроменливи конÑтанти.\n" " \n" -" ОтбелÑзване на вÑÑко от ИМЕната Ñамо за четене. ТÑхната ÑтойноÑÑ‚ не може да\n" -" бъде променÑна чрез поÑледващо приÑвоÑване. Ðко е дадена СТОЙÐОСТ, Ñ‚Ñ Ñе\n" +" ОтбелÑзване на вÑÑко от ИМЕната Ñамо за четене. ТÑхната ÑтойноÑÑ‚ не " +"може да\n" +" бъде променÑна чрез поÑледващо приÑвоÑване. Ðко е дадена СТОЙÐОСТ, Ñ‚Ñ " +"Ñе\n" " задава на името преди задаването му като конÑтантно.\n" " \n" " Опции:\n" " -a ИМЕната Ñа на променливи-маÑиви\n" " -A ИМЕната Ñа на променливи-аÑоциативни маÑиви\n" " -f ИМЕната Ñа на функции на обвивката\n" -" -p Извеждане на имената на вÑички конÑтантни променливи или функции, в\n" +" -p Извеждане на имената на вÑички конÑтантни променливи или " +"функции, в\n" " завиÑимоÑÑ‚ дали е зададена опциÑта „-f“\n" " \n" " Ðргументът „--“ прекъÑва по нататъшната обработка на опции.\n" " \n" " Изходен код:\n" -" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е неправилно." +" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е " +"неправилно." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4017,14 +4412,15 @@ msgid "" msgstr "" "ИзмеÑтване на позиционните параметри.\n" "\n" -" Преименуване на позиционните параметри „БРОЙ+1“, „БРОЙ+2“… на 1, 2…. Така\n" +" Преименуване на позиционните параметри „БРОЙ+1“, „БРОЙ+2“… на 1, 2…. " +"Така\n" " те Ñтават доÑтъпни не като ${БРОЙ+1}…, като „$1“…. Ðко не е зададена\n" " ÑтойноÑÑ‚ БРОЙ, Ñе използва 1.\n" "\n" " Изходен код:\n" " 0, оÑвен ако БРОÑÑ‚ е отрицателно или по-голÑмо от ÑтойноÑтта „$#“." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4039,16 +4435,19 @@ msgid "" msgstr "" "ИзпълнÑване на команди от файл в текущата обвивка\n" "\n" -" Изчитане и изпълнение на командите от ФÐЙЛа и изход. Директориите опиÑани в\n" -" променливата „PATH“ Ñе използват за изпълнението на командите от ФÐЙЛа. Ðко\n" +" Изчитане и изпълнение на командите от ФÐЙЛа и изход. Директориите " +"опиÑани в\n" +" променливата „PATH“ Ñе използват за изпълнението на командите от ФÐЙЛа. " +"Ðко\n" " Ñа зададени ÐРГУМЕÐТИ, те Ñе превръщат в позиционни аргументи при\n" " изпълнението на ФÐЙЛа.\n" "\n" " Изходен код:\n" -" Връща ÑÑŠÑтоÑнието на поÑледно изпълнената команда във ФÐЙЛа. Ðко той не\n" +" Връща ÑÑŠÑтоÑнието на поÑледно изпълнената команда във ФÐЙЛа. Ðко той " +"не\n" " може да бъде открит, изходът е грешка." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4064,7 +4463,8 @@ msgstr "" "Временно Ñпиране на изпълнението на обвивката.\n" " \n" " Спиране на работата на тази обвивка докато обвивката не получи Ñигнал\n" -" SIGCONT. ОÑвен ако изрично не Ñе зададе опциÑ, входните обвивки не могат да\n" +" SIGCONT. ОÑвен ако изрично не Ñе зададе опциÑ, входните обвивки не " +"могат да\n" " бъдат Ñпрени по този начин.\n" " \n" " Опции:\n" @@ -4073,7 +4473,7 @@ msgstr "" " Изходен код:\n" " 0, оÑвен ако не възникне грешка или управлението на задачи е изключено." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4107,7 +4507,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" @@ -4128,15 +4529,17 @@ 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" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4154,9 +4557,12 @@ msgid "" msgstr "" "ИзчиÑлÑване на уÑловен израз.\n" "\n" -" Изход Ñ ÐºÐ¾Ð´ 0 (иÑтина) или 1 (лъжа) в завиÑимоÑÑ‚ от ÑтойноÑтта на ИЗРÐЗа.\n" -" Изразите могат да бъдат унарни или бинарни. Унарните най-чеÑто Ñе използват\n" -" за проверка на ÑÑŠÑтоÑнието на файл. ОÑвен Ñ‚ÑÑ… има и оператори за чиÑлови\n" +" Изход Ñ ÐºÐ¾Ð´ 0 (иÑтина) или 1 (лъжа) в завиÑимоÑÑ‚ от ÑтойноÑтта на " +"ИЗРÐЗа.\n" +" Изразите могат да бъдат унарни или бинарни. Унарните най-чеÑто Ñе " +"използват\n" +" за проверка на ÑÑŠÑтоÑнието на файл. ОÑвен Ñ‚ÑÑ… има и оператори за " +"чиÑлови\n" " ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð¸ низови оператори.\n" " \n" " Поведението на теÑтовете завиÑи от Ð±Ñ€Ð¾Ñ Ð½Ð° аргументите. За цÑлоÑтно\n" @@ -4180,14 +4586,18 @@ msgstr "" " -s ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде запиÑван от ваÑ.\n" " -S ФÐЙЛ ИÑтина, ако ФÐЙЛът е програмно гнездо.\n" " -t ФДСК ИÑтина, ако ФайловиÑÑ‚_ДеСКриптор е отворен на терминал.\n" -" -u ФÐЙЛ ИÑтина, ако ФÐЙЛът е ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½ бит за ÑмÑна на потребител\n" +" -u ФÐЙЛ ИÑтина, ако ФÐЙЛът е ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½ бит за ÑмÑна на " +"потребител\n" " при изпълнение.\n" " -w ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде запиÑван от ваÑ.\n" " -x ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде изпълнÑван от ваÑ.\n" -" -O ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде ефективно притежаван от ваÑ.\n" -" -G ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде ефективно притежаван от вашата\n" +" -O ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде ефективно притежаван от " +"ваÑ.\n" +" -G ФÐЙЛ ИÑтина, ако ФÐЙЛът може да бъде ефективно притежаван от " +"вашата\n" " група.\n" -" -N ФÐЙЛ ИÑтина, ако ФÐЙЛът е бил променÑн от поÑледното му прочитане.\n" +" -N ФÐЙЛ ИÑтина, ако ФÐЙЛът е бил променÑн от поÑледното му " +"прочитане.\n" " \n" " ФÐЙЛ_1 -nt ФÐЙЛ_2 ИÑтина, ако ФÐЙЛ_1 е по-нов от ФÐЙЛ_2 (Ñпоред\n" " датата на промÑна).\n" @@ -4209,19 +4619,23 @@ msgstr "" " Други оператори:\n" " \n" " -o ОПЦИЯ ИÑтина, ако ОПЦИЯта на обвивката е зададена.\n" -" -v ПРОМЕÐЛИВРИÑтина, ако ПРОМЕÐЛИВÐта на обвивката е зададена.\n" -" -R ПРОМЕÐЛИВРИÑтина, ако ПРОМЕÐЛИВÐта е зададена като променлива-\n" +" -v ПРОМЕÐЛИВРИÑтина, ако ПРОМЕÐЛИВÐта на обвивката е " +"зададена.\n" +" -R ПРОМЕÐЛИВРИÑтина, ако ПРОМЕÐЛИВÐта е зададена като " +"променлива-\n" " указател.\n" " ! ИЗРÐЗ ИÑтина, ако ИЗРÐЗът е лъжа.\n" " ИЗРÐЗ_1 -a ИЗРÐЗ_2 ИÑтина, ако и двата ИЗРÐЗа Ñа иÑтина.\n" " ИЗРÐЗ_1 -o ИЗРÐЗ_2 ИÑтина, ако поне един от ИЗРÐЗите е иÑтина.\n" " ÐРГ_1 ОПЕР ÐРГ_2 Ðритметични теÑтове. Те връщат иÑтина, ако Ñе\n" " изпълнÑва математичеÑкото уÑловие на ОПЕРатора,\n" -" който е един от Ñледните (значението е в Ñкоби):\n" +" който е един от Ñледните (значението е в " +"Ñкоби):\n" " „-eq“ (=), „-ne“ (!=), „-lt“ (<), „-le“ (<=),\n" " „-gt“ (>) , „-ge“ (>=).\n" " \n" -" Ðритметичните изрази завършват иÑтинно, ако ÐРГумент_1 е Ñъответно равен,\n" +" Ðритметичните изрази завършват иÑтинно, ако ÐРГумент_1 е Ñъответно " +"равен,\n" " неравен, по-малък, по-малък или равен, по-голÑм, по-голÑм или равен на\n" " ÐРГумент_2.\n" " \n" @@ -4229,7 +4643,7 @@ msgstr "" " 0, ако ИЗРÐЗът е верен. Грешка, когато ИЗРÐЗът е неверен или е даден\n" " неправилен аргумент." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4238,15 +4652,18 @@ msgid "" msgstr "" "ИзчиÑлÑване на уÑловен израз.\n" "\n" -" Това е Ñиноним на вградената команда „test“, но поÑледниÑÑ‚ аргумент трÑбва\n" -" задължително да е знакът „]“, който да ÑъответÑтва на отварÑщата квадратна\n" +" Това е Ñиноним на вградената команда „test“, но поÑледниÑÑ‚ аргумент " +"трÑбва\n" +" задължително да е знакът „]“, който да ÑъответÑтва на отварÑщата " +"квадратна\n" " Ñкоба „[“." -#: builtins.c:1338 +#: builtins.c:1345 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" @@ -4254,17 +4671,19 @@ msgid "" msgstr "" "Извеждане на времето на работа на процеÑите.\n" " \n" -" Отпечатва общото потребителÑко и ÑиÑтемно време на работа на обвивката и\n" +" Отпечатва общото потребителÑко и ÑиÑтемно време на работа на обвивката " +"и\n" " вÑичките Ñ Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸ процеÑи.\n" " \n" " Изходен код:\n" " Винаги 0." -#: builtins.c:1350 +#: builtins.c:1357 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" @@ -4273,43 +4692,57 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" "Прихващане на Ñигналите и другите ÑъбитиÑ.\n" "\n" -" Дефинира и задейÑтва функции за обработка, когато обвивката получи Ñигнал\n" +" Дефинира и задейÑтва функции за обработка, когато обвивката получи " +"Ñигнал\n" " или възникне друго Ñъбитие.\n" "\n" -" Командата ÐРГУМЕÐТ ще бъде прочетена и изпълнена, когато обвивката получи\n" +" Командата ÐРГУМЕÐТ ще бъде прочетена и изпълнена, когато обвивката " +"получи\n" " УКÐЗÐÐиÑ_СИГÐÐЛ(и). Ðко ÐРГУМЕÐТът липÑва (и Ñе подава единичен\n" -" УКÐЗÐÐ_СИГÐÐЛ) или е „-“, то вÑеки УКÐЗÐÐ_СИГÐÐЛ Ñе връща към първоначалната\n" +" УКÐЗÐÐ_СИГÐÐЛ) или е „-“, то вÑеки УКÐЗÐÐ_СИГÐÐЛ Ñе връща към " +"първоначалната\n" " Ñи ÑтойноÑÑ‚. Ðко ÐРГУМЕÐТът е нулевиÑÑ‚ низ, вÑеки УКÐЗÐÐ_СИГÐÐЛ Ñе\n" " пренебрегва от обвивката и командите, които Ñе Ñтартират през неÑ.\n" "\n" -" Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „EXIT (0)“, то командата ÐРГУМЕÐТ Ñе изпълнÑва от\n" +" Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „EXIT (0)“, то командата ÐРГУМЕÐТ Ñе изпълнÑва " +"от\n" " обвивката при изход. Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „DEBUG“, ÐРГУМЕÐТът Ñе\n" " изпълнÑва Ñлед вÑÑка проÑта команда. Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „RETURN“,\n" -" ÐРГУМЕÐТът Ñе изпълнÑва Ñлед вÑÑко изпълнение на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÐºÐ°ÐºÑ‚Ð¾ и изпълнение\n" -" на Ñкрипт чрез вградените команди „.“ и „source“. Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е\n" +" ÐРГУМЕÐТът Ñе изпълнÑва Ñлед вÑÑко изпълнение на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÐºÐ°ÐºÑ‚Ð¾ и " +"изпълнение\n" +" на Ñкрипт чрез вградените команди „.“ и „source“. Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ " +"е\n" " „ERR“, ÐРГУМЕÐТът Ñе изпълнÑва Ñлед вÑÑка грешка, коÑто би предизвикала\n" " изход от обвивката при Ñтартирането Ñ Ñ Ð¾Ð¿Ñ†Ð¸Ñта „-e“.\n" "\n" @@ -4317,19 +4750,23 @@ msgstr "" " прихващаниÑ.\n" " \n" " Опции:\n" -" -l отпечатва ÑпиÑъка Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на Ñигналите и ÑъответÑтващите им номера.\n" +" -l отпечатва ÑпиÑъка Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на Ñигналите и ÑъответÑтващите им " +"номера.\n" " -p извеждат Ñе командите Ñвързани Ñ Ð²Ñеки УКÐЗÐÐ_СИГÐÐЛ.\n" "\n" -" Ð’Ñеки УКÐЗÐÐ_СИГÐÐЛ е или име на Ñигнал от файла „signal.h“ или номер на\n" +" Ð’Ñеки УКÐЗÐÐ_СИГÐÐЛ е или име на Ñигнал от файла „signal.h“ или номер " +"на\n" " Ñигнал.\n" -" ÐÑма разлика между главни и малки букви в имената на Ñигнали, а предÑтавката\n" +" ÐÑма разлика между главни и малки букви в имената на Ñигнали, а " +"предÑтавката\n" " „SIG“ не е задължителна.\n" -" Сигнал може да бъде изпратен на обвивката Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „kill -signal $$“.\n" +" Сигнал може да бъде изпратен на обвивката Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „kill -signal $" +"$“.\n" "\n" " Изходен код:\n" " 0, оÑвен ако е зададен неправилен Ñигнал или опциÑ." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4338,24 +4775,25 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" "Извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вида на командата подадена като аргумент.\n" " \n" @@ -4363,31 +4801,38 @@ msgstr "" " команда.\n" " \n" " Опции:\n" -" -a Извеждане на вÑички меÑтоположениÑ, които Ñъдържат изпълним файл Ñ\n" +" -a Извеждане на вÑички меÑтоположениÑ, които Ñъдържат изпълним файл " +"Ñ\n" " това ИМЕ. Включва Ñинонимите, вградените команди и функции на\n" " обвивката, Ñамо когато не е използвана опциÑта „-p“\n" " -f Без търÑене във функциите дефинирани в обвивката\n" -" -P ТърÑене в Ð¿ÑŠÑ‚Ñ Ð·Ð° изпълнение указан в PATH, дори и ако ÑъщеÑтвува\n" -" Ñиноним, вградена команда или Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð° в обвивката Ñ Ñ‚Ð¾Ð²Ð°\n" +" -P ТърÑене в Ð¿ÑŠÑ‚Ñ Ð·Ð° изпълнение указан в PATH, дори и ако " +"ÑъщеÑтвува\n" +" Ñиноним, вградена команда или Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð° в обвивката Ñ " +"това\n" " ИМЕ\n" " -p Връща или името на файла, който ще бъде изпълнен или нищо в\n" " Ñлучаите, когато командата „type -t ИМЕ“ не би върнала „file“\n" " -t Извеждане на една от думите „alias“ (Ñиноним), „keyword“\n" -" (резервирана лекÑема в обвивката), „function“ (Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð° в\n" -" обвивката), „builtin“ (вградена команда), „file“ (изпълним файл) или\n" +" (резервирана лекÑема в обвивката), „function“ (Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ " +"дефинирана в\n" +" обвивката), „builtin“ (вградена команда), „file“ (изпълним файл) " +"или\n" " „“, ако ИМЕто не е открито\n" " \n" " Ðргументи:\n" " ИМЕ Името, за което да Ñе изведе информациÑ.\n" " \n" " Изходен код:\n" -" 0, ако вÑички подадени ИМЕна Ñа открити, неуÑпех, ако нÑкое от Ñ‚ÑÑ… липÑва." +" 0, ако вÑички подадени ИМЕна Ñа открити, неуÑпех, ако нÑкое от Ñ‚ÑÑ… " +"липÑва." -#: builtins.c:1417 +#: builtins.c:1424 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" @@ -4400,6 +4845,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4411,7 +4857,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4431,7 +4878,8 @@ msgstr "" "ПромÑна на реÑурÑите на обвивката.\n" "\n" " Командата оÑъщеÑтвÑва контрол върху реÑурÑите, които Ñа доÑтъпни на\n" -" процеÑите Ñтартирани през обвивката върху ÑиÑтемите, които поддържат такова\n" +" процеÑите Ñтартирани през обвивката върху ÑиÑтемите, които поддържат " +"такова\n" " управление.\n" "\n" " Опции:\n" @@ -4443,7 +4891,8 @@ msgstr "" " паметта (core)\n" " -d макÑималниÑÑ‚ размер на Ñегмента на Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° данни\n" " -e макÑималниÑÑ‚ приоритет (nice)\n" -" -f макÑималниÑÑ‚ размер на файловете Ñъздадени от обвивката и дъщерните\n" +" -f макÑималниÑÑ‚ размер на файловете Ñъздадени от обвивката и " +"дъщерните\n" " Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑи\n" " -i макÑималниÑÑ‚ брой на изчакващите Ñигнали\n" " -l макÑималниÑÑ‚ размер памет, коÑто Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¼Ð¾Ð¶Ðµ да заключи\n" @@ -4457,14 +4906,18 @@ msgstr "" " -u макÑималниÑÑ‚ брой потребителÑки процеÑи\n" " -v размерът на виртуалната памет\n" " -x макÑималниÑÑ‚ брой Ð·Ð°ÐºÐ»ÑŽÑ‡Ð²Ð°Ð½Ð¸Ñ Ð½Ð° файлове\n" -" -x макÑималниÑÑ‚ брой нишки\n" +" -P макÑималниÑÑ‚ брой пÑевдотерминали\n" +" -T макÑималниÑÑ‚ брой нишки\n" " \n" " Ðе вÑички Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ñа налични на вÑички платформи.\n" "\n" -" Ðко е зададено ОГРÐÐИЧЕÐИЕ, то това е новата ÑтойноÑÑ‚ на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ€ÐµÑурÑ.\n" -" Специалните ÑтойноÑти „soft“, „hard“ и „unlimited“ означават текущите меко,\n" +" Ðко е зададено ОГРÐÐИЧЕÐИЕ, то това е новата ÑтойноÑÑ‚ на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ " +"реÑурÑ.\n" +" Специалните ÑтойноÑти „soft“, „hard“ и „unlimited“ означават текущите " +"меко,\n" " твърдо и никакво ограничение Ñъответно. Ð’ противен Ñлучай Ñе извежда\n" -" текущата ÑтойноÑÑ‚ на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ€ÐµÑурÑ. Ðко не е зададена опциÑ, Ñе приема,\n" +" текущата ÑтойноÑÑ‚ на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ€ÐµÑурÑ. Ðко не е зададена опциÑ, Ñе " +"приема,\n" " че е зададена „-f“.\n" "\n" " СтойноÑтите Ñа в блокове от по 1024 байта, Ñ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ на:\n" @@ -4475,7 +4928,7 @@ msgstr "" " Изходен код:\n" " 0, оÑвен ако не възникни грешка или е дадена неправилна опциÑ." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4497,25 +4950,30 @@ msgstr "" " Задава МÐСКÐта за правата за доÑтъп до новоÑъздадени файлове. Ðко не е\n" " зададена МÐСКÐ, Ñе извежда текущата Ñ ÑтойноÑÑ‚.\n" " \n" -" Ðко МÐСКÐта започва Ñ Ñ†Ð¸Ñ„Ñ€Ð°, Ñ‚Ñ Ñе тълкува като оÑмично чиÑло. Ð’ противен\n" +" Ðко МÐСКÐта започва Ñ Ñ†Ð¸Ñ„Ñ€Ð°, Ñ‚Ñ Ñе тълкува като оÑмично чиÑло. Ð’ " +"противен\n" " Ñлучай трÑбва да е низ, който би бил приет от командата chmod(1).\n" " \n" " Опции:\n" -" -p ако не е зададена МÐСКÐ, изведениÑÑ‚ низ може да бъде ползван за вход\n" -" -S изведената маÑка да е във вид на ÐИЗ. Без опциÑта изходът е оÑмично\n" +" -p ако не е зададена МÐСКÐ, изведениÑÑ‚ низ може да бъде ползван за " +"вход\n" +" -S изведената маÑка да е във вид на ÐИЗ. Без опциÑта изходът е " +"оÑмично\n" " чиÑло\n" " \n" " Изходен код:\n" " 0, оÑвен ако МÐСКÐта или нÑÐºÐ¾Ñ Ð¾Ñ‚ зададените опции Ñа неправилни." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all processes\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" @@ -4528,42 +4986,49 @@ msgstr "" "Изчакване на завършването задача и връщане на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´.\n" " \n" " Изчакване на вÑички указани ИДентификатори, които могат да Ñа номера на\n" -" процеÑи или указатели на задачи, и докладване на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. Ðко не е\n" +" процеÑи или указатели на задачи, и докладване на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. Ðко не " +"е\n" " зададен ИДентификатор, Ñе изчакват вÑички активни дъщерни процеÑи, а\n" -" изходниÑÑ‚ код е 0. Ðко ИДентификаторът е указател на задача, Ñе изчакват\n" +" изходниÑÑ‚ код е 0. Ðко ИДентификаторът е указател на задача, Ñе " +"изчакват\n" " вÑички процеÑи в конвейера на задачата.\n" "\n" -" Ðко е зададена опциÑта „-n“ Ñе изчаква ÐºÑ€Ð°Ñ Ð½Ð° работата на Ñледващата задача\n" +" Ðко е зададена опциÑта „-n“ Ñе изчаква ÐºÑ€Ð°Ñ Ð½Ð° работата на Ñледващата " +"задача\n" " и Ñе връща Ð½ÐµÐ¹Ð½Ð¸Ñ ÐºÐ¾Ð´.\n" " \n" " Изходен код:\n" " Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледната задача или процеÑ. Ðко е зададена\n" " неправилна опциÑ, връща грешка." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for each process specified by a PID and reports its termination status.\n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" " If PID is not given, waits for all currently active child processes,\n" " and the return status is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of the last PID; fails if PID is invalid or an invalid\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" " option is given." msgstr "" "Изчакване на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸ докладване за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´.\n" "\n" -" Изчакване на вÑички указани процеÑи и докладване за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. Ðко не е\n" +" Изчакване на вÑички указани процеÑи и докладване за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. Ðко " +"не е\n" " зададен ИДентификатор_ПРоцeÑ, вÑички текущо активни дъщерни процеÑи Ñе\n" -" изчакват и изходниÑÑ‚ код е 0. ИДентификатор_ПРоцeÑ Ñ‚Ñ€Ñбва да ÑъответÑтва на\n" +" изчакват и изходниÑÑ‚ код е 0. ИДентификатор_ПРоцeÑ Ñ‚Ñ€Ñбва да " +"ÑъответÑтва на\n" " нÑкой процеÑ.\n" "\n" " Изходен код:\n" " Ð˜Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на процеÑа Ñ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€. Грешка, ако е даден\n" " неправилен идентификатор или е дадена неправилна опциÑ." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4577,15 +5042,18 @@ msgid "" msgstr "" "Изпълнение на команда за вÑеки член в ÑпиÑък от елементи\n" "\n" -" Цикълът „for“ изпълнÑва поÑледователноÑÑ‚ от команди за вÑеки член в ÑпиÑък\n" -" от елементи. Ðко блокът „в ДУМИ…“ не приÑÑŠÑтва, използва Ñе „in \"$@\"“.\n" -" За вÑеки елемент в ДУМИте, ИМЕто Ñе задава да е елементът и Ñе изпълнÑват\n" +" Цикълът „for“ изпълнÑва поÑледователноÑÑ‚ от команди за вÑеки член в " +"ÑпиÑък\n" +" от елементи. Ðко блокът „в ДУМИ…“ не приÑÑŠÑтва, използва Ñе „in \"$@" +"\"“.\n" +" За вÑеки елемент в ДУМИте, ИМЕто Ñе задава да е елементът и Ñе " +"изпълнÑват\n" " КОМÐÐДИте.\n" "\n" " Изходен код:\n" " Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4608,13 +5076,14 @@ msgstr "" " КОМÐÐДИ\n" " (( EXP_3 ))\n" " done\n" -" ИЗРÐЗ_1, ИЗРÐЗ_2, и ИЗРÐЗ_3 Ñа аритметични изрази. Ð’Ñеки изпуÑнат израз Ñе\n" +" ИЗРÐЗ_1, ИЗРÐЗ_2, и ИЗРÐЗ_3 Ñа аритметични изрази. Ð’Ñеки изпуÑнат израз " +"Ñе\n" " изчиÑлÑва да е 1.\n" "\n" " Изходен код:\n" " Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4637,12 +5106,18 @@ msgstr "" "\n" " ДУМИте биват замеÑтвани, което води до Ñъздаването на ÑпиÑък Ñ Ð´ÑƒÐ¼Ð¸.\n" " Ðаборът от замеÑтените думи бива отпечатан на изхода за Ñтандартната\n" -" грешка, като вÑÑка от Ñ‚ÑÑ… Ñе предшеÑтва от номер. Ðко клаузата „in ДУМИ“\n" -" липÑва, използва Ñе „in \"$@\"“. Ð’ такива Ñлучаи Ñе отпечатва подÑказката\n" -" „PS3“ и от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ Ñе прочита ред. Ðко редът Ñе ÑÑŠÑтои от номера,\n" -" който ÑъответÑтва на нÑÐºÐ¾Ñ Ð¾Ñ‚ изведените думи, ИМЕто Ñе задава да е тази\n" -" дума. Ðко редът е празен, отново Ñе отпечатват ДУМИте и подÑказката. Ðко\n" -" Ñе прочете „EOF“, командата завършва. Ð’ÑÑка друга ÑтойноÑÑ‚ приÑвоÑва „null“\n" +" грешка, като вÑÑка от Ñ‚ÑÑ… Ñе предшеÑтва от номер. Ðко клаузата „in " +"ДУМИ“\n" +" липÑва, използва Ñе „in \"$@\"“. Ð’ такива Ñлучаи Ñе отпечатва " +"подÑказката\n" +" „PS3“ и от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ Ñе прочита ред. Ðко редът Ñе ÑÑŠÑтои от " +"номера,\n" +" който ÑъответÑтва на нÑÐºÐ¾Ñ Ð¾Ñ‚ изведените думи, ИМЕто Ñе задава да е " +"тази\n" +" дума. Ðко редът е празен, отново Ñе отпечатват ДУМИте и подÑказката. " +"Ðко\n" +" Ñе прочете „EOF“, командата завършва. Ð’ÑÑка друга ÑтойноÑÑ‚ приÑвоÑва " +"„null“\n" " на ИМЕ. ПрочетениÑÑ‚ ред Ñе запазва в променливата REPLY. КОМÐÐДИте Ñе\n" " изпълнÑват Ñлед вÑеки избор до изпълнÑването на команда за прекъÑване\n" " (break).\n" @@ -4650,7 +5125,7 @@ msgstr "" " Изходен код:\n" " Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4680,7 +5155,7 @@ msgstr "" " Изходен код:\n" " ИзходниÑÑ‚ код е този на ПРОГРÐМÐиÑ_КÐÐÐЛ." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4692,22 +5167,28 @@ msgid "" msgstr "" "Изпълнение на команди на базата на напаÑване по шаблон.\n" "\n" -" Избирателно Ñе изпълнÑват КОМÐÐДИ на база ДУМÐ, коÑто напаÑва на ШÐБЛОÐ.\n" +" Избирателно Ñе изпълнÑват КОМÐÐДИ на база ДУМÐ, коÑто напаÑва на " +"ШÐБЛОÐ.\n" " Шаблоните Ñе разделÑÑ‚ ÑÑŠÑ Ð·Ð½Ð°ÐºÐ° „|“.\n" "\n" " Изходен код:\n" " ИзходниÑÑ‚ код е този на поÑледно изпълнената команда." -#: builtins.c:1603 +#: builtins.c:1612 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" @@ -4715,20 +5196,26 @@ msgid "" msgstr "" "Изпълнение на команда на базата на уÑловие.\n" "\n" -" Първо Ñе изпълнÑват командите в блока „if КОМÐÐДИ“. Ðко изходниÑÑ‚ код е 0,\n" -" то Ñе изпълнÑва блокът „then КОМÐÐДИ“. Ð’ противен Ñлучай поÑледователно Ñе\n" -" изпълнÑва вÑеки блок „elif КОМÐÐДИ“ — ако изходниÑÑ‚ код е 0, то Ñе изпълнÑва\n" -" ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð±Ð»Ð¾Ðº „then КОМÐÐДИ“, Ñлед което завършва изпълнението на целиÑ\n" +" Първо Ñе изпълнÑват командите в блока „if КОМÐÐДИ“. Ðко изходниÑÑ‚ код е " +"0,\n" +" то Ñе изпълнÑва блокът „then КОМÐÐДИ“. Ð’ противен Ñлучай поÑледователно " +"Ñе\n" +" изпълнÑва вÑеки блок „elif КОМÐÐДИ“ — ако изходниÑÑ‚ код е 0, то Ñе " +"изпълнÑва\n" +" ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð±Ð»Ð¾Ðº „then КОМÐÐДИ“, Ñлед което завършва изпълнението на " +"целиÑ\n" " блок „if“.\n" " Ðко изходниÑÑ‚ код на никой от блоковете „if“ и „elif“ не е бил 0,\n" -" изпълнÑва Ñе блока „else КОМÐÐДИ“, Ñтига такъв да приÑÑŠÑтва. ИзходниÑÑ‚ код\n" -" от цÑлата конÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ðµ този на поÑледната изпълнена команда или е 0, ако\n" +" изпълнÑва Ñе блока „else КОМÐÐДИ“, Ñтига такъв да приÑÑŠÑтва. ИзходниÑÑ‚ " +"код\n" +" от цÑлата конÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ðµ този на поÑледната изпълнена команда или е 0, " +"ако\n" " никое теÑтово уÑловие, не Ñе е оценило като иÑтина.<\n" "\n" " Изходен код:\n" " ИзходниÑÑ‚ код е този на поÑледно изпълнената команда." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4746,7 +5233,7 @@ msgstr "" " Изходен код:\n" " ИзходниÑÑ‚ код е този на поÑледно изпълнената команда." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4764,7 +5251,8 @@ msgstr "" " Изходен код:\n" " ИзходниÑÑ‚ код е този на поÑледно изпълнената команда." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4774,24 +5262,27 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Създаване на ÐºÐ¾Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ Ð´Ð°Ð´ÐµÐ½Ð¾Ñ‚Ð¾ ИМЕ.\n" " \n" " ÐÑинхронно изпълнение на КОМÐÐДÐта, като Ñтандартните вход и изход Ñе\n" -" пренаÑочват от и към файловите деÑкриптори, които трÑбва да Ñа Ñ Ð¸Ð½Ð´ÐµÐºÑи\n" -" Ñъответно 0 и 1 в променливата-маÑив ИМЕ в изпълнÑваната обвивка. Ðко не е\n" +" пренаÑочват от и към файловите деÑкриптори, които трÑбва да Ñа Ñ " +"индекÑи\n" +" Ñъответно 0 и 1 в променливата-маÑив ИМЕ в изпълнÑваната обвивка. Ðко " +"не е\n" " дадено ИМЕ на променлива, Ñтандартно Ñе ползва „COPROC“.\n" " \n" " Изходен код:\n" " Ð˜Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на КОМÐÐДÐта." -#: builtins.c:1658 +#: builtins.c:1667 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" @@ -4800,15 +5291,18 @@ msgid "" msgstr "" "Дефиниране на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката.\n" " \n" -" Създаване на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð¾Ñ‚Ð¾ ИМЕ. Когато Ñе извика като\n" +" Създаване на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката ÑÑŠÑ Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð¾Ñ‚Ð¾ ИМЕ. Когато Ñе извика " +"като\n" " обикновена команда, КОМÐÐДИте Ñе изпълнÑват в контекÑта на извикващата\n" -" обвивка. При извикването на ИМЕто, аргументите подадени на функциÑта Ñа\n" -" доÑтъпни като $1,… , $9, а името на функциÑта е доÑтъпно като $FUNCNAME.\n" +" обвивка. При извикването на ИМЕто, аргументите подадени на функциÑта " +"Ñа\n" +" доÑтъпни като $1,… , $9, а името на функциÑта е доÑтъпно като " +"$FUNCNAME.\n" " \n" " Изходен код:\n" " 0, оÑвен ако ИМЕто не е Ñамо за четене." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4820,13 +5314,14 @@ msgid "" msgstr "" "Изпълнение на група от команди.\n" "\n" -" ИзпълнÑване на цÑл набор от команди в група. Това е един от начините да Ñе\n" +" ИзпълнÑване на цÑл набор от команди в група. Това е един от начините да " +"Ñе\n" " пренаÑочи цÑл набор от команди.\n" "\n" " Изходен код:\n" " ИзходниÑÑ‚ код е този на поÑледно изпълнената команда." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4850,7 +5345,7 @@ msgstr "" " Изходен код:\n" " ИзходниÑÑ‚ код е този възобновената задача." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4868,13 +5363,16 @@ msgstr "" " Изходен код:\n" " 1, ако резултатът на ИЗРÐЗа е 0. Ð’ противен Ñлучай — 0." -#: builtins.c:1711 +#: builtins.c:1720 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" @@ -4895,11 +5393,13 @@ msgstr "" "Изпълнение на команда-уÑловие\n" "\n" " Връща ÑÑŠÑтоÑние 0 или 1 в завиÑимоÑÑ‚ от оценката на уÑÐ»Ð¾Ð²Ð½Ð¸Ñ Ð˜Ð—Ð ÐЗ.\n" -" Изразите Ñа ÑÑŠÑтавени от Ñъщите примитиви, както вградената команда „test“\n" +" Изразите Ñа ÑÑŠÑтавени от Ñъщите примитиви, както вградената команда " +"„test“\n" " и могат да Ñе Ñъчетават чрез Ñледните оператори:\n" " \n" " ( ИЗРÐЗ ) Връща ÑтойноÑтта на ИЗРÐЗа\n" -" ! ИЗРÐЗ ИÑтина, ако ИЗРÐЗ Ñе Ð¾Ñ†ÐµÐ½Ñ Ð½Ð° лъжа, в оÑтаналите Ñлучаи е лъжа\n" +" ! ИЗРÐЗ ИÑтина, ако ИЗРÐЗ Ñе Ð¾Ñ†ÐµÐ½Ñ Ð½Ð° лъжа, в оÑтаналите Ñлучаи е " +"лъжа\n" " ИЗРÐЗ_1 && ИЗРÐЗ_2\n" " ИÑтина, ако едновременно ИЗРÐЗ_1 и ИЗРÐЗ_2 Ñа иÑтина, в\n" " оÑтаналите Ñлучаи е лъжа.\n" @@ -4908,7 +5408,8 @@ msgstr "" " оÑтаналите Ñлучаи е лъжа.\n" " \n" " Когато Ñе използват операторите „==“ и „!=“, низът от дÑÑната Ñтрана на\n" -" оператора Ñе използва като шаблон и Ñе извършва напаÑване. Когато Ñе ползва\n" +" оператора Ñе използва като шаблон и Ñе извършва напаÑване. Когато Ñе " +"ползва\n" " операторът „=~“, изразът от дÑÑната му Ñтрана Ñе тълкува като регулÑрен\n" " израз.\n" "\n" @@ -4918,7 +5419,7 @@ msgstr "" " Изходен код:\n" " 0 или едно Ñпоред ÑтойноÑтта на ИЗРÐЗа." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4976,22 +5477,30 @@ msgstr "" " BASH_VERSION Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта на bash\n" " CDPATH СпиÑък Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸ разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ, които да Ñе\n" " търÑÑÑ‚ като аргументи за командата „cd“\n" -" GLOBIGNORE СпиÑък Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸ на файлови имена, разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ,\n" +" GLOBIGNORE СпиÑък Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸ на файлови имена, разделени Ñ " +"двоеточие,\n" " които да Ñе игнорират от замеÑтването на пътÑ\n" -" HISTFILE Името на файла, в който Ñе ÑъхранÑва иÑториÑта на командите\n" -" HISTFILESIZE МакÑималниÑÑ‚ брой редове, които горниÑÑ‚ файл може да Ñъдържа\n" -" HISTSIZE МакÑималниÑÑ‚ брой редове, които една работеща обвивка може\n" +" HISTFILE Името на файла, в който Ñе ÑъхранÑва иÑториÑта на " +"командите\n" +" HISTFILESIZE МакÑималниÑÑ‚ брой редове, които горниÑÑ‚ файл може да " +"Ñъдържа\n" +" HISTSIZE МакÑималниÑÑ‚ брой редове, които една работеща обвивка " +"може\n" " да доÑтъпи\n" " HOME ПълниÑÑ‚ път до домашната ви директориÑ\n" " HOSTNAME Името на текущата машина\n" " HOSTTYPE Видът на процеÑора, под който работи текущата обвивка\n" -" IGNOREEOF УправлÑва дейÑтвието на обвивката при Ñрещането на единичен\n" -" знак за край на файл „EOF“. Ðко променливата е зададена, Ñ‚Ñ\n" +" IGNOREEOF УправлÑва дейÑтвието на обвивката при Ñрещането на " +"единичен\n" +" знак за край на файл „EOF“. Ðко променливата е " +"зададена, Ñ‚Ñ\n" " указва Ð±Ñ€Ð¾Ñ Ð½Ð° знаците „EOF“, който могат да Ñе Ñрещнат\n" -" ÑамоÑтоÑтелно на един ред, преди обвивката да завърши работа\n" +" ÑамоÑтоÑтелно на един ред, преди обвивката да завърши " +"работа\n" " и излезе (Ñтандартно е 10). Когато променливата не е\n" " зададена, един „EOF“ означава край на входÑщите данни\n" -" MACHTYPE Ðиз, който опиÑва текущата ÑиÑтема, на коÑто работи bash\n" +" MACHTYPE Ðиз, който опиÑва текущата ÑиÑтема, на коÑто работи " +"bash\n" " MAILCHECK Колко чеÑто bash да проверÑва за нови пиÑма (в Ñекунди)\n" " MAILPATH СпиÑък Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ, които bash проверÑва за нови пиÑма\n" " OSTYPE ВерÑиÑта на ЮникÑ, на коÑто работи bash\n" @@ -5004,27 +5513,39 @@ msgstr "" " SHELLOPTS СпиÑък Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ‚Ðµ опции на обвивката, разделени Ñ\n" " двоеточие\n" " TERM Името на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð²Ð¸Ð´ терминал\n" -" TIMEFORMAT ИзходниÑÑ‚ формат за ÑтатиÑтиката за времето за изпълнение на\n" +" TIMEFORMAT ИзходниÑÑ‚ формат за ÑтатиÑтиката за времето за " +"изпълнение на\n" " команда, който Ñе използва от запазената дума „time“\n" -" auto_resume СтойноÑÑ‚, коÑто не е „null“, означава, че командна дума,\n" -" коÑто Ñе поÑвÑва ÑамоÑтоÑтелно на ред, първо Ñе проверÑва в\n" -" ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ Ñпрените задачи. Ðко бъде открита там,\n" +" auto_resume СтойноÑÑ‚, коÑто не е „null“, означава, че командна " +"дума,\n" +" коÑто Ñе поÑвÑва ÑамоÑтоÑтелно на ред, първо Ñе " +"проверÑва в\n" +" ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ Ñпрените задачи. Ðко бъде открита " +"там,\n" " задачата Ñе пуÑка и Ñе Ñлага на преден план. СтойноÑÑ‚\n" -" „exact“ (Ñтрого Ñъвпадение) означава, че командната дума,\n" -" трÑбва точно да Ñъвпада Ñ Ð¸Ð¼ÐµÑ‚Ð¾ на команда в ÑпиÑъка ÑÑŠÑ\n" -" Ñпрени задачи. СтойноÑÑ‚ „substring“ (Ñъвпадение на подниз)\n" -" означава, че командната дума трÑбва да е подниз на задачата.\n" -" Ð’ÑÑка друга ÑтойноÑÑ‚ означава, че командата думата трÑбва да\n" +" „exact“ (Ñтрого Ñъвпадение) означава, че командната " +"дума,\n" +" трÑбва точно да Ñъвпада Ñ Ð¸Ð¼ÐµÑ‚Ð¾ на команда в ÑпиÑъка " +"ÑÑŠÑ\n" +" Ñпрени задачи. СтойноÑÑ‚ „substring“ (Ñъвпадение на " +"подниз)\n" +" означава, че командната дума трÑбва да е подниз на " +"задачата.\n" +" Ð’ÑÑка друга ÑтойноÑÑ‚ означава, че командата думата " +"трÑбва да\n" " е началото на ÑпрÑна задача\n" -" histchars Знаци, които определÑÑ‚ бързото замеÑтване и това по иÑториÑ.\n" -" ПървиÑÑ‚ знак е за замеÑтването по иÑториÑ, обикновено е „!“.\n" -" ВториÑÑ‚ е за бързото замеÑтване, обикновено е „^“. ТретиÑÑ‚\n" +" histchars Знаци, които определÑÑ‚ бързото замеÑтване и това по " +"иÑториÑ.\n" +" ПървиÑÑ‚ знак е за замеÑтването по иÑториÑ, обикновено е " +"„!“.\n" +" ВториÑÑ‚ е за бързото замеÑтване, обикновено е „^“. " +"ТретиÑÑ‚\n" " е за коментарите в иÑториÑта, обикновено е „#“\n" -" HISTIGNORE СпиÑък Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸, разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ, които указват кои\n" +" HISTIGNORE СпиÑък Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸, разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ, които указват " +"кои\n" " команди да не Ñе запазват в иÑториÑта\n" -# CONTINUE -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5034,19 +5555,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5060,29 +5581,36 @@ msgstr "" " като най-горна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñтава текущата директориÑ. Без\n" " аргументи ÑÐ¼ÐµÐ½Ñ Ð½Ð°Ð¹-горните две директории.\n" "\n" -" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ изваждането на\n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ изваждането " +"на\n" " Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ÐºÑŠÐ¼ Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n" "\n" " Ðргументи:\n" -" +N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от лÑвата \n" -" Ñтрана на ÑпиÑъка, изведен от командата „dirs“ като Ñе почва от 0)\n" +" +N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от " +"лÑвата \n" +" Ñтрана на ÑпиÑъка, изведен от командата „dirs“ като Ñе почва от " +"0)\n" " да е най-отгоре.\n" "\n" -" -N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от дÑÑната\n" -" Ñтрана на ÑпиÑъка, изведен от командата „dirs“ като Ñе почва от 0)\n" +" -N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от " +"дÑÑната\n" +" Ñтрана на ÑпиÑъка, изведен от командата „dirs“ като Ñе почва от " +"0)\n" " да е най-отгоре.\n" "\n" "\n" -" dir Ð”Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñта най-отгоре в Ñтека, като Ñ Ð¿Ñ€Ð°Ð²Ð¸ новата текуща\n" +" dir Ð”Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñта най-отгоре в Ñтека, като Ñ Ð¿Ñ€Ð°Ð²Ð¸ новата " +"текуща\n" " работна директориÑ.\n" "\n" " Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“.\n" "\n" " Изходен код:\n" -" 0, оÑвен ако е подаден неправилен аргумент или не може да Ñе премине към\n" +" 0, оÑвен ако е подаден неправилен аргумент или не може да Ñе премине " +"към\n" " Ñъответната директориÑ." -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5091,16 +5619,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5110,11 +5638,13 @@ msgid "" msgstr "" "Изваждане на директории от Ñтека.\n" "\n" -" Маха директории от Ñтека Ñ Ñ‚ÑÑ…. Без аргументи премахва поÑледната директориÑ\n" +" Маха директории от Ñтека Ñ Ñ‚ÑÑ…. Без аргументи премахва поÑледната " +"директориÑ\n" " в Ñтека и влиза в новата поÑледна директориÑ.\n" "\n" " Опции:\n" -" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ изваждането на\n" +" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ изваждането " +"на\n" " Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ÐºÑŠÐ¼ Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n" "\n" " Ðргументи:\n" @@ -5130,10 +5660,11 @@ msgstr "" " Стекът Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸Ñ‚Ðµ Ñе визуализира Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“.\n" "\n" " Изходен код:\n" -" 0, оÑвен ако е подаден неправилен аргумент или не може да Ñе премине към\n" +" 0, оÑвен ако е подаден неправилен аргумент или не може да Ñе премине " +"към\n" " Ñъответната директориÑ." -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5144,49 +5675,56 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" "Извеждане на Ñтека на директориите.\n" "\n" -" Отпечатва ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ запомнените директории. СпиÑъкът Ñе попълва чрез\n" +" Отпечатва ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ запомнените директории. СпиÑъкът Ñе попълва " +"чрез\n" " командата „pushd“. Можете да вадите директории от Ñтека Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð°\n" " „popd“.\n" " \n" " Опции:\n" " -c изчиÑтване на Ñтека на директориите като изтрива вÑички елементи\n" -" -l извеждане на пълните имена на директориите, а не Ñъкратените ÑпрÑмо\n" +" -l извеждане на пълните имена на директориите, а не Ñъкратените " +"ÑпрÑмо\n" " домашната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° („/homes/pesho/bin“, а не „~/bin“)\n" " -p поредово отпечатване без Ð¿Ð¾Ñ€ÐµÐ´Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ в Ñтека\n" " -v поредово отпечатване заедно Ñ Ð¿Ð¾Ñ€ÐµÐ´Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ в Ñтека\n" "\n" " Ðргументи: \n" -" +N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка отпечатан от командата „dirs“,\n" +" +N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка отпечатан от командата " +"„dirs“,\n" " когато е Ñтартирана без опции. Брои Ñе от 0.\n" -" -N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка отпечатан от командата „dirs“,\n" +" -N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка отпечатан от командата " +"„dirs“,\n" " когато е Ñтартирана без опции. Брои Ñе от 0.\n" "\n" " Изходен код:\n" " 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка." -#: builtins.c:1887 +#: builtins.c:1898 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" @@ -5202,22 +5740,26 @@ msgid "" msgstr "" "Включване и изключване на опции на обвивката.\n" " \n" -" Превключване на ÑÑŠÑтоÑнието на вÑÑка от дадените ОПЦИи на обвивката. Ðко не\n" -" не Ñа зададени аргументи-ОПЦИи, Ñе извежда ÑпиÑък от вÑички опции, като Ñе\n" +" Превключване на ÑÑŠÑтоÑнието на вÑÑка от дадените ОПЦИи на обвивката. " +"Ðко не\n" +" не Ñа зададени аргументи-ОПЦИи, Ñе извежда ÑпиÑък от вÑички опции, като " +"Ñе\n" " указва за вÑÑка дали и включена или не.\n" " \n" " Опции:\n" -" -o ограничаване на опциите до определените за използване ÑÑŠÑ â€žset -o“\n" +" -o ограничаване на опциите до определените за използване ÑÑŠÑ â€žset -" +"o“\n" " -p извеждане на вÑÑка Ð¾Ð¿Ñ†Ð¸Ñ Ñ Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ дали е включена или не\n" " -q без извеждане на информациÑ\n" " -s включване на вÑÑка от ОПЦИИте\n" " -u изключване на вÑÑка от ОПЦИИте\n" " \n" " Изходен код:\n" -" 0, ако ОПЦИЯта е включена, грешка, ако е зададена неправилна или изключена\n" +" 0, ако ОПЦИЯта е включена, грешка, ако е зададена неправилна или " +"изключена\n" " ОПЦИЯ." -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5225,75 +5767,90 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a format\n" -" string for strftime(3)\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" -" specifications behave as if a zero value or null string, as appropriate,\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" " had been supplied.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" "Форматиране и отпечатване на ÐРГУМЕÐТИте Ñпоред управлението на ФОРМÐТа.\n" "\n" " Опции:\n" -" -v ПРОМЕÐЛИВРизходът Ñе поÑÑ‚Ð°Ð²Ñ Ð² ПРОМЕÐЛИВÐта на обвивката, вмеÑто да\n" +" -v ПРОМЕÐЛИВРизходът Ñе поÑÑ‚Ð°Ð²Ñ Ð² ПРОМЕÐЛИВÐта на обвивката, вмеÑто " +"да\n" " Ñе извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n" "\n" " ФОРМÐТът е поÑледователноÑÑ‚ от знаци, коÑто Ñъдържа три вида обекти:\n" -" ⃠обикновени знаци, които биват отпечатани директно на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´;\n" +" ⃠обикновени знаци, които биват отпечатани директно на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ " +"изход;\n" " ⃠екраниращи знакови поÑледователноÑти, които биват преобразувани и\n" " отпечатани на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´;\n" " ⃠форматиращи знакови поÑледователноÑти, вÑÑка от които предизвиква\n" " отпечатването на Ñледващ аргумент.\n" "\n" -" ОÑвен Ñтандартните Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð¾Ð¿Ð¸Ñани в ръководÑтвото на printf(1), printf\n" +" ОÑвен Ñтандартните Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð¾Ð¿Ð¸Ñани в ръководÑтвото на printf(1), " +"printf\n" " приема и Ñледните инÑтрукции:\n" " %b предизвиква замеÑтването на екранираниÑта Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾ наклонени\n" " черти в ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚\n" " %q предизвиква цитирането на аргумента, така че да може да бъде\n" " използван като вход за обвивката\n" -" %(fmt) отпечатване на низа при третиране на аргумента като дата и време\n" +" %(fmt) отпечатване на низа при третиране на аргумента като дата и " +"време\n" " Ñпоред strftime(3)\n" "\n" -" Форматът Ñе преизползва до приемането на вÑички аргументи. Ðко има по-\n" -" малко аргументи от поÑочените във формата, поведението на допълнителните е\n" +" Форматът Ñе преизползва до приемането на вÑички аргументи. Ðко има " +"по-\n" +" малко аргументи от поÑочените във формата, поведението на " +"допълнителните е\n" " вÑе една е подаден за аргумент нулева ÑтойноÑÑ‚ или празен низ.\n" "\n" " Изходен код:\n" " 0, оÑвен ако не е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка при\n" " извеждането на резултата или при приÑвоÑването на ÑтойноÑтта." -#: builtins.c:1942 +#: builtins.c:1953 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" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5309,28 +5866,34 @@ msgstr "" " допиÑване във формат, който може да Ñе използва за вход.\n" " \n" " Опции:\n" -" -p Извеждане на текущите инÑтрукции за автоматично допиÑване във формат,\n" +" -p Извеждане на текущите инÑтрукции за автоматично допиÑване във " +"формат,\n" " който може да Ñе използва за вход\n" -" -r Премахване на инÑтрукциите за автоматично допиÑване на вÑÑко ИМЕ,а\n" +" -r Премахване на инÑтрукциите за автоматично допиÑване на вÑÑко ИМЕ," +"а\n" " когато такова не е указано — вÑички инÑтрукции\n" -" -D Прилагане на допиÑваниÑта и дейÑтвиÑта като Ñтандартните за командите,\n" +" -D Прилагане на допиÑваниÑта и дейÑтвиÑта като Ñтандартните за " +"командите,\n" " без никакви Ñпецифични инÑтрукции\n" " -E Прилагане на допиÑваниÑта и дейÑтвиÑта като тези на „празната“\n" " команда — когато вÑе още нищо не е напиÑано на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´\n" " \n" -" При извършване на автоматично допиÑване, дейÑтвиÑта Ñе прилагат в реда на\n" -" опциите Ñ Ð³Ð»Ð°Ð²Ð½Ð° буква дадени по-горе. ОпциÑта „-D“ е Ñ Ð¿Ð¾-виÑок приоритет\n" +" При извършване на автоматично допиÑване, дейÑтвиÑта Ñе прилагат в реда " +"на\n" +" опциите Ñ Ð³Ð»Ð°Ð²Ð½Ð° буква дадени по-горе. ОпциÑта „-D“ е Ñ Ð¿Ð¾-виÑок " +"приоритет\n" " от „-E“.\n" " \n" " Изходен код:\n" " 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка." -#: builtins.c:1970 +#: builtins.c:1981 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" @@ -5345,13 +5908,16 @@ msgstr "" " Изходен код:\n" " 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка." -#: builtins.c:1985 +#: builtins.c:1996 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" @@ -5390,48 +5956,62 @@ msgstr "" " Ðргументи:\n" " \n" " Ð’ÑÑко ИМЕ указва команда, за коÑто трÑбва предварително да е зададена\n" -" ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° допиÑване чрез вградената команда „complete“. Ðко не Ñа\n" -" зададени ИМЕна, командата „compopt“ трÑбва да бъде изпълнена от функциÑ,\n" -" коÑто генерира Ñпецификациите за допиÑване. Ð’ този Ñлучай опциите за текущо\n" +" ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° допиÑване чрез вградената команда „complete“. Ðко не " +"Ñа\n" +" зададени ИМЕна, командата „compopt“ трÑбва да бъде изпълнена от " +"функциÑ,\n" +" коÑто генерира Ñпецификациите за допиÑване. Ð’ този Ñлучай опциите за " +"текущо\n" " изпълнÑÐ²Ð°Ð½Ð¸Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ‚Ð¾Ñ€ на допиÑÐ²Ð°Ð½Ð¸Ñ Ñе променÑÑ‚.\n" " \n" " Изходен код:\n" -" 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ липÑват инÑтрукции към ИМЕто\n" +" 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ липÑват инÑтрукции към " +"ИМЕто\n" " за автоматично допиÑване." -#: builtins.c:2015 +#: builtins.c:2026 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" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" -"Изчитане на редове от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ и запазване в променлива — индекÑиран\n" +"Изчитане на редове от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ и запазване в променлива — " +"индекÑиран\n" " низ.\n" " \n" " Прочитане на редове от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´, които Ñлед това Ñе запазват в\n" @@ -5439,33 +6019,41 @@ msgstr "" " ФÐЙЛов_ДЕСКРиптор. Стандартното име на променливата-маÑив е MAPFILE.\n" " \n" " Опции:\n" +" -d РÐЗДЕЛИТЕЛ РÐЗДЕЛÑне на редовете Ñ Ñ‚Ð¾Ð·Ð¸ знак, а не Ñ Ð½Ð¾Ð² ред\n" " -n МÐКС_РЕДРИзчитане на не повече от МÐКСимум РЕДа. Ðко е 0, Ñе\n" " прочитат вÑички редове\n" " -O ÐÐЧÐЛО ПриÑвоÑването да започне при Ð¸Ð½Ð´ÐµÐºÑ ÐÐЧÐЛО в МÐСИВа\n" " Стандартната ÑтойноÑÑ‚ е 0\n" " -s БРОЙ_ПРОП ПреÑкачане на първите БРОЙ за ПРОПуÑкане прочетени реда\n" -" -t Премахване на поÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð·Ð½Ð°Ðº за нов ред от вÑеки ред\n" +" -t Премахване на поÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð·Ð½Ð°Ðº-РÐЗДЕЛител от вÑеки ред\n" +" (Ñтандартно е знакът за нов ред)\n" " -u ФÐЙЛов_ДЕСКРиптор\n" -" Изчитане на редовете от ФÐЙЛов_ДЕСКРиптор, а не ÑтандартниÑ\n" +" Изчитане на редовете от ФÐЙЛов_ДЕСКРиптор, а не " +"ÑтандартниÑ\n" " вход\n" -" -C ФУÐКЦИЯ ФункциÑ, коÑто Ñе извиква при изчитането на вÑеки БРОЙ_РЕДÐ\n" -" -c БРОЙ_РЕДРРедове, които да Ñе изчетат преди да Ñе извика ФУÐКЦИЯта\n" +" -C ФУÐКЦИЯ ФункциÑ, коÑто Ñе извиква при изчитането на вÑеки " +"БРОЙ_РЕДÐ\n" +" -c БРОЙ_РЕДРРедове, които да Ñе изчетат преди да Ñе извика " +"ФУÐКЦИЯта\n" " \n" " Ðргументи:\n" " МÐСИВ Име на променливата-маÑив\n" " \n" -" Ðко опциÑта „-C“ е зададена без „-c“, ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð‘Ð ÐžÐ™_РЕДРе 5000. При\n" +" Ðко опциÑта „-C“ е зададена без „-c“, ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð‘Ð ÐžÐ™_РЕДРе 5000. " +"При\n" " извикването на ФУÐКЦИЯта за аргументи Ñ Ñе подават индекÑа на ÑледващиÑ\n" " елемент от маÑива и реда, който Ñе Ñчита за ÑтойноÑÑ‚.\n" " \n" -" Ðко не е дадено изрично ÐÐЧÐЛО, командата „mapfile“ изчиÑтва МÐСИВа, преди\n" +" Ðко не е дадено изрично ÐÐЧÐЛО, командата „mapfile“ изчиÑтва МÐСИВа, " +"преди\n" " да започне приÑвоÑването към него.\n" " \n" " Изходен код:\n" -" Връща 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ ако МÐСИВът е променлива\n" +" Връща 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ ако МÐСИВът е " +"променлива\n" " Ñамо за четене или не е индекÑиран маÑив." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5474,3 +6062,18 @@ msgstr "" "Прочитане на редове от файл и поÑтавÑне в променлива – маÑив.\n" " \n" " Синоним на „mapfile“." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "ÐвторÑки права (C) 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/po/ca.gmo b/po/ca.gmo index ef3ef376f4eabb582da1e744ea0254d5fca4d48f..bae5d3f4db679159595aeca73af611a24ebea083 100644 GIT binary patch literal 99978 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 JFnx5T{|6!EBOm|( diff --git a/po/ca.po b/po/ca.po index 3ccc638..14f6aa0 100644 --- a/po/ca.po +++ b/po/ca.po @@ -1,489 +1,523 @@ -# Catalan messages for the GNU bash-2.0 -# Copyright (C) 2002, 2003 Free Software Foundation, Inc. -# Montxo Vicente i Sempere , 2003. -# Jordi Mas i Hern?ndez , 2004 (correccions). -# +# Catalan messages for GNU bash. +# Copyright (C) 2002, 2003, 2010, 2014, 2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Montxo Vicente i Sempere , 2003 (traducció), 2010 (revisions). +# Jordi Mas i Hernàndez , 2004 (correccions). +# Ernest Adrogué Calveras , 2014, 2015 (nova traducció). msgid "" msgstr "" -"Project-Id-Version: bash-2.0\n" +"Project-Id-Version: bash-4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2003-12-28 19:59+0100\n" -"Last-Translator: Montxo Vicente i Sempere \n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-18 13:33+0200\n" +"Last-Translator: Ernest Adrogué Calveras \n" "Language-Team: Catalan \n" -"Language: ca\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" -msgstr "la matriu est? mal composta" +msgstr "subíndex erroni" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "" +msgstr "%s: no es pot convertir el vector indexat en associatiu" -#: arrayfunc.c:539 -#, fuzzy, c-format +#: arrayfunc.c:578 +#, c-format msgid "%s: invalid associative array key" -msgstr "%c%c: opci? inv?lida" +msgstr "%s: clau incorrecta de vector associatiu" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s: no es pot assignar a un ?ndex que no ?s num?ric" +msgstr "%s: no és possible assignar a un índex no-numèric" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "" +msgstr "%s: %s: l'assignació en vectors associatius requereix un subíndex" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: no es pot crear: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" +"bash_execute_unix_command: no s'ha trobat el mapa de tecles per a l'ordre" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "" +msgstr "%s: el primer caràcter no-blanc no és `\"'" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" -msgstr "" +msgstr "falta un caràcter `%c' a %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" -msgstr "" +msgstr "%s: falten dos punts `:' de separació" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "expansió de claus: no es pot assignar memòria per a %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +msgstr "expansió de claus: ha fallat l'assignació de memòria per a %d elements" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "expansió de claus: ha fallat l'assignació de memòria per a `%s'" -#: builtins/alias.def:132 -#, fuzzy, c-format +#: builtins/alias.def:133 +#, c-format msgid "`%s': invalid alias name" -msgstr "%c%c: opci? inv?lida" +msgstr "`%s': el nom de l'àlies no és valid" #: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" -msgstr "" +msgstr "l'edició de línia no està habilitada" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" -msgstr "" +msgstr "`%s': el nom del mapa de tecles no és vàlid" -#: builtins/bind.def:251 -#, fuzzy, c-format -msgid "%s: cannot read: %s" -msgstr "%s: no es pot crear: %s" - -#: builtins/bind.def:266 -#, fuzzy, c-format -msgid "`%s': cannot unbind" -msgstr "%s: no s'ha trobat l'ordre" - -#: builtins/bind.def:304 builtins/bind.def:334 -#, fuzzy, c-format -msgid "`%s': unknown function name" -msgstr "%s: funci? nom?s de lectura" - -#: builtins/bind.def:312 +#: builtins/bind.def:253 #, c-format -msgid "%s is not bound to any keys.\n" -msgstr "" +msgid "%s: cannot read: %s" +msgstr "%s: no es pot llegir: %s" + +#: builtins/bind.def:270 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': no es pot desvincular" + +#: builtins/bind.def:308 builtins/bind.def:338 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': el nom de la funció és desconegut" #: builtins/bind.def:316 #, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s no està vinculat a cap tecla.\n" + +#: builtins/bind.def:320 +#, c-format msgid "%s can be invoked via " -msgstr "" +msgstr "%s pot ser invocat via " -#: builtins/break.def:77 builtins/break.def:117 -#, fuzzy +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" -msgstr "fi de sessi?" +msgstr "nombre d'iteracions" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "" +msgstr "només té sentit en una iteració de tipus `for', `while' o `until'" -#: builtins/caller.def:134 +# això forma part de la descripció de caller que està a un altre lloc +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" -msgstr "" +msgstr "la variable HOME no està definida" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" -msgstr "nombre excessiu de par?metres" +msgstr "sobren arguments" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "no hi ha més directoris" + +#: builtins/cd.def:347 msgid "OLDPWD not set" -msgstr "" +msgstr "la variable OLDPWD no està definida" -#: builtins/common.c:101 -#, fuzzy, c-format +#: builtins/common.c:102 +#, c-format msgid "line %d: " -msgstr "encaix %3d:" +msgstr "línia %d: " -#: builtins/common.c:139 error.c:265 -#, fuzzy, c-format +#: builtins/common.c:140 error.c:265 +#, c-format msgid "warning: " -msgstr "s'est? escrivint" +msgstr "atenció: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " -msgstr "" +msgstr "%s: sintaxi: " -#: builtins/common.c:191 shell.c:506 shell.c:788 -#, fuzzy, c-format +#: builtins/common.c:199 shell.c:514 shell.c:825 +#, c-format msgid "%s: option requires an argument" -msgstr "cal un par?metre per a l'opci?: -" +msgstr "%s: l'opció requereix un argument" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" -msgstr "" +msgstr "%s: fa falta un argument numèric" -#: builtins/common.c:205 -#, fuzzy, c-format +#: builtins/common.c:213 +#, c-format msgid "%s: not found" -msgstr "%s: no s'ha trobat l'ordre" +msgstr "%s: no s'ha trobat" -#: builtins/common.c:214 shell.c:801 -#, fuzzy, c-format +#: builtins/common.c:222 shell.c:838 +#, c-format msgid "%s: invalid option" -msgstr "%c%c: opci? inv?lida" +msgstr "%s: l'opció no és vàlida" -#: builtins/common.c:221 -#, fuzzy, c-format +#: builtins/common.c:229 +#, c-format msgid "%s: invalid option name" -msgstr "%c%c: opci? inv?lida" +msgstr "%s: el nom de l'opció no és vàlid" -#: builtins/common.c:228 general.c:235 general.c:240 -#, fuzzy, c-format +#: builtins/common.c:236 general.c:293 general.c:298 +#, c-format msgid "`%s': not a valid identifier" -msgstr "'%s' no ?s un identificador v?lid" +msgstr "`%s': no és un identificador vàlid" -#: builtins/common.c:238 -#, fuzzy +#: builtins/common.c:246 msgid "invalid octal number" -msgstr "n?mero inv?lid de senyal" +msgstr "nombre octal no vàlid" -#: builtins/common.c:240 -#, fuzzy +#: builtins/common.c:248 msgid "invalid hex number" -msgstr "n?mero inv?lid de senyal" +msgstr "nombre hexadecimal no vàlid" -#: builtins/common.c:242 expr.c:1470 -#, fuzzy +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" -msgstr "n?mero inv?lid de senyal" +msgstr "nombre no vàlid" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" -msgstr "" +msgstr "%s: l'especificació de senyal no és vàlida" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "" +msgstr "`%s': el pid o l'especificació de tasca no són vàlids" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" -msgstr "%s: ?s una variable nom?s de lectura" +msgstr "%s: variable de només-lectura" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" -msgstr "" +msgstr "%s: %s fora del domini" -#: builtins/common.c:272 builtins/common.c:274 -#, fuzzy +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" -msgstr "s'esperava un par?metre" - -#: builtins/common.c:274 -#, c-format -msgid "%s out of range" -msgstr "" +msgstr "argument" #: builtins/common.c:282 #, c-format -msgid "%s: no such job" -msgstr "" +msgid "%s out of range" +msgstr "%s fora del domini" #: builtins/common.c:290 -#, fuzzy, c-format +#, c-format +msgid "%s: no such job" +msgstr "%s: no s'ha trobat la tasca" + +#: builtins/common.c:298 +#, c-format msgid "%s: no job control" -msgstr "no hi ha cap tasca de control dins d'aquest int?rpret" +msgstr "%s: no hi ha control de tasques" -#: builtins/common.c:292 -#, fuzzy +#: builtins/common.c:300 msgid "no job control" -msgstr "no hi ha cap tasca de control dins d'aquest int?rpret" +msgstr "no hi ha control de tasques" -#: builtins/common.c:302 -#, fuzzy, c-format +# cd .. en un intèrpret restringit +#: builtins/common.c:310 +#, c-format msgid "%s: restricted" -msgstr "%s: s'ha finalitzat la tasca" - -#: builtins/common.c:304 -#, fuzzy -msgid "restricted" -msgstr "Terminat" +msgstr "%s: restringit" #: builtins/common.c:312 +msgid "restricted" +msgstr "restringit" + +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" -msgstr "" - -#: builtins/common.c:321 -#, fuzzy, c-format -msgid "write error: %s" -msgstr "error del conducte: %s" +msgstr "%s: no és una ordre interna de l'intèrpret" #: builtins/common.c:329 #, c-format -msgid "error setting terminal attributes: %s" -msgstr "" +msgid "write error: %s" +msgstr "error d'escriptura: %s" -#: builtins/common.c:331 +#: builtins/common.c:337 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "error en establir els atributs del terminal: %s" + +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" -msgstr "" +msgstr "error en obtenir els atributs del terminal: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "" +msgstr "%s: error en obtenir el directori actual: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 -#, fuzzy, c-format +#: builtins/common.c:651 builtins/common.c:653 +#, c-format msgid "%s: ambiguous job spec" -msgstr "%s: Redirecci? ambigua" +msgstr "%s: l'especificació de tasca és ambigua" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "aquesta versió no té ajuda disponible" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" -msgstr "" +msgstr "%s: el nom de l'acció no és vàlid" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" -msgstr "" - -#: builtins/complete.def:697 -msgid "warning: -F option may not work as you expect" -msgstr "" +msgstr "%s: no hi ha especificació de compleció" #: builtins/complete.def:699 +msgid "warning: -F option may not work as you expect" +msgstr "atenció: l'opció -F pot no funcionar com us espereu" + +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" -msgstr "" +msgstr "atenció: l'opció -C pot no funcionar com us espereu" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" -msgstr "" +msgstr "no s'està executant una funció de compleció" -#: builtins/declare.def:126 -#, fuzzy +#: builtins/declare.def:127 msgid "can only be used in a function" -msgstr "" -"servir LOCAL dins d'una funci?; a?? restringir? la magnitud visible de la" +msgstr "només es pot utilitzar en una funció" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: la variable referenciada no pot ser un vector" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: no és permès que una variable s'autoreferenciï" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: la referència de nom és circular" + +# buscar context +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: el nom de la variable referenciada no és vàlid" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" -msgstr "" +msgstr "no és possible usar `-f' per a fer funcions" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" -msgstr "%s: funci? nom?s de lectura" +msgstr "%s: funció de només-lectura" -#: builtins/declare.def:553 -#, fuzzy, c-format +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: les assignacions compostes amb cometes estan desfasades" + +#: builtins/declare.def:767 +#, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "$%s: no es pot assignar d'aquesta manera" +msgstr "%s: no és possible destruir variables vector d'aquesta manera" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "" +msgstr "%s: no es pot convertir el vector associatiu en indexat" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" -msgstr "" +msgstr "la càrrega dinàmica no està disponible" -#: builtins/enable.def:312 -#, fuzzy, c-format +#: builtins/enable.def:343 +#, c-format msgid "cannot open shared object %s: %s" -msgstr "no es pot obrir el conducte anomenat %s per a %s: %s" +msgstr "no es pot obrir l'objecte compartit %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" -msgstr "" +msgstr "no es pot trobar %s a l'objecte compartit %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "la càrrega de %s ha fallat (%d): no s'ha carregat" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" -msgstr "" +msgstr "%s: no s'ha carregat dinàmicament" -#: builtins/enable.def:474 -#, fuzzy, c-format +#: builtins/enable.def:538 +#, c-format msgid "%s: cannot delete: %s" -msgstr "%s: no es pot crear: %s" +msgstr "%s: no es pot eliminar: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" -msgstr "%s: ?s un directori" +msgstr "%s: és un directori" -#: builtins/evalfile.c:146 -#, fuzzy, c-format +#: builtins/evalfile.c:150 +#, c-format msgid "%s: not a regular file" -msgstr "%s: no es pot executar el fitxer binari" +msgstr "%s: no és un fitxer ordinari" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" -msgstr "" +msgstr "%s: el fitxer és massa gran" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" -msgstr "%s: no es pot executar el fitxer binari" +msgstr "%s: no es poden executar fitxers binaris" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 -#, fuzzy, c-format +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#, c-format msgid "%s: cannot execute: %s" -msgstr "%s: no es pot crear: %s" +msgstr "%s: no es pot executar: %s" -#: builtins/exit.def:65 -#, fuzzy, c-format +#: builtins/exit.def:67 +#, c-format msgid "logout\n" -msgstr "fi de sessi?" +msgstr "desconnexió\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" -msgstr "" +msgstr "no és una sessió d'entrada: utilitzeu `exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" -msgstr "" +msgstr "Hi ha tasques aturades.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" -msgstr "" +msgstr "Hi ha tasques en marxa.\n" -#: builtins/fc.def:262 -#, fuzzy +#: builtins/fc.def:269 msgid "no command found" -msgstr "%s: no s'ha trobat l'ordre" +msgstr "no s'ha trobat cap ordre" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" -msgstr "" +msgstr "especificació d'historial" -#: builtins/fc.def:390 -#, fuzzy, c-format +#: builtins/fc.def:397 +#, c-format msgid "%s: cannot open temp file: %s" -msgstr "%s: no es pot crear: %s" +msgstr "%s: no es pot obrir el fitxer temporal: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +# fg quan no hi ha cap tasca en segon pla +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" -msgstr "" +msgstr "actual" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" -msgstr "" +msgstr "la tasca %d s'ha iniciat sense control de tasques" #: builtins/getopt.c:110 -#, fuzzy, c-format +#, c-format msgid "%s: illegal option -- %c\n" -msgstr "opci? ilžlegal: -" +msgstr "%s: opció il·legal -- %c\n" #: builtins/getopt.c:111 -#, fuzzy, c-format +#, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "cal un par?metre per a l'opci?: -" +msgstr "%s: l'opció requereix un argument -- %c\n" #: builtins/hash.def:92 msgid "hashing disabled" -msgstr "" +msgstr "hashing deshabilitat" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" -msgstr "" +msgstr "%s: la taula hash és buida\n" -#: builtins/hash.def:245 -#, fuzzy, c-format +# hash (sense arguments) +#: builtins/hash.def:254 +#, c-format msgid "hits\tcommand\n" -msgstr "si s'escriu \"r\" s'executar? la darrera ordre." +msgstr "vegades\tordre\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Ordres de l'intèrpret coincidents amb `" +msgstr[1] "Ordres de l'intèrpret coincidents amb `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" +"no hi ha ajuda sobre `%s'. Proveu `help help', `man -k %s' o `info %s'." -#: builtins/help.def:199 -#, fuzzy, c-format +#: builtins/help.def:226 +#, c-format msgid "%s: cannot open: %s" -msgstr "%s: no es pot crear: %s" +msgstr "%s: no es pot obrir: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -494,141 +528,153 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" +"Aquestes ordres de l'intèrpret estan definides internament.\n" +"Feu `help' per a veure'n una llista. \n" +"Feu `help nom' per a informació sobre la funció `nom'.\n" +"Utilitzeu `info bash' per a informació sobre l'intèrpret en general.\n" +"Utilitzeu `man -k' o bé `info' per a informació sobre ordres que no són a " +"la\n" +"llista.\n" +"\n" +"Un asterisc (*) al costat d'un nom significa que l'ordre està " +"deshabilitada.\n" +"\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" -msgstr "" +msgstr "no és possible usar més d'una opció d'entre -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" -msgstr "" +msgstr "posició a l'historial" -#: builtins/history.def:366 +#: builtins/history.def:264 #, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: l'argument no és vàlid" + +#: builtins/history.def:375 +#, c-format msgid "%s: history expansion failed" -msgstr "%s: s'esperava una expressi? de nombre enter" +msgstr "%s: ha fallat l'expansió de l'historial" #: builtins/inlib.def:71 -#, fuzzy, c-format +#, c-format msgid "%s: inlib failed" -msgstr "%s: s'esperava una expressi? de nombre enter" +msgstr "%s: inlib ha fallat" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "" +msgstr "no es permeten altres opcions amb `-x'" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "" +msgstr "%s: els arguments han de ser ids de processos o tasques" -#: builtins/kill.def:263 -#, fuzzy +#: builtins/kill.def:265 msgid "Unknown error" -msgstr "Error desconegut %d" +msgstr "Error desconegut" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" -msgstr "s'esperava una expressi?" +msgstr "s'esperava una expressió" -#: builtins/mapfile.def:172 -#, fuzzy, c-format +#: builtins/mapfile.def:178 +#, c-format msgid "%s: not an indexed array" -msgstr "%s: variable sense vincle" +msgstr "%s: no és un vector indexat" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "" +msgstr "%s: l'especificació de descriptor de fitxer no és vàlida" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "" +msgstr "%d: el descriptor de fitxer no és vàlid: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 -#, fuzzy, c-format +#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#, c-format msgid "%s: invalid line count" -msgstr "%c%c: opci? inv?lida" +msgstr "%s: el nombre de línies no és vàlid" -#: builtins/mapfile.def:287 -#, fuzzy, c-format +#: builtins/mapfile.def:300 +#, c-format msgid "%s: invalid array origin" -msgstr "%c%c: opci? inv?lida" +msgstr "%s: l'origen del vector no és vàlid" -#: builtins/mapfile.def:304 -#, fuzzy, c-format +#: builtins/mapfile.def:317 +#, c-format msgid "%s: invalid callback quantum" -msgstr "n?mero inv?lid de senyal" +msgstr "%s: el quàntum de retorn no és vàlid" -#: builtins/mapfile.def:336 -#, fuzzy +#: builtins/mapfile.def:350 msgid "empty array variable name" -msgstr "%s: variable sense vincle" +msgstr "nom de variable vector en blanc" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" -msgstr "" +msgstr "es requereix suport per a variables vector" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" -msgstr "" +msgstr "`%s': falta un caràcter de format" -#: builtins/printf.def:456 -#, fuzzy, c-format +#: builtins/printf.def:467 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%c%c: opci? inv?lida" +msgstr "%c: l'especificació de format de temps no és vàlida" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" -msgstr "" +msgstr "`%c': el caràcter de format no és vàlid" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" -msgstr "" +msgstr "atenció: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "problema en interpretar el format: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" -msgstr "" +msgstr "falta un dígit hexadecimal a \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" -msgstr "" +msgstr "falta un dígit unicode a \\%c" -#: builtins/pushd.def:195 -#, fuzzy +#: builtins/pushd.def:199 msgid "no other directory" -msgstr "seguent entrada de la pila (o sia, la nova primera entrada)." +msgstr "no hi ha més directoris" -#: builtins/pushd.def:354 -#, fuzzy, c-format +#: builtins/pushd.def:360 +#, c-format msgid "%s: invalid argument" -msgstr "%c%c: opci? inv?lida" +msgstr "%s: l'argument no és vàlid" -#: builtins/pushd.def:468 -#, fuzzy +#: builtins/pushd.def:475 msgid "" -msgstr "\taquest ser? el nou directori actual de treball." +msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" -msgstr "" +msgstr "la pila de directoris està buida" -#: builtins/pushd.def:514 -#, fuzzy +#: builtins/pushd.def:521 msgid "directory stack index" -msgstr "S'ha desbordat la base de la pila." +msgstr "índex de la pila de directoris" -#: builtins/pushd.def:689 +# help dirs ?? missatge similar repetit més endavant +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -651,8 +697,30 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" +"Mostra la llista actual de directoris recordats. Els directoris entren a " +"la\n" +" llista mitjançant l'ordre `pushd'; podeu recórrer la llista de\n" +" directoris enrere amb l'ordre `popd'.\n" +"\n" +" Opcions:\n" +" -c neteja la pila, esborrant-ne tots els elements\n" +" -l no mostra les versions abreviades (prefix ~) en els\n" +" directoris relatius al vostre directori personal\n" +" -p mostra la pila, una entrada per línia\n" +" -v mostra la pila, una entrada per línia indicant la posició a\n" +" la pila\n" +"\n" +" Arguments:\n" +" +N Mostra l'entrada N-èssima, comptant des de l'esquerra de la\n" +" llista mostrada per `dirs' quan s'invoca sense opcions, \n" +" començant des de zero.\n" +"\n" +" -N Mostra l'entrada N-èssima, comptant des de la dreta de la\n" +" llista mostrada per `dirs' quan s'invoca sense opcions,\n" +" començant des de zero." -#: builtins/pushd.def:711 +# help pushd ??? +#: builtins/pushd.def:718 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" @@ -676,8 +744,33 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"Afegeix un directori a sobre la pila de directoris, o fa girar la llista, " +"de\n" +" manera que a sobre la pila hi queda el directori de treball corrent.\n" +" Sense arguments, intercanvia els dos directoris de més amunt.\n" +"\n" +" Opcions:\n" +" -n Omet el canvi de directori quan s'afegeixen directoris a la\n" +" pila, de manera que només canvia la pila.\n" +"\n" +" Arguments:\n" +"\n" +" +N Gira la llista de manera tal que l'N-èssim directori\n" +" (comptant des de l'esquerra de la llista que mostra `dirs',\n" +" començant des de zero) queda a dalt de tot.\n" +"\n" +" -N Gira la llista de manera tal que l'N-èssim directori\n" +" (comptant des de la dreta de la llista que mostra `dirs',\n" +" començant des de zero) queda a dalt de tot.\n" +"\n" +" dir Afegeix DIR a dalt de tot de la pila de directoris, i el\n" +" converteix en el nou directori de treball corrent.\n" +"\n" +" Podeu visualitzar la pila de directoris amb l'ordre `dirs'." -#: builtins/pushd.def:736 +# help popd ??? +# +#: builtins/pushd.def:743 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" @@ -697,499 +790,543 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"Elimina entrades de la pila de directoris. Sense arguments, elimina el\n" +" directori de dalt de tot de la pila, i canvia al nou directori de dalt\n" +" de la pila.\n" +"\n" +" Opcions:\n" +" -n Evita el canvi de directori quan s'eliminen directoris de la\n" +" pila, de manera que només es manipula la pila.\n" +"\n" +" Arguments:\n" +" +N Elimina l'entrada N-èssima, comptant des de l'esquerra de la\n" +" llista que mostra `dirs', començant des de zero. \n" +" Per exemple: `popd +0' elimina el primer directori, i\n" +" `popd +1' el segon.\n" +"\n" +" -N Elimina l'entrada N-èssima, comptant des de la dreta de la\n" +" llista que mostra `dirs', començant des de zero. \n" +" Per exemple: `popd -0' elimina l'últim directori, i\n" +" `popd -1' el penúltim.\n" +"\n" +" Podeu visualitzar la pila de directoris amb l'ordre `dirs'." -#: builtins/read.def:275 +# read -t -5 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" -msgstr "" +msgstr "%s: el límit de temps no és vàlid" -#: builtins/read.def:678 -#, fuzzy, c-format +#: builtins/read.def:696 +#, c-format msgid "read error: %d: %s" -msgstr "error del conducte: %s" +msgstr "error de lectura: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" -msgstr "" +msgstr "només es pot fer `return' des d'una funció o script" -#: builtins/set.def:782 -#, fuzzy +# unset -f -v foo +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" -msgstr "" -"servir LOCAL dins d'una funci?; a?? restringir? la magnitud visible de la" +msgstr "no és possible suprimir una funció i una variable alhora" -#: builtins/set.def:826 -#, fuzzy, c-format +#: builtins/set.def:888 +#, c-format msgid "%s: cannot unset" -msgstr "%s: no es pot crear: %s" +msgstr "%s: no es pot suprimir" -#: builtins/set.def:843 -#, fuzzy, c-format +# unset UID +#: builtins/set.def:909 variables.c:3389 +#, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: no es pot crear: %s" +msgstr "%s: no es pot suprimir: %s de només-lectura" -#: builtins/set.def:854 -#, fuzzy, c-format +#: builtins/set.def:922 +#, c-format msgid "%s: not an array variable" -msgstr "%s: variable sense vincle" +msgstr "%s: no és una variable vector" -#: builtins/setattr.def:187 -#, fuzzy, c-format +#: builtins/setattr.def:191 +#, c-format msgid "%s: not a function" -msgstr "%s: funci? nom?s de lectura" +msgstr "%s: no és una funció" -#: builtins/shift.def:71 builtins/shift.def:77 -#, fuzzy +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: no es pot suprimir" + +# shift -4 +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "shift [n]" +msgstr "nombre de shifts" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "" +"no es poden activar i desactivar opcions de l'intèrpret al mateix temps" -#: builtins/shopt.def:346 +# shopt -s foo +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" -msgstr "" +msgstr "%s: l'opció de l'intèrpret no és vàlida" -#: builtins/source.def:130 +# source +#: builtins/source.def:131 msgid "filename argument required" -msgstr "" +msgstr "fa falta un nom de fitxer" -#: builtins/source.def:155 -#, fuzzy, c-format +#: builtins/source.def:157 +#, c-format msgid "%s: file not found" -msgstr "%s: no s'ha trobat l'ordre" +msgstr "%s: no s'ha trobat el fitxer" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" -msgstr "" +msgstr "no es pot suspendre" -#: builtins/suspend.def:111 -#, fuzzy +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" -msgstr "Finalitzar una sessi? de l'int?rpret d'ordres." +msgstr "no és possible suspendre un intèrpret d'entrada" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "" +msgstr "%s és un àlies de `%s'\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" -msgstr "" +msgstr "%s és una paraula clau de l'intèrpret\n" -#: builtins/type.def:274 -#, fuzzy, c-format +#: builtins/type.def:276 +#, c-format msgid "%s is a function\n" -msgstr "%s: funci? nom?s de lectura" +msgstr "%s és una funció\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s és una ordre interna\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" -msgstr "" +msgstr "%s és una ordre interna\n" -#: builtins/type.def:317 builtins/type.def:393 +# type dmesg +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" -msgstr "" +msgstr "%s és %s\n" -#: builtins/type.def:337 +# hash cp; type cp +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" -msgstr "" +msgstr "%s és a la taula hash (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" -msgstr "" +msgstr "%s: el límit no és vàlid" -#: builtins/ulimit.def:409 -#, fuzzy, c-format +#: builtins/ulimit.def:424 +#, c-format msgid "`%c': bad command" -msgstr "%c%c: opci? inv?lida" +msgstr "`%c': ordre errònia" -#: builtins/ulimit.def:438 -#, fuzzy, c-format +#: builtins/ulimit.def:453 +#, c-format msgid "%s: cannot get limit: %s" -msgstr "%s: no es pot crear: %s" +msgstr "%s: no es pot obtenir el límit: %s" -#: builtins/ulimit.def:464 -#, fuzzy +#: builtins/ulimit.def:479 msgid "limit" -msgstr "L?mit de la UCP" +msgstr "límit" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 -#, fuzzy, c-format +#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#, c-format msgid "%s: cannot modify limit: %s" -msgstr "%s: no es pot crear: %s" +msgstr "%s: no es pot modificar el límit: %s" -#: builtins/umask.def:114 -#, fuzzy +#: builtins/umask.def:115 msgid "octal number" -msgstr "n?mero inv?lid de senyal" +msgstr "nombre octal" -#: builtins/umask.def:227 +# umask z=rwx +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "" +msgstr "`%c': l'operador del mode simbòlic no és vàlid" -#: builtins/umask.def:282 +# umask u=rwz +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "" +msgstr "`%c': el mode simbòlic conté caràcters no vàlids" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " -msgstr "" +msgstr " línia " #: error.c:165 -#, fuzzy, c-format +#, c-format msgid "last command: %s\n" -msgstr "si s'escriu \"r\" s'executar? la darrera ordre." +msgstr "última ordre: %s\n" #: error.c:173 #, c-format msgid "Aborting..." -msgstr "" +msgstr "Avortant..." -#: error.c:440 -#, fuzzy +# prefix afegit als avisos infomatius interns (internal_inform) +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORMACIÓ: " + +#: error.c:463 msgid "unknown command error" -msgstr "Error desconegut %d" +msgstr "error no identificat" -#: error.c:441 -#, fuzzy +#: error.c:464 msgid "bad command type" -msgstr "un nom d'una ordre." +msgstr "tipus d'ordre erroni" -#: error.c:442 -#, fuzzy +#: error.c:465 msgid "bad connector" -msgstr "connector inv?lid '%d'" +msgstr "connector erroni" -#: error.c:443 -#, fuzzy +#: error.c:466 msgid "bad jump" -msgstr "Salt incorrecte %d" +msgstr "salt erroni" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" -msgstr "%s: variable sense vincle" +msgstr "%s: variable no definida" -#: eval.c:189 -#, fuzzy, c-format +# SIGALRM +#: eval.c:209 +#, 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" +msgstr "\atemps esgotat mentre s'esperaven dades: autodesconnexió\n" -#: execute_cmd.c:512 +# error intern +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "" +msgstr "no s'ha pogut redirigir l'entrada estàndard des de /dev/null: %s" -#: execute_cmd.c:1233 +# error intern +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': el caràcter de format no és vàlid" + +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2287 -#, fuzzy +#: execute_cmd.c:2377 msgid "pipe error" -msgstr "error del conducte: %s" +msgstr "error de canalització" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, fuzzy, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)" + +#: execute_cmd.c:4508 +#, fuzzy, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: s'ha excedit el nivell màxim d'imbricació de funcions (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: restringit: no es pot especificar '/' en noms d'ordres" +msgstr "%s: restricció: no podeu especificar `/' en noms d'ordres" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: no s'ha trobat l'ordre" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" -msgstr "" +msgstr "%s: %s" -#: execute_cmd.c:5243 -#, fuzzy, c-format +#: execute_cmd.c:5508 +#, c-format msgid "%s: %s: bad interpreter" -msgstr "%s: ?s un directori" +msgstr "%s: %s: intèrpret erroni" -#: execute_cmd.c:5280 -#, fuzzy, c-format +# error intern +#: execute_cmd.c:5545 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: no es pot executar el fitxer binari" +msgstr "%s: no es pot executar el fitxer binari: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" -msgstr "" +msgstr "`%s': és una ordre interna especial" -#: execute_cmd.c:5404 -#, fuzzy, c-format +#: execute_cmd.c:5675 +#, 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" +msgstr "no s'ha pogut duplicar l'fd %d com a fd %d" #: expr.c:259 msgid "expression recursion level exceeded" -msgstr "s'ha excedit el nivell de recursivitat de l'expressi?" +msgstr "s'ha excedit el nivell de recursió d'expressions" #: expr.c:283 -#, fuzzy msgid "recursion stack underflow" -msgstr "S'ha desbordat la base de la pila." +msgstr "underflow a la pila de recursió" #: expr.c:431 msgid "syntax error in expression" -msgstr "error de sintaxi a l'expressi?" +msgstr "error de sintaxi a l'expressió" #: expr.c:475 msgid "attempted assignment to non-variable" -msgstr "s'ha intentat assignar una variable inexistent" +msgstr "intent d'assignació a una no-variable" #: expr.c:495 expr.c:858 msgid "division by 0" -msgstr "divisi? per 0" +msgstr "divisió per 0" #: expr.c:542 -#, fuzzy msgid "bug: bad expassign token" -msgstr "error de programaci?: pas incorrecte del senyal %d per a expassing()." +msgstr "bug: el component expassign és erroni" +# echo $((4 > 5 ? 0)) #: expr.c:595 msgid "`:' expected for conditional expression" -msgstr "s'esperava ':' per a l'expressi? condicional" +msgstr "falta un `:' a l'expressió condicional" +# echo $((4 ** -1)) #: expr.c:919 msgid "exponent less than 0" -msgstr "" +msgstr "exponent menor que 0" #: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "" +msgstr "s'esperava un identificador després del preincrement o predecrement" #: expr.c:1002 msgid "missing `)'" -msgstr "falta algun ')'" +msgstr "falta un `)'" -#: expr.c:1053 expr.c:1390 -#, fuzzy +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" -msgstr "error de sintaxi: s'ha arribat inesperadament a la fi del fitxer" +msgstr "error de sintaxi: s'esperava un operand" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" -msgstr "" +msgstr "error de sintaxi: l'operador aritmètic no és vàlid" -#: expr.c:1416 -#, fuzzy, c-format +#: expr.c:1419 +#, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s: %s: %s (la prova d'error ?s \"%s\")\n" +msgstr "%s%s%s: %s (l'element erroni és \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" -msgstr "" +msgstr "la base aritmètica no és vàlida" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" -msgstr "valor massa gran per a la base de numeraci?" +msgstr "el valor de la base és massa gran" -#: expr.c:1543 -#, fuzzy, c-format +#: expr.c:1546 +#, c-format msgid "%s: expression error\n" -msgstr "%s: s'esperava una expressi? de nombre enter" +msgstr "%s: expressió errònia\n" -#: general.c:62 -#, fuzzy +#: general.c:68 msgid "getcwd: cannot access parent directories" -msgstr "getwd: no s'ha pogut accedir als directoris pares" +msgstr "getcwd: els directoris superiors són inaccessibles" -#: input.c:102 subst.c:5168 -#, fuzzy, c-format +#: input.c:102 subst.c:5858 +#, 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" +msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d" #: input.c:271 -#, fuzzy, c-format +#, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "" -"no s'ha pogut assignar una nova descripci? de fitxer per a l'entrada de " -"bash\n" -"a partir del descriptor de fitxer %d: %s" +msgstr "error en crear un fd nou a partir de l'fd %d" #: input.c:279 -#, fuzzy, c-format +#, 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" +msgstr "save_bash_input: ja existia un buffer per al nou fd %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" -msgstr "" +msgstr "start_pipeline: pgrp de la canalització" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "" +msgstr "el pid bifurcat %d apareix a la tasca en execució %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "" +msgstr "s'elimina la tasca aturada %d amb grup de procés %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" -msgstr "" +msgstr "add_process: procés %5ld (%s) a the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "" +msgstr "add_process: el pid %5ld (%s) està marcat com a encara actiu" -#: jobs.c:1435 -#, fuzzy, c-format +#: jobs.c:1590 +#, c-format msgid "describe_pid: %ld: no such pid" -msgstr "describe_pid: L'identificador de proc?s (pid) no existeix (%d)!\n" +msgstr "describe_pid: %ld: no existeix tal pid" -#: jobs.c:1450 -#, fuzzy, c-format +#: jobs.c:1605 +#, c-format msgid "Signal %d" -msgstr "Senyal desconeguda #%d" +msgstr "Senyal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Fet" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Aturat" -#: jobs.c:1473 -#, fuzzy, c-format +#: jobs.c:1628 +#, c-format msgid "Stopped(%s)" -msgstr "Aturat" +msgstr "Aturat(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" -msgstr "S'est? executant" +msgstr "Executant-se" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" -msgstr "Fet (%d)" +msgstr "Fet(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" -msgstr "Fi d'execuci? amb l'estat %d" +msgstr "Sortida %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Estat desconegut" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " -msgstr "(la imatge del nucli ha estat bolcada) " +msgstr "(s'ha bolcat la memòria)" -#: jobs.c:1602 -#, fuzzy, c-format +# wd = working directory +#: jobs.c:1760 +#, c-format msgid " (wd: %s)" -msgstr "(wd ara: %s)\n" +msgstr " (dt: %s)" -#: jobs.c:1819 -#, fuzzy, c-format +#: jobs.c:1985 +#, 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" +msgstr "setpgid (de %ld a %ld) per al procés inferior" -#: jobs.c:2138 nojobs.c:605 -#, fuzzy, c-format +#: jobs.c:2347 nojobs.c:654 +#, 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" +msgstr "wait: el pid %ld no és un fill d'aquest intèrpret" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" -msgstr "" +msgstr "wait_for: No es té constància del procés %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "" +msgstr "wait_for_job: la tasca %d està aturada" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" -msgstr "%s: s'ha finalitzat la tasca" +msgstr "%s: la tasca ha acabat" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" -msgstr "" +msgstr "%s: la tasca %d ja es troba en segon pla" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" +msgstr "waitchld: s'activa el WNOHANG per a evitar un bloqueig indefinit" -#: jobs.c:3711 -#, fuzzy, c-format +#: jobs.c:3970 +#, c-format msgid "%s: line %d: " -msgstr "encaix %3d:" +msgstr "%s línia %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" -msgstr " (bolcat de la imatge del nucli)" +msgstr " (s'ha bolcat la memòria)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" -msgstr "(wd ara: %s)\n" +msgstr "(dt ara: %s)\n" -#: jobs.c:3782 -#, fuzzy +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" -msgstr "initialize_jobs: getpgrp ha fallat: %s" +msgstr "initialize_job_control: getpgrp ha fallat" -#: jobs.c:3843 -#, fuzzy +#: jobs.c:4104 msgid "initialize_job_control: line discipline" -msgstr "initialize_jobs: disciplina de l?nia: %s" +msgstr "initialize_job_control: disciplina de línia" -#: jobs.c:3853 -#, fuzzy +#: jobs.c:4114 msgid "initialize_job_control: setpgid" -msgstr "initialize_jobs: getpgrp ha fallat: %s" +msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "" +msgstr "no s'ha pogut establir el grup de procés del terminal (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" -msgstr "no hi ha cap tasca de control dins d'aquest int?rpret" +msgstr "aquesta sessió no té control de tasques" #: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" -msgstr "" +msgstr "malloc: asserció fallida: %s\n" +# error intern i el \r provoca warnings #: lib/malloc/malloc.c:312 #, c-format msgid "" @@ -1198,435 +1335,464 @@ msgid "" msgstr "" #: lib/malloc/malloc.c:313 -#, fuzzy msgid "unknown" -msgstr "" +msgstr "desconegut" #: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" -msgstr "" +msgstr "malloc: bloc abatussat a la llista de disponibles" #: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" -msgstr "" +msgstr "free: cridat amb un argument de bloc ja alliberat" #: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" -msgstr "" +msgstr "free: cridat amb un argument bloc no assignat" #: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "free: underflow detectat; mh_nbytes fora del domini" #: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" -msgstr "" +msgstr "free: les mides inicial i final del fragment difereixen" #: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" -msgstr "" +msgstr "realloc: cridat amb un argument de bloc no assignat" #: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "realloc: underflow detectat: mh_nbytes fora del domini" #: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" -msgstr "" +msgstr "realloc: les mides inicial i final del fragment difereixen" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "" +msgstr "register_alloc: la taula alloc està plena amb FIND_ALLOC?\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "" +msgstr "register_alloc: %p ja es troba a la taula com a assignat?\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" -msgstr "" +msgstr "register_free: %p ja es troba a la taula com a lliure?\n" #: lib/sh/fmtulong.c:102 msgid "invalid base" -msgstr "" +msgstr "base no vàlida" #: lib/sh/netopen.c:168 -#, fuzzy, c-format +#, c-format msgid "%s: host unknown" -msgstr "desconegut" +msgstr "%s: màquina desconeguda" #: lib/sh/netopen.c:175 #, c-format msgid "%s: invalid service" -msgstr "" +msgstr "%s: el servei no és vàlid" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "" +msgstr "%s: la ubicació remota no és vàlida" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" -msgstr "" +msgstr "les operacions de xarxa no estan suportades" #: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "" +msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s)" #: locale.c:202 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "" +msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s): %s" #: locale.c:259 -#, fuzzy, c-format +#, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" +msgstr "setlocale: %s: no s'ha pogut canviar el local (%s)" #: locale.c:261 -#, fuzzy, c-format +#, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" +msgstr "setlocale: %s: no s'ha pogut canviar el local (%s): %s" #: mailcheck.c:439 msgid "You have mail in $_" -msgstr "Teniu correu en $_" +msgstr "Teniu correu a $_" #: mailcheck.c:464 msgid "You have new mail in $_" -msgstr "Teniu correu nou en $_" +msgstr "Teniu correu nou a $_" #: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" -msgstr "S'ha llegit el correu a %s\n" +msgstr "El correu de %s s'ha llegit\n" -#: make_cmd.c:323 -#, fuzzy +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" -msgstr "error de sintaxi a l'expressi?" +msgstr "error de sintaxi: fa falta una expressió aritmètica" -#: make_cmd.c:325 -#, fuzzy +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" -msgstr "error de sintaxi: s'ha arribat inesperadament a la fi del fitxer" +msgstr "error de sintaxi: `;' inesperat" -#: make_cmd.c:326 -#, fuzzy, c-format +#: make_cmd.c:332 +#, c-format msgid "syntax error: `((%s))'" -msgstr "error de sintaxi" +msgstr "error de sintaxi: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" -msgstr "make_here_document: el tipus d'instrucci? %d ?s incorrecte" +msgstr "make_here_document: tipus d'instrucció erroni %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "" +msgstr "document literal a la línia %d delimitat per EOF (volia `%s')" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: instrucció de redirecció `%d' fora del domini" + +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" msgstr "" -#: parse.y:3278 parse.y:3561 -#, fuzzy, c-format +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "s'ha excedit el nombre màxim de documents literals" + +# "echo $(echo" en un script +#: parse.y:3390 parse.y:3748 +#, 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'" +msgstr "EOF inesperat mentre es cercava un `%c'" -#: parse.y:4170 -#, fuzzy +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" -msgstr "" -"s'ha arribat inesperadament a la fi del fitxer (EOF) mentre\n" -"es buscava per '%c'" +msgstr "EOF inesperat mentre es cercava `]]'" -#: parse.y:4175 -#, fuzzy, c-format +#: parse.y:4415 +#, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "hi ha un error inesperat de sintaxi prop del senyal '%s'" +msgstr "error de sintaxi a l'expressió condicional: element `%s' inesperat" -#: parse.y:4179 -#, fuzzy +#: parse.y:4419 msgid "syntax error in conditional expression" -msgstr "error de sintaxi a l'expressi?" +msgstr "error de sintaxi a l'expressió condicional" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "" +msgstr "element `%s' inesperat, s'esperava `)'" -#: parse.y:4261 -#, fuzzy +#: parse.y:4501 msgid "expected `)'" -msgstr "s'esperava ')'" +msgstr "s'esperava `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "" +msgstr "argument `%s' inesperat a l'operador unari condicional" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" -msgstr "" +msgstr "argument inesperat a l'operador unari condicional" -#: parse.y:4339 -#, fuzzy, c-format +#: parse.y:4579 +#, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "%s: s'esperava un operador binari" +msgstr "element `%s' inesperat, s'esperava un operador binari condicional" -#: parse.y:4343 -#, fuzzy +#: parse.y:4583 msgid "conditional binary operator expected" -msgstr "%s: s'esperava un operador binari" +msgstr "s'esperava un operador binari condicional" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "" +msgstr "argument inesperat `%s' a un operador binari condicional" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" -msgstr "" +msgstr "argument inesperat a un operador binari condicional" -#: parse.y:4380 -#, fuzzy, c-format +#: parse.y:4620 +#, c-format msgid "unexpected token `%c' in conditional command" -msgstr "s'esperava ':' per a l'expressi? condicional" +msgstr "element `%c' inesperat en una ordre condicional" -#: parse.y:4383 -#, fuzzy, c-format +#: parse.y:4623 +#, c-format msgid "unexpected token `%s' in conditional command" -msgstr "s'esperava ':' per a l'expressi? condicional" +msgstr "element `%s' inesperat en una ordre condicional" -#: parse.y:4387 -#, fuzzy, c-format +#: parse.y:4627 +#, c-format msgid "unexpected token %d in conditional command" -msgstr "s'esperava ':' per a l'expressi? condicional" +msgstr "element `%d' inesperat en una ordre condicional" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "hi ha un error inesperat de sintaxi prop del senyal '%s'" +msgstr "error de sintaxi a prop de l'element inesperat `%s'" -#: parse.y:5755 -#, fuzzy, c-format +#: parse.y:6014 +#, c-format msgid "syntax error near `%s'" -msgstr "hi ha un error inesperat de sintaxi prop del senyal '%s'" +msgstr "error de sintaxi a prop de `%s'" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" -msgstr "error de sintaxi: s'ha arribat inesperadament a la fi del fitxer" +msgstr "error de sintaxi: final de fitxer inesperat" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "error de sintaxi" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "Utilitzeu ?%s? per a eixir de l'int?rpret d'ordres.\n" +msgstr "Useu \"%s\" per a deixar l'intèrpret.\n" -#: parse.y:5989 -#, fuzzy +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" -msgstr "" -"s'ha arribat inesperadament a la fi del fitxer (EOF) mentre\n" -"es buscava per '%c'" +msgstr "EOF inesperat mentre es buscava un `)'" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" +msgstr "completion: la funció `%s' no s'ha trobat" + +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" msgstr "" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "" +msgstr "progcomp_insert: %s: el paràmetre COMPSPEC és NUL" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "print_command: el connector '%d' ?s incorrecte" +msgstr "print_command: el connector `%d' és erroni" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" -msgstr "" +msgstr "xtrace_set: %d: el descriptor de fitxer no és vàlid" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" -msgstr "" +msgstr "xtrace_set: el punter de fitxer és NUL" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" -msgstr "" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "" +msgstr "cprintf: `%c': el caràcter de format no és vàlid" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" -msgstr "" +msgstr "descriptor de fitxer fora del domini" -#: redir.c:177 -#, fuzzy, c-format +#: redir.c:178 +#, c-format msgid "%s: ambiguous redirect" -msgstr "%s: Redirecci? ambigua" +msgstr "%s: redirecció ambigua" -# No acabe d'entendre el significat de l'original "clobber" -#: redir.c:181 -#, fuzzy, c-format +# opció noclobber +#: redir.c:182 +#, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s: No s'ha pogut sobreescriure el fitxer existent" +msgstr "%s: no es pot escriure sobre un fitxer existent" -#: redir.c:186 -#, fuzzy, c-format +#: redir.c:187 +#, c-format msgid "%s: restricted: cannot redirect output" -msgstr "%s: restringit: no es pot especificar '/' en noms d'ordres" +msgstr "%s: restricció: no podeu redirigir la sortida" -#: redir.c:191 -#, fuzzy, c-format +#: redir.c:192 +#, 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" +msgstr "no s'ha pogut crear el fitxer temporal per a un document literal: %s" -#: redir.c:195 -#, fuzzy, c-format +#: redir.c:196 +#, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s: no es pot assignar la llista a un element de la matriu" +msgstr "%s: no és possible assignar un fd a una variable" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" -msgstr "" +msgstr "/dev/(tcp|udp)/host/port no està suportat si no hi ha xarxa" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 -#, fuzzy +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" -msgstr "error de redirecci?" +msgstr "error de redirecció: no es pot duplicar l'fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" -msgstr "" +msgstr "no s'ha trobat el directori /tmp, sisplau creeu-lo!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" +msgstr "/tmp ha de ser un nom de directori vàlid" + +#: shell.c:927 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: l'opció no és vàlida" + +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "no s'ha pogut restablir el mode nodelay per a l'fd %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:890 +#: shell.c:1566 #, fuzzy, c-format -msgid "%c%c: invalid option" -msgstr "%c%c: opci? inv?lida" +msgid "%s: Is a directory" +msgstr "%s: és un directori" -#: shell.c:1682 +#: shell.c:1777 msgid "I have no name!" -msgstr "No tinc cap nom d'usuari!" +msgstr "No teniu nom!" -#: shell.c:1827 -#, fuzzy, c-format +#: shell.c:1930 +#, c-format msgid "GNU bash, version %s-(%s)\n" -msgstr "GNU %s, versi? %s\n" +msgstr "GNU bash, versió %s-(%s)\n" -#: shell.c:1828 +# +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"Sintaxi:\t%s [opci?-format-llarg GNU] [opci?] ...\n" -"\t%s [opci?-format-llarg GNU] [opci?] fitxer_de_seq??ncies ...\n" +"Sintaxi:\t%s [opció GNU llarga] [opció] ...\n" +"\t\t%s [opció GNU llarga] [opció] fitxer-script ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" -msgstr "opcions de formes llargues de GNU:\n" +msgstr "Opcions GNU llargues:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" -msgstr "Opcions de l'int?rpret d'ordres:\n" +msgstr "Opcions de l'intèrpret:\n" -#: shell.c:1835 -#, fuzzy +#: shell.c:1938 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" +msgstr "\t-ilrsD, o -c ordre, o bé -O opció_intèrpret\t(només invocació)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" -msgstr "\t-%s o -o opci?\n" +msgstr "\t-%s, o bé -o opció\n" -#: shell.c:1856 +#: shell.c:1959 #, 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" +"Feu `%s -c \"help set\"' per a informació sobre les opcions de l'intèrpret.\n" -#: shell.c:1857 +#: shell.c:1960 #, 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" +msgstr "Feu `%s -c help' per a obtenir informació sobre les ordres internes.\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "" +msgstr "Feu servir l'ordre `bashbug' per a comunicar `bugs'.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "pàgina web de bash: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Ajuda general per a programari GNU: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" -msgstr "" +msgstr "sigprocmask: %d: l'operació no és vàlida" #: siglist.c:48 msgid "Bogus signal" -msgstr "Senyal falsa" +msgstr "Senyal no fiable" +# Senyals POSIX #: siglist.c:51 msgid "Hangup" -msgstr "Penjar" +msgstr "Desconnexió" #: siglist.c:55 msgid "Interrupt" -msgstr "Interrumpeix" +msgstr "Interrupció" #: siglist.c:59 msgid "Quit" -msgstr "Eixir" +msgstr "Sortida" #: siglist.c:63 msgid "Illegal instruction" -msgstr "Instrucci? ilžlegal" +msgstr "Instrucció il·legal" #: siglist.c:67 msgid "BPT trace/trap" -msgstr "BPT rastrejament/captura" +msgstr "Traçat/trampa BPT" #: siglist.c:75 msgid "ABORT instruction" -msgstr "Instrucci? d'avortament (ABORT)" +msgstr "Instrucció ABORT" #: siglist.c:79 msgid "EMT instruction" -msgstr "Instrucci? per a emular una captura EMT" +msgstr "Instrucció EMT" #: siglist.c:83 msgid "Floating point exception" -msgstr "Excepci? en operaci? amb coma flotant" +msgstr "Excepció de coma flotant" #: siglist.c:87 msgid "Killed" -msgstr "Finalitzat" +msgstr "Mort" #: siglist.c:91 msgid "Bus error" @@ -1634,33 +1800,27 @@ msgstr "Error de bus" #: siglist.c:95 msgid "Segmentation fault" -msgstr "Violaci? de segment" +msgstr "Violació de segment" #: siglist.c:99 msgid "Bad system call" -msgstr "Crida inv?lida del sistema" +msgstr "Crida de sistema errònia" #: siglist.c:103 msgid "Broken pipe" -msgstr "Conducte trencat" +msgstr "Canalització trencada" #: siglist.c:107 msgid "Alarm clock" -msgstr "Temporitzador" +msgstr "Alarma de rellotge" #: siglist.c:111 -#, fuzzy msgid "Terminated" -msgstr "" -"opci? incorrecta, la funci? getopts() introdueix el signe '?' dins de\n" -"la variable NAME i esborra la variable OPTARG. Si no es troba una \n" -"opci? necess?ria, s'introdueix el signe '?' en la variable NAME, \n" -"s'esborra la variable OPTARG, i s'imprimir? un missatge de\n" -"diagn?stic." +msgstr "Finalitzat" #: siglist.c:115 msgid "Urgent IO condition" -msgstr "Condici? urgent d'Entrada/Eixida (En/Ei)" +msgstr "Estat E/S urgent" #: siglist.c:119 msgid "Stopped (signal)" @@ -1672,27 +1832,27 @@ msgstr "Continua" #: siglist.c:135 msgid "Child death or stop" -msgstr "S'ha mort o s'ha aturat el proc?s fill" +msgstr "Procés inferior mort o aturat" #: siglist.c:139 msgid "Stopped (tty input)" -msgstr "Aturat (entrada per terminal)" +msgstr "Aturat (entrada tty)" #: siglist.c:143 msgid "Stopped (tty output)" -msgstr "Aturat (eixida per terminal)" +msgstr "Aturat (sortida tty)" #: siglist.c:147 msgid "I/O ready" -msgstr "Entrada/Eixida preparades" +msgstr "E/S a punt" #: siglist.c:151 msgid "CPU limit" -msgstr "L?mit de la UCP" +msgstr "Limitació de CPU" #: siglist.c:155 msgid "File limit" -msgstr "L?mit de la grand?ria del fitxer" +msgstr "Limitació de fitxers" #: siglist.c:159 msgid "Alarm (virtual)" @@ -1700,734 +1860,693 @@ msgstr "Alarma (virtual)" #: siglist.c:163 msgid "Alarm (profile)" -msgstr "Alarma (entorn)" +msgstr "Alarma (perfil)" #: siglist.c:167 msgid "Window changed" -msgstr "S'ha canviat la finestra" +msgstr "Variació de la finestra" #: siglist.c:171 msgid "Record lock" -msgstr "Bloqueig de gravaci?" +msgstr "Bloqueig de registre" #: siglist.c:175 msgid "User signal 1" -msgstr "Senyal 1 definida per l'usuari" +msgstr "Senyal d'usuari 1" #: siglist.c:179 msgid "User signal 2" -msgstr "Senyal 2 definida per l'usuari" +msgstr "Senyal d'usuari 2" #: siglist.c:183 msgid "HFT input data pending" -msgstr "pendent de l'entrada de dades HFT" +msgstr "Dades d'entrada HFT pendents" #: siglist.c:187 msgid "power failure imminent" -msgstr "fallida imminent d'energia" +msgstr "fallada imminent de l'alimentació" #: siglist.c:191 msgid "system crash imminent" -msgstr "fallida imminent del sistema" +msgstr "fallada imminent del sistema" #: siglist.c:195 msgid "migrate process to another CPU" -msgstr "proc?s de migraci? cap a un altre UPC en curs" +msgstr "migració del procés a una altra CPU" #: siglist.c:199 msgid "programming error" -msgstr "error de programaci?" +msgstr "error de programació" #: siglist.c:203 msgid "HFT monitor mode granted" -msgstr "S'ha concedit el mode de monitor HFT" +msgstr "mode de monitoratge HFT concedit" #: siglist.c:207 msgid "HFT monitor mode retracted" -msgstr "S'ha rebutjat el mode de monitor HFT" +msgstr "mode de monitoratge HFT retractat" #: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "S'ha completat la seq??ncia de so HFT" +msgstr "seqüència d'àudio HFT completada" #: siglist.c:215 msgid "Information request" -msgstr "" +msgstr "Petició d'informació" #: siglist.c:223 msgid "Unknown Signal #" -msgstr "Senyal desconeguda #" +msgstr "Senyal Desconegut #" #: siglist.c:225 #, c-format msgid "Unknown Signal #%d" -msgstr "Senyal desconeguda #%d" +msgstr "Senyal Desconegut #%d" -#: subst.c:1362 subst.c:1520 -#, fuzzy, c-format +# missatge similar a subst.c:75XX +#: subst.c:1445 subst.c:1608 +#, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "substituci? inv?lida: no existeix '%s' en %s" +msgstr "substitució errònia: falta un `%s' a %s" -#: subst.c:2847 +# foo[1]=(1 2 3) +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" -msgstr "%s: no es pot assignar la llista a un element de la matriu" +msgstr "%s: no és possible assignar llistes a l'element d'un vector" -#: subst.c:5065 subst.c:5081 -#, fuzzy +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" -msgstr "no es pot establir un conducte per a la substituci? del proc?s: %s" +msgstr "no s'ha pogut crear la canalització per a la substitució de procés" -#: subst.c:5113 -#, fuzzy +#: subst.c:5798 msgid "cannot make child for process substitution" -msgstr "no es pot establir un proc?s fill per a la substituci? del proc?s: %s" +msgstr "no s'ha pogut crear el fill per a la substitució de procés" -#: subst.c:5158 -#, fuzzy, c-format +#: subst.c:5848 +#, c-format msgid "cannot open named pipe %s for reading" -msgstr "no es pot obrir el conducte anomenat %s per a %s: %s" +msgstr "no s'ha pogut obrir la canalització %s amb permís de lectura" -#: subst.c:5160 -#, fuzzy, c-format +#: subst.c:5850 +#, c-format msgid "cannot open named pipe %s for writing" -msgstr "no es pot obrir el conducte anomenat %s per a %s: %s" +msgstr "no s'ha pogut obrir la canalització %s per a escriure-hi" -#: subst.c:5178 -#, fuzzy, c-format +#: subst.c:5873 +#, 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" +msgstr "no s'ha pogut duplicar la canalització %s com a fd %d" -#: subst.c:5376 +#: subst.c:5959 #, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "subtitució errònia: no hi ha \"`\" final a %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" -msgstr "no es poden establir conductes per a la substituci? de l'ordre: %s" +msgstr "no s'ha pogut crear la canalització per a la substitució d'ordre" -#: subst.c:5414 -#, fuzzy +#: subst.c:6127 msgid "cannot make child for command substitution" -msgstr "no es pot crear un proc?s fill per a la substituci? del proc?s: %s" +msgstr "no s'ha pogut crear un fill per a la substitució d'ordre" -#: subst.c:5433 -#, fuzzy +#: subst.c:6153 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" +msgstr "command_substitute: no s'ha pogut duplicar la canalització com a fd 1" -#: subst.c:5837 subst.c:8050 +# buscar context +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "" +msgstr "%s: el nom de la variable referenciada no és vàlid" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: par?metre nul o no ajustat" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: la sub-cadena de l'expressi? ?s < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" -msgstr "%s: substituci? inv?lida" +msgstr "%s: substitució errònia" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: el nombre de línies no és vàlid" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "`%s': el nom de l'àlies no és valid" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: paràmetre nul o no definit" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expressió de subcadena < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" -msgstr "$%s: no es pot assignar d'aquesta manera" +msgstr "$%s: no és possible assignar d'aquesta manera" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -msgstr "" +msgstr "en futures versions s'evaluarà com a substitució aritmètica" -#: subst.c:8421 -#, fuzzy, c-format +#: subst.c:9349 +#, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "substituci? inv?lida: no existeix '%s' en %s" +msgstr "subtitució errònia: no hi ha \"`\" final a %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" -msgstr "" +msgstr "cap coincidència: %s" #: test.c:147 msgid "argument expected" -msgstr "s'esperava un par?metre" +msgstr "s'esperava un argument" #: test.c:156 #, c-format msgid "%s: integer expression expected" -msgstr "%s: s'esperava una expressi? de nombre enter" +msgstr "%s: s'esperava una expressió amb enters" -#: test.c:264 +#: test.c:265 msgid "`)' expected" -msgstr "s'esperava ')'" +msgstr "s'esperava `)'" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "mentre es buscava ?)?, s'ha trobat %s" +msgstr "s'esperava `)', trobat %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: s'esperava un operador unari" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: s'esperava un operador binari" -#: test.c:860 +#: test.c:869 msgid "missing `]'" -msgstr "s'ha perdut algun ']'" +msgstr "falta un `]'" -#: trap.c:217 -#, fuzzy +#: trap.c:224 msgid "invalid signal number" -msgstr "n?mero inv?lid de senyal" +msgstr "el nombre de senyal no és vàlid" -#: trap.c:371 +# internal warning +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:375 +# internal warning +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:428 -#, fuzzy, c-format +#: trap.c:447 +#, c-format msgid "trap_handler: bad signal %d" -msgstr "trap_handler: Senyal inv?lida %d" +msgstr "trap_handler: senyal erroni %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" -msgstr "'%s': error en importar la definici? de la funci?" +msgstr "error en importar la definició de funció de `%s'" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" -msgstr "" +msgstr "el nivell de l'intèrpret (%d) és massa elevat, es restableix a 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +# error intern +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2247 -#, fuzzy, c-format +#: variables.c:2432 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: no es pot assignar la llista a un element de la matriu" +msgstr "%s: no és possible assignar un valor a la variable" -#: variables.c:3646 +# buscar context +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: el nom de la variable referenciada no és vàlid" + +# error intern +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3891 -#, fuzzy, c-format +#: variables.c:4218 +#, c-format msgid "%s has null exportstr" -msgstr "%s: par?metre nul o no ajustat" +msgstr "%s: el paràmetre exportstr és nul" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" -msgstr "" +msgstr "el caràcter %d en el paràmetre exportstr de %s no és vàlid" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" -msgstr "" +msgstr "falta un `=' en el paràmetre exportstr de %s" -#: variables.c:4344 +# error intern +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4357 +# error intern +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4431 +# error intern +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5257 -#, fuzzy, c-format +# error intern +#: variables.c:5619 +#, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: no es pot crear: %s" +msgstr "%s: %s: no s'ha pogut obrir com a FITXER" -#: variables.c:5262 +# error intern +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "" +msgstr "%s: %s: el valor de compatibilitat és fora del domini" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "" +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2013 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" +"Llicència GPLv3+: GNU GPL versió 3 o posterior\n" +" \n" #: version.c:86 version2.c:86 -#, fuzzy, c-format +#, c-format msgid "GNU bash, version %s (%s)\n" -msgstr "GNU %s, versi? %s\n" +msgstr "GNU bash, versió %s (%s)\n" #: version.c:91 version2.c:91 msgid "This is free software; you are free to change and redistribute it." msgstr "" +"Aquest programa és lliure; sou lliures de modificar-lo i redistribuir-lo." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "" - -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "" +msgstr "No hi ha CAP GARANTIA, fins a l'extrem permès per la llei." #: xmalloc.c:91 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "xmalloc: no es poden assignar %lu octets (%lu octets assignats)" +msgstr "%s: no s'han pogut assignar %lu octets (%lu octets assignats)" #: xmalloc.c:93 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "xmalloc: no es poden assignar %lu octets (%lu octets assignats)" +msgstr "%s: no s'han pogut assignar %lu octets" #: xmalloc.c:163 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "xmalloc: no es poden assignar %lu octets (%lu octets assignats)" +msgstr "%s: %s:%d: no s'han pogut assignar %lu octets (%lu octets assignats)" #: xmalloc.c:165 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "xmalloc: no es poden assignar %lu octets (%lu octets assignats)" +msgstr "%s: %s:%d: no s'han pogut assignar %lu octets" -#: builtins.c:43 +# help alias +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" -msgstr "alias [-p] [nom[=valor] ... ]" +msgstr "alias [-p] [nom[=valor] ...]" -#: builtins.c:47 -#, fuzzy +# help unalias +#: builtins.c:49 msgid "unalias [-a] name [name ...]" -msgstr "unalias [-a] [nom ...]" +msgstr "unalias [-a] nom [nom ...]" -#: builtins.c:51 -#, fuzzy +# help bind +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -"bind [-lpvsPVS] [-m keymap] [-f fitxer] [-q nom] [-r keyseq] [keyseq:funci?-" -"readline] " +"bind [-lpsvPSVX] [-m mapa] [-f fitxer] [-q nom] [-u nom] [-r tecles] [-x " +"tecles:ordre-intèrpret] [tecles:funció-readline o ordre-readline]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [ordre-interna [arg ...]]" -#: builtins.c:61 -#, fuzzy +#: builtins.c:63 msgid "caller [expr]" -msgstr "test [expressi?]" - -#: builtins.c:64 -#, fuzzy -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-PL] [directori]" +msgstr "caller [expr]" #: builtins.c:66 -#, fuzzy -msgid "pwd [-LP]" -msgstr "pwd [-PL]" +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dir]" #: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "" - -#: builtins.c:72 -msgid "false" -msgstr "" - -#: builtins.c:74 -msgid "command [-pVv] command [arg ...]" -msgstr "command [-pVv] ordre [par?metre ...]" +msgid "pwd [-LP]" +msgstr "pwd [-LP]" #: builtins.c:76 -#, fuzzy -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-afFrxi] [-p] nom[=valor] ..." +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] ordre [arg ...]" #: builtins.c:78 -#, fuzzy -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-afFrxi] [-p] nom[=valor] ..." +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valor] ...]" #: builtins.c:80 #, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] nom[=valor] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." -msgstr "local nom[=valor] ..." +msgstr "local [opció] nom[=valor] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" -msgstr "echo [-neE] [par?metre ...]" +msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" -msgstr "echo [-n] [par?metre ...]" - -#: builtins.c:90 -#, fuzzy -msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "enable [-pnds] [-a] [-f fitxer] [nom ...]" +msgstr "echo [-n] [arg ...]" #: builtins.c:92 -msgid "eval [arg ...]" -msgstr "eval [par?metre ...]" +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f fitxer] [nom ...]" #: builtins.c:94 -msgid "getopts optstring name [arg]" -msgstr "getopts cadena_opcions nom [par?metre]" +msgid "eval [arg ...]" +msgstr "eval [arg ...]" #: builtins.c:96 -#, fuzzy -msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "exec [-cl] [-a nom] fitxer [redireccionament ...]" +msgid "getopts optstring name [arg]" +msgstr "getopts cadena nom [arg]" #: builtins.c:98 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a nom] [ordre [arguments ...]] [redirecció ...]" + +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 -#, fuzzy +#: builtins.c:102 msgid "logout [n]" -msgstr "fi de sessi?" +msgstr "logout [n]" -#: builtins.c:103 -#, fuzzy +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "" -"fc [-e nom_e] [-nlr] [primer] [darrer]\n" -"o\n" -"fc -s [patr?=rep] [ordre]" +msgstr "fc [-e editor] [-lnr] [primer] [últim] o fc -s [pat=sub] [ordre]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [id_tasca]" +msgstr "fg [tasca]" -#: builtins.c:111 -#, fuzzy +#: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [id_tasca]" +msgstr "bg [tasca ...]" -#: builtins.c:114 -#, fuzzy +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" -msgstr "hash [-r] [-p cam?] [nom ...]" +msgstr "hash [-lr] [-p ubicació] [-dt] [nom ...]" -#: builtins.c:117 -#, fuzzy +#: builtins.c:119 msgid "help [-dms] [pattern ...]" -msgstr "help [patr? ...]" +msgstr "help [-dms] [patró ...]" -#: builtins.c:121 -#, fuzzy +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -"history [-c] [n]\n" -"o\n" -"history -awrn [fitxer]\n" -"o\n" -"history -ps par?metre [par?metre...]" +"history [-c] [-d offset] [n] o history -anrw [fitxer] o history -ps arg " +"[arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "" -"jobs [-lnprs] [id_tasca ...]\n" -"o\n" -"jobs -x ordre [par?metres]" +msgstr "jobs [-lnprs] [tasca ...] o jobs -x ordre [args]" -#: builtins.c:129 +#: builtins.c:131 #, fuzzy -msgid "disown [-h] [-ar] [jobspec ...]" -msgstr "disown [id_tasca ...]" +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [tasca ...]" -#: builtins.c:132 -#, fuzzy +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s id_senyal | -n n?m_senyal | -id_senyal] [id_proc?s | tasca]...\n" -"o\n" -"kill -l [id_senyal]" - -#: builtins.c:134 -msgid "let arg [arg ...]" -msgstr "let par?metres [par?metres ...]" +"kill [-s senyal | -n númsenyal | -senyal] pid | tasca ... o kill -l [senyal]" #: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg ...]" + +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" +"read [-ers] [-a vector] [-d delim] [-i text] [-n núm] [-N núm] [-p introd] [-" +"t espera] [-u fd] [nom ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 -#, fuzzy -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [--abefhkmnptuvxBCHP] [-o opci?] [par?metres ...]" - #: builtins.c:142 -#, fuzzy -msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [nom ...]" +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nom-opció] [--] [arg ...]" #: builtins.c:144 -#, fuzzy -msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "" -"export [-nf] [nom ...]\n" -"o\n" -"export -p" +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [nom ...]" #: builtins.c:146 -#, fuzzy -msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "" -"readonly [-anf] [nom ...]\n" -"o\n" -"readonly -p" +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [nom[=valor] ...] o bé export -p" #: builtins.c:148 -#, fuzzy -msgid "shift [n]" -msgstr "exit [n]" +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [nom[=valor] ...] o bé readonly -p" #: builtins.c:150 -#, fuzzy -msgid "source filename [arguments]" -msgstr "nom del fitxer d'origen" +msgid "shift [n]" +msgstr "shift [n]" #: builtins.c:152 -#, fuzzy -msgid ". filename [arguments]" -msgstr ". nom del fitxer" +msgid "source filename [arguments]" +msgstr "source fitxer [arguments]" -#: builtins.c:155 +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". fitxer [arguments]" + +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 -msgid "test [expr]" -msgstr "test [expressi?]" - #: builtins.c:160 -msgid "[ arg... ]" -msgstr "[ par?metres... ]" +msgid "test [expr]" +msgstr "test [expr]" #: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 -#, fuzzy -msgid "trap [-lp] [[arg] signal_spec ...]" -msgstr "" -"trap [par?metres] [id_senyal], o \n" -"trap -l" +msgid "[ arg... ]" +msgstr "[ arg... ]" #: builtins.c:166 -#, fuzzy +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] senyal ...]" + +#: builtins.c:168 msgid "type [-afptP] name [name ...]" -msgstr "type [-apt] nom [nom ...]" +msgstr "type [-afptP] nom [nom ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHacdfmstpnuv] [l?mit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [límit]" -#: builtins.c:172 -#, fuzzy +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" -msgstr "umask [-S] [mode]" +msgstr "umask [-p] [-S] [mode]" -#: builtins.c:175 -#, fuzzy +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "wait [n]" +msgstr "wait [-n] [id ...]" -#: builtins.c:179 -#, fuzzy +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [n]" - -#: builtins.c:182 -#, fuzzy -msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "for NOM [in PARAULES ... ;] do ORDRES; done" +msgstr "wait [pid ...]" #: builtins.c:184 -#, fuzzy -msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" -msgstr "for NOM [in PARAULES ... ;] do ORDRES; done" +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOM [in PARAULES ... ] ; do ORDRES; done" #: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( exp1; exp2; exp3 )); do ORDRES; done" + +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NOM [in PARAULES ... ;] do ORDRES; done" -#: builtins.c:188 -msgid "time [-p] pipeline" -msgstr "" - #: builtins.c:190 -msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "case PARAULES in [PATR? [| PATR?]...) ORDRES ;;]... esac" +msgid "time [-p] pipeline" +msgstr "time [-p] canalització" #: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PARAULA in [PATRÓ [| PATRÓ]...) ORDRES ;;]... esac" + +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "" "if ORDRES; then ORDRES; [ elif ORDRES; then ORDRES; ]... [ else ORDRES; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while ORDRES; do ORDRES; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until ORDRES; do ORDRES; done" -#: builtins.c:198 -msgid "coproc [NAME] command [redirections]" -msgstr "" - #: builtins.c:200 -#, fuzzy -msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "function NOM { ORDRES ; } or NOM () { ORDRES ; }" +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOM] ordre [redireccions]" #: builtins.c:202 -#, fuzzy -msgid "{ COMMANDS ; }" -msgstr "{ ORDRES }" +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function nom { ORDRES ; } o bé nom () { ORDRES ; }" #: builtins.c:204 -#, fuzzy -msgid "job_spec [&]" -msgstr "fg [id_tasca]" +msgid "{ COMMANDS ; }" +msgstr "{ ORDRES ; }" #: builtins.c:206 -#, fuzzy -msgid "(( expression ))" -msgstr "s'esperava una expressi?" +msgid "job_spec [&]" +msgstr "tasca [&]" #: builtins.c:208 -#, fuzzy -msgid "[[ expression ]]" -msgstr "s'esperava una expressi?" +msgid "(( expression ))" +msgstr "(( expressió ))" #: builtins.c:210 -#, fuzzy +msgid "[[ expression ]]" +msgstr "[[ expressió ]]" + +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "Es permeten les variables de l'int?rpret d'ordres com a operands. El" +msgstr "variables - Noms i significat d'algunes variables de l'intèrpret" -#: builtins.c:213 -#, fuzzy +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" -msgstr "pushd [directori | +N | -N] [-n]" +msgstr "pushd [-n] [+N | -N | dir]" -#: builtins.c:217 -#, fuzzy +#: builtins.c:219 msgid "popd [-n] [+N | -N]" -msgstr "popd [+N | -N] [-n]" +msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 -#, fuzzy -msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "shopt [-pqsu] [-o opci?_format_llarg] nom_opci? [nom_opci?...]" - #: builtins.c:226 -msgid "printf [-v var] format [arguments]" -msgstr "" +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [opció ...]" -#: builtins.c:229 +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [arguments]" + +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o opció] [-A acció] [-G patró] [-W " +"llista] [-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [nom ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" +"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W llista] [-F " +"funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]" -#: builtins.c:237 -#, fuzzy +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "type [-apt] nom [nom ...]" - -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" +msgstr "compopt [-o|+o opció] [-DE] [nom ...]" #: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c " +"quàntum] [vector]" + +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" +"readarray [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c " +"quàntum] [vector]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2439,27 +2558,49 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " "been\n" " defined." msgstr "" +"Defineix o mostra àlies.\n" +"\n" +" Sense arguments, `alias' mostra la llista d'àlies definits, en forma de\n" +" `alias NOM=VALOR' a la sortida estàndard.\n" +"\n" +" Altrament, defineix un àlies per a cada NOM per al qual existeix un\n" +" VALOR. Un espai al final de VALOR fa que la paraula següent sigui\n" +" susceptible de ser substituïda per un àlies quan s'expandeix l'àlies.\n" +"\n" +" Opcions:\n" +" -p Mostra tots els àlies definits en un format reutilitzable\n" +"\n" +" Estat de sortida:\n" +" alias torna cert, excepte si heu proporcionat un NOM per al qual no " +"s'ha\n" +" definit cap àlies." -#: builtins.c:276 +#: builtins.c:278 #, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"Es treuen NOMs de la llista de les definicions d'?lies. Si s'especifica" +"Esborra cada NOM de la llista d'àlies definits.\n" +"\n" +" Opcions:\n" +" -a esborra totes les definicions d'àlies.\n" +"\n" +" Retorna èxit excepte si NOM no és un àlies existent." -#: builtins.c:289 +#: builtins.c:291 +#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2493,15 +2634,57 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" +"Defineix vincles de tecla i variables Readline.\n" +"\n" +" Vincula una seqüència de tecles a una funció o macro Readline, o bé\n" +" defineix una variable Readline. La sintaxi dels arguments no-opcions " +"és\n" +" la mateixa que la del fixer ~/.inputrc, però s'ha de passar com a un\n" +" únic argument: per exemple, bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +"\n" +" Opcions:\n" +" -m mapa Usa `mapa' com a mapa de tecles mentre duri aquesta\n" +" ordre. Els noms de mapes acceptables són emacs, emacs-\n" +" standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-" +"command,\n" +" i vi-insert.\n" +" -l Mostra els noms de les funcions\n" +" -P Mostra els noms de les funcions i els vincles de tecla.\n" +" -p Mostra les funcions i els vincles en un format que es pot\n" +" reutilitzar com a entrada.\n" +" -S Mostra les seqüències de tecles que invoquen macros i els\n" +" seus respectius valors.\n" +" -s Mostra les seqüències de tecles que invoquen macros i els\n" +" seus respectius valors en un format que es pot " +"reutilitzar\n" +" com a entrada.\n" +" -V Mostra els noms de les variables i els seus valors.\n" +" -v Mostra els noms de les variables i els seus respectius\n" +" valors en un format que es pot reutilitzar com a entrada.\n" +" -q nom Consulta quines tecles invoquen la funció especificada.\n" +" -u nom Desvincula les tecles vinculades a la funció " +"especificada.\n" +" -r tecles Elimina els vincles associats a TECLES.\n" +" -f fitxer Llegeix els vincles de tecla desats a FITXER.\n" +" -x tecles:ordre Fa que s'executi ORDRE quan es prem TECLES.\n" +" -X Mostra les seqüències de tecla vinculades amb l'opció -x " +"i\n" +" les ordres associades, en un format reutilitzable com a\n" +" entrada.\n" +"\n" +" Estat de sortida:\n" +" bind torna 0 excepte si passeu una opció no reconeguda o es produeix\n" +" un error." -#: builtins.c:328 -#, fuzzy +# help break +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2510,10 +2693,17 @@ msgid "" " \n" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." -msgstr "Repr?n la seg?ent iteraci? del bucle envoltant FOR, WHILE, o UNTIL." +msgstr "" +"Surt de bucles for, while o until.\n" +"\n" +" Surt d'un bucle FOR, WHILE o UNTIL. Si especifiqueu N, trenca N bucles\n" +" de la imbricació.\n" +"\n" +" Estat de sortida:\n" +" L'estat de sortida és 0 excepte si N és més petit que 1." -#: builtins.c:340 -#, fuzzy +# help continue +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2522,9 +2712,16 @@ msgid "" " \n" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." -msgstr "Repr?n la seg?ent iteraci? del bucle envoltant FOR, WHILE, o UNTIL." +msgstr "" +"Continua bucles for, while o until.\n" +"\n" +" Executa la següent iteració en un bucle FOR, WHILE o UNTIL. Si\n" +" especifiqueu N, continua el bucle N-èssim de la imbricació.\n" +"\n" +" Estat de sortida:\n" +" L'estat de sortida és 0 excepte si N és més petit que 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2537,8 +2734,20 @@ msgid "" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." msgstr "" +"Executa ordres internes.\n" +"\n" +" Executa ORDRE-INTERNA amb ARG com a arguments sense fer una cerca de\n" +" l'ordre. Això és útil si voleu reimplementar una ordre interna de\n" +" l'intèrpret com a funció, però voleu executar l'ordre interna des de la\n" +" pròpia funció.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de ORDRE-INTERNA, o fals si ORDRE-INTERNA no " +"és\n" +" una ordre interna." -#: builtins.c:367 +# help caller +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2553,8 +2762,21 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" +"Retorna el context de la subrutina actual.\n" +"\n" +" Sense EXPR, torna \"$linia $nomfitxer\". Amb EXPR, torna \"$linia\n" +" $subrutina $nomfitxer\"; aquesta informació addicional es pot utilitzar\n" +" per a proporcionar un traçat de la pila.\n" +"\n" +" El valor de EXPR indica quants frames retrocedir des de l'actual; el\n" +" frame superior és el 0.\n" +"\n" +" Estat de sortida:\n" +" Retorna 0 excepte si l'intèrpret no està executant una funció o si EXPR\n" +" no és una expressió vàlida." -#: builtins.c:385 +#: builtins.c:387 +#, fuzzy msgid "" "Change the shell working directory.\n" " \n" @@ -2577,16 +2799,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2598,14 +2820,51 @@ msgid "" "when\n" " -P is used; non-zero otherwise." msgstr "" +"Canvia el directori de treball de l'intèrpret.\n" +"\n" +" Canvia el directori actual a DIR. Per defecte, DIR és el valor de la\n" +" variable HOME.\n" +"\n" +" La variable CDPATH defineix els camins de cerca per al directori que\n" +" conté DIR. Es poden especificar camins alternatius separats per dos\n" +" punts (:). Un nom de directori nul és el mateix que el directori\n" +" actual. Si DIR comença amb una barra, aleshores no s'usa CDPATH. Si " +"no\n" +" es troba el directori, i l'opció de l'intèrpret `cdable_vars' està\n" +" activada, llavors s'interpreta la paraula com un nom de variable. Si " +"la\n" +" variable especificada té algun valor, llavors aquest valor s'usa en " +"lloc\n" +" de DIR.\n" +"\n" +" Opcions:\n" +" -L obliga a seguir els enllaços simbòlics: resol els enllaços\n" +" simbòlics que conté DIR després de processar `..'\n" +" -P usa l'estructura de directoris física i no segueix els\n" +" possibles enllaços simbòlics: resol els enllaços simbòlics\n" +" que conté DIR abans de processar `..'\n" +" -e amb l'opció -P, si el directori de treball actual no es pot\n" +" determinar amb èxit, surt amb un estat diferent de zero\n" +" -@ en sistemes que ho suporten, presenta un fitxer amb " +"atributs\n" +" estesos com un directori que conté els atributs del fitxer\n" +"\n" +" Per defecte, se segueixen els enllaços simbòlics, com si s'especifiqués\n" +" l'opció `-L'. `..' es processa eliminant el component del camí\n" +" immediatament previ fins a la primera barra o fins al principi de DIR.\n" +"\n" +" Estat de sortida:\n" +" Torna 0 si s'ha canviat de directori, i si $PWD s'ha establert de forma\n" +" satisfactòria quan s'utilitza -P; altrament un valor diferent de zero." -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2614,9 +2873,20 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" +"Mostra el nom del directori de treball actual.\n" +"\n" +" Opcions:\n" +" -L mostra el valor de $PWD si és el nom del directori de\n" +" treball actual\n" +" -P mostra el directori físic, sense cap enllaç simbòlic\n" +"\n" +" Per defecte, `pwd' es comporta com si haguéssiu especificat `-L'.\n" +"\n" +" Estat de sortida:\n" +" Torna 0 excepte si heu especificat una opció no vàlida o no es pot\n" +" llegir el directori actual." -#: builtins.c:439 -#, fuzzy +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2624,25 +2894,40 @@ msgid "" " \n" " Exit Status:\n" " Always succeeds." -msgstr "Cap efecte; no es fa res. Es retorna amb el codi zero com a eixida." +msgstr "" +"Ordre nul·la.\n" +"\n" +" No té cap efecte; aquesta ordre no fa res.\n" +"\n" +" Estat de sortida:\n" +" Sempre reïx." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" " Exit Status:\n" " Always succeeds." msgstr "" +"Torna un resultat reeixit.\n" +"\n" +" Estat de sortida:\n" +" Sempre reïx." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" " Exit Status:\n" " Always fails." msgstr "" +"Torna un resultat fallit.\n" +"\n" +" Estat de sortida:\n" +" Sempre falla." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2652,16 +2937,34 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" +"Executa una ordre simple o mostra informació sobre ordres.\n" +"\n" +" Executa ORDRE amb ARGS sense cercar funcions de l'intèrpret amb aquest\n" +" nom, o bé mostra informació sobre l'ORDRE especificada. Es pot\n" +" utilitzar per a invocar ordres des del disc, quan existeix una funció\n" +" amb el mateix nom.\n" +"\n" +" Opcions:\n" +" -p usa el valor per defecte de la variable PATH que garanteix\n" +" trobar totes les utilitats estàndards\n" +" -v mostra una descripció de l'ORDRE similar a la que mostra\n" +" l'ordre `type'\n" +" -V mostra una descripció més detallada per a cada ORDRE\n" +"\n" +" Estat de sortida:\n" +" Retorna l'estat de sortida de ORDRE, o fracàs si ORDRE no s'ha trobat." -#: builtins.c:487 +# help declare +#: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2671,9 +2974,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2700,15 +3003,53 @@ msgid "" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." msgstr "" +"Assigna valors i atributs a variables.\n" +"\n" +" Declara variables i els hi assigna atributs. Sense cap NOM, mostra el\n" +" valor i atributs de totes les variables.\n" +"\n" +" Opcions:\n" +" -f només té en compte noms i definicions de funcions\n" +" -F només mostra noms de funcions (a part del número de línia i\n" +" el nom del fitxer, en mode de depuració)\n" +" -p mostra els atributs i el valor de cada NOM\n" +"\n" +" Opcions que estableixen atributs:\n" +" -a per a fer NOMs vectors indexats (si estan suportats)\n" +" -A per a fer NOMs vectors associatius (si estan suportats)\n" +" -i per a assignar l'atribut `nombre enter' a NOMs\n" +" -l per a passar NOMs a minúscules en l'assignació\n" +" -r per a fer NOMs de només-lectura\n" +" -t per a assignar l'atribut `traça' a NOMs\n" +" -u per a passar NOMs a majúscules en l'assignació\n" +" -x per a exportar NOMs\n" +"\n" +" Si feu servir `+' en lloc de `-', elimina l'atribut.\n" +"\n" +" Les variables que tenen l'atribut `nombre enter' s'avaluen\n" +" aritmèticament (vegeu l'ordre `let') quan s'assigna un valor a la\n" +" variable.\n" +"\n" +" Quan s'usa en una funció, `declare' converteix NOMs en variables " +"locals,\n" +" igual que l'ordre `local'.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si rep una opció invàlida o es produeix un error." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" +"Assigna valors i atributs a variables.\n" +"\n" +" Obsolet. Vegeu `help declare'." -#: builtins.c:535 +# help local +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2722,8 +3063,23 @@ msgid "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." msgstr "" +"Defineix variables locals.\n" +"\n" +" Crea una variable local anomenada NOM i li assigna VALOR. OPCIÓ pot " +"ser\n" +" qualsevol opció que `declare' admeti.\n" +"\n" +" Les variables locals només es poden utilitzar dins d'una funció; només\n" +" són visibles a dins de la funció on són definides i dins de les " +"funcions\n" +" imbricades dins d'aquestes.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit excepte si heu especificat una opció no vàlida, es produeix\n" +" un error, o l'intèrpret no està executant una funció." -#: builtins.c:552 +#: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -2749,15 +3105,46 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Escriu arguments a la sortida estàndard.\n" +"\n" +" Mostra els ARGs a la sortida estàndard, separats per un únic espai i\n" +" seguits d'un salt de línia.\n" +"\n" +" Opcions:\n" +" -n omet el caràcter de salt de línia.\n" +" -e activa la interpretació de seqüències d'escapada\n" +" -E desactiva la interpretació de seqüències d'escapada\n" +"\n" +" `echo' interpreta els següents caràcters escapats per una barra " +"inversa:\n" +" \\a alerta (campana)\n" +" \\b retrocés\n" +" \\c suprimeix tota sortida ulterior\n" +" \\e caràcter d'escapada\n" +" \\E caràcter d'escapada\n" +" \\f salt de pàgina\n" +" \\n salt de línia\n" +" \\r retorn de carro\n" +" \\t tabulació horitzontal\n" +" \\v tabulació vertical\n" +" \\\\ barra invertida\n" +" \\0nnn caràcter corresponent al codi ASCII número NNN, on NNN és " +"un\n" +" número octal de 0 a 3 dígits.\n" +" \\xHH caràcter de 8 bits corresponent al valor HH, on HH és un\n" +" número hexadecimal d'1 o 2 dígits.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, tret que es produeixi un error d'escriptura." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2769,8 +3156,18 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Escriu arguments a la sortida estàndard.\n" +"\n" +" Mostra els ARGs a la sortida estàndard seguits d'un salt de línia.\n" +"\n" +" Opcions:\n" +" -n omet el caràcter de salt de línia.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, tret que es produeixi un error d'escriptura." -#: builtins.c:603 +# help enable +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2796,8 +3193,35 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" +"Habilita o inhabilita ordres internes de l'intèrpret.\n" +"\n" +" Habilita o inhabilita ordres internes de l'intèrpret. Inhabilitar una\n" +" ordre interna permet executar una ordre que es troba en el disc i que " +"té\n" +" el mateix nom que l'ordre interna, sense necessitat d'escriure'n la\n" +" ubicació completa.\n" +"\n" +" Opcions:\n" +" -a mostra una llista d'ordres internes indicant-ne l'estat\n" +" -n inhabilita NOM o bé mostra una llista de les ordres " +"internes\n" +" que es troben inhabilitades\n" +" -p mostra la llista en format reutilitzable\n" +" -s mostra només les ordres internes `especials' Posix\n" +"\n" +" Opcions per a controlar l'enllaçat dinàmic:\n" +" -f carrega l'ordre interna NOM, de l'objecte compartit FITXER\n" +" -d esborra una ordre interna carregada amb l'opció -f\n" +"\n" +" Sense opcions, habilita cada un dels NOMs.\n" +"\n" +" Per a utilitzar el `test' que es troba al $PATH en lloc de la versió\n" +" interna de l'intèrpret, feu `enable -n test'.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si NOM no és una ordre interna o té lloc un error." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2808,8 +3232,15 @@ msgid "" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" +"Executa els arguments com una ordre.\n" +"\n" +" Combina els ARGs en una única cadena, utilitza el resultat com a input\n" +" per a l'intèrpret, i executa les ordres resultants.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'ordre, o èxit si l'ordre és nul·la." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2849,8 +3280,50 @@ msgid "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." msgstr "" +"Interpreta arguments d'opcions.\n" +"\n" +" getopts l'utilitzen els procediments de l'intèrpret per a interpretar\n" +" els paràmetres posicionals com a opcions.\n" +"\n" +" CADENA conté les lletres de les opcions a reconèixer; si una lletra va\n" +" seguida de dos punts, l'opció requereix un argument, que s'ha de " +"separar\n" +" amb un espai en blanc.\n" +"\n" +" Cada cop que s'invoca, getopts posarà l'opció successiva a la variable\n" +" d'entorn $nom, inicialitzant nom si no existeix, i l'índex del següent\n" +" argument a la variable OPTIND. La variable OPTIND s'inicialitza a 1\n" +" cada cop que s'invoca l'intèrpret o un script. Quan una opció " +"requereix\n" +" un argument, getopts col·loca l'argument a la variable OPTARG.\n" +"\n" +" getopts pot informar d'errors de dues maneres. Si el primer caràcter " +"de\n" +" CADENA és un caràcter de dos punts (:), getopts entra en mode " +"silenciós.\n" +" En aquest mode, no es mostra cap missatge d'error. Si es detecta una\n" +" opció no vàlida, getopts col·loca el caràcter de l'opció a OPTARG. Si\n" +" no es troba un argument requerit, getopts posa un ':' a NOM, i el\n" +" caràcter de l'opció trobada a OPTARG. Si getopts no es troba en mode\n" +" silenciós, i es detecta una opció no vàlida, getopts posa un '?' a NOM " +"i\n" +" elimina la variable OPTARG. Si no troba un argument requerit, posa un\n" +" '?' a NOM, elimina OPTARG, i mostra un missatge de diagnòstic.\n" +"\n" +" Si la variable OPTERR té el valor 0, getopts evita mostrar missatges\n" +" d'error, encara que el primer caràcter de CADENA no siguin dos punts.\n" +" Per defecte, OPTERR té el valor 1.\n" +"\n" +" Normalment, getopts interpreta els paràmetres posicionals ($0 - $9),\n" +" però si hi ha més arguments, s'interpreten aquests.\n" +"\n" +" Estat de sortida:\n" +" Retorna èxit si es troba alguna opció; falla si s'arriba al final de " +"les\n" +" opcions o si es produeix un error." -#: builtins.c:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -2861,8 +3334,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2872,17 +3345,38 @@ msgid "" " Returns success unless COMMAND is not found or a redirection error " "occurs." msgstr "" +"Substitueix l'intèrpret per l'ordre especificada.\n" +"\n" +" Executa ORDRE, substituint aquest intèrpret pel programa especificat.\n" +" Es passen ARGUMENTS a l'ORDRE com a arguments. Si no especifiqueu cap\n" +" ORDRE, qualsevol redirecció té efectes a l'intèrpret actual.\n" +"\n" +" Opcions:\n" +" -a nom passa NOM a ORDRE com a argument número zero\n" +" -c executa ORDRE en un entorn buit\n" +" -t passa un guionet (-) a ORDRE com a argument número zero\n" +"\n" +" Si l'ordre no es pot executar i la sessió és no-interactiva, " +"l'intèrpret\n" +" surt, excepte si l'opció `execfail' està habilitada.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, tret que ORDRE no es trobi o es produeixi un error de\n" +" redirecció." -#: builtins.c:706 -#, fuzzy +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." -msgstr "Finalitza l'int?rpret d'ordres amb l'estat d'N. Si s'ometeix N," +msgstr "" +"Abandona l'intèrpret.\n" +"\n" +" Surt de l'intèrpret amb estat N. Si ometeu N, l'estat de sortida és el\n" +" de l'última ordre executada." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2890,8 +3384,13 @@ msgid "" "executed\n" " in a login shell." msgstr "" +"Abandona una sessió d'entrada.\n" +"\n" +" Abandona una sessió d'entrada amb estat de sortida N. Torna un error si\n" +" no s'està executant en una sessió d'entrada." -#: builtins.c:725 +# help fc (hi ha un bug a la cadena original) +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2920,9 +3419,36 @@ msgid "" " Returns success or status of executed command; non-zero if an error " "occurs." msgstr "" +"Mostra o executa ordres de l'historial.\n" +"\n" +" fc s'utilitza per a mostrar o editar i reexecutar ordres de " +"l'historial.\n" +" PRIMER i ÚLTIM poden ser números que defineixen un interval, o PRIMER\n" +" pot ser una cadena, que significa l'ordre més recent que comença amb\n" +" aquesta cadena.\n" +"\n" +" Opcions:\n" +" -e EDITOR selecciona quin editor utilitzar. Per defecte és el valor\n" +" de la variable FCEDIT, després el valor de EDITOR, i\n" +" finalment vi\n" +" -l\tmostra les línies en lloc d'editar-les\n" +" -n\tomet els nombres de línia a l'hora de mostrar la llista\n" +" -r\tinverteix l'ordre de les línies (més recents primer)\n" +"\n" +" Amb el format `fc -s [pat=sub ...] [ordre]', ORDRE es reexecuta després\n" +" d'haver fet la substitució PAT=SUB.\n" +"\n" +" Un àlies útil és r='fc -s', de manera que en escriure `r cc' s'executa\n" +" l'última ordre que comença amb `cc' i en escriure `r' reexecuta " +"l'última\n" +" ordre.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit o l'estat de l'última ordre executada; diferent de zero si " +"es\n" +" produeix un error." -#: builtins.c:755 -#, fuzzy +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2932,9 +3458,20 @@ msgid "" " \n" " Exit Status:\n" " 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." +msgstr "" +"Porta una tasca al primer pla.\n" +"\n" +" Mou la tasca identificada per TASCA al primer pla, convertint-la en la\n" +" tasca corrent. Si TASCA no es dóna, s'utilitza la tasca que " +"l'intèrpret\n" +" considera com a corrent.\n" +"\n" +" Estat de sortida:\n" +" L'estat de l'ordre que es mou al primer pla, o fallada si es produeix " +"un\n" +" error." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2947,8 +3484,19 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Mou tasques al segon pla.\n" +"\n" +" Mou la tasca identificada per TASCA al segon pla, com si s'haguessin\n" +" iniciat amb un `&'. Si TASCA no es dóna, s'utilitza la tasca que\n" +" l'intèrpret considera com a tasca corrent.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si el control de tasques no està habilitat o es\n" +" produeix un error." -#: builtins.c:784 +# help hash +#: builtins.c:787 +#, fuzzy msgid "" "Remember or display program locations.\n" " \n" @@ -2957,22 +3505,44 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" +"Recorda o mostra la ubicació de programes.\n" +"\n" +" Determina i recorda la ubicació completa de cada NOM d'ordre. Sense\n" +" arguments, es mostra informació sobre les ordres que s'han recordat.\n" +"\n" +" Opcions:\n" +" -d oblida la ubicació recordada de cada NOM\n" +" -l utilitza un format que es pot reciclar com a " +"entrada\n" +" -p ubicació utilitza UBICACIÓ com a ubicació sencera de NOM\n" +" -r oblida totes les ubicacions recordades\n" +" -t mostra la ubicació recordada de cada NOM, precedint\n" +" cada ubicació pel corresponent NOM, si hi ha\n" +" múltiples NOMs.\n" +" Arguments:\n" +" NOM Es busca NOM en el $PATH i s'afegeix a la llista\n" +" d'ordres recordades.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si NOM no es troba o es passa una opció invàlida." -#: builtins.c:809 +# help help +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -2984,7 +3554,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2993,8 +3563,25 @@ msgid "" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" +"Mostra informació sobre ordres internes.\n" +"\n" +" Mostra ajuda sobre les ordres internes. Amb PATRÓ, dóna informació\n" +" detallada sobre aquelles ordres que coincideixen amb PATRÓ, altrament\n" +" mostra una llista amb temes d'ajuda.\n" +"\n" +" Opcions:\n" +" -d mostra una desprició curta de cada tema\n" +" -m mostra la forma d'ús en format de pseudopàgina de manual\n" +" -s mostra una sinopsi de cada tema corresponent a PATRÓ\n" +"\n" +" Arguments:\n" +" PATRÓ patró que especifica un tema d'ajuda\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si PATRÓ no es troba o es passa una opció invàlida." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3003,23 +3590,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3027,8 +3614,42 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Mostra o manipula l'historial.\n" +"\n" +" Mostra l'historial amb números de línia, prefixant cada entrada\n" +" modificada amb un `*'. Amb l'argument N, només mostra les N últimes\n" +" entrades.\n" +"\n" +" Opcions:\n" +" -c esboora totes les entrades de la llista de l'historial\n" +" -d offset esborra l'entrada de l'historial a la posició OFFSET\n" +" -a afegeix les línies de la sessió actual al fitxer de\n" +" l'historial\n" +" -n llegeix el fitxer de l'historial\n" +" -r llegeix el fitxer de l'historial i n'afegeix el contingut\n" +" a la llista\n" +" -w escriu l'historial actual al fitxer de l'historial i\n" +" l'afegeix a la llista\n" +" -p expandeix cada ARG i mostra el resultat, sense desar-lo\n" +" a la llista\n" +" -s afegeix ARGs a la llista com una única entrada\n" +"\n" +" Si s'indica un nom de FITXER, s'utilitza com a fitxer d'historial. En\n" +" cas contrar, si $HISTFILE té algun valor, s'utilitza aquest, si no\n" +" ~/.bash_history.\n" +"\n" +" Si la variable $HISTTIMEFORMAT està definida i no és nul·la, el seu\n" +" valor s'utilitza com a cadena de format strftime(3) per a mostrar " +"l'hora\n" +" associada a cada entrada de l'historial. En cas contrari no es mostra\n" +" cap hora.\n" +"\n" +" Estat de sortida: \n" +" Torna èxit excepte si es passa una opció invàlida o es produeix un\n" +" error." -#: builtins.c:869 +#: builtins.c:872 +#, fuzzy msgid "" "Display status of jobs.\n" " \n" @@ -3038,7 +3659,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3051,8 +3672,31 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" +"Mostra l'estat de tasques.\n" +"\n" +" Mostra les tasques actives. Si s'especifica TASCA, es restringeix la\n" +" sortida a la tasca especificada. Sense opcions, es mostra l'estat de\n" +" totes les tasques actives.\n" +"\n" +" Opcions:\n" +" -l mostra els IDs de procés a més de la informació normal\n" +" -n mostra només les tasques l'estat de les quals ha\n" +" canviat des de l'última notificació\n" +" -p mostra només els IDs de procés\n" +" -r restringeix la sortida a les tasques en execució\n" +" -s restringeix la sortida a les tasques aturades\n" +"\n" +" Amb l'opció -x, s'executa ORDRE, després de substituir totes les\n" +" especificacions de tasca per l'ID del procés del líder del grup de\n" +" processos d'aquella tasca, a ARGS.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si es passa una opció invàlida o es produeix un\n" +" error. Si s'utilitza -x, torna l'estat de sortida d'ORDRE." -#: builtins.c:896 +# help disown +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3062,14 +3706,29 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"Suprimeix tasques de l'intèrpret en funcionament.\n" +"\n" +" Suprimeix TASCA de la taula de tasques actives. Sense TASCA,\n" +" s'interpreta que es refereix a la tasca corrent.\n" +"\n" +" Opcions:\n" +" -q suprimeix totes les tasques si no s'especifica TASCA\n" +" -h\tmarca TASCA per a no enviar-li un senyal SIGHUP si\n" +" l'intèrpret rep un SIGHUP\n" +" -r suprimeix totes les tasques en execució\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si es passa una opció o TASCA invàlida." -#: builtins.c:915 +# help kill +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3081,7 +3740,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3090,8 +3750,30 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Envia un senyal a una tasca.\n" +"\n" +" Envia el senyal SENYAL o NÚMSENYAL al procés corresponent a PID o " +"TASCA.\n" +" Si no s'especifica cap senyal, s'envia un SIGTERM.\n" +"\n" +" Opcions:\n" +" -s senyal SENYAL és el nom d'un senyal\n" +" -n númsenyal\tNÚMSENYAL és el número d'un senyal\n" +" -l mostra els noms dels senyals; si hi ha arguments \n" +" després de `-l' s'interpreten com a números de\n" +" senyals, els noms dels quals s'han de mostrar\n" +"\n" +" kill és una ordre interna per dues raons: perquè això permet usar IDs " +"de\n" +" tasca en lloc de IDs de procés, i perquè permet matar processos encara\n" +" que arribeu al límit de processos que se us permet crear.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si es passa una opció no vàlida o es produeix un\n" +" error." -#: builtins.c:938 +# help let +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3135,8 +3817,51 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" +"Avalua expressions aritmètiques.\n" +"\n" +" Avalua ARG com a expressió aritmètica. Les operacions es fan amb " +"enters\n" +" de llargada fixa sense comprovacions de desbordament, tot i que les\n" +" divisions per 0 es detecten i es marquen com a error. La següent " +"llista\n" +" mostra els operadors, agrupats per nivells d'igual precedència. Els\n" +" nivells estan llistats en ordre descendent de precedència.\n" +"\n" +" \tid++, id--\tpostincrement, postdecrement\n" +" \t++id, --id\tpreincrement, predecrement\n" +" \t-, +\t\tnegatiu, positiu unaris\n" +" \t!, ~\t\tnegació lògica i binària\n" +" \t**\t\texponenciació\n" +" \t*, /, %\t\tmultiplicació, divisió, residu\n" +" \t+, -\t\taddició, subtracció\n" +" \t<<, >>\t\tdesplaçament binari a l'esquerra i a la dreta\n" +" \t<=, >=, <, >\tcomparació\n" +" \t==, !=\t\tigualtat, desigualtat\n" +" \t&\t\tAND binari\n" +" \t^\t\tXOR binari\n" +" \t|\t\tOR binari\n" +" \t&&\t\tAND lògic\n" +" \t||\t\tOR lògic\n" +" \texpr ? expr : expr\n" +" \t\t\toperador condicional\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignació\n" +"\n" +" S'admeten variables com a operands. El nom de la variable se\n" +" substitueix pel seu valor (convertit en enter d'amplada fixa). La\n" +" variable no cal que tingui l'atribut d'enter perquè pugui aparèixer en\n" +" una expressió aritmètica.\n" +"\n" +" Els operadors s'avaluen per ordre de precedència. Les subexpressions\n" +" entre parèntesis s'avaluen primer, independentment de les regles de\n" +" precedència anteriors.\n" +"\n" +" Estat de sortida:\n" +" Si l'últim ARG s'avalua en 0, let torna 1; altrament torna 0." -#: builtins.c:983 +#: builtins.c:987 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3157,27 +3882,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3186,8 +3912,61 @@ msgid "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" +"Llegeix una línia a l'entrada estàndard i la separa en camps.\n" +"\n" +" Llegeix una sola línia a l'entrada estàndard, o al descriptor de\n" +" fitxer FD si s'especifica l'opció -u. La línia se separa en camps,\n" +" segons les mateixes regles que en la separació de paraules, i la " +"primera\n" +" paraula s'assigna al primer NOM, la segona al segon NOM, etc., mentre\n" +" que les paraules sobrants, si n'hi ha, s'assignen a l'últim NOM. Només\n" +" es reconeixen com a delimitadors de paraula els caràcters que conté la\n" +" variable $IFS.\n" +"\n" +" Si no s'especifica cap NOM, llavors la línia llegida es desa a la\n" +" variable REPLY.\n" +"\n" +" Opcions:\n" +" -a vector\tassigna les paraules llegides a VECTOR, de forma " +"seqüencial\n" +" començant des de l'índex número 0.\n" +" -d delim\tsegueix llegint fins a trobar el caràcter DELIM, en lloc de\n" +" fins a trobar un salt de línia\n" +" -e\tsi la sessió és interactiva, utilitza Readline per a obtenir\n" +" la línia\n" +" -i text\tUtilitza TEXT com a text inicial per a Readline\n" +" -n núm\ttorna després de llegir exactament NÚM caràcters en lloc\n" +" d'esperar fins a trobar un salt de línia, però tenint en\n" +" compte el delimitador si s'han llegit menys de NÚM " +"caràcters\n" +" abans del delimitador\n" +" -p introd mostra la cadena INTROD sense cap caràcter de salt de línia\n" +" afegit, abans d'intentar llegir res\n" +" -r prohibeix escapar caràcters amb una barra invertida\n" +" -s suprimeix l'eco quan l'entrada està connectada a un " +"terminal\n" +" -t temps surt si transcorre TEMPS (en segons) abans d'haver\n" +" aconseguit llegir una línia sencera. Per defecte, el límit\n" +" de temps és el valor de la variable TMOUT. TEMPS pot ser " +"un\n" +" número decimal. Si TEMPS és 0, read torna immediatament,\n" +" sense intentar llegir cap dada, i torna èxit només si hi ha\n" +" dades disponibles en el descriptor de fitxer FD " +"especificat.\n" +" L'estat de sortida és més gran que 128 si s'arriba al temps\n" +" límit\n" +" -u fd llegeix dades al descriptor de fitxer FD, en lloc de\n" +" l'entrada estàndard.\n" +"\n" +" Estat de sortida:\n" +" El codi de retorn és zero, excepte si es troba final-de-fitxer, " +"s'arriba\n" +" al límit de temps (en aquest cas, és major que 128), es produeix un\n" +" error d'assignació de variable, o s'especifica un descriptor de fitxer\n" +" invàlid amb l'opció -u." -#: builtins.c:1028 +# help return +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3198,8 +3977,18 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" +"Torna des d'una funció de l'intèrpret.\n" +"\n" +" Provoca que una funció o script executat amb `source' torni amb el " +"valor\n" +" de retorn especificat per N. Si s'omet N, l'estat de retorn és aquell\n" +" de l'última ordre executada dins la funció o script.\n" +"\n" +" Estat de sortida:\n" +" Torna N, o fallada si l'intèrpret no està executant cap funció o script." -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3267,7 +4056,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3283,8 +4073,97 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" +"Activa o desactiva opcions de l'intèrpret i estableix paràmetres\n" +"posicionals.\n" +"\n" +" Modifica el valor dels atributs de l'intèrpret i dels paràmetres\n" +" posicionals, o mostra els noms i valors de les variables de " +"l'intèrpret.\n" +"\n" +" Opcions:\n" +" -a Exporta les variables que es creïn o es modifiquin.\n" +" -b Notifica la finalització de tasques de forma immediata.\n" +" -e Surt immediatament si una ordre acaba amb estat diferent de zero.\n" +" -f Deshabilita la generació de noms de fitxers (globbing).\n" +" -h Recorda la ubicació de les ordres a mesura que s'utilitzen.\n" +" -k Col·loca tots els arguments que són assignacions a l'entorn de\n" +" l'ordre que s'executa, i no només aquells que precedeixen el nom\n" +" de l'ordre.\n" +" -m Activa el control de tasques.\n" +" -n Llegeix ordres, però sense executar-les.\n" +" -o nom-opció\n" +" Defineix la variable corresponent a nom-opció:\n" +" allexport igual que -a\n" +" braceexpand igual que -B\n" +" emacs utilitza una interfície d'edició estil emacs\n" +" errexit igual que -e\n" +" errtrace igual que -E\n" +" functrace igual que -T\n" +" hashall igual que -h\n" +" histexpand igual que -H\n" +" history activa l'historial\n" +" ignoreeof l'intèrpret no surt en cas de trobar EOF\n" +" interactive-comments\n" +" permet comentaris a les ordres interactives\n" +" keyword igual que -k\n" +" monitor igual que -m\n" +" noclobber igual que -C\n" +" noexec igual que -n\n" +" noglob igual que -f\n" +" nolog actualment aquesta opció no té cap efecte\n" +" notify igual que -b\n" +" nounset igual que -u\n" +" onecmd igual que -t\n" +" physical igual que -P\n" +" pipefail el valor retornat per una canalització és " +"l'estat\n" +" de l'última ordre que ha acabat amb estat\n" +" no-zero, o zero si cap ordre ha acabat amb estat\n" +" diferent de zero\n" +" posix ajusta el comportament de bash al dictaminat per\n" +" l'estàndard Posix\n" +" privileged igual que -p\n" +" verbose igual que -v\n" +" vi usa una interfície d'edició estil vi\n" +" xtrace igual que -x\n" +" -p S'activa automàticament sempre que les ids efectiva i real de\n" +" l'usuari no coincideixin. Omet processar el fitxer $ENV i\n" +" la importació de funcions. Si desactiveu aquesta opció, els\n" +" valors de l'uid i gid reals s'assignen a l'uid i gid efectius.\n" +" -t Surt després de llegir i executar una única ordre.\n" +" -u Tracta les variables no definides com a error, en substitucions.\n" +" -v Escriu les línies de l'entrada a la sortida.\n" +" -x Escriu ordres i arguments a la sortida a mesura que s'executen.\n" +" -B Activa l'expansió de claudàtors ([])\n" +" -C Prohibeix la sobrescriptura de fitxers ordinaris mitjançant\n" +" redireccions.\n" +" -E Intercepta senyals ERR també durant l'execució de funcions.\n" +" -H Habilita l'expansió d'exclamacions (!). Aquesta opció està " +"activa\n" +" per defecte si la sessió és interactiva.\n" +" -P Omet la resolució d'enllaços simbòlics a l'hora d'executar ordres\n" +" que canvien el directori corrent tals com cd.\n" +" -T Intercepta senyals DEBUG també durant l'execució de funcions.\n" +" -- Assigna els arguments restants als respectius paràmetres\n" +" posicionals. Si no queda cap argument restant, suprimeix els\n" +" paràmetres posicionals.\n" +" - Assigna els arguments restants als respectius paràmetres\n" +" posicionals. Desactiva les opcions -x i -v.\n" +"\n" +" Un signe + en lloc de - serveix per a desactivar l'opció. Els " +"arguments\n" +" que controlen les opcions també es poden utilitzar a l'hora d'invocar\n" +" l'intèrpret. El conjunt d'opcions actives es pot trobar a $-. La " +"resta\n" +" d'arguments són paràmetres posicionals i s'assignen per ordre a $1, $2,\n" +" ... $n. Si no s'especifica cap ARG, es mostren totes les variables\n" +" definides.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si s'especifica una opció no vàlida." -#: builtins.c:1126 +#: builtins.c:1132 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3294,7 +4173,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3305,8 +4184,26 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" +"Suprimeix el valor i els atributs de variables i funcions.\n" +"\n" +" Per a cada NOM, suprimeix la corresponent variable o funció.\n" +"\n" +" Opcions:\n" +" -f tracta NOM com una funció\n" +" -v tracta NOM com una variable\n" +" -n tracta NOM com una variable referència i suprimeix la\n" +" pròpia variable, en lloc de la variable a què es refereix\n" +"\n" +" Sense opcions, primer intenta suprimir una variable, i si això falla\n" +" intenta suprimir una funció.\n" +"\n" +" Algunes variables no poden ser suprimides; per ex., vegeu `readonly'.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si s'especifica una opció no vàlida o NOM és una\n" +" variable o funció de només-lectura." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3324,8 +4221,26 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Exporta variables de l'intèrpret.\n" +"\n" +" Exporta automàticament cada NOM a l'entorn de les ordres subsegüents.\n" +" Si especifiqueu VALOR, s'assigna VALOR a la variable abans\n" +" d'exportar-la.\n" +"\n" +" Opcions:\n" +" -f tracta NOM com a funció\n" +" -n suprimeix la propietat d'exportació de NOM\n" +" -p mostra una llista amb totes les variables i funcions\n" +" exportades\n" +" \n" +" L'argument `--' atura el processament de més opcions.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si s'especifica una opció no vàlida o NOM no és\n" +" vàlid." -#: builtins.c:1167 +#: builtins.c:1173 +#, fuzzy msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3337,17 +4252,36 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Marca variables com no modificables.\n" +"\n" +" Marca cada NOM com a variable o funció de només-lectura; els valors\n" +" d'aquests NOMs no podran ser modificats en assignacions subseqüents. " +"Si\n" +" especifiqueu VALOR, s'assigna VALOR a la variable o funció abans de\n" +" marcar-la com a només-lectura.\n" +"\n" +" Opcions:\n" +" -a opera sobre vectors indexats\n" +" -A opera sobre vectors associatius\n" +" -f opera sobre funcions\n" +" -p mostra una llista amb totes les variables i funcions\n" +" \t\tde només-lectura\n" +"\n" +" L'argument `--' atura el processament de més opcions.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si s'especifica una opció no vàlida o NOM no és\n" +" vàlid." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3357,8 +4291,16 @@ msgid "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." msgstr "" +"Desplaça els paràmetres posicionals.\n" +"\n" +" Reanomena els paràmetres posicionals $N+1, $N+2 ... com a $1, $2 ... " +"Si\n" +" ometeu N, s'assumeix que és 1.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si N és negatiu o més gran que $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3371,8 +4313,18 @@ msgid "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." msgstr "" +"Executa les ordres d'un fitxer a l'intèrpret actual.\n" +"\n" +" Llegeix les ordres que hi ha a FITXER i les executa a l'intèrpret\n" +" actual. Les entrades a $PATH s'utilitzen per a localitzar el directori\n" +" que conté FITXER. Si s'especifica qualsevol ARG, aquests arguments es\n" +" converteixen en paràmetres posicionals quan s'executa FITXER.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de l'última ordre a FITXER executada; falla si FITXER no\n" +" es pot llegir." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3385,8 +4337,20 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Suspèn l'execució de l'intèrpret.\n" +"\n" +" Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT.\n" +" Si no es força, les sessions d'entrada no es poden suspendre.\n" +"\n" +" Opcions:\n" +" -f força la suspensió, encara que sigui una sessió d'entrada\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si no hi ha control de tasques o es produeix un\n" +" error." -#: builtins.c:1248 +#: builtins.c:1254 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -3450,9 +4414,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3468,19 +4432,100 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" +"Avalua una expressió condicional.\n" +"\n" +" Surt amb estat 0 (cert) o 1 (fals) en funció de l'avaluació d'EXPR. " +"Les\n" +" expressions poden ser unàries o binàries. Les expressions unàries\n" +" s'utilitzen sovint per a determinar l'estat de fitxers. També hi ha\n" +" operadors de cadenes, i operadors de comparació numèrica.\n" +"\n" +" El comportament de test depèn del nombre d'arguments. Podeu trobar-ne\n" +" una especificació completa a la plana del manual de bash.\n" +"\n" +" Operadors de fitxer:\n" +"\n" +" -a FITXER Cert si el fitxer existeix.\n" +" -b FITXER Cert si el fitxer és un fitxer especial de blocs.\n" +" -c FITXER Cert si el fitxer és un fitxer especial de caràcters.\n" +" -d FITXER Cert si el fitxer és un directori.\n" +" -e FITXER Cert si el fitxer existeix.\n" +" -f FITXER Cert si el fitxer existeix i és ordinari.\n" +" -g FITXER Cert si el bit set-group-id està activat.\n" +" -h FITXER Cert si el fitxer és un enllaç simbòlic.\n" +" -L FITXER Cert si el fitxer és un enllaç simbòlic.\n" +" -k FITXER Cert si el bit sticky està activat.\n" +" -p FITXER Cert si el fitxer és una canalització.\n" +" -r FITXER Cert si teniu permís per a llegir el fitxer.\n" +" -s FITXER Cert si el fitxer existeix i no està buit.\n" +" -S FITXER Cert si el fitxer és un socket.\n" +" -t FD Cert si FD està obert i es refereix a un terminal.\n" +" -u FITXER Cert si el bit set-user-id està activat.\n" +" -w FITXER Cert si teniu permís per a escriure al fitxer.\n" +" -x FITXER Cert si teniu permís per a executar el fitxer.\n" +" -O FITXER Cert si el fitxer és propietat vostra.\n" +" -G FITXER Cert si el fitxer és propietat del vostre grup.\n" +" -N FITXER Cert si el fitxer ha canviat des de l'última lectura.\n" +"\n" +" FITXER1 -nt FITXER2 Cert si fitxer1 és més nou que fitxer2 (segons " +"la\n" +" data de modificació).\n" +"\n" +" FITXER1 -ot FITXER2 Cert si fitxer1 és més vell que fitxer2.\n" +"\n" +" FITXER1 -ef FITXER2 Cert si fitxer1 és un enllaç dur a fitxer2.\n" +"\n" +" Operadors de cadena:\n" +"\n" +" -z CADENA Cert si la cadena és buida.\n" +"\n" +" -n CADENA Cert si la cadena no és buida.\n" +"\n" +" CADENA1 = CADENA2\n" +" Cert si les cadenes són iguals.\n" +" CADENA1 != CADENA2\n" +" Cert si les cadenes no són iguals.\n" +" CADENA1 < CADENA2\n" +" Cert si CADENA1 va primer alfabèticament.\n" +" CADENA1 > CADENA2\n" +" Cert si CADENA2 va primer alfabèticament.\n" +"\n" +" Altres operadors:\n" +"\n" +" -o OPCIÓ Cert si l'opció de l'intèrpret està activada.\n" +" -v VAR Cert si la variable VAR està definida.\n" +" -R VAR Cert si la variable VAR està definida i és una \n" +" variable referència.\n" +" ! EXPR Cert si expr és fals.\n" +" EXPR1 -a EXPR2 Cert si tant expr1 com expr2 són cert.\n" +" EXPR1 -o EXPR2 Cert si qualsevol de expr1 o expr2 són cert.\n" +"\n" +" arg1 OP arg2 Tests aritmètics. OP és un de -eq, -ne, -lt, -le, -" +"gt,\n" +" o -ge.\n" +"\n" +" Els operadors aritmètics binaris tornen cert si ARG1 és igual,\n" +" no igual, menys que, menys que o igual, més que, o més que o igual\n" +" que ARG2, respectivament.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit si EXPR s'avalua com a cert; falla si EXPR s'avalua com a\n" +" fals o s'especifica un argument no vàlid." -#: builtins.c:1329 -#, fuzzy +#: builtins.c:1336 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 "" -"par?metre ha de ser el signe \"]\" perqu? es puga tancar l'expressi? que\n" -"comen?a pel signe \"[\"." +"Avalua una expressió condicional.\n" +"\n" +" Aquesta ordre interna és un sinònim de \"test\", amb la diferència que\n" +" l'últim argument ha de ser un signe `]' que tanqui el `[' inicial." -#: builtins.c:1338 +# help times +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3491,8 +4536,16 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"Mostra els temps d'execució.\n" +"\n" +" Mostra el temps d'execució d'usuari i sistema acumulat per l'intèrpret " +"i\n" +" per tots els seus processos inferiors.\n" +"\n" +" Estat de sortida:\n" +" Sempre reïx." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3535,8 +4588,48 @@ msgid "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." msgstr "" +"Intercepta senyals i altres esdeveniments.\n" +"\n" +" Defineix i activa controladors de senyal que s'executen quan\n" +" l'intèrpret rep senyals o en altres circumstàncies.\n" +"\n" +" ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep el\n" +" senyal especificat per SENYAL. Si no hi ha ARG (i s'especifica un\n" +" únic SENYAL) o és `-', llavors cada senyal es restableix al seu valor\n" +" original. Si ARG és una cadena nul·la, llavors SENYAL és ignorat per\n" +" l'intèrpret i per tots els programes invocats per l'intèrpret.\n" +"\n" +" Si SENYAL és EXIT (0), ARG s'executa quan l'intèrpret surt. Si " +"SENYAL\n" +" és DEBUG, ARG s'executa abans de cada ordre. Si SENYAL és RETURN, " +"ARG\n" +" s'executa cada cop que una funció o script executat amb l'ordre `.' o\n" +" `source' finalitza l'execució. Si SENYAL és ERR, ARG s'executa en " +"els\n" +" mateixos casos en què una ordre faria sortir l'intèrpret si l'opció -" +"e\n" +" estigués activada.\n" +"\n" +" Si no s'especifica cap argument, trap mostra una llista d'ordres\n" +" associades a cada senyal.\n" +"\n" +" Opcions:\n" +" -l mostra una llista amb els noms dels senyals i els números\n" +" corresponents\n" +" -p\tmostra els controladors de senyal associats a cada SENYAL\n" +"\n" +" Cada SENYAL és o bé un nom de senyal definit al fitxer o " +"bé\n" +" un número de senyal. Els noms de senyal no són sensibles a la\n" +" capitalització i el prefix SIG és opcional. Podeu enviar un senyal a\n" +" l'intèrpret amb l'ordre \"kill -senyal $$\".\n" +"\n" +" Estat de sortida: \n" +" Torna èxit, excepte si algun SENYAL no és vàlid o s'especifica una\n" +" ordre no vàlida." -#: builtins.c:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -3545,18 +4638,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3565,8 +4658,39 @@ msgid "" " Returns success if all of the NAMEs are found; fails if any are not " "found." msgstr "" +"Mostra informació sobre el tipus d'ordre.\n" +"\n" +" Indica com seria interpretat NOM si s'utilitzés com a ordre.\n" +"\n" +" Opcions:\n" +" -a mostra totes les ubicacions que contenen un executable\n" +" anomenat NOM; inclou àlies, ordres internes i funcions, si,\n" +" i només si, no s'usa conjuntament amb l'opció `-p'\n" +" -f omet cercar de funcions\n" +" -P força una cerca al PATH per a cada NOM, encara que sigui un\n" +" àlies, ordre interna o funció, i torna el nom del fitxer " +"que\n" +" s'executaria\n" +" -p torna o bé el nom del fitxer que s'executaria, o bé res, si\n" +" `type -t NOM' no hauria indicat `fitxer'.\n" +" -t torna només una paraula, que és o `àlies', o `paraula " +"clau',\n" +" o `funció', o `ordre interna', o `fitxer', o bé `', " +"depenent\n" +" de si NOM és un àlies, una paraula reservada de " +"l'intèrpret,\n" +" una funció, una ordre interna, un fitxer, o no es pot\n" +" trobar, respectivament.\n" +"\n" +" Arguments:\n" +" NOM El nom de l'ordre que s'ha d'interpretar.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no\n" +" es pot trobar." -#: builtins.c:1417 +#: builtins.c:1424 +#, fuzzy msgid "" "Modify shell resource limits.\n" " \n" @@ -3584,6 +4708,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3595,7 +4720,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3612,8 +4738,54 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Canvia els límits d'utilització de recursos per part de l'intèrpret.\n" +"\n" +" Permet controlar la quantitat de recursos disponibles per a l'intèrpret\n" +" i per als processos que crea, en els sistemes que admeten tal control.\n" +"\n" +" Opcions:\n" +" -S estableix límits `tous'\n" +" -H estableix límits `durs'\n" +" -a\tmostra tots els límits establerts\n" +" -b\tmida màxima dels buffers per a sockets\n" +" -c\tmida màxima dels fitxers `core'\n" +" -d\tmida màxima del segment de dades d'un procés\n" +" -e\tprioritat màxima d'un procés (`nice')\n" +" -f\tmida màxima dels fitxers escrits per l'intèrpret i fills\n" +" -i\tnombre màxim de senyals pendents\n" +" -l\tquantitat màxima de memòria que un procés pot blocar\n" +" -m\tmida màxima del conjunt resident (RSS)\n" +" -n\tnombre màxim de descriptors de fitxers oberts\n" +" -p\tmida màxima dels buffers per a canalitzacions\n" +" -q\tnombre màxim d'octets a les cues de missatges POSIX\n" +" -r\tprioritat màxima de temps-real\n" +" -s\tmida màxima de la pila\n" +" -t\tquantitat màxima de temps de CPU en segons\n" +" -u\tnombre màxim de processos d'usuari\n" +" -v\tmida de la memòria virtual\n" +" -x\tnombre màxim de fitxers de bloqueig\n" +" -T nombre màxim de fils d'execució\n" +"\n" +" Algunes opcions poden no estar disponibles en algunes plataformes.\n" +"\n" +" Si s'especifica un LÃMIT, s'utilitza com a nou valor per al recurs en\n" +" qüestió; els valors especials de LÃMIT són `soft', `hard' i " +"`unlimited',\n" +" que signifiquen límit tou actual, límit dur actual, i sense límit,\n" +" respectivament. En cas contrari, es mostra el valor actual per al\n" +" recurs especificat. Si no s'especifica cap opció, se suposa -f.\n" +"\n" +" Els valors s'indiquen en increments de 1024 octets, excepte en el cas " +"de\n" +" l'opció -t, que és en segons, -p, que és en increments de 512 octets, i\n" +" -u, que és en nombre de processos.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si s'especifica una opció no vàlida o es produeix " +"un\n" +" error." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3630,8 +4802,24 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" +"Mostra o estableix la màscara de mode per a fitxers.\n" +"\n" +" Estableix la màscara de creació de fitxers en MODE. Si MODE s'omet,\n" +" mostra el valor actual de la màscara.\n" +"\n" +" Si MODE comença amb un dígit, s'interpreta com a número octal; en cas\n" +" contrari és una cadena de mode simbòlic com les que accepta chmod(1).\n" +"\n" +" Opcions:\n" +" -p sense MODE, mostra la sortida en un format que es pot\n" +" reciclar com a entrada\n" +" -S\tmostra la màscara en forma simbòlica; altrament produeix un\n" +" número octal\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si MODE no és vàlid o es passa una opció no vàlida." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3650,8 +4838,20 @@ msgid "" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" +"Espera la finalització de tasques i en retorna l'estat de sortida.\n" +"\n" +" Espera que cada procés identificat per un ID, que pot ser l'ID del\n" +" procés o una especificació de tasca, acabi d'executar-se, i en torna\n" +" l'estat de sortida. Si no s'especifica ID, espera que acabin\n" +" d'executar-se tots els processos inferiors, i surt amb estat zero. Si\n" +" ID és una especificació de tasca, espera cada un dels processos a la\n" +" canalització d'aquella tasca.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'últim ID; falla si ID no és vàlid o es\n" +" passa una opció no vàlida." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3665,8 +4865,18 @@ msgid "" "invalid\n" " option is given." msgstr "" +"Espera la finalització de processos i en retorna l'estat de sortida.\n" +"\n" +" Espera que cada procés, identificat per PID, acabi d'executar-se, i en\n" +" mostra l'estat de sortida. Si no s'especifica PID, espera que acabin\n" +" d'executar-se tots els processos inferiors, i surt amb estat zero. PID\n" +" ha de ser un ID de procés.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'últim PID; falla si PID no és vàlid o es\n" +" passa una opció no vàlida." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3678,8 +4888,18 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Executa ordres per a cada element d'una llista.\n" +"\n" +" Els bucles `for' executen una seqüència d'ordres per a cada un dels\n" +" elements d'una llista. Si `in PARAULES ...;' s'omet, aleshores se\n" +" suposa `in \"$@\"'. Per a cada element de la llista PARAULES, " +"l'element\n" +" s'assigna a NOM, i les ORDRES s'executen.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3695,8 +4915,23 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Bucle `for' aritmètic.\n" +"\n" +" Equivalent a\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tORDRES\n" +" \t\t(( EXP 3 ))\n" +" \tdone\n" +"\n" +" EXP1, EXP2 i EXP3 són expressions aritmètiques. Si s'omet qualsevol de\n" +" les expressions, es comporta com si el resultat de l'avaluació de\n" +" l'expressió omesa fos 1.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3715,8 +4950,27 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Selecciona paraules d'una llista i executa ordres.\n" +"\n" +" Les PARAULES s'expandeixen i generen una llista de paraules. Les\n" +" paraules expandides s'envien a la sortida d'errors estàndard, cada una\n" +" precedida per un número. Si `in PARAULES' s'omet, se suposa `in \"$@" +"\"'.\n" +" Llavors, es mostra l'introductor PS3 i es llegeix una línia a l'entrada\n" +" estàndard. Si la línia correspon amb el número d'alguna de les " +"paraules\n" +" mostrades, aleshores aquesta paraula s'assigna a NOM. Si la línia està\n" +" buida, les PARAULES i l'introductor es tornen a mostrar. Si es llegeix\n" +" EOF, l'ordre finalitza. Qualsevol altre valor llegit, fa que s'assigni\n" +" el valor nul a NOM. La línia llegida s'assigna a la variable REPLY.\n" +" Les ORDRES s'executen després de cada selecció fins a trobar una ordre\n" +" `break'.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1574 +# help time +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3731,9 +4985,21 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" +"Informa del temps consumit durant l'execució d'una canalització.\n" +"\n" +" Executa CANALITZACIÓ i mostra un resum del temps real, el temps de CPU\n" +" d'usuari i el temps de CPU de sistema consumit durant l'execució de\n" +" CANALITZACIÓ.\n" +"\n" +" Opcions:\n" +" -p mostra el resum de temps en format POSIX portable\n" +"\n" +" El valor de la variable TIMEFORMAT s'utilitza per formatar la sortida.\n" +"\n" +" Estat de sortida:\n" +" L'estat de sortida és l'estat de sortida de la CANALITZACIÓ." -#: builtins.c:1591 -#, fuzzy +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3742,9 +5008,17 @@ msgid "" " \n" " Exit Status:\n" " Returns the status of the last command executed." -msgstr "Executa selectivament les ordres especificades en ORDRES seguint una " +msgstr "" +"Executa ordres segons la coincidència amb patrons.\n" +"\n" +" Executa ORDRES de forma selectiva en funció de si PARAULA coincideix " +"amb\n" +" PATRÓ. El signe `|' serveix per a separar múltiples patrons.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3764,9 +5038,22 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Executa ordres en funció d'una condició.\n" +"\n" +" Executa la llista `if ORDRES'. Si l'estat de sortida és zero, llavors\n" +" també executa la llista `then ORDRES'. En cas contrari cada una de les\n" +" llistes `elif ORDRES' és executada i en cas d'acabar amb estat de\n" +" sortida zero, també s'executa la corresponent llista `then ORDRES', i\n" +" l'ordre if finalitza. En cas contrari, la llista `else ORDRES'\n" +" s'executa, si és que existeix. L'estat de sortida la construcció\n" +" sencera és l'estat de sortida de l'última ordre executada, o zero si " +"cap\n" +" de les condicions s'avalua com a certa.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de l'última ordre executada." -#: builtins.c:1620 -#, fuzzy +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3776,11 +5063,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Expandeix i executa les ordres especificades en ORDRES i els executa\n" -"de tal manera que la darrera ordre" +"Executa ordres repetidament mentre es compleixi una condició.\n" +"\n" +" Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n" +" ORDRES `while' tingui estat de sortida igual a zero.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de l'última ordre executada." -#: builtins.c:1632 -#, fuzzy +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3790,10 +5081,17 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Expandeix i executa les ordres especificades en ORDRES i els executa\n" -"de tal manera que la darrera ordre" +"Executa ordres repetidament mentre no es compleixi una condició.\n" +"\n" +" Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n" +" ORDRES `until' tingui estat de sortida diferent de zero.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de l'última ordre executada." -#: builtins.c:1644 +# help coproc +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3803,10 +5101,20 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" +"Crea un coprocés anomenat NOM.\n" +"\n" +" Executa ORDRE de forma asincrònica, amb la sortida estàndard i " +"l'entrada\n" +" estàndard de l'ordre connectades via canalització als descriptors de\n" +" fitxer assignats als índexs 0 i 1 del vector NOM a l'intèrpret en\n" +" execució. Per defecte NOM és \"COPROC\".\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida d'ORDRE." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3819,9 +5127,18 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is readonly." msgstr "" +"Defineix una funció.\n" +"\n" +" Crea una funció de l'intèrpret anomenada NOM. Quan s'invoca com a " +"ordre\n" +" simple, NOM executa ORDRES en el context de l'intèrpret de qui fa la\n" +" crida. Quan NOM s'invoca, els arguments es passen a la funció com a\n" +" $1...$n, i el nom de la funció es troba a $FUNCNAME.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si NOM és de només-lectura." -#: builtins.c:1672 -#, fuzzy +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3830,9 +5147,16 @@ msgid "" " \n" " Exit Status:\n" " Returns the status of the last command executed." -msgstr "Executa un conjunt d'ordres en un grup. A?? ?s una manera de" +msgstr "" +"Agrupa ordres de manera que formin una unitat.\n" +"\n" +" Executa un conjunt d'ordres en un grup. Això permet redirigir la\n" +" sortida d'un grup sencer d'ordres.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de l'última ordre executada." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3845,8 +5169,20 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" +"Reprèn una tasca i la porta al primer pla.\n" +"\n" +" Equivalent a utilitzar TASCA com a argument en l'ordre `fg'. Reprèn " +"una\n" +" tasca aturada o en segon pla. TASCA pot ser el nom d'una tasca, o el\n" +" número d'una tasca. Si es troba un `&' després de TASCA, llavors la\n" +" tasca s'envia en un segon pla, com si l'especificació de tasca\n" +" s'utilitzés com a argument en l'ordre `bg'.\n" +"\n" +" Estat de sortida:\n" +" Torna l'estat de sortida de la feina represa." -#: builtins.c:1699 +# help '((' +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3856,8 +5192,16 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" +"Avalua una expressió aritmètica.\n" +"\n" +" EXPRESSIÓ s'avalua segons les normes d'avaluació aritmètica. És\n" +" equivalent a \"let EXPRESSIÓ\".\n" +"\n" +" Estat de sortida:\n" +" Si el resultat de l'avaluació és 0, torna 1; altrament torna 0." -#: builtins.c:1711 +# help '[[' +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3884,8 +5228,33 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" +"Executa una ordre condicional.\n" +"\n" +" Torna un estat 0 o 1, depenent del resultat de l'avaluació de\n" +" l'expressió condicional EXPRESSIÓ. Les expressions es componen dels\n" +" mateixos elements que en l'ordre interna `test', i es poden combinar\n" +" usant els següents operadors.\n" +"\n" +" ( EXPRESSIÓ ) Torna el valor d'EXPRESSIÓ\n" +" ! EXPRESSIÓ Cert si EXPRESSIÓ és fals; altrament fals.\n" +" EXPR1 && EXPR2 Cert si tant EXPR1 com EXPR2 són cert; si no, fals.\n" +" EXPR1 || EXPR2 Cert si EXPR1 o EXPR2 és cert; si no, fals.\n" +"\n" +" Quan s'utilitzen els operadors `==' o `!=', el component de la dreta\n" +" s'interpreta com a un patró i es comprova si coincideix amb la cadena " +"de\n" +" l'esquerra de l'operador. Quan s'utilitza l'operador `=~', el " +"component\n" +" de la dreta de l'operador s'interpreta com a expressió regular i es\n" +" comprova si coincideix amb la cadena de l'esquerra de l'operador.\n" +"\n" +" Els operadors && i || no avaluen EXPR2 si EXPR1 és suficient per\n" +" determinar el valor de l'expressió.\n" +"\n" +" Estat de sortida:\n" +" 0 o 1, depenent del valor d'EXPRESSIÓ." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3938,8 +5307,66 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" +"Nom i ús de les variables de l'intèrpret habituals.\n" +"\n" +" BASH_VERSION Informació de la versió de Bash.\n" +" CDPATH\t\tLlista de directoris separats per `:' on buscar\n" +" directoris passats com a arguments a `cd'.\n" +" GLOBIGNORE\t\tLlista de patrons separats per `:' que indiquen noms\n" +" que s'ignoren en fer expansions de noms de fitxer.\n" +" HISTFILE\t\tNom del fitxer on es desa l'historial d'ordres.\n" +" HISTFILESIZE\tNombre màxim de línies que pot contenir el\n" +" fitxer de l'historial.\n" +" HISTSIZE\t\tNombre màxim de línies de l'historial a què un\n" +" \t\t\tintèrpret té accés.\n" +" HOME\t\tCamí complet cap al vostre directori personal.\n" +" HOSTNAME\t\tNom de la màquina actual.\n" +" HOSTTYPE\t\tTipus de CPU de la màquina en què corre Bash.\n" +" IGNOREEOF\t Controla el comportament de l'intèrpret en trobar un\n" +" \t\t\tcaràcter EOF (final de fitxer) com a únic caràcter.\n" +" Si la variable està definida, llavors el seu valor\n" +" és el nombre de caràcters EOF seguits que es poden\n" +" llegir en una línia buida abans que l'intèrpret\n" +" surti (per defecte: 10). Si no està definida, EOF\n" +" s'interpreta com el final de les dades d'entrada.\n" +" MACHTYPE\t\tCadena que descriu el sistema en què corre Bash.\n" +" MAILCHECK\t\tAmb quina freqüència, en segons, Bash comprova si hi\n" +" ha correu nou.\n" +" MAILPATH\t\tLlista de fitxers separats per `:' que Bash comprova\n" +" si tenen correu nou.\n" +" OSTYPE\t\tLa versió de Unix en què corre Bash.\n" +" PATH\t\tLlista de directoris separats per `:' on buscar quan\n" +" \t\t\tse cerquen ordres.\n" +" PROMPT_COMMAND\tOrdre que s'executa cada cop abans de mostrar\n" +" \t\t\tl'introductor de l'intèrpret.\n" +" PS1\t\t\tCadena de l'introductor principal.\n" +" PS2\t\t\tCadena de l'introductor secundari.\n" +" PWD\t\t\tCamí complet cap al directori corrent.\n" +" SHELLOPTS\t\tLlista d'opcions habilitades separades per `:'.\n" +" TERM\t\tNom del tipus de terminal actual.\n" +" TIMEFORMAT\t\tFormat de sortida per a les estadístiques de temps\n" +" \t\t\tproduïdes per l'ordre `time'.\n" +" auto_resume\t\tNo-nul·la significa que una ordre sola en una línia\n" +" \t\t\tes busca en primera instància a la llista actual de\n" +" \t\t\ttasques aturades. Si es troba, aquella tasca es\n" +" passa a primer pla. El valor `exact' significa que\n" +" l'ordre ha de coincidir exactament amb alguna ordre\n" +" de la llista de tasques aturades. El valor\n" +" `substring' significa que l'ordre ha de coincidir\n" +" amb una subcadena de la tasca. Qualsevol altre\n" +" valor significa que l'ordre ha de ser el prefix\n" +" d'una tasca aturada.\n" +" histchars\t\tCaràcters que controlen l'expansió de l'historial i\n" +" \t\t\tles substitucions ràpides. El primer caràcter és el\n" +" \t\t\tcaràcter de substitució de l'historial, habitualment\n" +" \t\t\t`!'. El segon és el caràcter de `substitució\n" +" ràpida', normalment `^'. El tercer és el caràcter\n" +" de `comentari d'historial', normalment `#'.\n" +" HISTIGNORE\t\tLlista de patrons separats per `:' utilitzats per a\n" +" \t\t\tdecidir si les ordres s'han de desar a l'historial.\n" -#: builtins.c:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -3949,19 +5376,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3969,8 +5396,37 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Afegeix directoris a la pila.\n" +"\n" +" Afegeix un directori a sobre la pila de directoris, o fa girar la\n" +" llista, de manera que a sobre la pila hi queda el directori de treball\n" +" corrent. Sense arguments, intercanvia els dos directoris de més amunt.\n" +"\n" +" Opcions:\n" +" -n Omet el canvi de directori quan s'afegeixen directoris a la\n" +" pila, de manera que només canvia la pila.\n" +"\n" +" Arguments:\n" +"\n" +" +N Gira la llista de manera tal que l'N-èssim directori\n" +" (comptant des de l'esquerra de la llista que mostra `dirs',\n" +" començant des de zero) queda a dalt de tot.\n" +"\n" +" -N Gira la llista de manera tal que l'N-èssim directori\n" +" (comptant des de la dreta de la llista que mostra `dirs',\n" +" començant des de zero) queda a dalt de tot.\n" +"\n" +" dir Afegeix DIR a dalt de tot de la pila de directoris, i el\n" +" converteix en el nou directori de treball corrent.\n" +"\n" +" Podeu visualitzar la pila de directoris amb l'ordre `dirs'.<\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si s'ha rebut un argument invàlid, o el canvi de\n" +" directori falla." -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -3979,16 +5435,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3996,8 +5452,35 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Treu directoris de la pila.\n" +"\n" +" Elimina entrades de la pila de directoris. Sense arguments, elimina el\n" +" directori de dalt de tot de la pila, i canvia al nou directori de dalt\n" +" de la pila.\n" +"\n" +" Opcions:\n" +" -n Evita el canvi de directori quan s'eliminen directoris de la\n" +" pila, de manera que només es manipula la pila.\n" +"\n" +" Arguments:\n" +" +N Elimina l'entrada N-èssima, comptant des de l'esquerra de la\n" +" llista que mostra `dirs', començant des de zero. Per\n" +" exemple: `popd +0' elimina el primer directori, i `popd +1'\n" +" el segon.\n" +"\n" +" -N Elimina l'entrada N-èssima, comptant des de la dreta de la\n" +" llista que mostra `dirs', començant des de zero. Per\n" +" exemple: `popd -0' elimina l'últim directori, i `popd -1' el\n" +" penúltim.\n" +"\n" +" Podeu visualitzar la pila de directoris amb l'ordre `dirs'.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si es rep un argument invàlid o el canvi de\n" +" directori falla." -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -4008,25 +5491,51 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Mostra la pila de directoris.\n" +"\n" +" Mostra la llista actual de directoris recordats. Els directoris entren\n" +" a la llista mitjançant l'ordre `pushd'; podeu recórrer la llista de\n" +" directoris enrere amb l'ordre `popd'.\n" +"\n" +" Opcions:\n" +" -c neteja la pila, esborrant-ne tots els elements\n" +" -l no mostra les versions abreviades (prefix ~) en els\n" +" directoris relatius al vostre directori personal\n" +" -p mostra la pila, una entrada per línia\n" +" -v mostra la pila, una entrada per línia indicant la posició a\n" +" la pila\n" +"\n" +" Arguments:\n" +" +N Mostra l'entrada N-èssima, comptant des de l'esquerra de la\n" +" llista mostrada per `dirs' quan s'invoca sense opcions, \n" +" començant des de zero.\n" +"\n" +" -N Mostra l'entrada N-èssima, comptant des de la dreta de la\n" +" llista mostrada per `dirs' quan s'invoca sense opcions,\n" +" començant des de zero.<\n" +"\n" +" Estat de sortida:\n" +" Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n" +" error." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -4046,8 +5555,24 @@ msgid "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." msgstr "" +"Activa i desactiva opcions de l'intèrpret.\n" +"\n" +" Canvia l'estat de cada OPCIÓ. Si no s'especifica cap OPCIÓ, mostra una\n" +" llista de totes les opcions indicant si estan activades o no.\n" +"\n" +" Opcions:\n" +" -o limita les opcions a les que es poden canviar amb `set -o'\n" +" -p\tmostra totes les opcions indicant-ne l'estat\n" +" -q\tsuprimeix la sortida\n" +" -s\tactiva OPCIÓ\n" +" -u\tdesactiva OPCIÓ\n" +"\n" +" Estat de sortida:\n" +" Torna èxit si OPCIÓ està activada; falla si s'especifica una opció\n" +" invàlida o OPCIÓ està desactivada." -#: builtins.c:1908 +#: builtins.c:1919 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4064,15 +5589,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -4085,8 +5610,38 @@ msgid "" "assignment\n" " error occurs." msgstr "" +"Formata i escriu ARGUMENTS d'acord amb FORMAT.\n" +"\n" +" Opcions:\n" +" -v var assigna la sortida a la variable VAR en lloc d'enviar-la a\n" +" la sortida estàndard\n" +"\n" +" FORMAT és una cadena de caràcters que conté tres tipus d'objectes:\n" +" caràcters normals, que simplement es copien a la sortida estàndard;\n" +" seqüències d'escapada, que es transformen i es copien a la sortida\n" +" estàndard; i especificacions de format, cada una de les quals provoca\n" +" que s'escrigui un argument successiu a la sortida estàndard.\n" +"\n" +" A banda de les especificacions de format estàndards descrites a\n" +" printf(1), printf també interpreta:\n" +"\n" +" %b expandeix seqüències d'escapada a l'argument corresponent\n" +" %q afegeix les cometes necessàries perquè l'argument pugui ser\n" +" utilitzat com a entrada de l'intèrpret\n" +" %(fmt)T escriu la cadena resultant de passar FMT a strftime(3) com a\n" +" argument\n" +"\n" +" El format es reutilitza tant com sigui necessari fins a consumir tots\n" +" els arguments. Si hi ha menys arguments dels que el format requereix,\n" +" la resta d'especificacions de format funcionen com si s'hagués\n" +" especificat un valor de zero o una cadena nul·la, segons el cas.\n" +"\n" +" Estat de sortida:\n" +" Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n" +" error d'assignació o d'escriptura." -#: builtins.c:1942 +#: builtins.c:1953 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4099,11 +5654,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -4112,8 +5667,31 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Especifica com Readline ha de completar arguments.\n" +"\n" +" Per a cada NOM, especifica com s'han de completar els arguments. Si no\n" +" s'indica cap opció, les especificacions de compleció existents es\n" +" mostren en un format que permet la reutilització com a entrada.\n" +"\n" +" Opcions:\n" +" -p mostra les especificacions existents en un format " +"reciclable\n" +" -r suprimeix l'especificació de compleció per a NOM, o, si no\n" +" \t\ts'indica cap NOM, totes les especificacions de compleció\n" +" -D assigna les accions o complecions a totes les ordres que no\n" +" tenen definida una compleció específica\n" +" -E assigna les accions o complecions a ordres \"en blanc\", o\n" +" sigui, als intents de completar una línia en blanc\n" +"\n" +" Quan s'intenta una compleció, les accions s'apliquen en l'ordre en què\n" +" les opcions -D i -E apareixen al paràgraf anterior. L'opció -D té\n" +" preferència sobre la -E.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si es passa una opció invàlida o es produeix un\n" +" error." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4125,8 +5703,18 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Mostra possibles complecions en funció de les opcions.\n" +"\n" +" Aquesta ordre està pensada per a ser utilitzada en una funció que " +"generi\n" +" possibles complecions. Si s'especifica l'argument opcional PARAULA, es\n" +" limiten les complecions a aquelles que coincideixen amb PARAULA.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit excepte si es passa una opció invàlida o es produeix un\n" +" error." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4156,8 +5744,37 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" +"Modifica o mostra opcions de compleció.\n" +"\n" +" Modifica les opcions de compleció de NOM, o, si no s'especifica cap " +"NOM,\n" +" la compleció que s'està executant en el moment. Si no s'indica cap\n" +" OPCIÓ, mostra les opcions de compleció per a cada NOM o\n" +" l'especificació de compleció en ús.\n" +"\n" +" Opcions:\n" +" -o opció Activa OPCIÓ per a NOM\n" +" -D Canvia les opcions de compleció d'ordres per " +"defecte\n" +" -E Canvia les opcions de compleció d'ordres \"buides\"\n" +"\n" +" Si utilitzeu `+o' en lloc de `-o', desactiva l'opció especificada.\n" +"\n" +" Arguments:\n" +"\n" +" Cada NOM és el nom d'una ordre per la qual s'ha d'haver definit una\n" +" especificació de compleció amb l'ordre interna `complete'. Si no\n" +" s'especifica cap NOM, compopt s'ha de cridar des d'una funció " +"generadora\n" +" de complecions, i les opcions que es modifiquen afecten la generació de\n" +" complecions que s'està executant en aquell moment.\n" +"\n" +" Estat de sortida: \n" +" Torna èxit, excepte si es passa alguna opció no vàlida o NOM no té\n" +" definida cap especificació de compleció." -#: builtins.c:2015 +#: builtins.c:2026 +#, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4168,20 +5785,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4197,2418 +5815,65 @@ msgid "" "or\n" " not an indexed array." msgstr "" +"Llegeix línies d'un fitxer cap a una variable vector.\n" +"\n" +" Llegeix línies de l'entrada estàndard cap a la variable VECTOR, o del\n" +" descriptor de fitxer FD i s'especifica l'opció -u. El vector per\n" +" defecte és la variable MAPFILE.\n" +"\n" +" Opcions:\n" +" -n nombre Copia com a màxim NOMBRE línies. Si NOMBRE és 0, es copien\n" +" \t\ttotes les línies.\n" +" -0 origen Comença l'assignació a l'índex ORIGEN, per defecte 0.\n" +" -s nombre Descarta les primeres NOMBRE línies llegides.\n" +" -t Estripa el caràcter de salt de línia de cada línia llegida.\n" +" -u fd Llegeix el descriptor de fitxer FD, en lloc de l'entrada\n" +" estàndard.\n" +" -C callback Avalua CALLBACK cada QUÀNTUM línies llegides.\n" +" -c quàntum Especifica el nombre de línies llegides abans de\n" +" cridar CALLBACK\n" +"\n" +" Arguments:\n" +" VECTOR Nom de la variable vector per a les dades.\n" +"\n" +" Si s'especifica l'opció -C sense -c, el quàntum per defecte és 5000.\n" +" Quan s'avalua la funció CALLBACK, se li passa l'índex del proper " +"element\n" +" del vector i la línia que s'assigna a aquest element, com a arguments\n" +" addicionals.\n" +"\n" +" Si no s'especifica un origen explícit, se suprimeix qualsevol valor\n" +" assignat a VECTOR abans d'assignar cap valor.\n" +"\n" +" Estat de sortida:\n" +" Torna èxit, excepte si es passa una opció no vàlida o VECTOR és de\n" +" només-lectura." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +"Llegeix línies d'un fitxer cap a una variable vector.\n" +"\n" +" Un sinònim de `mapfile'." #, fuzzy -#~ msgid "wait [pid]" -#~ msgstr "wait [n]" +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2013 Free Software Foundation, Inc." -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "" -#~ "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" +#~ msgid ":" +#~ msgstr ":" -#, fuzzy -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "" -#~ "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" +#~ msgid "true" +#~ msgstr "true" -#, fuzzy -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "" -#~ "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" +#~ msgid "false" +#~ msgstr "false" -#~ msgid "Display the list of currently remembered directories. Directories" -#~ msgstr "" -#~ "Mostra la llista dels directoris actualment recordats. Els directoris " +#~ msgid "times" +#~ msgstr "times" -#~ msgid "find their way onto the list with the `pushd' command; you can get" -#~ msgstr "troben el seu cam? en la llista amb l'ordre ?pushd?; podeu anar cap" - -#~ msgid "back up through the list with the `popd' command." -#~ msgstr "endarrere a trav?s de la llista amb l'ordre ?popd?." - -#~ msgid "" -#~ "The -l flag specifies that `dirs' should not print shorthand versions" -#~ msgstr "" -#~ "Si s'especifica el senyalador \"-l\" no es mostrar? la forma abreviada" - -#~ msgid "" -#~ "of directories which are relative to your home directory. This means" -#~ msgstr "dels directoris que estiguen relacionats amb el vostre directori" - -#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" -#~ msgstr "d'usuari. Aix? vol dir que ?~/bin? pot ser exhibit com" - -#~ msgid "causes `dirs' to print the directory stack with one entry per line," -#~ msgstr "" -#~ "?/home/bfox/bin?. Amb el senyalador \"-v\" l'ordre ?dirs? mostrar? la" - -#~ msgid "" -#~ "prepending the directory name with its position in the stack. The -p" -#~ msgstr "" -#~ "pila de directoris amb una l?nia per a cada entrada, afegint el nom de" - -#~ msgid "flag does the same thing, but the stack position is not prepended." -#~ msgstr "directori amb la seua posici? en la pila. Amb el senyalador \"-p\"" - -#~ msgid "" -#~ "The -c flag clears the directory stack by deleting all of the elements." -#~ msgstr "" -#~ "esdevindr? el mateix, per? no mostrar? les posicions. El senyalador\n" -#~ "\"-c\" buidar? la pila de directoris esborrant tots els seus elements." - -#, fuzzy -#~ msgid "" -#~ "+N displays the Nth entry counting from the left of the list shown by" -#~ msgstr "" -#~ "+N\texhibeix l'entrada N?sima comptant des de l'esquerra de la llista " - -#, fuzzy -#~ msgid " dirs when invoked without options, starting with zero." -#~ msgstr "" -#~ "\tmostrada per ?dirs? quan se l'invoca sense opcions, comen?ant per\n" -#~ "\tzero." - -#, fuzzy -#~ msgid "" -#~ "-N displays the Nth entry counting from the right of the list shown by" -#~ msgstr "" -#~ "-N\texhibeix l'entrada N?sima comptant des de la dreta de la llista " - -#~ msgid "Adds a directory to the top of the directory stack, or rotates" -#~ msgstr "" -#~ "Afegeix un directori en el principi de la pila de dicrectoris, o gira " - -#~ msgid "the stack, making the new top of the stack the current working" -#~ msgstr "" -#~ "la pila fent que el primer directori de la pila siga l'actual. Sense" - -#~ msgid "directory. With no arguments, exchanges the top two directories." -#~ msgstr "cap par?metre, intercanvia els dos primers directoris." - -#, fuzzy -#~ msgid "+N Rotates the stack so that the Nth directory (counting" -#~ msgstr "" -#~ "+N\tGira la pila de tal manera que el directori N?sim (comptant des de" - -#, fuzzy -#~ msgid " from the left of the list shown by `dirs', starting with" -#~ msgstr "\tl'esquerra de la llista mostrada per \"dirs\") ?s al principi." - -#, fuzzy -#~ msgid " zero) is at the top." -#~ msgstr "\tla dreta) ?s el primer." - -#, fuzzy -#~ msgid "-N Rotates the stack so that the Nth directory (counting" -#~ msgstr "" -#~ "-N\tGira la pila de tal manera que el directori N?sim (comptant des de " - -#, fuzzy -#~ msgid " from the right of the list shown by `dirs', starting with" -#~ msgstr "\tl'esquerra de la llista mostrada per \"dirs\") ?s al principi." - -#, fuzzy -#~ msgid "-n suppress the normal change of directory when adding directories" -#~ msgstr "" -#~ "-n\tsuprimeix el canvi normal de directori quan se'n afegeix a la pila, " - -#, fuzzy -#~ msgid " to the stack, so only the stack is manipulated." -#~ msgstr "\tde tal manera que nom?s es manipula la pila." - -#, fuzzy -#~ msgid "dir adds DIR to the directory stack at the top, making it the" -#~ msgstr "" -#~ "dir\tafegeix DIR a la pila de directoris al principi, de tal manera que " - -#, fuzzy -#~ msgid " new current working directory." -#~ msgstr "\taquest ser? el nou directori actual de treball." - -#~ msgid "You can see the directory stack with the `dirs' command." -#~ msgstr "Podeu comprovar la pila de directori amb l'ordre ?dirs?." - -#~ msgid "Removes entries from the directory stack. With no arguments," -#~ msgstr "Esborra entrades de la pila de directoris. Sense cap par?metre," - -#~ msgid "removes the top directory from the stack, and cd's to the new" -#~ msgstr "esborra el primer directori de la pila, i canvia el directori a la" - -#~ msgid "top directory." -#~ msgstr "seguent entrada de la pila (o sia, la nova primera entrada)." - -#, fuzzy -#~ msgid "+N removes the Nth entry counting from the left of the list" -#~ msgstr "+N\ttreu l'entrada N?sima comptant des de l'esquerra de la llista" - -#, fuzzy -#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" -#~ msgstr "\tmostrada per ?dirs?, comen?ant per zero. Per exemple: ?popd +0?" - -#, fuzzy -#~ msgid " removes the first directory, `popd +1' the second." -#~ msgstr "\ttreu el primer directori, ?popd +1? el segon, etc..." - -#, fuzzy -#~ msgid "-N removes the Nth entry counting from the right of the list" -#~ msgstr "-N\ttreu l'entrada N?sima comptant des de la dreta de la llista" - -#, fuzzy -#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" -#~ msgstr "" -#~ "\tmostrada per ?dirs?, comen?ant per zero. Per exemple: ?popd -0? treu" - -#, fuzzy -#~ msgid " removes the last directory, `popd -1' the next to last." -#~ msgstr "\tel darrer directori, ?popd -1? treu el pen?ltim, etc..." - -#, fuzzy -#~ msgid "" -#~ "-n suppress the normal change of directory when removing directories" -#~ msgstr "" -#~ "-n\tsuprimeix el canvi normal de directori quan es treu cap directori " - -#, fuzzy -#~ msgid " from the stack, so only the stack is manipulated." -#~ msgstr "\tde la pila, de tal manera que nom?s es manipula la pila." - -#, fuzzy -#~ msgid "" -#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" -#~ " break N levels." -#~ msgstr "Ix d'un bucle FOR, WHILE o UNTIL." - -#~ msgid "Obsolete. See `declare'." -#~ msgstr "Obsoleta. Llegiu ?declare?." - -#~ msgid "" -#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." -#~ msgstr "" -#~ "Mostra els PAR?METREs. Si especifiqueu -n, se suprimir? el car?cter\n" -#~ "d'inici de l?nia." - -#~ msgid "" -#~ "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "" -#~ "Llegeix els PAR?METRES a l'entrada de l'int?rpret d'ordres i executa les\n" -#~ "ordres resultants." - -#~ msgid "Logout of a login shell." -#~ msgstr "Finalitzar una sessi? de l'int?rpret d'ordres." - -#, fuzzy -#~ 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 "" -#~ "Provoca l'eixida d'una funci? amb un valor de retorn especificat per" - -#, fuzzy -#~ msgid "" -#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" -#~ " not given, it is assumed to be 1." -#~ msgstr "" -#~ "Es reanomenen els par?metres posicionals des de $N+1 ... com a $1 ... " - -#, fuzzy -#~ msgid "" -#~ "Print the accumulated user and system times for processes run from\n" -#~ " the shell." -#~ msgstr "" -#~ "Mostra el temps acumulat per l'usuari i pel sistema d'haver executat " - -#~ msgid "Missing `}'" -#~ msgstr "S'ha perdut '}'" - -#~ msgid "brace_expand> " -#~ msgstr "clau_expansi?> " - -# Ac? vaig tindre dubtes sobre quina paraula fer servir -# per al terme "command". Mirant-me el diccionari auxiliar -# de Sebasti? Pla i Sanz, traductor del KDE, vaig trobar-ne tres -# de traduccions: ordre, comandament, i comanda. I vaig triar -# la paraula "comanda". -# -# No obstant aix?, no s? si la paraula "command" pot traduir-se -# tamb? amb els altres termes depenent del context. Reviseu -# sobre el terme "comanda". -# Mtx (12/10/2002). -# -# Llegint al TERMCAT, la paraula "comanda" no apareix enlloc. Al glossari -# de termes del Softcatal? si hi apareix. Encara no ho tinc clar. Mentre -# m'informe una mica m?s, per?, ho deixar? com a "ordre", tal com ho -# heu fet fins ara. El problema que t? el TERMCAT, a la meua opini?, ?s -# que s'apropa massa a l'espanyol. No en tinc res en contra d'aquesta -# llengua, per? algunes traduccions en catal?, per exemple, basant-se -# en l'espanyol, em semblen poc naturals, i n'he trobat d'altres basats -# en el franc?s que s? me'n semblen m?s naturals. -# Mtx (15/10/2002) -#~ msgid "Attempt to free unknown command type `%d'.\n" -#~ msgstr "Intenteu lliurar l'ordre de mena desconeguda '%d'.\n" - -#~ msgid "Report this to %s\n" -#~ msgstr "Informeu d'aix? a %s\n" - -#~ msgid "Stopping myself..." -#~ msgstr "Aturant-me..." - -#~ msgid "Tell %s to fix this someday.\n" -#~ msgstr "Digueu a %s que solucione aix? algun dia.\n" - -#~ msgid "execute_command: bad command type `%d'" -#~ msgstr "ordre_execuci?: el tipus d'ordre ?s inv?lid '%d'" - -#~ msgid "real\t" -#~ msgstr "real\t" - -#~ msgid "user\t" -#~ msgstr "usuari\t" - -#~ msgid "sys\t" -#~ msgstr "sistema\t" - -#~ msgid "" -#~ "real\t0m0.00s\n" -#~ "user\t0m0.00s\n" -#~ "sys\t0m0.00s\n" -#~ msgstr "" -#~ "real\t0m0.00s\n" -#~ "usuari\t0m0.00s\n" -#~ "sistema\t0m0.00s\n" - -#~ 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" - -#~ msgid "%s: output redirection restricted" -#~ msgstr "%s: redirecci? d'eixida restringida" - -#~ msgid "Out of memory!" -#~ msgstr "Mem?ria esgotada!" - -#~ msgid "You have already added item `%s'\n" -#~ msgstr "Ja hi heu afegit l'element: '%s'\n" - -#~ msgid "You have entered %d (%d) items. The distribution is:\n" -#~ msgstr "Heu introdu?t %d (%d) elements. La distribuci? ?s:\n" - -#~ msgid "%s: bg background job?" -#~ msgstr "%s: suggeriment: voleu executar 'bg' en segon pla?" - -#~ msgid "" -#~ "Redirection instruction from yyparse () '%d' is\n" -#~ "out of range in make_redirection ()." -#~ msgstr "" -#~ "La instrucci? de redirecci? de la funci? yyparse () '%d' ?s fora\n" -#~ "de l'interval en la funci? make_redirection()." - -#~ msgid "clean_simple_command () got a command with type %d." -#~ msgstr "clean_simple_command () heu rebut un ordre del tipus %d." - -#~ msgid "got errno %d while waiting for %d" -#~ msgstr "s'ha rebut l'error %d mentre s'esperava per %d" - -#~ msgid "syntax error near unexpected token `%c'" -#~ msgstr "hi ha un error inesperat de sintaxi a prop del senyal '%c'" - -#~ msgid "print_command: bad command type `%d'" -#~ msgstr "print_command: tipus d'ordre inv?lid '%d'" - -#~ msgid "cprintf: bad `%%' argument (%c)" -#~ msgstr "crintf: el par?metre '%%' de l'opci? %c ?s inv?lid" - -#~ msgid "option `%s' requires an argument" -#~ msgstr "l'opci? '%s' requereix un par?metre" - -#~ msgid "%s: unrecognized option" -#~ msgstr "%s: l'opci? no ?s reconeguda" - -#~ msgid "`-c' requires an argument" -#~ msgstr "'-c' requereix un par?metre" - -#~ msgid "%s: cannot execute directories" -#~ msgstr "%s: no es poden executar els directoris" - -#~ msgid "Bad code in sig.c: sigprocmask" -#~ msgstr "Codi incorrecte a la rutina sig.c: sigprocmask" - -#~ msgid "bad substitution: no ending `}' in %s" -#~ msgstr "substituci? inv?lida: no s'ha tancat %s amb cap '}'" - -#~ msgid "%s: bad array subscript" -#~ msgstr "%s: la composici? de la matriu no ?s v?lida" - -#~ msgid "can't make pipes for process substitution: %s" -#~ msgstr "no es poden establir conductes per a la substituci? del proc?s: %s" - -#~ msgid "reading" -#~ msgstr "s'est? llegint" - -#~ msgid "process substitution" -#~ msgstr "proc?s de substituci? en curs" - -#~ msgid "command substitution" -#~ msgstr "substituci? de l'ordre" - -#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" -#~ msgstr "" -#~ "El conducte no es pot reobrir per a substituir\n" -#~ "l'ordre (descripci? de fitxer%d): %s" - -#~ msgid "$%c: unbound variable" -#~ msgstr "$%c: variable sense vincle" - -#~ msgid "%s: bad arithmetic substitution" -#~ msgstr "%s: substituci? aritm?tica inv?lida" - -#~ msgid "-%s: binary operator expected" -#~ msgstr "-%s: s'esperava un operador binari" - -#~ msgid "%s[%s: bad subscript" -#~ msgstr "%s[%s: sub-?ndex inv?lid" - -#~ msgid "[%s: bad subscript" -#~ msgstr "[%s: sub-?ndex inv?lid" - -#~ msgid "digits occur in two different argv-elements.\n" -#~ msgstr "les xifres apareixen dins de dos par?metres diferents.\n" - -#~ msgid "option %c\n" -#~ msgstr "opci? %c\n" - -#~ msgid "option a\n" -#~ msgstr "opci? a\n" - -#~ msgid "option b\n" -#~ msgstr "opci? b\n" - -#~ msgid "option c with value `%s'\n" -#~ msgstr "opci? c amb el valor ?%s?\n" - -#~ msgid "?? sh_getopt returned character code 0%o ??\n" -#~ msgstr "sh_getopt() retorn? 0%o com a codi de car?cter??\n" - -#~ msgid "non-option ARGV-elements: " -#~ msgstr "elements d'ARGV que no s?n opcions: " - -#~ msgid "%s: Unknown flag %s.\n" -#~ msgstr "%s: Senyalador desconegut %s.\n" - -#~ msgid "Unknown directive `%s'" -#~ msgstr "Directiva desconeguda ?%s?" - -#~ msgid "%s requires an argument" -#~ msgstr "%s cal un par?metre" - -#~ msgid "%s must be inside of a $BUILTIN block" -#~ msgstr "%s ha d'estar dins d'un bloc $BUILTIN" - -#~ msgid "%s found before $END" -#~ msgstr "%s trobat abans de $END" - -#~ msgid "%s already has a function (%s)" -#~ msgstr "%s ja cont? la funci? definida: %s" - -#~ msgid "%s already had a docname (%s)" -#~ msgstr "%s ja t? un nom de document (%s)" - -#~ msgid "%s already has short documentation (%s)" -#~ msgstr "%s ja t? una documentaci? r?pida (%s)" - -#~ msgid "%s already has a %s definition" -#~ msgstr "%s ja t? una definici? %s" - -#~ msgid "mkbuiltins: Out of virtual memory!\n" -#~ msgstr "mkbuiltins(): S'ha esgotat la mem?ria virtual!\n" - -# Tot i que no he trobat cap traducci? t?cnica oficial al TERMCAT -# crec que la traducci? de "prompt" com a "apuntador" ?s prou -# ilustratiu i significatiu per al context, no?. -#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" -#~ msgstr "read [-r] [-p apuntador] [-a matriu] [-e] [nom ...]" - -#~ msgid "%[DIGITS | WORD] [&]" -#~ msgstr "%[XIFRES | PARAULES] [&]" - -#~ msgid "variables - Some variable names and meanings" -#~ msgstr "variables - Algunes variables i els seus significats" - -#~ msgid "`alias' with no arguments or with the -p option prints the list" -#~ msgstr "" -#~ "Si 'alias' no porta arguments o porta l'opci? -p es mostra la llista" - -#~ msgid "of aliases in the form alias NAME=VALUE on standard output." -#~ msgstr "d'?lies en la forma 'alias NOM=VALOR' en l'eixida per defecte." - -#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." -#~ msgstr "" -#~ "Altrament, es defineix un ?lies per cada NOM que en d?na el seu VALOR." - -#~ msgid "A trailing space in VALUE causes the next word to be checked for" -#~ msgstr "" -#~ "Un salt de l?nia dins del VALOR for?a la substituci? de la seg?ent " -#~ "paraula per" - -#~ msgid "alias substitution when the alias is expanded. Alias returns" -#~ msgstr "substituci? de l'?lies quan aquest s'hi expandeix. L'?lies torna" - -#~ msgid "true unless a NAME is given for which no alias has been defined." -#~ msgstr "" -#~ "cert almenys que es d?ne un NOM pel qual no s'haja estat definit cap ?" -#~ "lies." - -#~ msgid "then remove all alias definitions." -#~ msgstr "l'opci? -a, aleshores se suprimeixen totes les definicions." - -#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" -#~ msgstr "" -#~ "Vincula una seq??ncia de tecles cap una funci? de lectura, o a una macro." - -#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" -#~ msgstr "" -#~ "La sintaxi ?s equivalent al que es troba a ~/.inputrc, per? ha s'ha de fer" - -#~ msgid "" -#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." -#~ msgstr "" -#~ "el pas com a ?nic par?metre: bind '\"\\C-x\\C-r\": re-read-init-file'." - -#~ msgid "Arguments we accept:" -#~ msgstr "Els par?metres acceptats s?n:" - -#~ msgid "" -#~ " -m keymap Use `keymap' as the keymap for the duration of this" -#~ msgstr "" -#~ " -m mapa_tecles Fa servir 'keymap' com el mapa de car?cters " -#~ "durant" - -#~ msgid " command. Acceptable keymap names are emacs," -#~ msgstr "" -#~ " l'execuci? d'aquest ordre. S'accepten els noms emacs," - -#~ msgid "" -#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," -#~ msgstr "" -#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," - -#~ msgid " vi-command, and vi-insert." -#~ msgstr " vi-command, i vi-insert." - -#~ msgid " -l List names of functions." -#~ msgstr " -l Mostra la llista de noms de les funcions." - -#~ msgid " -P List function names and bindings." -#~ msgstr "" -#~ " -P Mostra la llista de noms i vincles de les funcions." - -#~ msgid "" -#~ " -p List functions and bindings in a form that can be" -#~ msgstr "" -#~ " -p Mostra la llista de funcions i vincles d'una manera" - -#~ msgid " reused as input." -#~ msgstr "" -#~ " que puga ser reutilitzada com a entrada de dades." - -#~ msgid " -r keyseq Remove the binding for KEYSEQ." -#~ msgstr "" -#~ " -r seq??ncia_tecles Treu els vincles de la seq??ncia de tecles." - -#~ msgid " -f filename Read key bindings from FILENAME." -#~ msgstr " -f fitxer Llegeix les assignacions de tecles d'un fitxer." - -#~ msgid "" -#~ " -q function-name Query about which keys invoke the named function." -#~ msgstr "" -#~ " -q nom_funci? Consultar quines tecles invoquen la funci? demanada." - -#~ msgid " -V List variable names and values" -#~ msgstr "" -#~ " -V Mostra la llista de noms i valors de les variables." - -#~ msgid "" -#~ " -v List variable names and values in a form that can" -#~ msgstr "" -#~ " -v Mostra la llista de noms i valors de variables de " -#~ "manera" - -#~ msgid " be reused as input." -#~ msgstr "" -#~ " que puga ser reutilitzada com a entrada de dades." - -#~ msgid "" -#~ " -S List key sequences that invoke macros and their " -#~ "values" -#~ msgstr "" -#~ " -S Mostra la llista de seq??ncies de tecles que criden\n" -#~ " macros i els seus valors." - -#~ msgid "" -#~ " -s List key sequences that invoke macros and their " -#~ "values in" -#~ msgstr "" -#~ " -s Mostra la llista de seq??ncies de tecles que criden" - -#~ msgid " a form that can be reused as input." -#~ msgstr "" -#~ " macros i els seus valors de manera que puga ser\n" -#~ " reutilitzada com a entrada de dades." - -#~ msgid "break N levels." -#~ msgstr "Si s'especifica N, s'ix despr?s de N iteracions." - -#~ msgid "If N is specified, resume at the N-th enclosing loop." -#~ msgstr "Si s'especifica N, es repr?n el bucle al N-?sim cicle." - -#~ msgid "Run a shell builtin. This is useful when you wish to rename a" -#~ msgstr "" -#~ "Executa una ordre integrada de l'int?rpret. Aix? ?s ?til quan desitgeu" - -#~ msgid "shell builtin to be a function, but need the functionality of the" -#~ msgstr "" -#~ "renomenar una ordre integrada de l'int?rpret perqu? siga una funci?, per?" - -#~ msgid "builtin within the function itself." -#~ msgstr "cal la funcionalitat de l'ordre integrada dins de la pr?pia funci?." - -#~ msgid "Change the current directory to DIR. The variable $HOME is the" -#~ msgstr "Fa servir DIR com el directori actual. La variable $HOME ?s el" - -#~ msgid "default DIR. The variable $CDPATH defines the search path for" -#~ msgstr "" -#~ "valor per defecte de DIR. La variable $CDPATH defineix el cam? de recerca" - -#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" -#~ msgstr "" -#~ "per al directori que cont? DIR. Els noms de directoris alternatius que " -#~ "hi ha" - -#~ msgid "are separated by a colon (:). A null directory name is the same as" -#~ msgstr "" -#~ "en CDPATH s?n separats per dos punts. Un nom buit de directori ?s el " -#~ "mateix" - -#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," -#~ msgstr "" -#~ "que el directori actual, p.e. ?.?. Si es comen?a en DIR amb una barra " -#~ "(/)," - -#~ msgid "then $CDPATH is not used. If the directory is not found, and the" -#~ msgstr "" -#~ "aleshores no es fa servir $CDPATH. Si no es troba el directori, i l'opci?" - -#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" -#~ msgstr "" -#~ "de l'int?rpret ?cdable_vars? ?s activa, aleshores intenta fer servir la" - -#~ msgid "name. If that variable has a value, then cd to the value of that" -#~ msgstr "" -#~ "paraula com a nom de variable. Si aquesta variable ja tenia un valor," - -#~ msgid "" -#~ "variable. The -P option says to use the physical directory structure" -#~ msgstr "aleshores es canvia al directori d'aquest valor. L'opci? -P indica" - -#~ msgid "" -#~ "instead of following symbolic links; the -L option forces symbolic links" -#~ msgstr "" -#~ "l'emprament de l'estructura f?sica del directori en voltes d'enlla?os" - -#~ msgid "to be followed." -#~ msgstr "simb?lics; l'opci? -L for?a el seguiment d'enlla?os simb?lics." - -#~ msgid "Print the current working directory. With the -P option, pwd prints" -#~ msgstr "" -#~ "Mostra el directori actual de treball. Amb l'opci? -P, pwd mostra el" - -#~ msgid "the physical directory, without any symbolic links; the -L option" -#~ msgstr "" -#~ "directori f?sic, sense cap enlla? simb?lic; l'opci? -L fa que pwd seguisca" - -#~ msgid "makes pwd follow symbolic links." -#~ msgstr "els enlla?os simb?lics." - -#~ msgid "" -#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" -#~ msgstr "" -#~ "Executa ORDRE amb PAR?METRES ignorant les funcions de l'int?rpret. Si " -#~ "teniu" - -#~ msgid "function called `ls', and you wish to call the command `ls', you can" -#~ msgstr "" -#~ "una funci? de l'int?rpret anomenat ?ls?, i desitgeu cridar l'ordre ?ls?," - -#~ msgid "" -#~ "say \"command ls\". If the -p option is given, a default value is used" -#~ msgstr "" -#~ "podeu escriure ?command ls?. Si doneu l'opci? -p, es far? servir un valor" - -#~ msgid "" -#~ "for PATH that is guaranteed to find all of the standard utilities. If" -#~ msgstr "" -#~ "per defecte per al PATH, que garanteix la cerca de les eines est?ndard. " -#~ "Si hi" - -#~ msgid "" -#~ "the -V or -v option is given, a string is printed describing COMMAND." -#~ msgstr "" -#~ "indiqueu l'opci? -V o -v, es mostrar? una cadena de text descrivint " -#~ "l'ORDRE." - -#~ msgid "The -V option produces a more verbose description." -#~ msgstr "L'opci? -V produeix una descripci? m?s acurada." - -#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" -#~ msgstr "" -#~ "Es declara les variables i/o se'ls d?na atributs. Si no es proporcionen " -#~ "NOMS," - -#~ msgid "given, then display the values of variables instead. The -p option" -#~ msgstr "" -#~ "aleshores mostra els valors de les variables. L'opci? -p mostrar? els" - -#~ msgid "will display the attributes and values of each NAME." -#~ msgstr "atributs i valors de cada NOM." - -#~ msgid "The flags are:" -#~ msgstr "Els senyaladors s?n:" - -#~ msgid " -a\tto make NAMEs arrays (if supported)" -#~ msgstr " -a\tper a fer matrius de NOMS (si n'?s suportat)" - -#~ msgid " -f\tto select from among function names only" -#~ msgstr " -f\ttriar nom?s entre els noms de les funcions" - -#~ msgid " -F\tto display function names without definitions" -#~ msgstr " -F\tmostrar noms de funcions ometent les seues definicions" - -#~ msgid " -r\tto make NAMEs readonly" -#~ msgstr " -r\tblocar l'acc?s d'escriptura de les variables NOMs" - -#~ msgid " -x\tto make NAMEs export" -#~ msgstr " -x\texportar les variables de NOMs" - -#~ msgid " -i\tto make NAMEs have the `integer' attribute set" -#~ msgstr " -i\tactivar l'atribut num?ric enter les variables NOMs" - -#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" -#~ msgstr "" -#~ "Les variables que tinguen l'atribut num?ric enter tenen feta l'evaluaci?" - -#~ msgid "`let') done when the variable is assigned to." -#~ msgstr "aritm?tica (mirar ?let?) quan se'ls assigna la variable." - -#~ msgid "When displaying values of variables, -f displays a function's name" -#~ msgstr "" -#~ "Quan es mostra els valors de les variables, amb -f es mostra un nom de " -#~ "funci?" - -#~ msgid "and definition. The -F option restricts the display to function" -#~ msgstr "" -#~ "i la definici?. Amb l'opci? -F es limita nom?s en mostrar el nom de la" - -#~ msgid "name only." -#~ msgstr "funci?." - -#~ msgid "" -#~ "Using `+' instead of `-' turns off the given attribute instead. When" -#~ msgstr "" -#~ "Emprant \"+\" en voltes de \"-\" desactiva l'atribut especificat. Quan ?s" - -#~ msgid "used in a function, makes NAMEs local, as with the `local' command." -#~ msgstr "" -#~ "emprat en una funci?, converteix NOMs en variables locals, igual com es " -#~ "fa\n" -#~ "amb l'ordre ?local?." - -#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" -#~ msgstr "" -#~ "Es crea una variable local anomenat NOM, i el d?na un VALOR. Nom?s es " -#~ "pot fer" - -#~ msgid "have a visible scope restricted to that function and its children." -#~ msgstr "variable NOM nom?s per a aquesta funci? i per als seus fills." - -#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" -#~ msgstr "" -#~ "Mostra els PAR?METREs. Si especifiqueu -n, s'eliminar? el car?cter de " -#~ "salt" - -#~ msgid "suppressed. If the -e option is given, interpretation of the" -#~ msgstr "" -#~ "de l?nia. Si especifiqueu l'opci? -e, s'activar? la interpretaci? de les" - -#~ msgid "following backslash-escaped characters is turned on:" -#~ msgstr "seq??ncies d'escapada (barra inclinada inversa):" - -#~ msgid "\t\\a\talert (bell)" -#~ msgstr "\t\\a\talerta (camponada)" - -#~ msgid "\t\\b\tbackspace" -#~ msgstr "\t\\b\tesborrar cap enrere" - -#~ msgid "\t\\c\tsuppress trailing newline" -#~ msgstr "\t\\c\tsuprimeix el car?cter de salt de l?nia" - -#~ msgid "\t\\E\tescape character" -#~ msgstr "\t\\E\tcar?cter d'escapada" - -#~ msgid "\t\\f\tform feed" -#~ msgstr "\t\\f\talimentaci? manual de paper" - -#~ msgid "\t\\n\tnew line" -#~ msgstr "\t\\n\tl?nia nova" - -#~ msgid "\t\\r\tcarriage return" -#~ msgstr "\t\\r\ttecla de retorn de carro" - -#~ msgid "\t\\t\thorizontal tab" -#~ msgstr "\t\\t\tpestanya horitzontal" - -#~ msgid "\t\\v\tvertical tab" -#~ msgstr "\t\\v\tpestanya vertical" - -#~ msgid "\t\\\\\tbackslash" -#~ msgstr "\t\\\\\tbarra invertida" - -#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." -#~ msgstr "\t\\num\tcar?cter del qual codi ASCII ?s NUM (octal)." - -#~ msgid "" -#~ "You can explicitly turn off the interpretation of the above characters" -#~ msgstr "" -#~ "Podeu desactivar expl?citament la interpretaci? dels car?cters esmentats " -#~ "amb" - -#~ msgid "with the -E option." -#~ msgstr "l'opci? -E." - -#~ msgid "Enable and disable builtin shell commands. This allows" -#~ msgstr "" -#~ "Activa i desactiva les ordres integrades de l'int?rpret d'ordres. A?? us" - -#~ msgid "you to use a disk command which has the same name as a shell" -#~ msgstr "" -#~ "permet fer servir una ordre de disc que tinga el mateix nom d'una ordre " -#~ "interna" - -#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" -#~ msgstr "" -#~ "de l'int?rpret d'ordres. Si utilitzeu -n, els NOMs es desactiven; " -#~ "altrament" - -#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" -#~ msgstr "" -#~ "s'activarien els NOMs. Per exemple, per a fer servir l'ordre ?test? del " -#~ "cam?" - -#~ msgid "path instead of the shell builtin version, type `enable -n test'." -#~ msgstr "" -#~ "d'acc?s (PATH) en voltes de la versi? integrada de l'int?rpret d'ordres," - -#~ msgid "On systems supporting dynamic loading, the -f option may be used" -#~ msgstr "" -#~ "teclegeu ?enable -n test?. En sistemes que suporten c?rrega din?mica, " -#~ "l'opci?" - -#~ msgid "to load new builtins from the shared object FILENAME. The -d" -#~ msgstr "" -#~ "-f es pot fer servir per a carregar noves ordres predefinides de l'objecte" - -#~ msgid "option will delete a builtin previously loaded with -f. If no" -#~ msgstr "" -#~ "de FITXER compartit. L'opci? -d esborrar? una ordre integrada carregada " - -#~ msgid "non-option names are given, or the -p option is supplied, a list" -#~ msgstr "" -#~ "pr?viament amb -f. Si no s'especifica cap opci?, o s'especifica l'opci? -" -#~ "p, es" - -#~ msgid "of builtins is printed. The -a option means to print every builtin" -#~ msgstr "" -#~ "mostra una llista d'ordres predefinides. L'opci? -a implica mostrar cada" - -#~ msgid "with an indication of whether or not it is enabled. The -s option" -#~ msgstr "" -#~ "ordre integrada amb una indicaci? de si est? activa o no. L'opci? -s " -#~ "impedeix" - -#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" -#~ msgstr "" -#~ "l'eixida de les ordres predefinides \"especials\" Posix.2. L'opci? -n " -#~ "mostra" - -#~ msgid "option displays a list of all disabled builtins." -#~ msgstr "una llista de totes les funcions internes desactivades." - -#~ msgid "Getopts is used by shell procedures to parse positional parameters." -#~ msgstr "" -#~ "La funci? getopts() ?s utilitzada pels procediments de l'int?rpret " -#~ "d'ordres\n" -#~ "per a analitzar par?metres posicionals." - -#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" -#~ msgstr "" -#~ "La variable OPTSTRING cont? les opcions de forma curta per a ser " -#~ "reconegudes;" - -#~ msgid "is followed by a colon, the option is expected to have an argument," -#~ msgstr "" -#~ "si una lletra ?s seguida per dos punts, s'ha de donar un par?metre que " -#~ "hauria" - -#~ msgid "which should be separated from it by white space." -#~ msgstr "d'estar separat per un espai en blanc." - -#~ msgid "Each time it is invoked, getopts will place the next option in the" -#~ msgstr "" -#~ "Cada vegada que se'l invoca, ?getops? posar? la seg?ent opci? en la " -#~ "variable" - -#~ msgid "shell variable $name, initializing name if it does not exist, and" -#~ msgstr "" -#~ "$name de l'int?rpret d'ordres, creant-lo si no existeix, i l'?ndex del " -#~ "seg?ent" - -#~ msgid "the index of the next argument to be processed into the shell" -#~ msgstr "" -#~ "par?metre per a processar-se dins de la variable OPTIND de l'int?rpret" - -#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" -#~ msgstr "" -#~ "d'ordres. OPTIND s'inicia amb 1 cada vegada que s'invoca l'int?rpret " -#~ "d'ordres" - -#~ msgid "a shell script is invoked. When an option requires an argument," -#~ msgstr "" -#~ "o una seq??ncia d'ordres. Quan una opci? requereix un par?metre, la funci?" - -#~ msgid "getopts places that argument into the shell variable OPTARG." -#~ msgstr "" -#~ "getopts() colžloca aquest par?metre dins de la variable OPTARG de l'int?" -#~ "rpret." - -#~ msgid "getopts reports errors in one of two ways. If the first character" -#~ msgstr "" -#~ "La funci? getopts() comunica errors en una de les dues maneres. Si el" - -#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" -#~ msgstr "primer car?cter de la variable OPSTRING ?s el signe ':', la funci?" - -#~ msgid "this mode, no error messages are printed. If an illegal option is" -#~ msgstr "" -#~ "getopts() corre silenciosament. D'aquesta manera, no s'imprimir? cap" - -#~ msgid "seen, getopts places the option character found into OPTARG. If a" -#~ msgstr "missatge d'error. Si es troba una opci? incorrecta, la funci?" - -#~ msgid "required argument is not found, getopts places a ':' into NAME and" -#~ msgstr "colžloca aquesta opci? de forma curta dins de la variable OPTARG " - -#~ msgid "sets OPTARG to the option character found. If getopts is not in" -#~ msgstr "" -#~ "si no es troba un patr?metre esperat, la funci? getopts() introdueix" - -#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" -#~ msgstr "el signe ':' dins de la variable NAME i estableix el valor de la" - -#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" -#~ msgstr "" -#~ "variable OPTARG amb l'opci? de forma curta que s'hi haja trobada. Si" - -#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" -#~ msgstr "la funci? getopts() no est? en mode silenci?s, i s'ha trobat una" - -#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" -#~ msgstr "Si la variable OPTERR de l'int?rpret d'ordres t? un valor nul, la" - -#~ msgid "printing of error messages, even if the first character of" -#~ msgstr "" -#~ "funci? getopts() desactiva la impressi? dels missatges d'error, tot i" - -#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." -#~ msgstr "" -#~ "que el primer car?cter de OPSTRING no siga el signe ':'. La variable\n" -#~ "OPTERR t? el valor 1 com a defecte." - -#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" -#~ msgstr "La funci? getopts() normalment analitza els par?metres posicionals" - -#~ msgid "more arguments are given, they are parsed instead." -#~ msgstr "" -#~ "($0-$9), per? si se'n d?na m?s arguments, se'ls analitza en voltes\n" -#~ "dels posicionals." - -#~ msgid "Exec FILE, replacing this shell with the specified program." -#~ msgstr "" -#~ "Executa el FITXER, reempla?ant aquest int?rpret d'ordres pel programa." - -#~ msgid "If FILE is not specified, the redirections take effect in this" -#~ msgstr "" -#~ "especificat. Si no s'especifica FITXER, els redre?aments tindran efecte" - -#~ msgid "shell. If the first argument is `-l', then place a dash in the" -#~ msgstr "en aquest int?rpret d'ordres. Si el primer par?metre ?s \"-l\"," - -#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" -#~ msgstr "aleshores es reempla?a el par?metre 0 pel signe \"-\" referenciat a" - -#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" -#~ msgstr "" -#~ "FITXER, com aix? es fa en l'inici de sessi?. Si s'especifica l'opci? \"-c" -#~ "\"," - -#~ msgid "option means to make set argv[0] of the executed process to NAME." -#~ msgstr "" -#~ "s'executa FITXER en un entorn nul. L'opci? \"-a\" estableix que el\n" -#~ "proc?s executat portar? aquest NOM." - -#~ msgid "If the file cannot be executed and the shell is not interactive," -#~ msgstr "Si no es pot executar el fitxer i l'int?rpret d'ordres no ?s" - -#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" -#~ msgstr "interactiu, aleshores l'int?rpret finalitza la seua execuci?, a" - -#~ msgid "is set." -#~ msgstr "menys que s'inicialitze la variable \"no_exit_on_failed_exec\"." - -#~ msgid "is that of the last command executed." -#~ msgstr "l'estat d'eixida ?s el darrer ordre executat." - -#~ msgid "" -#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" -#~ msgstr "PRIMER i ?LTIM poden ser n?meros que especifiquen el rang, o PRIMER" - -#~ msgid "string, which means the most recent command beginning with that" -#~ msgstr "" -#~ "pot ser una cadena, que representa l'ordre m?s recent el qual comen?a" - -#~ msgid "string." -#~ msgstr "amb eixa cadena." - -#~ msgid "" -#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," -#~ msgstr "" -#~ " -e ENAME tria quin editor emprar. FCEDIT ?s per defecte, despr?s ?s" - -#~ msgid "" -#~ " then the editor which corresponds to the current readline editing" -#~ msgstr "" -#~ " EDITOR, despr?s l'editor que correspon amb l'actual editor del " - -#~ msgid " mode, then vi." -#~ msgstr " mode de l?nia d'ordre, i per ?ltim ?vi?." - -#~ msgid " -l means list lines instead of editing." -#~ msgstr " -l mostra les l?nies en voltes d'editar-les." - -#~ msgid " -n means no line numbers listed." -#~ msgstr " -n no es mostraran els n?meros de l?nia." - -#~ msgid "" -#~ " -r means reverse the order of the lines (making it newest listed " -#~ "first)." -#~ msgstr "" -#~ " -r inverteix l'ordre de les l?nies (els m?s recents es llisten primer)." - -#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" -#~ msgstr "" -#~ "Amb el format ?fc -s [pat=rep ...] [command]?, es reexecuta l'ordre " - -#~ msgid "re-executed after the substitution OLD=NEW is performed." -#~ msgstr "despr?s de que es realitze la substituci? de ANTIC per NOU." - -#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" -#~ msgstr "Un ?lies ?til per a usar-lo amb aix? ?s r='fc -s', per tant si" - -#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" -#~ msgstr "s'escriu ?r cc? s'executar? la darrera ordre que comen?a per ?cc? i" - -#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" -#~ msgstr "Si no s'especifica ID_TASCA, s'aplicaran els atributs d'execuci? de" - -#~ msgid "used." -#~ msgstr "l'int?rpret d'ordres de la tasca actual." - -#~ msgid "Place JOB_SPEC in the background, as if it had been started with" -#~ msgstr "Ubica ID_TASCA en segon pla, com si s'haguera iniciat amb \"&\"." - -#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" -#~ msgstr "Si no s'especifica ID_TASCA, s'aplicaran els atributs d'execuci? de" - -#~ msgid "job is used." -#~ msgstr "l'int?rpret d'ordres de la tasca actual." - -#~ msgid "For each NAME, the full pathname of the command is determined and" -#~ msgstr "Per a cada NOM, es determina i es recorda el nom del cam? d'acc?s" - -#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" -#~ msgstr "complet de l'ordre. Si s'especifica l'opci? -p , es fa servir" - -#~ msgid "full pathname of NAME, and no path search is performed. The -r" -#~ msgstr "CAM?_ACC?S com el nom del cam? complet de NOM, i no es realitzar?" - -#~ msgid "option causes the shell to forget all remembered locations. If no" -#~ msgstr "cap cerca de camins. L'opci? -r fa que l'int?rpret d'ordres oblide" - -#~ msgid "" -#~ "arguments are given, information about remembered commands is displayed." -#~ msgstr "" -#~ "totes les ubicacions del cam? d'acc?s. Si no s'hi d?na arguments, es\n" -#~ "mostrar? informaci? sobre els camins d'acc?s triats per les ordres." - -#~ msgid "Display helpful information about builtin commands. If PATTERN is" -#~ msgstr "Mostra informaci? d'utilitat sobre les ordres integrades. Si" - -#~ msgid "specified, gives detailed help on all commands matching PATTERN," -#~ msgstr "s'especifica PLANTILLA, s'hi d?na ajuda detallada sobre totes les" - -#~ msgid "otherwise a list of the builtins is printed." -#~ msgstr "" -#~ "ordres que coincidisquen amb PLANTILLA, altrament s'hi mostrar? una\n" -#~ "llista de les ordres integrades." - -#~ msgid "Display the history list with line numbers. Lines listed with" -#~ msgstr "Mostra el llistat de l'hist?ric de manera numerada. Les l?nies qu?" - -#~ msgid "with a `*' have been modified. Argument of N says to list only" -#~ msgstr "" -#~ "han sigut modificades s?n llistades amb el signe \"*\". El par?metre" - -#~ msgid "the last N lines. The -c option causes the history list to be" -#~ msgstr "" -#~ "N mostra les darreres N l?nies. L'opci? -c fa que es buide l'hist?ric" - -#~ msgid "" -#~ "cleared by deleting all of the entries. The `-w' option writes out the" -#~ msgstr "" -#~ "esborrant totes les seues entrades. L'opci? \"-w\" escriu l'hist?ric" - -#~ msgid "" -#~ "current history to the history file; `-r' means to read the file and" -#~ msgstr "" -#~ "actual al fitxer d'hist?ric; d'altra banda, l'opci? \"-r\" llegeix el" - -#~ msgid "append the contents to the history list instead. `-a' means" -#~ msgstr "" -#~ "fitxer i afegeix els continguts a l'hist?ric. L'opci? \"-a\" afegeix" - -#~ msgid "to append history lines from this session to the history file." -#~ msgstr "les l?nies de l'hist?ric d'aquesta sessi? al fitxer de l'hist?ric." - -#~ msgid "Argument `-n' means to read all history lines not already read" -#~ msgstr "" -#~ "Amb el par?metre \"-n\" es llegeix totes les l?nies de l'hist?ric que" - -#~ msgid "from the history file and append them to the history list. If" -#~ msgstr "encara no hagen sigut llegides del fitxer d'hist?ric i l'afegeix a" - -#~ msgid "FILENAME is given, then that is used as the history file else" -#~ msgstr "la llista de l'hist?ric. Si s'especifica FITXER, aquest es far?" - -#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." -#~ msgstr "" -#~ "servir com el fitxer d'hist?ric, altrament s'utilitzar? el valor de\n" -#~ "$HISTFILE, si en t?, i sin? es mirar? en ~/.bash_history." - -#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" -#~ msgstr "Si s'especifica l'opci? \"-s\", els PAR?METRES que no s?n opcions" - -#~ msgid "the history list as a single entry. The -p option means to perform" -#~ msgstr "" -#~ "seran afegits a l'hist?ric com una entrada ?nica. Amb l'opci? \"-p\"" - -#~ msgid "" -#~ "history expansion on each ARG and display the result, without storing" -#~ msgstr "" -#~ "es realitza una expansi? de l'hist?ric en cada PAR?METRE i mostra el " - -#~ msgid "anything in the history list." -#~ msgstr "resultat, sense al?ar res en l'hist?ric." - -#~ msgid "Lists the active jobs. The -l option lists process id's in addition" -#~ msgstr "Llista les tasques actives. Amb l'opci? \"-l\" es llista els" - -#~ msgid "to the normal information; the -p option lists process id's only." -#~ msgstr "" -#~ "identificadors de proc?s a m?s de la informaci? normal; amb l'opci? \n" -#~ "\"-p\" es llista nom?s els identificadors de proc?s." - -#~ msgid "" -#~ "If -n is given, only processes that have changed status since the last" -#~ msgstr "Si s'especifica \"-n\", nom?s s'imprimeixen els processos que hagen" - -#~ msgid "" -#~ "notification are printed. JOBSPEC restricts output to that job. The" -#~ msgstr "" -#~ "canviat el seu estat despr?s del seu darrer av?s.\n" -#~ "ID_TASCA restringeix que es mostre una tasca particular." - -#~ msgid "-r and -s options restrict output to running and stopped jobs only," -#~ msgstr "" -#~ "Amb les opcions \"-r\" i \"-s\" es restringeix nom?s la impressi? de" - -#~ msgid "respectively. Without options, the status of all active jobs is" -#~ msgstr "les tasques actives i aturades, respectivamente. Sense cap opci?," - -#~ msgid "" -#~ "printed. If -x is given, COMMAND is run after all job specifications" -#~ msgstr "" -#~ "es mostren l'estat de totes les tasques actives Si s'especifica\n" -#~ "\"-X\" s'executa ORDRE despr?s de que totes les especificacions de" - -#~ msgid "" -#~ "that appear in ARGS have been replaced with the process ID of that job's" -#~ msgstr "" -#~ "tasca que apareixen en PAR?METRES hagen sigut reempla?ades pel proc?s" - -#~ msgid "process group leader." -#~ msgstr "ID del proc?s de la tasca mestressa del grup." - -#~ msgid "Removes each JOBSPEC argument from the table of active jobs." -#~ msgstr "" -#~ "Suprimeix cada par?metre de ID_TASCA de la taula de tasques actives." - -#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" -#~ msgstr "" -#~ "Envia el SENYAL als processos especificats pel seu PID o pel seu nom" - -#~ msgid "" -#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" -#~ msgstr "de tasca. Si no s'especifica el SENYAL, aleshores s'assumeix" - -#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" -#~ msgstr "SIGTERM. Amb un par?metre de \"-l\" es llista els noms de les" - -#~ msgid "be signal numbers for which names should be listed. Kill is a shell" -#~ msgstr "" -#~ "senyals; si hi ha un par?metre despr?s de l'opci? \"-l\", es mostra\n" -#~ "el valor num?ric del n?mero de senyal. L'ordre ?kill? ?s " - -#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" -#~ msgstr "integrada de l'int?rpret per dues raons: permet fer servir els" - -#~ msgid "process IDs, and, if you have reached the limit on processes that" -#~ msgstr "" -#~ "identificadors de tasca en voltes dels identificadors de proc?s i, si" - -#~ msgid "" -#~ "you can create, you don't have to start a process to kill another one." -#~ msgstr "" -#~ "no heu excedit el l?mit de processos que pots crear-hi, no heu\n" -#~ "d'iniciar un altre proc?s per a finalitzar un altre." - -#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" -#~ msgstr "Cada PARAMETRE ?s una expressi? aritm?tica per a avaluar-se." - -#~ msgid "is done in long integers with no check for overflow, though division" -#~ msgstr "" -#~ "L'avaluaci? es fa amb enters long sense control de sobreeiximent, si" - -#~ msgid "by 0 is trapped and flagged as an error. The following list of" -#~ msgstr "" -#~ "b? la divisi? per 0 ?s capturada i marcada com un error. La seg?ent" - -#~ msgid "operators is grouped into levels of equal-precedence operators." -#~ msgstr "llista d'operadors s'agrupa dins del mateix nivell de preced?ncia." - -#~ msgid "The levels are listed in order of decreasing precedence." -#~ msgstr "La llista dels nivells est? ordenada de manera decreixent." - -#~ msgid "\t-, +\t\tunary minus, plus" -#~ msgstr "\t-, +\t\tunari minus, m?s" - -#~ msgid "\t!, ~\t\tlogical and bitwise negation" -#~ msgstr "\t!, ~\t\tnegaci? l?gica i bin?ria" - -#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" -#~ msgstr "\t*, /, %\t\tmultiplicaci?, divisi?, restant" - -#~ msgid "\t+, -\t\taddition, subtraction" -#~ msgstr "\t+, -\t\taddici?, substracci?" - -#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" -#~ msgstr "\t<<, >>\t\tdecalaments bin?ries dreta i esquerra" - -#~ msgid "\t<=, >=, <, >\tcomparison" -#~ msgstr "\t<=, >=, <, >\tcomparaci?" - -#~ msgid "\t==, !=\t\tequality, inequality" -#~ msgstr "\t==, !=\t\tequival?ncia, inequival?ncia" - -#~ msgid "\t&\t\tbitwise AND" -#~ msgstr "\t&\t\tAND binari" - -#~ msgid "\t^\t\tbitwise XOR" -#~ msgstr "\t^\t\tXOR binari" - -#~ msgid "\t|\t\tbitwise OR" -#~ msgstr "\t|\t\tOR binari" - -#~ msgid "\t&&\t\tlogical AND" -#~ msgstr "\t&&\t\tAND l?gic" - -#~ msgid "\t||\t\tlogical OR" -#~ msgstr "\t||\t\tOR l?gic" - -#~ msgid "\texpr ? expr : expr" -#~ msgstr "\texpr ? expr : expr" - -#~ msgid "\t\t\tconditional expression" -#~ msgstr "\t\t\texpressi? condicional" - -#~ msgid "\t=, *=, /=, %=," -#~ msgstr "\t=, *=, /=, %=," - -#~ msgid "\t+=, -=, <<=, >>=," -#~ msgstr "\t+=, -=, <<=, >>=," - -#~ msgid "\t&=, ^=, |=\tassignment" -#~ msgstr "\t&=, ^=, |=\tassignaci?" - -#~ msgid "is replaced by its value (coerced to a long integer) within" -#~ msgstr "" -#~ "nom de la variable ?s reempla?at pel seu valor (convertit for?osament" - -#~ msgid "an expression. The variable need not have its integer attribute" -#~ msgstr "" -#~ "en un enter long) dins d'una expressi?. No cal que la variable tinga" - -#~ msgid "turned on to be used in an expression." -#~ msgstr "" -#~ "activada el seu atribut d'enter per ser utilitzada en una expressi?." - -#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" -#~ msgstr "" -#~ "S'avaluen els operadors per ordre de preced?ncia. Les subexpressions" - -#~ msgid "parentheses are evaluated first and may override the precedence" -#~ msgstr "qu? que es troben dins dels par?ntesis s?n avaluades primer i poden" - -#~ msgid "rules above." -#~ msgstr "saltar-se les regles de preced?ncies esmentades." - -#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" -#~ msgstr "Si el darrer PARAMETRE avalua a 0, let retorna 1; altrament, es" - -#~ msgid "otherwise." -#~ msgstr "retorna 1." - -#~ msgid "One line is read from the standard input, and the first word is" -#~ msgstr "" -#~ "Es llegeix una l?nia des de l'entrada de dades est?ndard, i s'assigna" - -#~ msgid "" -#~ "assigned to the first NAME, the second word to the second NAME, and so" -#~ msgstr "la primera paraula al primer NOM, la segona paraula al segon NOM, i" - -#~ msgid "" -#~ "on, with leftover words assigned to the last NAME. Only the characters" -#~ msgstr "aix? successivament, assignant-se les ?ltimes paraules als ?ltims" - -#~ msgid "found in $IFS are recognized as word delimiters. The return code is" -#~ msgstr "NOMs. Nom?s es reconeixen com a delimitadors els car?cters que es" - -#~ msgid "" -#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" -#~ msgstr "" -#~ "troben en $IFS. El codi de retorn ?s zero, mentre no es trobe el fi" - -#~ msgid "" -#~ "line read is stored in the REPLY variable. If the -r option is given," -#~ msgstr "" -#~ "de fitxer (EOF). Si no s'especifica NOMs, s'al?a la l?nia llegida en" - -#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" -#~ msgstr "" -#~ "la variable REPLY. Si s'especifica l'opci? \"-r\", aix? vol dir que es" - -#~ msgid "the `-p' option is supplied, the string supplied as an argument is" -#~ msgstr "" -#~ "tracta d'una entrada de dades directa (\"raw data\"), i es desactiva la" - -#~ msgid "" -#~ "output without a trailing newline before attempting to read. If -a is" -#~ msgstr "" -#~ "barra invertida d'escapada. Si s'especifica l'opci? \"-p\", la cadena" - -#~ msgid "" -#~ "supplied, the words read are assigned to sequential indices of ARRAY," -#~ msgstr "especificada com a par?metre es mostra sense salts de l?nia abans" - -#~ msgid "starting at zero. If -e is supplied and the shell is interactive," -#~ msgstr "" -#~ "d'intentar llegir-la. Si s'especifica l'opci? \"-a\", s'assignen les" - -#~ msgid "readline is used to obtain the line." -#~ msgstr "" -#~ "paraules llegides a ?n ?ndex seq?encial de MATRIU, incialitzant a\n" -#~ "zero. Si s'especifica l'opci? \"-e\" i l'int?rpret d'ordres ?s\n" -#~ "interactiu, es fa servir \"readline\" per a obtindre la l?nia." - -#~ msgid "is omitted, the return status is that of the last command." -#~ msgstr "N. Si s'omet N, l'estat del retorn ?s el de la darrera ordre." - -#~ msgid " -a Mark variables which are modified or created for export." -#~ msgstr "" -#~ " -a Marca les variables modificades o creades per a exportar-les." - -#~ msgid " -b Notify of job termination immediately." -#~ msgstr " -b Avisa immediatament de la finalitzaci? d'una tasca." - -#~ msgid " -e Exit immediately if a command exits with a non-zero status." -#~ msgstr "" -#~ " -e Ix immediatament si una ordre ix amb un estat distint de zero." - -#~ msgid " -f Disable file name generation (globbing)." -#~ msgstr " -f Desactiva la generaci? de noms de fitxer (globbing)." - -#~ msgid " -h Remember the location of commands as they are looked up." -#~ msgstr " -h Recorda la ubicaci? de les ordres quan siguen buscades." - -#~ msgid "" -#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" -#~ msgstr "" -#~ " -i For?a l'int?rpret d'ordres el mode \"interactiu\". Aquest mode" - -#~ msgid " always read `~/.bashrc' on startup." -#~ msgstr " llegeix sempre ?~/.bashrc? en iniciar-se." - -#~ msgid " -k All assignment arguments are placed in the environment for a" -#~ msgstr "" -#~ " -k Ubica totes les assignacions de par?metres en l'entorn per una" - -#~ msgid " command, not just those that precede the command name." -#~ msgstr "" -#~ " ordre, no tan sols aquells que precedeix del nom de l'ordre." - -#~ msgid " -m Job control is enabled." -#~ msgstr " -m Activa el control de tasques." - -#~ msgid " -n Read commands but do not execute them." -#~ msgstr " -n Llegeix les ordres per? no els executa." - -#~ msgid " -o option-name" -#~ msgstr " -o nom-opci?" - -#~ msgid " Set the variable corresponding to option-name:" -#~ msgstr " Especifiqueu la variable corresponent per a nom-opci?:" - -#~ msgid " allexport same as -a" -#~ msgstr " allexport el mateix que -a" - -#~ msgid " braceexpand same as -B" -#~ msgstr " braceexpand el mateix que -B" - -#~ msgid " emacs use an emacs-style line editing interface" -#~ msgstr "" -#~ " emacs utilitza una interfa? d'edici? de l?nia de\n" -#~ " l'estil d'emacs." - -#~ msgid " errexit same as -e" -#~ msgstr " errexit el mateix que -e" - -#~ msgid " hashall same as -h" -#~ msgstr " hashall el mateix que -h" - -#~ msgid " histexpand same as -H" -#~ msgstr " histexpand el mateix que -H" - -#~ msgid " ignoreeof the shell will not exit upon reading EOF" -#~ msgstr "" -#~ " ignoreeof l'int?rpret d'ordres no terminar? fins llegir\n" -#~ " el fi de fitxer (EOF)." - -#~ msgid " interactive-comments" -#~ msgstr " interactive-comments" - -#~ msgid "" -#~ " allow comments to appear in interactive commands" -#~ msgstr "" -#~ " permet mostrar-se comentaris en les ordres\n" -#~ " interactives" - -#~ msgid " keyword same as -k" -#~ msgstr " keyword el mateix que -k" - -#~ msgid " monitor same as -m" -#~ msgstr " monitor el mateix que -m" - -#~ msgid " noclobber same as -C" -#~ msgstr " noclobber el mateix que -C" - -#~ msgid " noexec same as -n" -#~ msgstr " noexec el mateix que -n" - -#~ msgid " noglob same as -f" -#~ msgstr " noglob el mateix que -f" - -#~ msgid " notify save as -b" -#~ msgstr " notify el mateix que -b" - -#~ msgid " nounset same as -u" -#~ msgstr " nounset el mateix que -u" - -#~ msgid " onecmd same as -t" -#~ msgstr " onecmd el mateix que -t" - -#~ msgid " physical same as -P" -#~ msgstr " physical el mateix que -P" - -#~ msgid "" -#~ " posix change the behavior of bash where the default" -#~ msgstr "" -#~ " posix canvia el comportament de bash en l'operaci?" - -#~ msgid "" -#~ " operation differs from the 1003.2 standard to" -#~ msgstr " per defecte de l'est?ndard 1003.2 per a" - -#~ msgid " match the standard" -#~ msgstr " coincidir amb l'est?ndard" - -#~ msgid " privileged same as -p" -#~ msgstr " privileged el mateix que -p" - -#~ msgid " verbose same as -v" -#~ msgstr " verbose el mateix que -v" - -#~ msgid " vi use a vi-style line editing interface" -#~ msgstr "" -#~ " vi utilitza una intefa? d'edici? de l?nia de\n" -#~ " l'estil de ?vi?" - -#~ msgid " xtrace same as -x" -#~ msgstr " xtrace el mateix que -x" - -#~ msgid "" -#~ " -p Turned on whenever the real and effective user ids do not match." -#~ msgstr "" -#~ " -p S'activa quan no coincideixen els identificadors d'usuari real \n" -#~ " i efectiu." - -#~ msgid " Disables processing of the $ENV file and importing of shell" -#~ msgstr " Desactiva el proc?s del fitxer $ENV i la importaci? de les" - -#~ msgid "" -#~ " functions. Turning this option off causes the effective uid and" -#~ msgstr " funcions de l'int?rpret d'ordres. Si es desactiva aquesta" - -#~ msgid " gid to be set to the real uid and gid." -#~ msgstr "" -#~ " opci?, s'estableix l'identificador d'usuari (uid) i\n" -#~ " l'identificador de grup (gid) efectius per l'uid i gid reals." - -#~ msgid " -t Exit after reading and executing one command." -#~ msgstr " -t Ix despr?s de llegir i executar una ordre." - -#~ msgid " -u Treat unset variables as an error when substituting." -#~ msgstr "" -#~ " -u Considerar les variables no inicialitzades com un error quan\n" -#~ " se substitu?sca." - -#~ msgid " -v Print shell input lines as they are read." -#~ msgstr "" -#~ " -v Imprimeix les l?nies d'entrada de dades de l'int?rpret\n" -#~ " d'ordres mentre es llegeixen." - -#~ msgid " -x Print commands and their arguments as they are executed." -#~ msgstr "" -#~ " -x Imprimeix les ordres i els seus par?metres mentre s'executen." - -#~ msgid " -B the shell will perform brace expansion" -#~ msgstr " -B l'int?rpret d'ordres realitzar? una expansi? de claus." - -#~ msgid " -H Enable ! style history substitution. This flag is on" -#~ msgstr " -H Activa l'estil ! en la substituci? de l'hist?ric. Aquest" - -#~ msgid " by default." -#~ msgstr " senyalador est? marcat per defecte." - -#~ msgid " -C If set, disallow existing regular files to be overwritten" -#~ msgstr " -C Evita que els fitxers regulars siguen sobreescrits per la" - -#~ msgid " by redirection of output." -#~ msgstr " redirecci? de l'eixida de dades." - -#~ msgid " -P If set, do not follow symbolic links when executing commands" -#~ msgstr "" -#~ " -P No rastreja els enlla?os simb?lics quan s'executa ordres com " - -#~ msgid " such as cd which change the current directory." -#~ msgstr " per exemple cd que canvia el directori actual." - -#~ msgid "Using + rather than - causes these flags to be turned off. The" -#~ msgstr "" -#~ "Si feu servir el signe \"+\" en voltes del signe \"-\" desmarcareu els\n" -#~ "senyaladors. Tamb? es poden utilitzar els senyaladors des de la" - -#~ msgid "flags can also be used upon invocation of the shell. The current" -#~ msgstr "invocaci? de l'int?rpret d'ordres. Es pot trobar la configuraci?" - -#~ msgid "" -#~ "set of flags may be found in $-. The remaining n ARGs are positional" -#~ msgstr "actual dels senyaladors en $-. Els restants PAR?METRES n s?n" - -#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" -#~ msgstr "" -#~ "par?metres posicionals i estan assignats, en ordre, a $1, $2, ... $n." - -#~ msgid "ARGs are given, all shell variables are printed." -#~ msgstr "" -#~ "Si no s'especifiquen els PAR?METRES, es mostraran totes les variables de\n" -#~ "l'int?rpret d'ordres." - -#~ msgid "For each NAME, remove the corresponding variable or function. Given" -#~ msgstr "" -#~ "Esborra la variable o funci? corresponent per a cada NOM. Amb l'opci? " - -#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," -#~ msgstr "" -#~ "\"-v\", ?unset? opera nom?s en les variables. Amb el senyalador \"-f\"," - -#~ msgid "unset will only act on functions. With neither flag, unset first" -#~ msgstr "nom?s en funcions. Amb cap dels dos senyaladors, ?unset? primer" - -#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" -#~ msgstr "" -#~ "intentar? eliminar una variable, i si en falla, aleshores ho intenta" - -#~ msgid "" -#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" -#~ msgstr "" -#~ "amb una funci?. Algunes variables (aix? com CAMI_ACCES i IFS) no es" - -#~ msgid "see readonly." -#~ msgstr "poden esborrar (veure l'opci? \"readonly\")." - -#~ msgid "NAMEs are marked for automatic export to the environment of" -#~ msgstr "" -#~ "S'assenyalen els NOMs per a exportar-los autom?ticament a l'entorn de " - -#~ msgid "subsequently executed commands. If the -f option is given," -#~ msgstr "" -#~ "les ordres executades subseq?entment. Si s'especifica l'opci? \"-f\", " - -#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" -#~ msgstr "" -#~ "els NOMs fan refer?ncia a les funcions. Si no s'especifica NOMs, o si " - -#~ msgid "is given, a list of all names that are exported in this shell is" -#~ msgstr "" -#~ "s'especifica \"-p\", es mostra una llista de tots els noms exportats cap " - -#~ msgid "printed. An argument of `-n' says to remove the export property" -#~ msgstr "aquest int?rpret d'ordres. Amb \"-n\" s'esborra les propietats " - -#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" -#~ msgstr "d'exportaci? per als NOMs subseq?ents. Amb \"--\" s'atura el " - -#~ msgid "processing." -#~ msgstr "tractament subseq?ent de les opcions." - -#~ msgid "" -#~ "The given NAMEs are marked readonly and the values of these NAMEs may" -#~ msgstr "" -#~ "Els NOMs especificats es marquen amb l'atribut de nom?s lectura, els" - -#~ msgid "not be changed by subsequent assignment. If the -f option is given," -#~ msgstr "" -#~ "valors dels quals no poden ser canviats per assignacions subseq?ents." - -#~ msgid "then functions corresponding to the NAMEs are so marked. If no" -#~ msgstr "" -#~ "Si s'especifica l'opci? \"-f\", aleshores les funcions corresponents als" - -#~ msgid "" -#~ "arguments are given, or if `-p' is given, a list of all readonly names" -#~ msgstr "NOMs tamb? se'n marquen. Si no s'especifica par?metres, o si" - -#~ msgid "" -#~ "is printed. An argument of `-n' says to remove the readonly property" -#~ msgstr "" -#~ "s'especifica \"-p\", es mostra una llista de tots els noms amb l'atribut" - -#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" -#~ msgstr "de nom?s lectura. Amb l'opci? \"-n\" s'esborra l'atribut de nom?s" - -#~ msgid "an array variable. An argument of `--' disables further option" -#~ msgstr "" -#~ "lectura pels NOMs subseq?ents. Amb \"-a\" tracta cada NOM com una\n" -#~ "variable de matriu. Amb el par?metre \"--\" s'atura el tractament\n" -#~ "subseq?ent de les opcions." - -#~ msgid "not given, it is assumed to be 1." -#~ msgstr "Si no s'especifica N, s'assumeix el valor com a 1." - -#~ msgid "Read and execute commands from FILENAME and return. The pathnames" -#~ msgstr "Llegeix i executa ordres de FITXER i retorna. Es fan servir els" - -#~ msgid "in $PATH are used to find the directory containing FILENAME." -#~ msgstr "camins d'acc?s de $PATH per a trobar el directori que cont? FITXER." - -#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" -#~ msgstr "" -#~ "Susp?n l'execuci? d'aquest int?rpret d'ordres fins que reba una senyal" - -#~ msgid "signal. The `-f' if specified says not to complain about this" -#~ msgstr "" -#~ "SIGCONT. Si s'especifica \"-f\" no es mostrar? cap missatge d'av?s de" - -#~ msgid "being a login shell if it is; just suspend anyway." -#~ msgstr "" -#~ "si l'int?rpret ?s un d'inici de sessi? (shell login); simplement ho susp?" -#~ "n de\n" -#~ "qualsevol manera." - -#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" -#~ msgstr "Ix amb l'estat de 0 (cert) o 1 (fals) depenent de l'avaluaci? de " - -#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" -#~ msgstr "l'EXPRESSIO. Les expressions poden ser un?ries o bin?ries. Les" - -#~ msgid "expressions are often used to examine the status of a file. There" -#~ msgstr "" -#~ "expressions un?ries sovint es fan servir per a examinar l'estat d'un" - -#~ msgid "are string operators as well, and numeric comparison operators." -#~ msgstr "fitxer. Tamb? hi ha operadors de cadenes i de comparaci? num?rica." - -#~ msgid "File operators:" -#~ msgstr "Operadors de fitxer:" - -#~ msgid " -b FILE True if file is block special." -#~ msgstr " -b FITXER Cert si el fitxer ?s un bloc especial." - -#~ msgid " -c FILE True if file is character special." -#~ msgstr " -c FITXER Cert si el fitxer ?s un car?cter especial." - -#~ msgid " -d FILE True if file is a directory." -#~ msgstr " -d FITXER Cert si el fitxer ?s un directori." - -#~ msgid " -e FILE True if file exists." -#~ msgstr " -e FITXER Cert si el fitxer existeix." - -#~ msgid " -f FILE True if file exists and is a regular file." -#~ msgstr "" -#~ " -f FITXER Cert si el fitxer existeix i ?s un fitxer normal." - -#~ msgid " -g FILE True if file is set-group-id." -#~ msgstr " -g FITXER Cert si el fitxer ?s set-group-id." - -#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." -#~ msgstr "" -#~ " -h FITXER Cert si el fitxer ?s un enlla? simb?lic.\n" -#~ " Utilitzeu \"-L\"." - -#~ msgid " -L FILE True if file is a symbolic link." -#~ msgstr " -L FITXER Cert si el fitxer ?s un enlla? simb?lic." - -#~ msgid " -k FILE True if file has its \"sticky\" bit set." -#~ msgstr "" -#~ " -k FITXER Cert si el fitxer t? activat el seu bit \"sticky\"." - -#~ msgid " -p FILE True if file is a named pipe." -#~ msgstr " -p FITXER Cert si el fitxer ?s un conducte anomenat." - -#~ msgid " -r FILE True if file is readable by you." -#~ msgstr " -r FITXER Cert si podeu llegir el fitxer." - -#~ msgid " -s FILE True if file exists and is not empty." -#~ msgstr " -s FITXER Cert si el fitxer existeix i no ?s buit." - -#~ msgid " -S FILE True if file is a socket." -#~ msgstr " -S FITXER Cert si el fitxer ?s un s?col." - -#~ msgid " -t FD True if FD is opened on a terminal." -#~ msgstr " -t FD Cert si FD ?s obert en una terminal." - -#~ msgid " -u FILE True if the file is set-user-id." -#~ msgstr " -u FITXER Cert si el fitxer ?s set-user-id." - -#~ msgid " -w FILE True if the file is writable by you." -#~ msgstr " -w FITXER Cert si podeu escriure el fitxer." - -#~ msgid " -x FILE True if the file is executable by you." -#~ msgstr " -w FITXER Cert si podeu escriure el fitxer." - -#~ msgid " -O FILE True if the file is effectively owned by you." -#~ msgstr " -O FITXER Cert si sou el propietari del fitxer." - -#~ msgid "" -#~ " -G FILE True if the file is effectively owned by your group." -#~ msgstr " -G FITXER Cert si sou del grup propietari del fitxer." - -#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" -#~ msgstr "" -#~ " FITXER1 -nt FITXER2\n" -#~ " Cert si fitxer1 ?s tan recent com fitxer2" - -#~ msgid " modification date) file2." -#~ msgstr " (d'acord amb les dates d'?ltima modificaci?)." - -#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." -#~ msgstr "" -#~ " FITXER1 -ot FITXER2\n" -#~ " Cert si fitxer1 ?s tan antic com fitxer2." - -#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." -#~ msgstr "" -#~ " FITXER1 -ef FITXER2\n" -#~ " Cert si fitxer 1 ?s un enlla? fort cap a fitxer2." - -#~ msgid "String operators:" -#~ msgstr "Operadors de cadena:" - -#~ msgid " -z STRING True if string is empty." -#~ msgstr " -z CADENA Cert si la cadena ?s bu?da." - -#~ msgid " -n STRING" -#~ msgstr " -n CADENA" - -#~ msgid " STRING True if string is not empty." -#~ msgstr " CADENA Cert si la cadena no ?s bu?da." - -#~ msgid " STRING1 = STRING2" -#~ msgstr " CADENA1 = CADENA2" - -#~ msgid " True if the strings are equal." -#~ msgstr " Cert si les cadenes s?n iguals." - -#~ msgid " STRING1 != STRING2" -#~ msgstr " CADENA1 != CADENA2" - -#~ msgid " True if the strings are not equal." -#~ msgstr " Cert si les cadenes s?n diferents." - -#~ msgid " STRING1 < STRING2" -#~ msgstr " CADENA1 < CADENA2" - -#~ msgid "" -#~ " True if STRING1 sorts before STRING2 lexicographically" -#~ msgstr "" -#~ " Cert si CADENA1 precedeix alfab?ticament CADENA2." - -#~ msgid " STRING1 > STRING2" -#~ msgstr " CADENA1 > CADENA2" - -#~ msgid "" -#~ " True if STRING1 sorts after STRING2 lexicographically" -#~ msgstr "" -#~ " Cert si CADENA1 poscedeix alfab?ticament CADENA2." - -#~ msgid "Other operators:" -#~ msgstr "Altres operadors:" - -#~ msgid " ! EXPR True if expr is false." -#~ msgstr " ! EXPR Cert si l'expressi? ?s falsa." - -#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." -#~ msgstr " EXPR1 -a EXPR2 Cert si ambdues expressions s?n certes." - -#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." -#~ msgstr " EXPR1 -o EXPR2 Cert si cap d'ambdues expresi?ns s?n certes." - -#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," -#~ msgstr " arg1 OP arg2 C?lcul aritm?tic. OP ?s una de les seg?ents" - -#~ msgid " -lt, -le, -gt, or -ge." -#~ msgstr " opcions: -eq, -ne, -lt, -le, -gt, or -ge." - -#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," -#~ msgstr "Els operadors aritm?tics binaris retornen un valor de cert si " - -#~ msgid "" -#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" -#~ msgstr "" -#~ "PARAMETRE1 ?s 'igual', 'diferent', 'menys que', 'menys o igual que'," - -#~ msgid "than ARG2." -#~ msgstr "'m?s que', o 'm?s o igual que', el PARAMETRE2." - -#~ msgid "This is a synonym for the \"test\" builtin, but the last" -#~ msgstr "Es tracta del sin?nim de l'ordre integrada ?test?, per? el darrer " - -#~ msgid "the shell." -#~ msgstr "processos des de l'int?rpret d'ordres." - -#~ msgid "The command ARG is to be read and executed when the shell receives" -#~ msgstr "L'ordre especificada en PARAMETRE s'ha de llegir i executar quan" - -#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" -#~ msgstr "l'int?rpret d'ordres rep alguna senyal de SIGNAL_SPEC. Si s'omet" - -#~ msgid "reset to their original values. If ARG is the null string each" -#~ msgstr "PARAMETRE s'inicialitzen totes les senyals especificades als seus" - -#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." -#~ msgstr "corresponents valors originals Si el PARAMETRE ?s una cadena buida" - -#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" -#~ msgstr "" -#~ "l'int?rpret, i les ordres que els invoquen, ignoren cada SIGNAL_SPEC." - -#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" -#~ msgstr "Si s'especifica SIGNAL_SPEC com EXIT(0), s'executa l'ordre" - -#~ msgid "command. If ARG is `-p' then the trap commands associated with" -#~ msgstr "" -#~ "especificada en PARAMETRE despr?s de la finalitzaci? de la sessi? de\n" -#~ "l'int?rpret d'ordres. Si s'especifica DEBUG en SIGNAL_SPEC, s'executa" - -#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" -#~ msgstr "" -#~ "l'ordre especificada en PARAMETRE despr?s de la finalitzaci? de la\n" -#~ "sessi? de l'int?rpret d'ordres. Si s'especifica \"-p\" en PARAMETRE" - -#~ msgid "only `-p' is given, trap prints the list of commands associated with" -#~ msgstr "" -#~ "aleshores es mostren les ordres de ?trap? associades amb cadascuna de\n" -#~ "les especificacions del SENYAL. Si no s'especifica cap par?metre," - -#~ msgid "" -#~ "each signal number. SIGNAL_SPEC is either a signal name in " -#~ msgstr "" -#~ "?trap? mostra una llista d'ordres associades amb cadascun dels n?meros\n" -#~ "de senyal. L'especificaci? del SENYAL pot ser b? un nom de senyal" - -#~ msgid "" -#~ "or a signal number. `trap -l' prints a list of signal names and their" -#~ msgstr "" -#~ "especificat en , b? tindre un valor num?ric. L'ordre ?trap\n" -#~ "-l? mostra una llista dels noms de senyal i els seus corresponents" - -#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" -#~ msgstr "n?meros. Observeu que una senyal pot ser lliurada a l'int?rpret" - -#~ msgid "with \"kill -signal $$\"." -#~ msgstr "d'ordres amb ?kill -signal $$?." - -#~ msgid "For each NAME, indicate how it would be interpreted if used as a" -#~ msgstr "" -#~ "Per a cada NOM, indica com s'hauria d'interpretar si es fa servir com " - -#~ msgid "If the -t option is used, returns a single word which is one of" -#~ msgstr "" -#~ "Si es fa servir l'opci? \"-t\", retorna una paraula ?nica que pot ser" - -#~ msgid "" -#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" -#~ msgstr "" -#~ "\"alias\", \"keyword\", \"function\", \"builtin\", \"file\" o \"\", si un " -#~ "NOM ?s" - -#~ msgid "" -#~ "alias, shell reserved word, shell function, shell builtin, disk file," -#~ msgstr "" -#~ "un ?lies, una paraula reservada, una funci?, una ordre integrada, un" - -#~ msgid "or unfound, respectively." -#~ msgstr "fitxer del disc o no trobat, respectivament." - -#~ msgid "If the -p flag is used, either returns the name of the disk file" -#~ msgstr "" -#~ "Si es fa servir l'opci? \"-p\", o b? retorna el nom del fitxer del disc" - -#~ msgid "that would be executed, or nothing if -t would not return `file'." -#~ msgstr "" -#~ "que es podria executar, o b? no retorna res si l'opci? \"-t\" no\n" -#~ "retornara \"file\"." - -#~ msgid "If the -a flag is used, displays all of the places that contain an" -#~ msgstr "" -#~ "Si es fa servir el senyalador \"-a\", mostra totes les ubicacions que" - -#~ msgid "" -#~ "executable named `file'. This includes aliases and functions, if and" -#~ msgstr "" -#~ "contenen un executable anomenat \"file\". Aix? inclou per a ?lies i" - -#~ msgid "only if the -p flag is not also used." -#~ msgstr "" -#~ "funcions si, i nom?s si, el senyalador \"-p\" tampoc no es fa servir." - -#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," -#~ msgstr "" -#~ "L'ordre integrada ?type? accepta que s'especifique \"-all\", \"-path\", i" - -#~ msgid "respectively." -#~ msgstr "" -#~ "\"-type\", per a les opcions de \"-a\", \"-p\", i \"-t\", respectivament." - -#~ msgid "Ulimit provides control over the resources available to processes" -#~ msgstr "L'ordre integrada ?ulimit? inclou el control sobre els recursos" - -#~ msgid "started by the shell, on systems that allow such control. If an" -#~ msgstr "disponibles als processos iniciats per l'int?rpret, en sistemes que" - -#~ msgid "option is given, it is interpreted as follows:" -#~ msgstr "" -#~ "ho permeten. Si s'especifica una opci?, ser? especificada com\n" -#~ "segueix:" - -#~ msgid " -S\tuse the `soft' resource limit" -#~ msgstr " -S\tutilitza el l?mit dels recursos l?gics" - -#~ msgid " -H\tuse the `hard' resource limit" -#~ msgstr " -H\tutilitza el l?mit dels recursos de maquinari" - -#~ msgid " -a\tall current limits are reported" -#~ msgstr " -a\tmostra tots els l?mits actuals" - -#~ msgid " -c\tthe maximum size of core files created" -#~ msgstr "" -#~ " -c\tlimita la grand?ria m?xima dels fitxers de bolcat de mem?ria" - -#~ msgid " -d\tthe maximum size of a process's data segment" -#~ msgstr " -d\tlimita la grand?ria m?xima d'un segment de proc?s de dades" - -#~ msgid " -m\tthe maximum resident set size" -#~ msgstr " -m\tlimita la grand?ria m?xima d'una variable resident" - -#~ msgid " -s\tthe maximum stack size" -#~ msgstr " -s\tlimita la grand?ria m?xima de la pila" - -#~ msgid " -t\tthe maximum amount of cpu time in seconds" -#~ msgstr " -t\tlimita el temps m?xim d'an?lisi per la UCP en segons" - -#~ msgid " -f\tthe maximum size of files created by the shell" -#~ msgstr " -f\tlimita la grand?ria d'un fitxer creat per l'int?rpret" - -#~ msgid " -p\tthe pipe buffer size" -#~ msgstr " -p\tlimita la grand?ria de la mem?ria interm?dia d'un conducte" - -#~ msgid " -n\tthe maximum number of open file descriptors" -#~ msgstr " -n\tlimita el nombre m?xim utilitzable de descriptors de fitxer" - -#~ msgid " -u\tthe maximum number of user processes" -#~ msgstr " -u\tlimita el nombre m?xim de processos per usuari" - -#~ msgid " -v\tthe size of virtual memory" -#~ msgstr " -v\tlimita la grand?ria de la mem?ria virtual" - -#~ msgid "If LIMIT is given, it is the new value of the specified resource." -#~ msgstr "Si s'especifica LIMIT, aquest ser? el nou valor del recurs " - -#~ msgid "Otherwise, the current value of the specified resource is printed." -#~ msgstr "especificat. Altrament, mostra el valor actual del recurs" - -#~ msgid "If no option is given, then -f is assumed. Values are in 1k" -#~ msgstr "especificat. Si no s'especifica cap opci?, aleshores s'assumeix" - -#~ msgid "increments, except for -t, which is in seconds, -p, which is in" -#~ msgstr "" -#~ "l'opci? \"-f\". Els valors s'especifiquen en increments de 1k, tret del" - -#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" -#~ msgstr "" -#~ "cas de l'opci? \"-t\", que es en segons, de l'opci? \"-p\", que es tracta" - -#~ msgid "processes." -#~ msgstr "" -#~ "d'increments de 512 octets, i de l'opci? \"-u\", que ?s un recompte\n" -#~ "num?ric de processos." - -#~ msgid "" -#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" -#~ msgstr "" -#~ "La m?scara dels modes d'acc?s durant la creaci? d'un fitxer ?s MODE." - -#~ msgid "" -#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" -#~ msgstr "" -#~ "Si s'omet MODE, o si s'especifica l'opci? \"-S\", es mostra el valor" - -#~ msgid "" -#~ "option makes the output symbolic; otherwise an octal number is output." -#~ msgstr "" -#~ "actual de la m?scara. Amb l'opci? \"-S\" es mostra de manera simb?lica;" - -#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," -#~ msgstr "" -#~ "d'altra manera l'eixida de dades ?s n?meros octals. Si MODE comen?a" - -#~ msgid "" -#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." -#~ msgstr "" -#~ "per un d?git, aquest ser? interpretat com un n?mero octal, altrament" - -#~ msgid "" -#~ "Wait for the specified process and report its termination status. If" -#~ msgstr "s'accepten els valors simb?lics de ?chmod? (veure ?man?, secci? 1)." - -#~ msgid "N is not given, all currently active child processes are waited for," -#~ msgstr "Espera la fi d'execuci? d'un proc?s especificat i informa el seu" - -#~ msgid "and the return code is zero. N may be a process ID or a job" -#~ msgstr "" -#~ "estat de fi d'execuci?. Si no s'especifica N, s'espera per tots els" - -#~ msgid "specification; if a job spec is given, all processes in the job's" -#~ msgstr "" -#~ "processos fills actuals, i el codi de retorn ?s zero. La variable N" - -#~ msgid "pipeline are waited for." -#~ msgstr "" -#~ "pot ser un IDentificador de proc?s o l'especificaci? d'una tasca; si\n" -#~ "s'especifica una especificaci? de tasca, s'esperen per tots els\n" -#~ "processos dels conductes." - -#~ msgid "and the return code is zero. N is a process ID; if it is not given," -#~ msgstr "i el codi de retorn ?s zero. El par?metre N ?s un IDentificador de" - -#~ msgid "all child processes of the shell are waited for." -#~ msgstr "" -#~ "proc?s; si aquest no s'hi especifica, s'espera per tots els processos\n" -#~ "fills de l'int?rpret d'ordres." - -#~ msgid "The `for' loop executes a sequence of commands for each member in a" -#~ msgstr "" -#~ "L'ordre de repetici? ?for? executa una seq??ncia d'ordres per a cada" - -#~ msgid "" -#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" -#~ msgstr "" -#~ "item de la llista. Si no s'especifica l'expressi? \"in WORDS...;\"," - -#~ msgid "" -#~ "assumed. For each element in WORDS, NAME is set to that element, and" -#~ msgstr "" -#~ "aleshores es fa servir el contingut de \"$@\". Per a cada element que" - -#~ msgid "the COMMANDS are executed." -#~ msgstr "" -#~ "hi ha en PARAULES, s'inicialitza NOM a aquest element, i s'executen\n" -#~ "les ORDRES." - -#~ msgid "The WORDS are expanded, generating a list of words. The" -#~ msgstr "S'expandeix les PARAULES, generant-se una llista de paraules. Es" - -#~ msgid "set of expanded words is printed on the standard error, each" -#~ msgstr "mostra el conjunt de les paraules expandides per l'eixida d'error" - -#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" -#~ msgstr "" -#~ "est?ndard, precedit d'un n?mero. Si no s'especifica l'expressi? \"in" - -#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" -#~ msgstr "WORDS\", es fa servir el contingut de \"$@\". Aleshores s'exhibeix" - -#~ msgid "from the standard input. If the line consists of the number" -#~ msgstr "l'indicador de PS3 i es llegeix la l?nia des de l'entrada de dades" - -#~ msgid "corresponding to one of the displayed words, then NAME is set" -#~ msgstr "" -#~ "est?ndard. Si la l?nia consisteix d'un n?mero corresponent a una de" - -#~ msgid "to that word. If the line is empty, WORDS and the prompt are" -#~ msgstr "les paraules exhibides, aleshores el valor de la variable NOM" - -#~ msgid "redisplayed. If EOF is read, the command completes. Any other" -#~ msgstr "" -#~ "s'inicialitza amb aquesta paraula. Si la l?nia ?s buida, la variable" - -#~ msgid "value read causes NAME to be set to null. The line read is saved" -#~ msgstr "" -#~ "PARAULES i l'indicador s'exhibeixen una altra vegada. Si es detecta" - -#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" -#~ msgstr "" -#~ "un la fi del fitxer (EOF), l'ordre termina. Si es llegeix qualsevol" - -#~ msgid "until a break or return command is executed." -#~ msgstr "" -#~ "altre valor, s'inicialitzar? el valor de NOM com nul. La l?nia\n" -#~ "llegida s'al?a en la variable REPLY. Les ordres al?ades en el\n" -#~ "par?metre ORDRES s'executa despr?s de cada selecci? fins que s'execute\n" -#~ "una ordre de ?break? o ?return?." - -#~ msgid "`|' is used to separate multiple patterns." -#~ msgstr "" -#~ "concord?ncia del valor en PARAULA amb del valor en PATRO. Es fa\n" -#~ "servir el signe \"|\" per a separar m?ltiples patrons." - -#~ msgid "" -#~ "The if COMMANDS are executed. If the exit status is zero, then the then" -#~ msgstr "S'executen els ORDRES ?if?. Si l'estat d'eixida ?s zero, aleshores" - -#~ msgid "" -#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" -#~ msgstr "" -#~ "s'executen les ORDRES ?then?. Altrament, s'executen cadascun de les" - -#~ msgid "" -#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" -#~ msgstr "ORDRES de ?elif?, i si l'estat d'eixida ?s zero, les corresponents" - -#~ msgid "" -#~ "are executed and the if command completes. Otherwise, the else COMMANDS" -#~ msgstr "ORDRES de ?else? s'executen, si n'hi han. L'estat d'eixida ?s el" - -#~ msgid "" -#~ "are executed, if present. The exit status is the exit status of the last" -#~ msgstr "corresponent de la darrera ordre executada, o zero si no hi ha cap" - -#~ msgid "command executed, or zero if no condition tested true." -#~ msgstr "condici? resolta com a certa." - -#~ msgid "`while' COMMANDS has an exit status of zero." -#~ msgstr "de la instrucci? ?while? tinga un estat d'eixida igual a zero." - -#~ msgid "`until' COMMANDS has an exit status which is not zero." -#~ msgstr "de la instrucci? ?until? tinga un estat d'eixida que no siga zero." - -#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." -#~ msgstr "Crea una ordre simple invocada pel NOM que executa ORDRES. Els " - -#~ msgid "Arguments on the command line along with NAME are passed to the" -#~ msgstr "" -#~ "par?metres especificats al llarg de la l?nia de l'ordre es passen a la" - -#~ msgid "function as $0 .. $n." -#~ msgstr "funci? com a $0 ... $n." - -#~ msgid "entire set of commands." -#~ msgstr "redireccionar un conjunt sencer d'ordres." - -#~ msgid "This is similar to the `fg' command. Resume a stopped or background" -#~ msgstr "A?? ?s semblant amb qu? passa amb l'ordre ?fg?. Repr?n una tasca " - -#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" -#~ msgstr "" -#~ "aturada o ubicada en segon pla. Si especifiqueu DIGITS, aleshores es" - -#~ msgid "" -#~ "WORD, then the job whose name begins with WORD is used. Following the" -#~ msgstr "fa servir aquesta tasca. Si especifiqueu PARAULES, aleshores es fa" - -#~ msgid "job specification with a `&' places the job in the background." -#~ msgstr "" -#~ "servir la tasca, el nom de la qual comence pel valor en PARAULA. Si\n" -#~ "s'especifica la tasca comen?ant pel signe \"&\" s'ubica la tasca en\n" -#~ "segon pla." - -#~ msgid "BASH_VERSION The version numbers of this Bash." -#~ msgstr "BASH_VERSION Cont? la versi? de Bash." - -#~ msgid "CDPATH A colon separated list of directories to search" -#~ msgstr "CDPATH Cont? una llista de directoris, separats" - -#~ msgid "\t\twhen the argument to `cd' is not found in the current" -#~ msgstr "" -#~ " pel signe de dos punts, per a cercar quan el par?metre" - -#~ msgid "\t\tdirectory." -#~ msgstr "" -#~ " especificat per a l'ordre ?cd? no es troba en el\n" -#~ " directori actual." - -#~ msgid "" -#~ "HISTFILE The name of the file where your command history is stored." -#~ msgstr "" -#~ "HISTFILE Cont? el nom del fitxer on ?s al?ada l'hist?ric\n" -#~ " d'ordres executades." - -#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." -#~ msgstr "" -#~ "HISTFILESIZE Cont? el nombre m?xim de l?nies que un fitxer pot \n" -#~ " contindre." - -#~ msgid "HISTSIZE The maximum number of history lines that a running" -#~ msgstr "HISTSIZE Cont? el nombre m?xim de l?nies de l'hist?ric que " - -#~ msgid "\t\tshell can access." -#~ msgstr " l'int?rpret d'ordres pot accedir." - -#~ msgid "HOME The complete pathname to your login directory." -#~ msgstr "" -#~ "HOME Cont? el nom cam? d'acc?s cap el directori de la\n" -#~ " vostra sessi? d'usuari." - -#~ msgid "" -#~ "HOSTTYPE The type of CPU this version of Bash is running under." -#~ msgstr "" -#~ "HOSTTYPE Cont? la mena de CPU sota la qual aquesta versi?\n" -#~ " de bash est? corrent." - -#~ msgid "" -#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" -#~ msgstr "" -#~ "IGNOREOEOF Controla l'acci? de l'int?rpret d'ordres quan rep un" - -#~ msgid "\t\tcharacter as the sole input. If set, then the value" -#~ msgstr " car?cter de fi de fitxer (EOF) com a ?nica entrada." - -#~ msgid "\t\tof it is the number of EOF characters that can be seen" -#~ msgstr " Si s'activa, aleshores el seu valor ?s el nombre de" - -#~ msgid "\t\tin a row on an empty line before the shell will exit" -#~ msgstr "" -#~ " car?cters EOF que pot ser mostrat en un afilera d'una" - -#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." -#~ msgstr "" -#~ " l?nia bu?da despr?s de que l'int?rpret eixir? (per\n" -#~ " omissi? el valor ?s 10). Quan ?s desactivat, EOF vol\n" -#~ " dir que s'ha finalitzat l'entrada de dades." - -#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." -#~ msgstr "" -#~ "MAILCHECK Cont? el temps, en segons, pel qual bash cada vegada \n" -#~ " comprova si hi ha nou correu." - -#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" -#~ msgstr "MAILPATH Cont? una llista de noms de fitxers, separats pel " - -#~ msgid "\t\tfor new mail." -#~ msgstr " signe \":\", on Bash comprova si hi ha correu nou." - -#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." -#~ msgstr "" -#~ "OSTYPE Cont? la versi? d'Unix sota la qual aquesta versi? de \n" -#~ " Bash est? corrent." - -#~ msgid "PATH A colon-separated list of directories to search when" -#~ msgstr "PATH Cont? una llista de directoris, separats pel signe " - -#~ msgid "\t\tlooking for commands." -#~ msgstr " \":\", per on es recorrer? quan es busca una ordre." - -#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" -#~ msgstr "" -#~ "PROMPT_COMMAND Cont? l'ordre que s'executar? despr?s de mostrar-se " - -#~ msgid "\t\tprimary prompt." -#~ msgstr " cada indicador primari." - -#~ msgid "PS1 The primary prompt string." -#~ msgstr "PS1 Cont? la cadena de l'indicador primari." - -#~ msgid "PS2 The secondary prompt string." -#~ msgstr "PS2 Cont? la cadena de l'indicador secundari." - -#~ msgid "TERM The name of the current terminal type." -#~ msgstr "TERM Cont? el nom de la mena de terminal actual." - -#~ msgid "auto_resume Non-null means a command word appearing on a line by" -#~ msgstr "auto_resume Cont? el nom de l'ordre que es buscar? primer d'una" - -#~ msgid "\t\titself is first looked for in the list of currently" -#~ msgstr "" -#~ " llista de tasques actualment aturades. Si se'n troba," - -#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." -#~ msgstr "" -#~ " aquesta tasca s'ubicar? en primer pla. Amb el valor" - -#~ msgid "\t\tA value of `exact' means that the command word must" -#~ msgstr " de \"exact\" el nom de l'ordre ha de coincidir" - -#~ msgid "\t\texactly match a command in the list of stopped jobs. A" -#~ msgstr " exactament una ordre qu? es trobe a la llista de" - -#~ msgid "\t\tvalue of `substring' means that the command word must" -#~ msgstr " tasques aturades. Amb \"substring\", la paraula de" - -#~ msgid "\t\tmatch a substring of the job. Any other value means that" -#~ msgstr "" -#~ " l'ordre ha de coincidir parcialment amb el nom de la" - -#~ msgid "\t\tthe command must be a prefix of a stopped job." -#~ msgstr "" -#~ " tasca (una subcadena d'aquesta). Altrament, amb\n" -#~ " qualsevol altre valor la paraula de l'ordre ha de\n" -#~ " coincidir amb un prefix de la tasca aturada." - -#~ msgid "command_oriented_history" -#~ msgstr "command_oriented_history" - -#~ msgid "" -#~ " Non-null means to save multiple-line commands together on" -#~ msgstr "" -#~ " Si no ?s buit, s'al?ar? juntament les ordres escrites" - -#~ msgid " a single history line." -#~ msgstr "" -#~ " en m?ltiples l?nies en una sola l?nia de l'hist?ric." - -#~ msgid "histchars Characters controlling history expansion and quick" -#~ msgstr "histchars Cont? els car?cters que controlen l'expansi? de " - -#~ msgid "\t\tsubstitution. The first character is the history" -#~ msgstr " l'hist?ric i la substituci? r?pida. El primer" - -#~ msgid "\t\tsubstitution character, usually `!'. The second is" -#~ msgstr " car?cter ?s el de substituci? de l'hist?ric," - -#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" -#~ msgstr " normalment \"!\". El segon ?s el de \"substituci?" - -#~ msgid "\t\tthird is the `history comment' character, usually `#'." -#~ msgstr "" -#~ " r?pida\", normalment \"^\". El tercer ?s el de\n" -#~ " \"comentari de l'hist?ric\", normalment \"#\"." - -#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" -#~ msgstr "HISTCONTROL Si s'hi especifica \"ignorespace\", no s'introduir?" - -#~ msgid "\t\tlines which begin with a space or tab on the history" -#~ msgstr "" -#~ " l?nies que comencen amb un espai o de tabulaci? en la" - -#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" -#~ msgstr "" -#~ " llista de l'hist?ric. Si s'activa amb \"ignoredups\"," - -#~ msgid "\t\tenter lines which match the last entered line. Set to" -#~ msgstr "" -#~ " no s'introduir? l?nies que concidisquen amb la darrera" - -#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," -#~ msgstr "" -#~ " l?nia executada. Amb \"ignoreboth\" s'actuar? amb els" - -#~ msgid "\t\tor set to any other value than those above means to save" -#~ msgstr " dos criteris anteriors alhora. Desactivada, o" - -#~ msgid "\t\tall lines on the history list." -#~ msgstr "" -#~ " especificant-se qualsevol altre valor, que no siga un\n" -#~ " dels esmentats anteriorment, al?a totes les l?nies a\n" -#~ " la llista de l'hist?ric." - -#~ msgid "Toggle the values of variables controlling optional behavior." -#~ msgstr "" -#~ "Commuta els valors de les variables, controlant els comportaments \n" -#~ "opcionals." - -#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" -#~ msgstr "" -#~ "El senyalador ?-s? activa cada variable de OPTNAME; el senyalador \"-u\" " - -#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" -#~ msgstr "desactiva cada OPTNAME. El senyalador \"-q\" suprimeix l'eixida de" - -#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" -#~ msgstr "dades; l'estat d'eixida indica si cada OPTNAME ?s activat o no." - -#~ msgid "option restricts the OPTNAMEs to those defined for use with" -#~ msgstr "L'opci? \"o\" restringeix els OPTNAMEs d'aquells definits per a" - -#~ msgid "`set -o'. With no options, or with the -p option, a list of all" -#~ msgstr "utilitzar-ho amb l'ordre ?set -o?. Sense cap opci?, o amb l'opci?" - -#~ msgid "settable options is displayed, with an indication of whether or" -#~ msgstr "" -#~ "\"-p\", s'exhibeix una llista de totes les opcions activables, amb una" - -#~ msgid "not each is set." -#~ msgstr "indicaci? si ja ho ?s o no." +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc." diff --git a/po/cs.gmo b/po/cs.gmo index e52fb51332372b1afd664b9985153988397fc98e..5d6ad4d4b17b24f2924f8e52708ffab20508c561 100644 GIT binary patch delta 18813 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 diff --git a/po/cs.po b/po/cs.po index 0e3c3ba..a3686c9 100644 --- a/po/cs.po +++ b/po/cs.po @@ -2,6 +2,7 @@ # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Petr Pisar , 2008, 2009, 2010, 2011, 2012, 2013, 2014. +# Petr Pisar , 2015. # # alias → alias # subscript → podskript @@ -11,83 +12,89 @@ # Názvy signálu a stavů procesu by mÄ›ly souhlasit se signal(7). msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2014-01-30 19:29+0100\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-17 12:43+0200\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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "chybný podskript pole" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: Äíslované pole nezle pÅ™evést na pole asociativní" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neplatný klÃ­Ä asociativního pole" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: pÅ™es neÄíselný indexu nelze dosadit" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: pÅ™i pÅ™iÅ™azovaní asociativního pole se musí použít podskript" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nelze vytvoÅ™it: %s" -#: bashline.c:3982 +#: bashline.c:4091 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:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: první nebílý znak není „\"“" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "ne zavírající „%c“ v %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: chybí dvojteÄkový oddÄ›lovaÄ" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "závorková expanze: nelze alokovat paměť pro %s" # TODO: pluralize -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "závorková expanze: alokace pamÄ›ti pro %d prvků selhala" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "závorková expanze: alokace pamÄ›ti pro „%s“ selhala" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: chybný název aliasu" @@ -96,45 +103,45 @@ msgstr "„%s“: chybný název aliasu" msgid "line editing not enabled" msgstr "upravování řádku není povoleno" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: chybný název klávesové mapy" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nelze Äíst: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "„%s“: nelze zruÅ¡it vazbu" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: neznámé jméno funkce" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s není svázán s žádnou klávesou.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s lze vyvolat pÅ™es " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "poÄet smyÄek" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "má smysl jen ve smyÄkách „for“, „while“ nebo „until“" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -144,302 +151,331 @@ msgstr "" " \n" " Bez VÃRAZU vrátí " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "není nestavena HOME" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "příliÅ¡ mnoho argumentů" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "vrcholového adresáře." + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "není nastaveno OLDPWD" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "řádek %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "varování: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: užití: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: pÅ™epínaÄ vyžaduje argument" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: vyžadován Äíselný argument" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: nenalezeno" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: chybný pÅ™epínaÄ" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: chybný název pÅ™epínaÄe" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: není platným identifikátorem" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "neplatné osmiÄkové Äíslo" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "chybné Å¡estnáctkové Äíslo" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "chybné Äíslo" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: chybné urÄení signálu" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: není PID ani platným oznaÄením úlohy" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: promÄ›nná pouze pro Ätení" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s mimo rozsah" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s mimo rozsah" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: žádná taková úloha" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: žádné řízení úloh" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "žádné řízení úloh" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: omezeno" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "omezeno" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: není vestavÄ›ným příkazem shellu" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "chyba zápisu: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "chyba pÅ™i nastavování vlastností terminálu: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "chyba pÅ™i získávání vlastností terminálu: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: chyba pÅ™i zjišťování souÄasného adresáře: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: nejednoznaÄné urÄení úlohy" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "k této verzi není dostupná nápovÄ›da" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: neplatný název akce" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: žádné doplňování neurÄeno" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "varování: pÅ™epínaÄ -F možná nebude dÄ›lat, co jste Äekali" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "varování: pÅ™epínaÄ -C možná nebude dÄ›lat, co jste Äekali" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "doplňovací funkce se právÄ› nevykonává" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "může být použito jen ve funkci" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: promÄ›nná s odkazem nemůže být polem" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: promÄ›nná s odkazem na název nemůže odkazovat sama na sebe" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: kruhový odkaz na název" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: neplatný název promÄ›nné pro odkaz na název" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "„-f“ nezle použít na výrobu funkce" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: funkce jen pro Ätení" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: pÅ™iÅ™azení do složeného pole uzavÅ™eného v uvozovkách je zastaralé" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: takto nelze likvidovat pole" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: asociativní pole nelze pÅ™evést na Äíslované pole" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dynamické nahrávání není dostupné" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "sdílený objekt %s nelze otevřít: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "ve sdílením objektu %2$s nelze nalézt %1$s: %3$s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "zavádÄ›cí funkce pro %s vrací chybu (%d): nezavedeno" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: není dynamicky nahráno" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nelze smazat: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: je adresářem" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: není obyÄejný soubor" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: soubor je příliÅ¡ velký" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: binární soubor nelze spustit" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nelze provést: %s" # XXX: Toto je zpráva interaktivního shellu pÅ™i příkazu exit informující # o odhlášení -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "odhlášení\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "toto není login shell: použijte „exit“" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Jsou zde pozastavené úlohy.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Jsou zde běžící úlohy.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "žádný příkaz nenalezen" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "urÄení historie" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: doÄasný soubor nelze otevřít: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "souÄasný" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "úloha %d spuÅ¡tÄ›na bez správy úloh" @@ -458,17 +494,17 @@ msgstr "%s: pÅ™epínaÄ vyžaduje argument – %c\n" msgid "hashing disabled" msgstr "hashování zakázáno" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabulka hashů je prázdná\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "zásahů\tpříkaz\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" @@ -476,7 +512,7 @@ msgstr[0] "Příkazy shellu shodující se s klíÄovým slovem „" msgstr[1] "Příkazy shellu shodující se s klíÄovými slovy „" msgstr[2] "Příkazy shellu shodující se s klíÄovými slovy „" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -484,12 +520,12 @@ msgstr "" "žádné téma nápovÄ›dy se nehodí pro „%s“. Zkuste „help help“ nebo „man -k %s“ " "nebo „info %s“." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nelze otevřít: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -509,15 +545,20 @@ msgstr "" "HvÄ›zdiÄka (*) vedle jména znamená, že příkaz je zakázán.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "nelze použít více jak jeden z -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "místo v historii" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: chybný argument" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: expanze historie selhala" @@ -531,113 +572,113 @@ msgstr "%s: inlib selhala" msgid "no other options allowed with `-x'" msgstr "s „-x“ nejsou dovoleny další pÅ™epínaÄe" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, 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:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Neznámá chyba" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "oÄekáván výraz" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: není (promÄ›nnou typu) indexované pole" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: chybné urÄení deskriptoru souboru" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neplatný deskriptor souboru: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: chybný poÄet řádků" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: chybný poÄátek pole" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neplatné množství mezi voláními" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "prázdný název promÄ›nné typu pole" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "je vyžadována podpora promÄ›nných typu pole" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "„%s“: postrádám formátovací znak" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: chybné urÄení Äasového limitu" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: neplatný formátovací znak" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "varování: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "potíže s rozebráním formátovacího Å™etÄ›zce: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "u \\x chybí Å¡estnáctková Äíslovka" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "u \\%c chybí unikódová Äíslovka" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "žádný další adresář" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: chybný argument" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "<žádný aktuální adresář>" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "prázdný zásobník adresářů" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "poÅ™adí v zásobníku adresářů" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -679,7 +720,7 @@ msgstr "" " -N\tZobrazí N. položku poÄítáno zprava na seznamu, který zobrazuje\n" " \tdirs, když je vyvolán bez pÅ™epínaÄů, poÄínaje nulou." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -724,7 +765,7 @@ msgstr "" " \n" " Zásobník adresářů si můžete prohlédnout příkazem „dirs“." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -763,143 +804,153 @@ msgstr "" " \n" " Zásobník adresářů si můžete prohlédnout příkazem „dirs“." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: chybné urÄení Äasového limitu" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "chyba Ätení: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "funkci i promÄ›nnou nelze ruÅ¡it souÄasnÄ›" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: nelze zruÅ¡it" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nelze zruÅ¡it: %s jen pro Ätení" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: není (promÄ›nnou typu) pole" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: není funkcí" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: nelze exportovat" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "poÄet shiftů" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "pÅ™epínaÄ shellu nelze zároveň nastavit a zruÅ¡it" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: chybný název pÅ™epínaÄe shellu" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "vyžadován argument s názvem souboru" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: soubor nenalezen" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "nelze pozastavit" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "login shell nelze pozastavit" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s je alias na „%s“\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je klíÄové slovo shellu\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s je funkce\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s je zvláštní souÄást shellu\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je souÄást shellu\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je zahashován (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: chybný argument s limitou" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "„%c“: chybný příkaz" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: limit nelze zjistit: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: limit nelze zmÄ›nit: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "osmiÄkové Äíslo" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "„%c“: chybný operátor symbolických práv" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "„%c“: chybný znak symbolický práv " -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " řádek " @@ -913,82 +964,103 @@ msgstr "poslední příkaz: %s\n" msgid "Aborting..." msgstr "UkonÄuji…" -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORMACE: " + +#: error.c:463 msgid "unknown command error" msgstr "chyba neznámého příkazu" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "chybný druh příkazu" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "chybný konektor" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "chybný skok" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: nevázaná promÄ›nná" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: chybný formátovací znak" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "chyba v rouÅ™e" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: maximální úroveň zanoÅ™ení funkce eval byla pÅ™ekroÄena (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximální úroveň zanoÅ™ení funkce source byla pÅ™ekroÄena (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximální úroveň zanoÅ™ení funkcí byla pÅ™ekroÄena (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: omezeno: v názvu příkazu nesmí být „/“" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: příkaz nenalezen" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: chybný interpretr" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binární soubor nelze spustit: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“: je zvláštní vestavÄ›ný příkaz shellu" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "deskriptor souboru %d nelze duplikovat na deskriptor %d" @@ -1033,37 +1105,37 @@ msgstr "po pÅ™ednostním zvýšení nebo snížení oÄekáván identifikátor" msgid "missing `)'" msgstr "postrádám „)“" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "syntaktická chyba: oÄekáván operand" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "syntaktická chyba: chybný aritmetický operátor" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (chybný token je „%s“)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "chybný aritmetický základ" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "hodnot je pro základ příliÅ¡ velká" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: chyba výrazu\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: rodiÄovské adresáře nejsou přístupné" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "na deskriptoru %d nelze resetovat režim nodelay" @@ -1078,150 +1150,150 @@ msgstr "nový deskriptor souboru pro vstup bashe z deskr. %d nelze alokovat" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer již pro nový deskriptor %d existuje" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp roury" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forknutý PID %d se objevil v běžící úloze %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "mažu pozastavenou úlohu %d se skupinou procesů %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) do the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: žádný takový PID" -#: jobs.c:1450 +#: jobs.c:1605 #, 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:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "DokonÄena" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Pozastavena" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Pozastavena (%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Běží" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "DokonÄena (%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "UkonÄena %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Stav neznámý" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(core dumped [obraz pamÄ›ti uložen]) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (cwd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid na potomku (z %ld na %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: PID %ld není potomkem tohoto shellu" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Žádný záznam o procesu %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: úloha %d je pozastavena" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: úloha skonÄila" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: úloha %d je již na pozadí" -#: jobs.c:3220 +#: jobs.c:3455 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:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: řádek %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (core dumped [obraz pamÄ›ti uložen])" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(cwd nyní: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp selhalo" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplína linky" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nelze nastavit skupinu procesů terminálu (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "žádná správa úloh v tomto shellu" @@ -1275,17 +1347,17 @@ msgstr "realloc: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah" 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:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p již obsažen v tabulce jako volný?\n" @@ -1309,7 +1381,7 @@ msgstr "%s: chybná služba" msgid "%s: bad network path specification" msgstr "%s: chybné urÄení síťové cesty" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "síťové operace nejsou podporovány" @@ -1346,228 +1418,263 @@ msgstr "V $_ máte novou poÅ¡tu" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v %s je pÅ™eÄtená\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "chyba syntaxe: vyžadován aritmetický výraz" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "chyba syntaxe: neoÄekávaný „;“" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "chyba syntaxe: „((%s))“" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: chybný druh instrukce %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "„here“ dokument na řádku %d ukonÄen koncem souboru (požadováno „%s“)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrukce pÅ™esmÄ›rování „%d“ mimo rozsah" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "maximální poÄet here dokumentů pÅ™ekroÄen" + +#: parse.y:3390 parse.y:3748 #, 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:4170 +#: parse.y:4410 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:4175 +#: parse.y:4415 #, 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:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "chyba syntaxe ve výrazu podmínky" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neoÄekávaný token „%s“, oÄekávána „)“" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "oÄekávána „)“" -#: parse.y:4289 +#: parse.y:4529 #, 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:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "neoÄekávaný argument u podmínkového unárního operátoru" -#: parse.y:4339 +#: parse.y:4579 #, 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:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "oÄekáván podmínkový binární operátor" -#: parse.y:4365 +#: parse.y:4605 #, 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:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "neoÄekávaný argument u podmínkového binárního operátoru" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neoÄekávaný token „%c“ v podmínkovém příkazu" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neoÄekávaný token „%s“ v podmínkovém příkazu" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "neoÄekávaný token %d v podmínkovém příkazu" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "chyba syntaxe poblíž neoÄekávaného tokenu „%s“" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "chyba syntaxe poblíž „%s“" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "chyba syntaxe: nenadálý konec souboru" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "chyba syntaxe" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Shell lze ukonÄit příkazem „%s“.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "nenadálý konec souboru pÅ™i hledání odpovídající „)“" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "doplňování: funkce „%s“ nenalezena" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULLOVà COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: chybná propojka „%d“" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: neplatný deskriptor souboru" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: nullový ukazatel na souboru" # fd, fp a fileno jsou identifikátory v kódu -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace: fd (%d) != fileno fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: chybný formátovací znak" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "deskriptor souboru mimo rozsah" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: nejednoznaÄné pÅ™esmÄ›rování" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: existující soubor nelze pÅ™epsat" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: omezeno: výstup nelze pÅ™esmÄ›rovat" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "pro „here“ dokument nelze vytvoÅ™it doÄasný soubor: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: deskriptor souboru nelze pÅ™iÅ™adit do promÄ›nné" -#: redir.c:582 +#: redir.c:586 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:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "chyba pÅ™esmÄ›rování: deskriptor souboru nelze duplikovat" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "nelze nalézt /tmp, vytvoÅ™te jej, prosím!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp musí být platným názvem pro adresář" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: chybný pÅ™epínaÄ" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "UID nelze nastavit na %d: efektivní UID je %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "GID nelze nastavit na %d: efektivní GID je %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Je adresářem" + +#: shell.c:1777 msgid "I have no name!" msgstr "Nemám žádné jméno!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, verze %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1576,43 +1683,53 @@ msgstr "" "Použití:\t%s [Dlouhý GNU pÅ™epínaÄ] [pÅ™epínaÄ]…\n" "\t%s [Dlouhý GNU pÅ™epínaÄ] [pÅ™epínaÄ] skriptový_soubor…\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Dlouhé GNU pÅ™epínaÄe:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "PÅ™epínaÄe shellu:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD nebo -c příkaz nebo -O shopt_pÅ™epínaÄ\t(pouze pÅ™i vyvolání)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nebo -o pÅ™epínaÄ\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Chyby nahlásíte příkazem „bashbug“.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "Domovská stránka bashe: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Obecný návod na použití softwaru GNU: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neplatná operace" @@ -1790,77 +1907,92 @@ msgstr "Neznámé Äíslo signálu" msgid "Unknown Signal #%d" msgstr "Neznámý signál Ä. %d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "chybná substituce: v %2$s chybí uzavírací „%1$s“" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: seznam nelze pÅ™iÅ™adit do prvku pole" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "nelze vyrobit rouru za úÄelem substituce procesu" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "nelze vytvoÅ™it potomka za úÄelem substituce procesu" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "pojmenovanou rouru %s nelze otevřít pro Ätení" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "pojmenovanou rouru %s nelze otevřít pro zápis" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "pojmenovanou rouru %s nelze zdvojit jako deskriptor %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "chybná substituce: v %s chybí uzavírací „`“" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "nelze vytvoÅ™it rouru pro substituci příkazu" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "nelze vytvoÅ™it potomka pro substituci příkazu" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: rouru nelze zdvojit jako deskriptor 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: neplatný název promÄ›nné pro odkaz na název" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parametr null nebo nenastaven" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: výraz podÅ™etÄ›zce < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: chybná substituce" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: chybná nepřímá expanze" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: chybný název promÄ›nné" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametr null nebo nenastaven" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: výraz podÅ™etÄ›zce < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: takto nelze pÅ™iÅ™azovat" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1868,12 +2000,12 @@ msgstr "" "budoucá verze tohoto shellu budou vynucovat vyhodnocení jako aritmetickou " "substituci" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "chybná substituce: v %s chybí uzavírací „`“" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "žádná shoda: %s" @@ -1887,122 +2019,123 @@ msgstr "oÄekáván argument" msgid "%s: integer expression expected" msgstr "%s: oÄekáván celoÄíselný výraz" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "oÄekávána „)“" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "oÄekávána „)“, nalezeno %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: oÄekáván unární operátor" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: oÄekáván binární operátor" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "postrádám „]“" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "neplatné Äíslo signálu" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: chybný signál %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "chyba pÅ™i importu definice „%s“" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "úroveň shellu (%d) příliÅ¡ vysoká, resetuji na 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: kruhový odkaz na název" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: žádný kontext funkce v aktuálním rozsahu" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: hodnotu nelze do promÄ›nné pÅ™iÅ™adit" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: neplatný název promÄ›nné pro odkaz na název" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: žádný kontext funkce v aktuálním rozsahu" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s: má nullový exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neplatný znak %d v exportstr pro %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "v exportstr pro %s chybí „=“" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hlava shell_variables není kontextem funkce" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: chybí kontext global_variables" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nelze otevřít jako SOUBOR" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neplatná hodnota pro deskriptor trasovacího souboru" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: hodnota kompatibility je mimo rozsah" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright © 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright © 2015 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2025,10 +2158,6 @@ msgstr "Toto je svobodné programové vybavení: máte právo jej mÄ›nit a ší msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "VEÅ KERÉ ZÃRUKY chybí, jak jen zákon dovoluje." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright © 2012 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2049,15 +2178,15 @@ msgstr "%s: %s:%d: nelze alokovat %'lu bajtů (alokováno %'lu bajtů)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: nelze alokovat %'lu bajtů" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [název[=hodnota] …]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] název [název…]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -2066,112 +2195,100 @@ msgstr "" "klávposl] [-x klávposl:příkaz-shellu] [klávposl:readline-funkce nebo " "readline-příkaz]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [vestavÄ›ný-příkaz-shellu [argument…]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [výraz]" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]] [-@]] [adresář]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] příkaz [argument…]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [název[=hodnota]…]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] název[=hodnota]…" - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] název[=hodnota]…" + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [pÅ™epínaÄ] název[=hodnota]…" -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [argument…]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [argument…]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f soubor] [název…]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [argument…]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts optstring name [argument]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a název] [příkaz [argument…]] [pÅ™esmÄ›rování…]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e enázev] [-lnr] [první] [poslední] nebo fc -s [vzor=náhrada] [příkaz]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [úloha]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [úloha…]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p název_cesty] [-dt] [název…]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [vzorek…]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2179,26 +2296,27 @@ msgstr "" "history [-c] [-d pozice] [n] nebo history -anrw [jméno_souboru] nebo history " "-ps argument [argument…]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [úloha…] nebo jobs -x příkaz [argumenty]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [úloha…]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" "kill [-s sigspec | -n Äíssig | -sigspec] pid | úloha… nebo kill -l [sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let argument [argument…]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2206,99 +2324,95 @@ msgstr "" "read [-ers] [-a pole] [-d oddÄ›lovaÄ] [-i text] [-n p_znaků] [-N p_znaků] [-p " "výzva] [-t limit] [-u fd] [jméno…]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o název_pÅ™epínaÄe] [--] [argument…]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [jméno…]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [název[=hodnota]…] nebo export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [název[=hodnota]…] nebo readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source název_souboru [argumenty]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". název_souboru [argumenty]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [výraz]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ argument… ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[argument] signal_spec…]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] název [název…]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mód]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [id…]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [pid…]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NÃZEV [in SLOVECH…] ; do PŘÃKAZY; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( výr1; výr2; výr3 )); do PŘÃKAZY; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NÃZEV [in SLOVA…;] do PŘÃKAZY; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] kolona" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case SLOVO in [VZOR [| VZOR]…) PŘÃKAZY ;;]… esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2306,64 +2420,64 @@ msgstr "" "if PŘÃKAZY; then PŘÃKAZY; [ elif PŘÃKAZY; then PŘÃKAZY; ]… [ else PŘÃKAZY; ] " "fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while PŘÃKAZY; do PŘÃKAZY; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until PŘÃKAZY; do PŘÃKAZY; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "command [NÃZEV] příkaz [pÅ™esmÄ›rování]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function jméno { PŘÃKAZY ; } nebo jméno () { PŘÃKAZY ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ PŘÃKAZY ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "úloha [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( výraz ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ výraz ]]" # XXX: "variable" je literál na seznamy vestavÄ›ných příkazů -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables – názvy a významy nÄ›kterých promÄ›nných shellu" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | adresář]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [název_volby…]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v promÄ›nná] formát [argumenty]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2373,36 +2487,36 @@ msgstr "" "W seznam_slov] [-F funkce] [-C příkaz] [-X filtrvzor] [-P pÅ™edpona] [-S " "přípona] [název…]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o pÅ™epínaÄ] [-A akce] [-G globvzor] [-W " +"compgen [-abcdefgjksuv] [-o pÅ™epínaÄ] [-A akce] [-G globvzor] [-W " "seznam_slov] [-F funkce] [-C příkaz] [-X filtrvzor] [-P pÅ™edpona] [-S " "přípona] [slovo]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o možnost] [-DE] [název…]" -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" -"mapfile [-n poÄet] [-O poÄátek] [-s poÄet] [-t] [-u fd] [-C volání] [-c " -"množství] [pole]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d oddÄ›lovaÄ] [-n poÄet] [-O poÄátek] [-s poÄet] [-t] [-u FD] [-C " +"volání] [-c množství] [pole]" + +#: builtins.c:244 +msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" -"readarray [-n poÄet] [-O poÄátek] [-s poÄet] [-t] [-u fd] [-C volání] [-c " +"readarray [-n poÄet] [-O poÄátek] [-s poÄet] [-t] [-u FD] [-C volání] [-c " "množství] [pole]" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2414,7 +2528,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2433,28 +2547,28 @@ msgstr "" " zkontrolováno na substituci aliasů.\n" " \n" " PÅ™epínaÄe:\n" -" -p\tVypíše vÅ¡echny definované aliasy ve znovu použitelném formátu\n" +" -p\tvypíše vÅ¡echny definované aliasy ve znovu použitelném formátu\n" " \n" " Návratový kód:\n" " alias vrátí pravdu, pokud nebyl zadán NÃZEV, pro který není žádný alias\n" " definován." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Odstraní každý NÃZEV ze seznamů definovaných aliasů.\n" " \n" " PÅ™epínaÄe:\n" -" -a\todstraní vÅ¡echny definice aliasů. \n" -" Vrací úspÄ›ch, pokud NÃZEV není neexistující alias." +" -a\todstraní vÅ¡echny definice aliasů\n" +" Vrátí úspÄ›ch, pokud NÃZEV není neexistující alias." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2488,7 +2602,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2540,7 +2655,7 @@ msgstr "" " bind vrací 0, pokud není zadán nerozpoznaný pÅ™epínaÄ nebo nedojde " "k chybÄ›." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2558,7 +2673,7 @@ msgstr "" " Návratový kód:\n" " Návratový kód je 0, pokud N je vÄ›tší nebo rovno 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2575,7 +2690,7 @@ msgstr "" " Návratový kód:\n" " Návratový kód je 0, pokud N je vÄ›tší nebo rovno 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2600,7 +2715,7 @@ msgstr "" " Vrací návratový kód VESTAVÄšNÉHO-PŘÃKAZU-SHELLU, nebo nepravdu, pokud\n" " VESTAVÄšNÃ-PŘÃKAZ-SHELLU není vestavÄ›ným příkazem shellu." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2627,7 +2742,7 @@ msgstr "" " Návratový kód:\n" " Vrací 0, pokud shell provádí shellovou funkci a VÃRAZ je platný." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2650,16 +2765,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2689,15 +2804,16 @@ msgstr "" " hodnotu, pak její hodnota se použije jako ADR.\n" " \n" " PÅ™epínaÄe:\n" -" -L\tvynutí následování symbolických odkazů: vyhodnotí symbolické\n" -" \todkazy v ADR po zpracování vÅ¡ech výskytů „..“\n" -" -P\tnaÅ™izuje použít fyzickou adresářovou strukturu namísto\n" -" \tnásledování symbolických odkazů: vyhodnotí symbolické odkazy v ADR\n" -" \tpÅ™ed zpracováním vÅ¡ech výskytů „..“\n" -" -e\tje-li zadán pÅ™epínaÄ -P a souÄasný pracovní adresář nelze\n" -" \tzdárnÄ› zjistit, skonÄí s nenulovým návratovým kódem\n" -" -@ na systémech, které to podporují, vydává soubor s rozšířenými\n" -" atributy jako adresář obsahující atributy souboru\n" +" -L vynutí následování symbolických odkazů: vyhodnotí symbolické\n" +" odkazy v ADR po zpracování vÅ¡ech výskytů „..“\n" +" -P naÅ™izuje použít fyzickou adresářovou strukturu namísto\n" +" následování symbolických odkazů: vyhodnotí symbolické odkazy " +"v ADR\n" +" pÅ™ed zpracováním vÅ¡ech výskytů „..“\n" +" -e je-li zadán pÅ™epínaÄ -P a souÄasný pracovní adresář nelze\n" +" zdárnÄ› zjistit, skonÄí s nenulovým návratovým kódem\n" +" -@ na systémech, které to podporují, vydává soubor s rozšířenými\n" +" atributy jako adresář obsahující atributy souboru\n" " \n" " Symbolické odkazy se implicitnÄ› následují, jako by bylo zadáno „-L“.\n" " „..“ se zpracovávají tak, že se odstraní bezprostÅ™ednÄ› pÅ™edcházející\n" @@ -2707,13 +2823,13 @@ msgstr "" " Vrací 0, byl-li adresář zmÄ›nÄ›n a, byl-li zadán -P, $PWD byla úspěšnÄ›\n" " nastavena. Jinak vrací nenulovou hodnotu." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2725,9 +2841,9 @@ msgstr "" "Vypíše název souÄasného pracovního adresáře.\n" " \n" " PÅ™epínaÄe:\n" -" -L\tvypíše hodnotu $PWD, pokud pojmenovává souÄasný pracovní\n" -" \tadresář\n" -" -P\tvypíše fyzický adresář prostý vÅ¡ech symbolických odkazů\n" +" -L vypíše hodnotu $PWD, pokud pojmenovává souÄasný pracovní\n" +" adresář\n" +" -P vypíše fyzický adresář prostý vÅ¡ech symbolických odkazů\n" " \n" " ImplicitnÄ› se „pwd“ chová, jako by bylo zadáno „-L“.\n" " \n" @@ -2735,7 +2851,7 @@ msgstr "" " Vrací 0, nebyl-li zadán neplatný pÅ™epínaÄ a mohl-li být souÄasný\n" " adresář pÅ™eÄten." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2751,7 +2867,7 @@ msgstr "" " Návratový kód:\n" " Vždy uspÄ›je." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2763,7 +2879,7 @@ msgstr "" " Návratový kód:\n" " Vždy uspÄ›je." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2775,7 +2891,7 @@ msgstr "" " Návratový kód:\n" " Vždy selže." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2785,10 +2901,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2802,15 +2918,15 @@ msgstr "" " pÅ™iÄemž existuje funkce stejného jména.\n" " \n" " PÅ™epínaÄe:\n" -" -p\tpro PATH bude použita implicitní hodnota, která zaruÄuje,\n" -" \tže budou nalezeny vÅ¡echny standardní nástroje\n" -" -v\tzobrazí popis PŘÃKAZU podobný vestavÄ›nému příkazu „type“\n" -" -V\tzobrazí podrobnÄ›jší popis každého PŘÃKAZU\n" +" -p pro PATH bude použita implicitní hodnota, která zaruÄuje,\n" +" že budou nalezeny vÅ¡echny standardní nástroje\n" +" -v zobrazí popis PŘÃKAZU podobný vestavÄ›nému příkazu „type“\n" +" -V zobrazí podrobnÄ›jší popis každého PŘÃKAZU\n" " \n" " Návratový kód:\n" " Vrací návratový kód PŘÃKAZU, nebo selže, nebyl–li příkaz nalezen." -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2820,9 +2936,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2855,23 +2971,23 @@ msgstr "" " zobrazí atributy a hodnoty vÅ¡ech promÄ›nných.\n" " \n" " PÅ™epínaÄe:\n" -" -f\tomezí akci nebo výpis na názvy funkcí a deklarace\n" -" -F\tomezí výpis jen na názvy funkcí (a Äíslo řádku a název\n" -" \tzdrojového souboru, je-li zapnuto ladÄ›ní)\n" -" -g\tvytváří globální promÄ›nné, je-li voláno z funkce shellu,\n" -" \tjinak ignorováno\n" -" -p\tzobrazí atributy a hodnotu každého NÃZVU\n" +" -f omezí akci nebo výpis na názvy funkcí a deklarace\n" +" -F omezí výpis jen na názvy funkcí (a Äíslo řádku a název\n" +" zdrojového souboru, je-li zapnuto ladÄ›ní)\n" +" -g vytváří globální promÄ›nné, je-li voláno z funkce shellu,\n" +" jinak ignorováno\n" +" -p zobrazí atributy a hodnotu každého NÃZVU\n" " \n" " PÅ™epínaÄe, které nastavují atributy:\n" -" -a\tuÄiní NÃZVY Äíslovanými poli (je-li podporováno)\n" -" -A\tuÄiní NÃZVY asociativními poli (je-li podporováno)\n" -" -i\tpÅ™iÅ™adí NÃZVÅ®M atribut „integer“ (Äíslo)\n" -" -l\tpÅ™evede NÃZVY na malá písmena v dobÄ› pÅ™iÅ™azení\n" -" -n\tuÄiní NÃZEV odkazem na promÄ›nnou pojmenovanou podle své hodnoty\n" -" -r\tuÄiní NÃZVY jen pro Ätení\n" -" -t\tpÅ™iÅ™adí NÃZVÅ®M atribut „trace“ (sledování)\n" -" -u\tpÅ™evede NÃZVY na velká písmena v dobÄ› pÅ™iÅ™azení\n" -" -x\tvyexportuje NÃZVY\n" +" -a uÄiní NÃZVY Äíslovanými poli (je-li podporováno)\n" +" -A uÄiní NÃZVY asociativními poli (je-li podporováno)\n" +" -i pÅ™iÅ™adí NÃZVÅ®M atribut „integer“ (Äíslo)\n" +" -l pÅ™evede NÃZVY na malá písmena v dobÄ› pÅ™iÅ™azení\n" +" -n uÄiní NÃZEV odkazem na promÄ›nnou pojmenovanou podle své hodnoty\n" +" -r uÄiní NÃZVY jen pro Ätení\n" +" -t pÅ™iÅ™adí NÃZVÅ®M atribut „trace“ (sledování)\n" +" -u pÅ™evede NÃZVY na velká písmena v dobÄ› pÅ™iÅ™azení\n" +" -x vyexportuje NÃZVY\n" " \n" " Pomocí „+“ namísto „-“ daný atribut vypnete.\n" " \n" @@ -2886,17 +3002,18 @@ msgstr "" " Vrací úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nedoÅ¡lo k chybÄ› pÅ™i\n" " pÅ™iÅ™azování do promÄ›nné." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Nastaví hodnoty a atributy promÄ›nných\n" " \n" " Příkaz je zastaralý. Vizte „help declare“." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2924,7 +3041,7 @@ msgstr "" " Vrací úspÄ›ch, nebyl-li zadán neplatný pÅ™epínaÄ, nenastala-li chyba pÅ™i\n" " pÅ™iÅ™azování do promÄ›nné a vykonává-li shell funkci." -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2950,9 +3067,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2963,33 +3080,33 @@ msgstr "" " na standardní výstup.\n" " \n" " PÅ™epínaÄe:\n" -" -n\tnepÅ™ipojuje nový řádek\n" -" -e\tzapne interpretování následujících znaků uvozených zpÄ›tným " +" -n nepÅ™ipojuje nový řádek\n" +" -e zapne interpretování následujících znaků uvozených zpÄ›tným " "lomítkem\n" -" -E\texplicitnÄ› potlaÄí interpretování znaků uvozených zpÄ›tným " +" -E explicitnÄ› potlaÄí interpretování znaků uvozených zpÄ›tným " "lomítkem\n" " \n" " „echo“ interpretuje následující znaky uvozené zpÄ›tným lomítkem:\n" -" \\a\tpoplach (zvonek)\n" -" \\b\tbackspace\n" -" \\c\tpotlaÄí další výstup\n" -" \\e\tznak escapu\n" -" \\E\tznak escapu\n" -" \\f\tposun formuláře (form feed)\n" -" \\n\tnový řádek\n" -" \\r\tnávrat vozíku\n" -" \\t\tvodorovný tabulátor\n" -" \\v\tsvislý tabulátor\n" -" \\\\\tzpÄ›tné lomítko\n" -" \\0nnn\tznak, jehož ASCII kód je NNN (osmiÄkovÄ›). NNN smí být\n" -" \t0 až 3 osmiÄkové Äíslice\n" -" \\xHH\tosmibitový znak, jehož hodnota je HH (Å¡estnáctkovÄ›). HH smí\n" -" \tbýt jedna nebo dvÄ› Å¡estnáctkové Äíslice\n" +" \\a poplach (zvonek)\n" +" \\b backspace\n" +" \\c potlaÄí další výstup\n" +" \\e znak escapu\n" +" \\E znak escapu\n" +" \\f posun formuláře (form feed)\n" +" \\n nový řádek\n" +" \\r návrat vozíku\n" +" \\t vodorovný tabulátor\n" +" \\v svislý tabulátor\n" +" \\\\ zpÄ›tné lomítko\n" +" \\0nnn znak, jehož ASCII kód je NNN (osmiÄkovÄ›). NNN smí být\n" +" 0 až 3 osmiÄkové Äíslice\n" +" \\xHH osmibitový znak, jehož hodnota je HH (Å¡estnáctkovÄ›). HH smí\n" +" být jedna nebo dvÄ› Å¡estnáctkové Äíslice\n" " \n" " Návratový kód:\n" " Vrací úspÄ›ch, nedojde-li k chybÄ› zápisu na výstup." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3010,7 +3127,7 @@ msgstr "" " \n" " Vrací úspÄ›ch, nedojte-li k chybÄ› zápisu na výstup." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3064,7 +3181,7 @@ msgstr "" " Vrací úspÄ›ch, je-li NÃZEV vestavÄ›ným příkazem shellu a nevyskytne-li\n" " se chyba." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3082,7 +3199,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:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3165,7 +3282,7 @@ msgstr "" "dojde\n" " na konec pÅ™epínaÄů nebo nastane-li chyba." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3176,8 +3293,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3196,9 +3313,9 @@ msgstr "" " v tomto shellu.\n" " \n" " PÅ™epínaÄe:\n" -" -a název\tpÅ™edá název jakožto nultý argument PŘÃKAZU\n" -" -c\t\tspustí PŘÃKAZ s prázdným prostÅ™edím\n" -" -t\t\tdo nultého argumentu PŘÃKAZU umístí pomlÄku\n" +" -a název pÅ™edá název jakožto nultý argument PŘÃKAZU\n" +" -c spustí PŘÃKAZ s prázdným prostÅ™edím\n" +" -t do nultého argumentu PŘÃKAZU umístí pomlÄku\n" " \n" " Pokud příkaz nemůže být proveden, neinteraktivní shell bude ukonÄen,\n" " pokud pÅ™epínaÄ shellu „execfail“ není nastaven.\n" @@ -3206,7 +3323,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:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3218,7 +3335,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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3231,7 +3348,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:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3284,7 +3401,7 @@ msgstr "" " Vrátí úspÄ›ch nebo kód provedeného příkazu. Nenulový kód, vyskytne-li se\n" " chyba." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3305,7 +3422,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:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3327,7 +3444,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:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3336,15 +3453,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3358,20 +3475,21 @@ msgstr "" "příkazech.\n" " \n" " PÅ™epínaÄe:\n" -" -d\t\tzapomene zapamatovaná umístÄ›ní každého NÃZVU\n" -" -l\t\tvypíše v takové podobÄ›, kterou lze opÄ›t použít jako vstup\n" -" -p cesta\tpoužije NÃZEV_CESTY jako plnou cestu k NÃZVU\n" -" -r\t\tzapomene vÅ¡echna zapamatovaná umístÄ›ní\n" -" -t\t\tvypíše zapamatované umístÄ›ní každého NÃZVU a každému umístÄ›ní\n" -" \t\tpÅ™edepíše odpovídající NÃZEV, bylo zadáno více NÃZVÅ®\n" +" -d zapomene zapamatovaná umístÄ›ní každého NÃZVU\n" +" -l vypíše v takové podobÄ›, kterou lze opÄ›t použít jako vstup\n" +" -p cesta použije NÃZEV_CESTY jako plnou cestu k NÃZVU\n" +" -r zapomene vÅ¡echna zapamatovaná umístÄ›ní\n" +" -t vypíše zapamatované umístÄ›ní každého NÃZVU a každému " +"umístÄ›ní\n" +" pÅ™edepíše odpovídající NÃZEV, bylo zadáno více NÃZVÅ®\n" " Argumenty:\n" -" NÃZEV\t\tKaždý NÃZEV je vyhledán v $PATH a pÅ™idán do seznamu\n" -" \t\tzapamatovaných příkazů.\n" +" NÃZEV Každý NÃZEV je vyhledán v $PATH a pÅ™idán do seznamu\n" +" zapamatovaných příkazů.\n" " \n" " 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:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3383,7 +3501,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3400,19 +3518,20 @@ msgstr "" " vytiÅ¡tÄ›n seznam syntaxe vestavÄ›ných příkazů.\n" " \n" " PÅ™epínaÄe:\n" -" -d\tvypíše krátké pojednání na každé téma\n" -" -m\tzobrazí použití v jakoby manuálovém formátu\n" -" -s\tvypíše pouze krátký popis použití o každém příkazu odpovídajícímu\n" -" \tVZORKU\n" +" -d vypíše krátké pojednání na každé téma\n" +" -m zobrazí použití v jakoby manuálovém formátu\n" +" -s vypíše pouze krátký popis použití o každém příkazu odpovídajícímu\n" +" VZORKU\n" " \n" " Argumenty:\n" -" VZOREK\tVzorek urÄující téma nápovÄ›dy\n" +" VZOREK Vzorek urÄující téma nápovÄ›dy\n" " \n" " Návratový kód:\n" " Vrací úspÄ›ch, pokud byl nalezen VZOREK a nebyl zadán neplatný pÅ™epínaÄ." # FIXME: bash-4.0-pre1: Orphaned line between -w and -p option. It belongs to -n. -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3421,23 +3540,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3451,18 +3570,18 @@ msgstr "" " zmÄ›nÄ›ny. Argument N říká, že se vypíše pouze posledních N řádek.\n" " \n" " PÅ™epínaÄe:\n" -" -c\tvyprázdní seznam historie smazáním vÅ¡ech položek\n" -" -d pozice\tsmaže ze seznamu historie položku na pozici POZICE\n" +" -c vyprázdní seznam historie smazáním vÅ¡ech položek\n" +" -d pozice smaže ze seznamu historie položku na pozici POZICE\n" " \n" -" -a\tpÅ™ipojí řádky historie z této relace do souboru historie\n" -" -n\tnaÄte vÅ¡echny řádky historie, které jeÅ¡tÄ› nebyly naÄteny,\n" -" \tze souboru historie a pÅ™ipojí je do seznamu historie\n" -" -r\tnaÄte soubor historie a obsah pÅ™ipojí do seznamu historie\n" -" -w\tzapíše souÄasnou historii do souboru historie\n" +" -a pÅ™ipojí řádky historie z této relace do souboru historie\n" +" -n naÄte vÅ¡echny řádky historie, které jeÅ¡tÄ› nebyly naÄteny,\n" +" ze souboru historie a pÅ™ipojí je do seznamu historie\n" +" -r naÄte soubor historie a obsah pÅ™ipojí do seznamu historie\n" +" -w zapíše souÄasnou historii do souboru historie\n" " \n" -" -p\tprovede expanzi historie na každém ARGUMENTU a výsledek zobrazí,\n" -" \taniž by cokoliv uložil do seznamu historie\n" -" -s\tpÅ™ipojí ARGUMENTY do seznamu historie jako jednu položku\n" +" -p provede expanzi historie na každém ARGUMENTU a výsledek zobrazí,\n" +" aniž by cokoliv uložil do seznamu historie\n" +" -s pÅ™ipojí ARGUMENTY do seznamu historie jako jednu položku\n" " \n" " Je-li zadán JMÉNO_SOUBORU, tak ten je použit jako soubor historie. " "Jinak\n" @@ -3477,8 +3596,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:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3488,7 +3606,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3507,11 +3625,11 @@ msgstr "" " pÅ™epínaÄů bude vypsán stav vÅ¡ech aktivních úloh.\n" " \n" " PÅ™epínaÄe:\n" -" -l\tvypíše navíc ID procesů\n" -" -n\tvypíše pouze procesy, které od minulého oznámení zmÄ›nily stav\n" -" -p\tvypíše pouze ID procesů\n" -" -r\tzúží výstup jen na běžící úlohy\n" -" -s\tzúží výstup jen na pozastavené úlohy\n" +" -l vypíše navíc ID procesů\n" +" -n vypíše pouze procesy, které od minulého oznámení zmÄ›nily stav\n" +" -p vypíše pouze ID procesů\n" +" -r zúží výstup jen na běžící úlohy\n" +" -s zúží výstup jen na pozastavené úlohy\n" " \n" " Je-li použito -x, bude spuÅ¡tÄ›n příkaz, jakmile vÅ¡echny úlohy uvedené " "mezi\n" @@ -3523,7 +3641,7 @@ msgstr "" "chyba.\n" " Byl-ly použit pÅ™epínaÄ -x, vrátí návratový kód PŘÃKAZU." -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3533,7 +3651,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3545,15 +3663,16 @@ msgstr "" " shell použije vlastní pÅ™edstavu o souÄasné úloze.\n" " \n" " PÅ™epínaÄe:\n" -" -a\todstraní vÅ¡echny úlohy, pokud nebyla žádná ÚLOHA urÄena\n" -" -h\toznaÄí každou ÚLOHU tak, že jí nebude zaslán SIGHUP, až shell sám\n" -" \tobdrží tento signál\n" -" -r\todstraní jen běžící úlohy\n" +" -a odstraní vÅ¡echny úlohy, pokud nebyla žádná ÚLOHA urÄena\n" +" -h oznaÄí každou ÚLOHU tak, že jí nebude zaslán SIGHUP, až shell sám\n" +" obdrží tento signál\n" +" -r odstraní jen běžící úlohy\n" " \n" " Návratový kód:\n" " Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo ÚLOHA." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3565,7 +3684,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3581,11 +3701,12 @@ msgstr "" "SIGTERM.\n" " \n" " PÅ™epínaÄe:\n" -" -s sig\tSIG je název signálu\n" -" -n sig\tSIG je Äíslo signálu\n" -" -l\tvypíše Äísla signálů; pokud „-l“ následují argumenty, má\n" -" \tse za to, že se jedná o Äísla signálů, pro které se mají vyspat\n" -" \tjejich názvy.\n" +" -s sig SIG je název signálu\n" +" -n sig SIG je Äíslo signálu\n" +" -l vypíše Äísla signálů; pokud „-l“ následují argumenty, má\n" +" se za to, že se jedná o Äísla signálů, pro které se mají " +"vyspat\n" +" jejich názvy.\n" " \n" " Kill je vestavÄ›ný příkaz shellu ze dvou důvodů: umožňuje použít\n" " identifikátory úloh namísto ID procesů a umožní zabíjet procesy i poté,\n" @@ -3594,7 +3715,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:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3681,7 +3802,7 @@ msgstr "" " Pokud poslední ARGUMENT je vyhodnocen na 0, let vrátí 1. Jinak je\n" " navrácena 0." -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3702,27 +3823,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3745,29 +3867,38 @@ msgstr "" "REPLY.\n" " \n" " PÅ™epínaÄe:\n" -" -a pole\tnaÄtená slova budou pÅ™iÅ™azena do postupných prvků POLE\n" -" \t\tpoÄínaje indexem nula\n" -" -d oddÄ›lovaÄ\tpokraÄuje, dokud není naÄten první znak ODDÄšLOVAÄŒE\n" -" \t\tnamísto nového řádku\n" -" -e\t\tv interaktivním shellu bude řádek naÄten pomocí Readline\n" -" -i text\tpoužije TEXT jako prvotní text pro Readline\n" -" -n p_znaků\tvrátí řízení po naÄtení P_ZNAKÅ® znaků, místo Äekání na\n" -" \t\tnový řádek, avÅ¡ak respektuje oddÄ›lovaÄ, je-li ménÄ› než P_ZNAKÅ®\n" -" -N p_znaků\tvrátí řízení pouze po naÄtení pÅ™esnÄ› P_ZNAKÅ® znaků,\n" -" \t\tpokud se neobjeví konec souboru nebo nevyprší limit,\n" -" \t\tignoruje jakýkoliv oddÄ›lovaÄ\n" -" -p výzva\tvypíše Å™etÄ›zec VÃZVA bez závÄ›reÄného nového řádku dříve,\n" -" \t\tnež se zahájí naÄítání\n" -" -r\t\tnepovolí zpÄ›tná lomítka pro escapování jakýchkoliv znaků\n" -" -s\t\tvstup pocházející z terminálu nebude zobrazován\n" -" -t limit\tumožní vyprÅ¡ení Äasového limitu a vrácení chyby, pokud\n" -" \t\tnebude naÄten celý řádek do LIMIT sekund. Hodnota promÄ›nné\n" -" \t\tTMOUT pÅ™edstavuje implicitní limit. LIMIT smí být desetinné\n" -" \t\tÄíslo. Je-li LIMIT 0, read okamžitÄ› skonÄí, aniž by zkusil\n" -" \t\tnaÄíst jakákoliv data, a vrátí úspÄ›ch, jen bude-li na zadaném\n" -" \t\tdeskriptoru souboru pÅ™ipraven vstup. Návratový kód bude vÄ›tší než\n" -" \t\t128, pokud Äasový limit bude pÅ™ekroÄen.\n" -" -u fd\t\tÄte z deskriptoru souboru FD namísto standardního vstupu\n" +" -a pole naÄtená slova budou pÅ™iÅ™azena do postupných prvků POLE\n" +" poÄínaje indexem nula\n" +" -d oddÄ›lovaÄ pokraÄuje, dokud není naÄten první znak ODDÄšLOVAÄŒE\n" +" namísto nového řádku\n" +" -e v interaktivním shellu bude řádek naÄten pomocí " +"Readline\n" +" -i text použije TEXT jako prvotní text pro Readline\n" +" -n p_znaků vrátí řízení po naÄtení P_ZNAKÅ® znaků, místo Äekání na\n" +" nový řádek, avÅ¡ak respektuje oddÄ›lovaÄ, je-li ménÄ› než\n" +" P_ZNAKÅ®\n" +" -N p_znaků vrátí řízení pouze po naÄtení pÅ™esnÄ› P_ZNAKÅ® znaků,\n" +" pokud se neobjeví konec souboru nebo nevyprší limit,\n" +" ignoruje jakýkoliv oddÄ›lovaÄ\n" +" -p výzva vypíše Å™etÄ›zec VÃZVA bez závÄ›reÄného nového řádku " +"dříve,\n" +" než se zahájí naÄítání\n" +" -r nepovolí zpÄ›tná lomítka pro escapování jakýchkoliv " +"znaků\n" +" -s vstup pocházející z terminálu nebude zobrazován\n" +" -t limit umožní vyprÅ¡ení Äasového limitu a vrácení chyby, pokud\n" +" nebude naÄten celý řádek do LIMIT sekund. Hodnota " +"promÄ›nné\n" +" TMOUT pÅ™edstavuje implicitní limit. LIMIT smí být " +"desetinné\n" +" Äíslo. Je-li LIMIT 0, read okamžitÄ› skonÄí, aniž by " +"zkusil\n" +" naÄíst jakákoliv data, a vrátí úspÄ›ch, jen bude-li na\n" +" zadaném deskriptoru souboru pÅ™ipraven vstup. Návratový\n" +" kód bude vÄ›tší než 128, pokud Äasový limit bude " +"pÅ™ekroÄen.\n" +" -u fd Äte z deskriptoru souboru FD namísto standardního " +"vstupu\n" " \n" " Návratový kód:\n" " Návratový kód je nula, pokud se nenarazí na konec souboru, Äasový limit\n" @@ -3776,7 +3907,7 @@ msgstr "" "souboru\n" " jako argument -u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3798,7 +3929,8 @@ msgstr "" " Návratová hodnota:\n" " Vrátí N, nebo selže, pokud shell neprovádí funkci nebo skript." -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3866,7 +3998,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3970,7 +4103,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspÄ›ch, pokud nebyl zadán neplatný argument." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3980,7 +4113,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3996,10 +4129,10 @@ msgstr "" " Pro každé JMÉNO odstraní odpovídající promÄ›nnou nebo funkci.\n" " \n" " PÅ™epínaÄe:\n" -" -f\tpovažuje každé JMÉNO za funkci shellu\n" -" -v\tpovažuje každé JMÉNO za promÄ›nnou shellu\n" -" -n\tpovažuje každé JMÉNO za odkaz na název a odstraní promÄ›nnou samu\n" -" \tnamísto promÄ›nné, na kterou odkazuje\n" +" -f považuje každé JMÉNO za funkci shellu\n" +" -v považuje každé JMÉNO za promÄ›nnou shellu\n" +" -n považuje každé JMÉNO za odkaz na název a odstraní promÄ›nnou samu\n" +" namísto promÄ›nné, na kterou odkazuje\n" " \n" " Bez tÄ›chto dvou příznaků unset nejprve zkusí zruÅ¡it promÄ›nnou a pokud " "toto\n" @@ -4011,7 +4144,7 @@ msgstr "" " Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a JMÉNO není jen pro\n" " Ätení." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4046,7 +4179,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo NÃZEV." -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4058,9 +4191,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4076,18 +4208,18 @@ msgstr "" " pro Ätení pÅ™iÅ™adí HODNOTU.\n" " \n" " PÅ™epínaÄe:\n" -" -a\tvztahuje se na promÄ›nné typu Äíslované pole\n" -" -A\tvztahuje se na promÄ›nné typu asociativní pole\n" -" -f\tvztahuje se funkce shellu\n" -" -p\tzobrazí seznam vÅ¡ech promÄ›nných nebo funkcí jen pro Ätení\n" -" \tv závislosti podle toho, zda-li byl zadán pÅ™epínaÄ -f\n" +" -a vztahuje se na promÄ›nné typu Äíslované pole\n" +" -A vztahuje se na promÄ›nné typu asociativní pole\n" +" -f vztahuje se funkce shellu\n" +" -p zobrazí seznam vÅ¡ech promÄ›nných nebo funkcí jen pro Ätení\n" +" v závislosti podle toho, zda-li byl zadán pÅ™epínaÄ -f\n" " \n" " Argument „--“ zakáže zpracování dalších pÅ™epínaÄů.\n" " \n" " Návratový kód:\n" " Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo NÃZEV." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4105,7 +4237,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspÄ›ch, pokud N není záporný a není vÄ›tší než $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4129,7 +4261,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:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4153,7 +4285,7 @@ msgstr "" " Návratový kód:\n" " Vrací úspÄ›ch, pokud je správa úloh zapnuta a nevyskytla se chyba." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4217,9 +4349,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4323,7 +4455,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:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4335,7 +4467,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:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4355,7 +4487,7 @@ msgstr "" " Návratový kód:\n" " Vždy uspÄ›je." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4439,7 +4571,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspÄ›ch, pokud SIGSPEC a zadané pÅ™epínaÄe jsou platné." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4448,18 +4580,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4474,28 +4606,28 @@ msgstr "" " název příkazu.\n" " \n" " PÅ™epínaÄe\n" -" -a\tzobrazí vÅ¡echna místa, kde se nalézá spustitelný program\n" -" \tpojmenovaný NÃZEV. To zahrnuje aliasy, vestavÄ›né příkazy a funkce\n" -" \tjen a pouze tehdy, když není rovněž použit pÅ™epínaÄ -p.\n" -" -f\tpotlaÄí hledání mezi funkcemi shellu\n" -" -P\tvynutí prohledání PATH na každý NÃZEV, dokonce i když se\n" -" \tjedná o alias, vestavÄ›ný příkaz nebo funkci, a vrátí název\n" -" \tsouboru na disku, který by byl spuÅ¡tÄ›n\n" -" -p\tbuÄ vrátí jméno souboru na disku, který by byl spuÅ¡tÄ›n,\n" -" \tnebo nic, pokud „type -t NÃZEV“ by nevrátil „file“ (soubor)\n" -" -t\tvypíše jedno slovo z tÄ›chto: „alias“, „keyword“, „function“,\n" -" \t„builtin“, „file“ nebo „“, je-li NÃZEV alias, klíÄové slovo\n" -" \tshellu, shellová funkce, vestavÄ›ný příkaz shellu, soubor na\n" -" \tdisku nebo nenalezený příkaz\n" +" -a zobrazí vÅ¡echna místa, kde se nalézá spustitelný program\n" +" pojmenovaný NÃZEV. To zahrnuje aliasy, vestavÄ›né příkazy a funkce\n" +" jen a pouze tehdy, když není rovněž použit pÅ™epínaÄ -p.\n" +" -f potlaÄí hledání mezi funkcemi shellu\n" +" -P vynutí prohledání PATH na každý NÃZEV, dokonce i když se\n" +" jedná o alias, vestavÄ›ný příkaz nebo funkci, a vrátí název\n" +" souboru na disku, který by byl spuÅ¡tÄ›n\n" +" -p buÄ vrátí jméno souboru na disku, který by byl spuÅ¡tÄ›n,\n" +" nebo nic, pokud „type -t NÃZEV“ by nevrátil „file“ (soubor)\n" +" -t vypíše jedno slovo z tÄ›chto: „alias“, „keyword“, „function“,\n" +" „builtin“, „file“ nebo „“, je-li NÃZEV alias, klíÄové slovo\n" +" shellu, shellová funkce, vestavÄ›ný příkaz shellu, soubor na\n" +" disku nebo nenalezený příkaz\n" " \n" " Argumenty:\n" -" NÃZEV\tNázev příkazu urÄený k výkladu.\n" +" NÃZEV Název příkazu urÄený k výkladu.\n" " \n" " Návratový kód:\n" " Vrátí úspÄ›ch, pokud vÅ¡echny NÃZVY byly nalezeny. Selže, pokud nÄ›které\n" " nalezeny nebyly." -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4513,6 +4645,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4524,7 +4657,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4547,28 +4681,31 @@ msgstr "" " spuÅ¡tÄ›ných (na systémech, které takovou kontrolu umožňují).\n" " \n" " PÅ™epínaÄe:\n" -" -S\tpoužije se „mÄ›kké“ (soft) omezení zdroje\n" -" -H\tpoužije se „tvrdé“ (hard) omezení zdroje\n" -" -a\tnahlásí vÅ¡echna souÄasná omezení (limity)\n" -" -b\tvelikost vyrovnávací pamÄ›ti socketů\n" -" -c\tmaximální velikost vytvářených core souborů (výpis pamÄ›ti " +" -S použije se „mÄ›kké“ (soft) omezení zdroje\n" +" -H použije se „tvrdé“ (hard) omezení zdroje\n" +" -a nahlásí vÅ¡echna souÄasná omezení (limity)\n" +" -b velikost vyrovnávací pamÄ›ti socketů\n" +" -c maximální velikost vytvářených core souborů (výpis pamÄ›ti " "programu)\n" -" -d\tmaximální velikost datového segmentu procesu\n" -" -e\tmaximální plánovací priorita („nice“)\n" -" -f\tmaximální velikost souborů zapsaných shellem a jeho potomky\n" -" -i\tmaximální poÄet Äekajících signálů\n" -" -l\tmaximální velikost pamÄ›ti, kterou může proces zamknout\n" -" -m\tmaximální velikost rezidentní pamÄ›ti (resident set size)\n" -" -n\tmaximální poÄet otevÅ™ených deskriptorů souboru\n" -" -p\tvelikost vyrovnávací pamÄ›ti rour\n" -" -q\tmaximální poÄet bajtů ve frontÄ› posixových zpráv\n" -" -r\tmaximální priorita plánování v reálném Äase\n" -" -s\tmaximální velikost zásobníku\n" -" -t\tmaximální množství procesorového Äasu v sekundách\n" -" -u\tmaximální poÄet procesů uživatele\n" -" -v\tvelikost virtuální pamÄ›ti\n" -" -x\tmaximální poÄet zámků na souborech\n" -" -T\tmaximální poÄet vláken\n" +" -d maximální velikost datového segmentu procesu\n" +" -e maximální plánovací priorita („nice“)\n" +" -f maximální velikost souborů zapsaných shellem a jeho potomky\n" +" -i maximální poÄet Äekajících signálů\n" +" -k maximální poÄet jaderných front událostí („kqueue“) alokovaných\n" +" pro tento proces\n" +" -l maximální velikost pamÄ›ti, kterou může proces zamknout\n" +" -m maximální velikost rezidentní pamÄ›ti (resident set size)\n" +" -n maximální poÄet otevÅ™ených deskriptorů souboru\n" +" -p velikost vyrovnávací pamÄ›ti rour\n" +" -q maximální poÄet bajtů ve frontÄ› posixových zpráv\n" +" -r maximální priorita plánování v reálném Äase\n" +" -s maximální velikost zásobníku\n" +" -t maximální množství procesorového Äasu v sekundách\n" +" -u maximální poÄet procesů uživatele\n" +" -v velikost virtuální pamÄ›ti\n" +" -x maximální poÄet zámků na souborech\n" +" -P maximální poÄet pseudoterminálů\n" +" -T maximální poÄet vláken\n" " \n" " Ne vÅ¡echny pÅ™epínaÄe jsou dostupné na vÅ¡ech platformách.\n" " \n" @@ -4585,7 +4722,7 @@ msgstr "" " Návratová hodnota:\n" " Vrací úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4618,7 +4755,7 @@ msgstr "" " Návratový kód\n" " Vrátí úspÄ›ch, pokud nebyl zadán neplatný MÓD nebo pÅ™epínaÄ." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4653,7 +4790,7 @@ msgstr "" " Vrátí kód posledního ID. Selže, pokud ID není platný nebo byl zadán\n" " neplatný pÅ™epínaÄ." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4677,7 +4814,7 @@ msgstr "" " Vrátí kód posledního PID. Selže, pokud PID není platný nebo byl zadán\n" " neplatný pÅ™epínaÄ." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4701,7 +4838,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4730,7 +4867,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy vykonaného příkazu." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4772,7 +4909,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provádÄ›ného příkazu." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4803,7 +4940,7 @@ msgstr "" " Návratový kód:\n" " Návratová hodnota je návratová hodnota KOLONY." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4821,7 +4958,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4856,7 +4993,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4875,7 +5012,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4893,7 +5030,8 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4903,7 +5041,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Vytvoří koproces pojmenovaný NÃZEV.\n" " \n" @@ -4915,7 +5053,7 @@ msgstr "" " Návratový kód:\n" " Vrátí návratový kód PŘÃKAZU." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4940,7 +5078,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspÄ›ch, pokud NÃZEV není jen pro Ätení." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4957,7 +5095,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy spuÅ¡tÄ›ného příkazu." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4982,7 +5120,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód obnovené úlohy." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5004,7 +5142,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:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5056,7 +5194,7 @@ msgstr "" " Návratový kód:\n" " 0 nebo 1 podle hodnoty VÃRAZU." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5161,7 +5299,7 @@ msgstr "" " \t\trozliÅ¡ení, které příkazy by mÄ›ly být uloženy do seznamu\n" " \t\thistorie.\n" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5171,19 +5309,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5198,19 +5336,19 @@ msgstr "" " argumentů prohodí dva vrchní adresáře.\n" " \n" " PÅ™epínaÄe:\n" -" -n\tPotlaÄí obvyklou zmÄ›nu adresáře, když se na zásobník pÅ™idávají\n" -" \tadresáře, takže zmÄ›nÄ›n bude pouze zásobník.\n" +" -n PotlaÄí obvyklou zmÄ›nu adresáře, když se na zásobník pÅ™idávají\n" +" adresáře, takže zmÄ›nÄ›n bude pouze zásobník.\n" " \n" " Argumenty:\n" -" +N\tZrotuje zásobník tak, že N. adresář (poÄítáno zleva na seznamu\n" -" \tzobrazovaném pomocí „dirs“, poÄínaje nulou) se dostane na vrchol.\n" +" +N Zrotuje zásobník tak, že N. adresář (poÄítáno zleva na seznamu\n" +" zobrazovaném pomocí „dirs“, poÄínaje nulou) se dostane na vrchol.\n" " \n" -" -N\tZrotuje zásobník tak, že N. adresář (poÄítáno zprava na seznamu\n" -" \tzobrazovaném pomocí „dirs“, poÄínaje nulou) se dostane na vrchol.\n" +" -N Zrotuje zásobník tak, že N. adresář (poÄítáno zprava na seznamu\n" +" zobrazovaném pomocí „dirs“, poÄínaje nulou) se dostane na vrchol.\n" " \n" -" adresář\n" -" \tPÅ™idá ADRESÃŘ na vrchol zásobníku adresářů a uÄiní jej novým\n" -" \tsouÄasným pracovním adresářem.\n" +" ADRESÃŘ\n" +" PÅ™idá ADRESÃŘ na vrchol zásobníku adresářů a uÄiní jej novým\n" +" souÄasným pracovním adresářem.\n" " \n" " Zásobník adresářů si můžete prohlédnout příkazem „dirs“.\n" " \n" @@ -5218,7 +5356,7 @@ msgstr "" " Vrátí úspÄ›ch, pokud nebyl zadán neplatný argument a zmÄ›na adresáře\n" " neselhala." -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5227,16 +5365,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5250,17 +5388,17 @@ msgstr "" " z vrcholu zásobníku a pÅ™epne do nového adresáře na vrchu zásobníku.\n" " \n" " PÅ™epínaÄe:\n" -" -n\tPotlaÄí obvyklou zmÄ›nu adresáře, když se ze zásobníku odebírají\n" -" \tadresáře, takže zmÄ›nÄ›n bude pouze zásobník.\n" +" -n PotlaÄí obvyklou zmÄ›nu adresáře, když se ze zásobníku odebírají\n" +" adresáře, takže zmÄ›nÄ›n bude pouze zásobník.\n" " \n" " Argumenty:\n" -" +N\tOdstraní N. položku poÄítáno zleva na seznamu zobrazovaném\n" -" \tpomocí „dirs“, poÄínaje nulou. Na příklad: „popd +0“ odstraní\n" -" první adresář, „popd -1“ druhý.\n" +" +N Odstraní N. položku poÄítáno zleva na seznamu zobrazovaném\n" +" pomocí „dirs“, poÄínaje nulou. Na příklad: „popd +0“ odstraní\n" +" první adresář, „popd -1“ druhý.\n" " \n" -" -N\tOdstraní N. položku poÄítáno zprava na seznamu zobrazovaném\n" -" \tpomocí „dirs“, poÄínaje nulou. Na příklad: „popd -0“ odstraní\n" -" poslední adresář, „popd -1“ další vedle posledního.\n" +" -N Odstraní N. položku poÄítáno zprava na seznamu zobrazovaném\n" +" pomocí „dirs“, poÄínaje nulou. Na příklad: „popd -0“ odstraní\n" +" poslední adresář, „popd -1“ další vedle posledního.\n" " \n" " Zásobník adresářů si můžete prohlédnout příkazem „dirs“.\n" " \n" @@ -5268,7 +5406,7 @@ msgstr "" " Vrátí úspÄ›ch, pokud nebyl zadán neplatný argument nebo neselhala zmÄ›na\n" " adresáře." -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5279,19 +5417,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5303,23 +5441,23 @@ msgstr "" "„popd“.\n" " \n" " PÅ™epínaÄe:\n" -" -c\tvyprázdní zásobník adresářů tím, že smaže vÅ¡echny jeho prvky\n" -" -l\tnevypíše vlnkou zkrácené verze adresářů, které jsou relativní\n" -" \tvaÅ¡emu domovskému adresáři\n" -" -p\tvypíše zásobník adresářů po jedné položce na řádek\n" -" -v\tvypíše zásobník adresářů po jedné položce na řádek, pÅ™iÄemž\n" -" \tnázvu adresáře pÅ™edÅ™adí jeho umístÄ›ní na zásobníku\n" +" -c vyprázdní zásobník adresářů tím, že smaže vÅ¡echny jeho prvky\n" +" -l nevypíše vlnkou zkrácené verze adresářů, které jsou relativní\n" +" vaÅ¡emu domovskému adresáři\n" +" -p vypíše zásobník adresářů po jedné položce na řádek\n" +" -v vypíše zásobník adresářů po jedné položce na řádek, pÅ™iÄemž\n" +" názvu adresáře pÅ™edÅ™adí jeho umístÄ›ní na zásobníku\n" " \n" " Argumenty:\n" -" +N\tzobrazí N. položku poÄítáno zleva na seznamu, který zobrazuje\n" -" \tdirs, když je vyvolán bez pÅ™epínaÄů, poÄínaje nulou.\n" +" +N zobrazí N. položku poÄítáno zleva na seznamu, který zobrazuje\n" +" dirs, když je vyvolán bez pÅ™epínaÄů, poÄínaje nulou.\n" " \n" -" -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. \n" +" -N zobrazí N. položku poÄítáno zprava na seznamu, který zobrazuje\n" +" dirs, když je vyvolán bez pÅ™epínaÄů, poÄínaje nulou. \n" " Návratový kód:\n" " Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5357,7 +5495,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:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5374,15 +5512,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5398,8 +5536,8 @@ msgstr "" "Naformátuje a vypíše ARGUMENTY podle definice FORMÃTU.\n" " \n" " PÅ™epínaÄe:\n" -" -v promÄ›nná\tvýstup umístí do promÄ›nné shellu PROMÄšNNà namísto\n" -" \t\todeslání na standardní výstup.\n" +" -v promÄ›nná výstup umístí do promÄ›nné shellu PROMÄšNNà namísto\n" +" odeslání na standardní výstup.\n" " \n" " FORMÃT je Å™etÄ›zec znaků, který obsahuje tÅ™i druhy objektů: obyÄejné " "znaky,\n" @@ -5412,12 +5550,12 @@ msgstr "" " Tento printf interpretuje vedle standardních formátovacích definic\n" " popsaných v printf(1) též:\n" " \n" -" %b\texpanduje posloupnosti escapované zpÄ›tným lomítkem\n" -" \t\tv odpovídajícím argumentu\n" -" %q\toescapuje argument takovým způsobem, že jej bude možné\n" -" \t\tpoužít jako vstup shellu\n" -" %(FORMÃT)T\tvypíše Å™etÄ›zec data-Äasu tak, jako by to byl výstup\n" -" \t\tfunkce strftime(3) s formátovacím Å™etÄ›zcem FORMÃT\n" +" %b expanduje posloupnosti escapované zpÄ›tným lomítkem\n" +" v odpovídajícím argumentu\n" +" %q oescapuje argument takovým způsobem, že jej bude možné\n" +" použít jako vstup shellu\n" +" %(FORMÃT)T vypíše Å™etÄ›zec data-Äasu tak, jako by to byl výstup\n" +" funkce strftime(3) s formátovacím Å™etÄ›zcem FORMÃT\n" " \n" " FORMÃT lze znovu použít podle potÅ™eby ke zpracování vÅ¡ech argumentů. Je-" "li\n" @@ -5430,7 +5568,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:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5443,11 +5581,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5463,13 +5601,13 @@ msgstr "" " v podobÄ› vhodné pro jejich znovu užití jako vstup.\n" " \n" " PÅ™epínaÄe:\n" -" -p\tvypíše existující pravidla doplňování v znovu použitelném tvaru\n" -" -r\todstraní pro každý NÃZEV doplňovací pravidlo, nebo není-li zadán\n" -" \tžádný NÃZEV, zruší vÅ¡echna pravidla\n" -" -D\tpoužije pravidla doplňování a akce jako implicitní pro příkazy,\n" -" \tkteré nemají žádné urÄité pravidlo doplňování definováno\n" -" -E\tpoužije pravidla doplňování á akce na „prázdné“ příkazy –\n" -" \tpravidla doplňování se uplatní na prázdný řádek\n" +" -p vypíše existující pravidla doplňování v znovu použitelném tvaru\n" +" -r odstraní pro každý NÃZEV doplňovací pravidlo, nebo není-li zadán\n" +" žádný NÃZEV, zruší vÅ¡echna pravidla\n" +" -D použije pravidla doplňování a akce jako implicitní pro příkazy,\n" +" které nemají žádné urÄité pravidlo doplňování definováno\n" +" -E použije pravidla doplňování á akce na „prázdné“ příkazy –\n" +" pravidla doplňování se uplatní na prázdný řádek\n" " \n" " Použije-li se doplňování, akce se uplatní v poÅ™adí, v jakém jsou " "vypsány\n" @@ -5479,7 +5617,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:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5500,7 +5638,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:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5558,7 +5696,7 @@ msgstr "" "definováno\n" " pravidlo doplňování." -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5569,20 +5707,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5606,21 +5745,22 @@ msgstr "" " Implicitním POLEM je promÄ›nná MAPFILE.\n" " \n" " PÅ™epínaÄe:\n" -" -n poÄet\tZkopíruje nejvýše POÄŒET řádků. Je-li POÄŒET 0,\n" -" \t\tzkopíruje vÅ¡echny řádky.\n" -" -O poÄátek\tPÅ™iÅ™azování do POLE zaÄne na indexu POÄŒÃTEK.\n" -" \t\tImplicitní index je 0.\n" -" -s poÄet\tZahodí prvních POÄŒET naÄtených řádků.\n" -" -t\t\tOdstraní znak konce řádku z každého naÄteného řádku.\n" -" -u fd\t\tŘádky Äte z deskriptoru souboru FD namísto ze\n" -" \t\tstandardního vstupu.\n" -" -C volání\tVyhodnotí VOLÃNà pokaždé, když je naÄteno MNOŽSTVÃ\n" -" \t\třádků.\n" -" -c množství\tUdává poÄet řádků, které je tÅ™eba pÅ™eÄíst, mezi\n" -" \t\tkaždým zavoláním VOLÃNÃ.\n" +" -d oddÄ›lovaÄ Å˜Ã¡dky zakonÄí ODDÄšLOVAÄŒEM namísto znakem nového řádku\n" +" -n poÄet Zkopíruje nejvýše POÄŒET řádků. Je-li POÄŒET 0,\n" +" zkopíruje vÅ¡echny řádky\n" +" -O poÄátek PÅ™iÅ™azování do POLE zaÄne na indexu POÄŒÃTEK,\n" +" výchozí index je 0\n" +" -s poÄet Zahodí prvních POÄŒET naÄtených řádků\n" +" -t Odstraní znak konce řádku z každého naÄteného řádku\n" +" -u fd Řádky Äte z deskriptoru souboru FD namísto ze\n" +" standardního vstupu\n" +" -C volání Vyhodnotí VOLÃNà pokaždé, když je naÄteno MNOŽSTVÃ\n" +" řádků\n" +" -c množství Udává poÄet řádků, které je tÅ™eba pÅ™eÄíst, mezi\n" +" každým zavoláním VOLÃNÃ\n" " \n" " Argumenty:\n" -" POLE\t\tNázev promÄ›nné typu pole, do které budou pÅ™iÅ™azena data.\n" +" POLE Název promÄ›nné typu pole, do které budou pÅ™iÅ™azena data\n" " \n" " Je-li uvedeno -C bez -c, implicitní množství bude 5000. Vyhodnocovanému\n" " VOLÃNà budou jako dodateÄné argumenty pÅ™edány index prvku pole, do\n" @@ -5634,7 +5774,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:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5644,6 +5784,24 @@ msgstr "" " \n" " Synonymum pro „mapfile“." +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2012 Free Software Foundation, Inc." + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" @@ -5803,9 +5961,6 @@ msgstr "" #~ msgid "removes the top directory from the stack, and cd's to the new" #~ msgstr "odstraní adresář z vrcholu zásobníku a pÅ™epne se do nového" -#~ msgid "top directory." -#~ msgstr "vrcholového adresáře." - #~ msgid "+N removes the Nth entry counting from the left of the list" #~ msgstr "+N odstraní N. položku poÄítáno zleva na seznamu," diff --git a/po/da.gmo b/po/da.gmo index 24a3ccd0c4133240d94f3a959140b9e9123483d3..6aa94c4e2c250b8e724588a6c43eb5966e76d10b 100644 GIT binary patch delta 10213 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 YER}o+K$xSk3GBeIh5>uCP*Sgf| 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 Q6*)nlmuzgVisX9!ALxz5W&i*H diff --git a/po/da.po b/po/da.po index 07807bf..3bda8e5 100644 --- a/po/da.po +++ b/po/da.po @@ -12,84 +12,90 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\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" # Den er jeg altsÃ¥ ikke helt sikker pÃ¥ -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "ugyldigt arrayindeks" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: kan ikke konvertere indekseret til associativt array" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ugyldig nøgle til associativt array" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: kan ikke tildele til ikkenumerisk indeks" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: et indeks skal bruges ved tildeling til associativt array" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: kan ikke oprette %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: kan ikke finde tastetildeling for kommando" -#: bashline.c:4069 +#: bashline.c:4189 #, 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:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "ingen afsluttende \"%c\" i %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: manglende kolonseparator" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "\"%s\": ugyldigt tastetildelingsnavn" @@ -98,45 +104,45 @@ msgstr "\"%s\": ugyldigt tastetildelingsnavn" msgid "line editing not enabled" msgstr "linjeredigering ikke slÃ¥et til" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "\"%s\": ugyldigt tastetildelingsnavn" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: kan ikke læse: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "\"%s\": kan ikke løsne" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "\"%s\": ukendt funktionsnavn" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s er ikke bundet til nogen taster.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s kan kaldes via " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "løkketæller" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "kun meningsfuld i en \"for\"-, \"while\"- eller \"until\"-løkke" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -146,300 +152,329 @@ msgstr "" " \n" " NÃ¥r UDTRYK udelades returneres " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME ikke indstillet" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "for mange argumenter" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "ingen anden mappe" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD ikke indstillet" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "linje %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "advarsel: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: brug: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: tilvalg kræver et argument" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: numerisk argument pÃ¥krævet" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: ikke fundet" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: ugyldigt tilvalg" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: ugyldigt tilvalgsnavn" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": ikke et gyldigt identificeringsnavn" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "ugyldigt oktaltal" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "ugyldigt heksadecimalt tal" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "ugyldigt tal" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ugyldig signalspecifikation" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "\"%s\": ikke en pid eller gyldig job-spec" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: skrivebeskyttet variabel" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s udenfor rækkevidde" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s udenfor rækkevidde" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: intet sÃ¥dant job" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobkontrol" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "ingen jobkontrol" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: begrænset" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "begrænset" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ikke indbygget i skallen" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "skrivefejl: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "fejl ved indstilling af terminalattribut: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "fejl ved indhentning af terminalattribut: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fejl ved indhentning af nuværende mappe: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: tvetydig job-spec" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: ugyldigt handlingsnavn" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen fuldførselsspecifikation" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "advarsel: tilvalget -F vil mÃ¥ske ikke virke, som du forventer" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "advarsel: tilvalget -C vil mÃ¥ske ikke virke, som du forventer" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "ikke i gang med at eksekvere fuldførelsesfunktion" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "kan kun bruges i en funktion" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, fuzzy, c-format +msgid "%s: circular name reference" +msgstr "%d: ugyldig filbeskrivelse: %s" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%d: ugyldig filbeskrivelse: %s" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "kan ikke bruge \"-f\" til at lave funktioner" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: skrivebeskyttet funktion" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: kan ikke destruere arrayvariabel pÃ¥ denne mÃ¥de" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: kan ikke konvertere associativt til indekseret array" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dynamisk indlæsning ikke tilgængelig" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "kan ikke Ã¥bne delt objekt %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "kan ikke finde %s i delt objekt %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: ikke dynamisk indlæst" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: kan ikke slette: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: er en mappe" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: ikke en regulær fil" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: fil er for stor" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan ikke eksekvere binær fil" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: kan ikke eksekvere: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "log ud\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "ikke en logind-skal: brug \"exit\"" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Der er stoppede job.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Der er kørende job.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "ingen kommando fundet" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "historikspecifikation" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: kan ikke Ã¥bne midl. fil: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "nuværende" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "job %d startet uden jobkontrol" @@ -458,26 +493,26 @@ msgstr "%s: et argument er pÃ¥krævet til tilvalget -- %c\n" msgid "hashing disabled" msgstr "hashing slÃ¥et fra" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hash-tabel tom\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "hits\tkommando\n" # Jeg antager at det sidste ` er det første af et sæt af anførselstegn og # det er derfor oversat til " -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Skalkommandoer som matcher nøgleordet \"" msgstr[1] "Skal-kommandoer som matcher nøgleordene \"" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -485,12 +520,12 @@ msgstr "" "ingen hjælpeemner matcher \"%s\". Prøv \"help help\" eller \"man -k %s\" " "eller \"info %s\"." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: kan ikke Ã¥bne: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -512,15 +547,20 @@ msgstr "" "En stjerne (*) ved siden af et navn betyder at kommandoen er slÃ¥et fra.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "kan ikke bruge mere end en af -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "historikposition" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: ugyldigt grænseargument" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: historikudvidelse fejlede" @@ -534,114 +574,114 @@ msgstr "%s: inlib fejlede" msgid "no other options allowed with `-x'" msgstr "ingen andre tilvalg er tilladt sammen med \"-x\"" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, 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:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Ukendt fejl" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "forventede et udtryk" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, fuzzy, c-format msgid "%s: not an indexed array" msgstr "%s: ikke en arrayvariabel" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ugyldig filbeskrivelsesspecifikation" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, 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:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: ugyldigt antal linjer" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: ugyldig array-startindeks" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ugyldigt tilbagekaldskvantum" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "tomt arrayvariabelnavn" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "understøttelse af arrayvariabel pÃ¥krævet" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": manglende formattegn" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: ugyldig specifikation af tidsudløb" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": ugyldigt formattegn" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "advarsel: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "manglende heksciffer for \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "manglende heksciffer for \\x" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "ingen anden mappe" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: ugyldigt grænseargument" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "mappestak tom" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "mappestakindeks" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -684,7 +724,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:711 +#: builtins/pushd.def:718 #, fuzzy msgid "" "Adds a directory to the top of the directory stack, or rotates\n" @@ -731,7 +771,7 @@ msgstr "" " \n" "Den indbyggede funktion \"dirs\" viser mappestakken." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -769,143 +809,153 @@ msgstr "" " \n" "Den indbyggede funktion \"dirs\" viser mappestakken." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ugyldig specifikation af tidsudløb" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "læsefejl: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "kan ikke fjerne en funktion og en variabel samtidig" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: kan ikke fjerne" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: kan ikke fjerne: skrivebeskyttet %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: ikke en arrayvariabel" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: ikke en funktion" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: kan ikke fjerne" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "skifttæller" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "kan ikke indstille og fjerne skaltilvalg samtidig" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ugyldigt navn for skaltilvalg" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "filnavnsargument pÃ¥krævet" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: fil ikke fundet" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "kan ikke sætte i hvile" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "kan ikke sætte en logindskal i hvile" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s er aliasset til \"%s\"\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s er et skalnøgleord\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s er en funktion\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s er indbygget i skallen\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s er indbygget i skallen\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s er %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s er hashet (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ugyldigt grænseargument" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "\"%c\": ugyldig kommando" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan ikke indhente grænse: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "grænse" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan ikke modificere grænse: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "oktalt tal" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "\"%c\": ugyldig symbolsk tilstandsoperator" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": ugyldigt symbolsk tilstandstegn" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " linje " @@ -919,77 +969,98 @@ msgstr "sidste kommando: %s\n" msgid "Aborting..." msgstr "Afbryder..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "ukendt kommandofejl" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "ugyldig kommandotype" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "dÃ¥rligt mellemled" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "dÃ¥rligt hop" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: ubundet variabel" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "kan ikke videresende standardinput fra /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": ugyldigt formateringstegn" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "datakanalfejl (pipe error)" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: begrænset: kan ikke specificere \"/\" i kommandonavne" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: kommando ikke fundet" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: dÃ¥rlig fortolker" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan ikke eksekvere binær fil" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s er indbygget i skallen\n" @@ -1003,7 +1074,7 @@ msgstr "%s er indbygget i skallen\n" # expansion. If the >(list) form is used, writing to the file will pro†# vide input for list. If the <(list) form is used, the file passed as # an argument should be read to obtain the output of list. -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan ikke duplikere fd %d til fd %d" @@ -1049,38 +1120,38 @@ msgstr "identifikator forventet efter præforøgelse eller -formindskelse" msgid "missing `)'" msgstr "manglende \")\"" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "syntaksfejl: operand forventet" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "syntaksfejl: ugyldig aritmetisk operator" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (fejlelement er \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "ugyldig aritmetisk grundtal" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "værdi for stor til grundtal" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: fejl i udtryk\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: kan ikke tilgÃ¥ overliggende mapper" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" @@ -1096,149 +1167,149 @@ msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer eksisterer allerede til ny fd %d" # ?? -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-datakanal (pipe)" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forgrenet pid %d figurerer i kørende job %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "sletter stoppet job %d med procesgruppe %ld" # ?? -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) i the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ingen process med det pid" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Færdig" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Stoppet" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Stoppet(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Kører" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Færdig(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Afslut %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Ukendt status" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(smed kerne) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "underproces setpgid (%ld til %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen optegnelse af proces %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d er stoppet" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: job er afbrudt" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d er allerede i baggrunden" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: linje %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (smed kerne)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd nu: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp fejlede" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "kan ikke indstille terminal-procesgruppe (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "ingen jobkontrol i denne skal" @@ -1292,17 +1363,17 @@ msgstr "realloc: underløb detekteret, mh_nbytes uden for interval" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: størrelse pÃ¥ start- og slut-bid afviger" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p allerede i tabel som fri?\n" @@ -1326,7 +1397,7 @@ msgstr "%s: ugyldig tjeneste" msgid "%s: bad network path specification" msgstr "%s: dÃ¥rlig specifikation for netværkssti" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "netværksoperation ikke understøttet" @@ -1363,230 +1434,267 @@ msgstr "Du har ny post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s er blevet læst\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "syntaksfejl: aritmetisk udtryk pÃ¥krævet" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "syntaksfejl: \";\" uventet" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaksfejl: \"((%s))\"" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: dÃ¥rlig instruktionstype %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document ved linje %d er adskilt af slut-pÃ¥-linje (ønskede \"%s\")" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_direction: videresendelsesinstruktion \"%d\" uden for interval" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "uventet EOF mens der ledtes efter samhørende \"%c\"" -#: parse.y:4170 +#: parse.y:4410 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:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaksfejl i betingelsesudtryk: uventet element \"%s\"" -#: parse.y:4179 +#: parse.y:4419 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:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "uventet element \"%s\", forventede \")\"" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "forventede \")\"" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "uventet argument \"%s\" til unær betingelsesoperator" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "uventet argument til unær betingelsesoperator" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "uventet udtryk \"%s\", ventede binær betingelsesoperator" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "ventedet binær betingelsesoperator" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "uventet argument \"%s\" til binær betingelsesoperator" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "uventet argument til binær betingelsesoperator" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "uventet udtryk \"%c\" i betingelseskommando" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "uventet udtryk \"%s\" i betingelseskommando" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "uventet udtryk \"%d\" i betingelseskommando" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaksfejl nær uventet udtryk \"%s\"" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "syntaksfejl nær \"%s\"" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "syntaksfejl: uventet slutning pÃ¥ fil" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "syntaksfejl" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Brug \"%s\" for at forlade skallen.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "uventet EOF mens der ledtes efter samhørende \")\"" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funktion \"%s\" ikke fundet" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: dÃ¥rligt mellemled \"%d\"" -#: print_cmd.c:373 +#: print_cmd.c:375 #, fuzzy, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "%d: ugyldig filbeskrivelse: %s" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": ugyldigt formateringstegn" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "fil-deskriptor uden for interval" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: tvetydig videresendelse" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: kan ikke overskrive eksisterende fil" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: begrænset: kan ikke videresende output" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "kan ikke danne midlertidig fil til here-dokument: %s" -#: redir.c:195 +#: redir.c:196 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: redir.c:582 +#: redir.c:586 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:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "videresendelsesfejl: kan ikke duplikere fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "kan ikke finde /tmp, opret venligst mappen!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp skal være et gyldigt mappenavn" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ugyldigt tilvalg" -#: shell.c:1682 +# Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" + +# Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: er en mappe" + +#: shell.c:1777 msgid "I have no name!" msgstr "Jeg har ikke noget navn!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1595,43 +1703,53 @@ msgstr "" "Brug:\t%s [langt GNU-tilvalg] [tilvalg] ...\n" "\t%s [langt GNU-tilvalg] [tilvalg] skript-fil ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Lange GNU-tilvalg:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Skal-tilvalg:\n" -#: shell.c:1835 +#: shell.c:1938 #, 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\tTilvalg -%s eller -o\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Brug kommandoen \"bashbug\" til at rapportere fejl.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ugyldig handling" @@ -1807,88 +1925,104 @@ msgstr "Ukendt signal #" msgid "Unknown Signal #%d" msgstr "Ukendt signal #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"%s\" i %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "kan ikke lave datakanal (pipe) til procesudskiftning" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "kan ikke danne underproces til procesudskiftning" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til læsning" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til skrivning" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "kan ikke duplikere navngiven datakanal (pipe) %s som %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "kan ikke danne datakanal (pipe) til kommandoudskiftning" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "kan ikke danne underproces til kommandoudskiftning" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: kan ikke duplikere datakanal (pipe) som fd 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%d: ugyldig filbeskrivelse: %s" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parameter null eller ikke indstillet" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: understreng-udtryk < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: dÃ¥rlig udskiftning" -#: subst.c:7583 +# -c Specify the number of lines read between each call to callback. +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: ugyldigt antal linjer" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "\"%s\": ugyldigt tastetildelingsnavn" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter null eller ikke indstillet" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: understreng-udtryk < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: kan ikke tildele pÃ¥ denne mÃ¥de" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "intet match: %s" @@ -1902,39 +2036,39 @@ msgstr "argument forventet" msgid "%s: integer expression expected" msgstr "%s: heltalsudtryk forventet" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "\")\" forventet" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "\")\" forventet, fandt %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: unær operator forventet" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: binær operator forventet" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "manglende \"]\"" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "ugyldigt signalnummer" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1942,85 +2076,85 @@ msgstr "" "run_pending_traps: signalhÃ¥ndtering er SIG_DFL, gensender %d (%s) til mig " "selv" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: ugyldigt signal %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "fejl under importering af funktionsdefinition for \"%s\"" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skalniveau (%d) for højt, genindstiller til 1" -#: variables.c:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%d: ugyldig filbeskrivelse: %s" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funktionskontekst ved nuværende navneomrÃ¥de" -#: variables.c:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%d: ugyldig filbeskrivelse: %s" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funktionskontekst ved nuværende navneomrÃ¥de" -#: variables.c:3891 +#: variables.c:4218 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parameter null eller ikke indstillet" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ugyldigt tegn %d i exportstr for %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "intet \"=\" i exportstr for %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ingen global_variables-kontekst" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: kan ikke Ã¥bne: %s" -#: variables.c:5262 +#: variables.c:5624 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: ugyldig filbeskrivelse: %s" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s udenfor rækkevidde" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2046,11 +2180,6 @@ msgstr "Dette er fri software; du kan frit ændre eller redistribuere det.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Der er INGEN GARANTI i det omfang loven tillader.\n" -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." - #: xmalloc.c:91 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2071,15 +2200,15 @@ msgstr "xmalloc: %s:%d: kan ikke allokere %lu bytes (%lu bytes allokeret)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "xmalloc: %s:%d: kan ikke allokere %lu bytes" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [navn[=værdi] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] navn [navn ...]" -#: builtins.c:51 +#: builtins.c:53 #, fuzzy msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" @@ -2089,117 +2218,105 @@ msgstr "" "nøglesek] [-x nøglesek:skalkommando] [nøglesek:readline-funktion eller " "readline-kommando]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [shell-builtin [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [expr]" -#: builtins.c:64 +#: builtins.c:66 #, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|-P] [mappe]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] kommando [arg ...]" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFilrtux] [-p] [navn[=værdi] ...]" -#: builtins.c:78 +#: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "typeset [-aAfFilrtux] [-p] navn[=værdi] ..." -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [tilvalg] navn[=værdi] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f filnavn] [navn ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts tilvalgsstreng navn [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a navn] [kommando [argumenter ...]] [videresendelse ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" # pat=rep betyder højst sandsynligt mønster=regulært udtryk, men jeg kan ikke finde pÃ¥ nogen 3-bogstavsudtryk som jeg man bruge for de to ting, som jeg synes er let forstÃ¥elige derfor har jeg ladet dem stÃ¥ -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e ename] [-lnr] [første] [sidste] eller fc -s [pat=rep] [kommando]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [job_spec]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [job_spec ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p stinavn] [-dt] [navn ...]" -#: builtins.c:117 +#: builtins.c:119 #, fuzzy msgid "help [-dms] [pattern ...]" msgstr "help [-ds] [mønster ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2207,15 +2324,16 @@ msgstr "" "history [-c] [-d forskydning] [n] eller history -anrw [filnavn] eller " "history -ps arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] eller jobs -x kommando [arger]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [jobspec ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2223,11 +2341,11 @@ msgstr "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... eller kill -l " "[sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 #, fuzzy msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " @@ -2236,105 +2354,101 @@ msgstr "" "read [-ers] [-a array] [-d adskil] [-i tekst] [-n ntegn] [-p prompt] [-t " "tidsgrænse] [-u fd] [navn ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 #, fuzzy msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o tilvalgsnavn] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [navn ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [navn[=værdi] ...] eller export -p" -#: builtins.c:146 +#: builtins.c:148 #, fuzzy msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-af] [navn[=værdi] ...] eller readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source filnavn [argumenter]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". filnavn [argumenter]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [udtryk]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] signal_spec ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] navn [navn ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [grænse]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [tilstand]" -#: builtins.c:175 +#: builtins.c:177 #, fuzzy msgid "wait [-n] [id ...]" msgstr "wait [id]" -#: builtins.c:179 +#: builtins.c:181 #, fuzzy msgid "wait [pid ...]" msgstr "wait [id]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NAVN [in ORD ... ] ; do KOMMANDOER; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( udtryk1; udtryk2; udtryk3 )); do KOMMANDOER; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NAVN [in ORD ... ;] do KOMMANDOER; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] datakanal" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case ORD in [MØNSTER [| MØNSTER]...) KOMMANDOER ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2342,63 +2456,63 @@ msgstr "" "if KOMMANDOER; then KOMMANDOER; [ elif KOMMANDOER; then KOMMANDOER; ]... " "[ else KOMMANDOER; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while KOMMANDOER; do KOMMANDOER; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until KOMMANDOER; do KOMMANDOER; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NAVN] kommando [videresendelser]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function navn { KOMMANDOER ; } eller navn () { KOMMANDOER ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ KOMMANDOER ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "job_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( udtryk ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ udtryk ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - Navn og betydning af nogle skalvariable" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | mappe]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [indstnavn ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [argumenter]" -#: builtins.c:229 +#: builtins.c:231 #, fuzzy msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" @@ -2409,29 +2523,31 @@ msgstr "" "globmønst] [-W ordliste] [-F funktion] [-C kommando] [-X filtermønst] [-P " "præfiks] [-S suffiks] [navn ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o valgmuligheder] [-A handling] [-G globmønst] [-" "W ordliste] [-F funktion] [-C kommando] [-X filtermønst] [-P præfiks] [-S " "suffiks] [ord]" -#: builtins.c:237 +#: builtins.c:239 #, fuzzy msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o valgmulighed] [navn ...]" -#: builtins.c:240 +#: builtins.c:242 +#, fuzzy msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "mapfile [-n antal] [-O oprindelse] [-s antal] [-t] [-u fd] [-C tilbagekald] " "[-c kvantum] [array]" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2439,7 +2555,8 @@ msgstr "" "readarray [-n antal] [-O oprindelse] [-s antal] [-t] [-u fd] [-C " "tilbagekald] [-c kvantum] [array]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2451,7 +2568,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2475,12 +2592,13 @@ msgstr "" " alias returnerer sand med mindre der gives et NAVN som der ikke er\n" " defineret noget alias for." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2491,7 +2609,7 @@ msgstr "" " \n" " Returner succes med mindre et NAVN ikke er et eksisterende alias." -#: builtins.c:289 +#: builtins.c:291 #, fuzzy msgid "" "Set Readline key bindings and variables.\n" @@ -2526,7 +2644,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2573,7 +2692,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2592,7 +2711,7 @@ msgstr "" " Afslutningsstatussen er 0 med mindre N ikke er større end eller lig med " "1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2612,7 +2731,7 @@ msgstr "" " Afslutningsstatussen er 0 med mindre N ikke er større end eller lig med " "1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2639,7 +2758,7 @@ msgstr "" "hvis\n" " SKAL-INDBYGGET ikke er en skal-indbygget.." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2668,7 +2787,7 @@ msgstr "" "hvis\n" " UDTRYK er ugyldigt." -#: builtins.c:385 +#: builtins.c:387 #, fuzzy msgid "" "Change the shell working directory.\n" @@ -2692,16 +2811,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2739,13 +2858,14 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer 0 hvis mappen ændres, ellers noget forskellig fra 0." -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2767,7 +2887,7 @@ msgstr "" "den\n" " aktuelle mappe ikke kan læses." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2783,7 +2903,7 @@ msgstr "" " Afslutningsstatus:\n" " Afsluttes altid succesfuldt." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2795,7 +2915,7 @@ msgstr "" " Afslutningsstatus:\n" " Afsluttes altid succesfuldt." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2807,7 +2927,8 @@ msgstr "" " Afslutningsstatus:\n" " Afsluttes altid mislykket." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2817,10 +2938,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2844,7 +2965,7 @@ msgstr "" " Returnerer afslutningsstatus fra KOMMANDO eller mislykket hvis KOMMANDO\n" " ikke findes." -#: builtins.c:487 +#: builtins.c:490 #, fuzzy msgid "" "Set variable values and attributes.\n" @@ -2855,9 +2976,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2921,17 +3042,18 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Indstil variabelværdier og -attributter.\n" " \n" " Forældet. Læs i \"help declare\"." -#: builtins.c:535 +#: builtins.c:538 #, fuzzy msgid "" "Define local variables.\n" @@ -2960,7 +3082,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:552 +#: builtins.c:555 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2987,9 +3109,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3024,7 +3146,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der opstÃ¥r en skrivefejl." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3046,7 +3168,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der opstÃ¥r en skrivefejl." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3101,7 +3223,7 @@ msgstr "" " Returnerer succes med mindre NAVN ikke er en skal-indbygget eller hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3123,7 +3245,7 @@ msgstr "" "er\n" " null." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3203,7 +3325,8 @@ msgstr "" " Returnerer succes hvis et tilvalg findes, fejler hvis afslutningen\n" " af tilvalgene nÃ¥s eller hvis der opstÃ¥r en fejl." -#: builtins.c:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3214,8 +3337,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3246,7 +3369,7 @@ msgstr "" "der\n" " opstÃ¥r en omdirigeringsfejl." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3258,7 +3381,7 @@ msgstr "" " Afslut skallen med status N. Hvis N udelades vil afslutningsstatus\n" " blive den samme som sidst eksekverede kommando." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3272,7 +3395,7 @@ msgstr "" "hvis\n" " den ikke eksekveres i en logindskal." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3333,7 +3456,7 @@ msgstr "" "hvis\n" " der opstod en fejl." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3356,7 +3479,7 @@ msgstr "" "der\n" " opstÃ¥r fejl." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3381,7 +3504,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:784 +#: builtins.c:787 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3391,15 +3514,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3426,7 +3549,8 @@ msgstr "" "angives\n" " et ugyldig tilvalg." -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3438,7 +3562,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3467,7 +3591,8 @@ msgstr "" " Returnerer succes med mindre MØNSTER ikke kan findes, eller hvis der\n" " angives et ugyldigt tilvalg." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3476,23 +3601,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3535,7 +3660,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:869 +#: builtins.c:872 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3546,7 +3671,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3585,7 +3710,8 @@ msgstr "" "der\n" " opstÃ¥r en fejl. Hvis -x bruges returneres afslutningsstatus for KOMMANDO." -#: builtins.c:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3595,7 +3721,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3616,7 +3742,8 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre et ugyldigt tilvalg eller JOBSPEC angives." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3628,7 +3755,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3662,7 +3790,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:938 +#: builtins.c:942 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3749,7 +3877,7 @@ msgstr "" " Hvis det sidste ARG evalueres til 0, vil \"let\" returnere 1, ellers\n" " returneres 0." -#: builtins.c:983 +#: builtins.c:987 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3771,27 +3899,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3845,7 +3974,7 @@ msgstr "" "indtræffer,\n" " eller hvis en ugyldig fildeskriptor gives som argument til -u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3870,7 +3999,7 @@ msgstr "" "en\n" " funktion eller et skript." -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3939,7 +4068,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4054,7 +4184,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der angives et ugyldigt tilvalg." -#: builtins.c:1126 +#: builtins.c:1132 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4065,7 +4195,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4096,7 +4226,7 @@ msgstr "" "et\n" " givent navn er skrivebeskyttet." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4132,7 +4262,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" " NAVN er ugyldig." -#: builtins.c:1167 +#: builtins.c:1173 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4145,9 +4275,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4173,7 +4302,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" " NAVN er ugyldigt." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4192,7 +4321,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre N er negativ eller større end $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4218,7 +4347,7 @@ msgstr "" "hvis\n" " FILNAVN ikke kan læses." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4245,7 +4374,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1248 +#: builtins.c:1254 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4310,9 +4439,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4407,7 +4536,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:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4420,7 +4549,7 @@ msgstr "" "sidste\n" " argument skal være \"]\", for at den passer til den Ã¥bnende \"[\"." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4440,7 +4569,7 @@ msgstr "" " Afslutningsstatus:\n" " Lykkes altid." -#: builtins.c:1350 +#: builtins.c:1357 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4521,7 +4650,8 @@ msgstr "" "angivet\n" " et ugyldigt tilvalg." -#: builtins.c:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -4530,18 +4660,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4583,7 +4713,7 @@ msgstr "" "enkelt\n" " ikke findes." -#: builtins.c:1417 +#: builtins.c:1424 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4602,6 +4732,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4613,7 +4744,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4677,7 +4809,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4715,7 +4847,7 @@ msgstr "" "ugyldigt\n" " tilvalg angives." -#: builtins.c:1485 +#: builtins.c:1494 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4750,7 +4882,7 @@ msgstr "" "angives\n" " et ugyldigt tilvalg." -#: builtins.c:1506 +#: builtins.c:1515 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4776,7 +4908,7 @@ msgstr "" " Returnerer statussen for ID, fejler hvis ID er ugyldig eller hvis der\n" " angives et ugyldigt tilvalg." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4801,7 +4933,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen for den sidst eksekverede kommando." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4831,7 +4963,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer afslutningsstatussen for den sidst eksekverede kommando." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4869,7 +5001,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4898,7 +5030,7 @@ msgstr "" " Afslutningsstatus:\n" " Afslutningsstatus er afslutningsstatus for DATAKANAL." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4917,7 +5049,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4956,7 +5088,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4974,7 +5106,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4992,7 +5124,8 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5002,7 +5135,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Opret en coproces ved navn NAVN.\n" " \n" @@ -5015,7 +5148,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer afslutningsstatussen for KOMMANDO." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -5039,7 +5172,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre NAVN er skrivebeskyttet." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5057,7 +5190,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5084,7 +5217,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen af det genoptagede job." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5103,7 +5236,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer 1 hvis udtrykket evalueres til 0, ellers returneres 0." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5158,7 +5291,7 @@ msgstr "" " Afslutningsstatus:\n" " 0 eller 1 afhængigt af udtrykkets værdi." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5271,7 +5404,8 @@ 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:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -5281,19 +5415,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5330,7 +5464,8 @@ msgstr "" "hvis\n" " mappeskiftet mislykkes." -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -5339,16 +5474,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5384,7 +5519,8 @@ msgstr "" "hvis\n" " mappeskiftet mislykkes." -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -5395,19 +5531,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5438,7 +5574,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5479,7 +5615,7 @@ msgstr "" "et\n" " ugyldigt tilvalg eller hvis INDSTNAVN er deaktiveret." -#: builtins.c:1908 +#: builtins.c:1919 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5497,15 +5633,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5546,7 +5682,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en skrive- eller tildelingsfejl." -#: builtins.c:1942 +#: builtins.c:1953 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5560,11 +5696,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5594,7 +5730,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5619,7 +5755,7 @@ msgstr "" " der opstÃ¥r en fejl." # Fejlrapport -#: builtins.c:1985 +#: builtins.c:1996 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5681,7 +5817,7 @@ msgstr "" "hvis\n" " der ikke er defineret en fuldførselsspecifikation for NAVN." -#: builtins.c:2015 +#: builtins.c:2026 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5693,20 +5829,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5759,7 +5896,7 @@ msgstr "" "hvis\n" " ARRAY er skrivebeskyttet." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5769,6 +5906,26 @@ msgstr "" " \n" " Et synonym for \"mapfile\"." +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#, fuzzy +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." + #, fuzzy #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." diff --git a/po/de.gmo b/po/de.gmo index c381b93af1fe487de6a0e244dcfd7a3bc28a9ab5..887bdc7b16cab161296c855a5a5daa5eabde20b3 100644 GIT binary patch delta 16614 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 delta 13056 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 UrP>S1CKQ;pV#-$d%o^tZ0Is_-JOBUy diff --git a/po/de.po b/po/de.po index 0d28040..689eba6 100644 --- a/po/de.po +++ b/po/de.po @@ -1,89 +1,95 @@ -# German language file for GNU Bash 4.3 +# German language file for GNU Bash 4.4-beta1 # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Nils Naumann , 1996-2013. +# Nils Naumann , 1996-2016. msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2014-02-02 18:23+0100\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2016-08-27 15:19+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:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "Falscher Feldbezeichner." -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: Kann nicht das indizierte in ein assoziatives Array umwandeln." -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: Ungültiger Schlüssel für das assoziative Array." -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Kann nicht auf einen nicht-numerischen Index zuweisen." -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: Ein Feldbezeicher wird zum Zuweisen eines assoziativen Arrays " "benötigt." -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Kann die Datei %s nicht erzeugen." -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando " "finden." -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr " %s: Das erste Zeichen ist nicht `\\'." -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "fehlende schließende `%c' in %s." -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: Fehlender Doppelpunkt." -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "Klammererweiterung: Konnte keinen Speicher für %s zuweisen." -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +msgstr "Klammererweiterung: Konnte für %d Elemente keinen Speicher zuweisen." -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "Klammererweiterung: Konnte keinen Speicher für `%s' zuweisen." -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': Ungültiger Alias Name." @@ -92,348 +98,377 @@ msgstr "`%s': Ungültiger Alias Name." msgid "line editing not enabled" msgstr "Zeileneditierung ist nicht aktiviert." -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': Ungültiger KEYMAP Name." -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: Nicht lesbar: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': Bindung kann nicht gelöst werden." -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "%s: Unbekannter Funktionsname." -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ist keiner Taste zugeordnet.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s kann aufgerufen werden durch " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "Schleifen Zähler" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "nur in einer `for', `while' oder `until' Schleife sinnvoll." # Problem mit Extraktion des Strings -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME ist nicht zugewiesen." -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "Zu viele Argumente." -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "kein anderes Verzeichnis" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD ist nicht zugewiesen." # Debug Ausgabe -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "Zeile %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "Warnung: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " -msgstr "%s: Gebrauch: " +msgstr "%s: Aufruf: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" -msgstr "%s: Ein numerischer Paremeter ist erforderlich." +msgstr "%s: Die Option erfordert ein Argument." -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: Ein numerischer Parameter ist erforderlich." -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: Nicht gefunden." -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: Ungültige Option" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: Ungültiger Optionsname." -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': Ist kein gültiger Bezeichner." -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "Ungültige Oktalzahl." -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "Ungültige hexadezimale Zahl." -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "Ungültige Zahl." -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: Ungültige Signalbezeichnung." -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': Ist keine gültige Prozess- oder Jobbezeichnung." -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: Schreibgeschützte Variable." -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s ist außerhalb des Gültigkeitsbereiches." -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "Argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s ist außerhalb des Gültigkeitsbereiches." -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: Kein solcher Job." -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: Keine Job Steuerung in dieser Shell." -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "Keine Job Steuerung in dieser Shell." -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: gesperrt" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "gesperrt" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: Ist kein Shell Kommando." -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "Schreibfehler: %s." -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "Fehler beim Setzen der Terminalattribute: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "Fehler beim Ermitteln der Terminalattribute: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: Kann das aktuelle Verzeichnis nicht wiederfinden: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: Mehrdeutige Job Bezeichnung." -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "In dieser Version ist keine Hilfe verfügbar." + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: Ungültige Methode." -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: Keine Komplettierung angegeben." -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "Warnung: Die -F Option könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "Warnung: Die -C Option könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "Gegenwärtig wird keine Komplettierungsfunktion ausgeführt." -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "kann nur innerhalb einer Funktion benutzt werden." -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "`%s': Ungültiger Variablenname." + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "Mit `-f' können keine Funktionen erzeugt werden." -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: Schreibgeschützte Funktion." -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen." -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" "%s: Konvertieren von assoziativen in indizierte Arrays ist nicht möglich." -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "Dynamisches Laden ist nicht verfügbar." -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "Kann die dynamische Bibiliothek nicht laden %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "Kann %s nicht in der dynamischen Bibiliothek finden %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: Ist nicht dynamisch geladen." -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: Kann nicht löschen: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: ist ein Verzeichnis." -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: Ist keine normale Datei." -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: Die Datei ist zu groß." -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Kann die Datei nicht ausführen." -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: Kann nicht ausführen: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "Abgemeldet\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "Keine Login Shell: Mit `exit' abmelden!" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Es gibt noch angehaltene Prozesse.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Es gibt noch laufende Prozesse.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "Kein Kommando gefunden." -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: Kann die tempräre Datei nicht öffnen: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "gegenwärtig" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "Job %d wurde ohne Jobsteuerung gestartet." @@ -452,24 +487,24 @@ msgstr "%s: Diese Option erfordert ein Argument -- %c\n" msgid "hashing disabled" msgstr "Hashing deaktiviert." -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: Die Hashtabelle ist leer.\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "Treffer\tBefehl\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell Kommandos auf die das Schlüsselwort zutrifft `" msgstr[1] "Shell Kommandos auf die die Schlüsselwörter zutreffen `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -477,12 +512,12 @@ msgstr "" "Auf `%s' trifft kein Hilfethema zu. Probieren Sie `help help', `man -k %s' " "oder `info %s'." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Kann die Datei nicht öffnen: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -502,15 +537,20 @@ msgstr "" "Ein Stern (*) neben dem Namen kennzeichnet deaktivierte Kommandos.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "Es darf nur eine Option aus -anrw angegeben werden." -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "Kommandostapelposition." -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: Ungültiges Argument." + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: Kommandoersetzung gescheitert." @@ -524,113 +564,113 @@ msgstr "%s: inlib gescheitert." msgid "no other options allowed with `-x'" msgstr "Keine weiteren Optionen mit `-x' erlaubt." -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: Die Argumente müssen Prozess- oder Jobbezeichnungen sein." -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Unbekannter Fehler." -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "Ausdruck erwartet." -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: Ist kein indiziertes Array." -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Ungültige Datei-Deskriptor Angabe." -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Ungültiger Datei-Deskriptor: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: Ungültige Zeilenanzahlangabe." -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: Ungültiger Zeilenindex für den Array Beginn." -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "Fehlender Name für die Array Variable." -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "Die Array Variablen Unterstützung ist in dieser Shell nicht vorhanden." -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': Fehlendes Formatierungszeichen." -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': Ungültige Zeitformatangabe." -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': Ungültiges Formatierungszeichen." -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "Warnung: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "Formatleseproblem: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "Fehlende hexadezimale Ziffer nach \\x." -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "Fehlendes Unicode Zeichen für \\%c." -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "kein anderes Verzeichnis" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: Ungültiges Argument." -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "Der Verzeichnisstapel ist leer." -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "Verzeichnisstapelindex" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -672,7 +712,7 @@ msgstr "" "\t-N\tZeigt den N'ten Eintrag von rechts an, der von »dirs« ausgegeben\n" "\twird, wenn es ohne Optionen aufgerufen wird, beginnend mit Null." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -718,7 +758,7 @@ msgstr "" " \n" " Das `dirs' Kommando zeigt den Verueichnisstapel an." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -759,147 +799,157 @@ msgstr "" " \n" " Das `dirs' Kommando zeigt den Verzeichnisstapel an." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: Ungültige Wartezeitangebe." -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "Lesefehler: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" -"»Return« ist nur aus einer Funktion oder einem mit »source« ausgefühten " -"Skript möglich." +"»Return« ist nur aus einer Funktion oder einem mit »source« ausgefühten Skript " +"möglich." -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "" "Gleichzeitiges `unset' einer Funktion und einer Variable ist nicht möglich." -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: `unset' nicht möglich." -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: `unset' nicht möglich: Schreibgeschützt %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: Ist keine Feldvariable." -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: Ist keine Funktion." -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: exportieren nicht möglich." + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "Verschiebezähler" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "Kann nicht Shell Optinen gleichzeitig aktivieren und deaktivieren." -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Ungültiger Shell Optionen Name." -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "Ein Dateiname wird as Argument benötigt." -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: Datei nicht gefunden." -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "Kann die Shell nicht unterbrechen." # logout -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "Kann die Loginshell nicht unterbrechen." -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s ist ein Alias von `%s'.\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s Ist ein reserviertes Schlüsselwort der Shell.\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s ist eine Funktion.\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s ist eine spezielle eingebaute Funktion.\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s ist eine von der Shell mitgelieferte Funktion.\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s ist %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: Ungültiges Grenzwertargument." -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': Falsches Kommando." -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Kann die nicht Grenze setzen: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "Grenze" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Kann die Grenze nicht ändern: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "Oktalzahl" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "`%c': Ungültiger Operator für den symbolischen Modus." -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "`%c': Ungültiges Zeichen im symbolischen Modus." -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " Zeile " @@ -913,83 +963,104 @@ msgstr "Letztes Kommando: %s\n" msgid "Aborting..." msgstr "Abbruch..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "Unbekanntes Kommando" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "" # Programmierfehler -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "Falscher Sprung" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s ist nicht gesetzt." -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': Ungültiges Formatzeichen." -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "Pipe-Fehler" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: Maximale Schachtelungstiefe überschritten (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: Maximale Quellcode Schachtelungstiefe überschritten (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: maximale Funkrionsschachtelungstiefe überschritten (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: Verboten: `/' ist in Kommandonamen unzulässig." -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: Kommando nicht gefunden." -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Defekter Interpreter" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: Kann die Binärdatei nicht ausführen: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "`%s' ist eine spezielle eingebaute Funktion." -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Kann fd %d nicht auf fd %d verdoppeln." @@ -1035,37 +1106,37 @@ msgstr "" msgid "missing `)'" msgstr "Fehlende `)'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "Syntax Fehler: Operator erwartet." -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "Syntaxfehler: Ungültiger arithmetischer Operator." -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \\\"%s\\\")." -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "Ungültige Basis." -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "Der Wert ist für die aktuelle Basis zu groß." -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: Fehler im Ausdruck.\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getwd: Kann auf das übergeordnete Verzeichnis nicht zugreifen." -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "Konnte den No-Delay Modus für fd %d nicht wieder herstellen." @@ -1081,154 +1152,154 @@ msgstr "Kann keinen neuen Filedeskriptor für die Eingabe von fd %d zuweisen." 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:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Die geforkte PID %d erscheint im laufenden Prozess %d." -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Lösche den gestoppten Prozess %d der Prozessgruppe %ld." -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" # Programmierfehler -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: Prozeßnummer existiert nicht." -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Fertig" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Angehalten" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Angehalten(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Läuft" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Fertig(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Unbekannter Status" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(Speicherabzug geschrieben) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" # interner Fehler -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "" +msgstr "wait_for_job: Der Job %d ist gestoppt." -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" -msgstr "%s: Programm ist beendet." +msgstr "%s: Der Job ist beendet." -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" -msgstr "" +msgstr "%s: Der Job %d läuft bereits im Hintergrund." -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" # Debug Ausgabe -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: Zeile %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (Speicherabzug geschrieben)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n" # interner Fehler -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp war nicht erfolgreich." # interner Fehler -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" # interner Fehler -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "Kann die Prozessgruppe des Terminals nicht setzen (%d)." -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "Keine Job Steuerung in dieser Shell." @@ -1284,20 +1355,20 @@ msgstr "" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" "register_alloc: Speicherzuordnungstabelle ist mit FIND_ALLOC gefüllt?\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, 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" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1323,7 +1394,7 @@ msgstr "%s: unbekannter Dienst." msgid "%s: bad network path specification" msgstr "%s: Fehlerhafte Netzwerkspfadangabe." -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "Der Netzwerkbetrieb ist nicht unterstützt." @@ -1361,270 +1432,315 @@ msgstr "Sie haben neue Post in $_." msgid "The mail in %s has been read\n" msgstr "Die Post in %s wurde bereits gelesen.\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "Syntaxfehler: Es wird ein arithmetischer Ausdruck benötigt." -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "Syntax Fehler: unerwartetes `;'." -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "Syntax Fehler: `((%s))'." # interner Fehler -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Falscher Befehlstyp %d." -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende " "(erwartet wird `%s')." -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Dateiende beim Suchen nach `%c' erreicht." -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "Dateiende beim Suchen nach `]]' erreicht." -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Zeichen `%s'." -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "Syntaxfehler im bedingen Ausdruck." -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Unerwartetes Zeichen: `%s' anstatt von `)'" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "`)' erwartet." -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "Syntaxfehler beim unerwarteten Wort `%s'" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "Syntaxfehler beim unerwarteten Wort `%s'" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "Syntax Fehler: Unerwartetes Dateiende." -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "Syntax Fehler" # Du oder Sie? -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Benutze \"%s\" um die Shell zu verlassen.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "Dateiende beim Suchen nach passender `)' erreicht." -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: Falsches Verbindungszeichen `%d'." -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: Ungültige Dateibeschreibung." -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: Mehrdeutige Umlenkung." -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: Kann existierende Datei nicht überschreiben." -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: Gesperrt: Die Ausgabe darf nicht umgeleitet werden." -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" -msgstr "" +msgstr "Kann die temporäre Datei für das Hier Dokument nicht anlegen: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: Kann fd keiner Variable zuweisen." -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port Wird ohne Netzwerk nicht unterstützt" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "Konnte das /tmp Verzeichnis nicht finden, bitte anlegen." -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp muß ein gültiger Verzeichnisname sein." -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: Ungültige Option" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "Konnte nicht die uid in %d ändern: Die geltende uid ist %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "Konnte nicht die gid in %d ändern: Die geltende gid ist %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Ist ein Verzeichnis." + +#: shell.c:1777 msgid "I have no name!" msgstr "Ich habe keinen Benutzernamen!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, Version %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"Benutzung:\t%s [Lange GNU Option] [Option] ...\n" +"Aufruf:\t%s [Lange GNU Option] [Option] ...\n" "\t\t%s [Lange GNU Option] [Option] Script-Datei ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Lange GNU Optionen:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Shell-Optionen:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" "\t-ilrsD oder -c Kommando\toder -O shopt_option (Nur Aufruf)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s oder Option -o\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Mit dem `bashbug' Kommando können Fehler gemeldet werden.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "Bash Homepage: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Allgemeine Hilfe für GNU Software: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: Ungültige Operation" @@ -1798,79 +1914,94 @@ msgstr "Unbekannte Signalnummer." msgid "Unknown Signal #%d" msgstr "Unbekanntes Signal Nr.: %d." -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Falsche Ersetzung: Keine schließende `%s' in `%s' enthalten." -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: Kann einem Feldelement keine Liste zuweisen." -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "Kann keine Pipe für die Prozeßersetzung erzeugen." -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "Kann den Kindsprozess für die Prozeßersetzung nicht erzeugen." -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "Kann nicht die benannte Pipe %s zum lesen öffnen." -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "Kann nicht die benannte Pipe %s zum schreiben öffnen." -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kann die benannte Pipe %s nicht auf fd %d." -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s." + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "Kann keine Pipes für Kommandoersetzung erzeugen." -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen." # interner Fehler -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "Kommandoersetzung: Kann Pipe nicht als fd 1 duplizieren." -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6048 +#: subst.c:6666 subst.c:8351 subst.c:8371 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: Falsche Variablenersetzung." + +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: Ungültige indirekte Expansion" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "`%s': Ungültiger Variablenname." + +#: subst.c:6854 #, c-format msgid "%s: parameter null or not set" msgstr "%s: Parameter ist Null oder nicht gesetzt." # interner Fehler -#: subst.c:6320 subst.c:6335 +#: subst.c:7089 subst.c:7104 #, c-format msgid "%s: substring expression < 0" msgstr "%s: Teilstring-Ausdruck < 0." -#: subst.c:7506 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: Falsche Variablenersetzung." - -#: subst.c:7583 +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: Kann so nicht zuweisen." -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1878,12 +2009,12 @@ msgstr "" "Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer " "Ersetzungen erzwingen." -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s." -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "Keine Entsprechung: %s" @@ -1897,123 +2028,124 @@ msgstr "Argument erwartet." msgid "%s: integer expression expected" msgstr "%s: Ganzzahliger Ausdruck erwartet." -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "`)' erwartet." -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "`)' erwartet, %s gefunden." -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: Einstelliger (unärer) Operator erwartet." -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: Zweistelliger (binärer) Operator erwartet." -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "Fehlende `]'" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "Ungültige Signalnummer." -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" # Programmierfehler -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Falsches Signal %d." -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "Fehler beim Importieren der Funktionsdefinition für `%s'." -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: Der Variable könnte kein Wert zugewiesen sein." -#: variables.c:3646 +#: variables.c:3043 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: Kann nicht als Datei geöffnet werden." -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: Kompatibilitätswert außerhalb des Gültigkeitsbereiches." -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2015 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2034,13 +2166,7 @@ msgstr "Dies ist freie Software. Sie darf verändert und verteilt werden." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "" -"Für den größtmöglichen gesetzlich zulässigen Umfang wird jede Haftung " -"ausgeschlossen." - -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2012 Free Software Foundation, Inc." +msgstr "Es wird keine Garantie gewährt, soweit das Gesetz es zulässt." #: xmalloc.c:91 #, c-format @@ -2062,15 +2188,15 @@ msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren (%lu bytes reserviert)." msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren." -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [Name[=Wert] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] Name [Name ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -2079,114 +2205,102 @@ msgstr "" "Name] [-r Tastenfolge] [-x Tastenfolge:Shell Kommando] [Tastenfolge:readline " "Funktion oder Kommando]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [Shellkommando [Argument ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [Ausdruck]" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]] [-@]] [Verzeichnis]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] Kommando [Argument ...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrntux] [-p] Variable[=Wert] ..." +msgstr "declare [-aAfFgilrntux] [-p] Name[=Wert] ..." # -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] Name[=Wert] ..." - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] Name[=Wert] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [Option] Name[=Wert] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [Argument ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [Argument ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f Dateiname] [Name ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [Argument ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts Optionen Variable [Argumente]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a Name] [Kommando [Argumente ...]] [Umleitung ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 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]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [Jobbezeichnung]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [Jobbezeichnung ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p Pfadname] [-dt] [Name ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [Muster ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2194,15 +2308,16 @@ msgstr "" "history [-c] [-d Offset] [n] oder history -anrw [Dateiname] oder history -ps " "Argument [Argument...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [Jobbez. ...] or jobs -x Kommando [Arg]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [Jobbezeichnung ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2210,11 +2325,11 @@ msgstr "" "kill [-s Signalname | -n Signalnummer | -Signalname] [pid | job] ... oder " "kill -l [Signalname]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let Argument [Argument ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2222,99 +2337,95 @@ msgstr "" "read [-ers] [-a Feld] [-d Begrenzer] [-i Text] [-n Zeichenanzahl] [-N " "Zeichenanzahl] [-p Prompt] [-t Zeitlimit] [-u fd] [Name ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o Option] [--] [Argument ...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [NAME ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [Name[=Wert] ...] oder export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [Name[=Wert] ...] oder readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source Dateiname [Argumente]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". Dateiname [Argumente]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [Ausdruck]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ Argument... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[Argument] Signalbezeichnung ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] Name [Name ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [Grenzwert]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [Grenze]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [Modus]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [id ...]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [pid ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for Name [in Wortliste ... ] ; do Kommandos; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( Ausdr1; Ausdr2; Ausdr3 )); do Kommandos; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select Name [in Wortliste ... ;] do Kommandos; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] Pipeline" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case Wort in [Muster [| Muster]...) Kommandos ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2322,63 +2433,63 @@ msgstr "" "if Kommandos; then Kommandos; [ elif Kommandos; then Kommandos; ]... [ else " "Kommandos; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while Kommandos; do Kommandos; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until Kommandos; do Kommandos; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [Name] Kommando [Umleitungen]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function Name { Kommandos ; } oder Name () { Kommandos ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ Kommandos ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "Jobbezeichnung [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( Ausdruck ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ Ausdruck ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - Namen und Bedeutung einiger Shell Variablen" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | Verzeichnis]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [Optionsname ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] Format [Argumente]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2388,29 +2499,29 @@ msgstr "" "[-W Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-" "S Suffix] [Name ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W " -"Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S " +"compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W " +"Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S " "Suffix] [Wort]" -#: builtins.c:237 +#: builtins.c:239 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]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d Begrenzer] [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd] [-C " +"Callback] [-c Menge] [Feldvariable]" + +#: builtins.c:244 +msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" @@ -2418,7 +2529,7 @@ msgstr "" "Menge] [Feldvariable]" # alias -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2430,7 +2541,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2442,23 +2553,25 @@ msgstr "" " Ohne Argumente wird die Liste der Aliase (Synonyme) in der Form\n" " `alias Name=Wert' auf die Standardausgabe ausgegeben.\n" "\n" -" Sonst wird ein Alias für jeden angegebenen Namen definiert, für\n" -" den ein Wert angegeben wurde. Wenn `Wert' mit einem Leerzeichen\n" -" abschließt, dann wird auch das folgende Wort auf Aliase überprüft.\n" +" Sonst wird ein Alias für jeden angegebenen Namen definiert wenn\n" +" für diesen auch ein `Wert' angegeben wurde. Wenn `Wert' mit einem\n" +" Leerzeichen endet, dann wird auch das nächste Wort auf Aliase\n" +" überprüft.\n" "\n" " Optionen:\n" " -p\tGibt alle definierten Aliase aus.\n" " \n" " Rückgabewert:\n" -" Meldet Erfolg, außer wenn `Name' nicht existiert." +" Meldet Erfolg, außer wenn `Name' angegeben worden ist, für den\n" +" kein Alias definiert wurde." # unalias -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2467,10 +2580,10 @@ msgstr "" " Optionen:\n" " -a\tEnferne alle Alias Definitionen.\n" " \n" -" Gibt immer 0 zurück wenn der Alias existierte." +" Gibt immer Erfolg zurück, außer wenn der Alias nicht existiert." # bind -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2504,13 +2617,14 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -"Konfiguriert Readline Tastenzuordnungen und Variablen.\n" +"Bestimmt Readline Tastenzuordnungen und Variablen.\n" " \n" " Weist eine Tastensequenz einer Readline Funktion oder einem Makro\n" " zu oder setzt eine Readline Variable. Der Argument syntax ist zu\n" @@ -2567,7 +2681,7 @@ msgstr "" " oder ein Fehler eintrat." # break -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2587,7 +2701,7 @@ msgstr "" " Der Rückgabewert ist 0, außer »n« ist nicht größer oder gleich 1." # continue -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2607,7 +2721,7 @@ msgstr "" " Der Rückgabewert ist 0, außer wenn »n« nicht größer oder gleich 1 ist." # builtin -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2632,7 +2746,7 @@ msgstr "" " dieses nicht existiert." # caller -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2649,7 +2763,7 @@ msgid "" msgstr "" # cd -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2672,16 +2786,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2696,18 +2810,19 @@ msgstr "" "Wechselt das Arbeitsverzeichnis.\n" " \n" " Wechselt in das angegebene Abeitsverzeichnis. Ohne Angabe eines\n" -" Verzeichnisses wird in das Heimatverzeichnis gewechselt.\n" +" Verzeichnisses wird in das in der HOME Variable definierte\n" +" Verzeichnis gewechselt.\n" " \n" -" Die Variable CDPATH gibt eine Liste von Orten an, in denen nach\n" -" dem angegebeben Verzeichnisnamen gesucht wird. Die Pfadnamen\n" -" werden durch Doppelpunkte »:« getrennt. Ein leerer Pfadname\n" -" bezeichnet das aktuelle Verzeichnis. Wenn ein vollständiger\n" -" Pfadname angegeben ist, wird der CDPATH nicht durchsucht.\n" +" Die Variable CDPATH definiert den Suchpfad, in dem nach dem\n" +" angegebeben Verzeichnisnamen gesucht wird. Mehrere Pfade werden\n" +" durch Doppelpunkte »:« getrennt. Ein leerer Pfadname entspricht\n" +" dem aktuellen Verzeichnis. Mit einem vollständigen Pfadnamen wird\n" +" CDPATH nicht benutzt.\n" " \n" -" Wenn kein entsprechendes Verzeichnis gefunden wurde und die Shell\n" -" Option `cdable_vars' gesetzt ist, dann wird angenommen, dass der\n" -" Verzeichnisname einen Variablennamen enthält. Wenn diese ein Wert\n" -" besitzt, wird dieser als Verzeichnisname verwendet.\n" +" Wird kein entsprechendes Verzeichnis gefunden und die Shell Option\n" +" `cdable_vars' ist gesetzt, dann wird der `Wert' als Variable\n" +" interpretiert. Dessen Inhalt wird dann als Verzeichnisname\n" +" verwendet.\n" " \n" " Optionen:\n" " -L\tErzwingt das symbolischen Verweisen gefolgt wird.\n" @@ -2717,9 +2832,9 @@ msgstr "" " Links im aktuellen Verzeichnis werden vor dem\n" " übergeordneten Verzeichnis aufgelöst.\n" " -e\tWenn mit der »-P« das aktuelle Arbeitsverzeichns nicht\n" -" ermittelt werden kann, wird ein Rückgabwert ungleich 0\n" -" geliefert.\n" -" -@ Wenn es das System Unterstützt wird eine Datei mit \n" +" ermittelt werden kann, wird mit einem Rückgabwert\n" +" ungleich 0 abgebrochen.\n" +" -@ Wenn es das System unterstützt wird eine Datei mit \n" " erweiterten Attributen als ein Verzeichnis angezeigt,\n" " welches die erweiterten Attribute enthält.\n" " \n" @@ -2728,21 +2843,20 @@ msgstr "" " Dateiname am letzten Schrägstrich gekürzt wird oder es wird der\n" " Anfang von DIR verwendet.\n" " \n" -" Rückgabewert: \n" -" Der Rückgabewert ist 0, wenn das Verzeichnis gewechselt wurde,\n" -" sonst ungleich 0.\n" -" Mit den Optionen »-P -e« wird ein Rückgabewert ungleich 0 auch\n" -" dann gesetzt, wenn das neue aktuelle Verzeichnis nicht ermittelt\n" -" werden konnte." +" Rückgabewert:\n" +"\n" +" Der Rückgabewert ist 0, wenn das Verzeichnis erfolgreiche\n" +" gewechselt wurde, oder wenn die -P Option angegeben und $PWD\n" +" erfolgreich gesetzt werden konnte. Sonst ist er ungleich 0." # pwd -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2754,7 +2868,8 @@ msgstr "" "Gibt den Namen des aktuellen Arbeitsverzeichnisses aus.\n" " \n" " Optionen:\n" -" -L\tGibt den Inhalt der Variable $PWD aus.\n" +" -L\tGibt den Inhalt der Variable $PWD aus, wenn sie das aktuelle\n" +"\t\tArbeitsverzeichnis enthält.\n" " -P\tGibt den physischen Verzeichnispfad aus, ohne\n" " symbolische Verweise.\n" " \n" @@ -2765,7 +2880,7 @@ msgstr "" " Verzeichnis nicht lesbar ist." # colon -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2782,7 +2897,7 @@ msgstr "" " Das Kommando ist immer »wahr«." # true -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2794,7 +2909,7 @@ msgstr "" " Rückgabewert:\n" " Immer »wahr«." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2807,7 +2922,7 @@ msgstr "" " Immer »falsch«." # command -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2817,10 +2932,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2834,7 +2949,8 @@ msgstr "" " werden, wenn eine Shell-Funktion gleichen Namens existiert.\n" " \n" " Optionen:\n" -" -p\tStandardwert für PATH verwenden. Dies garantiert, dass alle\n" +" -p\ts wird ein Standardwert für PATH verwendet, der garantiert, dass " +"alle\n" " \t\tStandard-Dienstprogramme gefunden werden.\n" " -v\tBeschreibung des Kommandos ausgeben.\n" " \t\tÄhnlich dem eingebauten Kommando »type«.\n" @@ -2846,7 +2962,7 @@ msgstr "" " das Kommando nicht gefunden wird." # declare -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2856,9 +2972,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2892,7 +3008,8 @@ msgstr "" " Variablen ausgegeben.\n" " \n" " Optionen:\n" -" -f\tZeigt nur Funktionsnamen und Definitionen an.\n" +" -f\tSchränkt Aktionen oder Anzeigen auf Funktionsnamen\n" +"\t\tund Definitionen ein.\n" " -F\tZeigt nur Funktionsnamen an (inklusive Zeilennummer\n" " \t\tund Quelldatei beim debuggen).\n" " -g\tDeklariert innerhalb ener Shellfunktion globale\n" @@ -2905,6 +3022,7 @@ msgstr "" " -A\tDeklariert ein assoziatives Feld (wenn unterstützt).\n" " -i\tDeklariert eine Integer Variable.\n" " -l\tKonvertiert die Variabennmamen in Kleinbuchstaben.\n" +" -n\tDer Name wird als Variable interpretiert. \n" " -r\tDeklariert nur lesbare Variablen.\n" " -t\tWeist das »trace« Attibut zu.\n" " -u\tKonvertiert die Variablennamen in Großbuchstaben.\n" @@ -2924,17 +3042,18 @@ msgstr "" " Gibt »Erfolg« zurück, außer eine ungültige Option wurde angegeben,\n" " oder ein Fehler trat auf." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Setzt Variablen Werte und Eigenschaften\n" "\n" " Veraltet. Siehe `help declare'." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2963,7 +3082,7 @@ msgstr "" " Funktion." # echo -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2989,9 +3108,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3026,7 +3145,7 @@ msgstr "" " Rückgabewert:\n" " Gibt »Erfolg« zurück, außer ein Ausgabefehler tritt auf." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3040,7 +3159,7 @@ msgid "" msgstr "" # enable -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3096,7 +3215,7 @@ msgstr "" " Gibt »Erfolg« zurück, außer NAME ist kein eingebautes Kommando \n" " oder ein Fehler tritt auf." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3117,7 +3236,7 @@ msgstr "" " Der Status des Kommandoe oder Erfolg wenn das Kommando leer war." # getopts -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3198,7 +3317,7 @@ msgstr "" " aufgetreten ist." # exec -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3209,8 +3328,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3222,14 +3341,14 @@ msgid "" msgstr "" "Ersetzt die Shell durch das angegebene Kommando.\n" " \n" -" Führt das angebebene Kommando einschließlich dessen Optionen aus\n" -" und ersetzt durch dieses die Shell. Wenn kein Kommando angegeben\n" -" ist, wirken alle Weiterleitungen für die aktuellen Shell.\n" +" Führt das angebebene Kommando einschließlich dessen Optionen an\n" +" Stelle der Shell aus. Wenn kein Kommando angegeben ist, wirken\n" +" alle Weiterleitungen für die aktuellen Shell.\n" " \n" " Optionen:\n" " -a Name\tSetzt den Namen als nulltes Argument für das Kommando.\n" " -c\tFührt das Kommando in einer leeren Umgebung aus.\n" -" -l\tSetzt einen Strich als nulltes Argument für das Kommando.\n" +" -l\tSetzt einen Strich in das nullte Argument für das Kommando.\n" " \n" " Wenn das Kommando nicht ausgeführt werden kann, wird eine nicht\n" " interaktive Shell beendet, außer die Shell-Option »execfail« ist\n" @@ -3240,7 +3359,7 @@ msgstr "" " ein Weiterleitungsfehler trat auf." # exit -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3254,7 +3373,7 @@ msgstr "" " wird der Rückgabewert des letzten ausgeführten Kommandos übernommen." # logout -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3269,7 +3388,7 @@ msgstr "" " zurückgegeben." # fc -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3299,7 +3418,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3319,7 +3438,7 @@ msgstr "" " Rückgabewert:\n" " Status des in den Vordergrund geholten Jobs oder Fehler." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3341,7 +3460,7 @@ msgstr "" " Immer Erfolg, außer wenn die Jobsteuerung nicht verfügbar ist\n" " oder ein Fehler auftritt." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3350,22 +3469,23 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +# help +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3377,7 +3497,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3386,8 +3506,27 @@ msgid "" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" +"Informationen zu eingebauten Kommandos.\n" +" \n" +" Zeigt kurze Informationen zu eingebauten Kommandos an. Wenn ein\n" +" Muster angegeben ist, dann wird eine ausführliche Anleitung zu\n" +" allen Kommandos mit zutreffendem Muster angezeit. Sonst wird die\n" +" Liste der Hilfethemen ausgegeben.\n" +" \n" +" Optionen:\n" +" -d\tKurzbeschreibung für jedes Thema\n" +" -m\tAnzeige im Manpage Format.\n" +" -s\tGibt eine kurze Zusammenfassung für jedes angegebene\n" +" angegebene Thema aus\n" +" \n" +" Argumente:\n" +" Muster\tDas gesuchte Hilfetheme\n" +" \n" +" Rückgabestautus:\n" +" Erfolg, außer wenn das Muster nicht gefunden oder eine ungültige Option\n" +" angegeben wurde." -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3396,23 +3535,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3421,7 +3560,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3431,7 +3570,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3445,7 +3584,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3455,14 +3594,14 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3474,7 +3613,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3484,7 +3624,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3529,7 +3669,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3550,27 +3690,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3580,7 +3721,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3592,7 +3733,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3660,7 +3801,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3677,7 +3819,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3687,7 +3829,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3699,7 +3841,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3718,7 +3860,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3730,9 +3872,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3740,7 +3881,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3751,7 +3892,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3765,7 +3906,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3779,7 +3920,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3843,9 +3984,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3863,7 +4004,7 @@ msgid "" msgstr "" # [ -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3877,7 +4018,7 @@ msgstr "" " schließt." # times -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3896,7 +4037,7 @@ msgstr "" " Rückgabewert:\n" " Immer 0." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3940,7 +4081,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3949,18 +4090,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3970,7 +4111,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3988,6 +4129,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3999,7 +4141,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4017,7 +4160,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4035,7 +4178,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4055,7 +4198,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4070,7 +4213,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4083,7 +4226,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4100,7 +4243,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4120,7 +4263,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4136,7 +4279,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4147,7 +4290,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4168,7 +4311,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4179,7 +4322,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4190,7 +4333,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4200,10 +4343,10 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4217,7 +4360,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4228,7 +4371,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4243,7 +4386,7 @@ msgid "" msgstr "" # (( )) -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4263,7 +4406,7 @@ msgstr "" " Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n" " ergibt, sonst »0«." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -4292,7 +4435,7 @@ msgid "" msgstr "" # variable_help -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4404,7 +4547,7 @@ msgstr "" " Kommandos angibt.\n" # pushd -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -4414,19 +4557,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -4437,27 +4580,21 @@ msgstr "" "Fügt ein Verzeichnis dem Stapel hinzu.\n" "\n" " Legt ein Verzeichnisnamen auf den Verzeichnisstapel oder rotiert\n" -" diesen so,daß das Arbeitsverzeichnis auf der Spitze des Stapels\n" -" liegt. Ohne angegebene Argumente werden die obersten zwei\n" -" Verzeichnisse auf dem Stapel getauscht.\n" +" diesen so, dass das aktuelle Arbeitsverzeichnis oben liegt. Ohne\n" +" Argumente werden die obersten zwei Verzeichnisse auf dem Stapel\n" +" vertauscht.\n" "\n" -" Optionen:\n" -" -n\tunterdrückt das Wechseln in das Verzeichnis beim Hinzufügen\n" -" zum Stapel, so daß nur der Stapel verändert wird.\n" +" Optionen: -n Es wird nur das angebene Verzeichnis dem Stapel\n" +" \thinzugefügt aber nicht in das Verzeichnis gewechselt.\n" "\n" -" Argumente:\n" -" +N\tRotiert den Stapel so, daß das N'te Verzeichnis\n" -" (angezeigt von `dirs',gezählt von links) sich an der Spitze des\n" -" Stapels befindet.\n" +" Argumente: \n" +" +N\tRotiert den Stapel so, daß das N'te Verzeichnis (angezeigt von\n" +" \t`dirs',gezählt von links) oben auf dem Stapels liegt.\n" "\n" " -N\tRotiert den Stapel so, daß das N'te Verzeichnis (angezeigt von\n" -" -`dirs',gezählt von rechts) sich an der Spitze des Stapels\n" -" -befindet.\n" +" \t-`dirs',gezählt von rechts) sich an der Spitze des Stapels\n" +" \t-befindet.\n" " \n" -"\n" -" DIR\tLegt DIR auf die Spitze des Verzeichnisstapels und wechselt " -"dorthin.\n" -"\n" " Der Verzeichnisstapel kann mit dem Kommando `dirs' angezeigt\n" " werden.\n" "\n" @@ -4466,7 +4603,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # popd -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -4475,16 +4612,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -4494,16 +4631,16 @@ msgid "" msgstr "" "Entfernt Einträge vom Verzeichnisstapel.\n" "\n" -" Entfernt Einträge vom Verzeichnisstapel. Ohne Argumente wird die\n" -" Spitze des Stapels entfernt und in das Verzeichnis gewechselt, das\n" -" dann an der Spitze steht.\n" +" Entfernt Einträge vom Verzeichnisstapel. Ohne Argumente wird der\n" +" oberste Eintrag entfernt und in das neue oberste Verzeichnis\n" +" gewechselt.\n" "\n" " Optionen:\n" " -n\tEntfernt nur den Verzeichniseintrag und wechselt nicht\n" " \tdas Verzeichnis.\n" " \n" " Argumente:\n" -" +N\tEntfernt den N-ten Eintrag von links, gezählt von \t\n" +" +N\tEntfernt den N-ten Eintrag von links, gezählt von\n" " Null, aus der von »dirs« anzeigten Liste. Beispielsweise\n" " entfernen »popd +0« den ersten und »popd +1« den zweiten\n" " Verzeichniseintrag.\n" @@ -4520,7 +4657,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # dirs -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -4531,19 +4668,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -4574,7 +4711,7 @@ msgstr "" " Gibt Erfolg zurück, außer bei einer ungültigen Option oder wenn\n" " ein Fehler auftritt." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -4613,8 +4750,8 @@ msgstr "" " eine ungültige Option angegeben wurde oder eine Option deaktiviert\n" " worden ist, wird Fehler zurückgegeben." -# formatf -#: builtins.c:1908 +# printf +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4631,15 +4768,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -4652,8 +4789,10 @@ msgid "" "assignment\n" " error occurs." msgstr "" +"Returns success unless an invalid option is given or a write or\n" +" assignment error occurs.<" -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4666,11 +4805,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -4680,7 +4819,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4693,7 +4832,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4724,8 +4863,7 @@ msgid "" " have a completion specification defined." msgstr "" -# mapfile -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4736,20 +4874,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4767,7 +4906,7 @@ msgid "" msgstr "" # readarray -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4776,3 +4915,18 @@ msgstr "" "Liest Zeilen einer Datei in eine Array Variable.\n" "\n" " Ist ein Synonym für `mapfile'." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/po/el.gmo b/po/el.gmo index 8ea8d43fb4a5e287865d5e6815446008d476c62a..f7c64e50c4a9a097674eea8aba72da71ce3928cb 100644 GIT binary patch delta 9355 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 H?5y`c&X{LJ delta 8200 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 jC;V#8ub$+$o}Lp_aj4?8iX#, 2013. +# Lefteris Dimitroulakis , 2013, 2016. msgid "" msgstr "" -"Project-Id-Version: bash-4.3-pre2\n" +"Project-Id-Version: bash-4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2013-11-15 10:37+0200\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2016-06-02 01:32+0300\n" "Last-Translator: Lefteris Dimitroulakis \n" "Language-Team: Greek \n" -"Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.5\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: αδυναμία δημιουÏγίας: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: δεν μποÏÏŽ να βÏω keymap για εντολή" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ο Ï€Ïώτος μη-λευκό διάστημα χαÏακτήÏας δεν είναι «\"»" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: μη έγκυÏο ψευδώνημο" @@ -90,346 +96,375 @@ msgstr "«%s»: μη έγκυÏο ψευδώνημο" msgid "line editing not enabled" msgstr "μη ενεÏγοποιημένο line editing" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: μη έγκυÏο όνομα keymap" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: αδυναμία ανάγνωσης: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "«%s»: αδυναμία αποσÏνδεσης" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: άγνωστο όνομα συνάÏτησης" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s δεν έχει συνδεθεί με κανένα πλήκτÏο.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s μποÏεί να κληθεί μέσω " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "αÏιθμός βÏόχων" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "έχει μόνο νόημα σε ένα βÏόχο «for», «while», ή «until»" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME δεν έχει οÏιστεί" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "πάÏα πολλά οÏίσματα" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "όχι άλλος κατάλογος" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD δεν έχει οÏιστεί" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "γÏαμμή %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "Ï€Ïοειδοποίηση: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: χÏήση: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: η επιλογή απαιτεί ÏŒÏισμα" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: απαιτείται αÏιθμητικό ÏŒÏισμα" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: δεν βÏέθηκε" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: μη έγκυÏη επιλογή" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: μη έγκυÏο όνομα επιλογής" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "μη έγκυÏος οκταδικός αÏιθμός" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "μη έγκυÏος εξαδικός αÏιθμός" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "μη έγκυÏος αÏιθμός" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή σήματος" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s»: όχι pid ή έγκυÏο job spec" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: μεταβλητή μόνο για ανάγνωση" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s εκτός οÏίων" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "ÏŒÏισμα" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s εκτός οÏίων" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: δεν υπάÏχει τέτοια εÏγασία" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "σφάλμα εγγÏαφής: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ασαφείς Ï€ÏοδιαγÏαφές εÏγασίας" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: μη έγκυÏο όνομα ενέÏγειας" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: δεν υπάÏχει Ï€ÏοδιαγÏαφή συμπλήÏωσης" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "Ï€Ïοειδοποίηση: η επιλογή -F μποÏεί να μη δουλέψει όπως πεÏιμένεις" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "Ï€Ïοειδοποίηση: η επιλογή -C ίσως δεν δουλέψει όπως αναμένετε" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "μποÏεί να χÏησιμοποιηθεί μόνο μέσα σε συνάÏτηση" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: μη έγκυÏο όνομα μεταβλητής" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "" "η επιλογή «-f» δεν μποÏεί να χÏησιμοποιηθεί για τη δημιουÏγία συναÏτήσεων" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: συνάÏτηση μόνο για ανάγνωση" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "δυναμική φόÏτωση μη διαθέσημη" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "αδυναμία ανοίγματος κοινόχÏηστου αντικειμένου %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "αδυναμία εÏÏεσης %s στο κοινόχÏηστο αντικείμενο %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: δεν φοÏτώθηκε δυναμικά" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: αδυναμία διαγÏαφής: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: είναι κατάλογος" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: όχι κανονικό αÏχείο" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: αÏχείο Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: αδυναμία εκτέλεσης Î´Ï…Î±Î´Î¹ÎºÎ¿Ï Î±Ïχείου" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: αδυναμία εκτέλεσης: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "όχι login shell: χÏησιμοποίησε «exit»" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "ΥπάÏχουν σταματημένες εÏγασίες.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "ΥπάÏχουν εÏγασίες που Ï„Ïέχουν.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "δεν βÏέθηκε εντολή" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "history specification" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: αδυναμία ανοίγματος Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "Ï„Ïέχων" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "" @@ -448,37 +483,37 @@ msgstr "%s: η επιλογή απαιτεί ένα ÏŒÏισμα -- %c\n" msgid "hashing disabled" msgstr "" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Εντολές κελÏφους που ταιÏιάζουν στη λέξη-κλειδί `" msgstr[1] "Εντολές κελÏφους που ταιÏιάζουν στις λέξεις-κλειδί" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -"ουδεμία βοήθεια ταιÏιάζει με «%s». Δοκιμάστε «help help» ή «man -k %s» ή " -"«info %s»." +"ουδεμία βοήθεια ταιÏιάζει με «%s». Δοκιμάστε «help help» ή «man -k %s» ή «info %" +"s»." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: αδυναμία ανοίγματος: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -490,15 +525,20 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "δεν μποÏÏŽ να χÏησιμοποιήσω πεÏισσότεÏες της μιας από τις -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "θέση στο ιστοÏικό" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: μη έγκυÏο ÏŒÏισμα" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -512,113 +552,113 @@ msgstr "%s: αποτυχία inlib" msgid "no other options allowed with `-x'" msgstr "δεν επιτÏέπονται άλλες επιλογές με την «-x»" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: οÏίσματα Ï€Ïέπει να είναι ID διεÏγασιών ή εÏγασιών" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Άγνωστο σφάλμα" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "αναμενόταν έκφÏαση" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: μη δικτοδοτημένος πίνακας" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή πεÏιγÏαφέα αÏχείου" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: μη έγκυÏος πεÏιγÏαφέας αÏχείου: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: μη έγκυÏος αÏιθμός γÏαμμής" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "απαιτείται υποστήÏιξη μεταβλητής πίνακος" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "«%s»: απουσία χαÏακτήÏα φοÏμαÏίσματος " -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: μη έγκυÏη Ï€ÏοδιαγÏαφή για φοÏμά χÏόνου" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: μη έγκυÏος χαÏακτήÏας φοÏμαÏίσματος" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "Ï€Ïοειδοποίηση: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "απουσία hex ψηφίου για \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "απουσία ψηφίου unicode για \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "όχι άλλος κατάλογος" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: μη έγκυÏο ÏŒÏισμα" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "<όχι Ï„Ïέχων κατάλογος>" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "κενή στίβα καταλόγου" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "δείκτης στοίβας καταλόγου" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 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 +682,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -667,7 +707,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -688,145 +728,155 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "σφάλμα ανάγνωσης: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "«unset» δεν μποÏεί να εφαÏμοστεί συγχÏόνως σε συνάÏτηση και μεταβλητή" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: αδυναμία «unset»" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: αδυναμία unset: %s μόνο για ανάγνωση" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: δεν είναι μεταβλητή πίνακα" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: δεν είναι συνάÏτηση" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: αδυναμία εξαγωγής" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "" "οι επιλογές κελÏφους δεν είναι δυνατόν συγχÏόνως να ενεÏγοποιηθοÏν και " "απενεÏγοποιηθοÏν" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: μη έγκυÏο όνομα επιλογής" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "απαιτείται όνομα αÏχείου για ÏŒÏισμα" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: αÏχείο δεν βÏέθηκε" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s είναι ψευδώνημο του «%s»\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s αποτελεί δεσμευμένη λέξη του κελÏφους\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s είναι συνάÏτηση\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s είναι ένα ειδικό builtin\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" -msgstr "" +msgstr "%s είναι ένα builtin κελÏφους\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s είναι %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" -msgstr "" +msgstr "%s is hashed (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: μη έγκυÏο ÏŒÏισμα οÏίου" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "«%c»: λάθος διαταγή" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "ÏŒÏιο" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: αδυναμία μεταβολής οÏίου: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "οκταδικός αÏιθμός" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " γÏαμμή " @@ -840,82 +890,103 @@ msgstr "τελευταία εντολή: %s\n" msgid "Aborting..." msgstr "" -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "άγνωστο σφάλμα εντολής" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aη αναμονή για δεδομένα έληξε: αυτόματη αποσÏνδεση\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "αδυναμία ανακατεÏθυνσης τυπικής εισόδου από /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: μη έγκυÏος χαÏακτήÏας μοÏφοποίησης" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: πεÏιοÏισμός: δεν μποÏεί να πεÏιέχεται «/» σε όνομα εντολής" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: εντολή δεν βÏέθηκε" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: αδυναμία εκτέλεσης Î´Ï…Î±Î´Î¹ÎºÎ¿Ï Î±Ïχείου: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "«%s»: είναι ειδικό builtin" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "αδυναμία αντιγÏαφής του fd %d στον fd %d" @@ -960,37 +1031,37 @@ msgstr "" msgid "missing `)'" msgstr "λείπει «)»" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "syntax error: αναμενόταν τελεστέος" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: μη έγκυÏος αÏιθμητικός τελεστής" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (το λανθασμένο σÏμβολο είναι \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "μη έγκυÏη αÏιθμητική βάση" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "τιμή Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· για βάση" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: σφάλμα έκφÏασης\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: αδυναμία Ï€Ïόσβασης στο γονικό κατάλογο" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "αδυναμία επανάταξης nodelay mode για fd %d" @@ -1006,148 +1077,148 @@ msgstr "" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: δεν υπάÏχει τέτοιο pid" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Σήμα %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Done" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "σταματημένο" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "σταματημένο(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Έξοδος %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Άγνωστη κατάσταση" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: διεÏγασία %ld δεν αποτελεί θυγατÏική Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… κελÏφους" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Δεν υπάÏχουν στοιχεία για διεÏγασία %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: η εÏγασία %d είναι σταματημένη" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: η εÏγασία τεÏματίστηκε" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: εÏγασία %d ήδη στο παÏασκήνιο" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: γÏαμμή %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(τώÏα wd: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: αποτυχία getpgrp" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "δεν υπάÏχει job control σ'αυτό το κέλυφος" @@ -1199,17 +1270,17 @@ msgstr "" msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p ήδη στον πίνακα ως ελεÏθεÏος;\n" @@ -1233,7 +1304,7 @@ msgstr "%s: μη έγκυÏη υπηÏεσία" msgid "%s: bad network path specification" msgstr "" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "μη υποστηÏιζόμενες δικτιακές υπηÏεσίες" @@ -1270,224 +1341,259 @@ msgstr "Έχεις νέο μήνυμα στο $_" msgid "The mail in %s has been read\n" msgstr "Το μήνυμα στο %s διαβάστηκε\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "syntax error: απαιτείται αÏιθμητική έκφÏαση" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "συντακτικό σφάλμα: «((%s))»" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: η οδηγία της ανακατεÏθυνσης «%d» εκτός οÏίων" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "μη αναμενόμενο EOF κατά την αναζήτηση «%c»" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "μη αναμενόμενο EOF ενώ έψαχνα για «]]»" -#: parse.y:4175 -#, fuzzy, c-format +#: parse.y:4415 +#, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: μη αναμενόμενο σÏμβολο «%s»" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "μη αναμενόμενο σÏμβολο «%s», αναμενόταν «)»" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "αναμενόταν «)»" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "συντακτικό σφάλμα κοντά στο μη αναμενόμενο σÏμβολο «%s»" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "συντακτικό σφάλμα κοντά σε «%s»" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "syntax error: μη αναμενόμενο τέλος αÏχείου" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "συντακτικό σφάλμα" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "ΧÏήση «%s» για έξοδο από το κέλυφος.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "μη αναμενόμενο EOF ενώ έψαχνα «)»" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: η συνάÏτηση «%s» δεν βÏέθηκε" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: μη έγκυÏος πεÏιγÏαφέας αÏχείου" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL file pointer" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: μη έγκυÏη μοÏφή χαÏακτήÏα" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "πεÏιγÏαφέας αÏχείου εκτός οÏίων" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ασαφής ανακατεÏθυνση" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: αδυναμία εγγÏαφής πάνω σε υπάÏχον αÏχείο" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: αδυναμία ανακατεÏθυνσης εξόδου" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "αδυναμία δημιουÏγίας Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου για here-document: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: αδυναμία ανάθεσης fd σε μεταβλητή" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port δεν υποστηÏίζεται χωÏίς δικτÏωση" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "δεν μπόÏεσα να βÏω /tmp, παÏακαλώ να τον δημιουÏγήσετε!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp Ï€Ïέπει να είναι ένα έγκυÏο όνομα αÏχείου" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: μη έγκυÏη επιλογή" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: είναι κατάλογος" + +#: shell.c:1777 msgid "I have no name!" msgstr "Δεν έχω όνομα!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, έκδοση %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1496,43 +1602,53 @@ msgstr "" "ΧÏήση:\t%s [μακÏά επιλογή GNU] [επιλογή] ...\n" "\t%s [μακÏά επιλογή GNU] [επιλοη] script-file ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "ΜακÏές επιλογές GNU:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Επιλογές κελÏφους:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ή επιλογή -o\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "ΠληκτÏολόγησε «%s -c \"help set\"» για πληÏοφοÏίες επί των επιλογών " "κελÏφους.\n" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "ΠληκτÏολόγησε «%s -c help» για πεÏισσότεÏες πληÏοφοÏίες σχετικά με τις " "ενσωματομένες στο κέλυφος εντολές.\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "ΧÏησιμοποίησε την εντολή «bashbug» για αναφοÏά σφαλμάτων.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: μη έγκυÏη λειτουÏγία" @@ -1706,88 +1822,103 @@ msgstr "Άγνωστο σήμα #" msgid "Unknown Signal #%d" msgstr "Άγνωστο σήμα #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "αδυναμία ανοίγματοε επώνυμης σωλήνας %s Ï€Ïος ανάγνωση" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "αδυναμία ανοίγματος επώνυμης σωλήνας %s Ï€Ïος εγγÏαφή" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "κακή αντικατάσταση: δεν υπάÏχει «`» που κλείνει στο %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: παÏάμετÏος κενή ή δεν έχει οÏιστεί" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: έκφÏαση αÏνητική < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: κακή αντικατάσταση" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: μη έγκυÏο όνομα μεταβλητής" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: παÏάμετÏος κενή ή δεν έχει οÏιστεί" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: έκφÏαση αÏνητική < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: αδÏνατη ανάθεση κατ' αυτόν τον Ï„Ïόπο" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "κακή αντικατάσταση: δεν υπάÏχει «`» που κλείνει στο %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "" @@ -1801,123 +1932,123 @@ msgstr "αναμενόταν ÏŒÏισμα" msgid "%s: integer expression expected" msgstr "%s: αναμενόταν ως έκφÏαση ακέÏαιος αÏιθμός" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "αναμενόταν «)»" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "σναμενόταν «)», βÏέθηκε %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: αναμενόταν δυαδικός τελεστής" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "αποÏσα «]»" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "μη έγκυÏος αÏιθμός σήματος" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: κακό σήμα %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "επίπεδο κελÏφους (%d) Ï€Î¿Î»Ï Ï…ÏˆÎ·Î»ÏŒ, επαναφοÏά στο 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "" -#: variables.c:3646 +#: variables.c:3043 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s έχει κενό exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ο χαÏακτήÏας %d δεν έίναι έγκυÏος στην exportstr για %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "απουσία «=» στην exportstr για %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: αδυναμία ανοίγματος ως ΑΡΧΕΙΟ" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright (C) 2012 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2015 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -1940,10 +2071,6 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2012 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1964,15 +2091,15 @@ msgstr "%s: %s:%d: αδυναμία εκχώÏησης %lu bytes (%lu bytes εκ msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: αδυναμία εκχώÏησης %lu bytes" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [name[=value] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] name [name ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -1980,128 +2107,116 @@ msgstr "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function ή readline-command]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [shell-builtin [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [expr]" -#: builtins.c:64 -#, fuzzy -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|[-P [-e]]] [dir]" - #: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dir]" + +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "αληθής" - -#: builtins.c:72 -msgid "false" -msgstr "ψευδής" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..." - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [option] name[=value] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f filename] [name ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts optstring name [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [job_spec]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [job_spec ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [pattern ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"history [-c] [-d offset] [n] ή history -anrw [filename] ή history -ps arg " "[arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [jobspec ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2109,11 +2224,11 @@ msgstr "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2121,99 +2236,95 @@ msgstr "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [name ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [name[=value] ...] ή export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [name[=value] ...] ή readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source filename [arguments]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". όνομα αÏχείου [οÏίσματα]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [expr]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] signal_spec ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [id ...]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [pid ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] pipeline" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2221,63 +2332,63 @@ msgstr "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while COMMANDS; do COMMANDS; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until COMMANDS; do COMMANDS; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NAME] command [redirections]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function name { COMMANDS ; } ή name () { COMMANDS ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ COMMANDS ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "job_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( expression ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ expression ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - Ονόματα και σημασία οÏισμένων μεταβλητών του κελÏφους" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | dir]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [optname ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [οÏίσματα]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2287,35 +2398,35 @@ msgstr "" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -#: builtins.c:237 +#: builtins.c:239 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]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:244 +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 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2327,7 +2438,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2335,23 +2446,23 @@ msgid "" " defined." msgstr "" -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"ΑφαίÏεση κάθε ΟÎΟΜΑτος από τη λίστα των καθοÏισμένων ψευδωνήμων.\n" +"ΑφαίÏεση κάθε ΟÎΟΜΑτος από τη λίστα των καθοÏισμένων ψευδωνÏμων.\n" " \n" " Επιλογές:\n" -" -a\tαφαίÏεση όλων των ψευδωνήμων.\n" +" -a\tαφαίÏεση όλων των ψευδωνÏμων.\n" " \n" -" ΕπιστÏέφει επιτυχία εκτός αν το ΟÎΟΜΑ δεν είναι υπάÏχον ψευδώνημο." +" ΕπιστÏέφει επιτυχία εκτός αν το ΟÎΟΜΑ δεν είναι υπαÏκτό ψευδώνυμο." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2385,14 +2496,15 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2403,7 +2515,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2414,7 +2526,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2428,7 +2540,7 @@ msgid "" " not a shell builtin.." msgstr "" -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2444,7 +2556,7 @@ msgid "" " is invalid." msgstr "" -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2467,16 +2579,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2489,14 +2601,13 @@ msgid "" " -P is used; non-zero otherwise." msgstr "" -#: builtins.c:422 -#, fuzzy +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2518,7 +2629,7 @@ msgstr "" " ΕπιστÏέφει 0 εκτός αν δίνεται μη έγκυÏη επιλογή ή ο Ï„Ïέχων κατάλογος\n" " δεν μποÏεί να διαβαστεί." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2534,7 +2645,7 @@ msgstr "" " Κατάσταση εξόδου:\n" " Πάντα επιτυχία." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2542,7 +2653,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2550,7 +2661,7 @@ msgid "" " Always fails." msgstr "" -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2560,16 +2671,16 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2579,9 +2690,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2609,14 +2720,14 @@ msgid "" " assignment error occurs." msgstr "" -#: builtins.c:527 +#: builtins.c:530 msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2631,7 +2742,7 @@ msgid "" " assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2657,15 +2768,15 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2678,7 +2789,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2705,7 +2816,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2717,7 +2828,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2758,7 +2869,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2769,8 +2880,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2781,7 +2892,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -2789,7 +2900,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2798,7 +2909,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2828,7 +2939,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2840,7 +2951,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2854,7 +2965,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -2863,22 +2974,22 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -2890,7 +3001,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2900,7 +3011,7 @@ msgid "" "given." msgstr "" -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2909,23 +3020,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -2934,7 +3045,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -2944,7 +3055,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -2958,7 +3069,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2968,14 +3079,14 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -2987,7 +3098,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -2997,7 +3109,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3042,7 +3154,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3063,27 +3175,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3093,7 +3206,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3105,7 +3218,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3173,7 +3286,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3190,7 +3304,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3200,7 +3314,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3212,7 +3326,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3231,7 +3345,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3243,9 +3357,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3253,7 +3366,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3264,7 +3377,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3278,7 +3391,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3292,7 +3405,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3356,9 +3469,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3375,7 +3488,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3383,7 +3496,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3395,7 +3508,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3439,7 +3552,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3448,18 +3561,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3469,7 +3582,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3487,6 +3600,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3498,7 +3612,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3516,7 +3631,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3534,7 +3649,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3554,7 +3669,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3569,7 +3684,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3582,7 +3697,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3599,7 +3714,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3619,7 +3734,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3635,7 +3750,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3646,7 +3761,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3667,7 +3782,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3678,7 +3793,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3689,7 +3804,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3699,10 +3814,10 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3716,7 +3831,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3727,7 +3842,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3741,7 +3856,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3752,7 +3867,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3780,7 +3895,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3834,7 +3949,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -3844,19 +3959,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3865,7 +3980,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -3874,16 +3989,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3892,7 +4007,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -3903,25 +4018,25 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -3942,7 +4057,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3959,15 +4074,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -3981,7 +4096,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3994,11 +4109,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -4008,7 +4123,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4021,7 +4136,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4052,7 +4167,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4063,20 +4178,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4093,7 +4209,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4102,3 +4218,18 @@ msgstr "" "Ανάγνωση γÏαμμών από αÏχείο σε μεταβλητή Ï„Ïπου πίνακα.\n" " \n" " Συνώνημο του «mapfile»." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "αληθής" + +#~ msgid "false" +#~ msgstr "ψευδής" + +#~ msgid "times" +#~ msgstr "times" diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo index 5dd2d584d20cf04281ade00909b9cc62653a9601..72a1a7b376dbfc429794f3ab0dd1dd7960dedf6c 100644 GIT binary patch delta 17465 zcmd^_2Y40L+V5v3p@iP6z|cD(ln_EoAT;SnM+hO=34t`ScW44z{r~c+UOKJ>|Ri`|f@2JkOioTJLJ_de^(wtUd7d zjg{`auTuC#t=M%2&k)NnE`cL!8Ak0G!&ur%TEp1e)i651eUKvKYuFc7NH7dlNrRPO zF02MausmD|o5Jg19ryrj2A_rX;0ajQFv7++B;rt1?q(P@VO^*SZGHBK>S&^$55ZdG zSHmXo4p<%Tgf=_?Wx!cj8-5Mz!;0MvqcOB$JJ=V-GrkcZ(Fesks2LrE$?#iP3nujN z3`+Ak9jb$3*cNVpE#RME9ryv1Cx3!6ut875perL0+Hfvx16PZTZ#+sO9v<@_T|}$`iLh4Oj~6!6Q(fI}01Yi%>Id(91KR2dqtgJXE`EKfelwYoORjLY6)P z)$jnU3qOJ~>=!@ZCCSsLL3w5x>!=%)fvHe48UtAkBOA7a zclr9=P(k??RDWmT`675zJNaXAC6E-;Laly3^MEVO&2gj0?I8Z9)8 z80zhY1K{2zhCy?q;&RWBs!*{}4~D{2XhY&l6dP6;#%FYV<5kR(sa|m%ryKgjb%wE! zf!=`Mksoy%12Ev=+YRG9`QhsgBZu-n8@zrtZ#0Y&%5SCd!?4O-hVdrjJh_Q}$gkbP z@lCt9`&j>_Bx;g40&j$jX$0=~&h&Fo!TAF`#T05WJq77kTRm2L#EbU!kYzRc!k6Jv zsMr{`&1;_y)ou~AVFYR^AKS+MFHd3@it2DL)S4cJ72z4EwfxlQMZdiEcJGXD0!LHc z3a-EdL0BC_zj@R!)-c6#QFab9UiT~;3cm0hfl7U2mls<(yIB8$R9t}K8Y(=w*ITQU z{kRSb2E(z`|MC#lvowQV_kwTdQK+?rx5LA48ODRuD>zA-ej1+QkiwvIr|~NM@I7xS z7JTR}UCWPI2I{p9e?qj=@X1d-8lQQ=G!(u_gG z5cd@`Wg_RkVJXNrzJMp-^ozK@hGEPzO=BAEuBmAnPcxCzFpYe8V|~+g{TcW!iZ7v- z;79}0*v$Z^ApII!E-~G6U@O#;JPUPR9D>@8AHp#h{1xm#eo#}>y%!X~Cgc}G#ggN5 zJM78$#y%2ico7by!Wi2$-oV0}q4IOun8slE5M(08c_hv0O<@si4cEX{@Nw7{9)~i}>VZcX->65TA&iGz;Be?}7pRUR zusM7b>dZb2b!4B1+D27-n(lUM1T{bc>;l~KTpEm@F>*os+DLOVOiXmL^IeK z%F>4PSIZzF^z&7v^r~%)A-QfkO0TOz7o|p$CH`%cQ=!`B zLk00l*a>cga`ApY|An7#GSKtTAcz5BV?2ozDz1PX;R{efb`EMr-$5NTv4gyh8$t~{ z1ZsxUU_T8a8G7C0heB(M2a>Zu9!Xc=&z6iAxZ3df0 zBAg7z!W&^bcoJ%$ibFgPwT9X)W1u`S3$}nu-~hN0PJr(~)$2AC&oRC+h=eSk3X@Pz_#!J>X%enZ}LwUZZuO)_5xH z1aF55(ifq2(Q&AA;5^hgwRz)-iD435Nlb-u{q;~Y`2&>8qp%R}f?C^zv8FK{ra_$# zcR}svLr~k)8s{CYouC_pP%*Rwc7vOsmhLc=q2Ws7y_xj#IS{JjQE<2_K+Sj`)Gql2 zDo8tD<^^3gR7Y!k?u44q$4~|}nqazDv^1y*MWB{)Beb>uA0Q!D?1yssSt!fnCVDP! z>9Z@;O!`5+1G1nzbvKlYpMlyXhyDD|P}{TiB+tOEPzKF_imhv5EA9V#NhoMuhO+E5 zl&jDBG$#9N24!F(RPc?5I#`OJI=%zSkiAd?pM*LAe}?j0iz#0Haj+NpFih0`kCM>Z zoP%oO?UF8BEm>_h%2)X7(8nz!wepeB$4o54v?!L|Tux7-F3;SQ*YeFPQM zKf$o>YL%vYGwcb~!4#+li=ftQ8>|kWgqra_pWi_Z)cSI-d??fsO!gUu^3;7$1MY!@ zg>e{a+;%hB|FY<^nWp4$H$cP;2)w)X7#c-7~lelg$(%?%Hp_L-i+EpEkQ3R1G1p@^*pE}I1CjN4%87` z3bh^IhFYpB8Qz43!DRCJP~+SWW$@EsKXC}EgO8zHSZlUtSTfX1XFvs2F_eL8V0X9` z+VC{g?yxdFwudrgtj{ZBi%>xsew&0`Q8~*SumhB3qo7=u1rSVPlJ5@HCWb4nn;w-t+ZMv%Q)3fI8F1 zL7fk?{rpm>puGWVNwz|HY!8&-$DxAsD<}`v&GEKtH`rAB|8f#KNUngI`K?ffY=!FZ zd8nBlg__Z4(1w-fcpZ0yn%O8Q!!n^_W*JmJ4?-J01J(ZtsMq~Buq)#mF}dDa^nh|z zCe#rchML)SsE%HP+J^7?`LCclEI-#Xv0uu#`&IyE`~f-FY)R% zgF{R{*FcR|yud48v4H(w1;ttv>hKPzgX2M;kHN(9{Mv3&pNv(+=?7O2?R2ydf&EBuB0 zkR7J`O=<9>rtu;(?e>Ieynz0P-KMdUal$+InC?fVl)ZF-Cp_+giuSjm8&vRR^6@9V82AaQgIcG&`W>N7ehAc3=0H}=2tj$| z3aBMr4J*QRP)m7-%P?!?S9lSs;cIX-d=uV)2ilxAjS#UAFFK{>tz^UEwvQ88d~o6z=Fn>@i_V7ODy-BQoE)e z3*kuge}p*Gh_NmAo6?!)mJ!y35?ffV%lpIG3@{FU!2pl7wu~eyY-wj1Bgmg1q#48L z(9Lo`Dh=sj8O5~ENJEe74#PC^UtDUruJ1{scgYWiT7vc?E#o!%?+!I?>{u)89t2g! zTJD-OfjTe}pgb}Ja`83B!$k6TkF(r+!7-?l>^-Phu*Q3A411FA0Ug@Sg#%SS0gvM8 z!EhS+?$az|9K3N_*m4axg+f7h9_k>9oo=}YMJ>3B88?Rtnulgs?nkBPpiaaFGd;rw zLbY4$^IABYcI)8v81nrrufLTjKc?Qz@CiJzG@R*m+>;Nudf5zzy7^>49g%rZGhGIC zW!eA};EPc2i0@%{*nW=Xp6N4SEAq>rE}wV9WVjc$fibyWKOJCa^5Kajbn#dT+ro#T zTzVL`fM=lws4>?YFb#GgUjp?mxCiQ}{u9*px&U=Vm!Ibu)Bwt$Bq$HgfSTBRh{wXl zRV38#CfE($4mIEbpGKZHKo6*n3t$9Z31vu~d~b$>pw5fsP{H;r)I|2e=I}Js62%mF z^=d-*{XdRGKMIPVT=EEP2H%GA$j?x&YgOpEZiLSTP%*H{=gUwo|HfzIBFnJJr$Q~+ zY}gXs;^&`$?!W(iq67ss=X*?oisE#r8LorX;BKhb>+4X4egQSJrp2BIQlQGOfI3lc zgElOMij~7qhLj6h?l+}gFuVoD0TO!e7l*tV-wm~9`=O51&;9(*P%~&=;w{l&sC~Q` zs{INmgLgp1#wnW1<7qt4IhTO(YydV!MCAY z9LGP0B*A#7{2V9`-3VpCMwkK*z>cu$A}_{zL&d~EsB>oeBKE&JE<&M!H$u&D2TXx) zKp9wXvFF-WP_9jdT7t`=+FuV9D^b7vB$OdP`sMAHcuPA8YAKdM9cYh)NsJ}&KGZf$ zyuuqO9m+*Zp|;DtP@afFZOemj1pFFKfGJD8dh4J(cQ2ITJE1(aA5MZXd?Ht@O@lHx zyn=+H{Q;;0Xdl#?pN2B%9Ms8Jf4S%44p6S^4K>hcD1)+~+Fc8K!du`NxF2fUHp0_l zCs+>lhiucZkw!vmG8(F34wOL~p@Qofs1tFI&)1;V^ew1^r^1z%F%+gk1??)RSb79z z!2`ZNVTBizlb|MA;xfz+2NE)13sl2rp$*@La@7T>ZPw~4&&5OFBJz`=g6=h_ZFdsN z13yD~EROq?V&D=egGWHQd?8f3J7E>ZHy$A|1wIWm(>lNNUZc(60Pt*{3?bshU(E~>lAi_$cx zpj!sj(Y-!jhnkUby=PDY98GpQ)Qld4mEmL1hR;KJJNt{s6T*n%>|U)&t7ZDLyZQ z>OVV7LKd!q3cf8+Yx*asj?Y7_b>kboAnOL@$}un*u7KJFJK-SsEgT4w*LX{_466Qi zsQbeim;|fd3ZO7(NyC4;6w`4+{U`wH9Rtgo>FG3CU z2Gk6Vo4xieq3REUTCyduy7vF?NNC2l_@#eHA4x_s4eR-h zucTa8YCZfAGWfOSKAL&iGl;tKtR8-5y3YV~br2bzkC?=t!EZ_T7mjMgkiOlo{3ZD` z(zhVZNxy`Aii{(#HEa%l`&{Mc-$Kc64EMpsMlSLU`S`!7uTwCr1E}mt^eeoLVka^U zIe>1fU!f0aeyzFdEmZ)SitIs>{I>k;bDvp0&x~ze8e?2ILPz ze#N^%_#WRMj0ecHpx_xAJw#f;_!!g^gRDT7AUd&Tqt8UHA+2W<(wF=Y+UsCx1ofM* z18fJMM0XL<77viu^B{7Z^i-sW*1sc(xkxkQ1GfqhOIptW55N9xP5mR}^k%!quX8CZ zhg^v~j{aMu3u%72^Y8w|46+EFo_@41d-xQf_$QEj<#-gIlRtqpL;gU%3T18l@($!H zl70skAeSHyBA-#0AH#q3j3JkRt`+r9!Sa3|J4ydc*?F(FJHGol{P!pZ`jsyC3XStr z?o0YsM91{=2p_H8185cLvgZX7I;P*C>}F&XX?1m*(ukh12p><3>yZ1DclF-*?$KGF z7Ozt971D|HNANJBM>iJzwAS+{xE-mfysv9a{qkg=RRx~O=wC;QysU8w-ssomi;w$M zg3sw-c!2B_==cRHU5eWsSY0lM%i7^h`h!G;N-A^tF&Y#74Ib z>iGtljWqG|;g8AWlKBo+@RcOpCzZdO{q)`NU8KK1Kx^t&Ab%-R1IZ%)6!Hb~3wb>a zNbC8d2jgB?$JhC)uyGE>9pw7Mp-4vt7(#wBQrjOa$8WR?-5W?fP%*#{FcLqwGfILRix+<~soC zxBSXoeO(z^mL-0}7pR*=AHVo*%ER0I^6tJ)+0&%Az;M(rd=$mIh+eI~`%T65A?74x&G9(2l`Hh~eF5PLu zg-qlEvJ$xynTK5TJ3U0YEyi5|ccWW{)JMAc}iRRC*X$k2GTtJ;yz`f1gMH1gRT;qf@dKl7UpAyaMg6 zhI)QNYLgyANBJez}LvX zgIplp56*;tfPX^Do@^31ekM-ue?33=o%HnctI^d!w+>c9N)SC=(Jk`pDu0x;iC9R8 z{B-yw@*#2-(bJbcN09D?wDEPFe7f@=Mx}VSDsF?zkzO=9=~sH)FN?q@eVtUF`RO{O zdy|f#&3@8He0?cAN4}+>pF#S2Ki!nNz4`rVoI&{zl8h7}Wltq4=&4A9n~)GvN`APj zCBWcQ$Y{UA!G8T%pQ?6-vKL`hbSb|6B>7h8pLW}|!qXJiBVCR36>bF% zCs<^be$eGsv!Wd=3S{PHr-a6;XymY&dMzgWQGch7e^AhU0x?67|hKn z$SugRa|=R&oItT1Ds)cGGV4U&pJpalY$h3lt{6KLa+s+7uigRa|gaQu# zL_DdqxKD4hbZg%QX5?h*Ix{X(b4iQHvHq7tb_`69R3DTQSvw#rvSZNH(ord~6`lI? z&7>NYY@WEdyxf9$K_+ZFGv}KvB0Gmwj_e!OyR0<0IDd9wUT&rxsX4r31;0t;o?$H` zIm44``uShIXh*gU@APY}w}&@~>6{W5`SC9`e>FN-I{eakRm{ZF4=2quBX_+YTQ{?? zsJJjw{>ab39mRoANpXR5R zoKv{4z@EL>b~fE(c8z@AzdX~QKWnt}NV&gPTzYX z3WK?!+`@v$^LZOF;l2F!ks0|zBb)P6BUKAVMy3=z8L3rxY3Yo@+sc=IT{5wuX-77# zt`k|kreXCiZm+i8dAvO-b$pq=t+S)GRWCaEDRZ4wI_&0EW~`RXS^um#sG?GOoDO>)wfQlWyU!Lht0ueTxqih-ZJ|I3IfF$c{WojvP*&r zsiC7M5}Vnfg&D!ZO_)2$c%kM%o3-@x8}oT%Qt$^u+;IF*^!z1xBeQhRbF1`eDR&x zC-VHu^UC5sx1gvbWMfaH&w*}{lp*CR#>Gt-HD=-jJF?`!+&cc$bMx~9S-EW0yv3dD z$oB_2)b|U5C7H}3h)41k+qv0xr1vW=%gVBI^8#%0U}kY{5l2v$$f)AsG`!|gg%_<+6 zb*!l~x{B2_vf)_fU#aWHb?(~Mb9U)~(~Q|GH{iI_ntvJ5G%; zBj-+cFKuxqwwm)y6Khayw%f?K;NpV9g2nl6;C0T6{?x?kXO-UdWtVc!+U8ch(&OJv ztW`(n(fGj=CXOF14;2xw#R2DHMYB!x@=E4u%enn0vs&D&tUzWS1#O*+waf<5npMq_ zrgM2UGcWp5H8VEW$w;-DMrWj2dn~7UniY2LOtU6CuhuggMjH*bPFm4D4b4`SoQKC- zuS6ejWmb=KqL*8~vgA^>&T>v9nq8X)LUzf2R7Xnce4K3!XcNjP z){AL&Ne*wvK7L98lV6xcFy{s{X6Ny~YL;UqIl*4$;r4d0WOgu=8!FMkm~8WUEiC4( zS5U%vI(sp}%Zta|W6ppibF$OBw>d9r^)|1v%G*orqTH zFVQB>b9vUF_JK@Zg6ZDtBboSiUnA3*XY1e$o3R-wuqZbe3Ob+mHE)it>}OuEY|cI% z-x&)Cc-bsF+;e9^pg4%B(Pb&-+?WIcKD(p!4GbW~Nv4ckK+P`e1WHOaJVf!@Ik4R$*p|`-*orBi3aG0$G8qXvSbJ z2Gv~O{Q63b^1qEYnC)aEbIdQw3wWMv9Za@);RJJKJTJ@Q#dcm{VNrDVF!Pz%k-V(H?z*p^?7Cz*RxBlXvcZxC*}VBC9U^Ayr4OA=9}^V*&AA9_@z0~ z-v`a>xTZyiUTMz#$M>{I&XlX8Q?4?PTV_$T`_<;H{|9bs&Q&*>cmCzN=Df7V9L0St z-buU3OmIRsnREZSTiaXZ{*?<`H0>_)fq&)3HZb-dUe?C_dQodq_rKwe7Uhn1e}(_@ zyIJ)3yXM}iQ7&g~WB;GNm@P4*_x)scH~;^=o;j&GW(WU%R^4e-)vDs8RI#e-rgj4X z{kNr!BLj{%iPorKjr_|stxGvw%Ay0STTB1fx3Yy5$}VJ|n9(_Ht(7(YnQK{H=Ys)O zHK%c^)#^7lGKU-4H_q7pR)uJ|pEW1uKf0SO)wL{AHOhsoN+tI$7UeEh*>Wz-v?@gA zB{g?ur(3n6Ez+&e|E(Jt(Q{3vH7w@8@?I9@Ue>_;x9((L&au{)-N_v8Wapj5dDhVX zP4}{kdDb2O?7eJbk+tC8xR*t_m-RLO^*fovovdASSBcfa`rC`ynT7mL`ER|L&0KCh T^p7rP4i~do(au*{@#X#p{hqgv delta 14888 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" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "directory stack empty" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "directory stack index" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -698,7 +736,7 @@ msgstr "" "by\n" "\tdirs when invoked without options, starting with zero." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -744,7 +782,7 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -773,154 +811,164 @@ msgstr "" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by ‘dirs’, starting with zero. For example: ‘popd " -"+0’\n" +" \tshown by ‘dirs’, starting with zero. For example: ‘popd +0" +"[0m’\n" " \tremoves the first directory, ‘popd +1’ the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by ‘dirs’, starting with zero. For example: ‘popd " -"-0’\n" +" \tshown by ‘dirs’, starting with zero. For example: ‘popd -0" +"[0m’\n" " \tremoves the last directory, ‘popd -1’ the next to last.\n" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: invalid timeout specification" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "read error: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "can only ‘return’ from a function or sourced script" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "cannot simultaneously unset a function and a variable" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: cannot unset" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: cannot unset: readonly %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: not an array variable" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: not a function" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: cannot export" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "shift count" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "cannot set and unset shell options simultaneously" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: invalid shell option name" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "filename argument required" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: file not found" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "cannot suspend" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "cannot suspend a login shell" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s is aliased to ‘%s’\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s is a shell keyword\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s is a function\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s is a special shell builtin\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s is a shell builtin\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is hashed (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: invalid limit argument" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "‘%c’: bad command" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: cannot get limit: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: cannot modify limit: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "octal number" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "‘%c’: invalid symbolic mode operator" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "‘%c’: invalid symbolic mode character" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " line " @@ -934,82 +982,103 @@ msgstr "last command: %s\n" msgid "Aborting..." msgstr "Aborting..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:463 msgid "unknown command error" msgstr "unknown command error" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "bad command type" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "bad connector" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "bad jump" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: unbound variable" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atimed out waiting for input: auto-logout\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "cannot redirect standard input from /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ‘%c’: invalid format character" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] still exists" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: maximum eval nesting level exceeded (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximum source nesting level exceeded (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricted: cannot specify ‘/’ in command names" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: command not found" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bad interpreter" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: cannot execute binary file: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "‘%s’: is a special builtin" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "cannot duplicate fd %d to fd %d" @@ -1054,37 +1123,37 @@ msgstr "identifier expected after pre-increment or pre-decrement" msgid "missing `)'" msgstr "missing ‘)’" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "syntax error: operand expected" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: invalid arithmetic operator" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token is “%sâ€)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "invalid arithmetic base" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "value too great for base" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: expression error\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: cannot access parent directories" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "cannot reset nodelay mode for fd %d" @@ -1099,148 +1168,148 @@ msgstr "cannot allocate new file descriptor for bash input from fd %d" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer already exists for new fd %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d appears in running job %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "deleting stopped job %d with process group %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) in the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no such pid" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Done" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Stopped" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Stopped(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Running" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Unknown status" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No record of process %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d is stopped" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: job has terminated" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d already in background" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: turning on WNOHANG to avoid indefinite block" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: line %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp failed" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "cannot set terminal process group (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "no job control in this shell" @@ -1294,17 +1363,17 @@ msgstr "realloc: underflow detected; mh_nbytes out of range" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start and end chunk sizes differ" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p already in table as free?\n" @@ -1328,7 +1397,7 @@ msgstr "%s: invalid service" msgid "%s: bad network path specification" msgstr "%s: bad network path specification" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "network operations not supported" @@ -1365,224 +1434,261 @@ msgstr "You have new mail in $_" msgid "The mail in %s has been read\n" msgstr "The mail in %s has been read\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "syntax error: arithmetic expression required" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "syntax error: ‘;’ unexpected" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: ‘((%s))’" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: bad instruction type %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: redirection instruction ‘%d’ out of range" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "maximum here-document count exceeded" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "unexpected EOF while looking for matching ‘%c’" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "unexpected EOF while looking for ‘]]’" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: unexpected token ‘%s’" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "syntax error in conditional expression" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "unexpected token ‘%s’, expected ‘)’" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "expected ‘)’" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "unexpected argument ‘%s’ to conditional unary operator" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "unexpected argument to conditional unary operator" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "unexpected token ‘%s’, conditional binary operator expected" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "conditional binary operator expected" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "unexpected argument ‘%s’ to conditional binary operator" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "unexpected argument to conditional binary operator" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "unexpected token ‘%c’ in conditional command" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "unexpected token ‘%s’ in conditional command" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "unexpected token %d in conditional command" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error near unexpected token ‘%s’" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "syntax error near ‘%s’" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "syntax error: unexpected end of file" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "syntax error" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use “%s†to leave the shell.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "unexpected EOF while looking for matching ‘)’" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: function ‘%s’ not found" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: possible retry loop" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: bad connector ‘%d’" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: invalid file descriptor" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL file pointer" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ‘%c’: invalid format character" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "file descriptor out of range" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: cannot overwrite existing file" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: cannot redirect output" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "cannot create temp file for here-document: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: cannot assign fd to variable" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port not supported without networking" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: cannot duplicate fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "could not find /tmp, please create!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp must be a valid directory name" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: invalid option" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "cannot set uid to %d: effective uid %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "cannot set gid to %d: effective gid %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "cannot start debugger; debugging mode disabled" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Is a directory" + +#: shell.c:1777 msgid "I have no name!" msgstr "I have no name!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1591,42 +1697,52 @@ msgstr "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU long options:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Shell options:\n" -#: shell.c:1835 +#: shell.c:1938 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o option\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use the ‘bashbug’ command to report bugs.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "bash home page: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "General help using GNU software: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: invalid operation" @@ -1800,77 +1916,91 @@ msgstr "Unknown Signal #" msgid "Unknown Signal #%d" msgstr "Unknown Signal #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "bad substitution: no closing ‘%s’ in %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: cannot assign list to array member" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "cannot make pipe for process substitution" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "cannot make child for process substitution" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "cannot open named pipe %s for reading" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "cannot open named pipe %s for writing" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "cannot duplicate named pipe %s as fd %d" -#: subst.c:5376 +#: subst.c:5959 +msgid "command substitution: ignored null byte in input" +msgstr "command substitution: ignored null byte in input" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "cannot make pipe for command substitution" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "cannot make child for command substitution" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: cannot duplicate pipe as fd 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: invalid variable name for name reference" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parameter null or not set" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: substring expression < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: bad substitution" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: invalid indirect expansion" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: invalid variable name" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter null or not set" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expression < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: cannot assign in this way" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1878,12 +2008,12 @@ msgstr "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "bad substitution: no closing “`†in %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "no match: %s" @@ -1897,123 +2027,123 @@ msgstr "argument expected" msgid "%s: integer expression expected" msgstr "%s: integer expression expected" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "‘)’ expected" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "‘)’ expected, found %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: unary operator expected" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: binary operator expected" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "missing ‘]’" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "invalid signal number" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: bad signal %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "error importing function definition for ‘%s’" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell level (%d) too high, resetting to 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: circular name reference" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variable may not be assigned value" -#: variables.c:3646 +#: variables.c:3043 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: assigning integer to name reference" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "no ‘=’ in exportstr for %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibility value out of range" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2036,10 +2166,6 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2012 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2060,15 +2186,15 @@ msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: cannot allocate %lu bytes" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [name[=value] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] name [name ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -2076,111 +2202,99 @@ msgstr "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [shell-builtin [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [expr]" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]] [-@]] [dir]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..." - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [option] name[=value] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f filename] [name ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts optstring name [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [job_spec]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [job_spec ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [pattern ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2188,15 +2302,15 @@ msgstr "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" -msgstr "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2204,11 +2318,11 @@ msgstr "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2216,99 +2330,95 @@ msgstr "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [name ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [name[=value] ...] or export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [name[=value] ...] or readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source filename [arguments]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". filename [arguments]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [expr]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] signal_spec ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [id ...]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [pid ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] pipeline" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2316,63 +2426,63 @@ msgstr "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while COMMANDS; do COMMANDS; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until COMMANDS; do COMMANDS; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NAME] command [redirections]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function name { COMMANDS ; } or name () { COMMANDS ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ COMMANDS ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "job_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( expression ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ expression ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - Names and meanings of some shell variables" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | dir]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [optname ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [arguments]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2382,35 +2492,35 @@ msgstr "" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -#: builtins.c:237 +#: builtins.c:239 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]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:244 +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 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2422,7 +2532,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2440,30 +2550,30 @@ msgstr "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " "been\n" " defined." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2497,7 +2607,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2535,13 +2646,14 @@ msgstr "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2559,7 +2671,7 @@ msgstr "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2577,7 +2689,7 @@ msgstr "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2601,7 +2713,7 @@ msgstr "" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2630,7 +2742,7 @@ msgstr "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2653,16 +2765,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2695,16 +2807,16 @@ msgstr "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of ‘..’\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof ‘..’\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of ‘..’\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of ‘..’\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if ‘-L’ were " "specified.\n" @@ -2717,13 +2829,13 @@ msgstr "" "when\n" " -P is used; non-zero otherwise." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2736,7 +2848,7 @@ msgstr "" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, ‘pwd’ behaves as if ‘-L’ were specified.\n" @@ -2745,7 +2857,7 @@ msgstr "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2761,7 +2873,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2773,7 +2885,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2785,7 +2897,7 @@ msgstr "" " Exit Status:\n" " Always fails." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2795,10 +2907,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2811,16 +2923,16 @@ msgstr "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the ‘type’ " +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the ‘type’ " "builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2830,9 +2942,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2867,9 +2979,9 @@ msgstr "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2897,17 +3009,17 @@ msgstr "" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." -#: builtins.c:527 +#: builtins.c:530 msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Set variable values and attributes.\n" " \n" -" Obsolete. See ‘help declare’." +" A synonym for ‘declare’. See ‘help declare’." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2933,7 +3045,7 @@ msgstr "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2959,9 +3071,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2990,14 +3102,14 @@ msgstr "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3019,7 +3131,7 @@ msgstr "" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3069,7 +3181,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3089,7 +3201,7 @@ msgstr "" " Exit Status:\n" " Returns exit status of command or success if command is null." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3170,7 +3282,7 @@ msgstr "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3181,8 +3293,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3201,8 +3313,8 @@ msgstr "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3212,7 +3324,7 @@ msgstr "" " Returns success unless COMMAND is not found or a redirection error " "occurs." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3224,7 +3336,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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3238,7 +3350,7 @@ msgstr "" "executed\n" " in a login shell." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3286,8 +3398,8 @@ msgstr "" " With the ‘fc -s [pat=rep ...] [command]’ format, COMMAND is\n" " re-executed after the substitution OLD=NEW is performed.\n" " \n" -" A useful alias to use with this is r='fc -s', so that typing ‘r " -"cc’\n" +" A useful alias to use with this is r='fc -s', so that typing ‘r cc" +"[0m’\n" " runs the last command beginning with ‘cc’ and typing ‘r’ re-" "executes\n" " the last command.\n" @@ -3296,7 +3408,7 @@ msgstr "" " Returns success or status of executed command; non-zero if an error " "occurs." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3316,7 +3428,7 @@ msgstr "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3340,7 +3452,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3349,15 +3461,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3370,21 +3482,21 @@ msgstr "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3396,7 +3508,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3415,7 +3527,7 @@ msgstr "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3424,7 +3536,7 @@ msgstr "" " Returns success unless PATTERN is not found or an invalid option is " "given." -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3433,23 +3545,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3465,23 +3577,23 @@ msgstr "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3489,7 +3601,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3499,7 +3611,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3520,7 +3632,7 @@ msgstr "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3533,7 +3645,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:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3543,7 +3655,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3557,13 +3669,13 @@ msgstr "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3575,7 +3687,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3594,7 +3707,8 @@ msgstr "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow ‘-l’ they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3603,7 +3717,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3689,7 +3803,7 @@ msgstr "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3710,27 +3824,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3758,27 +3873,28 @@ msgstr "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3787,7 +3903,7 @@ msgstr "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3807,7 +3923,7 @@ msgstr "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3875,7 +3991,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3957,7 +4074,8 @@ msgstr "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3973,7 +4091,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3983,7 +4101,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4002,7 +4120,7 @@ msgstr "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4013,7 +4131,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4047,7 +4165,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4059,9 +4177,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4078,16 +4195,15 @@ msgstr "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of ‘--’ disables further option processing.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4105,7 +4221,7 @@ msgstr "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4129,7 +4245,7 @@ msgstr "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4153,7 +4269,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4217,9 +4333,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4297,9 +4413,9 @@ msgstr "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4315,7 +4431,7 @@ msgstr "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4328,7 +4444,7 @@ msgstr "" "must\n" " be a literal ‘]’, to match the opening ‘[’." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4348,7 +4464,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4433,7 +4549,7 @@ msgstr "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4442,18 +4558,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4469,20 +4585,20 @@ msgstr "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe ‘-p’ option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe ‘-p’ option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if ‘type -t NAME’ would not return ‘file’.\n" -" -t\toutput a single word which is one of ‘alias’, " -"‘keyword’,\n" -" \t‘function’, ‘builtin’, ‘file’ or ‘’, if NAME " -"is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\tor nothing if ‘type -t NAME’ would not return ‘file’\n" +" -t\toutput a single word which is one of ‘alias’, ‘keyword" +"[0m’,\n" +" \t\t‘function’, ‘builtin’, ‘file’ or ‘’, if NAME " +"is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4491,7 +4607,7 @@ msgstr "" " Returns success if all of the NAMEs are found; fails if any are not " "found." -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4509,6 +4625,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4520,7 +4637,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4553,6 +4671,7 @@ msgstr "" " -e\tthe maximum scheduling priority (‘nice’)\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4564,7 +4683,8 @@ msgstr "" " -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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4582,7 +4702,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4614,7 +4734,7 @@ msgstr "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4650,7 +4770,7 @@ msgstr "" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4676,7 +4796,7 @@ msgstr "" "invalid\n" " option is given." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4700,7 +4820,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4730,7 +4850,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4753,8 +4873,8 @@ msgstr "" " \n" " The WORDS are expanded, generating a list of words. The\n" " set of expanded words is printed on the standard error, each\n" -" preceded by a number. If ‘in WORDS’ is not present, ‘in “" -"$@‒\n" +" preceded by a number. If ‘in WORDS’ is not present, ‘in “$@" +"[0m‒\n" " is assumed. The PS3 prompt is then displayed and a line read\n" " from the standard input. If the line consists of the number\n" " corresponding to one of the displayed words, then NAME is set\n" @@ -4767,7 +4887,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4795,7 +4915,7 @@ msgstr "" " Exit Status:\n" " The return status is the return status of PIPELINE." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4813,7 +4933,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4851,7 +4971,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4869,7 +4989,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4887,7 +5007,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4897,7 +5017,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Create a coprocess named NAME.\n" " \n" @@ -4907,9 +5027,9 @@ msgstr "" " The default NAME is “COPROCâ€.\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4933,7 +5053,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is readonly." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4951,7 +5071,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4976,7 +5096,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the resumed job." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4994,7 +5114,7 @@ msgstr "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5048,7 +5168,7 @@ msgstr "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5152,7 +5272,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:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5162,19 +5282,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5190,19 +5310,19 @@ msgstr "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by ‘dirs’, starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by ‘dirs’, starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by ‘dirs’, starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by ‘dirs’, starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The ‘dirs’ builtin displays the directory stack.\n" " \n" @@ -5210,7 +5330,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5219,16 +5339,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5243,18 +5363,18 @@ msgstr "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by ‘dirs’, starting with zero. For example: ‘popd " -"+0’\n" -" \tremoves the first directory, ‘popd +1’ the second.\n" +" \t\tshown by ‘dirs’, starting with zero. For example: ‘popd +0" +"[0m’\n" +" \t\tremoves the first directory, ‘popd +1’ the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by ‘dirs’, starting with zero. For example: ‘popd " -"-0’\n" -" \tremoves the last directory, ‘popd -1’ the next to last.\n" +" \t\tshown by ‘dirs’, starting with zero. For example: ‘popd -0" +"[0m’\n" +" \t\tremoves the last directory, ‘popd -1’ the next to last.\n" " \n" " The ‘dirs’ builtin displays the directory stack.\n" " \n" @@ -5262,7 +5382,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5273,19 +5393,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5300,24 +5420,24 @@ msgstr "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5355,7 +5475,7 @@ msgstr "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5372,15 +5492,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5408,15 +5528,15 @@ msgstr "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5429,7 +5549,7 @@ msgstr "" "assignment\n" " error occurs." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5442,11 +5562,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5466,11 +5586,11 @@ msgstr "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to “empty†commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5479,7 +5599,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5501,7 +5621,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5560,7 +5680,7 @@ msgstr "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5571,20 +5691,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5609,20 +5730,21 @@ msgstr "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5638,7 +5760,7 @@ msgstr "" "or\n" " not an indexed array." -#: builtins.c:2049 +#: builtins.c:2062 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 322bbd64c4a286d1d4ee8ee55a62cfdf43335d99..54803fc37b480a678d185a80e1caf3b4154ce251 100644 GIT binary patch delta 17519 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 D0XSc# diff --git a/po/en@quot.po b/po/en@quot.po index a0c939d..96b71c6 100644 --- a/po/en@quot.po +++ b/po/en@quot.po @@ -1,7 +1,7 @@ # English translations for GNU bash package. -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the GNU bash package. -# Automatically generated, 2014. +# Automatically generated, 2016. # # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation @@ -27,82 +27,87 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.3-release\n" +"Project-Id-Version: GNU bash 4.4-release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2016-09-10 12:42-0400\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" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "bad array subscript" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "%s: removing nameref attribute" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: cannot convert indexed to associative array" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: invalid associative array key" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: cannot assign to non-numeric index" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: must use subscript when assigning associative array" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: cannot create: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: cannot find keymap for command" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: first non-whitespace character is not ‘\"’" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "no closing ‘%c’ in %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: missing colon separator" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "brace expansion: cannot allocate memory for %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "brace expansion: failed to allocate memory for %d elements" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "brace expansion: failed to allocate memory for ‘%s’" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "‘%s’: invalid alias name" @@ -111,45 +116,45 @@ msgstr "‘%s’: invalid alias name" msgid "line editing not enabled" msgstr "line editing not enabled" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "‘%s’: invalid keymap name" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: cannot read: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "‘%s’: cannot unbind" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "‘%s’: unknown function name" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s is not bound to any keys.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s can be invoked via " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "loop count" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -159,300 +164,328 @@ msgstr "" " \n" " Without EXPR, returns " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME not set" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "too many arguments" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +msgid "null directory" +msgstr "null directory" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD not set" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "line %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "warning: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: usage: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: option requires an argument" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: numeric argument required" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: not found" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: invalid option" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: invalid option name" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "‘%s’: not a valid identifier" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "invalid octal number" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "invalid hex number" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "invalid number" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: invalid signal specification" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "‘%s’: not a pid or valid job spec" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: readonly variable" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s out of range" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s out of range" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: no such job" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: no job control" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "no job control" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: restricted" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "restricted" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: not a shell builtin" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "write error: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "error setting terminal attributes: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "error getting terminal attributes: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error retrieving current directory: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ambiguous job spec" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "help not available in this version" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: invalid action name" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: no completion specification" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "warning: -F option may not work as you expect" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "warning: -C option may not work as you expect" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "not currently executing completion function" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "can only be used in a function" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: circular name reference" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "‘%s’: invalid variable name for name reference" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "cannot use ‘-f’ to make functions" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: readonly function" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: quoted compound array assignment deprecated" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: cannot destroy array variables in this way" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: cannot convert associative to indexed array" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dynamic loading not available" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "cannot open shared object %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "cannot find %s in shared object %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "load function for %s returns failure (%d): not loaded" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: not dynamically loaded" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: cannot delete: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: is a directory" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: not a regular file" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: file is too large" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: cannot execute binary file" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: cannot execute: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "not login shell: use ‘exit’" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "There are stopped jobs.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "There are running jobs.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "no command found" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "history specification" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: cannot open temp file: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "current" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "job %d started without job control" @@ -471,36 +504,36 @@ msgstr "%s: option requires an argument -- %c\n" msgid "hashing disabled" msgstr "hashing disabled" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hash table empty\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell commands matching keyword `" msgstr[1] "Shell commands matching keywords `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" "no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ or ‘info %s’." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: cannot open: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -519,15 +552,20 @@ msgstr "" "A star (*) next to a name means that the command is disabled.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "cannot use more than one of -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "history position" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, c-format +msgid "%s: invalid timestamp" +msgstr "%s: invalid timestamp" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: history expansion failed" @@ -541,113 +579,113 @@ msgstr "%s: inlib failed" msgid "no other options allowed with `-x'" msgstr "no other options allowed with ‘-x’" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: arguments must be process or job IDs" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Unknown error" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "expression expected" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: not an indexed array" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: invalid file descriptor specification" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid file descriptor: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: invalid line count" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: invalid array origin" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: invalid callback quantum" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "empty array variable name" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "array variable support required" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "‘%s’: missing format character" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "‘%c’: invalid time format specification" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "‘%c’: invalid format character" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "warning: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "format parsing problem: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "missing hex digit for \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "missing unicode digit for \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "no other directory" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: invalid argument" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "directory stack empty" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "directory stack index" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -691,7 +729,7 @@ msgstr "" "by\n" "\tdirs when invoked without options, starting with zero." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -737,7 +775,7 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -775,143 +813,153 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: invalid timeout specification" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "read error: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "can only ‘return’ from a function or sourced script" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "cannot simultaneously unset a function and a variable" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: cannot unset" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: cannot unset: readonly %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: not an array variable" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: not a function" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: cannot export" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "shift count" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "cannot set and unset shell options simultaneously" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: invalid shell option name" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "filename argument required" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: file not found" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "cannot suspend" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "cannot suspend a login shell" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s is aliased to ‘%s’\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s is a shell keyword\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s is a function\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s is a special shell builtin\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s is a shell builtin\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is hashed (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: invalid limit argument" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "‘%c’: bad command" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: cannot get limit: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: cannot modify limit: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "octal number" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "‘%c’: invalid symbolic mode operator" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "‘%c’: invalid symbolic mode character" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " line " @@ -925,82 +973,103 @@ msgstr "last command: %s\n" msgid "Aborting..." msgstr "Aborting..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:463 msgid "unknown command error" msgstr "unknown command error" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "bad command type" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "bad connector" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "bad jump" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: unbound variable" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atimed out waiting for input: auto-logout\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "cannot redirect standard input from /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ‘%c’: invalid format character" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "execute_coproc: coproc [%d:%s] still exists" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: maximum eval nesting level exceeded (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximum source nesting level exceeded (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricted: cannot specify ‘/’ in command names" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: command not found" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bad interpreter" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: cannot execute binary file: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "‘%s’: is a special builtin" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "cannot duplicate fd %d to fd %d" @@ -1045,37 +1114,37 @@ msgstr "identifier expected after pre-increment or pre-decrement" msgid "missing `)'" msgstr "missing ‘)’" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "syntax error: operand expected" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: invalid arithmetic operator" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token is “%sâ€)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "invalid arithmetic base" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "value too great for base" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: expression error\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: cannot access parent directories" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "cannot reset nodelay mode for fd %d" @@ -1090,148 +1159,148 @@ msgstr "cannot allocate new file descriptor for bash input from fd %d" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer already exists for new fd %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d appears in running job %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "deleting stopped job %d with process group %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) in the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no such pid" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Done" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Stopped" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Stopped(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Running" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Unknown status" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No record of process %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d is stopped" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: job has terminated" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d already in background" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: turning on WNOHANG to avoid indefinite block" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: line %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp failed" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "cannot set terminal process group (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "no job control in this shell" @@ -1285,17 +1354,17 @@ msgstr "realloc: underflow detected; mh_nbytes out of range" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start and end chunk sizes differ" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p already in table as free?\n" @@ -1319,7 +1388,7 @@ msgstr "%s: invalid service" msgid "%s: bad network path specification" msgstr "%s: bad network path specification" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "network operations not supported" @@ -1356,224 +1425,261 @@ msgstr "You have new mail in $_" msgid "The mail in %s has been read\n" msgstr "The mail in %s has been read\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "syntax error: arithmetic expression required" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "syntax error: ‘;’ unexpected" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: ‘((%s))’" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: bad instruction type %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: redirection instruction ‘%d’ out of range" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "maximum here-document count exceeded" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "unexpected EOF while looking for matching ‘%c’" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "unexpected EOF while looking for ‘]]’" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: unexpected token ‘%s’" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "syntax error in conditional expression" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "unexpected token ‘%s’, expected ‘)’" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "expected ‘)’" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "unexpected argument ‘%s’ to conditional unary operator" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "unexpected argument to conditional unary operator" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "unexpected token ‘%s’, conditional binary operator expected" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "conditional binary operator expected" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "unexpected argument ‘%s’ to conditional binary operator" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "unexpected argument to conditional binary operator" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "unexpected token ‘%c’ in conditional command" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "unexpected token ‘%s’ in conditional command" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "unexpected token %d in conditional command" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error near unexpected token ‘%s’" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "syntax error near ‘%s’" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "syntax error: unexpected end of file" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "syntax error" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use “%s†to leave the shell.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "unexpected EOF while looking for matching ‘)’" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: function ‘%s’ not found" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "programmable_completion: %s: possible retry loop" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: bad connector ‘%d’" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: invalid file descriptor" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL file pointer" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ‘%c’: invalid format character" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "file descriptor out of range" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: cannot overwrite existing file" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: cannot redirect output" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "cannot create temp file for here-document: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: cannot assign fd to variable" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port not supported without networking" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: cannot duplicate fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "could not find /tmp, please create!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp must be a valid directory name" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: invalid option" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "cannot set uid to %d: effective uid %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "cannot set gid to %d: effective gid %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "cannot start debugger; debugging mode disabled" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Is a directory" + +#: shell.c:1777 msgid "I have no name!" msgstr "I have no name!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1582,39 +1688,49 @@ msgstr "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU long options:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Shell options:\n" -#: shell.c:1835 +#: shell.c:1938 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o option\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use the ‘bashbug’ command to report bugs.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "bash home page: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "General help using GNU software: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: invalid operation" @@ -1788,77 +1904,91 @@ msgstr "Unknown Signal #" msgid "Unknown Signal #%d" msgstr "Unknown Signal #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "bad substitution: no closing ‘%s’ in %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: cannot assign list to array member" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "cannot make pipe for process substitution" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "cannot make child for process substitution" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "cannot open named pipe %s for reading" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "cannot open named pipe %s for writing" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "cannot duplicate named pipe %s as fd %d" -#: subst.c:5376 +#: subst.c:5959 +msgid "command substitution: ignored null byte in input" +msgstr "command substitution: ignored null byte in input" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "cannot make pipe for command substitution" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "cannot make child for command substitution" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: cannot duplicate pipe as fd 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: invalid variable name for name reference" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parameter null or not set" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: substring expression < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: bad substitution" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: invalid indirect expansion" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: invalid variable name" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter null or not set" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expression < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: cannot assign in this way" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1866,12 +1996,12 @@ msgstr "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "bad substitution: no closing “`†in %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "no match: %s" @@ -1885,123 +2015,123 @@ msgstr "argument expected" msgid "%s: integer expression expected" msgstr "%s: integer expression expected" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "‘)’ expected" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "‘)’ expected, found %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: unary operator expected" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: binary operator expected" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "missing ‘]’" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "invalid signal number" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: bad signal %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "error importing function definition for ‘%s’" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell level (%d) too high, resetting to 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: circular name reference" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variable may not be assigned value" -#: variables.c:3646 +#: variables.c:3043 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: assigning integer to name reference" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "no ‘=’ in exportstr for %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibility value out of range" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2024,10 +2154,6 @@ msgstr "This is free software; you are free to change and redistribute it." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "There is NO WARRANTY, to the extent permitted by law." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2012 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2048,15 +2174,15 @@ msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: cannot allocate %lu bytes" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [name[=value] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] name [name ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -2064,111 +2190,99 @@ msgstr "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [shell-builtin [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [expr]" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]] [-@]] [dir]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..." - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [option] name[=value] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f filename] [name ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts optstring name [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [job_spec]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [job_spec ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [pattern ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2176,15 +2290,15 @@ msgstr "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" -msgstr "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobspec ... | pid ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2192,11 +2306,11 @@ msgstr "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2204,99 +2318,95 @@ msgstr "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [name ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [name[=value] ...] or export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [name[=value] ...] or readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source filename [arguments]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". filename [arguments]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [expr]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] signal_spec ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [id ...]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [pid ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] pipeline" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2304,63 +2414,63 @@ msgstr "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while COMMANDS; do COMMANDS; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until COMMANDS; do COMMANDS; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NAME] command [redirections]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function name { COMMANDS ; } or name () { COMMANDS ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ COMMANDS ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "job_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( expression ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ expression ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - Names and meanings of some shell variables" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | dir]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [optname ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [arguments]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2370,35 +2480,35 @@ msgstr "" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -#: builtins.c:237 +#: builtins.c:239 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]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" + +#: builtins.c:244 +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 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2410,7 +2520,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2427,30 +2537,30 @@ msgstr "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " "been\n" " defined." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2484,7 +2594,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2522,13 +2633,14 @@ msgstr "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2546,7 +2658,7 @@ msgstr "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2564,7 +2676,7 @@ msgstr "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2588,7 +2700,7 @@ msgstr "" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2616,7 +2728,7 @@ msgstr "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2639,16 +2751,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2681,16 +2793,16 @@ msgstr "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of ‘..’\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof ‘..’\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of ‘..’\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of ‘..’\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if ‘-L’ were specified.\n" " ‘..’ is processed by removing the immediately previous pathname " @@ -2702,13 +2814,13 @@ msgstr "" "when\n" " -P is used; non-zero otherwise." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2721,7 +2833,7 @@ msgstr "" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, ‘pwd’ behaves as if ‘-L’ were specified.\n" @@ -2730,7 +2842,7 @@ msgstr "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2746,7 +2858,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2758,7 +2870,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2770,7 +2882,7 @@ msgstr "" " Exit Status:\n" " Always fails." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2780,10 +2892,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2796,15 +2908,15 @@ msgstr "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the ‘type’ builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the ‘type’ builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2814,9 +2926,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2851,9 +2963,9 @@ msgstr "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2880,17 +2992,17 @@ msgstr "" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." -#: builtins.c:527 +#: builtins.c:530 msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Set variable values and attributes.\n" " \n" -" Obsolete. See ‘help declare’." +" A synonym for ‘declare’. See ‘help declare’." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2916,7 +3028,7 @@ msgstr "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2942,9 +3054,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2973,14 +3085,14 @@ msgstr "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3002,7 +3114,7 @@ msgstr "" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3052,7 +3164,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3072,7 +3184,7 @@ msgstr "" " Exit Status:\n" " Returns exit status of command or success if command is null." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3150,7 +3262,7 @@ msgstr "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3161,8 +3273,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3181,8 +3293,8 @@ msgstr "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3192,7 +3304,7 @@ msgstr "" " Returns success unless COMMAND is not found or a redirection error " "occurs." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3204,7 +3316,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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3218,7 +3330,7 @@ msgstr "" "executed\n" " in a login shell." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3274,7 +3386,7 @@ msgstr "" " Returns success or status of executed command; non-zero if an error " "occurs." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3294,7 +3406,7 @@ msgstr "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3318,7 +3430,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3327,15 +3439,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3348,21 +3460,21 @@ msgstr "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3374,7 +3486,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3393,7 +3505,7 @@ msgstr "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3402,7 +3514,7 @@ msgstr "" " Returns success unless PATTERN is not found or an invalid option is " "given." -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3411,23 +3523,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3442,23 +3554,23 @@ msgstr "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3466,7 +3578,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3476,7 +3588,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3497,7 +3609,7 @@ msgstr "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3510,7 +3622,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:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3520,7 +3632,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3534,13 +3646,13 @@ msgstr "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3552,7 +3664,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3571,7 +3684,8 @@ msgstr "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow ‘-l’ they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3580,7 +3694,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3666,7 +3780,7 @@ msgstr "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3687,27 +3801,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3735,27 +3850,28 @@ msgstr "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3764,7 +3880,7 @@ msgstr "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3784,7 +3900,7 @@ msgstr "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3852,7 +3968,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3934,7 +4051,8 @@ msgstr "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3950,7 +4068,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3960,7 +4078,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3979,7 +4097,7 @@ msgstr "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3990,7 +4108,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4024,7 +4142,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4036,9 +4154,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4055,16 +4172,15 @@ msgstr "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of ‘--’ disables further option processing.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4082,7 +4198,7 @@ msgstr "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4106,7 +4222,7 @@ msgstr "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4130,7 +4246,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4194,9 +4310,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4274,9 +4390,9 @@ msgstr "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4292,7 +4408,7 @@ msgstr "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4304,7 +4420,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:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4324,7 +4440,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4408,7 +4524,7 @@ msgstr "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4417,18 +4533,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4444,18 +4560,18 @@ msgstr "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe ‘-p’ option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe ‘-p’ option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if ‘type -t NAME’ would not return ‘file’.\n" +" \t\tor nothing if ‘type -t NAME’ would not return ‘file’\n" " -t\toutput a single word which is one of ‘alias’, ‘keyword’,\n" -" \t‘function’, ‘builtin’, ‘file’ or ‘’, if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t‘function’, ‘builtin’, ‘file’ or ‘’, if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4464,7 +4580,7 @@ msgstr "" " Returns success if all of the NAMEs are found; fails if any are not " "found." -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4482,6 +4598,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4493,7 +4610,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4526,6 +4644,7 @@ msgstr "" " -e\tthe maximum scheduling priority (‘nice’)\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4537,7 +4656,8 @@ msgstr "" " -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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4554,7 +4674,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4586,7 +4706,7 @@ msgstr "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4622,7 +4742,7 @@ msgstr "" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4648,7 +4768,7 @@ msgstr "" "invalid\n" " option is given." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4670,7 +4790,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4700,7 +4820,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4736,7 +4856,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4764,7 +4884,7 @@ msgstr "" " Exit Status:\n" " The return status is the return status of PIPELINE." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4782,7 +4902,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4820,7 +4940,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4838,7 +4958,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4856,7 +4976,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4866,7 +4986,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Create a coprocess named NAME.\n" " \n" @@ -4876,9 +4996,9 @@ msgstr "" " The default NAME is “COPROCâ€.\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4902,7 +5022,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is readonly." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4920,7 +5040,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4944,7 +5064,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the resumed job." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4962,7 +5082,7 @@ msgstr "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5014,7 +5134,7 @@ msgstr "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5118,7 +5238,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:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5128,19 +5248,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5156,19 +5276,19 @@ msgstr "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by ‘dirs’, starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by ‘dirs’, starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by ‘dirs’, starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by ‘dirs’, starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The ‘dirs’ builtin displays the directory stack.\n" " \n" @@ -5176,7 +5296,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5185,16 +5305,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5209,16 +5329,16 @@ msgstr "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by ‘dirs’, starting with zero. For example: ‘popd +0’\n" -" \tremoves the first directory, ‘popd +1’ the second.\n" +" \t\tshown by ‘dirs’, starting with zero. For example: ‘popd +0’\n" +" \t\tremoves the first directory, ‘popd +1’ the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by ‘dirs’, starting with zero. For example: ‘popd -0’\n" -" \tremoves the last directory, ‘popd -1’ the next to last.\n" +" \t\tshown by ‘dirs’, starting with zero. For example: ‘popd -0’\n" +" \t\tremoves the last directory, ‘popd -1’ the next to last.\n" " \n" " The ‘dirs’ builtin displays the directory stack.\n" " \n" @@ -5226,7 +5346,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5237,19 +5357,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5263,24 +5383,24 @@ msgstr "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5318,7 +5438,7 @@ msgstr "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5335,15 +5455,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5371,15 +5491,15 @@ msgstr "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5392,7 +5512,7 @@ msgstr "" "assignment\n" " error occurs." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5405,11 +5525,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5429,11 +5549,11 @@ msgstr "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to “empty†commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5442,7 +5562,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5464,7 +5584,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5522,7 +5642,7 @@ msgstr "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5533,20 +5653,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5571,20 +5692,21 @@ msgstr "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5600,7 +5722,7 @@ msgstr "" "or\n" " not an indexed array." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/eo.gmo b/po/eo.gmo index 4c35a7d6fbef66512a6aebfb37ab271452ed88cd..90aef6b1cbe752247d6911d4b9cfac19fe1de7c1 100644 GIT binary patch delta 16509 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 delta 25489 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 diff --git a/po/eo.po b/po/eo.po index c75a151..f0a372e 100644 --- a/po/eo.po +++ b/po/eo.po @@ -1,10 +1,10 @@ # Esperanto language file for GNU Bash. # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Sergio Pokrovskij , 1998, 2006, 2009, 2011, 2014. +# Sergio Pokrovskij , 1998, 2006, 2009, 2011, 2014, 2015. # -# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/bash-4.3-rc2/builtins"); -*- -# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/bash-4.3-rc2"); -*- +# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/bash-4.4/bash-4.4-beta/builtins"); -*- +# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4-beta"); -*- # Stilaj notoj: # La angulaj citiloj limigas «plurajn vortojn», # 99-66 estas la citiloj de „unuvortaĵo‟ @@ -15,6 +15,7 @@ # associative array asocitabelo (info "(bash)Arrays") # brace expansion vinkulmalvolvo # callback retrovoko +# compound array assignment tutopa tabelvalorizo # extended file attributes kromatributoj (de dosiero) # to force ... per superforto # granted jesigita @@ -27,86 +28,92 @@ # unset malvalorizi (variablon); malaktivigi, malÅalti (opcion, nomon) msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.3-rc2\n" +"Project-Id-Version: GNU bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2014-01-31 20:06+0700\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-21 14:06+0300\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:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "Misa tabel-indico" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: Maleblas konverti entjerindican tabelon en asocitabelon" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: Misa asocitabela Ålosilo" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Valorizato havu nombran indicon" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: Valorizante per asocitabelo uzu indicon" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Ne prosperis krei: %s" # XXX: internal_error -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: Mankas klavartabelo por komando" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: La unua ne-blankspaca signo ne estas „\"‟" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "Mankas ferma „%c‟ en %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: Mankas disiga dupunkto" # XXX: internal_error -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "vinkulmalvolvo: Maleblas memorhavigo por %s" # XXX: internal_error -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %d elementoj" # XXX: internal_error -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %s" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "%s: MaltaÅ­gas por uzi kiel alinomon" @@ -115,45 +122,45 @@ msgstr "%s: MaltaÅ­gas por uzi kiel alinomon" msgid "line editing not enabled" msgstr "liniredaktado ne estas ebligita" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s‟: Misa nomo por klavartabelo" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: Ne eblas legi: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "%s: Ne eblas malligi" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "%s: Nekonata funkcinomo" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s malhavas klavligon\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s vokeblas per " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "iteracinombrilo" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "Sencas nur en iteracio „for‟, „while‟ aÅ­ „until‟" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -163,300 +170,329 @@ msgstr "" "\n" " Sen ESPR liveras " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME malhavas valoron" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "Tro multe da argumentoj" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "Ne estas alia dosierujo" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD malhavas valoron" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "linio %dª: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "Averto: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: Uzmaniero: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: La opcio bezonas argumenton" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: Necesas nombra argumento" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: Ne trovita" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: Misa opcio" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: Misa opcinomo" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s‟ ne estas taÅ­ga nomo" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "Misa okuma nombro" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "Misa 16uma nombro" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "Misa nombro" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: Misa signalindiko" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s‟: Nek proceznumero, nek taÅ­ga laborindiko" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: Nurlega variablo" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s estas ekster sia variejo" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argumento" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s estas ekster sia variejo" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: Ne estas tia laboro" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: Ĉi tiu Åelo ne disponigas laborregadon" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "Laborregado ne disponeblas" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: Limigita" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "limigita" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "„%s‟ ne estas primitiva komando Åela" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "Eraro ĉe skribo: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "Eraro ĉe agordado de terminalaj atributoj: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "Eraro ĉe akiro de terminalaj atributoj: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: Eraro ĉe provo determini la kurantan dosierujon: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: Ambigua laborindiko" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "helpilo mankas en ĉi tiu versio" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: Misa nomo de ago" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: Kompletigo ne estas specifita" -#: builtins/complete.def:697 +#: builtins/complete.def:699 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:699 +#: builtins/complete.def:701 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:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "Ni ne estas en plenumado de kompletiga funkcio" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "Uzeblas nur ene de funkcio" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: Referenca variablo ne povas esti tabelo" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: Nomreferenca variablo ne referencu sin mem" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: Cikla nomreferenco" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: Misa variablonomo por nomreferenco" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "„-f‟ ne estas uzebla por fari funkciojn" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: Nurlega funkcio" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: Tutopa tabelvalorizo citila estas evitinda" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: Ĉi tiel ne eblas neniigi tabelvariablojn" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: Ne eblas konverti asocitabelon en entjerindican tabelon" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "Rultempa Åargo ne disponeblas" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "Ne malfermiÄis dinamika biblioteko %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "Mankas %s en la dinamika biblioteko%s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "Åœarga funkcio por %s liveris fiaskon (%d): ne Åargite" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: Ne Åargita dinamike" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: Ne eblas forigi: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s estas dosierujo" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: Ne ordinara dosiero" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: Tro granda dosiero" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Neplenumebla duuma dosiero" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: Maleblas plenumi: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "adiaÅ­\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "La Åelo ne estas saluta; eliru per «exit»" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Restas haltigitaj laboroj.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Restas rulataj laboroj.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "Komando ne trovita" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "Historia indiko" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: Ne malfermiÄis labordosiero: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "kuranta" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "La laboro %d estas lanĉita sen laborregado" @@ -475,25 +511,25 @@ msgstr "%s: La opcio bezonas argumenton -- %c\n" msgid "hashing disabled" msgstr "Nomkonservado (haketado, «hashing») estas malÅaltita" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: Hakettabelo estas malplena\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "Trafoj\tKomando\n" # ZZZ: aĉaj citiloj (fermita en la programo) -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Åœelaj komandoj kongruaj kun la Ålosilvorto '" msgstr[1] "Åœelaj komandoj kongruaj kun la Ålosilvortoj '" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -501,12 +537,12 @@ msgstr "" "Helpaĵo pri „%s‟ malestas.\n" "Provu «help help» aÅ­ «man -k %s» aÅ­ «info %s»." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Fiaskis malfermo de %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -525,15 +561,20 @@ msgstr "" "Steleto (*) tuj post nomo indikas, ke la komando estas malebligita.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "Ne pli ol unu el -anrw estas uzebla" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "pozicio en la historio" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: MaltaÅ­ga argumento" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: Historia malvolvo fiaskis" @@ -547,116 +588,116 @@ msgstr "%s: inlib fiaskis" msgid "no other options allowed with `-x'" msgstr "La uzo de „-x‟ malebligas aliajn opciojn" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: Argumento estu proceznumero aÅ­ laborindiko" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Nekonata eraro" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "Mankas esprimo" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: Äi ne estas entjerindica tabelo" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Misa indiko de dosiernumero" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Misa dosiernumero: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: Misa lininombro" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: Misa tabelbazo" # Supozeble callback => retrovoko ?? -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: Misa kvanto ĉe retrovoko" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "Mankas nomo de tabelvariablo" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "necesas subteno de tabelvariabloj" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "„%s‟: Mankas formata signo" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "%c: Misa tempoformato" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "„%c‟: Misa signo formata" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "Averto: %s: %s" # XXX: internal_error -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "Miso ĉe analizado de formato: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "Mankas 16uma cifero por \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "Post „%c‟ mankas unikoda cifero" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "Ne estas alia dosierujo" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: MaltaÅ­ga argumento" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "Dosierujstako malplenas" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "indico de dosierujstako" # dirs [-clpv] [+N] [-N] -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -699,7 +740,7 @@ msgstr "" "\tper „dirs‟ sen opcioj, numerante ekde 0." # pushd [dir | +N | -N] [-n] -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -745,7 +786,7 @@ msgstr "" " Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." # popd [+N | -N] [-n] -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -784,146 +825,156 @@ msgstr "" "\n" " Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: Misa indiko de atendotempo" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "Lega (read) eraro: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" "„return‟ sencas nur en funkcio aÅ­ punkte vokita („.‟, „source‟) skripto" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "Ne eblas samtempe malaktivigi funkcion kaj variablon" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: Malaktivigo fiaskis" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: Malaktivigo fiaskis: nurlega %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: Ne tabela variablo" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: Ne funkcio" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: Ne eblas eksporti" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "Nombrilo de „shift‟" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "Maleblas samtempe Åalti kaj malÅalti Åelan opcion" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Misa nomo de Åela opcio" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "Necesas dosiernoma argumento" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: Dosiero ne trovita" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "Ne eblas halteti" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "Ne eblas haltetigi salutan Åelon" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "„%s‟ alinomas jenon: «%s»\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "„%s‟ estas Ålosilvorto de la Åelo\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s estas funkcio\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "„%s‟ estas speciala primitiva Åelkomando\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "„%s‟ estas primitiva komando de la Åelo\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "„%s‟ estas „%s‟\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "„%s‟ estas metita en hakettabelon (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: MaltaÅ­ga argumento por limo" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "„%c‟: Misa komando" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Fiaskis provo legi limon: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limo" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Malprosperis ÅanÄi limon: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "Okuma nombro" # Misa modifilo: «umask Z-w» aÅ­ «umask aZw» -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "„%c‟: MaltaÅ­ga simbolo por atingorajta modifilo" # Misa kategorio: ne [rw] ktp -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "„%c‟: La signo ne estas simbolo de atingorajta kategorio" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " linio " @@ -937,85 +988,106 @@ msgstr "La ĵusa komando: %s\n" msgid "Aborting..." msgstr "Ĉesigado ..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORMO: " + +#: error.c:463 msgid "unknown command error" msgstr "Nekonata komand-eraro" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "Misa komandotipo" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "Misa stir-operacio" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "Misa salto" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: Neligita variablo" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c‟: Misa formatsigno" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "Eraro en dukto" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: La ingado de „source“oj superis sian maksimumon (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: La ingado de funkcioj superis sian maksimumon (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: Malpermesitas uzi „/‟ en komandonomoj" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: Komando ne trovita" # XXX: internal error: -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Misa interpretilo" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: Neplenumebla duuma dosiero: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "„%s‟ estas primitiva komando speciala" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Ne eblas kunnomumi al dosiernumero %d la dosiernumeron %d" @@ -1060,37 +1132,37 @@ msgstr "Post antaÅ­kremento aperu nomo de variablo" msgid "missing `)'" msgstr "Mankas „)‟" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "Sintaksa eraro: Mankas operando" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "Sintaksa eraro: Misa operacisimbolo aritmetika" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (misa simbolo estas „%s‟)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "MaltaÅ­ga bazo nombrosistema" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "Tro granda valoro por bazo de nombrosistemo" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: Misa esprimo\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getwd: Ne eblas atingi patrajn dosierujojn" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "Ne eblas reÅalti senprokrastan reÄimon por dosiernumero %d" @@ -1106,151 +1178,151 @@ 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:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: procezgrupo dukto" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Forke farita proceznumero %d aperas en rulata laboro %d" -#: jobs.c:1012 +#: jobs.c:1154 #, 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:1117 +#: jobs.c:1258 #, 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:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: Ne estas tia proceznumero (%ld)!" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signalo %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Farite" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Haltigita" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Haltigita(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Rulata" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Farite(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Eliro %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Nekonata stato" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(nekropsio elÅutita)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (labordosierujo: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "provo atribui (setpgid) procezgrupon %2$ld de la procezido %1$ld" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Malestas informoj pri procezo %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: La laboro %d estas haltigita" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: La laboro finiÄis" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: La laboro %d jam estas fona" # XXX: internal warning: -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: WNOHANG iÄas Åaltita por eviti nedifintan pendiÄon" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: linio %dª: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr "(nekropsio elÅutita)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(nun labordosierujo estas: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp fiaskis" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: liniaranÄo" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ne prosperis atribui grupon (%d) de terminala procezo" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "Ĉi tiu Åelo ne disponigas laborregadon" @@ -1315,19 +1387,19 @@ 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:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p jam en la tabelo kvazaÅ­ malokupita (?)\n" @@ -1355,7 +1427,7 @@ msgid "%s: bad network path specification" msgstr "%s: Misa retvojo-indiko" # XXX: internal error -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "Reta funkciado ne disponeblas" @@ -1396,236 +1468,271 @@ msgstr "Nova poÅto en $_" msgid "The mail in %s has been read\n" msgstr "La poÅto en %s estas jam legita\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "Sintaksa eraro: Necesas aritmetika esprimo" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "Sintaksa eraro: Neatendita „;‟" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "Sintaksa eraro: „((%s))‟" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Misa ordontipo %d" # internal_warning(): -#: make_cmd.c:662 +#: make_cmd.c:669 #, 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:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "La nombro de tuj-documentoj superis sian maksimumon" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Neatendita dosierfino dum serĉo de responda „%c‟" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "Neatendita dosierfino dum serĉo de „]]‟" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Sintaksa eraro en kondiĉa esprimo: Neatendita simbolo „%s‟" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "Sintaksa eraro en kondiĉa esprimo" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Nekonvena simbolo „%s‟ anstataÅ­ „)‟" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "Mankas „)‟" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "La argumento „%s‟ ne konvenas por unuloka kondiĉa operacisimbolo" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "MaltaÅ­ga argumento por unuloka kondiĉa operacisimbolo" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "Misa simbolo „%s‟ anstataÅ­ duloka kondiĉa operacisigno" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "ĉi tie devas esti duloka kondiĉa operacisigno" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "La argumento „%s‟ ne konvenas por duloka kondiĉa operacisimbolo" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "\n" +msgstr "" +"La hejmpaÄo de BaÅo (anglalingva): \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Äœenerala helpilo pri uzo de GNUa programaro: \n" + # XXX: internal_error -#: sig.c:691 +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: Misa operacio" @@ -1881,90 +2000,105 @@ msgstr "Nekonata signalnumero" msgid "Unknown Signal #%d" msgstr "Nekonata signalo n-ro %d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Misa anstataÅ­igo: Mankas ferma „%s‟ en %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: Maleblas valorizi tabelanon per listo" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "Ne prosperis fari dukton por proceza anstataÅ­igo" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "Ne prosperis krei idon por proceza anstataÅ­igo" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "Ne prosperis malfermi nomitan dukton %s porlegan" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "Ne prosperis malfermi nomitan dukton %s por skribado" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Ne prosperis kunnomumi nomhavan dukton %s kiel dosiernumeron %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "Misa anstataÅ­igo: Mankas ferma „`‟ en %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "Ne prosperis fari dukton por komanda anstataÅ­igo" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "Ne prosperis krei procezidon por komanda anstataÅ­igo" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: Ne prosperis kunnomumi la dosiernumeron 1 al dukto" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: Misa variablonomo por nomreferenco" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: Parametro estas NUL aÅ­ malaktiva" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: subĉeno-esprimo < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: Misa anstataÅ­igo" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: Misa malvolvo malrekta" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: MaltaÅ­ga variablonomo" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: Parametro estas NUL aÅ­ malaktiva" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: subĉeno-esprimo < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ĉi tiel ne valorizebla" # XXX: internal warning: -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "Ontaj versioj de la Åelo plenumos komputon kiel aritmetikan anstataÅ­igon" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Misa anstataÅ­igo: Mankas ferma „`‟ en %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "Nenio kongrua: %s" @@ -1978,137 +2112,138 @@ msgstr "Mankas argumento" msgid "%s: integer expression expected" msgstr "%s: Mankas entjera esprimo" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "Mankas „)‟" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "AnstataÅ­ „)‟ troviÄas %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: Tie devas esti unuloka operacisigno" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: Tie devas esti duloka operacisigno" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "Mankas „]‟" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "Misa signalnumero" # XXX: internal_warning -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: Misa valoro en trap_list[%d]: %p" # XXX: internal_warning -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "run_pending_traps: Signaltraktilo SIG_DFL resendas %d (%s) al mi mem" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Misa signalnumero %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "Eraro ĉe importo de funkcidifino por „%s‟" # XXX: internal_warning -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "%d estas tro granda Åelnivelo; mallevita Äis 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: Cikla nomreferenco" - # XXX: internal_error -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: Malestas funkcia kunteksto en ĉi-regiono" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: Variablo ne valorizebla" +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: Misa variablonomo por nomreferenco" + # XXX: internal_error -#: variables.c:3646 +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: Malestas funkcia kunteksto en ĉi-regiono" # XXX: internal_error -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "«exportstr» de %s estas NUL" # XXX: internal_error -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Misa signo %d en eksporta signoĉeno por „%s‟" # XXX: internal_error -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "Mankas „=‟ en eksporta signoĉeno por „%s‟" # XXX: internal_error -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto" # XXX: internal_error -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: Mankas kunteksto de „global_variables‟" # XXX: internal_error -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: La kapo de „shell_variables‟ ne estas provizora regiono" # XXX: internal_error -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: Ne malfermeblas kiel DOSIERO" # XXX: internal_error -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: Misa valoro por spurada dosiernumero (trace file descriptor)" # # XXX: internal_error -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s kongruo-nivelo estas ekster sia variejo" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright (C) 2012 ĉe «Free Software Foundation, Inc.»" +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2015 ĉe «Free Software Foundation, Inc.»" #: version.c:47 version2.c:47 msgid "" @@ -2131,10 +2266,6 @@ msgstr "Ĉi tiu programo estas libera; vi rajtas libere Äin ÅanÄi kaj pludoni msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "NENIA GARANTIO estas donita, tiom kiom tion permesas la leÄo." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2012 ĉe «Free Software Foundation, Inc.»" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2157,15 +2288,15 @@ msgstr "%s: %s:%d: Malsukcesis okupi %lu bajtojn (%lu bajtoj disponigitaj)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: Malsukcesis okupi %lu bajtojn" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [NOMO[=VALORO] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] NOMO [NOMO ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -2174,113 +2305,101 @@ msgstr "" " [-u NOMO] [-r KLAVAÄ´O] [-x KLAVAÄ´O:ÅœELKOMANDO]\n" " [KLAVAÄ´O:READLINE-FUNKCIO AŬ READLINE-KOMANDO] " -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [N]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [N]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [ÅœELAÄ´O [ARG ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [ESPRIMO]" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]] [-@]] [DOSIERUJO]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] KOMANDO [ARG ...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [NOMO[=VALORO] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] NOMO[=VALORO] ..." - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] NOMO[=VALORO] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [OPCIO] NOMO[=VALORO] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [ARG ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [ARG ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f DOSIERNOMO] [NOMO ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [ARG ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts OPCIĈENO NOMO [ARG]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a NOMO] [KOMANDO [ARGUMENTOJ ...]] [ALIDIREKTADO ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [N]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [N]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e REDAKTILO] [-lnr] [UNUA] [LASTA] aÅ­\n" "fc -s [ÅœABLONO=ANST] [KOMANDO]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [LABORINDIKO]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [LABORINDIKO]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p VOJNOMO] [-dt] [NOMO ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [ÅœABLONO ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2289,17 +2408,18 @@ msgstr "" "history -awr [DOSIERNOMO] aÅ­\n" "history -ps ARG [ARG...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "" "jobs [-lnprs] [LABORINDIKO ...] aÅ­\n" "jobs -x KOMANDO [ARGS]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [LABORINDIKO ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2307,11 +2427,11 @@ msgstr "" "kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] [PN | LABORINDIKO] ... aÅ­\n" "kill -l [SIGNOM]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let ARG [ARG ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2320,99 +2440,95 @@ msgstr "" " [-n NSIGN] [-N NSIGN] [-p INVIT] [-t TLIM]\n" " [-u DN] [NOMO ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [N]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [NOMO ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [NOMO[=VALORO] ...] aÅ­ export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [NOMO[=VALORO] ...] aÅ­ readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [N]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source DOSIERNOMO [ARGUMENTOJ]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". DOSIERNOMO [ARGUMENTOJ]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [ESPRIMO]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ ARG... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[ARG] SIGNALINDIKO ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] NOMO [NOMO ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [LIMO]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMO]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [REÄœIMO]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [IND ...]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [PN ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NONO [in VORTOJ ... ;] do KOMANDOJ; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] DUKTO" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case VORTO in [ÅœABLONO [| ÅœABLONO]...) KOMANDOJ ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2420,65 +2536,65 @@ msgstr "" "if KOMANDOJ; then KOMANDOJ; [ elif KOMANDOJ; then KOMANDOJ; ]... [ else " "KOMANDOJ; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while KOMANDOJ; do KOMANDOJ; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until KOMANDOJ; do KOMANDOJ; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NOMO] KOMANDO [ALIDIREKTADOJ]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function NOMO { KOMANDOJ ; } aÅ­ NOMO () { KOMANDOJ ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ KOMANDOJ ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "LABORINDIKO [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( ESPRIMO ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ ESPRIMO ]]" # Ĉu "variables" estas serĉa Ålosilo ? # T.e. "help var" aÅ­ "help variabl", sed ne "nelp variabloj"? -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "var - Nomoj kaj signifo de kelkaj Åelvariabloj" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | DOSIERUJO]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [OPCINOMO ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v VAR] FORMATO [ARGUMENTOJ]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2488,28 +2604,28 @@ msgstr "" " [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROÅœAB]\n" " [-P PREFIKSO] [-S SUFIKSO] [NOMO ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G GLOBÅœAB]\n" " [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROÅœAB]\n" " [-P PREFIKSO] [-S SUFIKSO] [VORTO]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o OPCIO] [-DE] [NOMO ...]" -#: builtins.c:240 +#: builtins.c:242 msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -"mapfile [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN]\n" +"mapfile [-d DISIG] [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN]\n" " [-C RETROVOKO] [-c KVANTO] [TABELO]" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2518,7 +2634,7 @@ msgstr "" " [-C RETROVOKO] [-c KVANTO] [TABELO]" # alias: -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2530,7 +2646,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2547,7 +2663,7 @@ msgstr "" " alinome anstataÅ­igenda ĉe la komputo de la alinomo.\n" "\n" " Opcioj:\n" -" -p\tEligu ĉiujn difinitajn alinomojn en reuzebla formo.\n" +" -p\teligu ĉiujn difinitajn alinomojn en reuzebla formo.\n" "\n" " Elirstato:\n" " La komando „alias‟ liveras „true‟ krom se aperas NOMO ne difinita\n" @@ -2555,26 +2671,26 @@ msgstr "" # unalias [-a] name [name ...] # unalias [-a] NOMO [NOMO ...] -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Forigu la NOMOjn el la listo de difinitaj alinomoj.\n" "\n" " Opcioj:\n" -" -a\tSe enestas la opcio „-a‟, ĉiujn alinomojn forigu.\n" +" -a\tSe enestas la opcio „-a‟, ĉiujn alinomojn forigu\n" "\n" " Liveru sukceson krom se name ne estas difinita alinome." # bind [-lpvsPVS] [-m KLAVARTABELO] [-f DOSIERNOMO] [-q NOMO] [-u NOMO] # [-r KLAVAÄ´O] [-x KLAVAÄ´O:ÅœELKOMANDO] # [KLAVAÄ´O:READLINE-FUNKCIO AŬ READLINE-KOMANDO] -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2608,7 +2724,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2648,7 +2765,7 @@ msgstr "" " 0, krom se nekonata opcio estas donita aÅ­ eraro okazis." # exit: -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2667,7 +2784,7 @@ msgstr "" " Äœi estas 0, kondiĉe ke N estas pli granda ol aÅ­ egala al 1." # continue: -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2688,7 +2805,7 @@ msgstr "" # builtin [shell-builtin [arg ...]] # builtin [ÅœELAÄ´O [ARG ...]] -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2714,7 +2831,7 @@ msgstr "" # caller [expr] => # caller [ESPRIMO] -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2743,7 +2860,7 @@ msgstr "" " estas valida." # cd: -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2766,16 +2883,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2820,13 +2937,13 @@ msgstr "" " $PWD sukcese valoriziÄis; nenulo aliokaze." # pwd [-LP] -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2849,7 +2966,7 @@ msgstr "" " 0, krom se aperas misa opcio aÅ­ la kuranta dosierujo estas\n" " nelegebla." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2866,7 +2983,7 @@ msgstr "" " Ĉiam sukcesa." # true -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2879,7 +2996,7 @@ msgstr "" " Ĉiam sukcesa." # false: -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2893,7 +3010,7 @@ msgstr "" # command [-pVv] command [arg ...] # command [-pVv] KOMANDO [ARG ...] -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2903,10 +3020,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2929,7 +3046,7 @@ msgstr "" # declare [-aAfFgilnrtux] [-p] [name[=value] ...] # declare [-aAfFgilnrtux] [-p] [NOMO[=VALORO] ...] -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2939,9 +3056,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -3005,11 +3122,12 @@ msgstr "" "variablo." # typeset [-aAfFgilrtux] [-p] name[=value] ... -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Difinu atributojn kaj valorojn de variabloj\n" "\n" @@ -3017,7 +3135,7 @@ msgstr "" # local [option] name[=value] ... # local [OPCIO] NOMO[=VALORO] ... -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -3044,7 +3162,7 @@ msgstr "" " Åelo ne estas plenumanta funkcion." # echo: -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3070,9 +3188,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3109,7 +3227,7 @@ msgstr "" " Sukcesa, krom se okazas elig-eraro." # echo [-n] [ARG ...] -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3133,7 +3251,7 @@ msgstr "" # enable [-a] [-dnps] [-f filename] [name ...] # enable [-a] [-dnps] [-f DOSIERNOMO] [NOMO ...] -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3185,7 +3303,7 @@ msgstr "" " eraro." # eval [ARG ...] -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3206,7 +3324,7 @@ msgstr "" # getopts optstring name [arg] => # getopts OPCIĈENO NOMO [ARG] -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3286,7 +3404,7 @@ msgstr "" # exec [-cl] [-a name] [command [arguments ...]] [redirection ...] # exec [-cl] [-a NOMO] [KOMANDO [ARGUMENTOJ ...]] [ALIDIREKTADO ...] -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3297,8 +3415,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3328,7 +3446,7 @@ msgstr "" " alirektado." # exit [n] -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3341,7 +3459,7 @@ msgstr "" " estas tiu de la plej ĵuse plenumita komando." # logout [N] -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3358,7 +3476,7 @@ msgstr "" # fc -s [pat=rep] [command] => # fc [-e REDAKTILO] [-lnr] [UNUA] [LASTA] aÅ­ # fc -s [ÅœABLONO=ANST] [KOMANDO] -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3413,7 +3531,7 @@ msgstr "" " eraro." # fg [job_spec] => fg [LABORINDIKO] -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3434,7 +3552,7 @@ msgstr "" " Tiu de la dialogigita komando; aÅ­ malsukceso, se okazis eraro." # bg [job_spec] => bg [LABORINDIKO] -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3458,7 +3576,7 @@ msgstr "" " eraro." # hash [-lr] [-p VOJNOMO] [-dt] [NOMO ...] -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3467,15 +3585,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3504,7 +3622,7 @@ msgstr "" # help [-ds] [pattern ...] # help [-ds] [ÅœABLONO ...] -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3516,7 +3634,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3549,7 +3667,8 @@ msgstr "" # history [-c] [-d DEÅœOVO] [n] aÅ­ # history -awr [DOSIERNOMO] aÅ­ # history -ps ARG [ARG...] -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3558,23 +3677,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3607,10 +3726,10 @@ msgstr "" " kiel unu apartan linion\n" "\n" " Se ĉeestas DOSIERNOMO, uzu Äin kiel nomon de historidosiero;\n" -" alie, se la variablo $HISTFILE havas valoron, uzu ĉi tiun;\n" +" alie, se la variablo HISTFILE havas valoron, uzu ĉi tiun;\n" " alie uzu «~/.bash_history».\n" "\n" -" Se la variablo $HISTTIMEFORMAT havas valoron kaj se ĉi tiu ne\n" +" Se la variablo HISTTIMEFORMAT havas valoron kaj se ĉi tiu ne\n" " estas null, tiam Äi servu kiel formata ĉeno en strftime(3) por\n" " tempostampi ĉiun linion en eligaĵoj de historio. Aliokaze nenia\n" " tempostampo estu eligata.\n" @@ -3622,8 +3741,7 @@ msgstr "" # jobs -x command [args] => # jobs [-lnprs] [LABORINDIKO ...] aÅ­ # jobs -x KOMANDO [ARGS] -#: builtins.c:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3633,7 +3751,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3669,7 +3787,7 @@ msgstr "" " Ĉe „-x‟, la elirstato de la KOMANDO." # disown [-h] [-ar] [jobspec ...] -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3679,7 +3797,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3705,7 +3823,8 @@ msgstr "" # kill -l [sigspec] => # kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] PN | LABORINDIKO ... aÅ­ # kill -l [SIGNOM] -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3717,7 +3836,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3749,7 +3869,7 @@ msgstr "" # let arg [arg ...] # let ARG [ARG ...] -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3839,7 +3959,7 @@ 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:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3860,27 +3980,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3933,7 +4054,7 @@ msgstr "" # return [n] # return [N] -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3955,7 +4076,8 @@ msgstr "" # set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] # set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...] -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4023,7 +4145,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4125,7 +4248,7 @@ msgstr "" # unset [-f] [-v] [name ...] # unset [-f] [-v] [NOMO ...] -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4135,7 +4258,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4166,7 +4289,7 @@ msgstr "" # export [-fn] [name[=value] ...] or export -p # export [-fn] [NOMO[=VALORO] ...] aÅ­ export -p -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4202,7 +4325,7 @@ msgstr "" # readonly [-aAf] [name[=value] ...] or readonly -p # readonly [-aAf] [NOMO[=VALORO] ...] aÅ­ readonly -p -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4214,9 +4337,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4242,7 +4364,7 @@ msgstr "" " Sukceso, krom se aperas nevalida nomo aÅ­ misa opcio." # shift [n] -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4259,7 +4381,7 @@ msgstr "" # source filename [arguments] # source DOSIERNOMO [ARGUMENTOJ] -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4284,7 +4406,7 @@ msgstr "" " DOSIERNOMO ne legeblas." # suspend [-f] -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4310,7 +4432,7 @@ msgstr "" # test [expr] # test [ESPRIMO] -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4374,9 +4496,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4467,7 +4589,7 @@ msgstr "" " argumento." # [ arg... ] -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4477,7 +4599,7 @@ msgstr "" "Ĉi tiu estas sinonimo de la primitivo „test‟; tamen la lasta\n" " argumento devas esti „]‟ fermanta la esprimon komencitan per „[‟." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4498,7 +4620,7 @@ msgstr "" # trap [-lp] [[arg] signal_spec ...] # trap [-lp] [[ARG] SIGNALINDIKO ...] -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4577,7 +4699,7 @@ msgstr "" # type [-afptP] name [name ...] # type [-afptP] NOMO [NOMO ...] -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4586,18 +4708,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4635,7 +4757,7 @@ msgstr "" # ulimit [-SHacdefilmnpqrstuvx] [limit] # ulimit [-SHacdefilmnpqrstuvx] [LIMO] -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4653,6 +4775,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4664,7 +4787,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4694,8 +4818,10 @@ msgstr "" " -c maksimuma longo de nekropsia dosiero („core‟)\n" " -d maksimuma longo de datumsegmento de procezo\n" " -e maksimuma viciga prioritato („nice‟)\n" -" -i maksimuma longo de pendaj signaloj\n" " -f maksimuma longo de dosieroj skribataj de la Åelo kaj Äiaj idoj\n" +" -i maksimuma longo de pendaj signaloj\n" +" -k maksimuma nombro de kernaj atendovicoj (kqueues) disponigeblaj\n" +" al la procezo \n" " -l maksimuma longo de Ålosebla procezmemoro (mlock)\n" " -m maksimuma longo de rezida procezmemoro\n" " -n maksimuma nombro de malfermitaj dosiernumeroj\n" @@ -4707,6 +4833,7 @@ msgstr "" " -u maksimuma nombro de procezoj de la uzanto\n" " -v longo de la virtuala memoro\n" " -x maksimuma nombro de dosierÅlosoj\n" +" -P maksimuma nombro de pseÅ­doterminaloj\n" " -T maksimuma nombro de fadenoj\n" "\n" " Ne ĉiuj opcioj disponeblas sur ĉiuj komputilaj platformoj.\n" @@ -4726,7 +4853,7 @@ msgstr "" # umask [-p] [-S] [mode] # umask [-p] [-S] [REÄœIMO] -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4761,7 +4888,7 @@ msgstr "" # wait [-n] [id ...] # wait [-n] [IND ...] -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4797,7 +4924,7 @@ msgstr "" # wait [pid ...] # wait [PN ...] -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4823,7 +4950,7 @@ msgstr "" # for NAME [in WORDS ... ] ; do COMMANDS; done # for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4847,7 +4974,7 @@ msgstr "" # for (( exp1; exp2; exp3 )); do COMMANDS; done # for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4879,7 +5006,7 @@ msgstr "" # select NAME [in WORDS ... ;] do COMMANDS; done # select NONO [in VORTOJ ... ;] do KOMANDOJ; done -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4916,7 +5043,7 @@ msgstr "" # time [-p] PIPELINE # time [-p] DUKTO -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4947,7 +5074,7 @@ msgstr "" # case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac # case VORTO in [ÅœABLONO [| ÅœABLONO]...) KOMANDOJ ;;]... esac -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4969,7 +5096,7 @@ msgstr "" # [ else COMMANDS; ] fi # if KOMANDOJ; then KOMANDOJ;[ elif KOMANDOJ; then KOMANDOJ; ]... # [ else KOMANDOJ; ] fi -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5001,7 +5128,7 @@ msgstr "" # while COMMANDS; do COMMANDS; done # while KOMANDOJ; do KOMANDOJ; done -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5021,7 +5148,7 @@ msgstr "" # until COMMANDS; do COMMANDS; done # until KOMANDOJ; do KOMANDOJ; done -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5041,7 +5168,8 @@ msgstr "" # coproc [NAME] command [redirections] # coproc [NOMO] KOMANDO [ALIDIREKTADOJ] -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5051,7 +5179,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Kreu kunprocezon nomotan NOMO\n" "\n" @@ -5065,7 +5193,7 @@ msgstr "" # function name { COMMANDS ; } or name () { COMMANDS ; } # function NOMO { KOMANDOJ ; } aÅ­ NOMO () { KOMANDOJ ; } -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -5090,7 +5218,7 @@ msgstr "" # grouping_braces: { COMMANDS ; } # { KOMANDOJ ; } -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5110,7 +5238,7 @@ msgstr "" # job_spec [&] # LABORINDIKO [&] -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5135,7 +5263,7 @@ msgstr "" # (( expression )) # (( ESPRIMO )) -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5155,7 +5283,7 @@ msgstr "" # [[ expression ]] # [[ ESPRIMO ]] -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5206,7 +5334,7 @@ msgstr "" # help var # variables - Names and meanings of some shell variables -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5313,7 +5441,7 @@ msgstr "" # pushd [-n] [+N | -N | dir] # pushd [-n] [+N | -N | DOSIERUJO] -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5323,19 +5451,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5372,7 +5500,7 @@ msgstr "" " Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." # popd [-n] [+N | -N] -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5381,16 +5509,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5421,7 +5549,7 @@ msgstr "" " Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." # dirs [-clpv] [+N] [-N] -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5432,19 +5560,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5475,7 +5603,7 @@ msgstr "" # shopt [-pqsu] [-o] [optname ...] # shopt [-pqsu] [-o] [OPCINOMO ...] -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5514,7 +5642,7 @@ msgstr "" # printf [-v var] format [arguments] # printf [-v VAR] FORMATO [ARGUMENTOJ] -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5531,15 +5659,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5581,7 +5709,7 @@ msgstr "" # complete [-abcdefgjksuv] [-pr] [-DE] [-o OPCIO] [-A AGO] [-G GLOBÅœAB] # [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROÅœAB] # [-P PREFIKSO] [-S SUFIKSO] [NOMO ...] -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5594,11 +5722,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5634,7 +5762,7 @@ msgstr "" # compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G GLOBÅœAB] # [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROÅœAB] # [-P PREFIKSO] [-S SUFIKSO] [VORTO] -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5655,7 +5783,7 @@ msgstr "" " Sukceso, krom se aperas misa opcio aÅ­ okazas eraro." # compopt [-o|+o OPCIO] [-DE] [NOMO ...] -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5714,7 +5842,7 @@ msgstr "" # [-c quantum] [array] # mapfile [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN] [-C RETROVOKO] # [-c KVANTO] [TABELO] -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5725,20 +5853,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5761,12 +5890,14 @@ msgstr "" " DefaÅ­lte TABELO estas la variablo MAPFILE.\n" "\n" " Opcioj:\n" +" -d DISIG Por fini liniojn uzu ne la linifinilon, sed DISIG\n" " -n NOMBRILO Kopiu maksimume NOMBRILOn da linioj. Se NOMBRILO\n" " estas 0, kopiu ĉiujn liniojn\n" " -O ORIGINO Komencu valorizi la TABELOn ekde la indekso ORIGINO.\n" " La defaÅ­lta origino estas 0.\n" " -s NOMBRILO Ignoru NOMBRILOn da unuaj linioj\n" -" -t Forigu la vostan linifinilon el ĉiu legita linio\n" +" -t Forigu la vostan DISIG el ĉiu legita linio (defaÅ­lte\n" +" la linifinilon)\n" " -u DN Legu per la dosiernunero DN anstataÅ­ el la ĉefenigujo\n" " -C RETROVOKO Plenumu RETROVOKOn post ĉiu KVANTO da legitaj linioj\n" " -c KVANTO\tPo kiom da linioj legi inter sinsekvaj RETROVOKOj\n" @@ -5788,12 +5919,27 @@ msgstr "" # readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] # [-c quantum] [array] -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" -"Legu liniojn el la ĉefenigujo en tabelvariablon\n" +"Legu liniojn el dosiero en tabelvariablon.\n" "\n" " Sinonimo de „mapfile‟." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2014 ĉe «Free Software Foundation, Inc.»" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/po/es.gmo b/po/es.gmo index 4799cda2d2dbab451c61f0c3971228ff4ac943d4..5edaa91d32b08cbfd1bd063fab5fa651842c5ac4 100644 GIT binary patch delta 10933 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 MgSQ-<@i+ARf3qMi+5i9m diff --git a/po/es.po b/po/es.po index f07cda7..1988fb2 100644 --- a/po/es.po +++ b/po/es.po @@ -7,82 +7,88 @@ msgid "" msgstr "" "Project-Id-Version: GNU bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" "PO-Revision-Date: 2011-08-14 11:55-0500\n" "Last-Translator: Cristian Othón Martínez Vera \n" "Language-Team: Spanish \n" -"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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "subíndice de matriz incorrecto" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: no se puede convertir la matriz de indizada a asociativa" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: índice de matriz asociativa inválido" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, 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:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: se debe usar un subíndice al asignar a una matriz asociativa" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: no se puede crear: %s" -#: bashline.c:3982 +#: bashline.c:4091 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:4069 +#: bashline.c:4189 #, 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:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "no hay un `%c' que cierre en %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: falta un `:' separador" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nombre de alias inválido" @@ -91,45 +97,45 @@ msgstr "`%s': nombre de alias inválido" msgid "line editing not enabled" msgstr "no se activó la edición de línea" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nombre de combinación de teclas inválido" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: no se puede leer: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "%s: no se puede borrar la asignación" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nombre de función desconocido" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s no está asignado a ninguna tecla.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s se puede invocar a través de " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "cuenta de ciclo" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "sólo tiene significado en un ciclo `for', `while' o `until'" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -139,304 +145,333 @@ msgstr "" " \n" " Sin EXPR, devuelve " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME no está definido" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "demasiados argumentos" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "directorio tope." + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD no está definido" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "línea %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: la opción requiere un argumento" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: se requiere un argumento numérico" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: no se encontró" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: opción inválida" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: nombre de opción inválido" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': no es un identificador válido" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "número octal inválido" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "número hexadecimal inválido" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "número inválido" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: especificación de señal inválida" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': no es un pid o una especificación válida de trabajo" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: variable de sólo lectura" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fuera de rango" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argumento" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s fuera de rango" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: no existe ese trabajo" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: no hay control de trabajos" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "no hay control de trabajos" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: restringido" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "restringido" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: no es una orden interna del shell" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "error de escritura: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "error al establecer los atributos de la terminal: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "error al obtener los atributos de la terminal: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error al obtener el directorio actual: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificación de trabajo ambigua" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: nombre de acción inválido" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: no hay completado de especificación" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "aviso: es posible que la opción -F no funcione como se espera" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "aviso: es posible que la opción -C no funcione como se espera" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "no se está ejecutando la función de completado" # sólo se puede usar. sv # De acuerdo. cfuga -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "sólo se puede usar dentro de una función" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, fuzzy, c-format +msgid "%s: circular name reference" +msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "no se puede usar `-f' para hacer funciones" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: función de sólo lectura" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: no se puede convertir una matriz asociativa a indizada" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "la carga dinámica no está disponible" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "no se puede abrir el objeto compartido %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "no se puede encontrar %s en el objeto compartido %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: no se cargó dinámicamente" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: no se puede borrar: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: es un directorio" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: no es un fichero regular" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, 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:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: no se puede ejecutar el fichero binario" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: no se puede ejecutar: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "no es un shell de entrada: use `exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Hay trabajos detenidos.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Hay trabajos en ejecución.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "no se encontró la orden" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "especificación de historia" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: no se puede abrir el fichero temporal: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "actual" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "el trabajo %d inició sin control de trabajo" @@ -455,37 +490,37 @@ msgstr "%s: la opción requiere un argumento -- %c\n" msgid "hashing disabled" msgstr "asociación desactivada" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabla de asociación vacía\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "coinc\torden\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Orden del shell que coinciden con la palabra `" msgstr[1] "Órdenes del shell que coinciden con la palabra `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format 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:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: no se puede abrir: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -507,15 +542,20 @@ msgstr "" "desactivado.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "no se puede usar más de uno de -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "posición en la historia" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: límite de argumento inválido" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: falló la expansión de la historia" @@ -529,113 +569,113 @@ msgstr "%s: falló inlib" msgid "no other options allowed with `-x'" msgstr "no se permiten otras opciones con `-x'" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, 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:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Error desconocido" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "se esperaba una expresión" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: no es una matriz indizada" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descriptor de fichero inválida" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descriptor de fichero inválido: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: cuenta de líneas inválida" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: origen de matriz inválido" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de llamada inválido" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "nombre de variable de matriz vacío" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "se requiere el soporte de variable de matriz" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta el carácter de formato" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tiempo inválida" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato inválido" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "falta el dígito hexadecimal para \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta el dígito unicode para \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "no hay otro directorio" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: límite de argumento inválido" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "la pila de directorios está vacía" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "índice de la pila de directorios" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -679,7 +719,7 @@ msgstr "" "\tla lista mostrada por dirs cuando se llama sin opciones,\n" "\tempezando desde cero." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -721,7 +761,7 @@ msgstr "" " \n" " La orden interna `dirs' muestra la pila de directorios." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -761,144 +801,154 @@ msgstr "" " \n" " La orden interna `dirs' muestra la pila de directorios." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificación de tiempo de expiración inválida" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "error de lectura: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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:782 +#: builtins/set.def:841 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:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: no se puede borrar" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: no se puede borrar: %s es de solo lectura" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: no es una variable de matriz" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: no es una función" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: no se puede borrar" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "cuenta de shift" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "no se pueden activar y desactivar opciones del shell simultáneamente" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nombre de opción del shell inválido" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "se requiere un argumento de nombre de fichero" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: no se encontró el fichero" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "no se puede suspender" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "no se puede suspender un shell de entrada" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s es un alias de `%s'\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s es una palabra clave del shell\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s: es una función\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s es una orden interna del shell\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s es una orden interna del shell\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s está asociado (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: límite de argumento inválido" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': orden errónea" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: no se puede obtener el límite: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "límite" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: no se puede modificar el límite: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "número octal" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "`%c': operador de modo simbólico inválido" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "`%c': carácter de modo simbólico inválido" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " línea " @@ -912,84 +962,105 @@ msgstr "última orden: %s\n" msgid "Aborting..." msgstr "Abortando..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "error de orden desconocido" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "tipo de orden erróneo" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "conector erróneo" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "salto erróneo" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: variable sin asignar" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato inválido" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "error de tubería" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: no se encontró la orden" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, 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:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: no se puede ejecutar el fichero binario" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s es una orden interna del shell\n" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se puede duplicar el df %d al df %d" @@ -1040,37 +1111,37 @@ msgstr "" msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "error sintáctico: se esperaba un operando" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "error sintáctico: operador aritmético inválido" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (el elemento de error es \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "valor demasiado grande para la base" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: error de expresión\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: no se puede acceder a los directorios padre" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "no se puede reestablecer el modo nodelay para el df %d" @@ -1091,149 +1162,149 @@ 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:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "borrando el trabajo detenido %d con grupo de proceso %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: el proceso %5ld (%s) en the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no existe tal pid" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Señal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Hecho" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Detenido" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Detenido(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Ejecutando" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Hecho(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Salida %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Estado desconocido" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(`core' generado) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (dir ahora: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid hijo (%ld a %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No hay un registro del proceso %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: el trabajo %d está detenido" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: el trabajo ha terminado" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: el trabajo %d ya está en segundo plano" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: se activa WNOHANG para evitar el bloque indefinido" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: línea %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (`core' generado)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ahora: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs_control: falló getpgrp" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_jobs_control: disciplina de línea" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_jobs_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "no se puede establecer el grupo de proceso de terminal (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "no hay control de trabajos en este shell" @@ -1289,17 +1360,17 @@ msgstr "" 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:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: ¿%p ya está en la tabla como libre?\n" @@ -1323,7 +1394,7 @@ msgstr "%s: servicio inválido" msgid "%s: bad network path specification" msgstr "%s: especificación de ruta de red errónea" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "no hay soporte para operaciones de red" @@ -1360,102 +1431,113 @@ msgstr "Tiene correo nuevo en $_" msgid "The mail in %s has been read\n" msgstr "El correo en %s fue leído\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "error sintáctico: se requiere una expresión aritmética" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "error sintáctico: `;' inesperado" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "error sintáctico: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrucción %d erróneo" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "el documento-aquí en la línea %d está delimitado por fin-de-fichero (se " "esperaba `%s')" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: la instrucción de redirección `%d' está fuera de rango" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado mientras se buscaba un `%c' coincidente" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado mientras se buscaba `]]'" -#: parse.y:4175 +#: parse.y:4415 #, 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:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "error sintáctico en la expresión condicional" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', se esperaba `)'" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "se esperaba `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para el operador unario condicional" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para el operador unario condicional" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', se esperaba un operador binario condicional" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "se esperaba un operador binario condicional" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para el operador binario condicional" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para el operador binario condicional" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "elemento inesperado `%c' en la orden condicional" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "elemento inesperado `%s' en la orden condicional" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "elemento inesperado %d en la orden condicional" @@ -1466,12 +1548,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:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error sintáctico cerca del elemento inesperado `%s'" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "error sintáctico cerca de `%s'" @@ -1480,115 +1562,139 @@ 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:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "error sintáctico: no se esperaba el final del fichero" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "error sintáctico" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use \"%s\" para dejar el shell.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF inesperado mientras se buscaba un `)' coincidente" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: no se encuentra la función `%s'" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: COMPSPEC nulo" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector erróneo `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: descriptor de fichero inválido" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: puntero a fichero NULL" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato inválido" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "descriptor de fichero fuera de rango" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamiento ambiguo" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: no se puede sobreescribir un fichero existente" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restringido: no se puede redirigir la salida" -#: redir.c:191 +#: redir.c:192 #, 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:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: no se puede asignar el fd a la variable" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "no se admite /dev/(tcp|udp)/anfitrion/puerto sin red" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "error de redirección: no se puede duplicar el df" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "¡no se puede encontrar /tmp, crear por favor!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nombre de directorio válido" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción inválida" +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "no se puede reestablecer el modo nodelay para el df %d" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "no se puede reestablecer el modo nodelay para el df %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: es un directorio" + # Yo pondría "no tengo ningún nombre". sv # Revisé el código fuente de bash. Es un mensaje de error cuando no se # encuentra el nombre del usuario que ejecuta el shell. cfuga -#: shell.c:1682 +#: shell.c:1777 msgid "I have no name!" msgstr "¡No tengo nombre de usuario!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" @@ -1598,7 +1704,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:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1607,44 +1713,54 @@ 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:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Opciones GNU largas:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Opciones del shell:\n" -#: shell.c:1835 +#: shell.c:1938 #, 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s o -o opción\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use la orden `bashbug' para reportar bichos.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación inválida" @@ -1829,77 +1945,92 @@ msgstr "Señal Desconocida #" msgid "Unknown Signal #%d" msgstr "Señal Desconocida #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, 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:2847 +#: subst.c:3154 #, 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:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "no se puede crear la tubería para la sustitución del proceso" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "no se puede crear un proceso hijo para la sustitución del proceso" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "no se puede abrir la tubería llamada %s para lectura" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "no se puede abrir la tubería llamada %s para escritura" -#: subst.c:5178 +#: subst.c:5873 #, 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:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "sustitución errónea: no hay `}' final en %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "no se pueden crear la tubería para la sustitución de la orden" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "no se puede crear un proceso hijo para la sustitución de la orden" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: no se puede duplicar la tubería como df 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, 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:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parámetro nulo o no establecido" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: expresión de subcadena < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: sustitución errónea" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: cuenta de líneas inválida" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "`%s': nombre de alias inválido" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parámetro nulo o no establecido" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expresión de subcadena < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: no se puede asignar de esta forma" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1907,12 +2038,12 @@ msgstr "" "versiones futuras del intérprete obligarán la evaluación como una " "sustitución aritmética" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sustitución errónea: no hay una \"`\" que cierre en %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "no hay coincidencia: %s" @@ -1926,21 +2057,21 @@ msgstr "se esperaba un argumento" msgid "%s: integer expression expected" msgstr "%s: se esperaba una expresión entera" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "se esperaba `)'" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "se esperaba `)', se encontró %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: se esperaba un operador unario" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: se esperaba un operador binario" @@ -1952,20 +2083,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:860 +#: test.c:869 msgid "missing `]'" msgstr "falta un `]'" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "número de señal inválido" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1973,86 +2104,86 @@ msgstr "" "run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí " "mismo" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: señal errónea %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "error al importar la definición de la función para `%s'" -#: variables.c:780 +#: variables.c:814 #, 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:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" - -#: variables.c:2228 +#: variables.c:2413 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:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: no se puede asignar el fd a la variable" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" + +#: variables.c:3940 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:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s tiene exportstr nulo" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter inválido %d en exportstr para %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "no hay `=' en exportstr para %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no es un contexto global_variables" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: no se puede abrir como FICHERO" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s fuera de rango" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2079,11 +2210,6 @@ msgstr "" 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:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2104,15 +2230,15 @@ msgstr "%s: %s:%d: no se pueden asignar %lu bytes (%lu bytes asignados)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: no se pueden asignar %lu bytes" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [nombre[=valor] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nombre [nombre ...]" -#: builtins.c:51 +#: builtins.c:53 #, fuzzy msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" @@ -2122,113 +2248,102 @@ msgstr "" "secteclas] [-x secteclas:orden-shell] [secteclas:función-readline u orden-" "readline]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [orden-interna-shell [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [expresión]" -#: builtins.c:64 +#: builtins.c:66 #, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]]] [directorio]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] orden [arg ...]" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] nombre[=valor] ..." -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "typeset [-aAfFgilrtux] [-p] nombre[=valor] ..." -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [opción] nombre[=valor] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f fichero] [nombre ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts cadena_opciones nombre [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a nombre] [orden [argumentos ...]] [redirección ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e nombre_e] [-lnr] [primero] [último] ó fc -s [pat=rep] [orden]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [id_trabajo]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [id_trabajo ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p ruta] [-dt] [nombre ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [patrón ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2240,16 +2355,17 @@ msgstr "" # el nombre de la orden que se creo con el proceso em+ # por eso es idtrabajo, no pidtrabajo. De cualquier forma, no me agrada # mucho. ¿Sugerencias? cfuga -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [idtrabajo ...] ó jobs -x orden [args]" # lo mismo em+ -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [idtrabajo ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2257,11 +2373,11 @@ msgstr "" "kill [-s id_señal | -n num_señal | -id_señal] pid | idtrabajo ... ó kill -l " "[id_señal]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2269,105 +2385,99 @@ msgstr "" "read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p " "prompt] [-t tiempo] [-u df] [nombre ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nombre-opción] [--] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nombre ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [nombre[=valor] ...] ó export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [nombre[=valor] ...] ó readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source fichero [argumentos]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". fichero [argumentos]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [expresión]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -# Esto podría ser "veces". Mirar el contexto. sv -# No es veces. times es una orden interna del shell. cfuga -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] id_señal ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nombre [nombre ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [límite]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [modo]" -#: builtins.c:175 +#: builtins.c:177 #, fuzzy msgid "wait [-n] [id ...]" msgstr "wait [id]" -#: builtins.c:179 +#: builtins.c:181 #, fuzzy msgid "wait [pid ...]" msgstr "wait [id]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NOMBRE [in PALABRAS ... ] ; do ÓRDENES; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( exp1; exp2; exp3 )); do ÓRDENES; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NOMBRE [in PALABRAS ... ;] do ÓRDENES; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] tubería" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case PALABRA in [PATRÓN [| PATRÓN]...) ÓRDENES ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2375,63 +2485,63 @@ msgstr "" "if ÓRDENES; then ÓRDENES; [ elif ÓRDENES; then ÓRDENES; ]...[ else " "ÓRDENES; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while ÓRDENES; do ÓRDENES; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until ÓRDENES; do ÓRDENES; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NOMBRE] orden [redirecciones]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function nombre { ÓRDENES ; } ó nombre () { ÓRDENES ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ ÓRDENES ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "id_trabajo [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( expresión ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ expresión ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - Nombres y significados de algunas variables de shell" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | dir" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [nombre_opción...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formato [argumentos]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2441,28 +2551,30 @@ msgstr "" "W listapalabras] [-F función] [-C orden] [-X patfiltro] [-P prefijo] [-S " "sufijo] [nombre ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o opción] [-A acción] [-G patglob] [-W " "listapalabras] [-F función] [-C orden] [-X patfiltro] [-P prefijo] [-S " "sufijo] [palabra]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o opción] [-DE] [nombre ...]" -#: builtins.c:240 +#: builtins.c:242 +#, fuzzy msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "mapfile [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C llamada] [-c " "quantum] [matriz]" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2474,7 +2586,8 @@ msgstr "" # Lo mismo de antes: el alias es expandido -> el alias se expande. sv # no alias -> ningún alias. sv # De acuerdo. cfuga -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2486,7 +2599,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2510,12 +2623,13 @@ msgstr "" " alias devuelve verdadero a menos que se de un NOMBRE para el cual\n" " no se haya definido ningún alias." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2527,7 +2641,7 @@ msgstr "" # lee 'la'... em+ # Corregido. Además, es plural: lee las asignaciones... cfuga -#: builtins.c:289 +#: builtins.c:291 #, fuzzy msgid "" "Set Readline key bindings and variables.\n" @@ -2562,7 +2676,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2614,7 +2729,7 @@ msgstr "" " bind devuelve 0 a menos que se presente una opción desconocida o suceda\n" " un error." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2632,7 +2747,7 @@ msgstr "" " Estado de salida:\n" " El estado de salida es 0 a menos que N no sea mayor o igual a 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2651,7 +2766,7 @@ msgstr "" " Estado de Salida:\n" " El estado de salida es 0 a menos que N no sea mayor o igual a 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2676,7 +2791,7 @@ msgstr "" " Devuelve el estado de salida de la ORDEN-INTERNA-SHELL, o falso si la\n" " ORDEN-INTERNA-SHELL no es una orden interna de shell." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2707,7 +2822,7 @@ msgstr "" # Slash lo venimos traduciendo por barra inclinada , y backslash # por barra invertida em++ # Corregido en toda la traducción. cfuga -#: builtins.c:385 +#: builtins.c:387 #, fuzzy msgid "" "Change the shell working directory.\n" @@ -2731,16 +2846,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2781,13 +2896,14 @@ msgstr "" " Devuelve 0 si se cambia el directorio, y si $PWD está definido con\n" " éxito cuando se usa -P; de otra forma es diferente a cero." -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2809,7 +2925,7 @@ msgstr "" " Devuelve 0 a menos que se de una opción inválida o no se pueda leer\n" " el directorio actual." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2825,7 +2941,7 @@ msgstr "" " Estado de Salida:\n" " Siempre con éxito." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2837,7 +2953,7 @@ msgstr "" " Estado de salida:\n" " Siempre con éxito." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2849,7 +2965,8 @@ msgstr "" " Estado de salida:\n" " Siempre falla." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2859,10 +2976,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2887,7 +3004,7 @@ msgstr "" " Devuelve el estado de salida de la ORDEN, o falla si no se encuentra\n" " la ORDEN." -#: builtins.c:487 +#: builtins.c:490 #, fuzzy msgid "" "Set variable values and attributes.\n" @@ -2898,9 +3015,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2964,17 +3081,18 @@ msgstr "" " Devuelve con éxito a menos que se de una opción inválida o\n" " suceda un error." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Establece valores de variables y atributos.\n" " \n" " Obsoleto. Consulte `help declare'." -#: builtins.c:535 +#: builtins.c:538 #, fuzzy msgid "" "Define local variables.\n" @@ -3001,7 +3119,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:552 +#: builtins.c:555 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -3028,9 +3146,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3066,7 +3184,7 @@ msgstr "" " Estado de salida:\n" " Devuelve con éxito a menos que suceda un error de escritura." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3088,7 +3206,7 @@ msgstr "" " Estado de salida:\n" " Devuelve con éxito a menos que suceda un error de escritura." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3143,7 +3261,7 @@ msgstr "" "shell\n" " o suceda un error." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3168,7 +3286,7 @@ msgstr "" # en una de dos formas -> en una de las dos formas siguientes em+ # dar argumentos -> especificar em+ # De acuerdo. cfuga -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3248,7 +3366,8 @@ 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:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3259,8 +3378,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3289,7 +3408,7 @@ msgstr "" " Devuelve éxito a menos que no se encuentre la ORDEN o que suceda un\n" " error de redirección." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3302,7 +3421,7 @@ msgstr "" "salida\n" " es el mismo de la última orden ejecutada." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3315,7 +3434,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:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3371,7 +3490,7 @@ msgstr "" "error\n" " es diferente de cero." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3392,7 +3511,7 @@ msgstr "" " El estado del comando ubicado en primer plano, o falla si sucede un " "error." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3415,7 +3534,7 @@ msgstr "" " Devuelve éxito a menos que el control de trabajos no esté activado o\n" " suceda un error." -#: builtins.c:784 +#: builtins.c:787 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3425,15 +3544,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3461,7 +3580,8 @@ msgstr "" " Devuelve con éxito a menos que no se encuentre NOMBRE o se proporcione\n" " una opción inválida." -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3473,7 +3593,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3502,7 +3622,8 @@ msgstr "" " Devuelve con éxito a menos que no se encuentre PATRÓN o se proporcione\n" " una opción inválida." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3511,23 +3632,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3565,7 +3686,7 @@ msgstr "" " tiempo asociada con cada entrada de historia mostrada. No se muestra\n" " ninguna marca de tiempo de otra forma." -#: builtins.c:869 +#: builtins.c:872 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3576,7 +3697,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3612,7 +3733,8 @@ 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:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3622,7 +3744,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3643,7 +3765,8 @@ msgstr "" " Devuelve con éxito a menos que se proporcionen una opción o un\n" " IDTRABAJO inválidos." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3655,7 +3778,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3693,7 +3817,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:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3780,7 +3904,7 @@ msgstr "" " Si el último ARGumento se evalúa como 0, let devuelve 1; de otra\n" " forma, let devuelve 0." -#: builtins.c:983 +#: builtins.c:987 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3802,27 +3926,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3875,7 +4000,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:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3897,7 +4022,7 @@ msgstr "" " Devuelve N, o falla si el shell no está ejecutando una función o un " "guión." -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3966,7 +4091,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4079,7 +4205,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve con éxito a menos que se proporcione una opción inválida." -#: builtins.c:1126 +#: builtins.c:1132 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4090,7 +4216,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4118,7 +4244,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:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4154,7 +4280,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o que\n" " NOMBRE sea inválido." -#: builtins.c:1167 +#: builtins.c:1173 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4167,9 +4293,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4196,7 +4321,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o\n" " el NOMBRE sea inválido." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4214,7 +4339,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve con éxito a menos que N sea negativo o mayor que $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4238,7 +4363,7 @@ msgstr "" " Devuelve el estado de la última orden ejecutada del FICHERO; falla si\n" " no se puede leer el FICHERO." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4264,7 +4389,7 @@ msgstr "" " Devuelve con éxito a menos que no esté activo el control de trabajos o\n" " suceda un error." -#: builtins.c:1248 +#: builtins.c:1254 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4329,9 +4454,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4429,7 +4554,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:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4441,7 +4566,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:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4461,7 +4586,7 @@ msgstr "" " Estado de salida:\n" " Siempre con éxito." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4543,7 +4668,8 @@ 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:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -4552,18 +4678,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4601,7 +4727,7 @@ msgstr "" " Devuelve con éxito si se encuentran todos los NOMBREs; falla si no se\n" " encuentra alguno." -#: builtins.c:1417 +#: builtins.c:1424 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4620,6 +4746,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4631,7 +4758,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4694,7 +4822,7 @@ msgstr "" "suceda\n" " un error." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4728,7 +4856,7 @@ msgstr "" " Devuelve con éxito a menos que el MODO sea inválido o se proporcione\n" " una opción inválida." -#: builtins.c:1485 +#: builtins.c:1494 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4760,7 +4888,7 @@ msgstr "" " Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n" " opción inválida." -#: builtins.c:1506 +#: builtins.c:1515 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4785,7 +4913,7 @@ msgstr "" " Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n" " opción inválida." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4807,7 +4935,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4837,7 +4965,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4874,7 +5002,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4901,7 +5029,7 @@ msgstr "" " Estado de Salida:\n" " El estado de devolución es el estado de devolución de la TUBERÃA." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4919,7 +5047,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4955,7 +5083,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4973,7 +5101,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4991,7 +5119,8 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5001,7 +5130,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Crea un coproceso llamado NOMBRE.\n" " \n" @@ -5015,7 +5144,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de salida de la ORDEN." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -5038,7 +5167,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve con éxito a menos que NOMBRE sea de sólo lectura" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5056,7 +5185,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5081,7 +5210,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado del trabajo reiniciado." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5099,7 +5228,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve 1 si la EXPRESIÓN evalúa a 0; devuelve 0 de otra manera." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5152,7 +5281,7 @@ msgstr "" " Estado de Salida:\n" " 0 o 1 dependiendo del valor de la EXPRESIÓN." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5267,7 +5396,8 @@ msgstr "" " \t\tpara decidir cuáles órdenes se deben guardar en la lista de\n" " \t\thistoria.\n" -#: builtins.c:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -5277,19 +5407,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5326,7 +5456,8 @@ msgstr "" " Devuelve con éxito a menos que se proporcione un argumento inválido o\n" " falle el cambio de directorio." -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -5335,16 +5466,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5380,7 +5511,8 @@ msgstr "" " Devuelve con éxito a menos que se proporcione un argumento inválido o\n" " falle el cambio de directorio." -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -5391,19 +5523,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5436,7 +5568,7 @@ msgstr "" " Devuelve con éxito, a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5473,7 +5605,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:1908 +#: builtins.c:1919 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5491,15 +5623,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5540,7 +5672,8 @@ 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:1942 +#: builtins.c:1953 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5553,11 +5686,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5592,7 +5725,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5614,7 +5747,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5671,7 +5804,8 @@ 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:2015 +#: builtins.c:2026 +#, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5682,20 +5816,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5744,7 +5879,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:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5754,6 +5889,28 @@ msgstr "" " \n" " Un sinónimo de `mapfile'." +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +# Esto podría ser "veces". Mirar el contexto. sv +# No es veces. times es una orden interna del shell. cfuga +#~ msgid "times" +#~ msgstr "times" + +#, fuzzy +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" @@ -5929,9 +6086,6 @@ msgstr "" #~ msgid "removes the top directory from the stack, and cd's to the new" #~ msgstr "borra el directorio del tope de la pila, y cambia al nuevo" -#~ msgid "top directory." -#~ msgstr "directorio tope." - #~ msgid "+N removes the Nth entry counting from the left of the list" #~ msgstr "" #~ "+N borra la N-ésima entrada contando desde la izquierda de la lista" @@ -6566,16 +6720,13 @@ msgstr "" #~ msgid "Bad code in sig.c: sigprocmask" #~ msgstr "Código erróneo en sig.c: sigprocmask" -#~ msgid "bad substitution: no ending `}' in %s" -#~ msgstr "sustitución errónea: no hay `}' final en %s" - #~ msgid "%s: bad array subscript" #~ msgstr "%s: subíndice de matriz erróneo" #~ msgid "can't make pipes for process substitution: %s" #~ msgstr "" -#~ "no se pueden crear las tuberías (pipes) para la sustitución del proceso: " -#~ "%s" +#~ "no se pueden crear las tuberías (pipes) para la sustitución del proceso: %" +#~ "s" #~ msgid "reading" #~ msgstr "leyendo" @@ -8287,8 +8438,8 @@ msgstr "" #~ msgid "" #~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." #~ msgstr "" -#~ "de otra forma es una cadena de modo simbólico como la aceptada por " -#~ "chmod(1)." +#~ "de otra forma es una cadena de modo simbólico como la aceptada por chmod" +#~ "(1)." #~ msgid "" #~ "Wait for the specified process and report its termination status. If" diff --git a/po/et.gmo b/po/et.gmo index da10b86f328f0e18001cdc11d13b00faf46a22f9..fe741426462b3011334479e41d205c8ce7b89559 100644 GIT binary patch delta 49 zcmaDF_cU&UzpQ|nu7Rblp@D*-k(G&&u7Szqc-hX$Uu6@yeG>E1OB2&mtrSu>hsX&E F0sxZA50n4^ delta 50 zcmaDF_cU&UzpQ|Xu7Q!Rp`n7Ip_QSfu7T;~c-c-KpTxZM(!}&sD}~gO$\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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "vigane massiivi indeks" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: vigane tegevuse nimi" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: mitte-numbrilisele indeksile ei saa omistada" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ei saa luua: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: esimine mitte-tühemik sümbol pole `\"'" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "sulgev `%c' puudub %s sees" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: puudub eraldav koolon" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "%s: vigane tegevuse nimi" @@ -87,45 +93,45 @@ msgstr "%s: vigane tegevuse nimi" msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ei saa lugeda: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': ei saa lahti siduda" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "`%s': tundmatu funktsiooni nimi" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ei ole seotud ühegi klahviga.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s saab kasutada läbi " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "omab mõtet ainult `for', `while' või `until' tsüklis" -#: builtins/caller.def:134 +#: builtins/caller.def:136 #, fuzzy msgid "" "Returns the context of the current subroutine call.\n" @@ -133,302 +139,331 @@ msgid "" " Without EXPR, returns " msgstr "Tagastab jooksva alamprotseduuri konteksti." -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME pole seatud" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "liiga palju argumente" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "teist kataloogi pole" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD pole seatud" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "" -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, fuzzy, c-format msgid "warning: " msgstr "%s: hoiatus: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, fuzzy, c-format msgid "%s: usage: " msgstr "%s: hoiatus: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: võti nõuab argumenti" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: nõutakse numbrilist argumenti" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: ei leitud" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: vigane võti" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: vigane võtme nimi" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': ei ole lubatud identifikaator" -#: builtins/common.c:238 +#: builtins/common.c:246 #, fuzzy msgid "invalid octal number" msgstr "vigane signaali number" -#: builtins/common.c:240 +#: builtins/common.c:248 #, fuzzy msgid "invalid hex number" msgstr "vigane number" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "vigane number" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: vigane signaali spetsifikatsioon" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': ei ole pid ega korrektne töö spetsifikatsioon" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: mittemuudetav muutuja" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s on piiridest väljas" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s on piiridest väljas" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: sellist tööd pole" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: töökontroll puudub" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "töökontroll puudub" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: piiratud" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "piiratud" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ei ole sisekäsk" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "kirjutamise viga: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: segane töö" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: vigane tegevuse nimi" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "hoiatus: võti -F ei pruugi töötada nagu te ootate" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "hoiatus: võti -C ei pruugi töötada nagu te ootate" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "saab kasutada ainult funktsioonis" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: vigane tegevuse nimi" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: funktsioon ei ole muudetav" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: masiivi muutujaid ei saa nii kustutada" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dünaamilist laadimist et saa kasutada" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "jagatud objekti %s ei saa avada: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "%s puudub jagatud objektis %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: pole dünaamiliselt laetud" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: ei saa kustutada: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: on kataloog" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: ei ole tavaline fail" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: fail on liiga suur" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kahendfaili ei õnnestu käivitada" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ei saa käivitada: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "pole login shell: kasutage `exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Teil on peatatud töid.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, fuzzy, c-format msgid "There are running jobs.\n" msgstr "Teil on peatatud töid.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "käsku ei ole" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ajutist faili ei saa avada: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "" @@ -447,35 +482,35 @@ msgstr "%s: v msgid "hashing disabled" msgstr "" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "viimane käsklus: %s\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ei saa avada: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -487,15 +522,20 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: vigane number" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "" @@ -509,114 +549,114 @@ msgstr "%s: vigane teenus" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Tundmatu viga" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "oodati avaldist" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, fuzzy, c-format msgid "%s: not an indexed array" msgstr "%s: pole massiiv" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: vigane võti" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: vigane võti" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: vigane tegevuse nimi" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 #, fuzzy msgid "empty array variable name" msgstr "%s: pole massiiv" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: vigane signaali spetsifikatsioon" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, fuzzy, c-format msgid "warning: %s: %s" msgstr "%s: hoiatus: " -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "teist kataloogi pole" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: vigane number" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 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 +680,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -665,7 +705,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -686,143 +726,153 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "viga lugemisel: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: ei saa eemaldada" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: pole massiiv" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: ei ole funktsioon" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: ei saa eemaldada" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "shift arv" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: faili ei ole" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "peatamine ei õnnestu" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "login shelli ei saa peatada" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s on shelli võtmesõna\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s: on funktsioon\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s on shelli sisekäsk\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s on shelli sisekäsk\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s on %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': halb käsklus" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ei õnnestu lugeda piirangut: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ei õnnestu muuta piirangut: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "kaheksandnumber" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr "" @@ -836,83 +886,104 @@ msgstr "viimane k msgid "Aborting..." msgstr "Katkestan..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "tundmatu viga käsus" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: sidumata muutuja" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 #, fuzzy msgid "pipe error" msgstr "kirjutamise viga: %s" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: piiratud: käskudes ei saa kasutada sümboleid `/'" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: käsku ei ole" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, fuzzy, c-format msgid "%s: %s" msgstr "%s on %s\n" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: halb interpretaator" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kahendfaili ei õnnestu käivitada" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s on shelli sisekäsk\n" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" @@ -957,37 +1028,37 @@ msgstr "" msgid "missing `)'" msgstr "puudub `)'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "süntaksi viga: oodati operandi" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "süntaksi viga: vigane aritmeetiline operaator" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "vigane aritmeetiline baas" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "väärtus on baasiks liiga suur" -#: expr.c:1543 +#: expr.c:1546 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "%s: oodati täisarvude avaldist" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: vanemkataloogidele ei ole juurdepääsu" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" @@ -1002,148 +1073,148 @@ msgstr "" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid puudub" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: töö %d on peatatud" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: töö on lõpetatud" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: töö %d on juba taustal" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3711 +#: jobs.c:3970 #, fuzzy, c-format msgid "%s: line %d: " msgstr "%s: hoiatus: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "" @@ -1196,17 +1267,17 @@ msgstr "" msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1230,7 +1301,7 @@ msgstr "%s: vigane teenus" msgid "%s: bad network path specification" msgstr "" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "" @@ -1267,224 +1338,259 @@ msgstr "Teil on uus kiri kaustas $_" msgid "The mail in %s has been read\n" msgstr "Kiri kaustas %s on loetud\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "süntaksi viga: nõutakse aritmeetilist avaldist" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "süntaksi viga: ootamatu `;'" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "süntaksi viga: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "süntaksi viga tingimuslikus avaldises" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "ootamatu märk `%s', oodati `)'" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "oodati `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "süntaksi viga kohal `%s'" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "süntaksi viga: ootamatu faililõpp" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "süntaksi viga" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Käsuinterpretaatorist väljumiseks kasutage \"%s\".\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "faili deskriptor on piiridest väljas" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: segane ümbersuunamine" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: fail on olemas, ei kirjuta üle" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: piiratud: väljundit ei saa ümber suunata" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:195 +#: redir.c:196 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "$%s: sedasi ei saa omistada" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "viga ümbersuunamisel: fd duplikaadi loomine ei õnnestu" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "/tmp puudub, palun looge see!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp peab olema kataloogi nimi" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: vigane võti" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: on kataloog" + +#: shell.c:1777 msgid "I have no name!" msgstr "Mul ei ole nime!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1493,40 +1599,50 @@ msgstr "" "Kasuta:\t%s [GNU pikk võti] [võti] ...\n" "\t%s [GNU pikk võti] [võti] skript-fail ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU pikad võtmed:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Käsuinterpretaatori võtmed:\n" -#: shell.c:1835 +#: shell.c:1938 #, 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s või -o võti\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Vigadest teatamiseks kasutage käsku `bashbug'.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: vigane operatsioon" @@ -1702,88 +1818,103 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "sulgev `%c' puudub %s sees" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parameeter on null või pole seatud" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: halb asendus" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: vigane võti" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "%s: vigane tegevuse nimi" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameeter on null või pole seatud" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: sedasi ei saa omistada" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8421 +#: subst.c:9349 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sulgev `%c' puudub %s sees" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "ei leitud: %s" @@ -1797,123 +1928,123 @@ msgstr "oodati argumenti" msgid "%s: integer expression expected" msgstr "%s: oodati täisarvude avaldist" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "oodati `)'" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "oodati `)', saadi %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: eeldati unaarset operaatorit" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: eeldati binaarset operaatorit" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "puudub `]'" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "vigane signaali number" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: vigane signaal %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:780 +#: variables.c:814 #, 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:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: praegune skoop pole funktsiooni kontekst" -#: variables.c:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "$%s: sedasi ei saa omistada" -#: variables.c:3646 +#: variables.c:3043 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: praegune skoop pole funktsiooni kontekst" -#: variables.c:3891 +#: variables.c:4218 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parameeter on null või pole seatud" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: pole global_variables kontekst" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5257 +#: variables.c:5619 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ei saa avada: %s" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s on piiridest väljas" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" #: version.c:47 version2.c:47 @@ -1935,11 +2066,6 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1960,342 +2086,326 @@ msgstr "" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: ei saa luua: %s" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "" -#: builtins.c:68 -msgid ":" -msgstr "" - -#: builtins.c:70 -msgid "true" -msgstr "" - -#: builtins.c:72 -msgid "false" -msgstr "" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +#: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "" -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "" -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "" -#: builtins.c:148 +#: builtins.c:150 #, fuzzy msgid "shift [n]" msgstr "shift arv" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "" -#: builtins.c:152 +#: builtins.c:154 #, fuzzy msgid ". filename [arguments]" msgstr "liiga palju argumente" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "" -#: builtins.c:162 -msgid "times" -msgstr "" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "" -#: builtins.c:206 +#: builtins.c:208 #, fuzzy msgid "(( expression ))" msgstr "oodati avaldist" -#: builtins.c:208 +#: builtins.c:210 #, fuzzy msgid "[[ expression ]]" msgstr "oodati avaldist" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "" -#: builtins.c:240 +#: builtins.c:242 msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2307,7 +2417,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2315,17 +2425,17 @@ msgid "" " defined." msgstr "" -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2359,14 +2469,15 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2377,7 +2488,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2388,7 +2499,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2402,7 +2513,7 @@ msgid "" " not a shell builtin.." msgstr "" -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2418,7 +2529,7 @@ msgid "" " is invalid." msgstr "" -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2441,16 +2552,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2463,13 +2574,13 @@ msgid "" " -P is used; non-zero otherwise." msgstr "" -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2479,7 +2590,7 @@ msgid "" " cannot be read." msgstr "" -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2489,7 +2600,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2497,7 +2608,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2505,7 +2616,7 @@ msgid "" " Always fails." msgstr "" -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2515,16 +2626,16 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2534,9 +2645,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2564,14 +2675,14 @@ msgid "" " assignment error occurs." msgstr "" -#: builtins.c:527 +#: builtins.c:530 msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2586,7 +2697,7 @@ msgid "" " assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2612,15 +2723,15 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2633,7 +2744,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2660,7 +2771,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2672,7 +2783,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2713,7 +2824,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2724,8 +2835,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2736,7 +2847,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -2744,7 +2855,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2753,7 +2864,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2783,7 +2894,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2795,7 +2906,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2809,7 +2920,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -2818,22 +2929,22 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -2845,7 +2956,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2855,7 +2966,7 @@ msgid "" "given." msgstr "" -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2864,23 +2975,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -2889,7 +3000,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -2899,7 +3010,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -2913,7 +3024,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2923,14 +3034,14 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -2942,7 +3053,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -2952,7 +3064,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -2997,7 +3109,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3018,27 +3130,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3048,7 +3161,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3060,7 +3173,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3128,7 +3241,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3145,7 +3259,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3155,7 +3269,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3167,7 +3281,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3186,7 +3300,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3198,9 +3312,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3208,7 +3321,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3219,7 +3332,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3233,7 +3346,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3247,7 +3360,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3311,9 +3424,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3330,7 +3443,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3338,7 +3451,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3350,7 +3463,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3394,7 +3507,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3403,18 +3516,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3424,7 +3537,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3442,6 +3555,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3453,7 +3567,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3471,7 +3586,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3489,7 +3604,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3509,7 +3624,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3524,7 +3639,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3537,7 +3652,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3554,7 +3669,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3574,7 +3689,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3590,7 +3705,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3601,7 +3716,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3622,7 +3737,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3633,7 +3748,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3644,7 +3759,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3654,10 +3769,10 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3671,7 +3786,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3682,7 +3797,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3696,7 +3811,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3707,7 +3822,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3735,7 +3850,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3789,7 +3904,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -3799,19 +3914,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3820,7 +3935,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -3829,16 +3944,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3847,7 +3962,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -3858,25 +3973,25 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -3897,7 +4012,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3914,15 +4029,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -3936,7 +4051,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3949,11 +4064,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -3963,7 +4078,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -3976,7 +4091,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4007,7 +4122,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4018,20 +4133,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4048,13 +4164,21 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" + +#, fuzzy +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" + #, fuzzy #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" diff --git a/po/fi.gmo b/po/fi.gmo index 4390eac12c317d025b1cf4060c5584a7b2969237..96ee531accf3521332d9c56e2cbdfcaf65738a52 100644 GIT binary patch delta 10228 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 G+5ZO$Rao!< delta 25470 zcmb`O37nM0ng8Dw1ezN`kxO0y1$1WQ@B+L>7-TqRMi}rQL|$fkn5KKW+dc+oHMUnY z-o{pmF&Z_jM+_br1rH1{m>BOf8WYzuZd_xG?yeg(YWDl9s<)>Bv%8=F=ieV{zE$sA zZyirP_0&`KzHI%X_n&X>Q+$1o-dB74-i>(PSU7Kp=UuRy=Oy>iRnPm*6wf;VUI_Pq z_rgi=G1wn|00+ar!alIiRL|3+gWw2Q1;@i$xEBmy6rKi$d0x>w$KANf@eapdKvnoE z90xyuw9V^JYkW8w4u^B#NZ1JHz_m~n{mAh_NZY*U;RN_ORKvy{s16rBZw8V5xzOm? z2@fKDz2nnxPtspH4zKdO8q!mtdU_&Mh3nzo@G>|C-U`+5?NAMU3#tL1xb)uDo;Q^G zy(%KgcqCLsE1?>2s!QMGxCKfgPecBBZ@TM)X^n<%5*!L^;V8J&rIS!Y@GU4wT@TgJ z`(SZjBF_*}0Utr6>-#W z^gMU{4k*b!?)U~AO!|}Q$X^+I&+xpN@IWX@oC4LtGoX~^dvE~U1c$;0pbB^bssXP; zHS~{g7W@iMgojgT1bzeR{x{(;Sb!?;f+CSOdU;+6E`YhitOT~swtNaI<7;p}CA|k# z@j*w}`$xfnq#K~}t%Omy*6~z0ob>7Nq5htCIqXMz(Q!;g$}2V#8OeO#yukBTap9ST zp7(1SQni?I;`%3zh_1KiEnG_PxxRV@L$y1NI2mbif8SF)Z!ym;2|Vw13jY2Y&pVoY z^IDK9>GRrbg%?5%?UgXk{hQ&xYyOX1$GCH&e}Yz1;O+3Qq=% |v{J?~@EgEIF1 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\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" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "virheellinen taulukkoindeksi" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indeksoitua taulukkoa ei voi muuttaa assosiatiiviseksi" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: virheellinen assosiatiivinen indeksi" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ei voida sijoittaa epänumeeriseen indeksiin" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: assosiatiiviseen taulukkoon sijoitettaessa täytyy käyttää " "avainindeksiä" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ei voida luoda: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: komennolle ei löydy näppäinkarttaa" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ensimmäinen ei-tyhjä merkki ei ole â€\"â€" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "ei loppumerkkiä â€%c†rivissä %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: puuttuva kaksoispiste-erotin" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "â€%sâ€: virheellinen näppäinkartan nimi" @@ -94,45 +100,45 @@ msgstr "â€%sâ€: virheellinen näppäinkartan nimi" msgid "line editing not enabled" msgstr "rivieditointi ei ole käytössä" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "â€%sâ€: virheellinen näppäinkartan nimi" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ei voida lukea: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "â€%sâ€: ei voida irrottaa" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "â€%sâ€: tuntematon funktio" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ei ole sidottu mihinkään näppäimeen.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s voidaan käynnistää näppäinkomennolla " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "toistolaskuri" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "voidaan käyttää vain â€forâ€-, â€whileâ€- tai â€untilâ€-silmukoissa" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -142,300 +148,329 @@ msgstr "" " \n" " Ilman LAUSEKETTA palauttaa" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME-ympäristömuuttujaa ei ole asetettu" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "liian monta argumenttia" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "ei toista hakemistoa" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD-ympäristömuuttujaa ei ole asetettu" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "rivi %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "varoitus: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: käyttö: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: valitsin vaatii argumentin" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: vaaditaan numeerinen argumentti" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: ei löytynyt" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: virheellinen valitsin" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: virheellinen valitsimen nimi" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "â€%sâ€: virheellinen tunniste" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "virheellinen oktaaliluku" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "virheellinen heksadesimaaliluku" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "virheellinen luku" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: virheellinen signaalimääritys" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "â€%sâ€: ei ole prosessitunnus eikä kelvollinen työtunniste" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: kirjoitussuojattu muuttuja" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s rajojen ulkopuolella" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argumentti" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s rajojen ulkopuolella" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: työtä ei löydy" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: ei työnohjausta" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "ei työnohjausta" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: rajoitettu" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "rajoitettu" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ei ole komentotulkin sisäänrakennettu komento" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "kirjoitusvirhe: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "pääteasetuksia asetettaessa tapahtui virhe: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "pääteasetuksia luettaessa tapahtui virhe: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: nykyhakemistoa luettaessa tapahtui virhe: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: ei ole yksiselitteinen työtunniste" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: virheellinen toiminnon nimi" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: ei lavennusmääritystä" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "varoitus: -F -valitsin ei ehkä toimi odotetusti" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "varoitus: -C -valitsin ei ehkä toimi odotetusti" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "tällä hetkellä komennon lavennusfunktiota ei suoriteta" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "voidaan käyttää ainoastaan funktiossa" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, fuzzy, c-format +msgid "%s: circular name reference" +msgstr "%d: virheellinen tiedostokahva: %s" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%d: virheellinen tiedostokahva: %s" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "â€-fâ€:ää ei voida käyttää funktioiden luomiseen" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: kirjoitussuojattu funktio" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: taulukkomuuttujia ei voi tuhota näin" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: assosiatiivista taulukkoa ei voi muuttaa indeksoiduksi" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dynaaminen lataus ei ole käytettävissä" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "jaettua objektia %s ei voida avata: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "kohdetta %s ei löydy jaetusta objektista %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: ei dynaamisesti ladattu" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: ei voida poistaa: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: on hakemisto" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: ei tavallinen tiedosto" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: tiedosto on liian iso" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: binääritiedostoa ei voida suorittaa" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ei voida suorittaa: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "lopetus\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "ei ole sisäänkirjautumiskomentotulkki: käytä komentoa â€exitâ€" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Töitä on pysäytettynä.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Töitä on ajossa.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "ei löytynyt komentoa" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "komentohistoriamääritys" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: väliaikaistiedostoa ei voitu avata: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "nykyinen" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "työ %d käynnistyi ilman työnohjausta" @@ -454,24 +489,24 @@ msgstr "%s: valitsin vaatii argumentin – %c\n" msgid "hashing disabled" msgstr "hajautus kytketty pois" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hajautustaulukko on tyhjä\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "osumia\tkomento\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Sopivat komennot avainsanaan `" msgstr[1] "Sopivat komennot avainsanoihin `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -479,12 +514,12 @@ msgstr "" "Ohjeita kohteelle â€%s†ei löydy. Kokeile â€help helpâ€, â€man -k %s†tai \n" "â€info %sâ€." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ei voida avata: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -505,15 +540,20 @@ msgstr "" "Asteriski (*) nimen vieressä tarkoittaa, että komennon käyttö on estetty.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "valitsimista -anrw voidaan käyttää vain yhtä" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "sijainti komentohistoriassa" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: virheellinen rajoitusargumentti" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: historiaviittaus epäonnistui" @@ -527,113 +567,113 @@ 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:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenttien pitää olla prosessi- tai työtunnisteita" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Tuntematon virhe" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "odotettiin lauseketta" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, fuzzy, c-format msgid "%s: not an indexed array" msgstr "%s: ei ole taulukkomuuttuja" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: virheellinen tiedostokahvamääritys" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: virheellinen tiedostokahva: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: virheellinen rivimäärä" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: virheellinen taulukkoindeksi" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: virheellinen paluukutsumäärä" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "tyhjä taulukkomuuttujan nimi" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "vaaditaan tukea taulukkomuuttujille" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "â€%sâ€: puuttuva muotoilumerkki" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: virheellinen aikakatkaisumääritys" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "â€%câ€: virheellinen muotoilumerkki" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "varoitus: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "\\x:stä puuttuu heksadesimaalinumero" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "\\x:stä puuttuu heksadesimaalinumero" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "ei toista hakemistoa" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: virheellinen rajoitusargumentti" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "hakemistopino on tyhjä" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "hakemistopinon indeksi" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -675,7 +715,7 @@ msgstr "" " -N\tNäyttää listan N:nnen alkion (laskien oikealta dirs-komennon\n" " \tantamasta listasta). Valitsimetta kutsuttaessa aloitetaan nollasta." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -717,7 +757,7 @@ msgstr "" " \n" " Sisäänrakennettu â€dirsâ€-komento näyttää hakemistopinon." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -755,145 +795,155 @@ msgstr "" " \n" " Sisäänrakennettu â€dirsâ€-komento näyttää hakemistopinon sisällön." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: virheellinen aikakatkaisumääritys" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "lukuvirhe: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "â€return†on käytettävissä vain funktiossa tai ladatussa skriptissä" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "funktiota ja muuttujaa ei voi poistaa yhtä aikaa" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: ei voida poistaa" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ei voida poistaa: kirjoitussuojattu %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: ei ole taulukkomuuttuja" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: ei ole funktio" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: ei voida poistaa" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "siirtolaskuri" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 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:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: virheellinen komentotulkin valitsimen nimi" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "vaaditaan tiedostonimi argumentiksi" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: tiedostoa ei löytynyt" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "ei voida keskeyttää" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "sisäänkirjautumiskomentotulkkia ei voi keskeyttää" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s on aliasioitu â€%sâ€\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s on komentotulkin avainsana\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s on funktio\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s on komentotulkin sisäänrakennettu komento\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s on komentotulkin sisäänrakennettu komento\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s on %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s on hajautettu (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: virheellinen rajoitusargumentti" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "â€%câ€: virheellinen komento" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: rajoitusta ei saada: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "rajoitus" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: rajoitusta ei voida muokata: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "oktaaliluku" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "â€%câ€: virheellinen symbolisen tilan operaattori" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "â€%câ€: virheellinen symbolisen tilan merkki" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " rivi " @@ -907,82 +957,103 @@ msgstr "viimeinen komento: %s\n" msgid "Aborting..." msgstr "Keskeytetään..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "tuntematon komentovirhe" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "virheellinen komentotyyppi" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "virheellinen liittäjä" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "virheellinen hyppy" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: sitomaton muuttuja" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aaikakatkaisu: automaattinen uloskirjautuminen\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "syötettä ei voida lukea tiedostosta /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "AJAN MUOTOMÄÄRITYS: â€%câ€: virheellinen muotoilumerkki" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "putkitusvirhe" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: rajoitettu: komentojen nimissä ei voi käyttää â€/â€-merkkiä" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: komentoa ei löydy" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, fuzzy, c-format msgid "%s: %s" msgstr "%s on %s\n" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: virheellinen tulkki" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binääritiedostoa ei voida suorittaa" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s on komentotulkin sisäänrakennettu komento\n" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "tiedostokahvaa %d ei voida kopioida kahvaksi %d" @@ -1027,37 +1098,37 @@ msgstr "odotettiin muuttujaa ++:n tai --:n jälkeen" msgid "missing `)'" msgstr "puuttuva â€)â€" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "lauseoppivirhe: odotettiin operandia" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "lauseoppivirhe: virheellinen aritmetiikkaoperaattori" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (virheellinen avainsana on â€%sâ€)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "virheellinen lukujärjestelmä" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "liian iso luku lukujärjestelmälle" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: virhe lausekkeessa\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ylempiin hakemistoihin ei päästä" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" @@ -1072,148 +1143,148 @@ msgstr "bashin syötteeksi ei voida avata uutta tiedostokahvaa kahvasta %d" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: uudella tiedostokahvalla %d on jo puskuri" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-putki" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "haarautettu prosessi-id %d on ajossa olevalla työllä %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "poistetaan pysäytetty työ %d prosessiryhmästä %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: prosessi %5ld (%s) putkijonossa" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: prosessi %5ld (%s) on merkattu vielä toimivaksi" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: prosessitunnusta ei löydy." -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signaali %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Valmis" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Pysäytetty" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Pysäytetty(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Ajossa" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Valmis(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Poistui %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Tuntematon tila" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(luotiin core-tiedosto)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (työhakemisto: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "lapsiprosessin setpgid (%ld => %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Prosessista %ld ei ole tietoja" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: työ %d on pysäytetty" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: työ on lopetettu" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: työ %d on jo taustalla" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: rivi %d:" -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (luotiin core-tiedosto)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(työhakemisto nyt: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp epäonnistui" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: vuonhallinta" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "päätteen prosessiryhmää ei voitu asettaa (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "tällä komentotulkilla ei ole työnohjausta" @@ -1267,17 +1338,17 @@ msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: alku- ja loppulohkojen koot eroavat" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p on jo taulukossa vapaana?\n" @@ -1301,7 +1372,7 @@ msgstr "%s: virheellinen palvelu" msgid "%s: bad network path specification" msgstr "%s: virheellinen verkkopolkumääritys" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "verkko-operaatioita ei ole tuettu" @@ -1338,226 +1409,261 @@ msgstr "Sinulla on uutta postia laatikossa $_" msgid "The mail in %s has been read\n" msgstr "Posti laatikossa %s on luettu\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "lauseoppivirhe: vaaditaan aritmeettinen lauseke" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "lauseoppivirhe: odottamaton â€;â€" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "lauseoppivirhe: â€((%s))â€" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: virheellinen käskytyyppi %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-dokumentti rivillä %d päättyi tiedoston loppumiseen (haluttiin â€%sâ€)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: uudelleenohjaus â€%d†rajojen ulkopuolella" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "odottamaton EOF (tiedostonloppu) odotettaessa sulkevaa â€%câ€" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "odottamaton EOF odotettaessa â€]]â€" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "lauseoppivirhe ehdollisessa lausekkeessa: odottamaton avainsana â€%sâ€" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "lauseoppivirhe ehdollisessa lausekkeessa" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "odottamaton avainsana â€%sâ€, odotettiin â€)â€" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "odototettiin â€)â€" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "odottamaton argumentti â€%s†ehdolliselle unaariselle operaattorille" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "odottamaton argumentti ehdolliselle unaariselle operaattorille" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "odottamaton avainsana â€%sâ€, odotettiin ehdollista binääristä operaattoria" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "odotettiin ehdollista binääristä operaattoria" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "odottamaton argumentti â€%s†ehdolliselle binääriselle operaattorille" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "odottamaton argumentti ehdolliselle binääriselle operaattorille" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "odottamaton avainsana â€%c†ehdollisessa komennossa" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "odottamaton avainsana â€%s†ehdollisessa komennossa" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "odottamaton avainsana %d ehdollisessa komennossa" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "lauseoppivirhe lähellä odottamatonta avainsanaa â€%sâ€" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "lauseoppivirhe lähellä â€%sâ€" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "lauseoppivirhe: odottamaton tiedostonloppu" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "lauseoppivirhe" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Kirjoita â€%s†poistuaksesi komentotulkista.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "Odottamaton EOF odotettaessa vastaavaa â€)â€" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "täydennys: funktiota â€%s†ei löytynyt" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: tyhjä COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: virheellinen yhdistin â€%dâ€" -#: print_cmd.c:373 +#: print_cmd.c:375 #, fuzzy, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "%d: virheellinen tiedostokahva: %s" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: â€%câ€: virheellinen muotoilumerkki" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "tiedostokahva rajojen ulkopuolella" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: epämääräinen uudelleenohjaus" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: olemassa olevan tiedoston päälle ei voida kirjoittaa" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: rajoitettu: tulostusta ei voida uudelleenohjata" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "here-dokumentille ei voida luoda väliaikaistiedostoa: %s" -#: redir.c:195 +#: redir.c:196 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port-muotoa ei tueta ilman tietoliikennettä" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "virhe uudelleenohjauksessa: tiedostokahvaa ei voida kopioida" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "/tmp-hakemistoa ei löytynyt, luo se!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp:n pitää olla kelvollinen hakemiston nimi" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: virheellinen valitsin" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: on hakemisto" + +#: shell.c:1777 msgid "I have no name!" msgstr "Minulla ei ole nimeä!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versio %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1566,45 +1672,55 @@ msgstr "" "Käyttö:\t%s[GNU:n pitkä valitsin] [valitsin] ...\n" "\t%s [GNU:n pitkä valitsin] [valitsin] komentotiedosto ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU:n pitkät valitsimet:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Komentotulkin valitsimet:\n" -#: shell.c:1835 +#: shell.c:1938 #, 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s tai -o -valitsin\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Raportoi virheet komennolla â€bashbugâ€.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: virheellinen operaatio" @@ -1778,88 +1894,103 @@ msgstr "Tuntematon signaali #" msgid "Unknown Signal #%d" msgstr "Tuntematon signaali #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "virheellinen korvaus: ei sulkevaa â€%s†jonossa %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "putkea ei voida luoda prosessin korvaamista varten" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "lapsiprosessia ei voida luoda prosessin korvaamista varten" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nimettyä putkea %s ei voida avata lukemista varten" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nimettyä putkea %s ei voida avata kirjoitusta varten" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nimettyä putkea %s ei voida kopioida tiedostokahvaksi %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "virheellinen korvaus: ei sulkevaa â€`†jonossa %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "putkea ei voida luoda komennon korvaamista varten" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "ei voida luoda lapsiprosessia komennon korvaamista varten" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: putkea ei voida kopioida tiedostokahvaksi 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%d: virheellinen tiedostokahva: %s" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parametria ei ole tai sitä ei ole asetettu" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: alimerkkijonolauseke < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: virheellinen korvaus" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: virheellinen rivimäärä" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "â€%sâ€: virheellinen näppäinkartan nimi" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametria ei ole tai sitä ei ole asetettu" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: alimerkkijonolauseke < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ei voida asettaa näin" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "virheellinen korvaus: ei sulkevaa â€`†jonossa %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "ei osumia: %s" @@ -1873,39 +2004,39 @@ msgstr "odotettiin argumenttia" msgid "%s: integer expression expected" msgstr "%s: odotettiin kokonaislukuilmaisua" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "odotettiin â€)â€" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "odotettiin â€)â€, löydettiin %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: odotettiin unaarista operaattoria" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: odotettiin binääristä operaattoria" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "puuttuva â€]â€" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "virheellinen signaalinumero" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1913,86 +2044,86 @@ msgstr "" "run_pending_traps: signaalikäsittelijä on SIG_DFL, lähetän %d (%s) uudelleen " "itselleni" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: virheellinen signaali %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "virhe tuotaessa â€%sâ€:n funktiomääritystä" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "komentotulkkitaso (%d) liian korkea, palautetaan 1:ksi" -#: variables.c:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%d: virheellinen tiedostokahva: %s" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ei funktiokontekstia nykytilassa" -#: variables.c:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%d: virheellinen tiedostokahva: %s" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ei funktiokontekstia nykytilassa" -#: variables.c:3891 +#: variables.c:4218 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "virheellinen merkki %d %s:n exportstr:ssä" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "ei =:ä kohteen %s exportstr:ssä" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variablesin alku ei ole funktiokonteksti" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ei global_variables-kontekstia" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ei voida avata: %s" -#: variables.c:5262 +#: variables.c:5624 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: virheellinen tiedostokahva: %s" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s rajojen ulkopuolella" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Copyright © 2009 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2018,11 +2149,6 @@ msgstr "Tämä on vapaa ohjelma; saat muutella ja levittää sitä vapaasti.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Takuuta ei ole lain määräämissä rajoissa.\n" -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright © 2009 Free Software Foundation, Inc." - #: xmalloc.c:91 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2043,15 +2169,15 @@ msgstr "xmalloc: %s:%d: ei voida varata %lu tavua (varattiin %lu tavua)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "xmalloc: %s:%d: ei voida varata %lu tavua" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [nimi[=arvo] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nimi [nimi ...]" -#: builtins.c:51 +#: builtins.c:53 #, fuzzy msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" @@ -2061,116 +2187,104 @@ msgstr "" "näppäinsarja] [-x näppäinsarja:komento] [näppäinsarja:readline-funktio tai " "readline-komento]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [sisäänrakennettu komento [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [expr]" -#: builtins.c:64 +#: builtins.c:66 #, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|-P] [dir]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] komento [arg ...]" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFilrtux] [-p] [niemi[=arvo] ...]" -#: builtins.c:78 +#: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "typeset [-aAfFilrtux] [-p] nimi[=arvo] ..." -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [valitsin] nimi[=arvo] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f tiedosto] [nimi ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts valitsinmerkit nimi [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a nimi] [komento [argumentit ...]] [uudelleenohjaus ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "lopetus [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e e-nimi] [-lnr] [ensimmäinen] [viimeinen] tai fc -s [pat=rep] [komento]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [työtunniste]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [työtunniste ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p polku] [-dt] [nimi ...]" -#: builtins.c:117 +#: builtins.c:119 #, fuzzy msgid "help [-dms] [pattern ...]" msgstr "help [-ds] [malline ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2178,15 +2292,16 @@ msgstr "" "history [-c] [-d erotus] [n] tai history -anrw [tiedosto] or history -ps arg " "[arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [työtunniste ...] tai jobs -x komento [args]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [työtunniste ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2194,11 +2309,11 @@ msgstr "" "kill [-s signaalitunniste | -n signaalinumero | -signaalimäärite] prosessi-" "id | työtunniste ... tai kill -l [signaalimäärite]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 #, fuzzy msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " @@ -2207,105 +2322,101 @@ msgstr "" "read [-ers] [-a taulukko] [-d erotin] [-i teksti] [-n lkm] [-p kehote] [-t " "aikakatkaisu] [-u tiedostokahva] [nimi ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 #, fuzzy msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o valitsinnimi] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nimi ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [nimi[=arvo] ...] tai export -p" -#: builtins.c:146 +#: builtins.c:148 #, fuzzy msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-af] [nimi[=arvo] ...] tai readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source tiedosto [argumentit]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". tiedosto [argumentit]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [lauseke]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] signaalimäärite ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nimi [nimi ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [raja]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [tila]" -#: builtins.c:175 +#: builtins.c:177 #, fuzzy msgid "wait [-n] [id ...]" msgstr "wait [id]" -#: builtins.c:179 +#: builtins.c:181 #, fuzzy msgid "wait [pid ...]" msgstr "wait [id]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NIMI [in ARVOT ... ] ; do KOMENNOT; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( lause1; lause2; lause3 )); do KOMENNOT; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NIMI [in ARVOT ... ;] do KOMENNOT; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] komentoputki" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case SANA in [MALLINE [| MALLINE]...) KOMENNOT ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2313,63 +2424,63 @@ msgstr "" "if KOMENNOT; then KOMENNOT; [ elif KOMENNOT; then KOMENNOT; ]... [ else " "KOMENNOT; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while KOMENNOT; do KOMENNOT; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until KOMENNOT; do KOMENNOT; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NIMI] komento [uudelleenohjaukset]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function nimi { KOMENNOT ; } tai nimi () { KOMENNOT ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ KOMENNOT ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "työtunniste [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( lauseke ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ lauseke ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "muuttujat - eräiden komentotulkin muuttujien nimet ja merkitykset" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | hakemisto]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [valitsinnimi ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v muuttuja] muoto [argumentit]" -#: builtins.c:229 +#: builtins.c:231 #, fuzzy msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" @@ -2380,29 +2491,31 @@ msgstr "" "jokerimalline] [-W sanalista] [-F funktio] [-C komento] [-X " "suodatinmalline] [-P prefiksi] [-S suffiksi] [nimi...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o valitsin] [-A toimenpide] [-G jokerimalline] [-" "W sanalista] [-F funktio] [-C komento] [-X suodatinmalline] [-P prefiksi] [-" "S suffiksi] [sana]" -#: builtins.c:237 +#: builtins.c:239 #, fuzzy msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o valitsin] [nimi ...]" -#: builtins.c:240 +#: builtins.c:242 +#, fuzzy msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "mapfile [-n lukumäärä] [-O alkuperä] [-s laskuri] [-t] [-u tiedostokahva] \n" "[-C paluukutsu] [-c määrä] [taulukko]" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2411,7 +2524,8 @@ msgstr "" "tiedostokahva] \n" "[-C paluukutsu] [-c määrä] [taulukko]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2423,7 +2537,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2447,12 +2561,13 @@ msgstr "" " alias palauttaa arvon tosi, mikäli parametriksi on annettu NIMI jonka\n" " aliasta ei ole määritelty." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2464,7 +2579,7 @@ msgstr "" " Palauttaa arvon tosi paitsi jos NIMI-nimistä aliasta\n" " ei ole." -#: builtins.c:289 +#: builtins.c:291 #, fuzzy msgid "" "Set Readline key bindings and variables.\n" @@ -2499,7 +2614,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2543,7 +2659,7 @@ msgstr "" "tapahtuu \n" " virhe." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2561,7 +2677,7 @@ msgstr "" " Paluuarvo:\n" " Paluuarvo on 0 jollei N ole suurempi tai yhtäsuuri kuin 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2579,7 +2695,7 @@ msgstr "" " Paluuarvo:\n" " Paluuarvo on 0 ellei N ole suurempi tai yhtäsuuri kuin 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2602,7 +2718,7 @@ msgstr "" " Palauttaa KOMENNON paluuarvon, tai epätoden jos KOMENTO ei ole\n" " sisäänrakennettu komento." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2631,7 +2747,7 @@ msgstr "" " Palauttaa 0 ellei komentotulkki ole funktion ulkopuolella tai parametri\n" " on virheellinen." -#: builtins.c:385 +#: builtins.c:387 #, fuzzy msgid "" "Change the shell working directory.\n" @@ -2655,16 +2771,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2703,13 +2819,14 @@ msgstr "" " Palauttaa 0, jos hakemistoa vaihdettiin, nollasta poikkeavan muussa \n" " tapauksessa." -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2731,7 +2848,7 @@ msgstr "" " Palauttaa 0 ellei ole annettu virheellistä valitsinta tai nykyistä \n" " hakemistoa ei voida lukea." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2747,7 +2864,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu aina." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2759,7 +2876,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu aina." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2771,7 +2888,8 @@ msgstr "" " Paluuarvo:\n" " Epäonnistuu aina." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2781,10 +2899,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2806,7 +2924,7 @@ msgstr "" " Palauttaa KOMENNON paluuarvon, tai epäonnistumisen jos KOMENTOA ei \n" " löytynyt." -#: builtins.c:487 +#: builtins.c:490 #, fuzzy msgid "" "Set variable values and attributes.\n" @@ -2817,9 +2935,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2882,17 +3000,18 @@ msgstr "" "tule \n" " virhetilannetta." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Asettaa muuttujien arvoja ja attribuutteja.\n" " \n" " Vanhentunut. Katso â€help declareâ€." -#: builtins.c:535 +#: builtins.c:538 #, fuzzy msgid "" "Define local variables.\n" @@ -2920,7 +3039,7 @@ msgstr "" " Palauttaa onnistuneen, ellei ole annettu virheellistä valitsinta,\n" " tapahtuu virhe tai komentotulkki ei ole suorittamassa funktiota." -#: builtins.c:552 +#: builtins.c:555 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2947,9 +3066,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2983,7 +3102,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei tapahdu virhettä." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3005,7 +3124,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei tapahdu virhettä." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3059,7 +3178,7 @@ msgstr "" "sisäänrakennettu\n" " komento tai tapahtuu virhe." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3078,7 +3197,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa komennon paluuarvon tai onnistuneen jos komento on tyhjä." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3158,7 +3277,8 @@ msgstr "" "valitsimet\n" " loppuvat tai tapahtuu virhe." -#: builtins.c:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3169,8 +3289,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3200,7 +3320,7 @@ msgstr "" "uudelleenohjauksessa\n" " tapahtuu virhe." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3212,7 +3332,7 @@ msgstr "" " Poistuu komentotulkista paluuarvolla N. Jos N:ää ei anneta, paluuarvo\n" " on viimeisen komennon paluuarvo." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3225,7 +3345,7 @@ msgstr "" " Poistuu sisäänkirjautumiskomentotulkista paluuarvolla N. Palauttaa\n" " virheen jos ei olla sisäänkirjautumiskomentotulkissa." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3279,7 +3399,7 @@ msgstr "" " Palauttaa onnistuneen tai suoritetun komennon paluuarvon; nollasta\n" " poikkeava virhetilanteessa." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3300,7 +3420,7 @@ msgstr "" " Paluuarvo:\n" " Edustalle tuodun työn paluuarvo, tai epäonnistuminen virhetilanteessa." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3326,7 +3446,7 @@ msgstr "" "tapahtuu\n" " virhe." -#: builtins.c:784 +#: builtins.c:787 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3336,15 +3456,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3372,7 +3492,8 @@ msgstr "" " Palauttaa onnistuneen paitsi jos NIMEÄ ei löydy tai on annettu " "virheellinen valitsin." -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3384,7 +3505,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3413,7 +3534,8 @@ msgstr "" " Palauttaa onnistuneen paitsi jos MALLINETTA ei löydy tai valitsin on\n" " virheellinen." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3422,23 +3544,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3478,7 +3600,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin " "tai tapahtuu virhe." -#: builtins.c:869 +#: builtins.c:872 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3489,7 +3611,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3523,7 +3645,8 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" " tapahtuu virhe. Jos -x:ää on käytetty, palauttaa KOMENNON paluuarvon." -#: builtins.c:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3533,7 +3656,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3555,7 +3678,8 @@ msgstr "" " Palauttaa onnistuneen paitsi jos jokin valitsin tai TYÖTUNNISTE on " "virheellinen." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3567,7 +3691,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3597,7 +3722,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai " "tapahtuu virhe." -#: builtins.c:938 +#: builtins.c:942 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3686,7 +3811,7 @@ msgstr "" " Jos viimeinen ARGUMENTTI evaluoituu nollaksi, let palauttaa 1, muussa\n" " tapauksessa 0." -#: builtins.c:983 +#: builtins.c:987 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3708,27 +3833,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3776,7 +3902,7 @@ msgstr "" " Paluuarvo on nolla, ellei törmätä tiedoston loppumiseen, aikarajan\n" " ylitykseen tai mikäli -u:lle annetaan virheellinen tiedostokahva." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3800,7 +3926,7 @@ msgstr "" "suorittamassa\n" " funktiota tai skriptiä." -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3869,7 +3995,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3970,7 +4097,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistumisen ellei ole annettu virheellistä valitsinta." -#: builtins.c:1126 +#: builtins.c:1132 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -3981,7 +4108,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4009,7 +4136,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on kirjoitussuojattu." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4043,7 +4170,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on virheellinen." -#: builtins.c:1167 +#: builtins.c:1173 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4056,9 +4183,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4083,7 +4209,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on virheellinen." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4102,7 +4228,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei N ole negatiivinen tai suurempi kuin $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4127,7 +4253,7 @@ msgstr "" "epäonnistuu\n" " mikäli TIEDOSTOA ei voida lukea." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4154,7 +4280,7 @@ msgstr "" "tapahtuu\n" " virhe." -#: builtins.c:1248 +#: builtins.c:1254 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4219,9 +4345,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4317,7 +4443,7 @@ msgstr "" " Palauttaa onnistumisen jos LAUSEKE evaluoituu todeksi; epäonnistuu jos\n" " LAUSEKE evaluoituu vääräksi tai on annettu virheellinen argumentti." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4329,7 +4455,7 @@ msgstr "" " Tämä on sisäänrakennetun â€testâ€-komennon synonyymi, mutta viimeisen\n" " argumentin pitää olla â€]â€, joka sulkee avaavan â€[â€:n." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4349,7 +4475,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu aina." -#: builtins.c:1350 +#: builtins.c:1357 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4431,7 +4557,8 @@ msgstr "" "annettu\n" " virheellinen valitsin." -#: builtins.c:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -4440,18 +4567,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4487,7 +4614,7 @@ msgstr "" " Palauttaa onnistuneen mikäli kaikki NIMET löytyivät, muussa tapauksessa\n" " epäonnistuu." -#: builtins.c:1417 +#: builtins.c:1424 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4506,6 +4633,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4517,7 +4645,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4576,7 +4705,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai tapahtuu virhe." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4611,7 +4740,7 @@ msgstr "" " Palauttaa onnistuneen ellei TILA ole virheellinen tai on annettu \n" " virheellinen valitsin." -#: builtins.c:1485 +#: builtins.c:1494 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4645,7 +4774,7 @@ msgstr "" " Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" " virheellinen valitsin." -#: builtins.c:1506 +#: builtins.c:1515 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4671,7 +4800,7 @@ msgstr "" " Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" " virheellinen valitsin." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4693,7 +4822,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4725,7 +4854,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4762,7 +4891,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4791,7 +4920,7 @@ msgstr "" " Paluuarvo:\n" " KOMENTOKETJUN paluuarvo." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4810,7 +4939,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4844,7 +4973,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4862,7 +4991,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen komennon paluuarvo." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4880,7 +5009,8 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4890,7 +5020,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Luo NIMI-nimisen rinnakkaisprosessin.\n" " \n" @@ -4902,7 +5032,7 @@ msgstr "" " Paluuarvo:\n" " KOMENNON paluuarvo." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4925,7 +5055,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu, ellei NIMI ole kirjoitussuojattu." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4944,7 +5074,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4970,7 +5100,7 @@ msgstr "" " Paluuarvo:\n" " Työn tila." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4988,7 +5118,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa 1, jos LAUSEKKEEN arvo on 0; muuten palauttaa 0." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5042,7 +5172,7 @@ msgstr "" " Paluuarvo:\n" " 0 tai 1 riippuen LAUSEKKEEN arvosta." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5145,7 +5275,8 @@ msgstr "" " HISTIGNORE\tKaksoispistein eroteltu lista mallineista, joita käytetään\n" " \t\tpäätettäessä komentojen tallentamisesta historialistaan.\n" -#: builtins.c:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -5155,19 +5286,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5203,7 +5334,8 @@ msgstr "" "tai\n" " hakemiston vaihtaminen epäonnistuu." -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -5212,16 +5344,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5250,7 +5382,8 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen argumentti tai\n" " hakemiston vaihto epäonnistuu." -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -5261,19 +5394,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5304,7 +5437,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai tapahtuu virhe." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5342,7 +5475,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:1908 +#: builtins.c:1919 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5360,15 +5493,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5402,7 +5535,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " tapahtuu kirjoitus- tai sijoitusvirhe." -#: builtins.c:1942 +#: builtins.c:1953 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5416,11 +5549,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5450,7 +5583,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" " tapahtuu virhe." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5473,7 +5606,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " tapahtuu virhe." -#: builtins.c:1985 +#: builtins.c:1996 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5527,7 +5660,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " NIMELLE ei ole määritetty täydennysmääritystä." -#: builtins.c:2015 +#: builtins.c:2026 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5539,20 +5672,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5600,7 +5734,7 @@ msgstr "" " tai TAULUKKO on kirjoitussuojattu." # Changed " characters into â€... -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5610,6 +5744,26 @@ msgstr "" " \n" " â€mapfileâ€:n synonyymi." +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2009 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#, fuzzy +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2009 Free Software Foundation, Inc." + #, fuzzy #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Copyright © 2009 Free Software Foundation, Inc." diff --git a/po/fr.gmo b/po/fr.gmo index 95c30ea07cd68d73b020f4aca8230db2030850c3..7c7a736f1091506349a9c513c693a656556d946c 100644 GIT binary patch delta 56874 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 OqBc<<93GMtv3~(uajD4w delta 19800 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, 2004 # Christophe Combelles , 2008, 2009, 2010, 2011 -# +# Frédéric Marchal , 2015 msgid "" msgstr "" -"Project-Id-Version: bash-4.2\n" +"Project-Id-Version: bash-4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2012-07-07 21:52+0100\n" -"Last-Translator: Christophe Combelles \n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-17 13:49+0200\n" +"Last-Translator: Frédéric Marchal \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:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "mauvais indice de tableau" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s : impossible de convertir un tableau indexé en associatif" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s : clé non valable pour le tableau associatif" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s : impossible d'assigner à un index non numérique" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s : %s : l'assignation d'un tableau associatif doit se faire avec un indice" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s : impossible de créer : %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command : impossible de trouver le mappage clavier pour la " "commande" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s : le premier caractère non vide n'est pas « \" »" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "pas de « %c » de fermeture dans %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s : virgule de séparation manquante" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "expansion des accolades : impossible d'allouer la mémoire pour %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" +"expansion des accolades : échec lors de l'allocation mémoire pour %d éléments" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "expansion des accolades : échec de l'allocation mémoire pour « %s »" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "« %s » : nom d'alias non valable" @@ -93,45 +100,45 @@ msgstr "« %s » : nom d'alias non valable" msgid "line editing not enabled" msgstr "édition de ligne non activée" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "« %s » : nom du mappage clavier invalide" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s : impossible de lire : %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" -msgstr "%s : impossible à délier" +msgstr "« %s » : impossible à délier" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" -msgstr "%s : nom de fonction inconnu" +msgstr "« %s » : nom de fonction inconnu" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s n'est lié à aucune touche.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s peut être appelé via " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "nombre de boucles" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "ceci n'a un sens que dans une boucle « for », « while » ou « until »" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -141,306 +148,335 @@ msgstr "" " \n" " Sans EXPR, renvoie" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "« HOME » non défini" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "trop d'arguments" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "de répertoire se fait vers le nouveau répertoire supérieur." + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "« OLDPWD » non défini" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "ligne %d : " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "avertissement :" -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s : utilisation :" -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s : l'option nécessite un argument" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s : argument numérique nécessaire" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s : non trouvé" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s : option non valable" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s : nom d'option non valable" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "« %s » : identifiant non valable" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "nombre octal non valable" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "nombre hexadécimal non valable" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "nombre non valable" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s : indication de signal non valable" -#: builtins/common.c:257 +#: builtins/common.c:265 #, 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" +"« %s » : ce n'est pas un n° de processus ou une spécification de tâche valable" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s : variable en lecture seule" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s : %s hors plage" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s hors plage" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s : tâche inexistante" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s : pas de contrôle de tâche" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "pas de contrôle de tâche" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s : restreint" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "restreint" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s : ceci n'est pas une primitive du shell" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "erreur d'écriture : %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" -msgstr "erreur lors de la définition de l'attribut du terminal %s" +msgstr "erreur lors de la définition de l'attribut du terminal : %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "erreur lors de la récupération de l'attribut du terminal : %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s : erreur de détermination du répertoire actuel : %s : %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s : spécification de tâche ambiguë" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "l'aide n'est pas disponible dans cette version" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s : nom d'action non valable" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s : pas d'indication de complètement" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "" "avertissement : l'option « -F » peut fonctionner différemment de ce à quoi " "vous vous attendez" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "" "avertissement : l'option « -C » peut fonctionner différemment de ce à quoi " "vous vous attendez" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" -msgstr "fonction de completion actuellement non en cours d'exécution" +msgstr "fonction de complétion actuellement non en cours d'exécution" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "utilisable seulement dans une fonction" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s : la variable de référence ne peut pas être un tableau" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s : références bouclées sur la même variable interdites" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s : référence de nom circulaire" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s : nom de variable invalide pour une référence de nom" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s : fonction en lecture seule" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" +"%s : l'assignation d'un tableau composé entre apostrophes est dépréciée" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s : impossible de convertir un tableau indexé en tableau associatif" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "chargement dynamique non disponible" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "impossible d'ouvrir l'objet partagé %s : %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "impossible de trouver %s dans l'objet partagé %s : %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "la fonction de chargement de %s retourne un échec (%d) : pas chargé" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s : non chargé dynamiquement" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s : impossible d'effacer : %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s : ceci est un répertoire" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s : ceci n'est pas un fichier régulier" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s : le fichier est trop grand" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" -msgstr "%s : fichier binaire impossible à lancer" +msgstr "%s : ne peut exécuter le fichier binaire" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s : impossible d'exécuter : %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "déconnexion\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "ce n'est pas un shell de connexion : utilisez « exit »" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Il y a des tâches stoppées.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Il y a des tâches en cours d'exécution.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "aucune commande trouvée" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "indication d'historique" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s : impossible d'ouvrir le fichier temporaire : %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "courant" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "tâche %d démarrée sans contrôle de tâche" @@ -459,37 +495,37 @@ msgstr "%s : l'option nécessite un argument -- %c\n" msgid "hashing disabled" msgstr "hachage désactivé" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s : table de hachage vide\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" -msgstr "touche la commande\n" +msgstr "occurrences\tcommande\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Commandes du shell correspondant au mot-clé « " msgstr[1] "Commandes du shell correspondant aux mots-clés « " -#: builtins/help.def:182 +#: builtins/help.def:187 #, 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 »." +"Aucune rubrique d'aide ne correspond à « %s ». Essayez « help help », « man -k %" +"s » ou « info %s »." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s : impossible d'ouvrir : %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -502,8 +538,7 @@ msgid "" msgstr "" "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" +"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" "ne font pas partie de cette liste.\n" @@ -511,15 +546,20 @@ msgstr "" "Une astérisque (*) à côté d'un nom signifie que la commande est désactivée.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "impossible d'utiliser plus d'une option parmi « -anrw »" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "position dans l'historique" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s : argument non valable" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s : l'expansion de l'historique a échoué" @@ -533,114 +573,114 @@ msgstr "%s : « inlib » a échoué" msgid "no other options allowed with `-x'" msgstr "pas d'autre option permise avec « -x »" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" "%s : les arguments doivent être des identifiants de tâche ou de processus" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Erreur inconnue" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "une expression est attendue" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s : n'est pas un tableau indexé" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s : spécification de descripteur de fichier non valable" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d : descripteur de fichier non valable : %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s : nombre de lignes non valable" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s : origine de tableau non valable" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s : quantum de callback non valable" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "nom de variable tableau vide" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "nécessité de prise en charge des variables tableaux" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "« %s » : caractère de format manquant" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" -msgstr "`%c' : spécification de format d'heure incorrecte" +msgstr "« %c » : spécification de format d'heure incorrecte" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "« %c » : caractère de format non permis" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "avertissement : %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "problème d'analyse du format : %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "chiffre hexadécimal manquant pour \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "chiffre unicode manquant pour \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "pas d'autre répertoire" -#: builtins/pushd.def:354 -#, fuzzy, c-format +#: builtins/pushd.def:360 +#, c-format msgid "%s: invalid argument" -msgstr "%s : argument de limite non valable" +msgstr "%s : argument non valable" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "pile de répertoire vide" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "indice de pile de répertoire" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -670,22 +710,20 @@ msgstr "" " \n" " Options :\n" " -c\tefface la pile des répertoires en enlevant tous les éléments.\n" -" -l\tne pas afficher les versions raccourcies (avec ~) des répertoires\n" +" -l\tn'affiche pas les versions raccourcies (avec ~) des répertoires\n" " \trelativement à votre répertoire personnel\n" -" -p\tafficher la pile des répertoires avec un élément par ligne\n" -" -v\tafficher la pile des répertoires avec un élément par ligne\n" +" -p\taffiche la pile des répertoires avec un élément par ligne\n" +" -v\taffiche la pile des répertoires avec un élément par ligne préfixé\n" " \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\tAffiche 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\tAffiche le Nième élément en comptant de zéro depuis la droite de la\n" " liste affichée par « dirs » lorsque celle-ci est appelée sans option." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -715,25 +753,23 @@ msgstr "" " répertoires en haut de la pile sont échangés.\n" " \n" " Options :\n" -" -n\tne pas changer de répertoire de travail lorsque des répertoires\n" +" -n\tNe change pas de répertoire de travail lorsque des répertoires\n" " \tsont ajoutés à la pile, de façon que seule la pile soit manipulée\n" " \n" " Arguments :\n" " +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 gauche de la liste fournie par « dirs " -"».\n" +" \ten comptant de zéro depuis la gauche de la liste fournie par « dirs ».\n" " \n" " -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" +" \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 " +" 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:736 +#: builtins/pushd.def:743 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" @@ -758,163 +794,173 @@ msgstr "" " et le nouveau sommet de la pile devient le répertoire de travail.\n" " \n" " Options :\n" -" -n\tne pas changer de répertoire de travail lorsque des répertoires\n" -" \tsont enlevés de la pile, de façon que seule la pile soit manipulée\n" +" -n\tNe change pas de répertoire de travail lorsque des répertoires\n" +" \tsont enlevés de la pile, de façon que seule la pile soit manipulée.\n" " \n" " Arguments :\n" " +N\tEnlève le Nième répertoire, en comptant de zéro depuis la gauche\n" " \tde la liste fournie par « dirs ». Par exemple : « popd +0 »\n" -" \tenlève le premier répertoire, « popd +1 » le deuxième. \n" +" \tenlève le premier répertoire, « popd +1 » le deuxième.\n" " \n" " -N\tEnlève le Nième répertoire, en comptant de zéro depuis la droite\n" " \tde la liste fournie par « dirs ». Par exemple : « popd -0 »\n" -" \tenlève le dernier répertoire, « popd -1 » l'avant-dernier. \n" +" \tenlève le dernier répertoire, « popd -1 » l'avant-dernier.\n" " \n" " Vous pouvez voir la pile des répertoires avec la commande « dirs »." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s : spécification de délai d'expiration non valable" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" -msgstr "Erreur de lecture : %d : %s" +msgstr "erreur de lecture : %d : %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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 »" +"« return » n'est possible que depuis une fonction ou depuis un script exécuté " +"par « source »" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "" "« unset » ne peut pas s'appliquer simultanément à une fonction et à une " "variable" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s : « unset » impossible" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s : « unset » impossible : %s est en lecture seule" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s : n'est pas une variable tableau" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s : n'est pas une fonction" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s : impossible d'exporter" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "nombre de « shift »" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "" "les options du shell ne peuvent pas être simultanément activées et " "désactivées" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s : nom d'option du shell non valable" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "nom de fichier nécessaire en argument" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s : fichier introuvable" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "suspension impossible" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "un shell de connexion ne peut pas être suspendu" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s est un alias vers « %s »\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s est un mot-clé du shell\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s est une fonction\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s est une primitive spéciale du shell\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s est une primitive du shell\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s est %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s est haché (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s : argument de limite non valable" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "« %c » : mauvaise commande" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s : impossible d'obtenir la limite : %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s : impossible de modifier la limite : %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "nombre octal" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "« %c » : opérateur de mode symbolique non valable" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "« %c » : caractère de mode symbolique non valable" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " ligne " @@ -926,85 +972,109 @@ msgstr "dernière commande : %s\n" #: error.c:173 #, c-format msgid "Aborting..." -msgstr "Annulation..." +msgstr "Annulation…" -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:463 msgid "unknown command error" msgstr "erreur de commande inconnue" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "mauvais type de commande" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "mauvais connecteur" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "mauvais saut" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s : variable sans liaison" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT : « %c » : caractère de format non valable" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "erreur de tube" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" +"eval : dépassement de la profondeur maximum d'imbrication d'évaluations (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" +"%s : dépassement de la profondeur maximum d'imbrication de sources (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" +"%s : dépassement de la profondeur maximum d'imbrication de fonctions (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s : restriction : « / » ne peut pas être spécifié dans un nom de commande" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s : commande introuvable" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s : %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s : %s : mauvais interpréteur" -#: execute_cmd.c:5280 -#, fuzzy, c-format +#: execute_cmd.c:5545 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s : fichier binaire impossible à lancer" +msgstr "%s : impossible d'exécuter le fichier binaire : %s" -#: execute_cmd.c:5352 -#, fuzzy, c-format +#: execute_cmd.c:5623 +#, c-format msgid "`%s': is a special builtin" -msgstr "%s est une primitive du shell\n" +msgstr "« %s » : est une primitive spéciale" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossible de dupliquer le fd %d vers le fd %d" @@ -1035,7 +1105,7 @@ msgstr "bogue : mauvais symbole pour expassign" #: expr.c:595 msgid "`:' expected for conditional expression" -msgstr "« : » attendu pour une expression conditionnelle." +msgstr "« : » attendu pour une expression conditionnelle" #: expr.c:919 msgid "exponent less than 0" @@ -1049,40 +1119,40 @@ msgstr "identifiant attendu après un pré-incrément ou un pré-décrément" msgid "missing `)'" msgstr "« ) » manquante" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" -msgstr "erreur de syntaxe : opérande attendue" +msgstr "erreur de syntaxe : opérande attendu" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "erreur de syntaxe : opérateur arithmétique non valable" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s : %s (le symbole erroné est \"%s\")" +msgstr "%s%s%s : %s (le symbole erroné est « %s »)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "base arithmétique non valable" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "valeur trop grande pour la base" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s : erreur d'expression\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd : ne peut accéder aux répertoires parents" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "Impossible de réinitialiser le mode « nodelay » pour le fd %d" +msgstr "impossible de réinitialiser le mode « nodelay » pour le fd %d" #: input.c:271 #, c-format @@ -1096,148 +1166,148 @@ msgstr "" 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:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline : pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, 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:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process : processus %5ld (%s) dans le_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process : pid %5ld (%s) signalé toujours en vie" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid : %ld : n° de processus inexistant" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Fini" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Stoppé" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Stoppé(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "En cours d'exécution" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Fini(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Termine %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "État inconnu" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(core dumped)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd : %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "fils setpgid (%ld à %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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." +msgstr "wait : le processus n°%ld n'est pas un fils de ce shell" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" -msgstr "wait_for : aucun enregistrement du processus n°%ld" +msgstr "wait_for : Aucun enregistrement du processus n°%ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job : la tâche %d est stoppée" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s : la tâche s'est terminée" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s : la tâche %d est déjà en arrière plan" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld : activation de WNOHANG pour éviter un blocage définitif" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s : ligne %d : " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(maintenant, wd : %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control : getpgrp a échoué" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control : discipline de ligne" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control : setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "impossible de régler le groupe de processus du terminlal (%d)" +msgstr "impossible de régler le groupe de processus du terminal (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "pas de contrôle de tâche dans ce shell" @@ -1292,17 +1362,17 @@ msgid "realloc: start and end chunk sizes differ" msgstr "" "realloc : les tailles de fragment au début et à la fin sont différentes" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free : %p déjà libre selon la table ?\n" @@ -1326,7 +1396,7 @@ msgstr "%s: service non valable" msgid "%s: bad network path specification" msgstr "%s : mauvaise spécification de chemin réseau" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "opérations sur le réseau non prises en charge" @@ -1363,237 +1433,270 @@ msgstr "Vous avez du nouveau courrier dans $_" #: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" -msgstr "Le courrier dans %s a été lu.\n" +msgstr "Le courrier dans %s a été lu\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "erreur de syntaxe : expression arithmétique nécessaire" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "erreur de syntaxe : « ; » non attendu" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "erreur de syntaxe : « ((%s)) »" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document : le type d'instruction %d est incorrect" -#: make_cmd.c:662 +#: make_cmd.c:669 #, 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 »)" +"« here-document » à la ligne %d délimité par la fin du fichier (au lieu de « %" +"s »)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection : l'instruction de redirection « %d » est hors plage" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "nombre maximum de documents en ligne (« here-document ») dépassé" + +#: parse.y:3390 parse.y:3748 #, 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" +"fin de fichier (EOF) prématurée lors de la recherche du « %c » correspondant" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" -msgstr "" -"caractère de fin de fichier (EOF) prématuré lors de la recherche de « ]] »" +msgstr "fin de fichier (EOF) prématurée lors de la recherche de « ]] »" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "erreur de syntaxe dans une expression conditionnelle : symbole « %s » " "inattendu" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "erreur de syntaxe dans une expression conditionnelle" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "symbole inattendu « %s » au lieu de « ) »" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "« ) » attendu" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argument inattendu « %s » pour l'opérateur conditionnel à un argument" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "argument inattendu pour l'opérateur conditionnel à un argument" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "symbole « %s » trouvé à la place d'un opérateur binaire conditionnel" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "opérateur binaire conditionnel attendu" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argument « %s » inattendu pour l'opérateur binaire conditionnel" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "argument inattendu pour l'opérateur binaire conditionnel" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "symbole « %c » inattendu dans la commande conditionnelle" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "symbole « %s » inattendu dans la commande conditionnelle" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "symbole « %d » inattendu dans la commande conditionnelle" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erreur de syntaxe près du symbole inattendu « %s »" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "erreur de syntaxe près de « %s »" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "erreur de syntaxe : fin de fichier prématurée" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "erreur de syntaxe" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Utilisez « %s » pour quitter le shell.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "" -"caractère de fin de fichier (EOF) prématuré lors de la recherche d'un « ) » " -"correspondant" +"fin de fichier (EOF) prématurée lors de la recherche d'une « ) » " +"correspondante" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "complètement : fonction « %s » non trouvée" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert : %s : NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command : mauvais connecteur « %d »" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set : %d : descripteur de fichier non valable" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set : pointeur de fichier NULL" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf : « %c » : caractère de format invalide" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "descripteur de fichier hors plage" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s : redirection ambiguë" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s : impossible d'écraser le fichier existant" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s : restreint : impossible de rediriger la sortie" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" "impossible de créer un fichier temporaire pour le « here-document » : %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s : impossible d'affecter le descripteur de fichier à la variable" -#: redir.c:582 +#: redir.c:586 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:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "" "erreur de redirection : impossible de dupliquer le descripteur de fichier" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "« /tmp » introuvable, veuillez le créer !" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" -msgstr "« /tmp » doit être un nom de répertoire correct" +msgstr "« /tmp » doit être un nom de répertoire valable" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c : option non valable" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "impossible de changer le uid en %d : uid effectif %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "impossible de changer le gid en %d: gid effectif %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s : Ceci est un répertoire" + +#: shell.c:1777 msgid "I have no name!" msgstr "Je n'ai pas de nom !" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1602,46 +1705,57 @@ msgstr "" "Utilisation :\t%s [option longue GNU] [option] ...\n" "\t%s [option longue GNU] [option] fichier-script ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Options longues GNU :\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Options du shell :\n" -#: shell.c:1835 -#, fuzzy +#: shell.c:1938 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" +msgstr "\t-ilrsD ou -c commande ou -O shopt_option\t\t(invocation seulement)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o option\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Pour en savoir plus sur les options du shell, saisissez « %s -c \"help set\" " "».\n" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Pour en savoir plus sur les primitives du shell, saisissez « %s -c help ».\n" -#: shell.c:1858 +#: shell.c:1961 #, 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:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "page d'accueil de bash : \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Aide générale sur l'utilisation de logiciels GNU : \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" -msgstr "sigprocmask : %d : operation non valable" +msgstr "sigprocmask : %d : opération non valable" #: siglist.c:48 msgid "Bogus signal" @@ -1745,7 +1859,7 @@ msgstr "Limite fichier" #: siglist.c:159 msgid "Alarm (virtual)" -msgstr "Alarme (virtual)" +msgstr "Alarme (virtuelle)" #: siglist.c:163 msgid "Alarm (profile)" @@ -1785,7 +1899,7 @@ msgstr "migration processus vers un autre CPU" #: siglist.c:199 msgid "programming error" -msgstr "Erreur de programmation" +msgstr "erreur de programmation" #: siglist.c:203 msgid "HFT monitor mode granted" @@ -1812,91 +1926,106 @@ msgstr "N° de signal inconnu" msgid "Unknown Signal #%d" msgstr "Signal n°%d inconnu" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s : impossible d'affecter une liste à un élément de tableau" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "impossible de fabriquer un tube pour une substitution de processus" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "impossible de fabriquer un fils pour une substitution de processus" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossible d'ouvrir le tube nommé « %s » en lecture" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossible d'ouvrir le tube nommé « %s » en écriture" -#: subst.c:5178 +#: subst.c:5873 #, 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:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "impossible de fabriquer un tube pour une substitution de commande" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "" "impossible de fabriquer un processus fils pour une substitution de commande" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute : impossible de dupliquer le tube vers le fd 1" -#: subst.c:5837 subst.c:8050 -#, fuzzy, c-format +#: subst.c:6580 subst.c:8939 +#, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace" +msgstr "%s : nom de variable invalide pour une référence de nom" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s : paramètre vide ou non défini" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s : expression de sous-chaîne négative" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s : mauvaise substitution" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s : expansion indirecte invalide" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: nom de variable invalide" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s : paramètre vide ou non défini" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s : expression de sous-chaîne négative" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s : affectation impossible de cette façon" -#: subst.c:7917 +#: subst.c:8802 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 " +"les versions futures du shell forceront l'évaluation comme une substitution " "arithmétique" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "Mauvais remplacement : pas de « ` » de fermeture dans %s" +msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "pas de correspondance : %s" @@ -1910,133 +2039,133 @@ msgstr "argument attendu" msgid "%s: integer expression expected" msgstr "%s : nombre entier attendu comme expression" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "« ) » attendue" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "« ) » attendu au lieu de %s" +msgstr "« ) » attendue au lieu de %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s : opérateur unaire attendu" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s : opérateur binaire attendu" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "« ] » manquant" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "numéro de signal non valable" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, 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" +"run_pending_traps : le gestionnaire de signal est SIG_DFL, renvoi de %d (%s) " +"à moi-même" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler : mauvais signal %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" -msgstr "erreur lors de l'import de la définition de fonction pour « %s »" +msgstr "erreur lors de l'importation de la définition de fonction pour « %s »" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "niveau de shell trop élevé (%d), initialisation à 1" -#: variables.c:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" "make_local_variable : aucun contexte de fonction dans le champ d'application " "actuel" -#: variables.c:2247 -#, fuzzy, c-format +#: variables.c:2432 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s : impossible d'affecter le descripteur de fichier à la variable" +msgstr "%s : la variable ne peut se voir assigner une valeur" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s : nom de variable invalide pour une référence de nom" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" "all_local_variables : aucun contexte de fonction dans le champ d'application " "actuel" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" -msgstr "%s a un « exportstr » vide" +msgstr "%s a un « exportstr » nul" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "caractère %d non valable dans « exportstr » pour %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" -msgstr "Pas de « = » dans « exportstr » pour %s" +msgstr "pas de « = » dans « exportstr » pour %s" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context : le début de « shell_variables » n'est pas un contexte de " "fonction" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context : aucun contexte à « global_variables »" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope : le début de « shell_variables » n'est pas un champ d'application " "temporaire d'environnement" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s : %s : impossible d'ouvrir comme FILE" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace" -#: variables.c:5307 -#, fuzzy, c-format +#: variables.c:5669 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s : %s hors plage" +msgstr "%s : %s : valeur de compatibilité hors plage" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2015 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2052,22 +2181,14 @@ msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, version %s (%s)\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" +"redistribuer." #: 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" - -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +msgstr "AUCUNE GARANTIE n'est fournie, dans les limites permises par la loi." #: xmalloc.c:91 #, c-format @@ -2089,132 +2210,117 @@ msgstr "%s : %s:%d : impossible d'allouer %lu octets (%lu octets alloués)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s : %s:%d : impossible d'allouer %lu octets" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [nom[=valeur] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nom [nom ...]" -#: builtins.c:51 -#, fuzzy +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -"bind [-lpvsPVS] [-m keymap] [-f nomfichier] [-q nom] [-u nom] [-r seqtouche] " -"[-x seqtouche:commande-shell] [seqtouche:fonction-readline ou commande-" -"readline]" +"bind [-lpvsPSVX] [-m keymap] [-f nomfichier] [-q nom] [-u nom] [-r " +"seqtouche] [-x seqtouche:commande-shell] [seqtouche:fonction-readline ou " +"commande-readline]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [shell-builtin [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [expr]" -#: builtins.c:64 -#, fuzzy -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|[-P [-e]]] [rép]" - #: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [rép]" + +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] commande [arg ...]" -#: builtins.c:76 -#, fuzzy -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrtux] [-p] [nom[=valeur] ...]" - #: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] nom[=valeur] ..." +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valeur] ...]" #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nom[=valeur] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [option] nom[=valeur] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f nomfichier] [nom ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts chaineopts nom [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a nom] [commande [arguments ...]] [redirection ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 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]" +"fc [-e ename] [-lnr] [premier] [dernier] ou fc -s [motif=nouveau] [commande]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [job_spec]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [job_spec ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p nomchemin] [-dt] [nom ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [motif ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2222,15 +2328,16 @@ msgstr "" "history [-c] [-d décalage] [n] ou history -anrw [nomfichier] ou history -ps " "arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] ou jobs -x commande [args]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [jobspec ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2238,115 +2345,107 @@ msgstr "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... ou kill -l " "[sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" -"read [-ers] [-a tableau] [-d delim] [-i texte] [-n nchars] [-N nchars] [-p " +"read [-ers] [-a tableau] [-d delim] [-i texte] [-n ncars] [-N ncars] [-p " "prompt] [-t timeout] [-u fd] [nom ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nom-option] [--] [arg ...]" -#: builtins.c:142 -#, fuzzy -msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [nom ...]" - #: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [nom ...]" + +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [nom[=valeur] ...] ou export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [nom[=valeur] ...] ou readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source nom_fichier [arguments]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". nom_fichier [arguments]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [expr]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] signal_spec ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nom [nom ...]" -#: builtins.c:169 -#, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHacdefilmnpqrstuvx] [limite]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" -#: builtins.c:175 -#, fuzzy +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "wait [id]" +msgstr "wait [-n] [id ...]" -#: builtins.c:179 -#, fuzzy +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [pid]" +msgstr "wait [pid ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NOM [in MOTS ... ] ; do COMMANDES; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( exp1; exp2; exp3 )); do COMMANDES; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NOM [in MOTS ... ;] do COMMANDES; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] pipeline" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case MOT in [MOTIF [| MOTIF]...) COMMANDES ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2354,63 +2453,63 @@ msgstr "" "if COMMANDES; then COMMANDES; [ elif COMMANDES; then COMMANDES; ]... [ else " "COMMANDES; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while COMMANDES; do COMMANDES; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until COMMANDES; do COMMANDES; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NOM] commande [redirections]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function nom { COMMANDES ; } ou nom () { COMMANDES ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ COMMANDES ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "job_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( expression ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ expression ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "variables - Nom et signification de certaines variables du shell" +msgstr "variables - Noms et significations de certaines variables du shell" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | rép]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [nom_opt ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [arguments]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2420,36 +2519,36 @@ msgstr "" "[-W liste_mots] [-F fonction] [-C commande] [-X motif_filtre] [-P prefixe] " "[-S suffixe] [nom ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G motif_glob] [-W " +"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 +#: builtins.c:239 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]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d délim] [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C " +"callback] [-c quantum] [tableau]" + +#: builtins.c:244 +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 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2461,7 +2560,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2470,41 +2569,41 @@ msgid "" msgstr "" "Définit ou affiche des alias.\n" " \n" -" Sans argument, « alias » affiche la liste des alias avec le format " +" Sans argument, « alias » affiche la liste des alias dans 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" -" suivant, lorsque l'alias est développé.\n" +" Une espace à la fin de la VALEUR entraîne la vérification du mot suivant " +"pour\n" +" déterminer si un alias doit être remplacé lorsque l'alias est " +"développé.\n" " \n" " Options :\n" -" -p\tAfficher tous les alias actuels dans un format réutilisable\n" +" -p\tAffiche 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" " pas d'alias." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Enlève chaque NOM de la liste des alias actuels.\n" " \n" " Options :\n" -" -a\tretire toutes les définitions d'alias.\n" +" -a\tretire toutes les définitions d'alias\n" " \n" " Renvoie le code de succès à moins que NOM ne soit pas un alias existant." -#: builtins.c:289 -#, fuzzy +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2538,7 +2637,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2546,20 +2646,20 @@ msgid "" 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 " +" Associe une séquence de touches à une fonction « Readline » ou une macro, " +"ou définit une\n" +" variable « Readline ». La syntaxe des arguments non-options est " "é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" +" \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" -" « emacs-ctlx », « vi », « vi-move », « vi-command » " -"et\n" +"valables\n" +" 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" @@ -2572,8 +2672,7 @@ msgstr "" " -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" +"utilisée comme entrée.\n" " -V Affiche les noms et valeurs des variables\n" " -v Affiche les noms et valeurs des variables dans une " "forme qui peut\n" @@ -2582,17 +2681,21 @@ msgstr "" "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" +" -r seqtouche Enlève l'association pour « seqtouche ».\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" -" \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." +" \t\t\t\tlorsque « seqtouche » est entrée.\n" +" -X Liste les séquences de touches liées à -x et les " +"commandes associées\n" +" sous une forme qui peut être réutilisée comme " +"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 survienne." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2611,7 +2714,7 @@ msgstr "" " Code de retour :\n" " Le code de retour est 0 à moins que N ne soit pas supérieur ou égal à 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2625,12 +2728,12 @@ msgstr "" " \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" +" Si N est précisé, reprend à la 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:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2658,7 +2761,7 @@ msgstr "" "n'est\n" " pas une commande intégrée.." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2689,8 +2792,7 @@ msgstr "" "fonction ou que EXPR\n" " ne soit pas valable." -#: builtins.c:385 -#, fuzzy +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2713,16 +2815,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2737,7 +2839,8 @@ 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" +" est donné par la variable « HOME » du shell.\n" +" \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 " @@ -2748,34 +2851,45 @@ msgstr "" " \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 " +" alors le mot est supposé être un 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 " +" -L\tforce le suivi des liens symboliques : résout les liens " +"symboliques dans\n" +" \t\tDIR après le traitement des instances de « .. »\n" +" -P\tutilise la structure physique des répertoires sans suivre les " +"liens\n" +" \t\tsymboliques : résout les liens symboliques dans DIR avant le " +"traitement des\n" +" \t\tinstances de « .. »\n" +" -e\tsi l'option -P est fournie et que le répertoire de travail actuel " +"ne peut pas\n" +" \t\têtre déterminé avec succès, alors sort avec un code de retour non " "nul\n" +" -@ sur les systèmes qui le supporte, présente un fichier avec des " +"attributs\n" +" \t\tétendus comme un répertoire contenant les attributs du fichier\n" " \n" " Le comportement par défaut est de suivre les liens symboliques, comme si " "« -L » était précisé.\n" +" « .. » est traité en retirant le composant immédiatement avant dans le " +"chemin jusqu'à\n" +" la barre oblique ou le début de DIR.\n" " \n" " Code de sortie :\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:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2787,19 +2901,17 @@ 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" -" \t\n" +" -L\taffiche la valeur de $PWD s'il nomme le répertoire de travail\n" +" \t\tcourant\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" -" courant ne peut pas être lu." +" Renvoie 0 à moins qu'une option non valable ne soit donnée ou que le\n" +" répertoire courant ne peut pas être lu." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2815,7 +2927,7 @@ msgstr "" " Code de retour :\n" " Renvoie toujours le code de succès." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2827,7 +2939,7 @@ msgstr "" " Code de retour :\n" " Succès." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2839,7 +2951,7 @@ msgstr "" " Code de sortie :\n" " Toujours l'échec." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2849,10 +2961,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2860,25 +2972,26 @@ 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" +"commande,\n" +" ou affiche des informations sur les COMMANDEs spécifiées. Ceci peut " +"être\n" +" utilisé pour invoquer des commandes sur le disque lorsqu'il y a conflit\n" +" 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 plus détaillées de chaque COMMANDE\n" +" -p utilise une valeur par défaut pour CHEMIN qui garantit de " +"trouver\n" +" tous les utilitaires standards\n" +" -v affiche une description de la COMMANDE similaire à la commande " +"intégrée\n" +" « type »\n" +" -V affiche une description plus détaillée 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." -#: builtins.c:487 -#, fuzzy +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2888,9 +3001,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2919,8 +3032,8 @@ msgid "" 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" +" Déclare des variables et leur assigne des attributs. Si aucun NOM n'est " +"donné,\n" " affiche les attributs et les valeurs de toutes les variables.\n" " \n" " Options :\n" @@ -2928,7 +3041,7 @@ msgstr "" "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" +" \t\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" " -p\taffiche les attributs et la valeur de chaque NOM\n" @@ -2936,18 +3049,20 @@ msgstr "" " Options qui définissent des attributs :\n" " -a\tpour faire de NOMs des tableaux indexés (si pris en charge)\n" " -A\tpour faire de NOMs des tableaux associatifs (si pris en charge)\n" -" -i\tpour permettre aux NOMs d'avoir l'attribut « integer »\n" -" -l\tpour convertir les NOMs an minuscule lors de l'affectation\n" +" -i\tpour assigner l'attribut « integer » aux NOMs\n" +" -l\tpour convertir les NOMs en minuscules lors de l'affectation\n" +" -n\ttransforme NOM en une référence vers une variable nommée d'après " +"sa valeur\n" " -r\tpour mettre les NOMs en lecture seule\n" " -t\tpour permettre aux NOMs d'avoir l'attribut « trace »\n" -" -u\tpour convertir les NOMs en majuscule lors de l'affectation\n" +" -u\tpour convertir les NOMs en majuscules lors de l'affectation\n" " -x\tpour permettre aux NOMs de s'exporter\n" " \n" -" Utiliser « + » au lieu de « - » permet de désactiver l'attribut donné.\n" +" Utiliser « + » au lieu de « - » pour désactiver l'attribut.\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 " +" Les variables avec l'attribut « integer » ont une évaluation arithmétique " +"(voir\n" +" la commande « let ») effectuée lorsqu'une valeur est affectée à la " "variable.\n" " \n" " Lorsqu'utilisée dans une fonction, « declare » permet aux NOMs d'être " @@ -2956,21 +3071,22 @@ msgstr "" "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'une option non valable soit fournie " +"ou qu'une\n" +" erreur survienne lors de l'assignation d'une variable." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Définit des valeurs ou des attributs de variables.\n" " \n" " Obsolète. Essayez « help declare »." -#: builtins.c:535 -#, fuzzy +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2990,18 +3106,20 @@ msgstr "" "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 peuvent seulement être utilisées à l'intérieur " +"d'une\n" +" fonction; elles ne sont visibles que dans les fonctions où elles ont " +"été\n" +" définies et dans leurs 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" -" ou que l'inteprète ne soit pas dans une fonction." +"fournie,\n" +" qu'une erreur survienne lors de l'assignation d'une variable, ou que le " +"shell\n" +" n'exécute pas une fonction." -#: builtins.c:552 -#, fuzzy +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3027,30 +3145,33 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" "Écrit les arguments sur la sortie standard.\n" " \n" -" Affiche les ARGs sur la sortie standard, suivis d'un retour à la ligne.\n" +" Affiche les ARGs, séparés par une espace, sur la sortie standard, " +"suivis\n" +" d'un retour à la ligne.\n" " \n" " Options :\n" -" -n\tne pas ajouter de saut de ligne\n" -" -e\tactive l'interpretation des barres contre-obliques d'échappement " +" -n\tn'ajoute pas de saut de ligne\n" +" -e\tactive l'interprétation des barres contre-obliques d'échappement " "ci-dessous\n" -" -E\tsupprime explicitement l'interpretation des barres contre-obliques " +" -E\tsupprime explicitement l'interprétation des barres contre-obliques " "d'échappement\n" " \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" -" \\e\tcaractère Échap.\n" +" \\c\tsupprime la suite de la sortie\n" +" \\e\tcaractère échap.\n" +" \\E\tcaractère échap.\n" " \\f\tsaut de page\n" " \\n\tsaut de ligne\n" " \\r\tretour chariot\n" @@ -3059,14 +3180,15 @@ msgstr "" " \\\\\tbarre contre-oblique\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" +" \t\tlong de 0 à 3 chiffres octaux\n" +" \\xHH\tle caractère sur 8 bits dont la valeur est HH (hexadecimal). " +"HH\n" +" \t\tpeut être long de 1 ou 2 chiffres hexadécimaux\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une erreur ne survienne." +" Renvoie le code de succès à moins qu'une erreur d'écriture survienne." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3086,9 +3208,9 @@ msgstr "" " -n\tpas de retour à la ligne\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une erreur ne survienne." +" Renvoie le code de succès à moins qu'une erreur d'écriture survienne." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3120,7 +3242,7 @@ msgstr "" "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" +" sans utiliser le chemin complet vers le fichier.\n" " \n" " Options :\n" " -a\taffiche la liste des commandes intégrées et leur état " @@ -3128,8 +3250,7 @@ msgstr "" " -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" +" -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 " @@ -3146,7 +3267,7 @@ msgstr "" " 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:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3167,7 +3288,7 @@ msgstr "" " Renvoie le même code de sortie que la commande, ou le code de succès si " "la commande est vide." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3227,7 +3348,7 @@ msgstr "" "cet\n" " argument dans la variable de shell OPTARG.\n" " \n" -" « getopts » signale les erreurs d'une façon parmi deux. Si le premier " +" « getopts » signale les erreurs de deux manières. Si le premier " "caractère\n" " d'OPTSTRING est un deux-points, « getopts » utilise un signalement " "d'erreur\n" @@ -3237,15 +3358,14 @@ msgstr "" "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" +" 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" +" trouvé, un « ? » est placé dans NAME, OPTARG est effacé et un message de\n" +" diagnostic est affiché.\n" " \n" " Si la variable de shell OPTERR possède la valeur 0, « getopts » " "désactive\n" @@ -3262,7 +3382,7 @@ msgstr "" "la fin des options\n" " est rencontrée ou si une erreur survient." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3273,8 +3393,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3286,25 +3406,26 @@ msgid "" 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" +" Exécute la COMMANDE, en remplaçant ce shell par le programme spécifié.\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" " -a nom\tpasse NOM comme argument numéro 0 à la COMMANDE\n" -" -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" +" -c\texécute la COMMANDE avec un environnement vide\n" +" -l\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" -" que l'option « execfail » ne soit définie.\n" +"termine,\n" +" à moins 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\n" +" qu'une erreur de redirection ne survienne." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3314,9 +3435,9 @@ msgstr "" "Termine le shell.\n" " \n" " 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." +" de retour est celui de la dernière commande exécutée." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3327,10 +3448,10 @@ 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" -" dans un shell de connexion." +"erreur\n" +" s'il n'est pas exécuté dans un shell de connexion." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3361,36 +3482,37 @@ msgid "" 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 " +" « 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 " +" 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" +" 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 « " +" -e ENAME\tdéfinit quel éditeur utiliser. Par défaut il s'agit de « " "FCEDIT »\n" -" puis « EDITOR », puis « vi ».\n" +" \t\tpuis « EDITOR », puis « vi »\n" +" -l\taffiche les lignes au lieu de les éditer\n" +" -n\tn'affiche pas les numéros de ligne\n" +" -r\tinverse l'ordre des lignes (les plus récentes en premier)\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é-" +" En tapant « fc -s [motif=rempl ...] [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." +"autre\n" +" chose que 0 si une erreur survient." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3408,10 +3530,10 @@ 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 " +" Celui de la commande placée au premier plan ou le code d'échec si une " "erreur survient." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3426,17 +3548,17 @@ 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." +"activé\n" +" ou qu'une erreur ne survienne." -#: builtins.c:784 -#, fuzzy +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3445,15 +3567,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3463,25 +3585,26 @@ msgstr "" " \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" +"est\n" +" affichée.\n" " \n" " Options :\n" -" -d\t\toublier l'emplacement mémorisé de chaque NOM\n" -" -l\t\tafficher dans un format qui peut être réutilisé comme entrée\n" -" -p nomchemin\tutiliser NOMCHEMIN comme le chemin complet de NOM\n" -" -r\t\toublier tous les emplacements mémorisés\n" -" -t\t\tafficher l'emplacement mémorisé de chaque NOM, en précédant\n" +" -d\toublie l'emplacement mémorisé de chaque NOM\n" +" -l\taffiche dans un format qui peut être réutilisé comme entrée\n" +" -p nomchemin\tutilise NOMCHEMIN comme le chemin complet de NOM\n" +" -r\toublie tous les emplacements mémorisés\n" +" -t\taffiche l'emplacement mémorisé de chaque NOM, en précédant\n" " \t\tchaque emplacement du NOM correspondant si plusieurs NOMS\n" " \t\tsont donnés\n" " Arguments :\n" -" NOM\t\tChaque NOM est recherché dans $PATH et ajouté à la liste\n" +" NOM\tChaque NOM est recherché dans $PATH et ajouté à la liste\n" " \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\n" +" qu'une option non valable ne soit donnée." -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3493,7 +3616,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3509,10 +3632,10 @@ msgstr "" " au MOTIF est affichée, sinon la liste des sujets d'aide est affichée.\n" " \n" " Options :\n" -" -d\tafficher une courte description pour chaque sujet\n" -" -m\tafficher l'aide dans un format proche des pages de man(uel)\n" -" -s\tn'afficher qu'une courte aide pour chaque sujet correspondant au\n" -" \t\tMOTIF\n" +" -d\taffiche une courte description pour chaque sujet\n" +" -m\taffiche l'aide dans un format proche des pages de man(uel)\n" +" -s\tn'affiche qu'une courte aide pour chaque sujet correspondant au\n" +" \t\tMOTIF\n" " \n" " Arguments :\n" " MOTIF\tMotif spécifiant un sujet d'aide\n" @@ -3522,7 +3645,8 @@ msgstr "" "qu'une\n" " option non valable ne soit donnée." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3531,23 +3655,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3555,7 +3679,7 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Affiche ou manipule l''historique.\n" +"Affiche ou manipule l'historique.\n" " \n" " Affiche l'historique avec les numéros de lignes en préfixant chaque " "élément\n" @@ -3563,40 +3687,40 @@ msgstr "" "éléments.\n" " \n" " Options :\n" -" -c\tefface la liste d'historique en effaçant tous les éléments\n" +" -c\tefface la liste d'historique en supprimant 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 " +" -a\tajoute 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 " +" -n\tlit toutes les lignes d'historique non déjà lues depuis le fichier " "d'historique\n" -" -w\técrire l'historique actuel dans le fichier d'historique\n" -" \tet l'ajoute à la liste d'historique\n" +" -r\tlit le fichier d'historique et ajoute le contenu à la liste " +"d'historique\n" +" -w\técrit l'historique actuel dans le fichier d'historique\n" +" \t\tet l'ajoute à la liste d'historique\n" " \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" +" -p\teffectue un développement de l'historique sur chaque ARG et " +"affiche le résultat\n" +" \t\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 ~/." +" 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" +" Si la variable HISTTIMEFORMAT est définie et n'est pas vide, sa valeur " +"est utilisé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" +" à chaque entrée d'historique. Sinon, 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." +"ou\n" +" qu'une erreur ne survienne." -#: builtins.c:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3606,7 +3730,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3621,32 +3745,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 à\n" +" cette tâche. S'il n'y a pas d'option, l'état de toutes les tâches " +"actives\n" +" 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" -" \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" +" -l\taffiche les IDs de processus en plus des informations normales\n" +" -n\taffiche seulement les processus dont l'état a changé depuis la\n" +" \t\tdernière notification\n" +" -p\taffiche seulement les IDs de processus\n" +" -r\trestreint l'affichage aux tâches en cours d'exécution\n" +" -s\trestreint 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" -" de processus de cette tâche.\n" +" Si « -x » est fournie, la COMMANDE est lancée après que toutes les\n" +" spécifications qui apparaissent dans ARGs ont été remplacées par l'ID " +"de\n" +" processus du leader de groupe 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" -" Si « -x » est utilisée, le code de sortie de la COMMANDE est renvoyé." +"donnée\n" +" ou qu'une erreur ne survienne. Si « -x » est utilisée, le code de sortie " +"de\n" +" la COMMANDE est renvoyé." -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3656,7 +3780,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3668,17 +3792,18 @@ msgstr "" " JOBSPEC, le shell utilise sa propre notion de tâche courante.\n" " \n" " Options :\n" -" -a\tretirer toutes lestâches si JOBSPEC n'est pas fourni\n" +" -a\tretire toutes les tâ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" -" \tsi le shell reçoit un SIGHUP\n" +" \t\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\n" +" valable ne soit donné." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3690,7 +3815,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3701,28 +3827,34 @@ 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" -" Si SIGSPEC et SIGNUM ne sont pas donnés, alors SIGTERM est envoyé.\n" +" Envoie le signal nommé par SIGSPEC ou SIGNUM au processus identifié par\n" +" PID ou JOBSPEC. Si SIGSPEC et SIGNUM ne sont pas donnés, alors SIGTERM " +"est\n" +" 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" -" \tdes numéro de signaux pour lesquels les noms doivent être affichés\n" +" -l\taffiche la liste des noms de signaux ; si des arguments suivent « -" +"l »,\n" +" \t\tils sont supposés être des numéros de signaux pour lesquels les noms " +"doivent\n" +" \t\tê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" -" que vous pouvez créer est atteinte.\n" +"IDs de\n" +" tâches d'être utilisés à la place des IDs de processus et elle permet " +"aux\n" +" processus d'être tués si la limite du nombre de processus que vous " +"pouvez créer\n" +" 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." +"ou qu'une\n" +" erreur ne survienne." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3797,23 +3929,21 @@ 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" -" d'entier activé pour être utilisée dans une expression.\n" +" variable est remplacé par sa valeur (contrainte à un entier de largeur\n" +" fixe) à l'intérieur d'une expression. La variable n'a pas besoin " +"d'avoir\n" +" son attribut 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" -" ci-dessus.\n" +"expressions\n" +" entre parenthèses sont évaluées en premier et peuvent être prioritaires " +"sur\n" +" les règles ci-dessus.\n" " \n" " Code de sortie :\n" " Si le dernier ARG est évalué à 0, « let » renvoie 1, sinon 0 est renvoyé." -#: builtins.c:983 -#, fuzzy +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3834,27 +3964,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3866,52 +3997,59 @@ 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" -" Seul les caractères trouvés dans $IFS sont reconnus comme délimiteurs\n" +"de\n" +" fichier FD si l'option « -u » est fournie. La ligne est découpée en " +"morceaux\n" +" comme des mots, et le premier mot est assigné au premier NOM, le " +"deuxième mot\n" +" au deuxième NOM, et ainsi de suite, le dernier NOM récupérant la liste " +"des mots\n" +" restants. Seuls les caractères trouvés dans $IFS sont reconnus comme " +"délimiteurs\n" " de mots\n" " \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" -" \t\ten commançant à 0\n" -" -d délim\tcontinuer jusqu'à ce que le premier caractère de DELIM soit " +" -a tableau\taffecte les mots lus séquentiellement aux indices de la " +"variable\n" +" \t\ttableau ARRAY en commençant à 0\n" +" -d délim\tcontinue jusqu'à ce que le premier caractère de DELIM soit " "lu,\n" " \t\tau lieu du retour à la ligne\n" -" -e\t\tutiliser « Readline » pour obtenir la ligne dans un shell " +" -e\t\tutilise « 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 " +" -i texte\tUtilise TEXTE comme texte initial pour « Readline »\n" +" -n n\ttermine après avoir lu N caractères plutôt que d'attendre\n" +" \t\tun retour à la ligne, mais obéi à 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" +" \t\tque le caractère EOF soit rencontré ou que le délai de lecture " +"n'expire.\n" +" \t\tLes délimiteurs sont ignorés\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" -" -s\t\tne pas répéter l'entrée provenant d'un terminal\n" +"avant de\n" +" \t\ttenter une lecture\n" +" -r\tne pas permettre aux barres obliques inverses de se comporter " +"comme\n" +" \t\tdes caractères d'échappement\n" +" -s\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\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\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" +"complète\n" +" \t\tn'est pas lue 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 " +"décimal.\n" +" \t\tSi TIMEOUT est à zéro, la lecture se termine immédiatement sans " +"essayer de\n" +" \t\tlire la moindre donnée mais elle renvoie un code de succès " +"seulement\n" +" \t\tsi l'entrée est disponible sur le descripteur 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 " +" -u fd\tlit depuis le descripteur de fichier FD plutôt que l'entrée " "standard\n" " \n" " Code de sortie :\n" @@ -3920,7 +4058,7 @@ msgstr "" " ou qu'un descripteur de fichier non valable ne soit fourni comme " "argument à « -u »." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3933,17 +4071,16 @@ 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" -" à l'intérieur de la fonction ou du script\n" +" Entraîne l'arrêt d'une fonction ou d'un script sourcé, avec le code\n" +" de retour spécifié par N. Si N est omis, le code de retour est celui\n" +" de la dernière commande exécutée à l'intérieur de la fonction ou du\n" +" 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\n" +" une fonction ou un script." -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4012,7 +4149,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4036,31 +4174,31 @@ msgstr "" " 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 " +" -a Marque 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 " +" -b Averti immédiatement de la fin d'une tâche.\n" +" -e Termine 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" +" -f Désactive la génération de nom de fichier (globbing).\n" +" -h Mémorise l'emplacement des commandes après leur recherche.\n" +" -k Place 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" +" -m Active le contrôle de tâche.\n" +" -n Lit les commandes, mais ne les exécute pas.\n" " -o nom-option\n" -" Définir la variable correspondant à nom-option :\n" +" Défini la variable correspondant à nom-option :\n" " allexport identique à -a\n" " braceexpand identique à -B\n" -" emacs utiliser une édition de ligne façon « emacs »\n" +" emacs utilise une édition de ligne façon « emacs »\n" " errexit identique à -e\n" " errtrace identique à -E\n" " functrace identique à -T\n" " 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" +" history active l'historique des commandes\n" +" ignoreeof ne termine pas le shell à la lecture d'un « EOF " +"»\n" " interactive-comments\n" " permet aux commentaires d'apparaître dans les " "commandes interactives\n" @@ -4079,10 +4217,11 @@ msgstr "" " 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" +" posix modifie le comportement de « bash » où les " +"opérations par défaut\n" +" sont différentes du standard Posix de manière à " +"correspondre au\n" +" standard\n" " privileged identique à -p\n" " verbose identique à -v\n" " vi utiliser une édition de ligne façon « vi »\n" @@ -4090,52 +4229,52 @@ msgstr "" " -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" +"l'importation 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 " +" effectifs aux valeurs des uid et gid réels.\n" +" -t Termine après la lecture et l'exécution d'une commande.\n" +" -u Traite 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 " +" -v Affiche les lignes d'entrée du shell à leur lecture.\n" +" -x Affiche 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 " +" -B Effectue l'expansion des accolades\n" +" -C Si défini, 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 " +" -E Si défini, l'interception ERR est héritée par les fonctions du " "shell.\n" -" -H Activer la substitution d'historique façon « ! ». Ceci est actif " +" -H Active 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 " +" -P Si défini, les liens symboliques ne sont pas suivis lors de " "l'exécution des\n" " commandes telles que « cd » qui changent le répertoire courant.\n" -" -T Si dé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 " +" -T Si défini, 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" " 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" +" 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 « $- ». 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" +" sont affichées.\n" +" \n" " Code de sortie :\n" " Renvoie le code de succès à moins qu'une option non valable ne soit " "donnée." -#: builtins.c:1126 -#, fuzzy +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4145,7 +4284,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4163,6 +4302,9 @@ msgstr "" " Options :\n" " -f\ttraite chaque NOM comme une fonction du shell\n" " -v\ttraite chaque NOM comme une variable du shell\n" +" -n\ttraite chaque NOM comme une référence nommée et annule la " +"variable\n" +" \t\telle-même plutôt que la variable à laquelle elle fait référence\n" " \n" " Sans option, « unset » essaye d'abord d'annuler une variable et, \n" " en cas d'échec, essaye d'annuler la fonction.\n" @@ -4171,10 +4313,10 @@ msgstr "" "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\n" +" donnée ou que NOM soit en lecture seule." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4194,24 +4336,24 @@ 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 exportation automatique vers l'environnement des\n" +" commandes exécutées ultérieurement. Si VALEUR est fournie, affecte la " +"VALEUR\n" +" avant l'exportation.\n" " \n" " Options :\n" " -f\tse référer aux fonctions du shell\n" -" -n\tenlève la propriété d'export de chaque NOM\n" +" -n\tenlève la propriété d'exportation de chaque NOM\n" " -p\taffiche une liste de toutes les variables et fonctions exportées\n" " \n" " 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." +"données\n" +" ou que NOM ne soit pas valable." -#: builtins.c:1167 -#, fuzzy +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4223,9 +4365,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4234,26 +4375,27 @@ 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" -" passage en lecture seule.\n" +" Marque chaque NOM comme étant en lecture seule ; les valeurs de ces " +"NOMs\n" +" ne peuvent plus être modifiées par des affectations ultérieures. Si " +"VALEUR\n" +" est fournie, lui affecter la VALEUR avant le 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" +" -a\tse réfère à des variables étant des tableaux indexés\n" +" -A\tse réfère à des variables étant des tableaux associatifs\n" +" -f\tse réfère à des fonctions du shell\n" +" -p\taffiche une liste des toutes les fonctions et variables en lecture " +"seule\n" +" \t\tselon que l'option -f est fournie ou non\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 option non valable ne soit\n" +" donnée ou que NOM ne soit pas valable." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4272,7 +4414,7 @@ msgstr "" " Code de retour :\n" " Renvoie le code de succès à moins que N soit négatif ou supérieur à $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4285,7 +4427,7 @@ msgid "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." msgstr "" -"Execute des commandes depuis un fichier dans le shell actuel.\n" +"Exécute 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" @@ -4300,7 +4442,7 @@ msgstr "" "code\n" " d'échec si NOMFICHIER ne peut pas être lu." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4315,7 +4457,7 @@ msgid "" msgstr "" "Suspend l'exécution du shell.\n" " \n" -" Suspend l'exécution de ce shell jusqu'à qu'il reçoive un signal " +" Suspend l'exécution de ce shell jusqu'à ce qu'il reçoive un signal " "SIGCONT.\n" " À moins que ce soit forcé, les shell de connexion ne peuvent pas être " "suspendus.\n" @@ -4325,10 +4467,10 @@ msgstr "" " \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." +"activé\n" +" ou qu'une erreur survienne." -#: builtins.c:1248 -#, fuzzy +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4392,9 +4534,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4421,80 +4563,86 @@ msgstr "" " 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" +" \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" -" -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" -" -g FICHIER Vrai si le fichier est « set-group-id »\n" -" -h FICHIER Vrai si le fichier est un lien symbolique\n" -" -L FICHIER Vrai si le fichier est un lien symbolique\n" -" -k FICHIER Vrai si le fichier a son bit « sticky » défini\n" -" -p FICHIER Vrai si le fichier est un tube nommé\n" -" -r FICHIER Vrai si le fichier est lisible par vous\n" -" -s FICHIER Vrai si le fichier existe et n'est pas vide\n" -" -S FICHIER Vrai si le fichier est un socket\n" -" -t FD Vrai si FD est ouvert sur un terminal\n" -" -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" -"\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" +" -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" +" -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" +" -g FICHIER Vrai si le fichier est « set-group-id ».\n" +" -h FICHIER Vrai si le fichier est un lien symbolique.\n" +" -L FICHIER Vrai si le fichier est un lien symbolique.\n" +" -k FICHIER Vrai si le fichier a son bit « sticky » défini.\n" +" -p FICHIER Vrai si le fichier est un tube nommé.\n" +" -r FICHIER Vrai si le fichier est lisible par vous.\n" +" -s FICHIER Vrai si le fichier existe et n'est pas vide.\n" +" -S FICHIER Vrai si le fichier est un socket.\n" +" -t FD Vrai si FD est ouvert sur un terminal.\n" +" -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" +" \n" +" FICHIER1 -nt FICHIER2 Vrai si le fichier1 est plus récent que le " +"fichier2 (selon la date\n" +" de modification).\n" +" \n" +" FICHIER1 -ot FICHIER2 Vrai si le fichier1 est plus vieux que le " +"fichier2.\n" +" \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" -" -z CHAÃŽNE Vrai si la chaîne est vide\n" -" -n CHAÃŽNE\n" -" CHAÃŽNE Vrai si la chaîne n'est pas vide\n" +" -z CHAÃŽNE Vrai si la chaîne est vide.\n" " \n" -" CHAÃŽNE1 = CHAÃŽNE2\n" -" Vrai si les chaînes sont égales\n" -" 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" -" CHAÃŽNE1 > CHAÃŽNE2\n" -" Vrai si le tri lexicographique place la chaîne1 en " -"deuxième\n" +" -n CHAÃŽNE\n" +" CHAÃŽNE Vrai si la chaîne n'est pas vide.\n" +" \n" +" CHAÃŽNE1 = CHAÃŽNE2\n" +" Vrai si les chaînes sont égales.\n" +" 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" +" CHAÃŽNE1 > CHAÃŽNE2\n" +" Vrai si le tri lexicographique place la chaîne1 en " +"deuxième.\n" " \n" " Autres opérateurs :\n" " \n" -" -o OPTION Vrai si l'OPTION du shell est activée\n" -" -v VAR\t Vrai si la variable de shell VAR est définie\n" -" ! EXPR Vrai si l'EXPRession est fausse\n" -" EXPR1 -a EXPR2 Vrai si les deux expressions sont vraies\n" -" EXPR1 -o EXPR2 Vrai si l'une des deux expressions est vraie\n" +" -o OPTION Vrai si l'OPTION du shell est activée.\n" +" -v VAR Vrai si la variable de shell VAR est définie.\n" +" -R VAR Vrai is la variable VAR est définie est une référence " +"nommée.\n" +" ! EXPR Vrai si l'EXPRession est fausse.\n" +" EXPR1 -a EXPR2 Vrai si les deux expressions sont vraies.\n" +" EXPR1 -o EXPR2 Vrai si l'une des deux expressions est vraie.\n" " \n" -" arg1 OP arg2 Tests arithmétiques. OP peut être -eq, -ne,\n" -" -lt, -le, -gt ou -ge.\n" +" 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" +"ARG2.\n" +" \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" " un argument non valable est donné." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4506,7 +4654,7 @@ msgstr "" " Ceci est un synonyme de la primitive « test », mais le dernier argument\n" " doit être le caractère « ] », pour fermer le « [ » correspondant." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4525,7 +4673,7 @@ msgstr "" " Code de retour :\n" " Toujours le code de succès." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4575,11 +4723,11 @@ msgstr "" " 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" +" signal SIGNAL_SPEC. Si ARG est absent (et qu'un unique SIGNAL_SPEC\n" +" est fourni) ou égal à « - », tous les signaux spécifiés sont remis\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" +" sont ignorés par le shell et les commandes qu'ils appellent.\n" " \n" " Si SIGNAL_SPEC est EXIT (0), la commande ARG est exécutée à la sortie du " "shell. Si un\n" @@ -4607,9 +4755,10 @@ msgstr "" " \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." +"qu'une\n" +" option non valable ne soit donnée." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4618,18 +4767,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4640,38 +4789,40 @@ msgid "" msgstr "" "Affiche des informations sur le type de commande.\n" " \n" -" Pour chaque NOM, indique comment il serait interprêté s'il était\n" +" Pour chaque NOM, indique comment il serait interprété s'il était\n" " utilisé comme un nom de commande.\n" " \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 " +" \t\ty compris 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" +" \t\tl'option « -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" -" \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\tune commande intégrée ou une fonction et renvoie le nom du fichier " +"du disque\n" +" \t\tqui serait exécuté\n" +" -p\trenvoie le nom du fichier du disque qui serait exécuté sauf si\n" +" \t\t« type -t NOM » aurait renvoyé autre chose que « file » auquel cas, " +"rien\n" +" \t\tn'est renvoyé.\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 " +" \t\t« function », « builtin », « file » or « », si NOM est respectivement un " +"alias,\n" +" \t\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" +" \t\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é." +"si l'un\n" +" d'entre eux n'est pas trouvé." -#: builtins.c:1417 -#, fuzzy +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4689,6 +4840,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4700,7 +4852,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4724,8 +4877,8 @@ msgstr "" " qu'il crée, sur les systèmes qui permettent un tel contrôle. \n" " \n" " Options :\n" -" -S\tutiliser la limite de ressources « soft »\n" -" -H\tutiliser la limite de ressources « hard »\n" +" -S\tutilise la limite de ressources « soft »\n" +" -H\tutilise la limite de ressources « hard »\n" " -a\ttoutes les limites actuelles sont présentées\n" " -b\tla taille du tampon de socket\n" " -c\ttaille maximale des fichiers « core » créés\n" @@ -4733,6 +4886,7 @@ msgstr "" " -e\tla priorité maximale d'ordonnancement (« nice »)\n" " -f\tla taille maximale des fichiers écrits par le shell et ses fils\n" " -i\tle nombre maximal de signaux en attente\n" +" -k\tle nombre maximal de kqueues allouées pour ce processus\n" " -l\tla taille maximale qu'un processus peut verrouiller en mémoire\n" " -m\tla taille maximale de « set » résident\n" " -n\tle nombre maximal de descripteurs de fichiers ouverts\n" @@ -4744,9 +4898,14 @@ msgstr "" " -u\tle nombre maximal de processus utilisateurs\n" " -v\tla taille de la mémoire virtuelle\n" " -x\tle nombre maximal de verrous de fichiers\n" +" -P\tle nombre maximal de pseudo terminaux\n" +" -T\tle nombre maximal de threads\n" " \n" +" Toutes les options ne sont pas disponibles sur toutes les plates-" +"formes.\n" +" \n" " Si LIMIT est fournie, elle est utilisée comme nouvelle valeur de " -"ressource\n" +"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 " @@ -4755,17 +4914,18 @@ msgstr "" "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" -" « -p » qui prend un multiple de 512 octets et « -u » qui prend un " -"nombre\n" +" Les valeurs sont des multiples de 1024 octets, sauf pour « -t » qui prend " +"des\n" +" secondes, « -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." +"fournie ou\n" +" qu'une erreur ne survienne." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4785,26 +4945,25 @@ 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" -" la valeur courante du MASQUE.\n" +"omis,\n" +" affiche 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" +" 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 " +" -p\tsi MODE est omis, affiche sous une forme réutilisable en entrée\n" +" -S\taffiche 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\n" +" option non valable ne soit donnée." -#: builtins.c:1485 -#, fuzzy +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4825,22 +4984,26 @@ msgid "" 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" -" dans le pipeline de la tâche.\n" +" Attend la fin du processus identifié par ID, qui peut être un ID de " +"processus\n" +" ou une spécification de tâche, et renvoie son code de retour. Si ID " +"n'est\n" +" pas donné, la commande attend la fin de tous les processus actifs en " +"cours et\n" +" le code de retour est zéro. Si ID est une spécification de tâche, la " +"commande\n" +" attend tous les processus dans le pipeline de la tâche.\n" +" \n" +" Si l'option -n est fournie, attend la fin de la prochaine tâche et " +"retourne\n" +" son code de retour.\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." +"valable\n" +" ou en cas d'option non valable." -#: builtins.c:1506 -#, fuzzy +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4856,16 +5019,19 @@ msgid "" msgstr "" "Attend la fin d'un processus et renvoie le code de sortie.\n" " \n" -" Attend le processus spécifié et donne son code de retour. Si PID n'est\n" -" pas donné, tous les processus fils actuellement actifs sont attendus\n" -" et le code de retour est zéro. PID doit être un ID de processus.\n" +" Attend la fin de chaque processus spécifié par un PID et donne son code " +"de\n" +" retour. Si PID n'est pas mentionné, la fin de tous les processus fils\n" +" actuellement actifs est attendue et le code de retour est zéro. PID doit " +"être\n" +" 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" -" est donnée." +" Renvoie le code de retour du dernier PID. Échoue si PID n'est pas " +"valable ou\n" +" si une option non valable est donnée." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4881,15 +5047,14 @@ msgstr "" " \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" +" 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" " \n" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4915,12 +5080,12 @@ msgstr "" " \tdone\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" +" est omise, elle se comporte comme si elle était évaluée à 1.\n" " \n" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4956,7 +5121,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4987,7 +5152,7 @@ msgstr "" " Code de sortie :\n" " Le code de retour est celui du PIPELINE." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5007,7 +5172,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5029,14 +5194,14 @@ 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 le code " +"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 " +" se termine. Sinon, la liste « 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" @@ -5045,7 +5210,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5055,17 +5220,16 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Exécute des commandes aussi longtemps qu'elle réussissent.\n" +"Exécute des commandes aussi longtemps qu'elles réussissent.\n" " \n" " Effectue une expansion et exécute les COMMANDES aussi longtemps\n" -" que la commande finale parmi celles situées dans « while » se termine " -"avec un\n" -" code de retour de zéro.\n" +" que la commande finale du « while » se termine avec un code de\n" +" retour à zéro.\n" " \n" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5077,15 +5241,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" -" que les commandes de « until » se terminent avec un code de retour\n" -" différent de zéro.\n" +" Effectue une expansion et exécute les commandes « COMMANDES »\n" +" aussi longtemps que les commandes de « until » se terminent avec\n" +" un code de retour différent de zéro.\n" " \n" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5095,21 +5259,20 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." 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" -" d'une variable tableau NOM dans le shell en cours d'exécution.\n" -" Le NOM par défaut est « COPROC ».\n" +" Exécute la COMMANDE de manière asynchrone, en connectant la sortie et\n" +" l'entrée standard de la commande par un tube aux descripteurs de " +"fichiers\n" +" affectés aux indices 0 et 1 d'une variable tableau NOM dans le shell en\n" +" cours d'exécution. Le NOM par défaut est « COPROC ».\n" " \n" " Code de retour :\n" " Renvoie le même code de retour que la COMMANDE." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -5135,7 +5298,7 @@ msgstr "" " Code de retour :\n" " Renvoie le code de succès à moins que NOM ne soit en lecture seule." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5153,7 +5316,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5171,8 +5334,7 @@ msgstr "" " É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" +" 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" " été fournie comme argument de « bg ».\n" @@ -5180,7 +5342,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la commande reprise." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5192,13 +5354,13 @@ msgid "" msgstr "" "Évalue une expression arithmétique.\n" " \n" -" L'EXPRESSION est évaluée selon les règles de l'évaluation arithmétique.\n" +" L'EXPRESSION est évaluée selon les règles d'évaluation arithmétique.\n" " C'est équivalent à « let EXPRESSION ».\n" " \n" " Code de sortie :\n" " Renvoie 1 si EXPRESSION est évaluée à 0, sinon renvoie 0." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5227,7 +5389,7 @@ msgid "" msgstr "" "Exécute une commande conditionnelle.\n" " \n" -" Renvoie un code de retour de 0 ou 1 dépendant de l'évaluation de " +" Renvoie le code de retour 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" @@ -5239,9 +5401,10 @@ msgstr "" " \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" -" est utilisée comme motif, et une mise en correspondance est effectuée.\n" +" Lorsque les opérateurs « == » et « != » sont utilisés, la chaîne à droite " +"de\n" +" l'opérateur 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" " est mise en correspondance comme une expression rationnelle.\n" @@ -5252,7 +5415,7 @@ msgstr "" " Code de sortie :\n" " 0 ou 1 selon la valeur de l'EXPRESSION." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5312,7 +5475,7 @@ msgstr "" " \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" -" \t\tnoms de fichier à ignorer lors de l'expansion des chemins.\n" +" \t\tnoms de fichiers à ignorer lors de l'expansion des chemins.\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" @@ -5320,10 +5483,10 @@ msgstr "" " \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 " +" HOSTTYPE\tLe type de processeur sur lequel cette version de Bash " "fonctionne.\n" -" IGNOREEOF\tContrôle l'action du shell à la réception d'un caractère « " -"EOF »\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" @@ -5342,7 +5505,7 @@ msgstr "" " \t\tpour la recherche des commandes.\n" " PROMPT_COMMAND\tUne commande à exécuter avant d'afficher chaque invite\n" " \t\tde commande principale.\n" -" PS1\t\tL'invite de commande principale.\n" +" PS1\t\tL'invite de commande principal.\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-" @@ -5355,14 +5518,15 @@ msgstr "" " \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 " +" \t\tLa valeur « exact » signifie que le mot de commande doit " "correspondre\n" -" \t\texactement à la commande dans la liste des tâches stoppées. Une " +" \t\texactement à la commande dans la liste des tâches stoppées. La " "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\tque la commande doit être un préfixe d'une tâche stoppée.\n" +" \t\t« substring » signifie que le mot de commande doit correspondre à " +"une\n" +" \t\tsous-chaîne de la tâche. Une autre valeur signifie que la commande " +"doit\n" +" \t\tê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 " @@ -5376,7 +5540,7 @@ msgstr "" " \t\tdécider quelles commandes doivent être conservées dans la liste " "d'historique.\n" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5386,19 +5550,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5414,21 +5578,23 @@ msgstr "" " répertoires en haut de la pile sont échangés.\n" " \n" " Options :\n" -" -n\tne pas changer de répertoire de travail lorsque des répertoires\n" -" \tsont ajoutés à la pile, de façon que seule la pile soit manipulée\n" +" -n\tNe change pas de répertoire de travail lorsque des répertoires\n" +" \t\tsont ajoutés à la pile, de façon que seule la pile soit manipulée\n" " \n" " Arguments :\n" -" +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 gauche de la liste fournie par « dirs " +" +N\tPermute la pile de façon que le Nième répertoire se place en " +"haut,\n" +" \t\ten comptant de zéro depuis la gauche de la liste fournie par « dirs " "».\n" " \n" -" -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\tPermute la pile de façon que le Nième répertoire se place en " +"haut,\n" +" \t\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 " +" dir\tAjoute le répertoire DIR en haut de la pile, et en fait le " "nouveau\n" -" \trépertoire de travail.\n" +" \t\trépertoire de travail.\n" " \n" " Vous pouvez voir la pile des répertoires avec la commande « dirs ».\n" " \n" @@ -5437,7 +5603,7 @@ msgstr "" "fourni\n" " ou que le changement de répertoire n'échoue." -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5446,16 +5612,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5466,20 +5632,22 @@ msgstr "" "Enlève des répertoires de la pile.\n" " \n" " Enlève des éléments de la pile des répertoires. S'il n'y a pas\n" -" d'argument, le répertoire en haut de la pile est enlevé,\n" -" et le nouveau sommet de la pile devient le répertoire de travail.\n" +" d'argument, le répertoire en haut de la pile est enlevé et le\n" +" nouveau sommet de la pile devient le répertoire de travail.\n" " \n" " Options :\n" -" -n\tne change pas de répertoire de travail lorsque des répertoires\n" -" \tsont enlevés de la pile, de façon que seule la pile soit manipulée\n" +" -n\tNe change pas de répertoire de travail lorsque des répertoires\n" +" \t\tsont enlevés de la pile, de façon que seule la pile soit manipulée\n" " \n" " Arguments :\n" -" +N\tEnlève le Nième répertoire, en comptant de zéro depuis la gauche\n" -" \tde la liste fournie par « dirs ». Par exemple : « popd +0 »\n" -" \tenlève le premier répertoire, « popd +1 » le deuxième. \n" -" -N\tEnlève le Nième répertoire, en comptant de zéro depuis la droite\n" -" \tde la liste fournie par « dirs ». Par exemple : « popd -0 »\n" -" \tenlève le dernier répertoire, « popd -1 » l'avant-dernier.\n" +" +N\tEnlève le Nième répertoire, en comptant de zéro depuis la gauche\n" +" \t\tde la liste fournie par « dirs ». Par exemple : « popd +0 »\n" +" \t\tenlève le premier répertoire, « popd +1 » le deuxième.\n" +" \n" +" -N\tEnlève le Nième répertoire, en comptant de zéro depuis la droite\n" +" \t\tde la liste fournie par « dirs ». Par exemple : « popd -0 »\n" +" \t\tenlève le dernier répertoire, « popd -1 » l'avant-dernier.\n" +" \n" " Vous pouvez voir la pile des répertoires avec la commande « dirs ».\n" " \n" " Code de sortie :\n" @@ -5487,7 +5655,7 @@ msgstr "" "donné\n" " ou que le changement de répertoire n'échoue." -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5498,19 +5666,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5519,32 +5687,34 @@ msgstr "" " \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 " +" 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" +" dans la liste en enlevant des éléments avec la commande « popd ».\n" " \n" " Options:\n" -" -c\teffacer la pile des répertoires en effaçant tous les éléments\n" -" -l\tne pas afficher la version raccourcie (avec ~) des répertoires\n" -" \trelativement à votre dossier personnel\n" -" -p\tafficher la pile des répertoires avec un élément par ligne\n" -" -v\tafficher la pile des répertoires avec un élément par ligne,\n" -" \ten préfixant avec sa position dans la pile\n" +" -c\tefface la pile des répertoires en effaçant tous les éléments\n" +" -l\tn'affiche pas la version raccourcie (avec ~) des répertoires\n" +" \t\trelativement à votre dossier personnel\n" +" -p\taffiche la pile des répertoires avec un élément par ligne\n" +" -v\taffiche la pile des répertoires avec un élément par ligne,\n" +" \t\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 " +" +N\tAffiche 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" +" \t\tliste 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 " +" -N\tAffiche le Nième élément en comptant de zéro depuis la droite de " "la\n" -" liste affichée par « dirs » lorsque celle-ci est appelée sans option.\n" +" \t\tliste 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\n" +" fournie ou qu'une erreur ne survienne." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5567,10 +5737,10 @@ 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" -" ou non.\n" +"d'argument\n" +" à l'option, la commande liste toutes les options du shell en indiquant " +"si\n" +" elles sont actives ou non.\n" " \n" " Options :\n" " -o\trestreint les NOMOPT à ceux définis pour être utilisés avec « set -" @@ -5585,8 +5755,7 @@ msgstr "" "valable\n" " est donnée ou si NOMOPT est inactive." -#: builtins.c:1908 -#, fuzzy +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5603,15 +5772,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5624,7 +5793,7 @@ msgid "" "assignment\n" " error occurs." msgstr "" -"Formatte et affiche des ARGUMENTS en contrôlant le FORMAT.\n" +"Formate 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 " @@ -5633,30 +5802,38 @@ msgstr "" " \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 " +" 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), « 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" +" %q\tprotège les arguments avec des guillemets de façon qu'ils puissent " +"être réutilisés\n" " comme entrée du shell.\n" -" %(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" +" %(fmt)T\trenvoie la chaîne date-heure résultant de l'utilisation de " +"FMT comme\n" +" \t chaîne de format pour strftime(3)\n" +" \n" +" Le format est réutilisé si nécessaire pour consommer tous les arguments. " +"Si il y a\n" +" moins d'arguments que exigé par le format, les spécificateurs de format " +"surnuméraires\n" +" se comportent comme si la valeur zéro ou une chaîne nulle avait été " +"fournie (selon\n" +" ce qui est approprié).\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" " erreur d'écriture ou d'affectation ne survienne." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5669,11 +5846,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5686,33 +5863,33 @@ msgstr "" " \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" +" S'il n'y a pas d'option, le réglage actuel est affiché d'une manière\n" +" réutilisable comme 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 " +" -r\tretire un réglage d'auto-complètement de chaque NOM ou, si aucun " "NOM\n" -" \tn'est fourni, retire tous les réglages\n" +" \t\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" -" \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" +"défaut aux\n" +" \t\tcommandes ne possédant aucun auto-complètement spécifique\n" +" -E\tapplique les auto-complètements et actions aux commandes vides\n" +" \t\t(auto-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" -" sur « -E ».\n" +" dans lequel les options en majuscule ci-dessus sont listées. L'option « -" +"D » est\n" +" prioritaire 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." +"fournie ou\n" +" qu'une erreur ne survienne." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5728,13 +5905,13 @@ msgstr "" " \n" " Ceci est destiné à être utilisé depuis une fonction de shell générant\n" " des auto-complètements possibles. Si le MOT optionnel est fourni,\n" -" des correspondances avec « WORD » sont générées.\n" +" des correspondances avec « MOT » 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\n" +" fournie ou qu'une erreur ne survienne." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5767,18 +5944,18 @@ 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" +"n'est\n" +" fourni, pour l'auto-complètement actuellement exécuté. Si aucune OPTION " +"n'est\n" +" donnée, affiche les options d'auto-complètement de chaque NOM ou le " +"réglage\n" +" 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 " +" \t-o option\tDéfini l'option d'auto-complètement OPTION pour chaque NOM\n" +" \t-D\t\tChange 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" +" \t-E\t\tChange 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" @@ -5786,20 +5963,20 @@ msgstr "" " \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" +" doit déjà avoir été défini grâce à la commande intégrée « complete ». Si " +"aucun\n" +" NOM n'est fourni, « compopt » doit être appelée par une fonction " +"générant\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" +"complètement\n" +" en cours d'exécution 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" " ou que NOM n'ait aucun réglage d'auto-complètement." -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5810,20 +5987,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5844,42 +6022,44 @@ msgstr "" " 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" +"variable\n" +" MAPFILE est le TABLEAU par défaut.\n" " \n" " Options :\n" +" -d delim\tUtilise DELIM pour terminer les lignes au lieu du saut de " +"ligne\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 " +" -t\tRetire les retours à la ligne de chaque ligne lue.\n" +" -u fd\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 " +" -C callback\tÉvalue 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" +" TABLEAU\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" +"est 5000.\n" +" Lorsque 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" -" avant affectation.\n" +" Si la commande « mapfile » n'est pas appelée avec une origine explicite, " +"le tableau est\n" +" vidé 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" " le TABLEAU soit en lecture seule ou ne soit pas un tableau indexé." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5889,6 +6069,24 @@ msgstr "" " \n" " Synonyme de « mapfile »." +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc." + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" @@ -5973,8 +6171,8 @@ msgstr "" #~ 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 »" +#~ "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," @@ -5982,8 +6180,8 @@ msgstr "" #~ 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" +#~ "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." @@ -5991,8 +6189,7 @@ msgstr "" #~ 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." +#~ "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" @@ -6052,8 +6249,7 @@ msgstr "" #~ 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" +#~ "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." @@ -6069,9 +6265,6 @@ msgstr "" #~ msgid "removes the top directory from the stack, and cd's to the new" #~ msgstr "le répertoire supérieur de la pile est enlevé et un changement de" -#~ msgid "top directory." -#~ msgstr "de répertoire se fait vers le nouveau répertoire supérieur." - #~ msgid "+N removes the Nth entry counting from the left of the list" #~ msgstr "+N enlève le Nième élément en commençant à zéro à gauche" @@ -6172,12 +6365,12 @@ msgstr "" #~ "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" +#~ " 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" +#~ " 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." @@ -6288,12 +6481,12 @@ msgstr "" #~ "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" +#~ " 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" +#~ " « -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 " @@ -6354,10 +6547,10 @@ msgstr "" #~ "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" +#~ " 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é. " @@ -6394,14 +6587,14 @@ msgstr "" #~ 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" +#~ " 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" +#~ " 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 "" @@ -6453,8 +6646,8 @@ msgstr "" #~ "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" +#~ " 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" @@ -6464,16 +6657,16 @@ msgstr "" #~ "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" +#~ " à 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" +#~ " « 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" +#~ " 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 " @@ -6521,8 +6714,7 @@ 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" -#~ " se rapportent à des fonctions. Si aucun NAME n'est donné ou si « -p " -#~ "»\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 " @@ -6548,8 +6740,8 @@ msgstr "" #~ "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" +#~ " 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." @@ -6612,10 +6804,8 @@ msgstr "" #~ "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" +#~ " 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" #~ " du shell, une primitive, un fichier du disque, ou s'il est inconnu.\n" @@ -6628,8 +6818,8 @@ msgstr "" #~ " \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" +#~ " 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 " diff --git a/po/ga.gmo b/po/ga.gmo index eb114a3e7e267793d421bd65ead8dc0a5eec1d26..6929134401085d104c9b3e2914713cb0176a056c 100644 GIT binary patch delta 13772 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 delta 15769 zcmZ{p2b>f|_Q!k43rJ29nfjL6j5?u(6dw#-I0LG`YN+Qg^xJQM>gNe~1bhR^LLV1le`)qJ4SJzBcGVh> zfU1{5y|@T!;5AS)I|oX^8=*RU1WJ+Tp!)k1YDt@5MztRWW!c$2SHd>b)5Ea89z2(Z z5_lJsB|e1G@DP-%!BXw_dkGmz4H&K z{+ee-*co^9*$?VQ37o;3lb{CLG}1nIHEd1&HmK+BhxzbHpD#cy%^zV4_&MxKIDZXS z&|mY>Sd)6_Xvf*znDyT?)^X-?BRm0*=7k3*Vm7$)SldA*Y)icc-UK(oYC7mS36H0K zZYi<|XhY9+&}T z(hf823qzpRdNm&Ws#eqEV0Yy(|-FKP|tq=%M|~gQ7B{vqh>kI zL>QRuI8{8bb&fTCv*R4+JlZ=$S?2n=%m!|QT7qxkUGOKkpXYYYbDYL-<9sGT`&m3J zz5r$Ew#VbBaCy1oEM$DA-y&;zXsDVBkx5N9)N2_J%rhP_Zr@FC2o@I8h3Xw-fQ=A|AufllGAPy_rAlwvxbDK_9_)*nuTMeuAWh3qZ;b{07)SC7PSW^#$QhcV*2pmU!GwcqZ zgD(6C(m(ru1?xz|D5!z{0ASSkgbn{n)xa?8OEX3`d%o- zAB76X=b-vI05wjFDm#&$uqop^lPOGwGoUm(ANGV-Lz(P;s5O2Cs-qvFEHJp*&U^t> zdj<}KyP%wTKRg;X3ELCUc&L6Wp?u&hn31>MMPU+r9Fl9CLs0FLJ(_o(E-#8{uGhCsZEU4`sQ}S7U#f=pQu5^exxeBa#dC;#4>q zE`VfHXA@Mk{K@A**p&JYFdsTm8$B(d6zK<>!>O<(JkIA5cog+O6#FX;0P zjcaTs8w{6Gp8@4u+h8mBl+Tx-!u2ia!f&9KtbNQ*s1VAMQ{XJP5VnCgKrO{x849f_ zyZ~jIH(>!h2&G}GxXoN+pq^U@N5NH4GrAg1gWI5%@H1El2h>_;D~Iy_D%clpgzA5* z&&)FvWYW)|H2)6DlpRj73iX5}LuVKq1~cVqa(DH z;$+wXu7+~Tjeh+cC`GqGDf%dE0^fwa7~gr9LKpZw)WB`m*#uJvWr=cF1kZwF;63nY z_yrsZd#|^t`gk~$`Z-XF-|h1NlykS(U=zh2G|SL;rCE8 z=y$3Os~J#BQU%+>S||n2^m#W_fA9JCe}-+Sw>gd3=P_$IgZf*iV}F^f_eML=2q*=X zLn)Sq(sVOahn|1`L8v9!2el;MLpfL1GpsWgKs`Uo=Mvb9`g*ATw?HMNd(OcAdhu-< z2Eb3CG|i{IH|z$>;278)Zi4DyJ1m8JpbHPdcCgo(wx42%cRP#VXt)U;2Osy@;wp@18+fPz$4DJCL9U-P+tUHn1WietDzLz0p+y&U;+FqlvB1j&pKNv zlrx54UwEb8{s8Qv_f(N0zy4?l#MHi~$DNtS>fyM9|D8-+H zvcShsdEnpBr0xrC!WjegTpCL8E1;f#2p+-s&VCAd@gt}ieg!qNMi*JdTsW2bI9LMD zfO+tKsE!_h%6PBCBj5+HBmB~*v)Q(Hf~WIh0hB^pFZSdAF$(hD*P%N2*ylH}HT9pN z6l!&ewagGWs}VaVynqhRzKkSBz10Al$K?EfijHvsJwK7Q5DypqBCk zpQk`sVl#XnZiRi}##^nkZoL)z7trvG-|!jK3oUN51NVe-t^rUQkAhmFNl?!%g0ff` zwt#ElGMIryOynI{2AkhOTBd!;4x8BCg%8pGO@=~KZrpJv8wlJD6^)n1M%9KYx#% zz;-ALJOwp@S7Cd201i_8e??&!4V@peaXlR>_ov`c=t0H*lTfMlGw8yekK36~gc@K4 z>smQeOmHFuvnaaN!MbFnj`PFZdkF65XD(GaUwH@|jT1 zxERVZt9+gd=TP4PJHr2i`LOv@R=w)YT>P~COUF%c zF7>aW)_%fXn~+X{dhS6u0sah2;rM5)1vbJ-)E|SI(2sC3EUL4<5Ua!f>i8KNWZJgR z+81WPp42x%wci5Az<1$z*x~nZK6nK6r(tWxclJ@3MZ*EO1onT`M!{)NGrAS_f&2XS zzd_Bo>uc5throfZ&0(#7e?9C#{Tx^Xx4=p8SvUeV*>5d#G?ZmdhI#OGcqHRHXHaMh zul2bDmQa5L$^u`)k+91fR?*o$SHjh_r(s9h@x>`(i2I0~+YQfw>C zbfEA$h2ij1*ba97lU7dKHw{Z-KghAIyjQ zVORJ*lm-6r7WP+){Eh}Ckl}Az6V^aE)Aeu$tb=o4%Xe&jF;sZo0JRkF!j|x3I0k+N z18~5*c9%RKO0oB$qV0$SR-xGkuzzP77SbToMc`m~3DjCY1be_YA>QhI3p>G|;Zd;T zd-mgX64dh-Ld|#wlvDq~Z}0fNwa`d-4DHL|ShyuaL8g7xXR{A%M-!n2Tn=UO2vl5e zgi`n%SO|XyHQ;lw2|NgU!LMK!*y=+Y_XSWsGzm_H2{;*M9-=UX!gsI~j{CDU?dd-E zz!KWOhofQPN0t?EDfMfiO#3aA!hJus6DWp#sn3Ioo;aKWx4=p89f)(6J4b$Ey>lv* zlZ2t7Apy(a**;%~>d^hvT3`xPJTHZLP*(v`>g_G)=)G3ZBy)GJnO0)aT>JUW(!L5V zfck^{N#>6IxeT1+zjrs~6y;6GWXjv&xrma3P8wIkt#Bh;19R7E%A48N>k8US52MTX z+`PwsCIXirD&C^Xtkbw^1I5 zT!qy7?MExkp2JPT*c>qQ-iHW@%3MJn{EE_b{tIci47nAVf%N6xWl$chc*k+f5$ZfR zmiAj<6WH*|^Xo6r_#)$*P2)RwCUO@yAA+0VnaGjIjns3O9P3irw6p0tg7Ou%=xl)f zsJn0q;vt8SKO-k2CvxuzWH*w#GP|gphUn0*^ZG}*J8&`e^@y%ZESxK-@1(4(Hyu$@ zYD(J{|2eA8HoyEW<=c?ssO!JtCQv5)oxO;z&Ux6sF@;&&RC?^DR<4=IrN~pX-wU@R zw@}vg47|iI2dM8ux+4kXGh{ci7U{t=P2nW}S&Gj8A*=lQRcg@5|KbJ@sA&%M_3#FG ze1m(7DE~_jaBV{xQCB|DHIwrH*rIc%x3_=C%-V);a;K7dSL8MSsn(QhDECMHj--%H zNKfP-qGa5bXF9_&q#5PGh^}WL8-}wIp5?a0Y>PSJ?=g7l6^s}kiA5xrC zP1}hu1}DPh$TURP01Ib2_lhX*fsaCc=$(MF}eUP4*d1&IEFpzA_W zadisvGV)Jkxqq`9wm|Oi>!)+?NJQ6O+LFj{*8uIG^3X&(m{!UvG^kQK=P z(pCXSi^zk>*T^g+cNKGA{py+z55P|FN@SpEWw(MqBAL_p>F+pPNnF6UbYLu2Yfwx!2m% z%+CzxCpeqNq5eyasINonsNaX|K-wVfkRQxDtSn_+jp2Q;$a{a#lNqSm-#s%k_yMuDL0U)PS=EDsbrzM$~-m5txZIzyQy%)1$jC98ZQ^)2|+?j;syEY+t2rDiMf8Be7~X zSsMt3q@jH-ctRk}l#RZz(E60SE{-0lxLXl&gW*tcjUB~I!A#surYn-ENGhF*p!vFR z$j;T?W7N?4S|$^!^yZcK7+#ydKvqKWXuZz9k)=Yw&6!9usR^XKv&wrcwp}GcsdOTS zVu^IfO~<04WRmA)In6DZuC0wmd<(1#M=(Jw?%O9ENTPixW_0!~Rh*3ALd-9hg7^a5=_bh#{I0B zGnM()aol7$o=7ohGMI?engy!&5c8(#-gS#=@^dbahgKVRs7;2_mGL4>QmYob9=Yd} zxdGy_C}HA{W8Y0~h{fWyNmM#~toq5BPV)U3nu_@;&4tuBe-!_T`~`tjDwH59tT8vp zJ^^b$GYOnz1fvN*CJ|p#ucq}b+y`CP*q{siGMrJ$bR4J& zxiS5O){~MNy7qiyjHI`+JU>&L&nTFb*a)PfDHn4QV_H3|It!-@q)h%u2NHo;Dr6NR z;Z&M9j#ruW$~Ob%5*OJZ8c7i<{#q8T%{LBeM)}1XiKD6WS6EZB5Rqsgpi;tNU#SeMXu4ZS4I+{U@D&2pj?-k>#M3KtwnjQ z|AG^yX(-fDPs#t(k2Pm~XSt~_XwYA6ctbK043I=~LlzoWG+R?_gPYt?GpiyVjRe_> zVr%Ron0}^g$gMIPSM9n=3>*pv)}jbW61`Rx%^l>f3t^9Xr}R#l+TS~UZoYTTgw7*P zGej^z{HNr*iBO=j*n4_rXjn~rEk0PkF;ykvHKvE$Mw#2c{Jp@~FOZ)I znfJ6=*ge2JhFisB4PCk1>@MdgiO131t7sV0sF$Hhu@39Q2aS z6lTkfaC$&jZKHTf+lCgVtKZthXwI7DH1gdxw-uTJ$?f5MHmx;>E1y)15!DN4&z!Y* zfr48`O3Io2@S}7214@{F@{OLOSkhpKxoPXQ@8(8HWYMKT@@r9xPCVTd$gw!z9! zkkkIn%O`|3eQh~Sbltqm>++<%o<(@{~wW(CLINc%7yL|1?yy4zcYm3{B zDjGhrXv7G2#E5Ytjwu>G+WTp3*Y?9H9aA)NlsmFy-0-nS4IkkRSXb006c0|0#G_S- zP^dT(@~YQOZap^;t4_0%k8`U7-tFs7Dp^`IGZYIY0wk<)?r~EB6``m*qIkrJ;!!OZ zkP!pXq8XgQlH=T1t*Is_mUxrb_sJXSZCbw~+k3+Yd0ykwhI=bcJI)(?`n%ctHeQ*R ztp-wb$O53A6=N6a@P@q7LM&hLM27S2n|S@u|+ z;YD*6h*ihxwx_~Hfn+e8PBa*Nwi~Nfcn9mY6X>j4A-zUob-Pm`y=nAyE8`fChe~Ic z%_9O*;dFJ1yJjG_vMy`;n^(8pMQt*u`eK}zo2d*%5|PTVeYB8gce0aOm4aa^9Noil zC3Fo<*MwUnC|gC%jA#o7s>16*fWTR}i%~$6YgyKo4jaPvPor$zc7|g#Mok2Q-h^GfIGpF6)<;J= z;U?>L$2pUt6^B$FHZEpgG^3gGd4qTSW${-lQKL2D{FhU;0{W^8p~|Iy^=FR|jp7G|G+t zpzr+hX?52bOYtpG=glr#RCfu6)cW!nZ#*nS>~avVh~jF=An7HRX)s_6UoyJ>YFO>e zeCyQvd{R!XQH$N#99!ykn)s>P$==Q9uA6fWlXU7|3M5R|mE_GJdDBhMfm>5Iz^17x zqglP3ow3(SOkJp5QVf+^t(@%BCKZ_9uYyWfX;No@#ejNpNg>_z3 zMsW-DO;OUE^7-qZytx)sluH zwXR8x4ZPFb&o;g4pDhddmdGVxV{4|)S7ta+8KoNI02!$u3OPH|wK2Z=kjTAa?QcFK z2z--$Wx^yb@Sl1!bIotqCFdqxMdouN*Q-1=>?=WURpAJq7ZD|tLN_Qsj_wz7+1Ba;F!*>;Pz>IWNz(+=b&959oaf%931s+jQG`GO5_vYLN)6z~4 zvk&*$T-kS&>}gEtd%79#SISyT(R0)|WwH0eO^FdxFosQ}W?!PihFRHeOUA=cFx!nKrB}5n2}ZoDok&coGfb;;uy>7)gW8wNpqSo zuD@`883}OZoYEsY;pIV%*&erVc*N=)x_ za>h4&!|;d1`r!6;Gj7#zvUi5xKlr*E~z9!iGaz}_?p5VNM6KNwg$(hKH zRxz~yiJ|?LKO^C@eoqU?0Xnl(;}7@=i&_!3hSOTde)D;uEz7KqvT4pnW}bm+lhJaU z#LW6l;+Ji}{p}WD)R2EQm_frWqBy%|>+4OIE;K2wI&9B9W|0Hc{1t)S+Bi5_E)`DH zWvd%3^z0gCX!d73GE!aa&fqNP7Bu`&DJb@0xApf{-nKqF>2^L=cHVJkUUu8gE={}- zcF$<)It2rg-hF$zW-q(@{(LX=$PIn|+b4^e7hf!ekFIYzWB%0Ax!$fvi@m%(2fWsg zz0{Y#4*mM0rNM0V-SXyRlN;IZmX1#zYLp$a_q?Wg0dMzn@$8J}zisTj{Zg;&;Fmi# y&Zb_gZQL|vK2tu~Uu`~9X1x(??7j5XrCIOo)AHJ$rWCk%_M%zS-SO^5=l=oyvywLe diff --git a/po/ga.po b/po/ga.po index ca42ada..805c0d2 100644 --- a/po/ga.po +++ b/po/ga.po @@ -5,133 +5,140 @@ # Séamus Ó Ciardhuáin , 2009. msgid "" msgstr "" -"Project-Id-Version: bash 4.0\n" +"Project-Id-Version: bash 4.3-rc2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2009-09-24 23:08+0100\n" -"Last-Translator: Séamus Ó Ciardhuáin \n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-02-05 17:02-0000\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" -"X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n" +"Language: ga\n" +"X-Generator: Poedit 1.7.4\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :" +"(n>6 && n<11) ? 3 : 4;\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "droch-fhoscript eagair" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, 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:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ní féidir sannadh go hinnéacs neamhuimhriúil." -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: caithfear foscript a úsáid le sannadh chuig eagar comhthiomsaitheach" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ní féidir cruthú: %s" -#: bashline.c:3982 +#: bashline.c:4091 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:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ní \" é an chéad charachtar nach spás bán é." -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "Níl \"%c\" dúnta i %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: deighilteoir idirstaid ar iarraidh" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 -#, fuzzy, c-format +#: builtins/alias.def:133 +#, c-format msgid "`%s': invalid alias name" -msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach " +msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach" #: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "níl eagarthóireacht líne cumasaithe" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach " -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ní féidir léamh: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "\"%s\": ní féidir dícheangail" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "\"%s\": ainm feidhme neamhaithnid" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "Níl %s ceangailte le heochair ar bith.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "Is féidir %s a ghlaoigh trí " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "comhaireamh lúibe" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "Gan chiall ach i lúb \"for\", \"while\" nó \"until\"" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -141,303 +148,332 @@ msgstr "" " \n" " Gan SLONN, aischuirtear " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "Níl HOME socruithe" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "An iomarca argóintí" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "Níl comhadlann eile ann" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "Níl OLDPWD socruithe" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "líne %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "rabhadh: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: úsáid: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: tá argóint riachtanach don rogha" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: argóint uimhriúil de dhíth" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: gan aimsiú" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: rogha neamhbhailí" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: ainm neamhbhailí rogha" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": ní aitheantóir bailí é" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "uimhir ochtnártha neamhbhailí" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "uimhir heicsidheachúlach neamhbhailí" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "uimhir neamhbhailí" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: sonrú neamhbhailí comhartha" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "\"%s\": ní aitheantas próisis nó sonrú jab bailí é" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: athróg inléite amháin" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s as raon" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argóint" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s as raon" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: níl a léithéid de jab ann." -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: gan rialú jabanna." -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "Gan rialú jabanna." -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: srianta" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "srianta" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ní ordú ionsuite blaoisce é." -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "earráid scríofa: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "earráid agus airíonna teirminéil á socrú: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "earráid agus airíonna teirminéil á fáil: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: earráid ag fáil na comhadlainne reatha: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: sonrú jab athbhríoch" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: ainm neamhbhailí gnímh" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: níl sonrú iomlánaithe ann." -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "" "Rabhadh: b'fhéidir nach n-oibríonn an rogha -F mar a bheifeá ag súil leis." -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "" "Rabhadh: b'fhéidir nach n-oibríonn an rogha -C mar a bheifeá ag súil leis." -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "níl an fheidhm chomhlánaithe á rith faoi láthair" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "Inúsáidte i bhfeidhmeanna amháin. " -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "Ní féidir \"-f\" a úsáid chun feidhmeanna a dhéanamh" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: feidhm inléite amháin" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" "%s: ní féidir eagar comhthiomsaitheach a thiontú go heagar innéacsaithe" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "Níl luchtú dinimiciúil ar fáil" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "Ní féidir an réad comhroinnte %s a oscailt: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "Ní féidir %s a aimsiú sa réad comhroinnte %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: níl sé luchtaithe go dinimiciúil" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: ní féidir scrios: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: is comhadlann é" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: ní gnáthchomhad é" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: tá an comhad ró-mhór" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ní féidir comhad dénártha a rith" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ní féidir rith: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "Ní blaosc logála isteach é seo: úsáid \"exit\"" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Tá jabanna stoptha ann.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Tá jabanna ag rith.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "Níor aimsíodh ordú" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "Sonrú staire" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ní féidir comhad sealadach a oscailt: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "reatha" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "Thosaigh jab %d gan rialú jabanna." @@ -456,25 +492,27 @@ msgstr "%s: tá argóint riachtanach don rogha -- %c\n" msgid "hashing disabled" msgstr "Tá haiseáil díchumasaithe." -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tá an tábla haiseála folamh.\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "amais\tordú\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Ordaithe blaoisce a mheaitseálann an lorgfhocal \"" msgstr[1] "Ordaithe blaoisce a mheaitseálann na lorgfhocail \"" msgstr[2] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" +msgstr[3] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" +msgstr[4] "Ordaithe blaoisce a mheaitseálann na lorgfhocail '" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -482,12 +520,12 @@ msgstr "" "Ní mheaitseálann ábhar cabhrach ar bith \"%s\". Bain triail as \"help help\" " "nó \"man -k %s\" nó \"info %s\"." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ní féidir oscailt: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -507,15 +545,20 @@ msgstr "" "Ciallaíonn réalt (*) ar ainm go bhfuil an t-ordú díchumasaithe.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "Ní féidir níos mó ná ceann amháin as -anrw a úsáid." -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "suíomh staire" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: argóint neamhbhailí" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: theip ar fhairsingiú staire." @@ -529,113 +572,113 @@ msgstr "%s: theip ar inlib" msgid "no other options allowed with `-x'" msgstr "Níl roghanna eile ceadaithe le \"-x\"" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, 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:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Earráid neamhaithnid" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "Ag súil le slonn" -#: builtins/mapfile.def:172 -#, fuzzy, c-format +#: builtins/mapfile.def:178 +#, c-format msgid "%s: not an indexed array" -msgstr "%s: ní athróg eagair é" +msgstr "%s: ní eagar innéacsaithe é" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: sonrú neamhbhailí tuairisceora comhaid" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: comhaireamh neamhbhailí línte" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: bunphointe neamhbhailí eagair" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: candam neamhbhailí aisghlaoigh" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "ainm folamh athróga eagair" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "tacaíocht le hathróga eagair de dhíth" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": carachtar formáide ar iarraidh." -#: builtins/printf.def:456 -#, fuzzy, c-format +#: builtins/printf.def:467 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%s: sonrú neamhbhailí teorann ama" +msgstr "\"%c\": sonrú neamhbhailí formáide ama" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": carachtar formáide neamhbhailí." -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "rabhadh: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x" -#: builtins/printf.def:880 -#, fuzzy, c-format +#: builtins/printf.def:893 +#, c-format msgid "missing unicode digit for \\%c" -msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x" +msgstr "digit Unicode ar iarraidh le haghaidh \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "Níl comhadlann eile ann" -#: builtins/pushd.def:354 -#, fuzzy, c-format +#: builtins/pushd.def:360 +#, c-format msgid "%s: invalid argument" -msgstr "%s: argóint teorann neamhbhailí" +msgstr "%s: argóint neamhbhailí" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "cruach fholamh chomhadlainne" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "innéacs cruaiche comhadlainne" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -659,7 +702,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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 +727,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -705,144 +748,154 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: sonrú neamhbhailí teorann ama" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "earráid léite: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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:782 +#: builtins/set.def:841 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:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: ní féidir díshocrú" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ní féidir díshocrú: %s inléite amháin" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: ní athróg eagair é" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: ní feidhm é." -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: ní féidir díshocrú" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "comhaireamh iomlaoide" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 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:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ainm neamhbhailí ar rogha blaoisce" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "Is gá don argóint bheith ina ainm comhaid." -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: níor aimsíodh an comhad" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "Ní féidir cur ar fionraí." -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "Ní féidir blaosc logála isteach a chur ar fionraí." -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "Tá %s ailiasáilte go \"%s\".\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "Is eochairfhocal blaoisce é %s.\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "Is feidhm é %s.\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "Is ordú ionsuite blaoisce é %s\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "Is ordú ionsuite blaoisce é %s\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "Tá %s %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "Tá %s haiseáilte (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argóint teorann neamhbhailí" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "\"%c\": droch-ordú" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ní féidir teorainn a fháil: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "teorainn" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ní féidir teorainn a athrú: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "uimhir ochtnártha" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "\"%c\": oibreoir neamhbhailí móid shiombalaigh" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": carachtar neamhbhailí móid shiombalaigh" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " líne " @@ -856,82 +909,103 @@ msgstr "Ordú deireanach: %s\n" msgid "Aborting..." msgstr "Ag tobscor..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "earráid ordaithe neamhaithnid" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "droch-chineál ordaithe" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "drochnascóir" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "drochléim" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: athróg neamhcheangailte" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "FORMÃID_AMA: \"%c\": carachtar formáide neamhbhaií." -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "earráid phíopa" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: srianta: ní féidir \"/\" a shonrú in ainmneacha ordaithe" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: níor aimsíodh an t-ordú" -#: execute_cmd.c:5206 -#, fuzzy, c-format +#: execute_cmd.c:5470 +#, c-format msgid "%s: %s" -msgstr "Tá %s %s\n" +msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: drochléirmhínitheoir" -#: execute_cmd.c:5280 -#, fuzzy, c-format +#: execute_cmd.c:5545 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: ní féidir comhad dénártha a rith" +msgstr "%s: ní féidir comhad dénártha a rith: %s" -#: execute_cmd.c:5352 -#, fuzzy, c-format +#: execute_cmd.c:5623 +#, c-format msgid "`%s': is a special builtin" -msgstr "Is ordú ionsuite blaoisce é %s\n" +msgstr "Is ordú ionsuite speisialta é \"%s\"" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" @@ -977,37 +1051,37 @@ msgstr "ag súil le aitheantóir tar éis réamhincriminte nó réamhdeicriminte msgid "missing `)'" msgstr "\")\" ar iarraidh" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "Earráid chomhréire: bhíothas ag súil le hoibreann." -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "earráid chomhréire: oibreoir neamhbhailí uimhríochta" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (comhartha earráide \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "Bonnuimhir uimhríochtúil neamhbhailí." -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "Tá an luach rómhór don bhonnuimhir." -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: earráid sloinn\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ní féidir na máthairchomhadlanna a rochtain." -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" @@ -1028,148 +1102,148 @@ msgstr "" "save_bash_input: tá an maolán ann cheana le haghaidh an tuairisceoir comhaid " "nua %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp píopa" -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, 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:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: próiseas %5ld (%s) sa phíblíne" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: níl an aitheantóir próisis sin ann." -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Comhartha %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Déanta" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Stoptha" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Stoptha(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Ag Rith" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Déanta(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Scoir %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Stádas neamhaithnid" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(cuimhne dumpáilte)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (comhadlann oibre: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid macphróisis (%ld go %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: níl taifead den phróiseas %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: tá an jab %d stoptha." -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: tá an jab críochnaithe." -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: tá an jab %d sa chúlra cheana." -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: líne %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (cuimhne dumpáilte)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(comhadlann oibre anois: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: theip ar getpgrp" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: araíonacht líne" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ní féidir grúpa próisis teirminéil a shocrú (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "Níl rialú jabanna sa bhlaosc seo." @@ -1223,18 +1297,18 @@ msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon" 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:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, 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" @@ -1258,29 +1332,29 @@ msgstr "%s: seirbhís neamhbhailí" msgid "%s: bad network path specification" msgstr "%s: drochshonrú conaire líonra" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "Ní thacaítear le oibríochtaí líonra." #: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "" +msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s)" #: locale.c:202 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "" +msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s): %s" #: locale.c:259 -#, fuzzy, c-format +#, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "xrealloc: %s:%d: ní féidir %lu beart a leithdháileadh" +msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s)" #: locale.c:261 -#, fuzzy, c-format +#, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "xrealloc: %s:%d: ní féidir %lu beart a leithdháileadh" +msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s): %s" #: mailcheck.c:439 msgid "You have mail in $_" @@ -1295,230 +1369,269 @@ msgstr "Tá ríomhphost nua agat i $_" msgid "The mail in %s has been read\n" msgstr "Tá an ríomhphost i %s léite\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "Earráid chomhréire: tá slonn uimhríochtúil de dhith." -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "Earráid chomhréire: \";\" gan súil leis." -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "Earráid chomhréire: \"((%s))\"" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: drochchineál ordaithe %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid (\"%s\" á " "lorg)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: ordú atreoraithe \"%d\" as raon." -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, 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:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "Deireadh comhaid gan súil leis agus \"]]\" á lorg." -#: parse.y:4175 +#: parse.y:4415 #, 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:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "Earráid chomhréire i slonn coinníollach." -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Comhartha \"%s\" gan súil leis; ag súil le \")\"." -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "Ag súil le \")\"" -#: parse.y:4289 +#: parse.y:4529 #, 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:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "Argóint gan súil lei go hoibreoir coinníollach aonártha ." -#: parse.y:4339 +#: parse.y:4579 #, 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:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "Bhíothas ag súil le hoibreoir coinníollach dénártha." -#: parse.y:4365 +#: parse.y:4605 #, 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:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "Argóint gan súil lei go hoibreoir dénártha coinníollach." -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "Comhartha \"%c\" gan súil leis in ordú coinníollach." -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "Comhartha \"%s\" gan súil leis in ordú coinníollach." -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "Comhartha %d gan súil leis in ordú coinníollach." -#: parse.y:5737 +#: parse.y:5996 #, 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:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "Earráid chomhréire in aice \"%s\"" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "Earráid chomhréire: deireadh comhaid gan súil leis." -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "Earráid chomhréire" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Úsáid \"%s\" le scoir den mblaosc.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "Deireadh comhaid gan súil leis agus \")\" á lorg le meaitseáil." -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "Iomlánú: níor aimsíodh an fheidhm \"%s\"." +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: tá COMPSPEC neamhnitheach" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: drochnascóir \"%d\"" -#: print_cmd.c:373 -#, fuzzy, c-format +#: print_cmd.c:375 +#, c-format msgid "xtrace_set: %d: invalid file descriptor" -msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" +msgstr "xtrace_set: %d: tuairisceoir comhaid neamhbhailí" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" -msgstr "" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": carachtar formáide neamhbhailí" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "tuairisceoir comhaid as raon" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: atreorú athbhríoch" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ní féidir comhad atá ann cheana a fhorscríobh." -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: srianta: ní féidir aschur a atreorú." -#: redir.c:191 +#: redir.c:192 #, 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:195 -#, fuzzy, c-format +#: redir.c:196 +#, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s: ní féidir liosta a shannadh go ball eagair." +msgstr "%s: ní féidir tuairisceoir comhaid a shannadh go hathróg." -#: redir.c:582 +#: redir.c:586 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:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "Earráid atreoraithe: ní féidir an tuairisceoir comhaid a dhúbailt." -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "Níorbh fhéidir /tmp a aimsiú. Cruthaigh é le do thoil!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "Caithfidh /tmp bheith ina ainm comhadlainne bailí." -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: rogha neamhbhailí" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" +"ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid " +"%d" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" +"ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid " +"%d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: is comhadlann é" + +#: shell.c:1777 msgid "I have no name!" msgstr "Níl ainm orm!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, leagan %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1527,44 +1640,53 @@ msgstr "" "Úsáid:\t%s [rogha fada GNU] [rogha] ...\n" "\t%s [rogha fada GNU] [rogha] comhad_scripte ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Roghanna fada GNU:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Roghanna blaoisce:\n" -#: shell.c:1835 -#, fuzzy +#: shell.c:1938 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" +msgstr "\t-ilrsD nó -c ordú nó -O rogha_shopt\t\t(glaoch amháin)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nó -o rogha\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, 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:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: oibríocht neamhbhailí" @@ -1738,91 +1860,106 @@ msgstr "Comhartha neamhaithnid #" msgid "Unknown Signal #%d" msgstr "Comhartha neamhaithnid #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Drochionadú: níl \"%s\" dúnta i %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ní féidir liosta a shannadh go ball eagair." -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadaíocht próisis." -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadaíocht próisis." -#: subst.c:5158 +#: subst.c:5848 #, 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:5160 +#: subst.c:5850 #, 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:5178 +#: subst.c:5873 #, 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:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "drochionadú: níl \"`\" dúnta i %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:5433 +#: subst.c:6153 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:5837 subst.c:8050 -#, fuzzy, c-format +#: subst.c:6580 subst.c:8939 +#, c-format msgid "%s: invalid variable name for name reference" -msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" +msgstr "" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: paraiméadar neamhnitheach nó gan socrú." - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: slonn fotheaghráin < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: drochionadú" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: comhaireamh neamhbhailí línte" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "\"%s\": ainm neamhbhailí ar mhapa eochrach" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: paraiméadar neamhnitheach nó gan socrú." + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: slonn fotheaghráin < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ní féidir sannadh mar seo." -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "drochionadú: níl \"`\" dúnta i %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "gan meaitseáil: %s" @@ -1836,39 +1973,39 @@ msgstr "Bhíothas ag súil le hargóint." msgid "%s: integer expression expected" msgstr "%s: ag súil le slonn slánuimhreach." -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "Ag súil le \")\"" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "Ag súil le \")\", ach fuarthas %s." -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: ag súil le hoibreoir aonártha." -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: ag súil le hoibreoir dénártha." -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "\"]\" ar iarraidh" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "Uimhir chomhartha neamhbhailí" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1876,85 +2013,85 @@ msgstr "" "run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á " "athsheoladh chugam féin." -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: droch-chomhartha %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "Earráid agus sainmhíniú na feidhme \"%s\" á iompórtáil." -#: variables.c:780 +#: variables.c:814 #, 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:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" - -#: variables.c:2228 +#: variables.c:2413 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:2247 -#, fuzzy, c-format +#: variables.c:2432 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: ní féidir liosta a shannadh go ball eagair." +msgstr "%s: ní féidir luach a shannadh ar an athróg" -#: variables.c:3646 +#: variables.c:3043 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:3940 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:3891 +#: variables.c:4218 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: paraiméadar neamhnitheach nó gan socrú." -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, 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:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "Níl \"=\" sa teaghrán easpórtála le haghaidh %s." -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: níl comhthéacs global_variables ann" -#: variables.c:4431 +#: variables.c:4772 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:5257 -#, fuzzy, c-format +#: variables.c:5619 +#, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: ní féidir oscailt: %s" +msgstr "%s: %s: ní féidir a oscailt mar CHOMHAD" -#: variables.c:5262 +#: variables.c:5624 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s as raon" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Cóipcheart © 2009 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Cóipcheart © 2013 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -1970,167 +2107,144 @@ msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, leagan %s (%s)\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" +msgstr "Is saorbhogearra é seo; tá cead agat é a athrú agus é a athdháileadh." #: 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:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Cóipcheart © 2009 Free Software Foundation, Inc." +"Ní ghabhann baránta ar bith leis, sa mhéid is atá sin ceadaithe de réir dlí." #: xmalloc.c:91 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "xmalloc: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" +msgstr "%s: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" #: xmalloc.c:93 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "xmalloc: ní féidir %lu beart a leithdháileadh" +msgstr "%s: ní féidir %lu beart a leithdháileadh" #: xmalloc.c:163 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "" -"xmalloc: %s:%d: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" +"%s: %s:%d: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" #: xmalloc.c:165 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "xmalloc: %s:%d: ní féidir %lu beart a leithdháileadh" +msgstr "%s: %s:%d: ní féidir %lu beart a leithdháileadh" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [ainm[=luach] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] ainm [ainm ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [N]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [N]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [ORDÚ-IONSUITE-BLAOISCE [ARGÓINT ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [SLONN]" -#: builtins.c:64 -#, fuzzy -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|-P] [comhadlann]" - #: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [comhadlann]" + +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] ORDÚ [ARGÓINT ...]" -#: builtins.c:76 -#, fuzzy -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFilrtux] [-p] [ainm[=luach] ...]" - #: builtins.c:78 -#, fuzzy -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFilrtux] [-p] ainm[=luach] ..." +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [ainm[=luach] ...]" #: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] ainm[=luach] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [ROGHA] AINM[=LUACH] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [ARGÓINT ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [ARGÓINT ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f comhadainm] [ainm ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [argóint ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts teaghrán_roghanna ainm [argóint]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a ainm] [ordú [argóintí ...]] [atreorú ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [N]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e AINM_E] [-lnr] [CÉAD] [DEIREANACH] nó fc -s [PATRÚN=IONADAÃ] [ORDÚ]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [SONRÚ_JAB]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [SONRÚ_JAB ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p CONAIR] [-dt] [AINM ...]" -#: builtins.c:117 -#, fuzzy +#: builtins.c:119 msgid "help [-dms] [pattern ...]" -msgstr "help [-ds] [PATRÚN ...]" +msgstr "help [-dms] [PATRÚN ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2138,15 +2252,16 @@ msgstr "" "history [-c] [-d SEACH_CHUR] [n] nó history -anrw [COMHADAINM] nó history -" "ps ARGÓINT [ARGÓINT...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [SONRÚ_JAB ...] nó jobs -x ORDÚ [ARGÓINTÃ]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [SONRÚ_JAB ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2154,118 +2269,109 @@ msgstr "" "kill [-s sonrú_comhartha | -n uimhir_chomhartha | -sonrú_comhartha] " "aitheantóir_próisis | sonrú_jab ... nó kill -l [sonrú_comhartha]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let argóint [argóint ...]" -#: builtins.c:136 -#, fuzzy +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" -"read [-ers] [-a eagar] [-d teormharcóir] [-i téacs] [-n líon_carachtar] [-p " -"leid] [-t teorainn_ama] [-u tuairisceoir_comhaid] [ainm ...]" +"read [-ers] [-a eagar] [-d teormharcóir] [-i téacs] [-n líon_carachtar] [-N " +"líon_carachtar] [-p leid] [-t teorainn_ama] [-u tuairisceoir_comhaid] " +"[ainm ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 -#, fuzzy -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [--abefhkmnptuvxBCHP] [-o ainm-rogha] [argóint ...]" - #: builtins.c:142 -#, fuzzy -msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [ainm ...]" +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o ainm-rogha] [--] [argóint ...]" #: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [ainm ...]" + +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [ainm[=luach] ...] nó export -p" -#: builtins.c:146 -#, fuzzy -msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "readonly [-af] [ainm[=luach] ...] nó readonly -p" - #: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [ainm[=luach] ...] nó readonly -p" + +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source comhadainm [argóintí]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". comhadainm [argóintí]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [slonn]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ argóint... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[argóint] sonrú_comhartha ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] ainm [ainm ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHacdefilmnpqrstuvx] [teorainn]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [teorainn]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mód]" -#: builtins.c:175 -#, fuzzy +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "wait [aitheantas]" +msgstr "wait [-n] [aitheantas ...]" -#: builtins.c:179 -#, fuzzy +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [aitheantas]" +msgstr "wait [aitheantas_próisis ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for AINM [in FOCAIL ... ] ; do ORDUITHE; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( slonn1; slonn2; slonn3 )); do ORDUITHE; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select AINM [in FOCAIL ... ;] do ORDUITHE; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] píblíne" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case FOCAL in [PATRÚN [| PATRÚN]...) ORDUITHE ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2273,100 +2379,101 @@ msgstr "" "if ORDUITHE; then ORDUITHE; [ elif ORDUITHE; then ORDUITHE; ]... [ else " "ORDUITHE; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while ORDUITHE; do ORDUITHE; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until ORDUITHE; do ORDUITHE; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [AINM] ordú [atreoruithe]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function AINM { ORDUITHE ; } nó AINM () { ORDUITHE ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ ORDUITHE ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "sonrú_jab [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( slonn ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ slonn ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "Athróga - ainmneacha agus mínithe ar fathróga áirithe blaoisce" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | comhadlann]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [ainm_rogha ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v athróg] formáid [argóintí]" -#: builtins.c:229 -#, fuzzy +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -"complete [-abcdefgjksuv] [-pr] [-o rogha] [-A gníomh] [-G patrún] [-W " +"complete [-abcdefgjksuv] [-pr] [-DE] [-o rogha] [-A gníomh] [-G patrún] [-W " "liosta_focal] [-F feidhm] [-C ordú] [-X patrún_scagaire] [-P réimír] [-S " "iarmhír] [ainm ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o rogha] [-A gníomh] [-G patrún] [-W " "liosta_focal] [-F feidhm] [-C ordú] [-X patrún_scagaire] [-P réimír] [-S " "iarmhír] [FOCAL]" -#: builtins.c:237 -#, fuzzy +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "compopt [-o|+o rogha] [ainm ...]" - -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "a" +msgstr "compopt [-o|+o rogha] [-DE] [ainm ...]" #: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "a" + +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "t" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2378,7 +2485,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2401,12 +2508,13 @@ msgstr "" " Aischuirtear an luach true mura thugtar AINM nach bhfuil\n" " ailias sainithe dó." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2417,7 +2525,7 @@ msgstr "" " \n" " Aischuirtear rath ach sa chás nach bhfuil AINM ann." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2451,14 +2559,15 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2476,7 +2585,7 @@ msgstr "" " Stádas Scortha:\n" " Is é 0 an stádas scortha mura bhfuil N níos lú ná 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2495,7 +2604,7 @@ msgstr "" " Stádas Scortha:\n" " Is é 0 an stádas scortha mura bhfuil N níos lú ná 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2520,7 +2629,7 @@ msgstr "" "bhfuil\n" " ORDÚ-IONSUITE-BLAOISCE ina ordú ionsuite blaoisce." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2550,7 +2659,7 @@ msgstr "" "blaoisce, nó\n" " sa chás go bhfuil SLONN neamhbhailí." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2573,16 +2682,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2595,13 +2704,14 @@ msgid "" " -P is used; non-zero otherwise." msgstr "" -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2623,7 +2733,7 @@ msgstr "" " Aischuirtear luach de 0 mura thugtar rogha neamhbhailí nó mura féidir\n" " an chomhadlann reatha a léamh." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2639,7 +2749,7 @@ msgstr "" " Stadas Scortha:\n" " Éiríonn leis i gcónaí." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2651,7 +2761,7 @@ msgstr "" " Stádas Scortha:\n" " Éiríonn leis i gcónaí." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2663,7 +2773,8 @@ msgstr "" " Stádas Scortha:\n" " Teipeann air i gcónaí." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2673,10 +2784,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2699,7 +2810,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear an stádas scortha ó ORDÚ, nó teip mura aimsítear ORDÚ." -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2709,9 +2820,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2739,17 +2850,18 @@ msgid "" " assignment error occurs." msgstr "" -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Socraigh luachanna agus airíonna athróg.\n" " \n" " Imithe i léig. Feic \"help declare\"." -#: builtins.c:535 +#: builtins.c:538 #, fuzzy msgid "" "Define local variables.\n" @@ -2780,7 +2892,7 @@ msgstr "" "earráid,\n" " nó mura bhfuil an bhlaosc ag rith feidhme." -#: builtins.c:552 +#: builtins.c:555 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2807,9 +2919,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2843,7 +2955,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath ach i gcás earráide scríofa." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2865,7 +2977,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath ach i gcás earráide scríofa." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2892,7 +3004,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2912,7 +3024,7 @@ msgstr "" " Aischuirtear stádas scortha an ordaithe, nó rath más ordú neamhnitheach " "é." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2953,7 +3065,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2964,8 +3076,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2976,7 +3088,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -2988,7 +3100,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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3001,7 +3113,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:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3056,7 +3168,7 @@ msgstr "" " Stádas Scortha:n\\ Aischuirtear rath nó stádas an ordaithe rite; " "neamh-nialas má tharlaíonn earráid." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3077,7 +3189,7 @@ msgstr "" " Stádas Scortha:\n" " Stádas an ordaithe curtha sa tulra, nó teip má tharlaíonn earráid." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3101,7 +3213,7 @@ msgstr "" " Aischuirtear rath ach má tharlaíonn earráid nó mura bhfuil\n" " rialú jabanna cumasaithe." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3110,22 +3222,23 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3137,7 +3250,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3166,7 +3279,7 @@ msgstr "" " Aischuirtear rath ach sa chás nach n-aimsítear PATRÚN nó go dtugtar\n" " rogha neamhbhailí." -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3175,23 +3288,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3200,7 +3313,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3210,7 +3323,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3224,7 +3337,8 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3234,7 +3348,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3255,7 +3369,7 @@ msgstr "" " Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí\n" " nó SONRÚ_JAB neamhbhailí." -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3267,7 +3381,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3277,7 +3392,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3322,7 +3437,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3343,27 +3458,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3373,7 +3489,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3395,7 +3511,7 @@ msgstr "" " Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme " "nó scripte." -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3463,7 +3579,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3480,7 +3597,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3490,7 +3607,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3502,7 +3619,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3521,7 +3638,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3533,9 +3650,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3543,7 +3659,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3554,7 +3670,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3568,7 +3684,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3582,7 +3698,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3646,9 +3762,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3665,7 +3781,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3678,7 +3794,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:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3698,7 +3814,7 @@ msgstr "" " Stádas Scortha:\n" " Éiríonn leis i gcónaí." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3742,7 +3858,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3751,18 +3867,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3772,7 +3888,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3790,6 +3906,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3801,7 +3918,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3819,7 +3937,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3837,7 +3955,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3857,7 +3975,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3872,7 +3990,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3885,7 +4003,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3916,7 +4034,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3936,7 +4054,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3952,7 +4070,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3963,7 +4081,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3984,7 +4102,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3995,7 +4113,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4006,7 +4124,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4016,10 +4134,10 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4043,7 +4161,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath mura bhfuil AINM inléite amháin." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4061,7 +4179,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4075,7 +4193,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4086,7 +4204,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -4114,7 +4232,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4168,7 +4286,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -4178,19 +4296,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -4199,7 +4317,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -4208,16 +4326,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -4226,7 +4344,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -4237,25 +4355,25 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -4276,7 +4394,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4293,15 +4411,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -4315,7 +4433,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4328,11 +4446,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -4342,7 +4460,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4365,7 +4483,7 @@ msgstr "" " Aischuirtear rath mura thugtar rogha neamhbhailí agus mura tharlaíonn " "earráid." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4396,7 +4514,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4407,20 +4525,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4437,7 +4556,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4448,19 +4567,23 @@ msgstr "" " Comhchiallach le \"mapfile\"." #, fuzzy -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Cóipcheart © 2009 Free Software Foundation, Inc." +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Cóipcheart © 2013 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 ":" +#~ msgstr ":" -#~ msgid "wait [pid]" -#~ msgstr "wait [aitheantas_próisis]" +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Cóipcheart © 2012 Free Software Foundation, Inc." #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" #~ msgstr "" diff --git a/po/gl.gmo b/po/gl.gmo index a0e98882faf4ead4c298fb45dfc570a69dcafb44..de9d0aedba36639c59849a373e9564c7268c89c7 100644 GIT binary patch delta 10430 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 delta 13722 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 F{{S~eA?W}B diff --git a/po/gl.po b/po/gl.po index 2b9e530..7e101ce 100644 --- a/po/gl.po +++ b/po/gl.po @@ -13,82 +13,88 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "subíndice de matriz incorrecto" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: non é posíbel converter a matriz de indizada a asociativa" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: índice de matriz asociativa non válido" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, 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:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: se debe usar un subíndice ao asignar a unha matriz asociativa" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: non foi posíbel crear: %s" -#: bashline.c:3982 +#: bashline.c:4091 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:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: o primeiro carácter que non é espazo en branco non é `\"'" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "no hai un `%c' que peche en %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: falta un `:' separador" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nome de alias non válido" @@ -97,45 +103,45 @@ msgstr "`%s': nome de alias non válido" msgid "line editing not enabled" msgstr "no se activó a edición de liña" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nome de combinación de teclas non válido" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: non se pode leer: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "%s: non se pode borrar a asignación" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nome de función descoñecido" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s non está asignado a ningunha tecla.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s pódese invocar a través de " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "contía de ciclo" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "só ten significado nun ciclo `for', `while' ou `until'" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -145,300 +151,329 @@ msgstr "" " \n" " Sen EXPR, devovle " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME non está definido" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "demasiados argumentos" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "non hai outro directorio" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD non está definido" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "liña %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opción require un argumento" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: requírese un argumento numérico" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: non se atopou" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: opción non válida" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: nome de opción non válido" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': non é un identificador válido" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "número octal non válido" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "número hexadecimal non válido" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "número non válido" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: especificación de sinal non válida" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': no é un pid ou unha especificación válida de traballo" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: variábel de só lectura" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fóra de rango" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argumento" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s fóra de rango" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: non existe ese traballo" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: no hai control de traballos" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "no ha control de traballos" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: restrinxido" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "restrinxido" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: no é una orde interna do shell" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "erro de escritura: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "erro ao estabelecer os atributos da terminal: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "erro ao obtener os atributos da terminal: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: erro ao obtener o directorio actual: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificación de traballo ambigüa" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: nome de acción non válido" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: non hai completado de especificación" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "aviso: é posíbel que a opción -F non funcione como se espera" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "aviso: é posíbel que a opción -C non funcione como se espera" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "non se está executando a función de completado" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "só se pode usar dentro dunha función" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, fuzzy, c-format +msgid "%s: circular name reference" +msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, 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" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "non se pode use `-f' para facer funcións" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: función de só lectura" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: non é posíbel converter unha matriz asociativa a indizada" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "a carga dinámica non está dispoñíbel" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "non é posíbel abrir o obxecto compartido %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "non é posíbel atopar %s no obxecto compartido %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: non foi cargado dinamicamente" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: non foi posíbel eliminar: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: é un directorio" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: non é un ficheiro regular" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: o ficheiro é demasiado grande" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: non é posíbel executar o ficheiro binario" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: non foi posíbel executar: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "non é un shell de entrada: use `exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Hai traballos pendentes.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Hay traballos en execución.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "non foi posíbel atopar a orde" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "especificación de historial" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: non é posíbel abrir o ficheiro temporal: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "actual" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "o traballo %d iniciou sen control de traballo" @@ -457,37 +492,37 @@ msgstr "%s: a opción require un argumento -- %c\n" msgid "hashing disabled" msgstr "asociación desactivada" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: táboa de asociación baleira\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "coinc\torde\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Orde do shell que coincide coa palabra `" msgstr[1] "Orde do shell que coincide coas palabras `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format 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:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: non foi posíbel abrir: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -508,15 +543,20 @@ msgstr "" "Un asterisco (*) xunto a un nome significa que a orde está desactivada.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "non foi posíbel usar máis dun de -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "posición no historial" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: límite de argumento non válido" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: fallou a expansión do historial" @@ -530,113 +570,113 @@ msgstr "%s: fallou inlib" msgid "no other options allowed with `-x'" msgstr "non se permiten outras opcións con «-x»" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, 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:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Erro descoñecido" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "agardábase unha expresión" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: non é unha matriz indizada" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descritor de ficheiro non válida" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de ficheiro non válido: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: conta de liñas non válida" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: orixe de matriz non válido" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de chamada non válido" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "nome de variábel de matriz baleiro" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "requírese a compatibilidade de variábel de matriz" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta o carácter de formato" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tempo non válida" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato non válido" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "falta o díxito hexadecimal para \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta o díxito unicode para \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "non hai outro directorio" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: límite de argumento non válido" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "a pila de directorios está baleira" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "índice da pila de directorios" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -680,7 +720,7 @@ msgstr "" "\tlista mostrada por dirs cando se chama sen opcións,\n" "\tcomezando desde cero." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -722,7 +762,7 @@ msgstr "" " \n" " A orde interna `dirs' mostra a rima de directorios." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -762,143 +802,153 @@ msgstr "" " \n" " A orde interna `dirs' mostra a pila de directorios." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificación de tempo de expiración non válida" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "erro de lectura: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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:782 +#: builtins/set.def:841 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:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: non é posíbel borrar" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: non é posíbel borrar: %s é de só lectura" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: non é unha variábel de matriz" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: non é unha función" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: non é posíbel borrar" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "conta de shift" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "non é posíbel activar e desactivar opcións do shell simultaneamente" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opción do shell non válido" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "requírese un argumento de nome de ficheiro" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: non se atopou o ficheiro" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "non é posíbel suspender" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "non é posíbel suspender un shell de entrada" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s é un alias de `%s'\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s é unha palabra chave do shell\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s é unha función\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s é unha orde interna do shell\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s é unha orde interna do shell\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s é %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s está asociado (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: límite de argumento non válido" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': orde errónea" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: non é posíbel obter o límite: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "límite" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: non é posíbel modificar o límite: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "número octal" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "`%c': operador de modo simbólico non válido" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "`%c': carácter de modo simbólico non válido" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " liña " @@ -912,82 +962,103 @@ msgstr "última orde: %s\n" msgid "Aborting..." msgstr "Abortando…" -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "erro de orde descoñecido" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "tipo de orde erróneo" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "conector erróneo" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "salto erróneo" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: variable sen asignar" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aexpirou mentres agardaba algunha entrada: auto-logout\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato non válido" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "erro de canalización" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restrinxido: non se pode especificar `/' en nomes de ordes" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: non se atopou a orde" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intérprete erróneo" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: non é posíbel executar o ficheiro binario" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s é unha orde interna do shell\n" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se pode duplicar o df %d ao df %d" @@ -1033,37 +1104,37 @@ msgstr "" msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "erro de sintaxe: agardábase un operando" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético non válido" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (o elemento de erro é \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "base aritmética non válida" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "valor demasiado grande para a base" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expresión\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: non é posíbel acceder aos directorios pai" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" @@ -1081,148 +1152,148 @@ 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:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "borrando o trabajo detido %d con grupo de proceso %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: o proceso %5ld (%s) en the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: non existe tal pid" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Feito" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Detido" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Detido(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "En execución" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Feito(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Saída %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Estado descoñecido" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(«core» xerado) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (dir agora: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid fillo (%ld a %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Non hai un rexistro do proceso %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: o traballo %d está detido" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: o traballo rematou" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: o trabajo %d xa está en segundo plano" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: actívase WNOHANG para evitar o bloque indefinido" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: liña %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " («core» generado)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(dir agora: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs_control: fallou getpgrp" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_jobs_control: disciplina de liña" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_jobs_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "non é posíbel estabelecer o grupo de procesos de terminal (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "non hai control de trabalos nesta shell" @@ -1277,17 +1348,17 @@ msgstr "" 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:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p xa está na táboa como libre?\n" @@ -1311,7 +1382,7 @@ msgstr "%s: servizo non válido" msgid "%s: bad network path specification" msgstr "%s: especificación de ruta de rede errónea" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "non hai compatibilidade para operacións de rede" @@ -1349,226 +1420,261 @@ msgstr "Ten unha nova mensaxe en $_" msgid "The mail in %s has been read\n" msgstr "O correo en %s foi lido\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "error de sintaxe: requírese unha expresión aritmética" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "error sintáctico: `;' non esperado" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "erro de sintaxe: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrución %d erróneo" -#: make_cmd.c:662 +#: make_cmd.c:669 #, 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 +#: make_cmd.c:768 #, 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:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado mentres se buscaba un `%c' coincidente" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado mentres se buscaba `]]'" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "error de sintaxe na expresión condicional: elemento inesperado `%s'" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "error sintáctico na expresión condicional" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', agardábase `)'" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "agardábase `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para o operador unario condicional" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para o operador unario condicional" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', agardábase un operador binario condicional" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "agardábase un operador binario condicional" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para o operador binario condicional" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para o operador binario condicional" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "elemento inesperado `%c' na orde condicional" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "elemento inesperado `%s' na orde condicional" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "elemento inesperado %d na orde condicional" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error de sintaxe perto do elemento inesperado `%s'" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe cerca de «%s»" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "error de sintaxe: non se agardaba o final do fichero" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use «%s» para deixar o shell.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF non agardado mentres se buscaba un «)» coincidente" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: non se atopa a función `%s'" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: COMPSPEC nulo" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector erróneo `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: descriptor de fichero non válido" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: punteiro a ficheiro NULL" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato non válido" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "descritor de ficheiro fóra de rango" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamento ambigüo" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: non se pode sobreescribir un fichero existente" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restrinxido: no se pode redirixir a saída" -#: redir.c:191 +#: redir.c:192 #, 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:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: non é posíbel asignar o gd á variábel" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "non se admite /dev/(tcp|udp)/anfitrion/porto sen rede" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "erro de redirección: non é posíbel duplicar o fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "non é posíbel atopar /tmp, por favor creeo!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nome de directorio válido" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción non válida" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "non é posíbel restabelecer o modo nodelay para o df %d" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "non é posíbel restabelecer o modo nodelay para o df %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: é un directorio" + +#: shell.c:1777 msgid "I have no name!" msgstr "Non teño nome!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1577,44 +1683,54 @@ msgstr "" "Uso:\t%s [opción GNU longa] [opción] ...\n" "\t%s [opción GNU longa] [opción] guión-do-shell\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Opcións GNU longas:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Opcións do shell:\n" -#: shell.c:1835 +#: shell.c:1938 #, 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o opción\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use a orden `bashbug' para reportar erros.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación non válida" @@ -1788,77 +1904,92 @@ msgstr "Sinal descoñecido #" msgid "Unknown Signal #%d" msgstr "Sinal descoñecido #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, 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:2847 +#: subst.c:3154 #, 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:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "non é posíbel crear a tubería para a sustitución do proceso" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "non é posíbel crear un proceso fillo para a substitución do proceso" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "non é posíbel abrir a tubería chamada %s para lectura" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "non é posíbel abrir a tubería chamada %s para escritura" -#: subst.c:5178 +#: subst.c:5873 #, 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:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "substitución errónea: non hai unha \"`\" que peche en %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "non é posíble crear a tubería para a substitución da orde" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "non é posíbel crear un proceso fillo para a substitución da orde" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: non é posíbel duplicar a tubería como fd 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, 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:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parámetro nulo ou non estabelecido" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: expresión de subcadea < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: substitución errónea" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: conta de liñas non válida" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "`%s': nome de alias non válido" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parámetro nulo ou non estabelecido" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expresión de subcadea < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: non é posíbel asignar de esta forma" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1866,12 +1997,12 @@ msgstr "" "versiones futuras do intérprete obligarán a evaluación como unha " "substitución aritmética" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substitución errónea: non hai unha \"`\" que peche en %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "non hai concidencia: %s" @@ -1885,39 +2016,39 @@ msgstr "agardábase un argumento" msgid "%s: integer expression expected" msgstr "%s: agardábase unha expresión enteira" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "agardábase `)'" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "`)' agardábase, atopouse %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: agardábase un operador unario" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: agardábase un operador binario" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "falta un «]»" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "número de sinal non válido" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1925,86 +2056,86 @@ msgstr "" "run_pending_traps: o manexador de sinal é SIG_DFL, reenviando %d (%s) a sí " "mesmo" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal errónea %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar a definición da función para «%s»" -#: variables.c:780 +#: variables.c:814 #, 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:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" - -#: variables.c:2228 +#: variables.c:2413 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:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: non é posíbel asignar o gd á variábel" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" + +#: variables.c:3940 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:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s ten exportstr nulo" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter non válido %d en exportsrt para %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "non hai «=» en exportstr para %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: non é un contexto global_variables " -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: non é posíbel abrir como FICHEIRO" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s fóra de rango" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2030,11 +2161,6 @@ msgstr "Isto é software libre; vostede é libre de cambialo e redistribuilo.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Non hai GARANTÃA, á extensión permitida pola ley.\n" -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2055,15 +2181,15 @@ msgstr "%s: %s:%d: non é posíbel asignar %lu bytes (%lu bytes asignados)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: non é posíbel asignar %lu bytes" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [nome[=valor] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nome [nome ...]" -#: builtins.c:51 +#: builtins.c:53 #, fuzzy msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" @@ -2073,113 +2199,102 @@ msgstr "" "secteclas] [-x secteclas:orde-shell] [keyseq:función-readline ou función-" "readline]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [orde-interna-shell [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [expresión]" -#: builtins.c:64 +#: builtins.c:66 #, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]]] [directorio]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] orde [arg ...]" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [nome[=valor] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "typeset [-aAfFgilrtux] [-p] nome[=valor] ..." -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [option] nome[=valor] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f nomeficheiro] [nome ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts cadena_opcións nome [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a ome] [orde [argumentos ...]] [redirección ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e nome_e] [-lnr] [primeiro] [último] ou fc -s [pat=rep] [orde]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [id_traballo]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [id_traballo ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p ruta] [-dt] [nome ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [patrón ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2187,15 +2302,16 @@ msgstr "" "history [-c] [-d desprazamento] [n] ou history -anrw [ficheiro] ou history -" "ps arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [idtraballo ...] ou jobs -x orde [args]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [id_traballo ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2203,11 +2319,11 @@ msgstr "" "kill [-s id_sinal | -n num_sinal | -id_sinal] pid | id_traballo ... ou kill -" "l [id_sinal]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2215,165 +2331,161 @@ msgstr "" "read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p " "prompt] [-t timeout] [-u fd] [nome ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opción] [--] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nome ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [nome[=valor] ...] ou export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [nome[=valor] ...] ou readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source ficheiro [arguments]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". ficheiro [argumentos]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [expresión]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] id_sinal ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nome [nome ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [límite]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [modo]" -#: builtins.c:175 +#: builtins.c:177 #, fuzzy msgid "wait [-n] [id ...]" msgstr "wait [id]" -#: builtins.c:179 +#: builtins.c:181 #, fuzzy msgid "wait [pid ...]" msgstr "wait [id]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NOME [in PALABRAS ... ] ; do ORDES; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( exp1; exp2; exp3 )); do ORDES; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NOME [in PALABRAS ... ;] do ORDES; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] pipeline" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case PALABRA in [PATRÓN [| PATRÓN]...) ORDES ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "if ORDES; then ORDES; [ elif ORDES; then ORDES; ]...[ else ORDES; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while ORDES; do ORDES; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until ORDES; do ORDES; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NOME] orden [redireccións]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function nome { ORDES ; } ou nome () { ORDES ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ ORDES ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "job_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( expresión ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ expresión ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - Nomes e significados de algunhas variábeis de shell" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | dir]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [nome_opción ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formato [argumentos]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2383,28 +2495,30 @@ msgstr "" "W listapalabras] [-F función] [-C orde] [-X patfiltro] [-P prefixo] [-S " "sufixo] [nome ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o opción] [-A acción] [-G patglob] [-W " "listapalabras] [-F función] [-C orde] [-X patfiltro] [-P prefixo] [-S " "sufixo] [palabra]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o opción] [-DE] [nome ...]" -#: builtins.c:240 +#: builtins.c:242 +#, fuzzy msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "mapfile [-n conta] [-O orixe] [-s conta] [-t] [-u df] [-C chamada] [-c " "quantum] [matriz]" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2412,7 +2526,8 @@ msgstr "" "readarray [-n conta] [-O orixe] [-s conta] [-t] [-u df] [-C chamada] [-c " "quantum] [matriz]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2424,7 +2539,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2448,12 +2563,13 @@ msgstr "" " alias devuelve verdadero a menos que se de un NOMBRE para el cual\n" " no se haya definido ningún alias." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2463,7 +2579,7 @@ msgstr "" " -a\telimina todas as definicións de alias.\n" " Devovle verdadero a menos que un NOME non sexa un alias existente." -#: builtins.c:289 +#: builtins.c:291 #, fuzzy msgid "" "Set Readline key bindings and variables.\n" @@ -2498,7 +2614,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2545,7 +2662,7 @@ msgstr "" " bind devolve 0 a menos que se presente unha opción descoñecida ou se\n" " se produza un erro." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2563,7 +2680,7 @@ msgstr "" " Estado de saída:\n" " O estado de saída é 0 a menos que N non sexa maior ou igual a 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2581,7 +2698,7 @@ msgstr "" " Estado de Saída:\n" " O estado de salida é 0 a menos que N non sexa maior ou igual a 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2605,7 +2722,7 @@ msgstr "" " Devolve o estado de saída da ORDE-INTERNA-SHELL, ou falso se a\n" " ORDE-INTERNA-SHELL non é unha orde interna de shell." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2634,7 +2751,7 @@ msgstr "" "shell\n" " ou EXPR sexa non válida." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2657,16 +2774,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2679,13 +2796,14 @@ msgid "" " -P is used; non-zero otherwise." msgstr "" -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2708,7 +2826,7 @@ msgstr "" "leer\n" " o directorio actual." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2724,7 +2842,7 @@ msgstr "" " Estado de Saída:\n" " Sempre con éxito." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2736,7 +2854,7 @@ msgstr "" " Estado de salida:\n" " Sempre con éxito." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2748,7 +2866,7 @@ msgstr "" " Estado de saída:\n" " Sempre falla." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2758,16 +2876,16 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2777,9 +2895,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2807,17 +2925,18 @@ msgid "" " assignment error occurs." msgstr "" -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Estabelece valores de variábeis e atributos.\n" " \n" " Obsoleto. Consulte `help declare'." -#: builtins.c:535 +#: builtins.c:538 #, fuzzy msgid "" "Define local variables.\n" @@ -2844,7 +2963,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:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2870,15 +2989,15 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2891,7 +3010,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2918,7 +3037,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2937,7 +3056,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado de saida da orde ou éxito se a orde é nula." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2978,7 +3097,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2989,8 +3108,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3001,7 +3120,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3013,7 +3132,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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3026,7 +3145,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:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3056,7 +3175,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3077,7 +3196,7 @@ msgstr "" " O estado da orde localizada en primeiro plano, ou falla se sucede un " "erro." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3091,7 +3210,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3100,22 +3219,22 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3127,7 +3246,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3137,7 +3256,7 @@ msgid "" "given." msgstr "" -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3146,23 +3265,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3171,7 +3290,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3181,7 +3300,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3195,7 +3314,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3205,14 +3324,14 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3224,7 +3343,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3234,7 +3354,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3279,7 +3399,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3300,27 +3420,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3330,7 +3451,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3342,7 +3463,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3410,7 +3531,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3427,7 +3549,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3437,7 +3559,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3449,7 +3571,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3468,7 +3590,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3480,9 +3602,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3490,7 +3611,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3501,7 +3622,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3515,7 +3636,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3541,7 +3662,7 @@ msgstr "" " Devolve con éxito a menos que non estea activo o control de traballos o\n" " se produza un erro." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3605,9 +3726,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3624,7 +3745,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3636,7 +3757,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:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3655,7 +3776,7 @@ msgstr "" " Estado de saída:\n" " Sempre con éxito." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3699,7 +3820,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3708,18 +3829,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3729,7 +3850,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3747,6 +3868,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3758,7 +3880,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3776,7 +3899,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3794,7 +3917,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -3824,7 +3947,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:1506 +#: builtins.c:1515 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -3849,7 +3972,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:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3871,7 +3994,7 @@ msgstr "" " Estado de Saída:\n" " Devuelve o estado da última orden executada." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3901,7 +4024,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3921,7 +4044,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3937,7 +4060,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3955,7 +4078,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3976,7 +4099,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3994,7 +4117,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4012,7 +4135,8 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4022,7 +4146,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Crea un coproceso chamado NOME.\n" " \n" @@ -4034,7 +4158,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado de saída da ORDE." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4048,7 +4172,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4066,7 +4190,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4080,7 +4204,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4098,7 +4222,7 @@ msgstr "" " Estado de Saída:\n" " Devolve 1 se a EXPRESIÓN avalía a 0; devovle 0 de outra maneira." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -4126,7 +4250,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4180,7 +4304,8 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -4190,19 +4315,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -4210,8 +4335,26 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Engade un directorio ao tope da rima de directorios, ou rota\n" +" a pila, facendo que o novo tope da rima sexa o\n" +" directorio de trabajo actual. Sen argumentos, intercambia\n" +" os dous directorios do tope.\n" +" \n" +" Argumentos:\n" +" +N\tRota a pila para que o N-ésimo directorio (contando\n" +" \tda izquierda da lista mostrada por `dirs',\n" +" \tcomezando desde cero) estea no tope.\n" +" -N\tRota a pila para que o N-ésimo directorio (contando\n" +" \tda derecha da lista mostrada por `dirs',\n" +" \tcomezando desde cero) estea no tope.\n" +" \n" +" dir\tagrega DIR á rima de directorios no tope,\n" +" \tfacéndoo o novo directorio de traballo actual.\n" +" \n" +" A orde interna `dirs' mostra a rima de directorios." -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -4220,16 +4363,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -4237,8 +4380,28 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Borra entradas da pila de directorios. Sen argumentos, borra\n" +" directorio do tope da pila, e cambia ao novo directorio tope.\n" +" \n" +" Opcións:\n" +" -n\tsuprime o cambio normal de directorio cando se borra\n" +" \tdirectorios da pila, así só se manipula a pila.\n" +" \n" +" Argumentos:\n" +" +N\tBorra a N-ésima entrada contando da esquerda da\n" +" \tlista mostrada por `dirs', comenzando desde cero.\n" +" \tPor exemplo: `popd +0' borra o primeiro directorio, `popd +1'\n" +" \to segundo.\n" +" \n" +" -N\tBorra a N-ésima entrada contando da derecha da\n" +" \tlista mostrada por `dirs', comezando desde cero.\n" +" \tPor exemplo: `popd -0' borra o último directorio, `popd -1'\n" +" \to penúltimo.\n" +" \n" +" A orde interna `dirs' mostra a pila de directorios." -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -4249,25 +4412,45 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Mostra a lista de directorios actualmente gravados. Os directorios\n" +" gárdanse na lista coa orde `pushd'; pode ir saíndo da\n" +" lista coa orde `popd'.\n" +" \n" +" Opcións:\n" +" -c\tlimpa a pila de directorios, eliminando todos os elementos\n" +" -l\tnon mostra as versións con prefixo de til dos directorios\n" +" \trelativos ao seu directorio inicial\n" +" -p\tmostra a pila de directorios cunha entrada por liña\n" +" -v\tmuestra a pila de directorios cunha entrada por liña coa\n" +" \tsúa posición na pila como prefixo\n" +" \n" +" Argumentos:\n" +" +N\tMostra a N-ésima entrada contando desde a esquerda da\n" +" \tlista mostrada por dirs cando se chama sen opcións,\n" +" \tcomezando desde cero.\n" +" \n" +" -N\tMostra a N-ésima entrada contando desde a dereita da\n" +"\tlista mostrada por dirs cando se chama sen opcións,\n" +"\tcomezando desde cero." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -4304,7 +4487,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:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4321,15 +4504,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -4343,7 +4526,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4356,11 +4539,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -4370,7 +4553,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4392,7 +4575,7 @@ msgstr "" " Devolve con éxito a menos que se forneza unha opción non válida o\n" " se produza un erro." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4423,7 +4606,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4434,20 +4617,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4464,7 +4648,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4474,6 +4658,26 @@ msgstr "" " \n" " Un sinónimo de `mapfile'." +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#, fuzzy +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" diff --git a/po/hr.gmo b/po/hr.gmo index 40d6910fae0366a164d102c12bc8917547a56d76..cc117fe74db6dcf7761e88de5ab0a0dd0768179f 100644 GIT binary patch delta 7748 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 delta 7957 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 diff --git a/po/hr.po b/po/hr.po index 99f2d67..f914d13 100644 --- a/po/hr.po +++ b/po/hr.po @@ -7,82 +7,88 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" "PO-Revision-Date: 2013-04-18 01:00+0200\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: Gtranslator 2.91.6\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "neispravan indeks polja" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: ne mogu pretvoriti indeksirano u asocijativno polje" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neispravan kljuÄ asocijativnog polja" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ne mogu pridružiti nenumeriÄkom indeksu" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, 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:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ne mogu napraviti: %s" -#: bashline.c:3982 +#: bashline.c:4091 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:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvi znak razliÄit od praznine nije „\"â€" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "nema zatvorene „%c†u %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: nedostaje dvotoÄje za razdvajanje" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "„%sâ€: neispravno drugo ime" @@ -91,45 +97,45 @@ msgstr "„%sâ€: neispravno drugo ime" msgid "line editing not enabled" msgstr "ureÄ‘ivanje redaka nije omogućeno" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "„%sâ€: neispravno ime tipkovniÄke mape" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ne mogu Äitati: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "„%sâ€: ne mogu ukloniti vezu" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "„%sâ€: nepoznato ime funkcije" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nije pridružen nijednoj tipki.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s se može pozvati pomoću " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "broj ponavljanja" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "ima znaÄenje samo u petljama „forâ€, „while†ili „untilâ€" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -139,300 +145,329 @@ msgstr "" " \n" " Bez IZRAZA vraća " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME nije postavljen" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "previÅ¡e argumenata" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "nema drugog direktorija" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD nije postavljen" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "redak %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "upozorenje: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcija zahtijeva argument" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: potreban je numeriÄki argument" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: nije pronaÄ‘en" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: neispravna opcija" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: neispravno ime opcije" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "„%sâ€: nije ispravan identifikator" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "neispravan oktalni broj" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "neispravan heksadekadski broj" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "neispravan broj" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: neispravno naveden signal" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%sâ€: nije pid ili ispravno naveden zadatak" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: varijabla samo za Äitanje" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s je izvan granica" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s je izvan granica" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: nema takvog zadatka" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: nema kontrole zadataka" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "nema kontrole zadataka" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: ograniÄeno" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "ograniÄeno" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nije ugraÄ‘en u ljusku" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "greÅ¡ka pisanja: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "greÅ¡ka pri postavljanju svojstava terminala: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "greÅ¡ka pri preuzimanju svojstava terminala: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: greÅ¡ka pri otkrivanju trenutnog direktorija: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: viÅ¡eznaÄan navod zadatka" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: neispravno ime radnje" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: nije navedeno nadopunjavanje" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "upozorenje: opcija -F možda neće raditi kako želite" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "upozorenje: opcija -C možda neće raditi kako želite" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "trenutno ne izvrÅ¡avam funkciju nadopunjavanja" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "može se koristiti samo u funkciji" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "„%sâ€: neispravno drugo ime" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "ne mogu koristiti „-f†za izradu funkcija" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija samo za Äitanje" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: ne mogu pretvoriti asocijativno u indeksirano polje" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dinamiÄko uÄitavanje nije dostupno" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "ne mogu otvoriti dijeljeni objekt %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "ne mogu pronaći %s u dijeljenom objektu %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: nije dinamiÄki uÄitan" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: ne mogu ukloniti: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: to je direktorij" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: nije obiÄna datoteka" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ne mogu izvrÅ¡iti binarnu datoteku" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ne mogu izvrÅ¡iti: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "odjava\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "nije prijavna ljuska: koristite „exitâ€" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Ima zaustavljenih zadataka.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Ima pokrenutih zadataka.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "naredba nije pronaÄ‘ena" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "specifikacija povijesti" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ne mogu otvoriti privremenu datoteku: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "trenutno" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "zadatak %d pokrenut bez kontrole zadataka" @@ -451,17 +486,17 @@ msgstr "%s: opcija zahtijeva argument -- %c\n" msgid "hashing disabled" msgstr "rasprÅ¡ivanje onemogućeno" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tablica rasprÅ¡ivanja prazna\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "pogoci\tnaredba\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" @@ -469,7 +504,7 @@ msgstr[0] "Naredbe ljuske koje odgovaraju kljuÄnoj rijeÄi „" msgstr[1] "Naredbe ljuske koje odgovaraju kljuÄnim rijeÄima „" msgstr[2] "Naredbe ljuske koje odgovaraju kljuÄnim rijeÄima „" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -477,12 +512,12 @@ msgstr "" "nisu pronaÄ‘ene teme pomoći za „%sâ€. PokuÅ¡ajte „help helpâ€, „man -k %s†ili " "„info %sâ€." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ne mogu otvoriti: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -502,15 +537,20 @@ msgstr "" "Zvjezdica (*) pokraj imena oznaÄava onemogućenu naredbu.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "ne mogu koristiti viÅ¡e od jedne od opcija -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "mjesto u povijesti" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: neispravan argument ograniÄenja" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: proÅ¡irenje povijesti nije uspjelo" @@ -524,113 +564,113 @@ msgstr "%s: inlib nije uspio" msgid "no other options allowed with `-x'" msgstr "nisu dozvoljene druge opcije uz „-xâ€" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenti moraju biti identifikatori procesa ili zadataka" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Nepoznata greÅ¡ka" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "oÄekujem izraz" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: nije indeksirano polje" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neispravno naveden opisnik datoteke" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neispravan opisnik datoteke: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: neispravan broj redaka" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: neispravan izvor polja" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neispravan element povratnog poziva" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "prazno ime varijable polja" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "potrebna je podrÅ¡ka varijable polja" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "„%sâ€: nedostaje znak oblika" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "„%câ€: neispravno naveden oblik vremena" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "„%câ€: neispravan znak oblika" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "upozorenje: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "nedostaje heksadekadska znamenka za \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "nedostaje unicode znamenka za \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "nema drugog direktorija" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: neispravan argument ograniÄenja" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "stog direktorija je prazan" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "indeks stoga direktorija" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -674,7 +714,7 @@ msgstr "" "naredba\n" "\t„dirs†pozvana bez opcija, poÄevÅ¡i od nule." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -699,7 +739,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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,143 +760,153 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neispravno navedeno vremensko ograniÄenje" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "greÅ¡ka Äitanja: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "ne mogu istovremeno poniÅ¡titi funkciju i varijablu" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: ne mogu poniÅ¡titi" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ne mogu poniÅ¡titi: %s je samo za Äitanje" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: nije varijabla polja" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: nije funkcija" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: ne mogu poniÅ¡titi" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "broj pomaka" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "ne mogu istovremeno postaviti i poniÅ¡titi opcije ljuske" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neispravno ime opcije ljuske" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "potrebno je ime datoteke kao argument" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: datoteka nije pronaÄ‘ena" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "ne mogu zaustaviti" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "ne mogu zaustaviti prijavnu ljusku" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s je drugo ime za „%sâ€\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je kljuÄna rijeÄ ljuske\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s je funkcija\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s je ugraÄ‘en u ljusku\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je ugraÄ‘en u ljusku\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je rasprÅ¡en (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: neispravan argument ograniÄenja" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "„%câ€: neispravna naredba" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ne mogu otkriti ograniÄenje: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "ograniÄenje" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ne mogu urediti ograniÄenje: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "oktalni broj" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "„%câ€: neispravan operator simboliÄkog naÄina" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "„%câ€: neispravan znak simboliÄkog naÄina" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " redak " @@ -870,82 +920,103 @@ msgstr "posljednja naredba: %s\n" msgid "Aborting..." msgstr "Prekidam..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "nepoznata greÅ¡ka naredbe" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "neispravna vrsta naredbe" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "neispravno spajanje" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "neispravan skok" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: nepovezana varijabla" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\avrijeme Äekanja ulaza je isteklo: automatska-odjava\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "ne mogu preusmjeriti standardni ulaz iz /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%câ€: neispravan znak oblika" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "greÅ¡ka cjevovoda" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ograniÄeno: ne možete navesti „/†u imenu naredbe" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: naredba nije pronaÄ‘ena" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: neispravan tumaÄ" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ne mogu izvrÅ¡iti binarnu datoteku" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je ugraÄ‘en u ljusku\n" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "ne mogu udvostruÄiti opisnik datoteke %d u opisnik datoteke %d" @@ -990,37 +1061,37 @@ msgstr "oÄekujem identifikator nakon pred-povećanja ili pred-smanjenja" msgid "missing `)'" msgstr "nedostaje „)â€" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "sintaksna greÅ¡ka: oÄekujem operand" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "sintaksna greÅ¡ka: neispravan aritmetiÄki operator" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (simbol greÅ¡ke je „%sâ€)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "neispravna aritmetiÄka baza" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "vrijednost baze je prevelika" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: greÅ¡ka izraza\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ne mogu pristupiti nadreÄ‘enim direktorijima" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" @@ -1035,148 +1106,148 @@ msgstr "ne mogu alocirati novi datoteÄni opisnik za bash ulaz iz fd %d" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: meÄ‘uspremnik već postoji za novi fd %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "razdvojen pid %d se javlja u pokrenutom zadatku %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "uklanjam zaustavljeni zadatak %d s grupom procesa %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) u the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ne postoji takav pid" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Gotovo" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Zaustavljen" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Zaustavljen(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Pokrenut" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Gotovo(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Izlaz %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Nepoznato stanje" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(jezgra izbaÄena) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld nije dijete ove ljuske" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ne postoji zapis o procesu %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: zadatak %d je zaustavljen" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: zadatak je dovrÅ¡en" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: zadatak %d je već u pozadini" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: redak %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (jezgra izbaÄena)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(sadaÅ¡nji wd: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp nije uspio" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ne mogu postaviti grupu procesa terminala (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "nema kontrole zadataka u ovoj ljusci" @@ -1228,17 +1299,17 @@ msgstr "realloc: otkriven podljev, mh_nbytes izvan granica" msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p već u tablici kao osloboÄ‘en?\n" @@ -1262,7 +1333,7 @@ msgstr "%s: neispravna usluga" msgid "%s: bad network path specification" msgstr "%s: neispravno navedena mrežna putanja" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "mrežne operacije nisu podržane" @@ -1299,224 +1370,259 @@ msgstr "Imate novu poÅ¡tu u $_" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta u %s je proÄitana\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "sintaksna greÅ¡ka: potreban aritmetiÄki izraz" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "sintaksna greÅ¡ka: neoÄekivana „;â€" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "sintaksna greÅ¡ka: „((%s))â€" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: neispravna vrsta instrukcije %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "neoÄekivani EOF pri traženju odgovarajućeg „%câ€" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "neoÄekivani EOF pri traženju „]]â€" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "sintaksna greÅ¡ka u uvjetnom izrazu: neoÄekivani simbol „%sâ€" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "sintaksna greÅ¡ka u uvjetnom izrazu" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neoÄekivani simbol „%sâ€, oÄekujem „)â€" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "oÄekujem „)â€" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "neoÄekivani argument „%s†uvjetnom unarnom operatoru" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "neoÄekivani argument uvjetnom unarnom operatoru" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "neoÄekivani simbol „%sâ€, oÄekujem uvjetni binarni operator" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "oÄekujem uvjetni binarni operator" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "neoÄekivani argument „%s†uvjetnom binarnom operatoru" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "neoÄekivani argument uvjetnom binarnom operatoru" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neoÄekivani simbol „%c†u uvjetnoj naredbi" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neoÄekivani simbol „%s†u uvjetnoj naredbi" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "neoÄekivani simbol %d u uvjetnoj naredbi" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "sintaksna greÅ¡ka kod neoÄekivanog simbola „%sâ€" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "sintaksna greÅ¡ka kod „%sâ€" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "sintaksna greÅ¡ka: neoÄekivani kraj datoteke" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "sintaksna greÅ¡ka" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Koristite „%s†za napuÅ¡tanje ljuske.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "neoÄekivani EOF pri traženju odgovarajuće „)â€" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funkcija „%s†nije pronaÄ‘ena" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: neispravan opisnik datoteke" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL pokazivaÄ na datoteku" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "opisnik datoteke izvan granica" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: viÅ¡eznaÄno preusmjeravanje" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ne mogu pisati preko postojeće datoteke" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ograniÄeno: ne mogu preusmjeriti izlaz" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ne mogu napraviti privremenu datoteku za here-document: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ne mogu pridružiti opisnik datoteke varijabli" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nije podržan bez umrežavanja" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "greÅ¡ka preusmjeravanja: ne mogu udvostruÄiti opisnik datoteke" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "ne mogu pronaći /tmp, molim, napravite ga!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti ispravno ime direktorija" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neispravna opcija" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: to je direktorij" + +#: shell.c:1777 msgid "I have no name!" msgstr "Nemam ime!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, inaÄica %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1525,39 +1631,49 @@ msgstr "" "Uporaba: %s [GNU dugaÄka opcija] [opcija] ...\n" "\t %s [GNU dugaÄka opcija] [opcija] skripta ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU dugaÄke opcije:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Opcije ljuske:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Koristite naredbu „bashbug†za prijavljivanje greÅ¡aka.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1731,89 +1847,104 @@ msgstr "Nepoznat signal #" msgid "Unknown Signal #%d" msgstr "Nepoznat signal #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "neispravna zamjena: nema zatvorene „%s†u %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ne mogu pridružiti popis elementu polja" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "ne mogu napraviti cjevovod za zamjenu procesa" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "ne mogu napraviti dijete za zamjenu procesa" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "ne mogu otvoriti imenovani cjevovod %s za Äitanje" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "ne mogu otvoriti imenovani cjevovod %s za pisanje" -#: subst.c:5178 +#: subst.c:5873 #, 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:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "neispravna zamjena: nema zatvorenog „`†u %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "ne mogu napraviti cjevovod za zamjenu naredbi" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "ne mogu napraviti dijete za zamjenu naredbi" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: ne mogu udvostruÄiti cjevovod kao opisnik datoteke 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parametar prazan ili nije postavljen" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: izraz podniza < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: neispravna zamjena" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: neispravan broj redaka" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "„%sâ€: neispravno drugo ime" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametar prazan ili nije postavljen" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: izraz podniza < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ne mogu pridružiti na ovaj naÄin" -#: subst.c:7917 +#: subst.c:8802 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:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "neispravna zamjena: nema zatvorenog „`†u %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "nema podudaranja: %s" @@ -1827,122 +1958,122 @@ msgstr "oÄekujem argument" msgid "%s: integer expression expected" msgstr "%s: oÄekujem cjelobrojni izraz" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "oÄekujem „)â€" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "oÄekujem „)â€, naÅ¡ao %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: oÄekujem unarni operator" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: oÄekujem binarni operator" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "nedostaje „]â€" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "neispravan broj signala" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: neispravan signal %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "greÅ¡ka pri uvozu definicije funkcije za „%sâ€" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "razina ljuske (%d) je previsoka, vraćam na 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: ne mogu pridružiti opisnik datoteke varijabli" -#: variables.c:3646 +#: variables.c:3043 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s ima prazan exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ne mogu otvoriti kao DATOTEKU" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s je izvan granica" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Copyright © 2011 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -1968,11 +2099,6 @@ msgstr "Ovo je slobodan softver, slobodno ga smijete mijenjati i dijeliti.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "NEMA JAMSTAVA, do krajnje mjere dozvoljene zakonom.\n" -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright © 2011 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1993,340 +2119,325 @@ msgstr "%s: %s:%d: ne mogu alocirati %lu bajtova (alocirano %lu bajtova)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: ne mogu alocirati %lu bajtova" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [ime[=vrijednost] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] ime [ime ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "" - -#: builtins.c:72 -msgid "false" -msgstr "" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "alias [-p] [ime[=vrijednost] ... ]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "" - #: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "alias [-p] [ime[=vrijednost] ... ]" + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "" -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unalias [-a] ime [ime ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr "" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "" -#: builtins.c:162 -msgid "times" -msgstr "" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( izraz ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ izraz ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | direktorij]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "" -#: builtins.c:240 +#: builtins.c:242 msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2338,7 +2449,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2346,17 +2457,17 @@ msgid "" " defined." msgstr "" -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2390,14 +2501,15 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2408,7 +2520,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2419,7 +2531,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2433,7 +2545,7 @@ msgid "" " not a shell builtin.." msgstr "" -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2449,7 +2561,7 @@ msgid "" " is invalid." msgstr "" -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2472,16 +2584,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2494,13 +2606,13 @@ msgid "" " -P is used; non-zero otherwise." msgstr "" -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2510,7 +2622,7 @@ msgid "" " cannot be read." msgstr "" -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2526,7 +2638,7 @@ msgstr "" " Izlazno stanje:\n" " Uvijek uspjeÅ¡no." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2538,7 +2650,7 @@ msgstr "" " Izlazno stanje:\n" " Uvijek uspjeÅ¡no." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2550,7 +2662,7 @@ msgstr "" " Izlazno stanje:\n" " Uvijek neuspjeÅ¡no." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2560,16 +2672,16 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2579,9 +2691,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2609,17 +2721,18 @@ msgid "" " assignment error occurs." msgstr "" -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Postavi vrijednosti i svojstva varijabli.\n" " \n" " Zastarjelo. Pogledajte „help declareâ€." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2634,7 +2747,7 @@ msgid "" " assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2660,15 +2773,15 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2681,7 +2794,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2708,7 +2821,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2720,7 +2833,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2761,7 +2874,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2772,8 +2885,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2784,7 +2897,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -2796,7 +2909,7 @@ 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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2809,7 +2922,7 @@ msgstr "" " Izlazi iz prijavne ljuske s izlaznim stanjem N. Vraća greÅ¡ku ako nije\n" " izvrÅ¡eno u prijavnoj ljusci." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2839,7 +2952,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2851,7 +2964,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2865,7 +2978,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -2874,22 +2987,22 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -2901,7 +3014,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2911,7 +3024,7 @@ msgid "" "given." msgstr "" -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2920,23 +3033,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -2945,7 +3058,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -2955,7 +3068,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -2969,7 +3082,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2979,14 +3092,14 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -2998,7 +3111,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3008,7 +3122,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3053,7 +3167,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3074,27 +3188,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3104,7 +3219,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3116,7 +3231,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3184,7 +3299,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3201,7 +3317,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3211,7 +3327,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3223,7 +3339,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3242,7 +3358,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3254,9 +3370,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3264,7 +3379,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3275,7 +3390,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3289,7 +3404,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3303,7 +3418,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3367,9 +3482,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3386,7 +3501,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3394,7 +3509,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3406,7 +3521,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3450,7 +3565,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3459,18 +3574,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3480,7 +3595,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3498,6 +3613,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3509,7 +3625,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3527,7 +3644,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3545,7 +3662,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3565,7 +3682,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3580,7 +3697,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3593,7 +3710,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3610,7 +3727,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3630,7 +3747,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3646,7 +3763,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3657,7 +3774,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3678,7 +3795,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3689,7 +3806,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3700,7 +3817,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3710,10 +3827,10 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3727,7 +3844,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3738,7 +3855,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3752,7 +3869,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3763,7 +3880,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3791,7 +3908,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3845,7 +3962,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -3855,19 +3972,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3876,7 +3993,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -3885,16 +4002,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3903,7 +4020,8 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -3914,25 +4032,45 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Prikaži popis trenutno zapamćenih direktorija. Direktoriji se dodaju\n" +" na popis naredbom „pushdâ€, kroz popis se možete vraćati naredbom\n" +" „popdâ€.\n" +" \n" +" Opcije:\n" +" -c\toÄisti stog direktorija uklanjanjem svih elemenata\n" +" -l\tne ispisuj tildom prefiksirane inaÄice direktorija\n" +" \trelativno u odnosu na poÄetni direktorij\n" +" -p\tispiÅ¡i stog direktorija jednu stavku po retku\n" +" -v\tispiÅ¡i stog direktorija jednu stavku po retku\n" +" \tprefiksiranu položajem u stogu\n" +" \n" +" Argumenti:\n" +" +N\tPrikazuje N-tu stavku s lijeve strane popisa koju prikazuje " +"naredba\n" +" \t„dirs†pozvana bez opcija, poÄevÅ¡i od nule.\n" +" \n" +" -N\tPrikazuje N-tu stavku s desne strane popisa koju prikazuje " +"naredba\n" +"\t„dirs†pozvana bez opcija, poÄevÅ¡i od nule." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -3953,7 +4091,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3970,15 +4108,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -3992,7 +4130,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4005,11 +4143,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -4019,7 +4157,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4032,7 +4170,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4063,7 +4201,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4074,20 +4212,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4104,7 +4243,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4114,6 +4253,17 @@ msgstr "" " \n" " Sinonim za „mapfileâ€." +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#, fuzzy +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" diff --git a/po/hu.gmo b/po/hu.gmo index 9309181afbdb91117aea40d237e134892300a2f7..a1b022e3669d6342b32cb4b782ec173d3a392c34 100644 GIT binary patch literal 160744 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 z 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 R)WTvry8-P4Gbj$ZweRiTU-y92Utt^Ae7IpW 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 C+!)aS diff --git a/po/hu.po b/po/hu.po index a49d913..c206a0e 100644 --- a/po/hu.po +++ b/po/hu.po @@ -1,87 +1,97 @@ # Hungarian translation for bash. -# Copyright (C) 2010 Free Software Foundation, Inc. +# Copyright (C) 2010, 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # -# Mate Ory , 2010. +# Mate Ory , 2010, 2016. +# Gabor Kelemen , 2016. msgid "" msgstr "" -"Project-Id-Version: bash-4.1\n" +"Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2010-08-06 17:44+0200\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2016-01-03 23:59+0100\n" "Last-Translator: Mate Ory \n" "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" +"X-Generator: Lokalize 1.5\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "Hibás tömbindex" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, 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:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: érvénytelen asszociatívtömb-index" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, 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:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: asszociatív tömbhöz való értékadásnál meg kell adni az indexet" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nem hozható létre: %s" -#: bashline.c:3982 +#: bashline.c:4091 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:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: az elsÅ‘ nem szóközkarakter nem „\"â€" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "nincs záró „%c†a következÅ‘ben: %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: hiányzó kettÅ‘spont-elválasztó" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "szögleteszárójel-kiegészítés: Nem foglalható memória ehhez: %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" +"szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás %d elem számára" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" +"szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás „%s†számára" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "„%sâ€: érvénytelen alias-név" @@ -90,46 +100,46 @@ msgstr "„%sâ€: érvénytelen alias-név" msgid "line editing not enabled" msgstr "nincs engedélyezve a sorszerkesztés" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "„%sâ€: érvénytelen billentyűkiosztás-név" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nem olvasható a következÅ‘: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "„%sâ€: nem lehetséges a kötés megszüntetése" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "„%sâ€: ismeretlen függvénynév" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nincs kötve egy billentyűhöz sem.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s a következÅ‘ módon hajtható végre: " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "ciklusszám" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "csak „forâ€, „while†és „until†ciklusokban értelmezhetÅ‘" # see $ help caller -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -139,300 +149,329 @@ msgstr "" " \n" " EXPR nélkül a " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "Nincs beállítva HOME" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "túl sok argumentum" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "nincs másik könyvtár" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "Nincs beállítva OLDPWD" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "%d. sor: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "figyelmeztetés: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: használat: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: a kapcsolónak kötelezÅ‘ argumentuma van" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: a kötelezÅ‘ argumentum egy szám" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: nem található" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: érvénytelen kapcsoló" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: érvénytelen kapcsolónév" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "„%sâ€: érvénytelen azonosító" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "érvénytelen oktális szám" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "érvénytelen hexadecimális szám" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "érvénytelen szám" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: érvénytelen szignálmegadás" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%sâ€: nem pid vagy munkaazonosító" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: csak olvasható változó" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s kívül esik a tartományon" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argumentum" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s kívül esik a tartományon" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: nincs ilyen munka" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: nincs munkakezelés" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "nincs munkakezelés" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: korlátozott" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "korlátozott" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nem beépített parancs" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "írási hiba: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "hiba a terminálattribútum beállításakor: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "hiba a terminálattribútum lekérdezésekor: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: hiba a munkakönyvtár lekérdezésekor: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: kétértelmű munkamegadás" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "ebben a verzióban nem érhetÅ‘ el súgó" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: érvénytelen műveletnév" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: nincs kiegészítés meghatározva" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "figyelmeztetés: a -F kapcsoló nem a várt módon működhet" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "figyelmeztetés: a -C kapcsoló nem a várt módon működhet" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "jelenleg nincs kiegészítési függvény végrehajtás alatt" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "csak függvényben használható" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: a referenciaváltozó nem lehet tömb" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: a névhivatkozás változó önhivatkozása nem engedélyezett" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: körkörös névhivatkozás" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "nem használható a „-f†függvény létrehozására" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: csak olvasható függvény" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: az idézÅ‘jelezett összetett tömb értékadása elavult" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nem lehetséges az asszociatív tömb indexeltté alakítása" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "a dinamikus betöltés nem érhetÅ‘ el" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "megosztott objektumfájl megnyitása sikertelen: %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "%s nem található a(z) %s megosztott objektumfájlban: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "%s betöltési függvénye hibát ad vissza (%d): nincs betöltve" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: nem dinamikusan van betöltve" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nem törölhetÅ‘: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s egy könyvtár" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: nem normál fájl" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: a fájl túl nagy" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: bináris nem hajtható végre" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nem hajtható végre: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "kijelentkezés\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "nem bejelentkezÅ‘ parancsértelmezÅ‘: használja az „exitâ€-et" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Vannak leállított munkák.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Vannak futó munkák.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "nincs ilyen parancs" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "elÅ‘zményválasztás" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: az átmeneti fájl nem nyitható meg: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "aktuális" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "a(z) %d. munka munkakezelés nélkül indult" @@ -451,25 +490,24 @@ msgstr "%s: a kapcsolónak kötelezÅ‘ argumentuma van – %c\n" msgid "hashing disabled" msgstr "a hashelés le van tiltva" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: a hashtábla üres\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "t.szám\tparancs\n" -# fuck. -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "A következÅ‘ kifejezésre illeszkedÅ‘ parancsok: „" msgstr[1] "A következÅ‘ kifejezésekre illeszkedÅ‘ parancsok: „" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -477,12 +515,12 @@ msgstr "" "nem illeszkedik egy szócikk sem a következÅ‘re: „%sâ€.\n" "A „help helpâ€, „man -k '%s'†vagy „info '%s'†parancsok segíthetnek." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nem nyitható meg: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -501,15 +539,20 @@ msgstr "" "A parancs nevét követÅ‘ csillag (*) azt jelzi, hogy le van tiltva.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "a következÅ‘ kapcsolók kizárják egymást: -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "elÅ‘zménypozíció" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: érvénytelen argumentum" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: sikertelen elÅ‘zménybÅ‘l való kiegészítés" @@ -523,113 +566,113 @@ msgstr "%s: sikertelen inlib" msgid "no other options allowed with `-x'" msgstr "a „-x†mellett nem használható más kapcsoló" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: az argumentumok folyamat- vagy munkaazonosítók lehetnek" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Ismeretlen hiba" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "az értelmezÅ‘ kifejezést várt" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: nem egy indexelt tömb" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: érvénytelen fájlleíró-megadás" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: érvénytelen fájlleíró: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: sorok száma érvénytelen" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: érvénytelen tömbkezdet" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: érvénytelen parancshívási távolság" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "üres tömbváltozó-név" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "a tömbök használata nincs támogatva" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "„%sâ€: hiányzó formátumkarakter" -#: builtins/printf.def:456 -#, fuzzy, c-format +#: builtins/printf.def:467 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%s: érvénytelen idÅ‘korlát-megadás" +msgstr "„%câ€: érvénytelen idÅ‘formátum-megadás" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "„%câ€: érvénytelen formátumkarakter" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "figyelmeztetés: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "formátumfeldolgozási probléma: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "hiányzó hexadecimális számjegy a következÅ‘höz: \\x" -#: builtins/printf.def:880 -#, fuzzy, c-format +#: builtins/printf.def:893 +#, c-format msgid "missing unicode digit for \\%c" -msgstr "hiányzó hexadecimális számjegy a következÅ‘höz: \\x" +msgstr "hiányzó unicode számjegy a következÅ‘höz: \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "nincs másik könyvtár" -#: builtins/pushd.def:354 -#, fuzzy, c-format +#: builtins/pushd.def:360 +#, c-format msgid "%s: invalid argument" -msgstr "%s: érvénytelen korlátérték" +msgstr "%s: érvénytelen argumentum" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "a könyvtárverem üres" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "könyvtárveremindex" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -652,22 +695,24 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -"Megjeleníti a jelenleg megjegyzett könyvtárakat. A könyvtárakat a „pushdâ€\n" -"paranccsal lehet a verembe rakni; és a „popd†paranccsal kivenni.\n" +"Megjeleníti a jelenleg megjegyzett könyvtárakat. A könyvtárakat a\n" +" „pushd†paranccsal lehet a verembe rakni; és a „popd†paranccsal " +"kivenni.\n" " \n" " Kapcsolók:\n" -" -c a könyvtárverem törlése az összes elem eltávolításával\n" -" -l a saját könyvtárat ne rövidítse a listázáskor egy tilde (~)\n" -" -p a könyvtárverem kiírása soronként egy elemmel\n" -" -v a könyvtárverem kiírása soronként egy elemmel, a vermen\n" -" belüli pozíció jelölésével\n" +" -c\ta könyvtárverem törlése az összes elem eltávolításával\n" +" -l\ta saját könyvtárat ne rövidítse a listázáskor egy tilde (~)\n" +" -p\ta könyvtárverem kiírása soronként egy elemmel\n" +" -v\ta könyvtárverem kiírása soronként egy elemmel, a vermen\n" +" \tbelüli pozíció jelölésével\n" " \n" " Argumentumok:\n" -" +N N darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" -" á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" +" +N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" +" \táltal megjelenített listán balról számolva, nullától kezdve.\n" +" -N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" +" \táltal megjelenített listán jobbról számolva, nullától kezdve." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -691,29 +736,29 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Egy könyvtárat tesz a könyvtárverem tetejére, vagy forgatja a vermet, az új\n" -"felsÅ‘ elemmé a jelenlegi munkakönyvtárat téve. Argumentumok nélkül hívva a\n" -"két felsÅ‘ könyvtárat cseréli meg.\n" +"Egy könyvtárat tesz a könyvtárverem tetejére, vagy forgatja a vermet,\n" +" az új felsÅ‘ elemmé a jelenlegi munkakönyvtárat téve. Argumentumok\n" +" nélkül hívva a két felsÅ‘ könyvtárat cseréli meg.\n" " \n" " Kapcsolók:\n" -" -n Ne váltson könyvtárat hozzáadáskor, vagyis csak a\n" -" vermet változtassa.\n" +" -n\tNe váltson könyvtárat hozzáadáskor, vagyis csak a\n" +" \tvermet változtassa.\n" " \n" " Argumentumok:\n" -" +N Úgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" -" kezdve, a „dirs†által kiírt listán balról számolva)\n" -" kerüljön a verem tetejére.\n" +" +N\tÚgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" +" \tkezdve, a „dirs†által kiírt listán balról számolva)\n" +" \tkerüljön a verem tetejére.\n" " \n" -" -N Úgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" -" kezdve, a „dirs†által kiírt listán jobbról számolva)\n" -" kerüljön a verem tetejére.\n" +" -N\tÚgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" +" \tkezdve, a „dirs†által kiírt listán jobbról számolva)\n" +" \tkerüljön a verem tetejére.\n" " \n" -" dir A verem tetejére helyezi KTÃR könyvtárat, és ugyanezt\n" -" állítja be új munkakönyvtárnak.\n" +" dir\tA verem tetejére helyezi KTÃR könyvtárat, és ugyanezt\n" +" \tállítja be új munkakönyvtárnak.\n" " \n" " A „dirs†beépített parancs listázza a könyvtárvermet." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -733,163 +778,173 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Elemeket vesz ki a könyvtárverembÅ‘l. Argumentumok nélkül kiveszi a legfel-\n" -"sÅ‘ elemet, és a kivett elemre állítja az új munkakönyvtárat.\n" +"Elemeket vesz ki a könyvtárverembÅ‘l. Argumentumok nélkül kiveszi a\n" +" legfelsÅ‘ elemet, és a kivett elemre állítja az új munkakönyvtárat.\n" " \n" " Kapcsolók:\n" -" -n Ne váltson könyvtárat eltávolításkor, vagyis csak a vermet\n" -" változtassa.\n" +" -n\tNe váltson könyvtárat eltávolításkor, vagyis csak a vermet\n" +" \tváltoztassa.\n" " \n" " Argumentumok:\n" -" +N Eltávolítja az N-edik elemet a „dirs†által kiírt listán, nullá-\n" -" tól, balról számolva. Pl. a „popd +0†az elsÅ‘, míg a „popd +1†a\n" -" könyvtárat távolítja el.\n" -" -N Eltávolítja az N-edik elemet a „dirs†által kiírt listán, nullá-\n" -" tól, jobbról számolva. Pl. a „popd -0†az utolsó, a „popd -1†az\n" -" utolsó elÅ‘tti könyvtárat távolítja el.\n" +" +N\tEltávolítja az N-edik elemet a „dirs†által kiírt listán,\n" +" \tnullától, balról számolva. Pl. a „popd +0†az elsÅ‘, míg a\n" +" \t„popd +1†a második könyvtárat távolítja el.\n" +" -N\tEltávolítja az N-edik elemet a „dirs†által kiírt listán,\n" +" \tnullától, jobbról számolva. Pl. a „popd -0†az utolsó,\n" +" \ta „popd -1†az utolsó elÅ‘tti könyvtárat távolítja el.\n" " \n" " A „dirs†beépített parancs listázza a könyvtárvermet." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: érvénytelen idÅ‘korlát-megadás" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "olvasási hiba: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" "csak függvénybÅ‘l vagy source-olt parancsfájlból lehet „returnâ€-nel " "visszatérni" -#: builtins/set.def:782 +#: builtins/set.def:841 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:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: nem szüntethetÅ‘ meg" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nem szüntethetÅ‘ meg: csak olvasható %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: nem egy tömbváltozó" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: nem függvény" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: nem exportálható" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "shift-szám" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 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:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: érvénytelen parancsértelmezÅ‘kapcsoló-név" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "fájlnévargumentum szükséges" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: a fájl nem található" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "nem lehet szüneteltetni" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "nem lehet bejelentkezÅ‘ parancsértelmezÅ‘t szüneteltetni" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s egy alias a következÅ‘re: „%sâ€\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" -msgstr "%s nem parancsértelmezÅ‘-kulcsszó\n" +msgstr "%s egy parancsértelmezÅ‘-kulcsszó\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s egy függvény\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s egy speciális beépített parancs\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s egy beépített parancs\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" -msgstr "%s egy %s\n" +msgstr "%s: %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s hashelve van (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: érvénytelen korlátérték" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "„%câ€: érvénytelen parancs" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nem kérdezhetÅ‘ le a korlát: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "korlát" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nem módosítható a korlát: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "oktális szám" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "„%câ€: érvénytelen szimbolikus módoperátor" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "„%câ€: érvénytelen szimbolikus módkarakter" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " sor: " @@ -903,82 +958,103 @@ msgstr "utolsó parancs: %s\n" msgid "Aborting..." msgstr "Megszakítás..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:463 msgid "unknown command error" msgstr "hiba: érvénytelen parancs" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "hibás parancstípus" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "hibás csatlakozó" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "hibás ugrás" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: kötetlen változó" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "IDÅFORMÃTUM: „%câ€: érvénytelen formátumkarakter" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "hibás csÅ‘vezeték" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: a maximális eval beágyazási szint túllépve (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: a maximális source beágyazási szint túllépve (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: a maximális függvénybeágyazási szint túllépve (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: korlátozott: nem adható meg „/†a parancsok nevében" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: parancs nem található" -#: execute_cmd.c:5206 -#, fuzzy, c-format +#: execute_cmd.c:5470 +#, c-format msgid "%s: %s" -msgstr "%s egy %s\n" +msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: rossz parancsértelmezÅ‘" -#: execute_cmd.c:5280 -#, fuzzy, c-format +#: execute_cmd.c:5545 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: bináris nem hajtható végre" +msgstr "%s: a bináris nem hajtható végre: %s" -#: execute_cmd.c:5352 -#, fuzzy, c-format +#: execute_cmd.c:5623 +#, c-format msgid "`%s': is a special builtin" -msgstr "%s egy beépített parancs\n" +msgstr "„%sâ€: egy speciális beépített parancs" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, 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" @@ -1023,37 +1099,37 @@ msgstr "prefix növelés vagy csökkentés után azonosító kell következzen" msgid "missing `)'" msgstr "hiányzó „)â€" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "szintaktikai hiba: operandus kell következzen" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "szintaktikai hiba: érvénytelen aritmetikai operátor" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (hibás token: „%sâ€)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "érvénytelen számrendszer" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "túl nagy érték a számrendszerhez" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: hibás kifejezés\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: nem érhetÅ‘ek el a szülÅ‘könyvtárak" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nem lehet újraindítani a nodelay módot a(z) %d. fájlleíróhoz" @@ -1069,148 +1145,148 @@ msgstr "" 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:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp csÅ‘vezeték" -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, 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:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: %5ld. folyamat (%s) a the_pipeline-ban" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: nincs ilyen pid" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "%d. szignál" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Kész" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Megállítva" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Megállítva(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Fut" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Kész(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Kilépett(%d)" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Ismeretlen állapot" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(core készült) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (mk: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "gyermek setpgid (innen: %ld ide: %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Nincs bejegyzés %ld. számú folyamatról" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: %d. számú munka le lett állítva" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: a munka be lett fejezve" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: %d. számú munka már a háttérben van" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: WNOHANG bekapcsolása a korlátlan blokk elkerülésére" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: %d. sor: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (core készült)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(mk most: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp sikertelen" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nem állítható be a terminál folyamatcsoportja (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "nincsen munkakezelés ebben a parancsértelmezÅ‘ben" @@ -1264,17 +1340,17 @@ msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartomány msgid "realloc: start and end chunk sizes differ" msgstr "realloc: kezdÅ‘- és záródarab mérete eltér" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, 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" @@ -1298,7 +1374,7 @@ msgstr "%s: érvénytelen szolgáltatás" msgid "%s: bad network path specification" msgstr "%s: hibás hálózatiútvonal-megadás" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "a hálózati műveletek nincsenek támogatva" @@ -1335,268 +1411,314 @@ msgstr "Új levél a következÅ‘ben: $_" msgid "The mail in %s has been read\n" msgstr "A(z) „%s†helyen lévÅ‘ levél el van olvasva\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "szintaktikai hiba: aritmetikai kifejezés szükséges" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "szintaktikai hiba: váratlan „;â€" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "szintaktikai hiba: „((%s))â€" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: hibás utasítástípus: %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "a(z) %d. sorban kezdett heredocot EOF zárja („%s†helyett)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: %d. átirányító utasítás kívül esik a tartományon" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "a maximális here-document szám túllépve" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "váratlan EOF „%c†helyett" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "váratlan EOF „]]†helyett" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "szintaktikai hiba a feltételben: váratlan token: „%sâ€" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "szintaktikai hiba a feltételben" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "váratlan token (%s) „)†helyett" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "„)†szükséges" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "váratlan argumentum (%s) feltételes egyoperandusú operátorhoz" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "váratlan argumentum feltételes egyoperandusú operátorhoz" -#: parse.y:4339 +#: parse.y:4579 #, 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:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "feltételes kétoperandusú operátor szükséges" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "váratlan argumentum (%s) feltételes kétoperandusú operátorhoz" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "váratlan argumentum feltételes kétoperandusú operátorhoz" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "váratlan token (%c) feltételes parancsban" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "váratlan token (%s) feltételes parancsban" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "váratlan token (%d) feltételes parancsban" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "szintaktikai hiba „%s†váratlan token közelében" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "szintaktikai hiba „%s†közelében" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "szintaktikai hiba: váratlan fájlvége" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "szintaktikai hiba" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "„%s†használatával lehet elhagyni a parancsértelmezÅ‘t.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "váratlan EOF „)†helyett" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "kiegészítés: nem található „%s†függvény" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: hibás csatlakozó (%d)" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: érvénytelen fájlleíró" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL fájlmutató" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%câ€: érvénytelen formátumkarakter" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "fájlleíró kívül esik a tartományon" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: kétértelmű átirányítás" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nem lehet felülírni létezÅ‘ fájlt" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: korlátozott: nem lehet átirányítani a kimenetet" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nem lehet a heredocnak átmeneti fájlt létrehozni: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nem lehet változóhoz fájlleírót rendelni" -#: redir.c:582 +#: redir.c:586 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:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "átirányítási hiba: nem lehet duplikálni a fájlleírót" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "nem található /tmp, hozza létre!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp érvényes könyvtárnév kell legyen" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: érvénytelen kapcsoló" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "az uid nem állítható be %d értékre: a hatásos uid %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "a gid nem állítható be %d értékre: a hatásos gid %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: ez egy könyvtár" + +#: shell.c:1777 msgid "I have no name!" msgstr "Nincs nevem!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, %s-(%s) verzió\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"Használat: %s [GNU hosszú kapcsoló] [kapcsoló] ...\n" -" %s [GNU hosszú kapcsoló] [kapcsoló] parancsfájl ...\n" +"Használat:\t%s [GNU hosszú kapcsoló] [kapcsoló] ...\n" +"\t%s [GNU hosszú kapcsoló] [kapcsoló] parancsfájl ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU hosszú kapcsolók:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "ParancsértelmezÅ‘-kapcsolók:\n" -#: shell.c:1835 -#, fuzzy +#: shell.c:1938 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" +msgstr "\t-ilrsD vagy -c parancs vagy -O shopt_option\t\t(csak hívás)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s vagy -o kapcsoló\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "A „bashbug†paranccsal jelenthet hibákat.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "a bash honlapja: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Ãltalános segítség a GNU szoftverek használatához: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: érvénytelen művelet" @@ -1770,77 +1892,92 @@ msgstr "Ismeretlen szignál #" msgid "Unknown Signal #%d" msgstr "%d. számú ismeretlen szignál" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, 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:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: lista nem adható tömbelemnek értékül" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "nem hozható létre a csÅ‘vezeték a folyamatbehelyettesítéshez" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "nem hozható létre a gyermek a folyamatbehelyettesítéshez" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nem nyitható meg olvasásra a(z) %s csÅ‘vezeték" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nem nyitható meg írásra a(z) %s csÅ‘vezeték" -#: subst.c:5178 +#: subst.c:5873 #, 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:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "hibás helyettesítés: nincs záró „`†a következÅ‘ben: %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "nem hozható létre csÅ‘vezeték a parancsbehelyettesítéshez" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "nem hozható létre gyermek a parancsbehelyettesítéshez" -#: subst.c:5433 +#: subst.c:6153 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:5837 subst.c:8050 -#, fuzzy, c-format +#: subst.c:6580 subst.c:8939 +#, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz" +msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: a paraméter null vagy nincs beállítva" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: részkarakterlánc-kifejezés < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: rossz helyettesítés" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: az indirekt kiegészítés érvénytelen" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: érvénytelen változónév" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: a paraméter null vagy nincs beállítva" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: részkarakterlánc-kifejezés < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nem lehet így értéket adni" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1848,12 +1985,12 @@ msgstr "" "a parancsértelmezÅ‘ késÅ‘bbi verziói kötelezÅ‘vé teszik majd az aritmetikai " "kiértékelést" -#: subst.c:8421 +#: subst.c:9349 #, 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:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "nincs találat: %s" @@ -1867,132 +2004,132 @@ msgstr "argumentum szükséges" msgid "%s: integer expression expected" msgstr "%s: egész kifejezés szükséges" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "„)†szükséges" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "„)†szükséges %s helyett" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: egyoperandusú operátor szükséges" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: kétoperandusú operátor szükséges" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "hiányzó „]â€" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "érvénytelen szignálszám" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: rossz szignál: %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "hiba a függvénydefiníció betöltésekor: „%sâ€" -#: variables.c:780 +#: variables.c:814 #, 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:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz" - -#: variables.c:2228 +#: variables.c:2413 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:2247 -#, fuzzy, c-format +#: variables.c:2432 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: nem lehet változóhoz fájlleírót rendelni" +msgstr "%s: nem lehet a változóhoz értéket rendelni" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: érvénytelen változóérték a névhivatkozáshoz" + +#: variables.c:3940 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:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s exportstr-je null" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "érvénytelen karakter (%d) %s exportstr-jében" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "nincs „=†%s exportstr-jében" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nincs global_variables környezet" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nem nyitható meg FILE-ként" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz" -#: variables.c:5307 -#, fuzzy, c-format +#: variables.c:5669 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s kívül esik a tartományon" +msgstr "%s: %s: a kompatibilitási érték kívül esik a tartományon" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright © 2009 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright © 2015 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -"A licenc GPLv3+: a GNU GPL 3. vagy újabb változata \n" +"A licenc GPLv3+: a GNU GPL 3. vagy újabb változata\n" +"\n" #: version.c:86 version2.c:86 #, c-format @@ -2000,19 +2137,12 @@ msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, %s (%s) verzió\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" +msgstr "Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja." #: 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:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright © 2009 Free Software Foundation, Inc." +msgstr "NINCS GARANCIA, a törvény által engedélyezett mértékig." #: xmalloc.c:91 #, c-format @@ -2034,132 +2164,117 @@ msgstr "%s: %s:%d nem lehetséges %lu byte foglalása (%lu byte lett foglalva)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d nem lehetséges %lu byte foglalása" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [név[=érték] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] név [név ...]" -#: builtins.c:51 -#, fuzzy +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -"bind [-lpvsPVS] [-m kiosztás] [-f fájlnév] [-q név] [-u név] [-r billkomb] [-" -"x billkomb:shell-parancs] [billkomb:readline-függvény vagy readline-parancs]" +"bind [-lpsvPSVX] [-m kiosztás] [-f fájlnév] [-q név] [-u név] [-r billkomb] " +"[-x billkomb:shell-parancs] [billkomb:readline-függvény vagy readline-" +"parancs]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [shell-builtin [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [kif]" -#: builtins.c:64 -#, fuzzy -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|-P] [ktár]" - #: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [ktár]" + +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] parancs [arg ...]" -#: builtins.c:76 -#, fuzzy -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFilrtux] [-p] [név[=érték] ...]" - #: builtins.c:78 -#, fuzzy -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFilrtux] [-p] név[=érték] ..." +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [név[=érték] ...]" #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] név[=érték] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [kapcsoló] név[=érték] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f fájlnév] [név ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts opciók név [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a név] [parancs [argumentumok ...]] [átirányítás ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e ename] [-lnr] [elsÅ‘] [utolsó] vagy fc -s [minta=csere] [parancs]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [munkaszám]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [munkaszám ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p útvonal] [-dt] [név ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [minta ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2167,15 +2282,16 @@ msgstr "" "history [-c] [-d szám] [n] vagy history -anrw [fájlnév] vagy history -ps arg " "[arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [munkaszám ...] vagy jobs -x parancs [args]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [munkaszám ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2183,117 +2299,107 @@ msgstr "" "kill [-s szignál | -n szignálszám | -szignál] pid | munkaszám ... vagy kill -" "l [szignál]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" -"read [-ers] [-a tömb] [-d elválasztó] [-i szöveg] [-n nchars] [-N nchars] [-" -"p prompt] [-t idÅ‘keret] [-u fd] [név ...]" +"read [-ers] [-a tömb] [-d elválasztó] [-i szöveg] [-n szám] [-N szám] [-p " +"prompt] [-t idÅ‘keret] [-u fd] [név ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 -#, fuzzy -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [--abefhkmnptuvxBCHP] [-o beállításnév] [arg ...]" - #: builtins.c:142 -#, fuzzy -msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [név ...]" +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o beállításnév] [--] [arg ...]" #: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [név ...]" + +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [név[=érték] ...] vagy export -p" -#: builtins.c:146 -#, fuzzy -msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "readonly [-af] [név[=érték] ...] vagy readonly -p" - #: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [név[=érték] ...] vagy readonly -p" + +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source fájlnév [argumentumok]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". fájlnév [argumentumok]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 -msgid "test [expr]" -msgstr "test [expr]" - #: builtins.c:160 +msgid "test [expr]" +msgstr "test [kifejezés]" + +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] szignál ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] név [név ...]" -#: builtins.c:169 -#, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHacdefilmnpqrstuvx] [korlát]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [korlát]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mód]" -#: builtins.c:175 -#, fuzzy +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "wait [id]" +msgstr "wait [-n] [id ...]" -#: builtins.c:179 -#, fuzzy +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NÉV [in SZAVAK ... ] ; do PARANCSOK; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( kif1; kif2; kif3 )); do PARANCSOK; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NÉV [in SZAVAK ... ;] do PARANCSOK; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] csÅ‘vezeték" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case SZÓ in [MINTA [| MINTA]...) PARANCSOK ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2301,63 +2407,63 @@ msgstr "" "if PARANCSOK; then PARANCSOK; [ elif PARANCSOK; then PARANCSOK; ]... [ else " "PARANCSOK; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while PARANCSOK; do PARANCSOK; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until PARANCSOK; do PARANCSOK; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NÉV] parancs [átirányítások]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function név { PARANCSOK ; } vagy név () { PARANCSOK ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ PARANCSOK ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "munkaszám [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( kifejezés ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ kifejezés ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "variables - Néhány változó neve és jelentése" +msgstr "variables - Néhány parancsértelmezÅ‘-változó neve és jelentése" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | ktár]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [optnév ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v változó] formátum [argumentumok]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2367,36 +2473,36 @@ msgstr "" "globminta] [-W szólista] [-F függvény] [-C parancs] [-X szűrÅ‘minta] [-P " "prefixum] [-S szuffixum] [név ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o beállítás] [-A művelet] [-G globminta] [-W " +"compgen [-abcdefgjksuv] [-o beállítás] [-A művelet] [-G globminta] [-W " "szólista] [-F függvény] [-C parancs] [-X szűrÅ‘minta] [-P prefixum] [-S " "szuffixum] [szó]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o beállítás] [-DE] [név ...]" -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" -"mapfile [-n szám] [-O kezdet] [-s szám] [-t] [-u fd] [-C parancs] [-c " -"távolság] [tömb]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d elválasztó] [-n szám] [-O kezdet] [-s szám] [-t] [-u fd] [-C " +"parancs] [-c távolság] [tömb]" + +#: builtins.c:244 +msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" "readarray [-n szám] [-O kezdet] [-s szám] [-t] [-u fd] [-C parancs] [-c " "távolság] [tömb]" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2408,7 +2514,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2417,37 +2523,37 @@ msgid "" msgstr "" "Aliasok definiálása vagy kiírása.\n" " \n" -" Argumentumok nélkül az „alias†kiír egy újrahasználható listát a meglé-\n" -" vÅ‘ aliasokról „alias NÉV=ÉRTÉK' formában a szabványos kimenetre.\n" +" Argumentumok nélkül az „alias†kiír egy újrahasználható listát a " +"meglévÅ‘\n" +" aliasokról „alias NÉV=ÉRTÉK' formában a szabványos kimenetre.\n" " \n" " Különben egy NÉV nevű aliast definiál ÉRTÉK értékkel. Az ÉRTÉK végén a\n" -" záró szóköz lehetÅ‘vé teszi a következÅ‘ szó számára is az aliashelyette-\n" -" sítést.\n" +" záró szóköz lehetÅ‘vé teszi a következÅ‘ szó számára is az\n" +" aliashelyettesítést.\n" " \n" -" Beállítások:\n" -" -p Kiír minden aliast a fenti formában\n" +" Kapcsolók:\n" +" -p\tkiír minden aliast a fenti formában\n" " \n" " Kilépési kód:\n" " igazzal tér vissza, kivéve ha nincs megadott NÉV nevű alias definiálva." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Minden NÉV eltávolítása a definiált aliasok közül.\n" " \n" -" Beállítások:\n" -" -a minden definíció törlése.\n" +" Kapcsolók:\n" +" -a\tminden definíció törlése\n" " \n" " Sikeresen tér vissza, kivéve ha nincs megadott NÉV nevű alias." -#: builtins.c:289 -#, fuzzy +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2481,7 +2587,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2490,13 +2597,15 @@ msgstr "" "Readline billentyűkötések és változók beállítása.\n" " \n" " Egy billentyűsorozat hozzárendelése Readline függvényhez vagy makróhoz,\n" -" vagy Readline változó beállítása. A beállítás nélküli szintaxis mege-\n" -" gyezik az ~/.inputrc-ben találhatóval, de kell legyen egy argumentuma:\n" +" vagy Readline változó beállítása. A beállítás nélküli szintaxis " +"megegyezik\n" +" az ~/.inputrc-ben találhatóval, de kell legyen egy argumentuma:\n" " pl. bind '\"\\C-x\\C-r\": re-read-init-file'.\n" " \n" -" Beállítások:\n" -" -m kiosztás KIOSZTÃS használata kiosztásként a parancs hatásá-\n" -" nak idejére. Elfogadható kiosztásnevek: emacs,\n" +" Kapcsolók:\n" +" -m kiosztás A KIOSZTÃS használata kiosztásként a parancs " +"hatásának\n" +" idejére. Elfogadható kiosztásnevek: emacs,\n" " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-\n" " move, vi-command és vi-insert.\n" " -l Nevek és függvények listázása.\n" @@ -2504,26 +2613,30 @@ msgstr "" " -p Függvények és kötések listázása újrahasználható\n" " formában.\n" " -S Makrókat végrehajtó billentyűkombinációk és " -"értéke-\n" -" ik listázása.\n" +"értékeik\n" +" listázása.\n" " -s Makrókat végrehajtó billentyűkombinációk és " -"értéke-\n" -" ik listázása újrahasználható formában.\n" +"értékeik\n" +" listázása újrahasználható formában.\n" " -V Változónevek és értékek listázása.\n" " -v Változónevek és értékek listázása újrahasználható\n" " formában.\n" " -q függvénynév A függvényhez tartozó billentyűkombináció " "lekérése.\n" -" -u függvénynév Össze adott függvényhez tartozó billentyűkombiná-\n" -" ció törlése.\n" +" -u függvénynév Össze adott függvényhez tartozó " +"billentyűkombináció\n" +" törlése.\n" " -r billkomb A BILLKOMB-hoz tartozó kötések törlése.\n" " -f fájlnév Kötések olvasása FÃJLNÉV fájlból.\n" -" -x billkomb:shell-parancs SHELL-PARANCS végrehajtása BILLKOMB-ra.\n" +" -x billkomb:shell-parancs\tSHELL-PARANCS végrehajtása BILLKOMB-ra.\n" +" -X A -x használatával kötött billentyűkombinációk\n" +" és a társított parancsok kiírása, bemenetként\n" +" újrahasználható formában.\n" " \n" " Kilépési kód:\n" " a bind 0-val tér vissza, ha nincs ismeretlen kapcsoló vagy hiba." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2533,15 +2646,15 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -"Kilép a for, while vagy until ciklusokból.\n" +"Kilépés a for, while vagy until ciklusokból.\n" " \n" -" Kilép egy FOR, WHILE vagy UNTIL ciklusból. Ha N meg van adva, akkor N\n" +" Kilépés egy FOR, WHILE vagy UNTIL ciklusból. Ha N meg van adva, akkor N\n" " egymásba ágyazott ciklusból lép ki.\n" " \n" " Kilépési kód:\n" " A kilépési kód 0, ha N >= 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2551,16 +2664,15 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -"Újrakezdi a for, while vagy until ciklust.\n" +"A for, while vagy until ciklus újrakezdése.\n" " \n" " A következÅ‘ iterációtól folytatja a FOR, WHILE vagy UNTIL ciklust.\n" -" If N is specified, resumes the Nth enclosing loop.\n" " Ha N meg van adva, akkor N egymásba ágyazott ciklusból lép ki.\n" " \n" " Kilépési kód:\n" " A kilépési kód 0, ha N >= 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2583,7 +2695,7 @@ msgstr "" " Továbbadja a SHELL-BUILTIN kilépési kódját vagy hamissal tér vissza,\n" " ha nincs ilyen parancs." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2598,9 +2710,9 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" -"Visszaadja az aktuális szubrutinhívás környezetét.\n" +"Az aktuális szubrutinhívás környezetének visszaadása.\n" " \n" -" KIF nélkül \"$sor $fájlnév\" formátumú eredményt ad. KIF-fel pedig\n" +" KIF nélkül \"$sor $fájlnév\" formátumú eredményt ad. A KIF-fel pedig\n" " \"$sor $szubrutin $fájlnév\" formátumút; ez hasznos lehet stack trace\n" " kiírásához.\n" " \n" @@ -2608,11 +2720,10 @@ msgstr "" " lépjen vissza; a verem tetején a 0-s keret van.\n" " \n" " Kilépési kód:\n" -" 0-val tér vissza, ha érvényes KIF és valóban függvényt hajt végre a pa-\n" -" rancsértelmezÅ‘." +" 0-val tér vissza, ha érvényes a KIF és valóban függvényt hajt végre a\n" +" parancsértelmezÅ‘." -#: builtins.c:385 -#, fuzzy +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2635,16 +2746,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2656,38 +2767,50 @@ msgid "" "when\n" " -P is used; non-zero otherwise." msgstr "" -"A parancsértelmezÅ‘ munkakönyvtárát váltja.\n" +"A parancsértelmezÅ‘ munkakönyvtárának váltása.\n" " \n" -" A munkakönyvtára KTÃR-ra váltja. Elhagyása esetén a HOME környezeti\n" +" A munkakönyvtár átváltása a KTÃR-ra. Elhagyása esetén a HOME környezeti\n" " változóban lévÅ‘ könyvtárra vált.\n" " \n" " A CDPATH környezeti változó adja meg a KTÃR keresési útvonalait. Az\n" -" útvonalakat kettÅ‘spont (:) válassza el. Egy üres könyvtárnév az aktu-\n" -" ális könyvtárat jelenti. Ha KTÃR „/†jellel kezdÅ‘dik, a CDPATH értéke\n" +" útvonalakat kettÅ‘spont (:) választja el. Egy üres könyvtárnév az " +"aktuális\n" +" könyvtárat jelenti. Ha a KTÃR „/†jellel kezdÅ‘dik, a CDPATH értéke\n" " nincs figyelembe véve.\n" " \n" -" Ha a könyvtár nem létezik, és a „cdable_vars†parancsértelmezÅ‘-beállí-\n" -" tás aktív, KTÃR egy változónévként lesz használva. Ha a változónak van\n" +" Ha a könyvtár nem létezik, és a „cdable_vars†parancsértelmezÅ‘-" +"beállítás\n" +" aktív, a KTÃR változónévként lesz használva. Ha a változónak van\n" " értéke, az lesz KTÃR-értékként használva.\n" " \n" " Kapcsolók:\n" -" -L szimbolikus linkek szigorú követése\n" -" -P a fizikai könyvtárfa használata a szimbolikus linkek " -"követése\n" -" helyett\n" +" -L\tszimbolikus linkek szigorú követése\n" +" -P\ta fizikai könyvtárfa használata a szimbolikus linkek követése\n" +" helyett: szimbolikus linkek feloldása a KTÃR-ban a „..†\n" +" \t\telÅ‘fordulásainak feldolgozása elÅ‘tt\n" +" -e\tha a -P kapcsoló meg van adva, és az aktuális munkakönyvtár\n" +" \t\tnem határozható meg sikeresen, kilépés nem nulla állapottal\n" +" -@\taz azt támogató rendszereken a kibÅ‘vített attribútumokkal\n" +" \t\trendelkezÅ‘ fájlok megjelenítése a fájlattribútumokat tartalmazó\n" +" \t\tkönyvtárként\n" " \n" " Az alapértelmezett a szimbolikus linkek követése, mintha „-L†lenne\n" " megadva.\n" +" A „..†feldolgozása a közvetlenül elÅ‘tte lévÅ‘ útvonalnév-összetevÅ‘\n" +" eltávolításával történik, visszamenve egy osztásjelig vagy a KTÃR " +"kezdetéig.\n" +" \n" " Kilépési kód:\n" -" 0-val tér vissza, ha könyvtárat váltott; más értéket különben." +" 0-val tér vissza, ha könyvtárat váltott és ha a -P használatakor a $PWD\n" +" sikeresen beállításra kerül; más értéket különben." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2699,18 +2822,17 @@ msgstr "" "Az aktuális munkakönyvtár útvonalának kiírása.\n" " \n" " Kapcsolók:\n" -" -L $PWD értékének kiírása, ha az a munkakönyvtár érvényes\n" -" neve\n" -" -P a fizikai könyvtár kiírása, szimbolikus linkek nélkül\n" +" -L\t$PWD értékének kiírása, ha az a munkakönyvtár érvényes neve\n" +" -P\ta fizikai könyvtár kiírása, szimbolikus linkek nélkül\n" " \n" " Az alapértelmezett a szimbolikus linkek követése, mintha „-L†lenne\n" " megadva.\n" " \n" " Kilépési kód:\n" -" 0-val tér vissza, kivéve ha érvénytelen kapcsolót kapott vagy nem le-\n" -" het olvasni a munkakönyvtárat." +" 0-val tér vissza, kivéve ha érvénytelen kapcsolót kapott vagy nem lehet\n" +" olvasni a munkakönyvtárat." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2726,7 +2848,7 @@ msgstr "" " Kilépési kód:\n" " Mindig sikeres." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2738,7 +2860,7 @@ msgstr "" " Kilépési kód:\n" " Mindig sikeres." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2750,7 +2872,7 @@ msgstr "" " Kilépési kód:\n" " Mindig sikertelen." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2760,34 +2882,33 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -"Egy parancsot hajt végre vagy információt jelenít meg róla.\n" +"Parancs végrehajtása vagy információk megjelenítése róla.\n" " \n" -" Végrehajtja a PARANCS parancsot ARGUMENTUMOK argumentumokkal a függ-\n" -" vényfeloldás végrehajtása nélkül; vagy információt jelenít meg a pa-\n" -" rancsról. Használható programok futtatására, ha azonos nevű függvény\n" +" Végrehajtja a PARANCS parancsot ARGUMENTUMOK argumentumokkal a\n" +" függvényfeloldás végrehajtása nélkül; vagy információt jelenít meg a\n" +" parancsról. Használható programok futtatására, ha azonos nevű függvény\n" " létezik.\n" " \n" " Kapcsolók:\n" -" -p alapértelmezett érték használata PATH helyett, amely ga-\n" -" rantáltan megtalál minden szabványos eszközt -v " -"egy leírást ad a PARANCS parancsról a „type†beépített pa-\n" -" rancshoz hasonló módon\n" -" -V minden PARANCS-ról egy részletesebb leírást ad\n" +" -p alapértelmezett érték használata PATH helyett, amely\n" +" garantáltan megtalál minden szabványos eszközt\n" +" -v egy leírást ad a PARANCS parancsról a „type†beépített\n" +" parancshoz hasonló módon\n" +" -V részletesebb leírást ad minden PARANCSRÓL\n" " \n" " Kilépési kód:\n" -" PARANCS kilépési kódjával tér vissza, vagy hibát jelez, ha nem talál-\n" -" ható PARANCS." +" A PARANCS kilépési kódjával tér vissza, vagy hibát jelez, ha nem\n" +" található a PARANCS." -#: builtins.c:487 -#, fuzzy +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2797,9 +2918,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2826,52 +2947,56 @@ msgid "" " 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" +"Változóértékek és attribútumok beállítása.\n" " \n" -" Változók deklarálása és jellemzÅ‘k adása. Ha nincs NÉV megadva, kilis-\n" -" tázza az összes változó jellemzÅ‘it és értékét.\n" +" Változók deklarálása és attribútumok megadása. Ha nincs NÉV megadva,\n" +" kiírja az összes változó attribútumait és értékét.\n" " \n" " Kapcsolók:\n" -" -f művelet és megjelenítés korlátozása függvénynevekre és\n" -" -definíciókra\n" -" -F megjelenítés korlátozása függvénynevekre (és sor számára,\n" -" valamint a forrásfájl nevére hibakereséskor)\n" -" -p minden NÉV jellemzÅ‘inek és értékének kiírása\n" +" -f\tművelet és megjelenítés korlátozása függvénynevekre és\n" +" \t\t-definíciókra\n" +" -F\tmegjelenítés korlátozása függvénynevekre (és sor számára,\n" +" \t\tvalamint a forrásfájl nevére hibakereséskor)\n" +" -g\tglobális változók létrehozása parancsértelmezÅ‘-függvényben való\n" +" \t\thasználatkor, egyébként figyelmen kívül marad\n" +" -p\tminden NÉV attribútumainak és értékének kiírása\n" " \n" -" JellemzÅ‘ket állító kapcsolók:\n" -" -a NÉV indexelt tömbbé alakítása (ha támogatott)\n" -" -A NÉV asszociatív tömbbé alakítása (ha támogatott)\n" -" -i minden NÉV kapjon „integer†jellemzÅ‘t\n" -" -l NÉV-hez való értékadáskor kisbetűssé konvertálás\n" -" -r minden NÉV legyen csak olvasható\n" -" -t minden NÉV kapjon „trace†jellemzÅ‘t\n" -" -u NÉV-hez való érékadáskor nagybetűssé konvertálás\n" -" -x minden NÉV exportálása\n" +" Attribútumokat állító kapcsolók:\n" +" -a\tNÉV indexelt tömbbé alakítása (ha támogatott)\n" +" -A\tNÉV asszociatív tömbbé alakítása (ha támogatott)\n" +" -i\tminden NÉV kapjon „integer†attribútumot\n" +" -l\ta NÉV kisbetűssé konvertálása értékadáskor\n" +" -n\ta NÉV hivatkozás legyen az értékében megadott változóra\n" +" -r\tminden NÉV legyen csak olvasható\n" +" -t\tminden NÉV kapjon „trace†attribútumot\n" +" -u\ta NÉV nagybetűssé konvertálása értékadáskor\n" +" -x\tminden NÉV exportálása\n" " \n" -" A „-†helyett „+†használata kikapcsolja az adott jellemzÅ‘t.\n" +" A „-†helyett „+†használata kikapcsolja az adott attribútumot.\n" " \n" -" Az integer jellemzÅ‘vel rendelkezÅ‘ változókhoz való értékadáskor arit-\n" -" metikai kiértékelés történik (lásd a „let†parancsot).\n" +" Az integer attribútummal rendelkezÅ‘ változókhoz való értékadáskor\n" +" aritmetikai kiértékelés történik (lásd a „let†parancsot).\n" " \n" -" Függvénytörzsben „declareâ€-t használva minden NÉV helyi lesz, hasonló-\n" -" an a „local†parancshoz.\n" +" Függvénytörzsben „declareâ€-t használva minden NÉV helyi lesz, hasonlóan\n" +" a „local†parancshoz. A „-g†kapcsoló elnyomja ezt a viselkedést.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy hiba\n" -" történt." +" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy " +"értékadási\n" +" hiba történik." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" -"Változóértékeket és jellemzÅ‘ket állít be.\n" +"Változóértékek és attribútumok beállítása.\n" " \n" " Elavult. Lásd „help declareâ€." -#: builtins.c:535 -#, fuzzy +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2887,18 +3012,17 @@ msgid "" msgstr "" "Helyi változók definiálása.\n" " \n" -" Egy NÉV nevű helyi változót hoz létre, és ÉRTÉK értéket ad neki. KAP-\n" -" CSOLÓ tetszÅ‘leges „declare†által elfogadott kapcsoló lehet.\n" +" Egy NÉV nevű helyi változót hoz létre, és ÉRTÉK értéket ad neki.\n" +" A KAPCSOLÓ tetszÅ‘leges, a „declare†által elfogadott kapcsoló lehet.\n" " \n" " A helyi változók csak a függvényen belül használhatóak, nem láthatóak\n" -" az Å‘ket definiáló függvényen és azok gyermekein kívül.\n" +" az Å‘ket definiáló függvényen és annak gyermekein kívül.\n" " \n" " Kilépési kód:\n" -" 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." +" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, értékadási\n" +" hiba történik, vagy nem függvényben lett hívva." -#: builtins.c:552 -#, fuzzy +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2924,9 +3048,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2936,30 +3060,31 @@ msgstr "" " Argumentumok és egy újsor kiírása a szabványos kimenetre.\n" " \n" " Kapcsolók:\n" -" -n ne fűzzön hozzá újsort\n" -" -e az alábbi escape-szekvenciák értelmezése\n" -" -E escape-szekvenciák értelmezésének tiltása\n" +" -n\tne fűzzön hozzá újsort\n" +" -e\taz alábbi escape-szekvenciák értelmezése\n" +" -E\tescape-szekvenciák értelmezésének tiltása\n" " \n" " Az „echoâ€a következÅ‘ visszaper-escape-karaktereket értelmezi:\n" -" \\a terminálcsengÅ‘\n" -" \\b visszatörlés (backspace)\n" -" \\c további kimenet elnyelése\n" -" \\e escape-karakter\n" -" \\f lapdobás-karakter\n" -" \\n újsor-karakter\n" -" \\r kocsivissza-karakter\n" -" \\t vízszintes tabulátor\n" -" \\v függÅ‘leges tabulátor\n" -" \\\\ visszaper (\\)\n" -" \\0nnn az oktális NNN ASCII-kódú karakter. NNN 0–3\n" -" oktális számjegy lehet\n" -" \\xHH az a 8 bites karakter, amelynek értéke HH\n" -" (hexadecimálisan). HH egy vagy két hexaszámjegy lehet\n" +" \\a\tterminálcsengÅ‘\n" +" \\b\tvisszatörlés (backspace)\n" +" \\c\ttovábbi kimenet elnyelése\n" +" \\e\tescape-karakter\n" +" \\E\tescape-karakter\n" +" \\f\tlapdobás-karakter\n" +" \\n\tújsor-karakter\n" +" \\r\tkocsivissza-karakter\n" +" \\t\tvízszintes tabulátor\n" +" \\v\tfüggÅ‘leges tabulátor\n" +" \\\\\tvisszaper (\\)\n" +" \\0nnn\taz oktális NNN ASCII-kódú karakter. NNN 0–3\n" +" \t\toktális számjegy lehet\n" +" \\xHH\taz a 8 bites karakter, amelynek értéke HH\n" +" \t\t(hexadecimálisan). HH egy vagy két hexaszámjegy lehet\n" " \n" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve írási hiba esetén." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2976,12 +3101,12 @@ msgstr "" " Argumentumok és egy újsor kiírása a szabványos kimenetre.\n" " \n" " Kapcsolók:\n" -" -n ne fűzzön hozzá újsort\n" +" -n\tne fűzzön hozzá újsort\n" " \n" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve írási hiba esetén." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3010,20 +3135,19 @@ msgstr "" "ParancsértelmezÅ‘ beépített parancsainak engedélyezése és tiltása.\n" " \n" " Beépített parancsokat engedélyez és tilt. Egy parancs letiltásával az\n" -" elérési út beírása nélkül lehet beépített paranccsal megegyezÅ‘ nevű-\n" +" elérési út beírása nélkül lehet beépített paranccsal megegyezÅ‘ nevű\n" " programot futtatni.\n" " \n" " Kapcsolók:\n" -" -a a beépített parancsok és azok állapotának listázása\n" -" -n minden NÉV tiltása vagy a tiltott parancsok listázása\n" -" -p a beépített parancsokat listázza újrahasználható formában\n" -" -s csak a Posix „special†beépített parancsokat listázza\n" +" -a\ta beépített parancsok és azok állapotának listázása\n" +" -n\tminden NÉV tiltása vagy a tiltott parancsok listázása\n" +" -p\ta beépített parancsokat listázza újrahasználható formában\n" +" -s\tcsak a Posix „special†beépített parancsokat listázza\n" " \n" " Dinamikus betöltést szabályozó kapcsolók:\n" -" -f NÉV nevű beépített parancs betöltése a FÃJLNÉV megosztott " -"objek-\n" -" tumfájlból\n" -" -d egy -f kapcsolóval betöltött parancs eltávolítása\n" +" -f\tNÉV nevű beépített parancs betöltése a FÃJLNÉV megosztott\n" +" \t\tobjektumfájlból\n" +" -d\tegy -f kapcsolóval betöltött parancs eltávolítása\n" " \n" " Kapcsolók nélkül minden NÉV engedélyezésre kerül\n" " \n" @@ -3031,10 +3155,10 @@ msgstr "" " használja az „enable -n test†parancsot.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, kivéve ha NÉV nem egy beépített parancs, vagy hi-\n" -" ba történt." +" Sikerrel tér vissza, kivéve ha a NÉV nem egy beépített parancs, vagy\n" +" hiba történt." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3051,10 +3175,9 @@ msgstr "" " végre a parancsértelmezÅ‘.\n" " \n" " Kilépési kód:\n" -" A parancs kilépési kódjával tér vissza, vagy sikerrel, ha üres a pa-\n" -" rancs." +" A parancs kilépési kódjával tér vissza, vagy sikerrel, ha üres a parancs." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3105,30 +3228,34 @@ msgstr "" " \n" " Minden végrehajtáskor a getopts a $név változóba helyezi a következÅ‘\n" " kapcsolót (szükség esetén inicializálva a változót). A kapcsoló indexe\n" -" az OPTIND változóba kerül. Az OPTIND változót a parancsértelmezÅ‘ indu-\n" -" láskor 1-re inicializálja. Ha a kapcsolónak paramétere van, ennek ér-\n" -" téke az OPTARG változóba kerül.\n" +" az OPTIND változóba kerül. Az OPTIND változót a parancsértelmezÅ‘ " +"induláskor\n" +" 1-re inicializálja. Ha a kapcsolónak paramétere van, ennek értéke\n" +" az OPTARG változóba kerül.\n" " \n" -" A getopts két módon tud hibát jelezni. Elnémítható a hibajelzés az OP-\n" -" CIÓK kettÅ‘sponttal való kezdésével. Ebben a módban nem kerül kiírásra\n" -" hibaüzenet. Ha a getopts érvénytelen opciót talál, ezt az OPTARG vál-\n" -" tozóba írja. Ha hiányzik egy kötelezÅ‘ paraméter, a $név változóba egy\n" -" kettÅ‘spont kerül, és a talált karakter OPTARG-ba kerül.\n" -" Ha a getopts nincs néma módban, és érvénytelen kapcsolót talál, $név-\n" -" be egy kérdÅ‘jel kerül, OPTARG törlésre kerül, és hibaüzenetet ír ki.\n" +" A getopts két módon tud hibát jelezni. Elnémítható a hibajelzés az " +"OPCIÓK\n" +" kettÅ‘sponttal való kezdésével. Ebben a módban nem kerül kiírásra\n" +" hibaüzenet. Ha a getopts érvénytelen opciót talál, ezt az OPTARG\n" +" változóba írja. Ha hiányzik egy kötelezÅ‘ paraméter, a $név változóba " +"egy\n" +" kettÅ‘spont kerül, és a talált karakter az OPTARG-ba kerül.\n" +" Ha a getopts nincs néma módban, és érvénytelen kapcsolót talál, $NÉV-be\n" +" egy kérdÅ‘jel kerül, az OPTARG törlésre kerül, és hibaüzenetet ír ki.\n" " \n" -" Ha az OPTERR változó 0-ra van állítva, a getopts letiltja a hibaüzene-\n" -" tet, akkor is, ha nem kettÅ‘sponttal kezdÅ‘dik az OPCIÓK. OPTERR alapér-\n" -" téke 1.\n" +" Ha az OPTERR változó 0-ra van állítva, a getopts letiltja a " +"hibaüzenetet,\n" +" akkor is, ha nem kettÅ‘sponttal kezdÅ‘dik az OPCIÓK. Az OPTERR alapértéke " +"1.\n" " \n" -" A getopts alapvetÅ‘en pozicionális paramétereket értelmezi ($0–$9), de\n" +" A getopts alapvetÅ‘en a pozicionális paramétereket értelmezi ($0–$9), de\n" " több argumentum esetén mindet kezeli.\n" " \n" " Kilépési kód:\n" " Sikerrel tér vissza, ha kapcsolót talált, sikertelenül, ha elfogytak a\n" -" kapcsolók vagy hiba történt." +" kapcsolók, vagy hiba történt." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3139,8 +3266,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3152,35 +3279,38 @@ msgid "" msgstr "" "A parancsértelmezÅ‘ felváltása a megadott paranccsal.\n" " \n" -" PARANCS végrehajtása, kicserélve a parancsértelmezÅ‘t a megadott prog-\n" -" rammal. ARGUMENTUMOK lesznek a PARANCS argumentumai. Ha nincs PARANCS\n" -" megadva, a futó shellre kerülnek érvényesítésre az átirányítások.\n" +" A PARANCS végrehajtása, kicserélve a parancsértelmezÅ‘t a megadott\n" +" programmal. Az ARGUMENTUMOK lesznek a PARANCS argumentumai. Ha nincs\n" +" PARANCS megadva, a futó parancsértelmezÅ‘ben kerülnek érvényesítésre\n" +" az átirányítások.\n" " \n" " Kapcsolók:\n" -" -a név NÉV átadása PARANCS-nak $0-ként\n" -" -c PARANCS végrehajtása üres környezettel\n" -" -l PARANCS-nak egy „-†átadása $0-ként\n" +" -a név\ta NÉV átadása a PARANCSNAK $0-ként\n" +" -c\ta PARANCS végrehajtása üres környezettel\n" +" -l\ta PARANCSNAK egy „-†átadása $0-ként\n" " \n" -" Ha a parancs nem hajtható végre, a nem interaktív parancsértelmezÅ‘ ki-\n" -" lép, kivéve, ha az „execfail†parancsértelmezÅ‘-beállítás él.\n" +" Ha a parancs nem hajtható végre, a nem interaktív parancsértelmezÅ‘ " +"kilép,\n" +" kivéve, ha az „execfail†parancsértelmezÅ‘-beállítás él.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, kivéve, ha PARANCS nem található vagy sikertelen\n" +" Sikerrel tér vissza, kivéve, ha a PARANCS nem található vagy sikertelen\n" " az átirányítás." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." msgstr "" -"Kilép a parancsértelmezÅ‘bÅ‘l.\n" +"Kilépés a parancsértelmezÅ‘bÅ‘l.\n" " \n" -" 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." +" Kilép a parancsértelmezÅ‘bÅ‘l N kilépési kóddal. Ha az N hiányzik, az " +"utolsó\n" +" parancs kilépési kódjával lép ki." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3188,12 +3318,12 @@ msgid "" "executed\n" " in a login shell." msgstr "" -"Kilép a bejelentkezÅ‘ parancsértelmezÅ‘bÅ‘l.\n" +"Kilépés a bejelentkezÅ‘ parancsértelmezÅ‘bÅ‘l.\n" " \n" -" Kilép a bejelentkezÅ‘ parancsértelmezÅ‘bÅ‘l N kilépési kóddal. Hibával\n" +" Kilép a bejelentkezÅ‘ parancsértelmezÅ‘bÅ‘l az N kilépési kóddal. Hibával\n" " tér vissza, ha nem bejelentkezÅ‘ parancsértelmezÅ‘bÅ‘l hívják." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3224,30 +3354,34 @@ msgid "" msgstr "" "Parancsok megjelenítése vagy végrehajtása az elÅ‘zménybÅ‘l.\n" " \n" -" Az fc segítségével lehet korábbi parancsokat kiírni, módosítani és új-\n" -" ból végrehajtani.\n" -" ELSŠés UTOLSÓ lehetnek egy tartományt meghatározó számok, vagy ELSÅ\n" +" Az fc segítségével lehet korábbi parancsokat kiírni, módosítani és " +"újból\n" +" végrehajtani.\n" +" Az ELSŠés UTOLSÓ lehetnek egy tartományt meghatározó számok, vagy az " +"ELSÅ\n" " lehet egy karakterlánc, amely az utolsó így kezdÅ‘dÅ‘ parancsot jelöli.\n" " \n" " Kapcsolók:\n" -" -e ENAME szerkesztÅ‘ kiválasztása. Az alapértelmezett az FCEDIT,\n" -" majd EDITOR, végül a vi\n" -" -l szerkesztés helyett a sorok listázása\n" -" -n sorok számának elhagyása listázáskor\n" -" -r sorrend megcserélése (legújabbakkal kezdi a listázást)\n" +" -e ENAME\tszerkesztÅ‘ kiválasztása. Az alapértelmezett az FCEDIT,\n" +" \t\tmajd EDITOR, végül a vi\n" +" -l\tszerkesztés helyett a sorok listázása\n" +" -n\tsorok számának elhagyása listázáskor\n" +" -r\tsorrend megcserélése (legújabbakkal kezdi a listázást)\n" " \n" -" Az „fc -s [minta=csere] [parancs]†formával PARANCS... újból végrehaj-\n" -" tásra kerül miután a régi=új behelyettesítés megtörtént.\n" +" Az „fc -s [minta=csere] [parancs]†formával PARANCS... újból " +"végrehajtásra\n" +" kerül, miután a régi=új behelyettesítés megtörtént.\n" " \n" " Hasznos lehet az „alias r='fc -s'†használata, mivel így pl. az „r ccâ€\n" " parancs végrehajtja az utolsó „ccâ€-vel kezdÅ‘dÅ‘ parancsot, míg „r†meg-\n" " ismétli az utolsó parancsot.\n" " \n" " Kilépési kód:\n" -" Sikert vagy a végrehajtott parancs kilépési kódját adja; nullától el-\n" -" térÅ‘t hiba esetén." +" Sikert vagy a végrehajtott parancs kilépési kódját adja; nullától " +"eltérÅ‘t\n" +" hiba esetén." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3258,17 +3392,18 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -"A munka elÅ‘térbe hozása.\n" +"Munka elÅ‘térbe hozása.\n" " \n" " A MUNKASZÃM által meghatározott munkát az elÅ‘térbe hozza, az aktuális\n" -" munkává téve azt. Ha nincs MUNKASZÃM, a parancsértelmezÅ‘ által meg-\n" -" jegyzett aktuális munkára vonatkozik a parancs.\n" +" munkává téve azt. Ha nincs MUNKASZÃM, a parancsértelmezÅ‘ által " +"megjegyzett\n" +" aktuális munkára vonatkozik a parancs.\n" " \n" " Kilépési kód:\n" -" Az elÅ‘térbe hozott parancs állapota (annak kilépésekor), vagy nemnulla\n" +" Az elÅ‘térbe hozott parancs állapota (annak kilépésekor), vagy nem nulla\n" " hiba esetén." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3281,18 +3416,18 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -"Munkák háttérbe küldése.\n" +"Munka háttérbe küldése.\n" " \n" " A MUNKASZÃM által meghatározott munkákat háttérbe küldi, mintha „&â€\n" -" jellel a parancs végén lettek volna indítva. Ha nincs MUNKASZÃM, a pa-\n" -" rancsértelmezÅ‘ által megjegyzett aktuális munkára vonatkozik a parancs.\n" +" jellel a parancs végén lettek volna indítva. Ha nincs MUNKASZÃM, a\n" +" parancsértelmezÅ‘ által megjegyzett aktuális munkára vonatkozik a " +"parancs.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, kivéve ha a munkakezelés le van tiltva, vagy hi-\n" -" ba történt." +" Sikerrel tér vissza, kivéve ha a munkakezelés le van tiltva, vagy\n" +" hiba történt." -#: builtins.c:784 -#, fuzzy +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3301,15 +3436,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3317,25 +3452,25 @@ msgid "" msgstr "" "Programok helyének megjegyzése vagy megjelenítése.\n" " \n" -" Meghatározza vagy megjegyzi a teljes útvonalát minden megadott NÉV\n" -" parancsnak. Ha nincs NÉV megadva, az összes megjegyzett parancsot lis-\n" -" tázza.\n" +" Meghatározza és megjegyzi minden megadott NÉV parancs teljes útvonalát.\n" +" Ha nincs NÉV megadva, az összes megjegyzett parancsot listázza.\n" " \n" " Kapcsolók:\n" -" -d minden megjegyzett NÉV helyének elfelejtése\n" -" -l bemenetként újrahasználható formátumban listázzon\n" -" -p útvonal ÚTVONAL használata NÉV helyeként\n" -" -r minden megjegyzett hely elfelejtése\n" -" -t minden megadott NÉV megjegyzett helyének kiírása,\n" -" több név esetén a helyek elÅ‘tt a NÉV kiírása\n" +" -d\tminden megjegyzett NÉV helyének elfelejtése\n" +" -l\tbemenetként újrahasználható formátumban listázzon\n" +" -p útvonal\taz ÚTVONAL használata a NÉV teljes útvonalaként\n" +" -r\tminden megjegyzett hely elfelejtése\n" +" -t\tminden megadott NÉV megjegyzett helyének kiírása,\n" +" \t\ttöbb név esetén a helyek elÅ‘tt a NÉV kiírása\n" " Argumentumok:\n" -" NÉV Minden NEV-et megkeres a $PATH-ban, és hozzáadja a megjegy-\n" -" zettek listájához. \n" +" NÉV\tMinden NÉV megkeresése a $PATH-ban, és hozzáadása a\n" +" \t\tmegjegyzettek listájához.\n" +" \n" " Kilépési kód:\n" -" Sikerrel tér vissza, kivéve, ha NÉV nem található vagy érvénytelen kap-\n" -" csolót kap." +" Sikerrel tér vissza, kivéve, ha a NÉV nem található vagy érvénytelen\n" +" kapcsolót kap." -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3347,7 +3482,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3359,21 +3494,23 @@ msgstr "" "Tájékoztatás megjelenítése beépített parancsokról.\n" " \n" " Rövid leírásokat jelenít meg a beépített parancsokról. Ha MINTA meg\n" -" van adva, részletes segítséget ad az összes illeszkedÅ‘ parancsról, kü-\n" -" lönben a témákat listázza.\n" +" van adva, részletes segítséget ad az összes illeszkedÅ‘ parancsról,\n" +" különben a témákat listázza.\n" " \n" " Kapcsolók:\n" -" -d minden témáról rövid leírás listázása\n" -" -m man-szerű formátum használata\n" -" -s csak rövid használati útmutató kiírása minden találathoz\n" +" -d\tminden témáról rövid leírás listázása\n" +" -m\tman-szerű formátum használata\n" +" -s\tcsak rövid használati útmutató kiírása minden, a MINTÃNAK\n" +" \t\tmegfelelÅ‘ témáról\n" " \n" " Argumentumok:\n" -" MINTA Témakört meghatározó minta\n" +" MINTA\tTémakört meghatározó minta\n" " \n" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha nincs találat vagy hibás kapcsolót kap." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3382,23 +3519,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3406,38 +3543,39 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Megjeleníti vagy módosítja az elÅ‘zményeket.\n" +"Az elÅ‘zmények megjelenítése vagy módosítása.\n" " \n" -" Megjeleníti az elÅ‘zménylistát sorszámokkal, minden módosított bejegy-\n" -" zést az elején „*â€-gal megjelölve. N megadása esetén az utolsó N be-\n" -" jegyzést listázza.\n" +" Megjeleníti az elÅ‘zménylistát sorszámokkal, minden módosított " +"bejegyzést\n" +" az elején „*â€-gal megjelölve. N megadása esetén az utolsó N\n" +" bejegyzést listázza.\n" " \n" " Kapcsolók:\n" -" -c minden elÅ‘zmény törlése\n" -" -d szám a SZÃM számú bejegyzés törlése\n" -" -a a futó munkamenet elÅ‘zményeinek központi fájlba írása\n" -" -n minden olvasatlan elÅ‘zménysor kiírása az elÅ‘zményfájlból\n" -" -r elÅ‘zményfájl beolvasása és elÅ‘zménylistához írása\n" -" -w az aktuális elÅ‘zmények elÅ‘zményfájlba írása és elÅ‘zmény-\n" -" listához írása\n" +" -c\tminden elÅ‘zmény törlése\n" +" -d szám\ta SZÃM számú bejegyzés törlése\n" +" -a\ta futó munkamenet elÅ‘zményeinek központi fájlba írása\n" +" -n\tminden olvasatlan elÅ‘zménysor kiírása az elÅ‘zményfájlból\n" +" -r\telÅ‘zményfájl beolvasása és elÅ‘zménylistához írása\n" +" -w\taz aktuális elÅ‘zmények elÅ‘zményfájlba írása és\n" +" \t\telÅ‘zménylistához írása\n" " \n" -" -p elÅ‘zménykiegészítés végrehajtása minden ARGumentumon és az\n" -" eredmény kiírása elÅ‘zménylistán való tárolás nélkül\n" -" -s ARGumentumok hozzáírása egyetlen bejegyzésként a listához\n" +" -p\telÅ‘zménykiegészítés végrehajtása minden ARGUMENTUMON, és az\n" +" \t\teredmény kiírása elÅ‘zménylistán való tárolás nélkül\n" +" -s\tARGUMENTUMOK hozzáírása egyetlen bejegyzésként a listához\n" " \n" -" Ha FÃJLNÉV is meg van adva, az lesz elÅ‘zményfájlként használva. Külön-\n" -" ben $HISTFILE értéke, vagy ennek híján ~/.bash_history.\n" +" Ha FÃJLNÉV is meg van adva, az lesz elÅ‘zményfájlként használva. " +"Különben\n" +" a HISTFILE értéke, vagy ennek híján ~/.bash_history.\n" " \n" -" Ha a $HISTTIMEFORMAT változó be van állítva, és nem üres, akkor értéke\n" -" lesz használva az strftime(3) formátumparamétereként a kijelzett be-\n" -" jegyzések idÅ‘bélyegeinek megjelenítéséhez. Különben nem ír ki idÅ‘t.\n" +" Ha a HISTTIMEFORMAT változó be van állítva, és nem üres, akkor értéke\n" +" lesz használva az strftime(3) formátumparamétereként a kijelzett\n" +" bejegyzések idÅ‘bélyegeinek megjelenítéséhez. Különben nem ír ki idÅ‘t.\n" " \n" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy hiba\n" " történik." -#: builtins.c:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3447,7 +3585,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3466,22 +3604,23 @@ msgstr "" " munka jelenik meg, különben az összes aktív.\n" " \n" " Kapcsolók:\n" -" -l folyamatazonosítók megjelenítése a többi adaton túl\n" -" -n csak azon folyamatok listázása, amelyek állapota változott\n" -" az utolsó értesítés óta\n" -" -p csak folyamatazonosítók listázása\n" -" -r csak a futó munkák megjelenítése\n" -" -s csak a megállított munkák megjelenítése\n" +" -l\tfolyamatazonosítók megjelenítése a többi adaton túl\n" +" -n\tcsak azon folyamatok listázása, amelyek állapota változott\n" +" \t\taz utolsó értesítés óta\n" +" -p\tcsak folyamatazonosítók listázása\n" +" -r\tcsak a futó munkák megjelenítése\n" +" -s\tcsak a megállított munkák megjelenítése\n" " \n" -" Ha -x meg van adva, PARANCS kerül futtatásra úgy, hogy minden argumen-\n" -" tum a meghatározott munkához tartozó folyamatcsoport vezetÅ‘jének PID-\n" -" jére cserélÅ‘dik.\n" +" Ha -x meg van adva, PARANCS kerül futtatásra úgy, hogy minden " +"argumentum\n" +" a meghatározott munkához tartozó folyamatcsoport vezetÅ‘jének PID-jére\n" +" cserélÅ‘dik.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót és nem történik\n" -" hiba. -x használata esetén PARANCS kilépési kódjával tér vissza." +" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, és nem történik\n" +" hiba. -x használata esetén a PARANCS kilépési kódjával tér vissza." -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3491,7 +3630,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3499,21 +3638,22 @@ msgid "" msgstr "" "Munkák eltávolítása az aktuális parancsértelmezÅ‘bÅ‘l.\n" " \n" -" Eltávolít minden MUNKASZÃM munkát az aktív munkák táblájából. MUNKA-\n" -" SZÃM megadása nélkül a parancsértelmezÅ‘ által megjegyzett aktuális\n" +" Eltávolít minden MUNKASZÃM munkát az aktív munkák táblájából. A " +"MUNKASZÃM\n" +" megadása nélkül a parancsértelmezÅ‘ által megjegyzett aktuális\n" " munkát távolítja el.\n" " \n" " Kapcsolók:\n" -" -a minden munka eltávolítása, ha nincs MUNKASZÃM megadva\n" -" -h minden MUNKASZÃM megjelölése úgy, hogy nem kell továbbadni\n" -" nekik a parancsértelmezÅ‘ által kapott SIGHUP-ot\n" -" -r csak futó munkák eltávolítása\n" +" -a\tminden munka eltávolítása, ha nincs MUNKASZÃM megadva\n" +" -h\tminden MUNKASZÃM megjelölése úgy, hogy nem kell továbbadni\n" +" \t\tnekik a parancsértelmezÅ‘ által kapott SIGHUP-ot\n" +" -r\tcsak futó munkák eltávolítása\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót vagy MUNKASZÃM-\n" -" ot." +" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót vagy MUNKASZÃMOT" -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3525,7 +3665,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3536,26 +3677,27 @@ msgid "" msgstr "" "Szignál küldése munkának.\n" " \n" -" PID vagy MUNKASZÃM által meghatározott folyamatoknak SZIGNÃL vagy\n" -" SZIGNÃLSZÃM szignál küldése. Ha sem SZIGNÃL, sem SZIGNÃLSZÃM nincs\n" -" megadva, akkor SIGTERM az alapértelmezés.\n" +" PID vagy MUNKASZÃM által meghatározott folyamatoknak a SZIGNÃL vagy\n" +" SZIGNÃLSZÃM szignál küldése. Ha sem a SZIGNÃL, sem a SZIGNÃLSZÃM nincs\n" +" megadva, akkor a SIGTERM az alapértelmezés.\n" " \n" " Kapcsolók:\n" -" -s sig SIG egy szignálnév\n" -" -n sig SIG egy szignálszám\n" -" -l a szignálnevek listázása; ha argumentumok is követik, akkor\n" -" az általuk meghatározott szignálok nevei kerülnek listázásra\n" +" -s sig\ta SIG egy szignálnév\n" +" -n sig\taSIG egy szignálszám\n" +" -l\ta szignálnevek listázása; ha argumentumok is követik, akkor\n" +" \t\taz általuk meghatározott szignálok nevei kerülnek listázásra\n" +" -L\ta -l szinonimája\n" " \n" " A kill két okból beépített parancs: így lehetÅ‘vé teszi munkaszámok\n" -" használatát PID helyett, továbbá lehetségessé válik folyamatok kilövé-\n" -" se, ha a folyamatok számának korlátja kimerült.\n" +" használatát PID helyett, továbbá lehetségessé válik folyamatok " +"kilövése,\n" +" ha a folyamatok számának korlátja kimerült.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót és nem történik\n" +" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, és nem történik\n" " hiba." -#: builtins.c:938 -#, fuzzy +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3601,32 +3743,32 @@ msgid "" msgstr "" "Aritmetikai kifejezés kiértékelése.\n" " \n" -" Minden ARGumentum kiértékelése aritmetikai kifejezésként. A kiértéke-\n" -" lés fix szélességű egészek esetén túlcsordulás-ellenÅ‘rzés nélkül törté-\n" -" nik, de a nullával való osztás hibát okoz. Az alábbi operátorok soron-\n" -" ként azonos precedenciaszinten vannak. A precedencia az alábbi sorrend-\n" -" ben csökken:\n" +" Minden ARGUMENTUM kiértékelése aritmetikai kifejezésként. A kiértékelés\n" +" fix szélességű egészek esetén túlcsordulás-ellenÅ‘rzés nélkül történik,\n" +" de a nullával való osztás hibát okoz. Az alábbi operátorok soronként\n" +" azonos precedenciaszinten vannak. A precedencia az alábbi sorrendben\n" +" csökken:\n" " \n" -" id++, id-- változó postfix-növelése, -csökkentése\n" -" ++id, --id változó prefix-növelése, -csökkentése\n" -" -, + mínusz, plusz elÅ‘jel\n" -" !, ~ logikai és bitenkénti negált\n" -" ** hatványozás\n" -" *, /, % szorzás, osztás, maradék\n" -" +, - összeadás, kivonás\n" -" <<, >> bitenkénti eltolás balra, jobb\n" -" <=, >=, <, > összehasonlítás\n" -" ==, != egyenlÅ‘ség, egyenlÅ‘tlenség\n" -" & bitenkénti ÉS\n" -" ^ bitenkénti kizáró vagy\n" -" | bitenkénti VAGY\n" -" && logikai ÉS\n" -" || logikai VAGY\n" -" kif ? kif : kif\n" -" feltételes operátor\n" -" =, *=, /=, %=,\n" -" +=, -=, <<=, >>=,\n" -" &=, ^=, |= értékadás\n" +" \tid++, id--\tváltozó postfix-növelése, -csökkentése\n" +" \t++id, --id\tváltozó prefix-növelése, -csökkentése\n" +" \t-, +\t\tmínusz, plusz elÅ‘jel\n" +" \t!, ~\t\tlogikai és bitenkénti negált\n" +" \t**\t\thatványozás\n" +" \t*, /, %\t\tszorzás, osztás, maradék\n" +" \t+, -\t\tösszeadás, kivonás\n" +" \t<<, >>\t\tbitenkénti eltolás balra, jobb\n" +" \t<=, >=, <, >\tösszehasonlítás\n" +" \t==, !=\t\tegyenlÅ‘ség, egyenlÅ‘tlenség\n" +" \t&\t\tbitenkénti ÉS\n" +" \t^\t\tbitenkénti kizáró vagy (XOR)\n" +" \t|\t\tbitenkénti VAGY\n" +" \t&&\t\tlogikai ÉS\n" +" \t||\t\tlogikai VAGY\n" +" \tkif ? kif : kif\n" +" \t\t\tfeltételes operátor\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |= értékadás\n" " \n" " ParancsértelmezÅ‘-változók is lehetnek operandusok. A változók nevének\n" " helyére értékük kerül (fix szélességű egészként) a kifejezésben. Nem\n" @@ -3638,8 +3780,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:983 -#, fuzzy +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3660,27 +3801,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3689,43 +3831,45 @@ msgid "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -"Beolvas egy sort a szabványos bemenetrÅ‘l és mezÅ‘kre osztja.\n" +"Egy sor beolvasása a szabványos bemenetrÅ‘l, és mezÅ‘kre osztása.\n" " \n" -" Egy sort olvas be a szabványos bemenetrÅ‘l, vagy az FD fájlleíróból, ha\n" +" Egy sor beolvasása a szabványos bemenetrÅ‘l, vagy az FD fájlleíróból, ha\n" " meg van adva a -u kapcsoló. A sor mezÅ‘kre lesz osztva a szódarabolás\n" -" szabályai szerint. Az elsÅ‘ szó az elÅ‘s NÉV nevű változó értéke lesz, a\n" -" második a másodiké stb. A szóelválasztó karaktereket az $IFS adja.\n" +" szabályai szerint. Az elsÅ‘ szó az elsÅ‘ NÉV nevű változó értéke lesz, a\n" +" második a másodiké stb. A szóelválasztó karaktereket az $IFS adja meg.\n" " \n" -" Ha nincs NÉV megadva, a beolvasott sor a $REPLY változóba kerül.\n" +" Ha nincs NÉV megadva, a beolvasott sor a REPLY változóba kerül.\n" " \n" " Kapcsolók:\n" -" -a tömb a beolvasott szavak TÖMB tömb 0-tól kezdve egymást követÅ‘\n" -" indexű elemeibe kerülnek\n" -" -d elvál ELVÃL elsÅ‘ karakteréig olvasson az újsor helyett\n" -" -e a sor beolvasása Readline használatával interaktívan\n" -" -i szöveg SZÖVEG használata kezdeti szövegként (Readlinehoz)\n" -" -n szám SZÃM karakter beolvasása után térjen vissza, ne várjon egy\n" -" újsorra, de vegye figyelembe az elválasztót, ha kevesebb\n" -" mint SZÃM karaktert olvasott be az elválasztóig\n" -" -N szám pontosan akkor térjen vissza, ha SZÃM karaktert olva-\n" -" sott be, kivéve az EOF elérését és az idÅ‘túllépést, az el-\n" -" választó figyelmen kívül hagyva\n" -" -p prompt írja ki a PROMPT értékét olvasás elÅ‘tt a sor elejére\n" -" -r tiltsa le a „\\†kezdetű escape-ek használatát\n" -" -s terminálról érkezÅ‘ bemenet ne visszhangozzon\n" -" -t idÅ‘ IDÅ leteltével jelezzen hibát, ha nem tudott egy teljes\n" -" sort beolvasni. A $TMOUT változó értéke az alapértelmezett\n" -" idÅ‘korlát. IDÅ lehet tizedestört is. Ha idÅ‘ 0, csak akkor\n" -" lesz sikeres a beolvasás, ha az adott fájlleírón már ol-\n" -" vasható a bemenet. IdÅ‘túllépés esetén a kilépési kód >128\n" -" -u fd fájl beolvasása FD. fájlleíróból a szabványos bemenet he-\n" -" lyett\n" +" -a tömb\ta beolvasott szavak TÖMB tömb 0-tól kezdve egymást követÅ‘\n" +" \t\tindexű elemeibe kerülnek\n" +" -d elválasztó\taz ELVÃLASZTÓ elsÅ‘ karakteréig olvasson az újsor\n" +" \t\thelyett\n" +" -e\ta sor beolvasása Readline használatával interaktívan\n" +" -i szöveg\ta SZÖVEG használata kezdeti szövegként (Readline-hoz)\n" +" -n szám\tSZÃM karakter beolvasása után térjen vissza, ne várjon\n" +" \t\tújsorra, de vegye figyelembe az elválasztót, ha kevesebb\n" +" \t\tmint SZÃM karaktert olvasott be az elválasztóig\n" +" -N szám\tpontosan akkor térjen vissza, ha SZÃM karaktert olvasott\n" +" \t\tbe, kivéve az EOF elérését és az idÅ‘túllépést, az\n" +" \t\telválasztókat figyelmen kívül hagyva\n" +" -p prompt\tírja ki a PROMPT értékét olvasás elÅ‘tt a sor elejére,\n" +" \t\tzáró újsor nélkül\n" +" -r\ttiltsa le a „\\†kezdetű escape-ek használatát\n" +" -s\tterminálról érkezÅ‘ bemenet ne visszhangozzon\n" +" -t idÅ‘\tIDÅ leteltével jelezzen hibát, ha nem tudott egy teljes\n" +" \t\tsort beolvasni. A $TMOUT változó értéke az alapértelmezett\n" +" \t\tidÅ‘korlát. Az IDÅ lehet tizedestört is. Ha idÅ‘ 0, csak akkor\n" +" \t\tlesz sikeres a beolvasás, ha az adott fájlleírón már\n" +" \t\tolvasható a bemenet. IdÅ‘túllépés esetén a kilépési kód >128\n" +" -u fd\tfájl beolvasása az FD. fájlleíróból a szabványos bemenet\n" +" \t\thelyett\n" " \n" " Kilépési kód:\n" " 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." +" (ekkor > 128) vagy érvénytelen fájlleíró megadásakor a -u kapcsolónak." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3739,14 +3883,15 @@ msgstr "" "Visszatér egy függvénybÅ‘l.\n" " \n" " Egy függvény vagy egy „sourceâ€-olt parancsfájl adott N kilépési kóddal\n" -" való visszatérését okozza. Ha N nincs megadva, az utolsó parancs kilé-\n" -" pési kódjával tér vissza.\n" +" való visszatérését okozza. Ha N nincs megadva, az utolsó parancs " +"kilépési\n" +" kódjával tér vissza.\n" " \n" " Kilépési kód:\n" " 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:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3815,7 +3960,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3833,9 +3979,8 @@ msgid "" msgstr "" "ParancsértelmezÅ‘-beállítások és pozicionális paraméterek állítása, törlése.\n" " \n" -" ParancsértelmezÅ‘-jellemzÅ‘k és pozicionális paraméterek értékeinek mó-\n" -" dosítása, parancsértelmezÅ‘-változók neveinek és értékeinek kiírása.\n" -" display the names and values of shell variables.\n" +" ParancsértelmezÅ‘-attribútumok és pozicionális paraméterek értékeinek\n" +" módosítása, parancsértelmezÅ‘-változók neveinek és értékeinek kiírása.\n" " \n" " Kapcsolók:\n" " -a A módosított vagy létrehozott változó exportálásra jelölése\n" @@ -3882,8 +4027,9 @@ msgstr "" " vi vi-szerű sorszerkesztés\n" " xtrace mint -x\n" " -p Mindig be van kapcsolva, ha a valós és effektív felhasználó nem\n" -" egyezik. Letiltja az $ENV fájl értelmezését és a parancsértelme-\n" -" zÅ‘-függvények betöltését. A kapcsoló kikapcsolása az effektív\n" +" egyezik. Letiltja az $ENV fájl értelmezését és a " +"parancsértelmezÅ‘-\n" +" függvények betöltését. A kapcsoló kikapcsolása az effektív\n" " uid és gid valósra állítását okozza\n" " -t Egyetlen parancs beolvasása és végrehajtás után kilépés\n" " -u Nem létezÅ‘ változók behelyettesítése legyen hiba\n" @@ -3894,23 +4040,29 @@ msgstr "" " -E Az ERR csapdát öröklik a függvények\n" " -H Felkiáltójeles elÅ‘zményhelyettesítés engedélyezése. Interaktív\n" " parancsértelmezÅ‘nél alapértelmezés\n" -" -P Parancsok végrehajtásánál szimbolikus linkek követésének tiltá-\n" -" sa (például cd esetében)\n" +" -P Parancsok végrehajtásánál szimbolikus linkek követésének tiltása\n" +" (például cd esetében)\n" " -T A DEBUG csapdát öröklik a függvények\n" +" -- A további argumentumok hozzárendelése a pozicionális " +"paraméterekhez.\n" +" Ha nincsenek további argumentumok, akkora a pozicionális " +"paraméterek\n" +" törlésre kerülnek.\n" " - A további argumentumok pozicionális paraméterekhez rendelése\n" " A -x és -v kapcsolók ki vannak kapcsolva.\n" " \n" " „-†helyett „+†használatával a kapcsolók tilthatóak. A kapcsolók a\n" -" parancsértelmezÅ‘ indításakor is állíthatóak. Az érvényben lévÅ‘ kapcso-\n" -" lók a $- változóban vannak. A záró nem értelmezhetÅ‘ argumentumok pozi-\n" -" cionális paraméterek lesznek (rendre $1, $2 ... $n). Ha nincs ARG, min-\n" -" den parancsértelmezÅ‘-változó kiírásra kerül.\n" +" parancsértelmezÅ‘ indításakor is állíthatóak. Az érvényben lévÅ‘ " +"kapcsolók\n" +" a $- változóban vannak. A záró nem értelmezhetÅ‘ argumentumok " +"pozicionális\n" +" paraméterek lesznek (rendre $1, $2 ... $n). Ha nincs ARG, minden\n" +" parancsértelmezÅ‘-változó kiírásra kerül.\n" " \n" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap." -#: builtins.c:1126 -#, fuzzy +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3920,7 +4072,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3931,16 +4083,20 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -"ParancsértelmezÅ‘-változók, -függvények és -jellemzÅ‘k törlése.\n" +"ParancsértelmezÅ‘-változók és -függvények értékeinek és jellemzÅ‘inek " +"törlése.\n" " \n" " Minden NÉV nevű függvény vagy változó törlése.\n" " \n" " Kapcsolók:\n" -" -f minden NÉV függvény\n" -" -v minden NÉV változó\n" +" -f\tminden NÉV függvény\n" +" -v\tminden NÉV változó\n" +" -n\tminden NÉV névhivatkozás, és a változó törlése az általa\n" +" \t\thivatkozott változó helyett\n" " \n" -" Kapcsolók nélkül az unset elÅ‘ször változót, sikertelenség esetén függ-\n" -" vényt próbál törölni.\n" +" Kapcsolók nélkül az unset elÅ‘ször változót, sikertelenség esetén " +"függvényt\n" +" próbál törölni.\n" " \n" " Néhány változót nem lehet törölni, lásd „readonlyâ€.\n" " \n" @@ -3948,7 +4104,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha hibás kapcsolót kap, vagy egy NÉV csak\n" " olvasható." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3966,24 +4122,23 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -"Exportálásra jelöl egy parancsértelmezÅ‘-változót.\n" +"ParancsértelmezÅ‘-változók exportálás attribútumának beállítása.\n" " \n" " Minden NÉV automatikus környezeti változóvá exportálásra jelölése. Ãgy\n" -" minden ezután kiadott parancs környezetében megjelenik. Ha ÉRTÉK is\n" +" minden ezután kiadott parancs környezetében megjelenik. Ha az ÉRTÉK is\n" " meg van adva, értékadás is történik.\n" " \n" " Kapcsolók:\n" -" -f parancsértelmezÅ‘-függvényekre vonatkozzon\n" -" -n export-jellemzÅ‘ eltávolítása minden NÉV-rÅ‘l\n" -" -p összes exportált változó és függvény listázása\n" +" -f\tparancsértelmezÅ‘-függvényekre vonatkozzon\n" +" -n\texport attribútum eltávolítása minden NÉVRÅL\n" +" -p\tösszes exportált változó és függvény listázása\n" " \n" " Egy „--†argumentum letiltja a további kapcsolóértelmezést.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEV-et kap." +" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap." -#: builtins.c:1167 -#, fuzzy +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3995,9 +4150,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4006,22 +4160,23 @@ msgid "" msgstr "" "ParancsértelmezÅ‘-változó változtathatatlannak jelölése.\n" " \n" -" Minden NÉV csak olvashatóvá állítása. A továbbiakban a NEV-ek értéke\n" -" értékadással nem változtatható. Ha ÉRTÉK is van megadva, az írásvéde-\n" -" lem bekapcsolása elÅ‘tt értékadás is történik.\n" +" Minden NÉV csak olvashatóvá állítása. A továbbiakban a NEVEK értéke\n" +" értékadással nem változtatható. Ha ÉRTÉK is van megadva, az írásvédelem\n" +" bekapcsolása elÅ‘tt értékadás is történik.\n" " \n" " Kapcsolók:\n" -" -a indexelt tömbváltozókra vonatkozik\n" -" -A asszociatív tömbváltozókra vonatkozik\n" -" -f függvényekre vonatkozik\n" -" -p az összes csak olvasható változó és függvény listázása\n" +" -a\tindexelt tömbváltozókra vonatkozik\n" +" -A\tasszociatív tömbváltozókra vonatkozik\n" +" -f\tfüggvényekre vonatkozik\n" +" -p\taz összes csak olvasható változó vagy függvény listázása\n" +" \t\taz -f kapcsoló megadásától függÅ‘en\n" " \n" " Egy „--†argumentum letiltja a további kapcsolóértelmezést.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEV-et kap." +" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4039,7 +4194,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha N negatív vagy nagyobb mint $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4054,15 +4209,17 @@ msgid "" msgstr "" "Parancsok végrehajtása fájlból a futó parancsértelmezÅ‘ben.\n" " \n" -" FÃJLNÉV fájlból a parancsok beolvasása és végrehajtása. A fájlnév meg-\n" -" találásához a $PATH által felsorolt könyvtárakban keres. Az ARGumentu-\n" -" mok pozicionális paraméterek lesznek FÃJLNÉV végrehajtásakor.\n" +" A FÃJLNÉV fájlból a parancsok beolvasása és végrehajtása. A fájlnév\n" +" megtalálásához a $PATH által felsorolt könyvtárakban keres. Az " +"ARGUMENTUMOK\n" +" pozicionális paraméterek lesznek a FÃJLNÉV végrehajtásakor.\n" " \n" " Kilépési kód:\n" -" 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ó." +" A FÃJLNÉV utolsó parancsának kilépési kódjával tér vissza; " +"sikertelenül,\n" +" ha a FÃJLNÉV nem olvasható." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4078,18 +4235,17 @@ msgstr "" "Parancsvégrehajtás felfüggesztése.\n" " \n" " A futó parancsértelmezÅ‘ végrehajtásának felfüggesztése SIGCONT szignál\n" -" érkezéséig. Ha nincs erÅ‘ltetve, bejelentkezÅ‘ parancsértelmezÅ‘t nem\n" +" érkezéséig. Ha nincs erÅ‘ltetve, bejelentkezési parancsértelmezÅ‘ nem\n" " függeszthetÅ‘ fel.\n" " \n" " Kapcsolók:\n" -" -f felfüggesztés erÅ‘ltetése bejelentkezÅ‘ parancsértelmezÅ‘n is\n" +" -f\tfelfüggesztés erÅ‘ltetése bejelentkezési parancsértelmezÅ‘n is\n" " \n" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha a munkakezelés nem támogatott vagy hiba\n" " történt." -#: builtins.c:1248 -#, fuzzy +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4153,9 +4309,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4173,12 +4329,13 @@ msgid "" msgstr "" "Feltételes kifejezések kiértékelése.\n" " \n" -" 0-val (igaz) vagy 1-gyel (hamis) lép ki a KIFejezés értékétÅ‘l függÅ‘en.\n" -" A kifejezéseknek egy vagy két operandusa lehet. Az egyoperandusú kife-\n" -" jezések többnyire fájlok állapotát vizsgálják. Karakterláncokat és\n" +" 0-val (igaz) vagy 1-gyel (hamis) lép ki a KIFEJEZÉS értékétÅ‘l függÅ‘en.\n" +" A kifejezéseknek egy vagy két operandusa lehet. Az egyoperandusú " +"kifejezések\n" +" többnyire fájlok állapotát vizsgálják. Karakterláncokat és\n" " számokat is lehet összehasonlítani.\n" " \n" -" Fájl-operátorok:\n" +" Fájloperátorok:\n" " \n" " -a FÃJL Igaz, ha a fájl létezik.\n" " -b FÃJL Igaz, ha a fájl blokkeszköz.\n" @@ -4228,9 +4385,14 @@ msgstr "" " \n" " -o BEÃLLÃTÃS Igaz, ha a parancsértelmezÅ‘-beállítás engedélyezve\n" " van.\n" -" ! KIF Igaz, ha kif hamis.\n" -" KIF1 -a KIF2 Igaz, ha kif1 ÉS kif2 is igaz.\n" -" KIF1 -o KIF2 Igaz, ha kif1 VAGY kif2 igaz.\n" +" -v VÃLT Igaz, ha a VÃLT parancsértelmezÅ‘-változó be van " +"állítva.\n" +" -R VÃLT Igaz, ha a VÃLT parancsértelmezÅ‘-változó be van " +"állítva,\n" +" és névhivatkozás.\n" +" ! KIF Igaz, ha KIF hamis.\n" +" KIF1 -a KIF2 Igaz, ha KIF1 ÉS KIF2 is igaz.\n" +" KIF1 -o KIF2 Igaz, ha KIF1 VAGY KIF2 igaz.\n" " \n" " arg1 OP arg2 Aritmetikai összehasonlítások. OP lehet: -eq, -ne,\n" " -lt, -le, -gt vagy -ge.\n" @@ -4240,10 +4402,11 @@ msgstr "" " vagy egyenlÅ‘, mint ARG2.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, ha KIF igaz; sikertelenséggel, ha KIF hamis vagy\n" +" Sikerrel tér vissza, ha a KIF igaz; sikertelenséggel, ha a KIF hamis, " +"vagy\n" " érvénytelen argumentumokat kap." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4253,10 +4416,9 @@ msgstr "" "Feltételes kifejezések kiértékelése.\n" " \n" " Ez a „test†beépített parancs szinonimája, de annyiban eltér tÅ‘le,\n" -" hogy az utolsó argumentuma „]†kell legyen – a nyitó „]â€-lel összhang-\n" -" ban." +" hogy az utolsó argumentuma „]†kell legyen – a nyitó „]â€-lel összhangban." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4269,13 +4431,13 @@ msgid "" msgstr "" "Végrehajtási idÅ‘k kiírása.\n" " \n" -" Megjeleníti a kumulált felhasználói- és rendszergépidÅ‘t, amelyet a pa-\n" -" rancsértelmezÅ‘ és gyermekfolyamatai használtak. \n" +" Megjeleníti a kumulált felhasználói- és rendszergépidÅ‘t, amelyet a\n" +" parancsértelmezÅ‘ és gyermekfolyamatai használtak.\n" +" \n" " Kilépési kód:\n" " Mindig sikeres." -#: builtins.c:1350 -#, fuzzy +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4320,34 +4482,45 @@ msgid "" msgstr "" "Szignálok és más események elfogása.\n" " \n" -" Meghatároz és aktivál eseménykezelÅ‘ket, amelyek szignálok és más kör-\n" -" rülmények bekövetkezésekor futnak.\n" +" Meghatároz és aktivál eseménykezelÅ‘ket, amelyek szignálok érkezésekor\n" +" vagy más körülmények bekövetkezésekor futnak.\n" " \n" -" ARG az a parancs, amelyet a parancsértelmezÅ‘ beolvas és végrehajt a\n" -" SZIGNÃL(ok) bekövetkezésekor. Ha ARG hiányzik (és egy SZIGNÃL van meg-\n" -" adva) vagy ARG egy „-â€, akkor minden szignálkezelÅ‘ visszaáll az alap-\n" -" értelmezett viselkedésre. Ha ARG üres, akkor a megadott SZIGNÃL-ok be-\n" -" következésekor nem történik semmi a parancsértelmezÅ‘ben és új gyermek-\n" -" folyamataiban.\n" +" Az ARG az a parancs, amelyet a parancsértelmezÅ‘ beolvas és végrehajt a\n" +" SZIGNÃLOK bekövetkezésekor. Ha az ARG hiányzik (és egy SZIGNÃL van\n" +" megadva) vagy az ARG egy „-â€, akkor minden szignálkezelÅ‘ visszaáll az\n" +" alapértelmezett viselkedésre. Ha az ARG üres, akkor a megadott " +"SZIGNÃLOK\n" +" bekövetkezésekor nem történik semmi a parancsértelmezÅ‘ben és új\n" +" gyermekfolyamataiban.\n" " \n" -" Ha a SZIGNÃL értéke EXIT (0), ARG a parancsértelmezÅ‘bÅ‘l való kilépéskor\n" -" fut. Ha értéke DEBUG, ARG minden parancs elÅ‘tt fut. Ha nincsenek argu-\n" -" mentumok, a trap kilistázza az összes szignált és parancsot.\n" +" Ha a SZIGNÃL értéke EXIT (0), az ARG a parancsértelmezÅ‘bÅ‘l való " +"kilépéskor\n" +" fut. Ha értéke DEBUG, az ARG minden parancs elÅ‘tt fut. Ha a SZIGNÃL " +"értéke\n" +" RETURN, az ARG a . vagy source kulcsszó használatával futtatott " +"függvény\n" +" vagy parancsfájl befejezÅ‘désekor fut le. Ha az érték ERR, akkor az ARG " +"a\n" +" parancsok olyan hibáikor fut le, amikor a parancsértelmezÅ‘ kilépne a -e\n" +" kapcsoló használatakor.\n" +" \n" +" Argumentumok nélkül a trap kilistázza az összes szignált és parancsot.\n" " \n" " Kapcsolók:\n" -" -l a rendszeren érvényes szignálnevek és sorszámaik kilistázása\n" -" -p kilistázza a trap által beállított eseménykezelÅ‘ket\n" +" -l\ta rendszeren érvényes szignálnevek és sorszámaik kilistázása\n" +" -p\tkilistázza a trap által beállított eseménykezelÅ‘ket\n" " \n" -" SZIGNÃL értéke egy trap -l által kilistázott szignálnév vagy szám.\n" -" A szignálnevek kis- és nagybetűkre érzéketlenek, a SIG elÅ‘tag elhagy-\n" -" ható. Szignált a parancsértelmezÅ‘nek a „kill -szignál $$†paranccsal\n" +" A SZIGNÃL értéke a -ban megtalálható szignálnév vagy szám.\n" +" A szignálnevek kis- és nagybetűkre érzéketlenek, a SIG elÅ‘tag " +"elhagyható.\n" +" Szignált a parancsértelmezÅ‘nek a „kill -szignál $$†paranccsal\n" " lehet küldeni.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, kivéve ha SZIGNÃL érvénytelen vagy érvénytelen\n" +" Sikerrel tér vissza, kivéve ha a SZIGNÃL érvénytelen, vagy érvénytelen\n" " kapcsolót kap." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4356,18 +4529,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4376,31 +4549,30 @@ msgid "" " Returns success if all of the NAMEs are found; fails if any are not " "found." msgstr "" -"Tájékoztat egy parancs típusáról.\n" +"Tájékoztatás egy parancs típusáról.\n" " \n" -" Minden NÉV-ra kiírja, hogy hogy lenne értelmezve parancsnévként.\n" +" Minden NÉV esetén kiírja, hogy hogy lenne értelmezve parancsnévként.\n" " \n" " Kapcsolók:\n" -" -a minden NÉV-re illeszkedÅ‘ futtatható parancs felsorolása,\n" -" beleértve az aliasokat, beépített parancsokat, és a függvé-\n" -" nyeket (ha „-p†nem tiltja)\n" -" -f függvényeket ne keressen\n" -" -P csak a PATH-ban keresse NEV-et, akkor is, ha van ilyen nevű\n" -" alias, parancs vagy függvény\n" -" -p a végrehajtható fájl nevét írja ki, ha amely végrehajtódna\n" -" a parancs kiadásakor. Ha ez nem fájl lenne, nem ír ki semmit\n" -" -t egyetlen szót ír ki, amely NÉV típusát jelzi: „aliasâ€,\n" -" „keyword†(kulcsszó), „function†(függvény), „builtin†(be-\n" -" épített parancs), „file†(fájl) vagy „†(nem található)\n" +" -a\tminden NÉVRE illeszkedÅ‘ futtatható parancs felsorolása,\n" +" \t\tbeleértve az aliasokat, beépített parancsokat, és a\n" +" \t\tfüggvényeket (ha „-p†nem tiltja)\n" +" -f\tfüggvényeket ne keressen\n" +" -P\tcsak a PATH-ban keresse a NEVET, akkor is, ha van ilyen nevű\n" +" \t\talias, parancs vagy függvény\n" +" -p\ta végrehajtható fájl nevét írja ki, ha amely végrehajtódna\n" +" \t\ta parancs kiadásakor. Ha ez nem fájl lenne, nem ír ki semmit\n" +" -t\tegyetlen szót ír ki, amely NÉV típusát jelzi: „aliasâ€,\n" +" \t\t„keyword†(kulcsszó), „function†(függvény), „builtinâ€\n" +" \t\t(beépített parancs), „file†(fájl) vagy „†(nem található)\n" " \n" " Kapcsolók:\n" -" NÉV ÉrtelmezendÅ‘ parancsnév.\n" +" NÉV\tÉrtelmezendÅ‘ parancsnév.\n" " \n" " Kilépési kód:\n" " Sikerrel lép ki, ha minden NÉV megtalálható, sikertelenül, ha nem." -#: builtins.c:1417 -#, fuzzy +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4418,6 +4590,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4429,7 +4602,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4448,45 +4622,52 @@ msgid "" msgstr "" "ParancsértelmezÅ‘ erÅ‘forráskorlátjainak beállítása.\n" " \n" -" Szabályozási lehetÅ‘séget ad a parancsértelmezÅ‘ által elérhetÅ‘ erÅ‘for-\n" -" rások korlátozásához, ha a rendszer támogatja.\n" +" Szabályozási lehetÅ‘séget ad a parancsértelmezÅ‘ által elérhetÅ‘ " +"erÅ‘források\n" +" korlátozásához, ha a rendszer támogatja.\n" " \n" " Kapcsolók:\n" -" -S a puha (soft) korlátozás használata\n" -" -H a kemény (hard) korlátozás használata\n" -" -a az összes aktuális korlátozás kilistázása\n" -" -b foglalatok (socket) puffermérete\n" -" -c core fájlok maximális mérete (0 tiltja)\n" -" -d folyamatok maximális adatszegmens-mérete\n" -" -e a maximális ütemezési prioritás (nice)\n" -" -f a parancsértelmezÅ‘ és gyermekei által írható legnagyobb fájl\n" -" -i várakozó szignálok maximális száma\n" -" -l folyamatonként foglalható memória maximális mérete\n" -" -m a maximálisan operatív memóriában tartható terület mérete\n" -" -n nyitott fájlleírók maximális száma\n" -" -p a csÅ‘vezetékpuffer mérete\n" -" -q a Posix üzenetsorokban tartható byte-ok száma\n" -" -r a maximális valós idejű ütemezési prioritás\n" -" -s maximális veremméret\n" -" -t maximális processzoridÅ‘ másodpercekben\n" -" -u felhasználói folyamatok maximális száma\n" -" -v virtuális memória mérete\n" -" -x fájlzárolások maximális száma\n" +" -S\ta puha (soft) korlátozás használata\n" +" -H\ta kemény (hard) korlátozás használata\n" +" -a\taz összes aktuális korlátozás kilistázása\n" +" -b\tfoglalatok (socket) puffermérete\n" +" -c\tcore fájlok maximális mérete (0 tiltja)\n" +" -d\tfolyamatok maximális adatszegmens-mérete\n" +" -e\ta maximális ütemezési prioritás (nice)\n" +" -f\ta parancsértelmezÅ‘ és gyermekei által írható legnagyobb fájl\n" +" -i\tvárakozó szignálok maximális száma\n" +" -k\ta folyamathoz lefoglalt kqueue-k maximális száma\n" +" -l\tfolyamatonként foglalható memória maximális mérete\n" +" -m\ta maximálisan operatív memóriában tartható terület mérete\n" +" -n\tnyitott fájlleírók maximális száma\n" +" -p\ta csÅ‘vezetékpuffer mérete\n" +" -q\ta POSIX üzenetsorokban tartható byte-ok száma\n" +" -r\ta maximális valós idejű ütemezési prioritás\n" +" -s\tmaximális veremméret\n" +" -t\tmaximális processzoridÅ‘ másodpercekben\n" +" -u\tfelhasználói folyamatok maximális száma\n" +" -v\tvirtuális memória mérete\n" +" -x\tfájlzárolások maximális száma\n" +" -P\tpszeudoterminálok maximális száma\n" +" -T\tszálak maximális száma\n" " \n" -" Ha KORLÃT meg van adva, az lesz az új értéke a megadott erÅ‘forrásnak.\n" +" Nem minden kapcsoló érhetÅ‘ el minden platformon.\n" +" \n" +" Ha a KORLÃT meg van adva, az lesz az új értéke a megadott erÅ‘forrásnak.\n" " Speciális KORLÃT-értékek: „hard†(jelenlegi kemény korlát értéke),\n" -" „soft†(jelenlegi puha korlát értéke) és „unlimited†(korlátozás nél-\n" -" kül).\n" +" „soft†(jelenlegi puha korlát értéke) és „unlimited†(korlátozás " +"nélkül).\n" " Ha nincs kapcsoló megadva, -f az alapértelmezett.\n" " \n" -" Az értékek 1024 byte-os egységekben értendÅ‘ek, kivéve a -t, amely má-\n" -" sodpercekben, a -p, amely 512 byte-okban, valamint a -u, amely darab-\n" -" ban értendÅ‘.\n" +" Az értékek 1024 byte-os egységekben értendÅ‘ek, kivéve a -t, amely\n" +" másodpercekben, a -p, amely 512 byte-okban, valamint a -u, amely " +"darabban\n" +" értendÅ‘.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetében." +" Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy hiba esetében." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4503,26 +4684,26 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -"Kiírja vagy beállítja a fájlmódmaszkot.\n" +"A fájlmódmaszk kiírása vagy beállítása.\n" " \n" -" Beállítja a fájllétrehozási maszkot MÓD-ra. Ha MÓD hiányzik, az aktuá-\n" -" lis értékét írja ki.\n" +" Beállítja a fájllétrehozási maszkot a MÓDRA. Ha a MÓD hiányzik, az\n" +" aktuális értékét írja ki.\n" " Fájlok létrehozásakor az alapértelmezett jogokból ki lesznek maszkolva\n" " az itt megadott bitek. Ez nem akadályozza meg, hogy a program vagy a\n" " felhasználó késÅ‘bb megváltoztassa a fájl jogait.\n" " \n" -" Ha MÓD számjeggyel kezdÅ‘dik, oktális számként lesz értelmezve; egyéb-\n" -" ként a chmod(1) által használt szimbolikus formátumban.\n" +" Ha a MÓD számjeggyel kezdÅ‘dik, oktális számként lesz értelmezve; " +"egyébként\n" +" a chmod(1) által használt szimbolikus formátumban.\n" " \n" " Kapcsolók:\n" -" -p ha MÓD hiányzik, a kimenet újrahasználó formátumot használjon\n" -" -S a kimenet használja a szimbolikus formát (különben oktálisat)\n" +" -p\tha a MÓD hiányzik, a kimenet újrahasználható formátumban legyen\n" +" -S\ta kimenet használja a szimbolikus formát (különben oktálisat)\n" " \n" " Kilépési kód:\n" -" Sikerrel lép ki, kivéve ha MÓD vagy egy kapcsoló érvénytelen." +" Sikerrel lép ki, kivéve ha a MÓD vagy egy kapcsoló érvénytelen." -#: builtins.c:1485 -#, fuzzy +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4541,19 +4722,23 @@ msgid "" " Returns the status of the last ID; fails if ID 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" +"Munka befejezésének megvárása, és a kilépési kód visszaadása.\n" " \n" -" ID számú folyamat befejezésére vár, majd jelzi a kilépési kódját. ID\n" -" lehet egy PID vagy egy %MUNKASZÃM. Ha nincs ID megadva, bármelyik\n" -" gyermekfolyamat befejezésekor visszatér, 0-val. Ha ID munkaszám, a\n" -" csÅ‘vezeték összes folyamatát bevárja.\n" +" Az ID számú folyamat befejezésére vár, majd jelzi a kilépési kódját.\n" +" Az ID lehet egy PID vagy egy %MUNKASZÃM. Ha az ID nincs megadva, minden\n" +" aktív gyermekfolyamat befejezését bevárja, és nullával tér vissza. Ha " +"az\n" +" ID munkaszám, a csÅ‘vezeték összes folyamatát bevárja.\n" +" \n" +" Ha a -n kapcsoló meg van adva, megvárja a következÅ‘ feladat " +"befejezését,\n" +" és annak kilépési kódját adja vissza.\n" " \n" " Kilépési kód:\n" " ID kilépési kódjával tér vissza; érvénytelen ID vagy kapcsoló esetén\n" " sikertelenül." -#: builtins.c:1506 -#, fuzzy +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4567,16 +4752,18 @@ msgid "" "invalid\n" " option is given." msgstr "" -"Munka befejezésének megvárása és a kilépési kód visszaadása.\n" +"Folyamat befejezésének megvárása, és a kilépési kód visszaadása.\n" " \n" -" ID számú folyamat befejezésére vár, majd jelzi a kilépési kódját. ID\n" -" egy folyamatazonosító kell legyen.\n" +" A PID számú folyamat befejezésére vár, majd jelzi a kilépési kódját.\n" +" Ha nincs megadva PID, minden aktív gyermekfolyamatot bevár, és nullával\n" +" tér vissza. A PID egy folyamatazonosító kell legyen.\n" " \n" " Kilépési kód:\n" -" ID kilépési kódjával tér vissza; érvénytelen ID vagy kapcsoló esetén\n" -" sikertelenül." +" Az utolsó PID kilépési kódjával tér vissza; érvénytelen PID vagy " +"kapcsoló\n" +" esetén sikertelenül." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4592,13 +4779,13 @@ msgstr "" " \n" " A „for†ciklus végrehajt egy parancssorozatot a megadott listán. Ha az\n" " „in SZAVAK ...;†rész hiányzik, „in \"$@\"†az alapértelmezés. Minden\n" -" iterációnál NÉV értéke a SZAVAK lista megfelelÅ‘ elemére lesz állítva,\n" -" és így futnak a PARANCSOK.\n" +" iterációnál a NÉV értéke a SZAVAK lista megfelelÅ‘ elemére lesz állítva,\n" +" és így futnak le a PARANCSOK.\n" " \n" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4617,18 +4804,19 @@ msgstr "" "Aritmetikai for-ciklus.\n" " \n" " Ekvivalens a következÅ‘vel:\n" -" (( KIF1 ))\n" -" while (( KIF2 )); do\n" -" PARANCSOK\n" -" (( KIF3 ))\n" -" done\n" -" KIF1, KIF2 és KIF3 aritmetikai kifejezések. Ha valamelyik el van hagy-\n" -" va, úgy működik, mintha értéke 1 lenne.\n" +" \t(( KIF1 ))\n" +" \twhile (( KIF2 )); do\n" +" \t\tPARANCSOK\n" +" \t\t(( KIF3 ))\n" +" \tdone\n" +" A KIF1, KIF2 és KIF3 aritmetikai kifejezések. Ha valamelyik el van " +"hagyva,\n" +" akkor úgy működik, mintha értéke 1 lenne.\n" " \n" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4647,24 +4835,24 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"A felhasználóval kiválasztat a listából egy elemet és végrehajt rá egy pa-\n" -"rancsot.\n" +"Szavak kiválasztása egy listából, és egy parancs végrehajtása rá.\n" " \n" -" A SZAVAK kiértékelésre kerülnek és egy szólistát képeznek. A szavak a\n" -" szabványos hibakimenetre kerülnek soronként, sorszámozva. Ezután meg-\n" -" jelenik a $PS3 és egy sorszámot vár a szabványos bemeneten. Érvényes\n" -" sorszám megadásakor a PARANCSOKAT végrehajtja úgy, hogy NÉV a megfelelÅ‘\n" -" sorszámú elem értékét kapja. Ezután újból megjelenik $PS3 és újból le-\n" -" het választani. EOF bemenet és break parancs esetén fejezÅ‘dik be a hu-\n" -" rok. Érvénytelen választás esetén szintén új prompt jelenik meg. Üres\n" -" sor beolvasásakor a lehetÅ‘ségek is újra megjelennek. A beolvasott sor\n" -" a REPLY változóba kerül. Ha elmarad az „in SZAVAK†rész, „in \"$@\"â€\n" -" az alapértelmezés.\n" +" A SZAVAK kiértékelésre kerülnek, és egy szólistát képeznek. A szavak a\n" +" szabványos hibakimenetre kerülnek soronként, sorszámozva. Ha az\n" +" „in SZAVAK ...;†rész hiányzik, „in \"$@\"†az alapértelmezés. Ezután\n" +" megjelenik a PS3 prompt, és egy sorszámot vár a szabványos bemeneten.\n" +" Érvényes sorszám megadásakor a PARANCSOKAT végrehajtja úgy, hogy a NÉV\n" +" a megfelelÅ‘ sorszámú elem értékét kapja. Ha a sor üres, újból " +"megjelennek\n" +" a SZAVAK és a prompt, és újból lehet választani. A parancs EOF bemenet\n" +" esetén fejezÅ‘dik be. Bármely más érték beolvasásakor a NÉV null lesz.\n" +" A beolvasott sor a REPLY változóba kerül. A PARANCSOK minden választás\n" +" után végrehajtásra kerülnek egy break parancs végrehajtásáig.\n" " \n" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4679,22 +4867,22 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" -"A csÅ‘vezeték végrehajtási idejét írja ki.\n" +"A csÅ‘vezeték végrehajtási idejének kiírása.\n" " \n" -" CSÅVEZETÉK végrehajtása és egy összefoglaló kiírása a végrehajtás köz-\n" -" ben eltelt valós idÅ‘rÅ‘l, a használt felhasználói- és rendszergépidÅ‘k-\n" -" rÅ‘l CSÅVEZETÉK befejezÅ‘désekor.\n" +" A CSÅVEZETÉK végrehajtása és egy összefoglaló kiírása a végrehajtás " +"közben\n" +" eltelt valós idÅ‘rÅ‘l, a használt felhasználói- és rendszergépidÅ‘krÅ‘l\n" +" a CSÅVEZETÉK befejezÅ‘désekor.\n" " \n" " Kapcsolók:\n" -" -p az összefoglaló megjelenítése a hordozható Posix formában\n" +" -p\taz összefoglaló megjelenítése a hordozható POSIX formában\n" " \n" -" A TIMEFORMAT változó értéke felhasználásra kerül a kimenet formázása-\n" -" kor.\n" +" A TIMEFORMAT változó értéke felhasználásra kerül a kimenet formázásakor\n" " \n" " Kilépési kód:\n" " A kilépési kód a CSÅVEZETÉK kilépési kódja lesz." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4706,14 +4894,15 @@ msgid "" msgstr "" "Parancsok végrehajtása mintaillesztés alapján.\n" " \n" -" PARANCSOK végrehajtása azon SZAVAKon, amelyek illeszkednek a MINTÃ-ra.\n" -" Több mintát „|†jellel lehet elválasztani. A minták a fájlnév-helyet-\n" -" tesítés formátumát használják.\n" +" A PARANCSOK végrehajtása azon SZAVAKON, amelyek illeszkednek a MINTÃRA.\n" +" Több mintát „|†jellel lehet elválasztani. A minták a fájlnév-" +"helyettesítés\n" +" formátumát használják.\n" " \n" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4737,16 +4926,16 @@ msgstr "" " \n" " Az „if PARANCSOK†lista végrehajtásra kerül. Ha kilépési kódja nulla,\n" " akkor a „then PARANCSOK†lista kerül végrehajtásra. Ha nem, akkor az\n" -" elsÅ‘ nullával kilépÅ‘ „elif PARANCSOK†listához tartozó „then PARARAN-\n" -" CSOK†lista kerül végrehajtásra. Ha egyik sem teljesül, az „else PA-\n" -" RANCSOK†lista kerül végrehajtásra. Az egész szerkezet kilépési kódja\n" +" elsÅ‘ nullával kilépÅ‘ „elif PARANCSOK†listához tartozó „then PARANCSOKâ€\n" +" lista kerül végrehajtásra. Ha egyik sem teljesül, az „else\n" +" PARANCSOK†lista kerül végrehajtásra. Az egész szerkezet kilépési kódja\n" " az utoljára végrehajtott parancs kilépési kódja, vagy nulla, ha nem\n" " teljesült egyik feltétel sem.\n" " \n" " Kilépési kód:\n" " Az utoljára végrehajtott parancs kilépési kódja." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4758,13 +4947,14 @@ msgid "" msgstr "" "Parancsok végrehajtása amíg a feltétel teljesül.\n" " \n" -" PARANCSOK végrehajtása addig, amíg a „while PARANCSOK†utolsó paran-\n" -" csa nullával lép ki.\n" +" A PARANCSOK végrehajtása addig, amíg a „while PARANCSOK†utolsó " +"parancsa\n" +" nullával lép ki.\n" " \n" " Kilépési kód:\n" " Az utolsónak végrehajtott parancs kilépési kódja." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4776,13 +4966,15 @@ msgid "" msgstr "" "Parancsok végrehajtása amíg a feltétel nem teljesül.\n" " \n" -" PARANCSOK végrehajtása addig, amíg a „until PARANCSOK†utolsó paran-\n" -" csa nem nullával lép ki.\n" +" A PARANCSOK értelmezése és végrehajtása addig, amíg az „until " +"PARANCSOKâ€\n" +" utolsó parancsa nem nullával lép ki.\n" " \n" " Kilépési kód:\n" " Az utolsónak végrehajtott parancs kilépési kódja." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4792,19 +4984,19 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Egy NÉV nevű társfolyamat létrehozása.\n" " \n" -" PARANCS aszinkron végrehajtása, a szabványos ki- és bemenet átirányí-\n" -" tásával egy-egy csÅ‘vezetékbe, amelyek fájlleírói a NÉV tömb 0-s és 1-\n" -" es elemeibe kerülnek a végrehajtó parancsértelmezÅ‘ben. Az alapértelme-\n" -" zett név: „COPROCâ€.\n" +" A PARANCS aszinkron végrehajtása, a szabványos ki- és bemenet\n" +" átirányításával egy-egy csÅ‘vezetékbe, amelyek fájlleírói a NÉV tömb\n" +" 0-s és 1-es elemeibe kerülnek a végrehajtó parancsértelmezÅ‘ben.\n" +" Az alapértelmezett NÉV: „COPROCâ€.\n" " \n" " Kilépési kód:\n" " A PARANCS kilépési kódjával tér vissza." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4819,15 +5011,16 @@ msgid "" msgstr "" "ParancsértelmezÅ‘-függvény definiálása.\n" " \n" -" Létrehoz egy NÉV nevű függvényt. Ha NÉV parancsként végrehajtásra ke-\n" -" rül, PARANCSOK futnak a hívó parancsértelmezÅ‘ környezetében. NÉV hívá-\n" -" sakor az argumentumok a függvénybÅ‘l $1...$n néven érhetÅ‘ek el, míg a\n" +" Létrehoz egy NÉV nevű függvényt. Ha a NÉV parancsként végrehajtásra\n" +" kerül, a PARANCSOK futnak a hívó parancsértelmezÅ‘ környezetében. A NÉV\n" +" hívásakor az argumentumok a függvénybÅ‘l $1...$n néven érhetÅ‘ek el, míg " +"a\n" " függvény neve $FUNCNAME-ként.\n" " \n" " Kilépési kód:\n" -" Sikerrel tér vissza, kivéve ha NÉV csak olvasható." +" Sikerrel tér vissza, kivéve ha a NÉV csak olvasható." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4845,7 +5038,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4858,16 +5051,18 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" -"Egy munkát elÅ‘térbe hoz.\n" +"Egy munka elÅ‘térbe hozása.\n" " \n" " Megegyezik az „fg†parancs MUNKASZÃM argumentumával. Egy megszakított\n" -" vagy háttérben futó munkát hoz elÅ‘térbe. MUNKASZÃM lehet munkanév vagy\n" +" vagy háttérben futó munkát hoz elÅ‘térbe. A MUNKASZÃM lehet munkanév " +"vagy\n" " munkaazonosító is. Egy záró „&†megadása a munkát háttérbe küldi, mint\n" -" a „bg†parancs. \n" +" a „bg†parancs.\n" +" \n" " Kilépési kód:\n" " A visszaállított parancs kilépési kódjával lép ki." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4877,15 +5072,15 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -"Aritmetikai kifejezéseket értékel ki.\n" +"Aritmetikai kifejezések kiértékelése.\n" " \n" -" A KIFEJEZÉS az aritmetikai kiértékelés szabályai szerint kerülnek ki-\n" -" értékelésre. Megyegyezik a „let KIFEJEZÉS†paranccsal.\n" +" A KIFEJEZÉS az aritmetikai kiértékelés szabályai szerint kerül\n" +" kiértékelésre. Megegyezik a „let KIFEJEZÉS†paranccsal.\n" " \n" " Kilépési kód:\n" " 1-gyel tér vissza, ha KIFEJEZÉS értéke 0, különben 0-val." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -4918,23 +5113,23 @@ msgstr "" " függÅ‘en. A kifejezések a „test†parancs által használt primitívekbÅ‘l\n" " épülnek fel, és a következÅ‘ operátorokkal keverhetÅ‘ek.\n" " \n" -" ( KIFEJEZÉS ) KIFEJEZÉS értékét adja vissza\n" -" ! KIFEJEZÉS Igaz, ha KIFEJEZÉS hamis\n" -" KIF1 && KIF2 Igaz, ha KIF1 és KIF2 is igaz\n" -" KIF1 || KIF2 Igaz, ha KIF1 vagy KIF2 igaz\n" +" ( KIFEJEZÉS )\tA KIFEJEZÉS értékét adja vissza\n" +" ! KIFEJEZÉS\tIgaz, ha a KIFEJEZÉS hamis\n" +" KIF1 && KIF2\tIgaz, ha KIF1 és KIF2 is igaz\n" +" KIF1 || KIF2\tIgaz, ha KIF1 vagy KIF2 igaz\n" " \n" -" Az „==†és „!=†operátorok használatánál a jobbérték mintaként értel-\n" -" mezÅ‘dik, és fájlnévillesztés történik. A hasonlóan működÅ‘ „=~†operá-\n" -" tor használatakor a jobbérték reguláris kifejezésként kerül illesztés-\n" -" re.\n" +" Az „==†és „!=†operátorok használatánál a jobbérték mintaként\n" +" értelmezÅ‘dik, és fájlnévillesztés történik. A hasonlóan működÅ‘ „=~â€\n" +" operátor használatakor a jobbérték reguláris kifejezésként kerül\n" +" illesztésre.\n" " \n" -" Az „&&†és „||†operátorok rövidzár-tulajdonságúak, vagyis KIF2-t nem\n" +" Az „&&†és „||†operátorok rövidzár tulajdonságúak, vagyis KIF2-t nem\n" " értékelik ki, ha KIF1-bÅ‘l is megállapítható a kifejezés értéke.\n" " \n" " Kilépési kód:\n" -" 0 vagy 1 a KIFEJEZÉS-tÅ‘l függÅ‘en." +" 0 vagy 1 a KIFEJEZÉSTÅL függÅ‘en." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4989,53 +5184,53 @@ msgid "" msgstr "" "Közös parancsértelmezÅ‘-változók és használatuk.\n" " \n" -" BASH_VERSION Verzióadatok errÅ‘l a Bash-rÅ‘l\n" -" CDPATH KettÅ‘spontokkal elválasztott könyvtárlista, amelyekben a\n" -" „cd†keres\n" -" GLOBIGNORE KettÅ‘spontokkal elválasztott mintalista, amelyekre illesz-\n" -" kedÅ‘ nevű fájlok nem kerülnek útvonal-kiegészítésre\n" -" HISTFILE A parancselÅ‘zményeket tároló fájl neve\n" -" HISTFILESIZE Az elÅ‘zményfájl maximális hossza sorokban\n" -" HISTSIZE A parancsértelmezÅ‘ által kezelt elÅ‘zménysorok maximális\n" -" száma\n" -" HOME A saját könyvtár teljes abszolút útvonala\n" -" HOSTNAME A parancsértelmezÅ‘t futtató gép neve\n" -" HOSTTYPE A Bash-t futtató CPU típusa\n" -" IGNOREEOF A parancsértelmezÅ‘ viselkedését állítja, hogy mit tegyen,\n" -" ha egy sor elején EOF karaktert kap bemenetén. Ha ez a vál-\n" -" tozó létezik, az értékében megadott számú EOF karaktert nem\n" -" vesz figyelembe (alapértelmezetten 10). Ha nincs beállítva,\n" -" EOF-ra kilép a parancsértelmezÅ‘\n" -" MACHTYPE A Bash-t futtató gépet leíró karakterlánc\n" -" MAILCHECK Megadott számú másodpercenként keres a Bash új leveleket\n" -" MAILPATH KettÅ‘spontokkal elválasztott fájlnévlista, ahol a Bash\n" -" új leveleket keres\n" -" OSTYPE A Bash-t futtató gépen futó UNIX-változat neve (verziója)\n" -" PATH KettÅ‘spontokkal elválasztott könyvtárlista, amelyekben a\n" -" Bash futtatható programokat keres parancsvégrehajtáskor\n" -" PROMPT_COMMAND Az elsÅ‘dleges prompt kiírása elÅ‘tt végrehajtandó pa-\n" -" rancs\n" -" PS1 Az elsÅ‘dleges prompt\n" -" PS2 A másodlagos prompt\n" -" PWD Az aktuális könyvtár teljes útvonala\n" -" SHELLOPTS Az engedélyezett shell-beállítások kettÅ‘spontokkal elválasz-\n" -" tott listája\n" -" TERM Az aktuális termináltípus neve\n" -" TIMEFORMAT A „time†parancs által használt idÅ‘formátum\n" -" auto_resume Nem üres érték esetén egy egy szóból álló parancs elÅ‘-\n" -" ször a megszakított munkák nevei között lesz keresve. Talá-\n" -" lat esetén a munka elÅ‘térbe kerül. „exact†érték esetén\n" -" pontosan megegyezÅ‘ nevet keres, „substring†esetén tetszÅ‘-\n" -" leges egyezést, minden más érték esetén a szó elején keres\n" -" histchars ElÅ‘zménykiegészítést és gyors cserét vezérlÅ‘ karaktereket\n" -" ad meg. Az elsÅ‘ karakter az elÅ‘zménybehelyettesítÅ‘ karak-\n" -" ter (általában „!â€), a második a gyorscsere-karakter (álta-\n" -" lában „^â€), a harmadik pedig az elÅ‘zménymegjegyzés (általá-\n" -" ban „#â€)\n" -" HISTIGNORE KettÅ‘spontokkal elválasztott mintalista, amely mintákra\n" -" illeszkedÅ‘ parancsok nem kerülnek az elÅ‘zmények közé\n" +" BASH_VERSION\tVerzióadatok errÅ‘l a Bash-rÅ‘l\n" +" CDPATH\tKettÅ‘spontokkal elválasztott könyvtárlista, amelyekben a\n" +" \t\t„cd†keres\n" +" GLOBIGNORE\tKettÅ‘spontokkal elválasztott mintalista, amelyekre\n" +" \t\tilleszkedÅ‘ nevű fájlok nem kerülnek útvonal-kiegészítésre\n" +" HISTFILE\tA parancselÅ‘zményeket tároló fájl neve\n" +" HISTFILESIZE\tAz elÅ‘zményfájl maximális hossza sorokban\n" +" HISTSIZE\tA parancsértelmezÅ‘ által kezelt elÅ‘zménysorok maximális\n" +" \t\tszáma\n" +" HOME\tA saját könyvtár teljes abszolút útvonala\n" +" HOSTNAME\tA parancsértelmezÅ‘t futtató gép neve\n" +" HOSTTYPE\tA Bash-t futtató CPU típusa\n" +" IGNOREEOF\tA parancsértelmezÅ‘ viselkedését állítja, hogy mit tegyen,\n" +" \t\tha egy sor elején EOF karaktert kap bemenetén. Ha ez a változó\n" +" \t\tlétezik, az értékében megadott számú EOF karaktert nem\n" +" \t\tvesz figyelembe (alapértelmezetten 10). Ha nincs beállítva,\n" +" \t\tEOF-ra kilép a parancsértelmezÅ‘\n" +" MACHTYPE\tA Bash-t futtató gépet leíró karakterlánc\n" +" MAILCHECK\tMegadott számú másodpercenként keres a Bash új leveleket\n" +" MAILPATH\tKettÅ‘spontokkal elválasztott fájlnévlista, ahol a Bash\n" +" \t\túj leveleket keres\n" +" OSTYPE\tA Bash-t futtató gépen futó UNIX-változat neve (verziója)\n" +" PATH\tKettÅ‘spontokkal elválasztott könyvtárlista, amelyekben a\n" +" \t\tBash futtatható programokat keres parancsvégrehajtáskor\n" +" PROMPT_COMMAND\tAz elsÅ‘dleges prompt kiírása elÅ‘tt végrehajtandó\n" +" \t\t\tparancs\n" +" PS1\t\tAz elsÅ‘dleges prompt\n" +" PS2\t\tA másodlagos prompt\n" +" PWD\t\tAz aktuális könyvtár teljes útvonala\n" +" SHELLOPTS\tAz engedélyezett parancsértelmezÅ‘-beállítások " +"kettÅ‘spontokkal\n" +" \t\telválasztott listája\n" +" TERM\tAz aktuális termináltípus neve\n" +" TIMEFORMAT\tA „time†parancs által használt idÅ‘formátum\n" +" auto_resume\tNem üres érték esetén egy egy szóból álló parancs elÅ‘ször\n" +" \t\ta megszakított munkák nevei között lesz keresve. Találat\n" +" \t\tesetén a munka elÅ‘térbe kerül. „exact†érték esetén\n" +" \t\tpontosan megegyezÅ‘ nevet keres, „substring†esetén tetszÅ‘leges\n" +" \t\tegyezést, minden más érték esetén a szó elején keres\n" +" histchars\tElÅ‘zménykiegészítést és gyors cserét vezérlÅ‘ karaktereket\n" +" \t\tad meg. Az elsÅ‘ karakter az elÅ‘zménybehelyettesítÅ‘ karakter\n" +" \t\t(általában „!â€), a második a gyorscsere-karakter (általában\n" +" \t\t„^â€), a harmadik pedig az elÅ‘zménymegjegyzés (általában „#â€)\n" +" HISTIGNORE\tKettÅ‘spontokkal elválasztott mintalista, amely mintákra\n" +" \t\tilleszkedÅ‘ parancsok nem kerülnek az elÅ‘zmények közé\n" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5045,19 +5240,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5065,34 +5260,35 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"Könyvtárakat tesz a verembe.\n" +"Könyvtárak verembe tétele.\n" " \n" " Egy könyvtárat tesz a könyvtárverem tetejére, vagy forgatja a vermet,\n" -" az új felsÅ‘ elemmé a jelenlegi munkakönyvtárat téve. Argumentumok nél-\n" -" kül hívva a két felsÅ‘ könyvtárat cseréli meg.\n" +" az új felsÅ‘ elemmé a jelenlegi munkakönyvtárat téve. Argumentumok\n" +" nélkül hívva a két felsÅ‘ könyvtárat cseréli meg.\n" " \n" " Kapcsolók:\n" -" -n Ne váltson könyvtárat hozzáadáskor, vagyis csak a\n" -" vermet változtassa.\n" +" -n\tNe váltson könyvtárat hozzáadáskor, vagyis csak a\n" +" \t\tvermet változtassa.\n" " \n" " Argumentumok:\n" -" +N Úgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" -" kezdve, a „dirs†által kiírt listán balról számolva)\n" -" kerüljön a verem tetejére.\n" +" +N\tÚgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" +" \t\tkezdve, a „dirs†által kiírt listán balról számolva)\n" +" \t\tkerüljön a verem tetejére.\n" " \n" -" -N Úgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" -" kezdve, a „dirs†által kiírt listán jobbról számolva)\n" -" kerüljön a verem tetejére.\n" +" -N\tÚgy forgatja a vermet, hogy az N-edik könyvtár (0-tól\n" +" \t\tkezdve, a „dirs†által kiírt listán jobbról számolva)\n" +" \t\tkerüljön a verem tetejére.\n" " \n" -" dir A verem tetejére helyezi KTÃR könyvtárat, és ugyanezt\n" -" állítja be új munkakönyvtárnak.\n" +" ktár\tA verem tetejére helyezi KTÃR könyvtárat, és ugyanezt\n" +" \t\tállítja be új munkakönyvtárnak.\n" +" \n" +" A „dirs†beépített parancs listázza a könyvtárvermet.\n" " \n" -" A „dirs†beépített parancs listázza a könyvtárvermet. \n" " Kilépési kód:\n" " 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:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5101,16 +5297,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5118,29 +5314,30 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"Elemek eltávolítása a verembÅ‘l.\n" +"Könyvtárak eltávolítása a verembÅ‘l.\n" " \n" -" Elemeket vesz ki a könyvtárverembÅ‘l. Argumentumok nélkül kiveszi a \n" +" Elemeket vesz ki a könyvtárverembÅ‘l. Argumentumok nélkül kiveszi a\n" " legfelsÅ‘ elemet, és a kivett elemre állítja az új munkakönyvtárat.\n" " \n" " Kapcsolók:\n" -" -n Ne váltson könyvtárat eltávolításkor, vagyis csak a vermet\n" -" változtassa.\n" +" -n\tNe váltson könyvtárat eltávolításkor, vagyis csak a vermet\n" +" \t\tváltoztassa.\n" " \n" " Argumentumok:\n" -" +N Eltávolítja az N-edik elemet a „dirs†által kiírt listán, nullá-\n" -" tól, balról számolva. Pl. a „popd +0†az elsÅ‘, míg a „popd +1†a\n" -" könyvtárat távolítja el.\n" -" -N Eltávolítja az N-edik elemet a „dirs†által kiírt listán, nullá-\n" -" tól, jobbról számolva. Pl. a „popd -0†az utolsó, a „popd -1†az\n" -" utolsó elÅ‘tti könyvtárat távolítja el.\n" +" +N\tEltávolítja az N-edik elemet a „dirs†által kiírt listán,\n" +" \t\tnullától, balról számolva. Pl. a „popd +0†az elsÅ‘, míg a\n" +" \t\t„popd +1†a második könyvtárat távolítja el.\n" +" -N\tEltávolítja az N-edik elemet a „dirs†által kiírt listán,\n" +" \t\tnullától, jobbról számolva. Pl. a „popd -0†az utolsó,\n" +" \t\ta „popd -1†az utolsó elÅ‘tti könyvtárat távolítja el.\n" +" \n" +" A „dirs†beépített parancs listázza a könyvtárvermet.\n" " \n" -" A „dirs†beépített parancs listázza a könyvtárvermet. \n" " Kilépési kód:\n" " 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:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5151,19 +5348,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5171,25 +5368,26 @@ msgstr "" "A könyvtárverem megjelenítése.\n" " \n" " Megjeleníti a jelenleg megjegyzett könyvtárakat. A könyvtárakat a\n" -" „pushd†paranccsal lehet a verembe rakni; és a „popd†paranccsal kiven-\n" -" ni.\n" +" „pushd†paranccsal lehet a verembe rakni; és a „popd†paranccsal " +"kivenni.\n" " \n" " Kapcsolók:\n" -" -c a könyvtárverem törlése az összes elem eltávolításával\n" -" -l a saját könyvtárat ne rövidítse a listázáskor egy tilde (~)\n" -" -p a könyvtárverem kiírása soronként egy elemmel\n" -" -v a könyvtárverem kiírása soronként egy elemmel, a vermen\n" -" belüli pozíció jelölésével\n" +" -c\ta könyvtárverem törlése az összes elem eltávolításával\n" +" -l\ta saját könyvtárat ne rövidítse a listázáskor egy tilde (~)\n" +" -p\ta könyvtárverem kiírása soronként egy elemmel\n" +" -v\ta könyvtárverem kiírása soronként egy elemmel, a vermen\n" +" \t\tbelüli pozíció jelölésével\n" " \n" " Argumentumok:\n" -" +N N darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" -" á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 \n" +" +N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" +" \t\táltal megjelenített listán balról számolva, nullától kezdve.\n" +" -N\tN darab bejegyzést jelenít meg az argumentum nélkül a dirs\n" +" \t\táltal megjelenített listán jobbról számolva, nullától kezdve.\n" +" \n" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy hiba esetén." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5216,18 +5414,17 @@ msgstr "" " állapotát.\n" " \n" " Kapcsolók:\n" -" -o OPTNEVek korlátozása a „set -oâ€-val használtakra\n" -" -p minden kapcsoló kilistázása állapottal\n" -" -q kimenet elnyelése\n" -" -s minden OPTNÉV engedélyezése\n" -" -u minden OPTNÉV tiltása\n" +" -o\tOPTNEVEK korlátozása a „set -oâ€-val használtakra\n" +" -p\tminden kapcsoló kilistázása az állapotuk jelzésével\n" +" -q\tkimenet elnyelése\n" +" -s\tminden OPTNÉV engedélyezése\n" +" -u\tminden OPTNÉV tiltása\n" " \n" " Kilépési kód:\n" -" 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." +" Sikerrel tér vissza, ha az OPTNÉV engedélyezve van; sikertelenül, ha\n" +" hibás kapcsolókat kap vagy az OPTNÉV tiltva van." -#: builtins.c:1908 -#, fuzzy +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5244,15 +5441,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5265,30 +5462,39 @@ msgid "" "assignment\n" " error occurs." msgstr "" -"FORMÃTUM alapján kiírja az ARGUMENTUMOKat.\n" +"FORMÃTUM alapján az ARGUMENTUMOK kiírása.\n" " \n" " Kapcsolók:\n" -" -v változó kimenet VÃLTOZÓ nevű változóba írása a szabványos\n" -" kimenet helyett\n" +" -v változó\ta kimenet VÃLTOZÓ nevű változóba írása a szabványos\n" +" \t\t\tkimenet helyett\n" " \n" -" FORMÃTUM egy karakterlánc, amely három típusú primitívekbÅ‘l áll: egy-\n" -" szerű karakterek, amelyeket a parancs a kimenetre másol; escape-karak-\n" -" tersorozatok, amelyeket átalakítva másol a kimenetre; valamint formá-\n" -" tumjelzÅ‘k, amelyek rendre a következÅ‘ argumentum kiírását szabályoz-\n" -" zák.\n" +" A FORMÃTUM egy karakterlánc, amely három fajta primitívbÅ‘l áll:\n" +" egyszerű karakterek, amelyeket a parancs a kimenetre másol; escape-\n" +" karaktersorozatok, amelyeket átalakítva másol a kimenetre; valamint\n" +" formátumjelzÅ‘k, amelyek rendre a következÅ‘ argumentum kiírását\n" +" szabályozzák.\n" " \n" -" A printf(1) és printf(3) által használt szokásos jelzÅ‘kön túl a követ-\n" -" kezÅ‘ket ismeri a printf parancs:\n" +" A printf(1) által használt szokásos jelzÅ‘kön túl a\n" +" következÅ‘ket ismeri a printf parancs:\n" " \n" -" %b karakterlánc kiírása az escape-szekvenciák értelmezése után\n" -" %q argumentum idézÅ‘jelezése olyan módon, hogy parancsértelmezÅ‘\n" -" bemeneteként használható legyen\n" +" %b\tkarakterlánc kiírása az escape-szekvenciák értelmezése után\n" +" %q\targumentum idézÅ‘jelezése olyan módon, hogy parancsértelmezÅ‘\n" +" \t\tbemeneteként használható legyen\n" +" %(fmt)T\tdátum-idÅ‘ karakterlánc kiírása az FMT mint strftime(3)\n" +" \t\tformátum-karakterlánc használatával\n" +" \n" +" A formátum szükség szerint újrafelhasználásra kerül az összes " +"argumentum\n" +" elfogyasztásához. Ha kevesebb argumentum van a formátumnak " +"szükségesnél,\n" +" az extra formátumjelzÅ‘k úgy viselkednek, mintha nulla érték vagy null\n" +" karakterlánc lett volna megadva.\n" " \n" " Kilépési kód:\n" -" 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." +" Sikerrel tér vissza, kivéve ha hibás kapcsolókat kap, vagy az írás/\n" +" értékadás hibával járt." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5301,11 +5507,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5316,27 +5522,28 @@ msgid "" msgstr "" "Megadja, hogy a Readline hogyan egészítse ki az argumentumokat.\n" " \n" -" Minden NÉV-hez megadja, hogyan egészítse ki a Readline az argumentumo-\n" -" kat. Ha nincsenek kapcsolók megadva, a jelenlegi érték kerül kiírásra,\n" +" Minden NÉVHEZ megadja, hogyan egészítse ki a Readline az " +"argumentumokat.\n" +" Ha nincsenek kapcsolók megadva, a jelenlegi érték kerül kiírásra,\n" " újrafelhasználható módon.\n" " \n" " Kapcsolók:\n" -" -p meglévÅ‘ kiegészítésmegadások listázása újrahasználható módon\n" -" -r kiegészítésmegadások törlése minden NÉV-tÅ‘l; vagy ha nincs\n" -" NÉV megadva, az összes törlése\n" -" -D kiegészítések és műveletek alkalmazása alapértelmezésben, ha\n" -" az adott parancshoz nincs kiegészítés megadva\n" -" -E kiegészítések és műveletek alkalmazása az „üres†parancsok-\n" -" ra, vagyis a sor elején\n" +" -p\tmeglévÅ‘ kiegészítésmegadások listázása újrahasználható módon\n" +" -r\tkiegészítésmegadások törlése minden NÉVTÅL; vagy ha nincs\n" +" \t\tNÉV megadva, az összes törlése\n" +" -D\tkiegészítések és műveletek alkalmazása alapértelmezésben, ha\n" +" \t\taz adott parancshoz nincs kiegészítés megadva\n" +" -E\tkiegészítések és műveletek alkalmazása az „üres†parancsokra,\n" +" \t\tvagyis a sor elején\n" " \n" -" Kiegészítéskor a műveletek a nagybetűs kapcsolók felsorolásának sor-\n" -" rendjében kísérli meg a Readline. A -D elsÅ‘bbséget élvez a -E-vel szem-\n" -" ben.\n" +" Kiegészítéskor a műveletek a nagybetűs kapcsolók felsorolásának\n" +" sorrendjében kísérli meg a Readline. A -D elsÅ‘bbséget élvez a -E-vel\n" +" szemben.\n" " \n" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetén." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5350,15 +5557,15 @@ msgid "" msgstr "" "Lehetséges kiegészítések megjelenítése a kapcsolóktól függÅ‘en.\n" " \n" -" Függvényben való használatra szolgál a lehetséges kiegészítések gene-\n" -" rálása céljából. Ha az elhagyható SZÓ argumentum is meg van adva, SZÓ-\n" -" ra elölrÅ‘l illeszkedÅ‘ találatok jelennek csak meg.\n" +" Függvényben való használatra szolgál a lehetséges kiegészítések " +"generálása\n" +" céljából. Ha az elhagyható SZÓ argumentum is meg van adva, a SZÓRA\n" +" elölrÅ‘l illeszkedÅ‘ találatok jelennek csak meg.\n" " \n" " Kilépési kód:\n" " Sikerrel lép ki, kivéve érvénytelen kapcsoló vagy hiba esetén." -#: builtins.c:1985 -#, fuzzy +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5390,33 +5597,32 @@ msgid "" msgstr "" "Kiegészítési beállítások módosítása vagy kiírása.\n" " \n" -" Kiegészítési beállítások listázása minden NÉV-hez, vagy ha nincs NÉV\n" -" megadva, akkor az éppen zajló kiegészítésre. Ha nincs KAPCSOLÓ megad-\n" -" va, kiírja a kiegészítési beállításokat minden NÉV-hez vagy az aktuá-\n" -" lis kiegészítéshez.\n" +" Kiegészítési beállítások listázása minden NÉVHEZ, vagy ha nincs NÉV\n" +" megadva, akkor az éppen zajló kiegészítésre. Ha nincs KAPCSOLÓ megadva,\n" +" kiírja a kiegészítési beállításokat minden NÉVHEZ vagy az aktuális\n" +" kiegészítéshez.\n" " \n" " Kapcsolók:\n" -" -o kapcsoló KAPCSOLÓ kiegészítései beállítás bekapcsolása minden\n" -" NÉV-hez\n" -" -D Az alapértelmezett kiegészítés beállításainak módo-\n" -" sítása\n" -" -E Az üres kiegészítés beállításainak módosítása\n" +" \t-o kapcsoló\ta KAPCSOLÓ kiegészítési beállítás megadása minden NÉVHEZ\n" +" \t-D\tAz alapértelmezett kiegészítés beállításainak módosítása\n" +" \t-E\tAz üres kiegészítés beállításainak módosítása\n" " \n" -" „-o†helyett „+o†használatával a beállítás kikapcsolható.\n" +" A „-o†helyett „+o†használatával a beállítás kikapcsolható.\n" " \n" " Argumentumok:\n" " \n" " Minden NÉV egy parancsra vonatkozik, amelyhez egy kiegészítést elÅ‘zÅ‘leg\n" -" meg kell adni a „complete†paranccsal. Ha nincs NÉV megadva, a compopt-\n" -" ot egy éppen kiegészítéseket generáló függvénybÅ‘l kell hívni, és a zaj-\n" -" ló generálásra fog vonatkozni.\n" +" meg kell adni a „complete†paranccsal. Ha nincs NÉV megadva, a compopt-" +"ot\n" +" egy éppen kiegészítéseket generáló függvénybÅ‘l kell hívni, és a zajló\n" +" generálásra fog vonatkozni.\n" " \n" " Kilépési kód:\n" -" Sikerrel lép ki, kivéve ha érvénytelen kapcsolókat kap, vagy NÉV nincs\n" +" Sikerrel lép ki, kivéve ha érvénytelen kapcsolókat kap, vagy a NÉV " +"nincs\n" " még megadva." -#: builtins.c:2015 -#, fuzzy +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5427,20 +5633,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5458,26 +5665,28 @@ msgid "" msgstr "" "Sorok beolvasása a szabványos bemenetrÅ‘l egy indexelt tömbbe.\n" " \n" -" Sorok beolvasása a szabványos bemenetrÅ‘l – vagy -u megadása esetén FD\n" -" fájlleíróból – egy megadott nevű TÖMB-be (elhagyása esetén $ARRAY-be).\n" +" Sorok beolvasása a szabványos bemenetrÅ‘l – vagy a -u megadása esetén az " +"FD\n" +" fájlleíróból – egy megadott nevű TÖMBBE (elhagyása esetén az ARRAY-be).\n" " \n" " Kapcsolók:\n" -" -n szám Legfeljebb SZÃM sor másolása. Ha szám 0, minden sor\n" -" másolásra kerül\n" -" -O kezdet KEZDET számú indextÅ‘l kezdje a TÖMB-be másolást.\n" -" Alapértelmezés: 0\n" -" -s szám Az elsÅ‘ SZÃM sor eldobása olvasáskor\n" -" -t A sorok végérÅ‘l a záró újsor eltávolítása\n" -" -u fd Szabványos bemenet helyett FD fájlleíróból olvasson\n" -" -C parancs PARANCS végrehajtása minden TÃVOLSÃG sor után\n" -" -c távolság PARANCS végrehajtásai között beolvasott sorok száma\n" +" -d elvál\tAz ELVÃL használata sorlezáróként újsor helyett\n" +" -n szám\tLegfeljebb SZÃM sor másolása. Ha a SZÃM 0, minden sor\n" +" \t\tmásolásra kerül\n" +" -O kezdet\tKEZDET számú indextÅ‘l kezdje a TÖMB-be másolást.\n" +" \t\tAlapértelmezés: 0\n" +" -s szám\tAz elsÅ‘ SZÃM sor eldobása olvasáskor\n" +" -t\tA sorok végérÅ‘l a záró ELVÃL (alapesetben: újsor) eltávolítása\n" +" -u fd\tSzabványos bemenet helyett az FD fájlleíróból olvasson\n" +" -C parancs\tA PARANCS végrehajtása minden TÃVOLSÃG sor után\n" +" -c távolság\tA PARANCS végrehajtásai között beolvasott sorok száma\n" " \n" " Argumentumok:\n" -" TÖMB Beolvasáshoz használt tömb neve\n" +" TÖMB\tBeolvasáshoz használt tömb neve\n" " \n" -" Ha -C -c nélkül van megadva, az alapértelmezett távolság 5000.\n" -" PARANCS végrehajtásakor utolsó argumentumként a parancs megkapja a kö-\n" -" vetkezÅ‘ beolvasandó elem indexét.\n" +" Ha a -C -c nélkül van megadva, az alapértelmezett távolság 5000.\n" +" A PARANCS végrehajtásakor utolsó argumentumként a parancs megkapja a\n" +" következÅ‘ beolvasandó elem indexét.\n" " \n" " Ha nincs KEZDET megadva, a mapfile törli a TÖMB tömböt olvasás elÅ‘tt.\n" " \n" @@ -5485,7 +5694,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:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5493,20 +5702,22 @@ msgid "" msgstr "" "Sorok olvasása egy tömbváltozóba.\n" " \n" -" „mapfile†szinonimája." +" A „mapfile†szinonimája." -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2014 Free Software Foundation, Inc." -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "A licenc GPLv2+: a GNU GPL 2. vagy újabb változata \n" +#~ msgid ":" +#~ msgstr ":" -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" #~ msgid "" #~ ". With EXPR, returns\n" @@ -5529,3 +5740,13 @@ msgstr "" #~ " Az EXPR értéke azt adja meg, hogy a jelenlegihez képest milyen " #~ "mélyre\n" #~ " lépjen vissza; a verem tetején a 0-s keret van." + +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "A licenc GPLv2+: a GNU GPL 2. vagy újabb változata \n" diff --git a/po/id.gmo b/po/id.gmo index 50b72ed9955034a74381533c5d4157a8fa343086..388299aaf9b040bfae8188138d865f9b69c4a31a 100644 GIT binary patch delta 23491 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°LrF&17l@)i1L?=Pg=JvL^e8XjEl@7IOd$1bndY=@+*L7kiT zbfrzZ%Khz~8VmpiSZ$JJwgb(8Mh6Z znvJV+YockmRjb<0S`*G0v#f|zYR!^E{pJQt&8}C4lU8%}(c*i}{y>v(ger8lxc4ij zrf7^ia`P!N(z;f21LC}kd&k-Dp3@dJ8ENg6NNs3VQ&VN(Uc}9%)*E+w6H=Sx-(lzj zUR&vO&U&&|eL)A2iijBxnU3wTxfW1=+zfJ`uue8N`&ud3sKfQWb=}U=bVZ^YlKL>` zYLc9-lyAHkTYh~H@z0ywhTIIc?U)tIev0g)fmRnMt!j0OZFXM#Gq9Oq3PWpckzaE` z?vmi^i<3Qy$L<>57~%IG*IZ>`ibc}NbPO}L!)(7t_88ZOhkE<{`jo_rsH1s3bsB3} zSnKya*cfCY$=Or$#I4Cz@WB>IG+f!)?~`k8)LaXEz2(AJkZZM-l8j8|&(gg|-&7;> zjmC89rsID%hqXy+bvF>nX)j>qvt``g&n8U$Zn*cl9grm{q2`0%ZAh(#_r54-{dwH6D{Y$FFxz0m-va;ermf%d+q4`h%}pCvD9S4*lh3#O@vjk%^2<+;Xc-6dXQ zql%BWGU)Wc$|!$ZWt(y>xNV^O5^`gcNOEUmriR3~>qWu0eNFg@MqA(5zLixwV^&*x zdC=gm^LyvN{Jf;Q&ZVpQrij~J;=FQ=)3B-L9eet$UYbs_(zNd6p5tbF+A?T|{+mH7 z=tM)-@X=a*lWV2=X0;n>biQskE6ozI#l|%=N;)tyx-C?1RL&8E5x8ZyQL9tbW|bS& z4rWa<`d0n+bcp`y9IDxZ*j*gHZ$%Y%Yc>R{qNY=~`d|6&)^dKIpZfmbhAlb&BYw{-N#A2@ePQ@UPp(m=CD4Zm^rLBv3(xa7o1j!nYg^L z@6-Amm*r-b{C_&HKV1J#<3By?*Li(Yw=@0X_Jb?`{fT{8%RhLHt!|inu76Gw2lvt8CKVU|C|NhwCEb;c(zTu1W{ac%!zrg>y-}L;2{*m8sa^JA{B7aoV%!~Z5Iy78* ziNCPn$xHl$+6=91dg~JZiFRfCI;(HhP|Faw)B2|Em-$b&nJhu~eOxcIC~-SzS%W*T z*T0H4hwe@FKk{#G+c4-Ve@)ZbSNWg)Uykh?HeKs)9Y8%g%-{F9eba~6`s3UD9}>}A AHUIzs delta 26743 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 diff --git a/po/id.po b/po/id.po index 8ff1d1f..b78f067 100644 --- a/po/id.po +++ b/po/id.po @@ -1,86 +1,92 @@ # Pesan Bahasa Indonesia untuk bash # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Arif E. Nugroho , 2008, 2009, 2010. +# Arif E. Nugroho , 2008, 2009, 2010, 2011, 2012, 2013, 2014. # msgid "" msgstr "" -"Project-Id-Version: bash 4.1\n" +"Project-Id-Version: bash 4.3-rc2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2010-01-16 12:45+0700\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2014-08-06 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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "array subscript buruk" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: tidak dapat mengubah index ke array yang berassosiasi" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: kunci array assosiasi tidak valid" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: tidak dapat mengassign ke index tidak-numeric" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: tidak dapat membuat: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: tidak dapat menemukan keymap untuk perintah" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: bukan karakter whitespace (spasi) pertama ditemukan `\"'" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "tidak menutup '%c' dalam %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: hilang pemisah colon" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "brace expansion: cannot allocate memory for %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +msgstr "brace expansion: failed to allocate memory for %d elements" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "brace expansion: failed to allocate memory for `%s'" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nama alias tidak valid" @@ -89,45 +95,45 @@ msgstr "`%s': nama alias tidak valid" msgid "line editing not enabled" msgstr "pengubahan baris tidak aktif" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "'%s': nama keymap tidak valid" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: tidak dapat membaca: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "'%s': tidak dapat melepaskan" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "'%s': nama fungsi tidak dikenal" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s tidak terikat ke kunci apapun.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s dapat dipanggil melalui " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "jumlah loop" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "hanya berarti dalam sebuah `for', `while', atau `until'loop" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -137,302 +143,331 @@ msgstr "" " \n" " Tanpa EXPR, kembali " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME tidak diset" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "terlalu banyak argumen" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "top direktori yang baru." + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD tidak diset" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "baris %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "peringatan: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: penggunaan: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: pilihan membutuhkan sebuah argumen" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: argumen numeric dibutuhkan" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: tidak ditemukan" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: pilihan tidak valid" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: nama pilihan tidak valid" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': bukan sebuah identifier yang valid" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "nomor oktal tidak valid" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "nomor hexa tidak valid" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "nomor tidak valid" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: spesifikasi sinyal tidak valid" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': bukan sebuah pid atau spesifikasi pekerjaan yang valid" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: variabel baca-saja" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s diluar jangkauan" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argumen" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s diluar jangkauan" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: tidak ada pekerjaan seperti itu" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: tidak ada pengontrol kerja" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "tidak ada pengontrol kerja" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: terbatas" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "terbatas" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: bukan sebuah builtin shell" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "gagal menulis: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "error menentukan atribut terminal: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "error mendapatkan atribut terminal: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: error mengambil direktori saat ini: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: spesifikasi pekerjaan ambigu" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: nama aksi tidak valid" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: tidak ada spesifikasi completion" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "" "peringatan: pilihan -F mungkin tidak bekerja seperti yang anda harapkan" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "" "peringatan: pilihan -C mungkin tidak bekerja seperti yang anda harapkan" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "saat ini sedang tidak menjalankan fungsi completion" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "hanya dapat digunakan dalam sebuah fungsi" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: reference variable cannot be an array" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: nameref variable self references not allowed" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: circular name reference" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: fungsi baca-saja" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: tidak dapat menghapus variabel array secara ini" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: tidak dapat mengubah assosiasi ke array index" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dynamic loading tidak tersedia" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "tidak dapat membuka object shared %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "tidak dapat menemukan %s dalam shared object %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: bukan dinamically loaded" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: tidak dapat menghapus: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: bukan sebuah direktori" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: bukan sebuah file umum" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: file terlalu besar" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: tidak dapat menjalankan berkas binary" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: tidak dapat menjalankan: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "bukan sebuah login shell: gunakan `exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Ada pekerjaan yang terhenti.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Ada pekerjaan yang sedang berjalan.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "perintah tidak ditemukan" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "spesifikasi sejarah" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: tidak dapat membuka file sementara: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "sekarang" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "pekerjaan %d dimulai tanpa pengontrol pekerjaan" @@ -451,24 +486,24 @@ msgstr "%s: pilihan membutuhkan sebuah argumen -- %c\n" msgid "hashing disabled" msgstr "hashing dinonaktifkan" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabel hash kosong\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "tekan\tperintah\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Perintah shell cocok dengan kata kunci `" msgstr[1] "Perintah shell cocok dengan kata kunci `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -476,12 +511,12 @@ msgstr "" "tidak ada topik bantuan yang cocok dengan `%s'. Coba `help help' atau 'man -" "k %s' atau `info %s'." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: tidak dapat membuka: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -504,15 +539,20 @@ msgstr "" "aktif.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "tidak dapat menggunakan lebih dari satu pilihan dari -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "posisi sejarah" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: argumen limit tidak valid" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: expansi sejarah gagal" @@ -526,113 +566,113 @@ msgstr "%s: inlib gagal" msgid "no other options allowed with `-x'" msgstr "tidak ada pilihan lain yang diperbolehkan dengan `-x'" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumen harus diproses atau ID pekerjaan" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Kesalahan tidak diketahui" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "diduga sebuah ekspresi" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: bukan sebuah indeks array" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: spesifikasi file deskripsi tidak valid" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: file deskriptor %s tidak valid" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: jumlah baris tidak valid" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: asal array tidak valid" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: nama aksi tidak valid" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "nama variabel array kosong" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "bantuan array variabel dibutuhkan" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': hilang karakter format" -#: builtins/printf.def:456 -#, fuzzy, c-format +#: builtins/printf.def:467 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%s: spesifikasi timeout tidak valid" +msgstr "`%c': spesifikasi timeout tidak valid" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': karakter format tidak valid" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "peringatan: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "format parsing problem: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "hilang digit hexa untuk \\x" -#: builtins/printf.def:880 -#, fuzzy, c-format +#: builtins/printf.def:893 +#, c-format msgid "missing unicode digit for \\%c" -msgstr "hilang digit hexa untuk \\x" +msgstr "hilang digit hexa untuk \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "tidak ada direktori lain" -#: builtins/pushd.def:354 -#, fuzzy, c-format +#: builtins/pushd.def:360 +#, c-format msgid "%s: invalid argument" msgstr "%s: argumen limit tidak valid" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "direktori stack kosong" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "index direktori stack" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -677,7 +717,7 @@ msgstr "" "ditampilkan oleh\n" " \tdirs ketika dipanggil tanpa pilihan, dimulai dari nol." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -724,7 +764,7 @@ msgstr "" " \n" " Builtin `dirs' menampilkan direktori stack." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -760,143 +800,153 @@ msgstr "" " \n" " Builtin `dirs' menampilkan direktori stack." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: spesifikasi timeout tidak valid" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "error baca: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "hanya dapat `return' dari sebuah fungsi atau script yang disource" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "tidak dapat secara simultan unset sebuah fungsi dan sebuah variable" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: tidak dapat unset" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: tidak dapat unset: baca-saja %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: bukan sebuah variabel array" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: bukan sebuah fungsi" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: tidak dapat unset" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "shift terhitung" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "tidak dapat menset dan menunset pilihan shell secara bersamaan" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nama pilihan shell tidak valid" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "argumen nama file dibutuhkan" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: berkas tidak ditemukan" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "tidak dapat suspend" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "tidak dapat suspend sebuah login shell" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s sudah dialiasi ke `%s'\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s adalah sebuah shell dengan kata kunci\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s adalah sebuah fungsi\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s adalah sebuah shell builtin\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s adalah sebuah shell builtin\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s adalah %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s memiliki hash (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argumen limit tidak valid" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': perintah buruk" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: tidak dapat get limit: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "batas" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: tidak dapat memodifikasi batas: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "nomor oktal" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "`%c': operator mode symbolic tidak valid" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "`%c': mode karakter symbolic tidak valid" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " baris " @@ -910,83 +960,104 @@ msgstr "perintah terakhir: %s\n" msgid "Aborting..." msgstr "membatalkan..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "perintah error tidak diketahui" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "tipe perintah buruk" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "konektor buruk" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "lompat buruk" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: variabel tidak terikat" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "kehabisan waktu menunggu masukan: otomatis-keluar\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "tidak dapat menyalurkan masukan standar dari /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': karakter format tidak valid" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, fuzzy, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "%s: maximum function nesting level exceeded (%d)" + +#: execute_cmd.c:4508 +#, fuzzy, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximum function nesting level exceeded (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s: dibatasi: tidak dapat menspesifikasikan '/' dalam nama nama perintah" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: perintah tidak ditemukan" -#: execute_cmd.c:5206 -#, fuzzy, c-format +#: execute_cmd.c:5470 +#, c-format msgid "%s: %s" -msgstr "%s adalah %s\n" +msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpreter buruk" -#: execute_cmd.c:5280 -#, fuzzy, c-format +#: execute_cmd.c:5545 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: tidak dapat menjalankan berkas binary" +msgstr "%s: tidak dapat menjalankan berkas binary: %s" -#: execute_cmd.c:5352 -#, fuzzy, c-format +#: execute_cmd.c:5623 +#, c-format msgid "`%s': is a special builtin" -msgstr "%s adalah sebuah shell builtin\n" +msgstr "`%s': adalah sebuah shell builtin" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "tidak dapat menduplikasikan fd %d ke fd %d" @@ -1031,37 +1102,37 @@ msgstr "idenfier diharapkan setelah pre-increment atau pre-decrement" msgid "missing `)'" msgstr "hilang `)'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "syntax error: operand diharapkan" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: operator arithmetic tidak valid" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token adalah \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "basis arithmetic tidak valid" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "nilai terlalu besar untuk basis" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: expresi error\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: tidak dapat mengakses direktori orang tua" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "tidak dapat mereset mode nodelay untuk fd %d" @@ -1070,156 +1141,156 @@ msgstr "tidak dapat mereset mode nodelay untuk fd %d" #, 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:279 #, 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:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d terlihat dalam pekerjaan yang sedang berjalan %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "menghapus pekerjaan yang terhenti %d dengan proses grup %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) dalam the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) ditandai dengan tetap hidup" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: tidak ada pid seperti itu" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "sinyal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Selesai" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Terhenti" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Terhenti(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Berjalan" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Selesai(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Keluar %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Status tidak diketahui" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(core didump) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "anak setpgid (%ld ke %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Tidak ada catatan untuk proses %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: pekerjaan %d terhenti" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: pekerjaan telah selesai" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: pekerjaan %d sudah berjalan di belakang (background)" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: mengaktifkan WNOHANG untuk menghindari blok tak terhingga" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: baris %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (core didump)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd sekarang: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp gagal" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: baris disiplin" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "tidak dapat menset terminal proses grup (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "tidak ada pengontrol pekerjaan dalam shell ini" @@ -1273,18 +1344,18 @@ msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: awal dan akhir dari ukuran potongan berbeda" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p sudah berada dalam tabel sebagai bebas?\n" @@ -1308,7 +1379,7 @@ msgstr "%s: layanan tidak valid" msgid "%s: bad network path specification" msgstr "%s: spesifikasi jalur network buruk" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "operasi jaringan tidak dilayani" @@ -1345,225 +1416,260 @@ msgstr "Anda memiliki surat baru dalam $_" msgid "The mail in %s has been read\n" msgstr "Surat dalam %s telah dibaca\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "syntax error: membutuhkan ekspresi arithmetic" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "syntax error: `;' tidak terduga" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "syntax error: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipe instruksi buruk %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "dokumen-disini di baris %d dibatasi oleh akhir-dari-berkas (diinginkan `%s')" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instruksi redireksi `%d' diluar dari jangkauan" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF tidak terduga ketika mencari untuk pencocokan `%c'" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "EOF tidak terduga ketika mencari untuk `]]'" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error dalam ekspresi kondisional: tanda `%s' tidak terduga" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "syntax error dalam ekspresi kondisional" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "tanda `%s' tidak terduga, diduga `)'" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "diduga `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumen tidak terduga `%s' ke operator kondisional unary" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "argumen tidak terduga untuk operasi unary kondisional" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "tanda `%s' tidak terduga, operator binary kondisional diduga" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "operator binary kondisional diduga" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumen `%s' tidak terduga ke operator binary kondisional" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "argumen tidak terduga ke operasi binary kondisional" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "tanda `%c' tidak terduga dalam perintah kondisional" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "tanda `%s' tidak terduga dalam perintah kondisional" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "tanda %d tidak terduga dalam perintah kondisional" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error didekat tanda `%s' yang tidak terduga" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "syntax error didekat `%s'" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "syntax error: tidak terduga diakhir dari berkas" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "syntax error" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gunakan \"%s\" untuk meninggalkan shell.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF tidak terduga ketika mencari untuk pencocokan ')'" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: fungsi `%s' tidak ditemukan" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: konektor buruk `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: berkas pendeskripsi tidak valid" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: berkas penunjuk KOSONG" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: '%c': format karakter tidak valid" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "berkas deskripsi diluar dari jangkauan" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirect ambigu" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: tidak dapat menulis berkas yang sudah ada" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: tidak dapat meredirect keluaran" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "tidak dapat membuat berkas sementara untuk dokumen disini: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: tidak dapat meng-'assign' fd ke variabel" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port tidak dilayani tanpa jaringan" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: tidak dapat menduplikasi fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "tidak dapat menemukan /tmp, tolong buat!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp harus berupa sebuah nama direktori yang valid" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: pilihan tidak valid" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "tidak dapat mereset mode nodelay untuk fd %d" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "tidak dapat mereset mode nodelay untuk fd %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: bukan sebuah direktori" + +#: shell.c:1777 msgid "I have no name!" msgstr "Aku tidak memiliki nama!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versi %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1572,44 +1678,54 @@ msgstr "" "Penggunaan:\t%s [GNU pilihan panjang] [pilihan] ...\n" "\t%s [GNU pilihan panjang] [pilihan] berkas-script ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU pilihan panjang:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Pilihan shell:\n" -#: shell.c:1835 -#, fuzzy +#: shell.c:1938 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" +msgstr "" +"\t-ilrsD atau -c perintah atau -O shopt_option\t\t(hanya pemanggilan)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s atau pilihan -o\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Gunakan perintah 'bashbug' untuk melaporkan bugs.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operasi tidak valid" @@ -1783,77 +1899,92 @@ msgstr "Sinyal tidak diketahui #" msgid "Unknown Signal #%d" msgstr "Sinyal tidak diketahui #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substitusi buruk: tidak ada penutupan `%s' dalam %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: tidak dapat meng-assign daftar kedalam anggoya array" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "tidak dapat membuat pipe untuk proses substitusi" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "tidak dapat membuat anak untuk proses substitusi" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "tidak dapat membuka named pipe %s untuk membaca" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "tidak dapat membukan named pipe %s untuk menulis" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "tidak dapat menduplikasi nama pipe %s sebagai fd %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "tidak dapat membuat pipe untuk perintah substitusi" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "tidak dapat membuat anak untuk perintah substitusi" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: tidak dapat menduplikasikan pipe sebagi fd 1" -#: subst.c:5837 subst.c:8050 -#, fuzzy, c-format +#: subst.c:6580 subst.c:8939 +#, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid" +msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parameter kosong atau tidak diset" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: substring expresi < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: substitusi buruk" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: jumlah baris tidak valid" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "`%s': nama alias tidak valid" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter kosong atau tidak diset" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expresi < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: tidak dapat meng-assign dengan cara ini" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1861,12 +1992,12 @@ msgstr "" "versi selanjutnya dari shell akan memaksa evaluasi dari sebuah penggantian " "aritmetika" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "tidak cocok: %s" @@ -1880,128 +2011,128 @@ msgstr "argumen diharapkan" msgid "%s: integer expression expected" msgstr "%s: expresi integer diduga" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "')' diduga" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "`)' diduga, ditemukan %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: operator unary diduga" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: operator binary diduga" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "hilang `]'" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "nomor sinyal tidak valid" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinyal buruk %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "error mengimpor definisi fungsi untuk `%s'" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "level shell (%d) terlalu tinggi, mereset ke 1" -#: variables.c:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: tidak ada context fungsi di scope ini" -#: variables.c:2247 -#, fuzzy, c-format +#: variables.c:2432 +#, c-format msgid "%s: variable may not be assigned value" msgstr "%s: tidak dapat meng-'assign' fd ke variabel" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: tidak ada context fungsi dalam scope ini" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s memiliki exportstr kosong" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "karakter %d tidak valid dalam exporstr untuk %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "bukan `=' dalam exportstr untuk %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: bukan global_variable context" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: tidak dapat membuka sebagai BERKAS" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: variables.c:5307 -#, fuzzy, c-format +#: variables.c:5669 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s diluar jangkauan" +msgstr "%s: %s: diluar jangkauan" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Hak Cipta (C) 2009 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2017,21 +2148,14 @@ msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, versi %s (%s)\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" +"mendistribusikannya." #: 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:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Hak Cipta (C) 2009 Free Software Foundation, Inc." +msgstr "TIDAK ADA GARANSI, selama masih diijinkan oleh hukum yang berlaku." #: xmalloc.c:91 #, c-format @@ -2053,132 +2177,118 @@ msgstr "%s: %s:%d: tidak dapat mengalokasikan %lu bytes (%lu bytes teralokasi)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s: %d: tidak dapat teralokasi %lu bytes" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [name[=nilai] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] name [nama ...]" -#: builtins.c:51 -#, fuzzy +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -"bind [-lpvsPVS] [-m keymap] [-f nama berkas] [-q nama] [-u nama] [-r keyseq] " -"[-x keyseq:perintah-shell] [keyseq:readline-function atau readline-command]" +"bind [-lpvsPVSX] [-m keymap] [-f nama berkas] [-q nama] [-u nama] [-r " +"keyseq] [-x keyseq:perintah-shell] [keyseq:readline-function atau readline-" +"command]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [shell-builtin [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "pemanggil [expr]" -#: builtins.c:64 -#, fuzzy -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|-P] [direktori]" - #: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [direktori]" + +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "benar" - -#: builtins.c:72 -msgid "false" -msgstr "salah" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "perintah [-pVv] perintah [argumen ...]" -#: builtins.c:76 -#, fuzzy -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFilrtux] [-p] [name[=nilai] ...]" - #: builtins.c:78 -#, fuzzy -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFilrtux] [-p] name[=nilai] ..." +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [name[=nilai] ...]" #: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] name[=nilai] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [pilihan] name[=nilai] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f nama berkas] [name ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [argumen ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts nama optstring [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a nama] [perintah [argumen ...]] [redireksi ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e ename] [-lnr] [pertama] [terakhir] atau fc -s [pat=rep] [perintah]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [spesifikasi pekerjaan]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [spesifikasi pekerjaan ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p nama jalur] [-dt] [nama ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "bantuan [-dms] [pola ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2186,15 +2296,16 @@ msgstr "" "sejarah [-c] [-d ofset] [n] atau history -anrw [nama berkas] atau history -" "ps arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [spesifikasi pekerjaan ...] atau jobs -x perintah [args]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [spesifikasi pekerjaan ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2202,11 +2313,11 @@ msgstr "" "kill [-s spesifikasi sinyal | -n nomor sinyal | -sigspec] pid | jobsepc ... " "atau kill -l [sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "biarkan arg [argumen ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2214,105 +2325,96 @@ msgstr "" "read [-ers] [-a array] [-d pembatas] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 -#, fuzzy -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [-abefhkmnptuvxBCHP] [-o nama-pilihan] [argumen ...]" - #: builtins.c:142 -#, fuzzy -msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [name ...]" +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o nama-pilihan] [--] [argumen ...]" #: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [name ...]" + +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [name[=nilai] ...] atau export -p" -#: builtins.c:146 -#, fuzzy -msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "readonly [-af] [name[=nilai] ...] atau readonly -p" - #: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [name[=nilai] ...] atau readonly -p" + +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source nama berkas [argumen]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". nama berkas [argumen]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [expr]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "kali" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] spesifikasi sinyal ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nama [name ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHacdefilmnpqrstuvx] [batas]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [batas]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" -#: builtins.c:175 -#, fuzzy +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "wait [id]" +msgstr "wait [-n] [id ...]" -#: builtins.c:179 -#, fuzzy +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [id]" +msgstr "wait [pid ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NAMA [in WORDS ...] ; do PERINTAH; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( exp1; exp2; exp3 )); do PERINTAH; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NAMA [ in WORDS ... ;] do PERINTAH; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] pipeline" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case WORD in [POLA [| POLA]...) PERINTAH ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2320,63 +2422,63 @@ msgstr "" "if PERINTAH; then PERINTAH; [ elif PERINTAH; then PERINTAH; ]... [ else " "PERINTAH; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while PERINTAH; do PERINTAH; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until PERINTAH; do PERINTAH; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NAMA] perintah [redireksi]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function name { PERINTAH; } atau name () { PERINTAH ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ PERINTAH ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "job_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( expressi ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ expressi ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variabel - Nama dan arti dari beberapa shell variabel" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | dir]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [optname ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [argumen]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2386,27 +2488,29 @@ msgstr "" "W daftar kata] [-F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o pilihan] [-A aksi] [-G globpat] [-W wordlist] [-" "F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S suffix] [word]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o pilihan] [-DE] [nama ...]" -#: builtins.c:240 +#: builtins.c:242 +#, fuzzy msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "mapfile [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2414,7 +2518,8 @@ msgstr "" "readarray [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2426,7 +2531,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2453,12 +2558,13 @@ msgstr "" "ada alias yang\n" " terdefinisi." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2469,7 +2575,7 @@ msgstr "" " \n" " Mengembalikan sukses kecuali sebuah NAMA bukan alias yang sudah ada." -#: builtins.c:289 +#: builtins.c:291 #, fuzzy msgid "" "Set Readline key bindings and variables.\n" @@ -2504,7 +2610,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2553,7 +2660,7 @@ msgstr "" " bind memberikan kembalian 0 kecuali sebuah pilihan tidak dikenal " "diberikan atau sebuah error terjadi." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2572,7 +2679,7 @@ msgstr "" " Status Keluar:\n" " Status keluar adalah 0 kecuali N tidak lebih besar atau sama dengan 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2591,7 +2698,7 @@ msgstr "" " Status Keluar:\n" " Status keluar adalah 0 kecuali N tidak lebih besar atau sama dengan 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2618,7 +2725,7 @@ msgstr "" "BUILTIN adalah\n" " bukan sebuah shell builtin.." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2647,7 +2754,7 @@ msgstr "" "shell atau EXPR\n" " tidak valid." -#: builtins.c:385 +#: builtins.c:387 #, fuzzy msgid "" "Change the shell working directory.\n" @@ -2671,16 +2778,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2720,13 +2827,14 @@ msgstr "" " Status Keluar:\n" " Mengembalikan 0 jika direktori berubah; bukan nol jika tidak." -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2750,7 +2858,7 @@ msgstr "" "direktori sekarang\n" " tidak bisa dibaca." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2766,7 +2874,7 @@ msgstr "" " Status Keluar:\n" " Selalu sukses." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2778,7 +2886,7 @@ msgstr "" " Status Keluar:\n" " Selalu sukses." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2790,7 +2898,8 @@ msgstr "" " Status Keluar:\n" " Selalu gagal." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2800,10 +2909,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2828,7 +2937,7 @@ msgstr "" " Mengembalikan status keluar dari PERINTAH, atau gagal jika PERINTAH " "tidak ditemukan." -#: builtins.c:487 +#: builtins.c:490 #, fuzzy msgid "" "Set variable values and attributes.\n" @@ -2839,9 +2948,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2902,18 +3011,18 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Menset nilai variabel dan atribut.\n" " \n" " Kadaluarsa. Lihat `help declare'." -#: builtins.c:535 -#, fuzzy +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2941,7 +3050,7 @@ msgstr "" "sebuah error terjadi.\n" " atau shell tidak menjalankan sebuah fungsi." -#: builtins.c:552 +#: builtins.c:555 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2968,9 +3077,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3003,7 +3112,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah penulisan error terjadi." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3025,7 +3134,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah penulisan error terjadi." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3081,7 +3190,7 @@ msgstr "" " Mengembalikan sukses kecuali NAMA bukan sebuah shell builtin atau sebuah " "error terjadi." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3102,7 +3211,7 @@ msgstr "" " Mengembalikan status keluar dari perintah atau sukses jika perintah " "adalah kosong." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3188,7 +3297,8 @@ msgstr "" "dari pilihan\n" " ditemui atau sebuah error terjadi." -#: builtins.c:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3199,8 +3309,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3231,7 +3341,7 @@ msgstr "" " Mengembalikan sukses kecuali PERINTAH tidak ditemukan atau sebuah " "redireksi error terjadi." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3244,7 +3354,7 @@ msgstr "" "keluaran\n" " adalah status dari perintah terakhir yang dijalankan." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3258,7 +3368,7 @@ msgstr "" "error jika tidak dijalankan\n" " dalam sebuah login shell." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3317,7 +3427,7 @@ msgstr "" " Mengembalikan sukses atau status dari perintah yang dijalankan; tidak-" "nol jika sebuah error terjadi." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3338,7 +3448,7 @@ msgstr "" " Status dari perintah yang ditempatkan di foreground, atau gagal jika " "sebuah error terjadi." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3362,7 +3472,7 @@ msgstr "" " Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau " "sebuah error terjadi." -#: builtins.c:784 +#: builtins.c:787 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3372,15 +3482,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3409,7 +3519,8 @@ msgstr "" " Mengembalikan sukses kecuali NAMA tidak ditemukan atau sebuah pilihan " "tidak valid telah diberikan." -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3421,7 +3532,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3450,7 +3561,8 @@ msgstr "" " Mengembalikan sukses kecuali POLA tidak ditemukan atau pilihan tidak " "valid diberikan." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3459,23 +3571,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3525,7 +3637,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:869 +#: builtins.c:872 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3536,7 +3648,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3574,7 +3686,8 @@ msgstr "" "sebuah error terjadi.\n" " Jika -x digunakan, mengembalikan status keluar dari PERINTAH." -#: builtins.c:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3584,7 +3697,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3606,7 +3719,8 @@ msgstr "" " Mengembalikan sukses kecuali ada sebuah pilihan tidak valid atau JOBSPEC " "diberikan." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3618,7 +3732,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3649,8 +3764,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:938 -#, fuzzy +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3738,7 +3852,7 @@ msgstr "" " Jika ARG terakhir dievaluasi ke 0, membiarkan kembali ke 1; 0 " "dikembalikan Jika tidak." -#: builtins.c:983 +#: builtins.c:987 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3760,27 +3874,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3840,7 +3955,7 @@ msgstr "" " atau sebuah berkas deskripsi disupply sebagai sebuah argumen ke pilihan -" "u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3862,7 +3977,7 @@ msgstr "" " Mengembalikan N, atau gagal jika shell tidak menjalan sebuah fungsi atau " "script." -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3931,7 +4046,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4038,7 +4154,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan." -#: builtins.c:1126 +#: builtins.c:1132 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4049,7 +4165,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4078,7 +4194,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah NAMA adalah baca-saja." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4113,7 +4229,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "NAMA tidak valid." -#: builtins.c:1167 +#: builtins.c:1173 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4126,9 +4242,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4155,7 +4270,7 @@ msgstr "" " Mengembalikan sukses kecual sebuah pilihan tidak valid diberikan atau " "NAMA tidak valid." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4173,7 +4288,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali N adalah negatif atau lebih besar dari $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4199,7 +4314,7 @@ msgstr "" "BERKAS; gagal jika\n" " NAMA BERKAS tidak dapat dibaca." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4225,7 +4340,7 @@ msgstr "" " Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau " "sebuah error terjadi." -#: builtins.c:1248 +#: builtins.c:1254 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4290,9 +4405,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4392,7 +4507,7 @@ msgstr "" "EXPR mengevaluasi ke\n" " salah atau sebuah argumen tidak valid diberikan." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4404,7 +4519,7 @@ msgstr "" " Ini sinonim untuk \"test\" builtin, tetapi argumen terakhir\n" " harus berupa sebuah literal `]', untuk mencocokan dengan pembukaan `['." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4424,8 +4539,7 @@ msgstr "" " Status Keluar:\n" " Selalu sukses." -#: builtins.c:1350 -#, fuzzy +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4506,7 +4620,8 @@ msgstr "" " Mengembalikan sukses kecuali sebuah SIGSPEC adalah tidak valid atau " "sebuah pilihan tidak valid diberikan." -#: builtins.c:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -4515,18 +4630,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4568,7 +4683,7 @@ msgstr "" " Mengembalikan sukses jika seluruh dari NAMA ditemukan; gagal jika ada " "yang tidak ditemukan." -#: builtins.c:1417 +#: builtins.c:1424 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4587,6 +4702,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4598,7 +4714,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4660,7 +4777,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4698,8 +4815,7 @@ msgstr "" " Mengembalikan sukses kecuali MODE tidak valid atau sebuah pilihan tidak " "valid diberikan." -#: builtins.c:1485 -#, fuzzy +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4734,8 +4850,7 @@ msgstr "" "pilihan tidak\n" " valid diberikan." -#: builtins.c:1506 -#, fuzzy +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4761,7 +4876,7 @@ msgstr "" "pilihan tidak valid\n" " diberikan." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4785,7 +4900,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4815,7 +4930,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4852,7 +4967,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4880,7 +4995,7 @@ msgstr "" " Status Keluar:\n" " Status kembali adalah status kembali dari PIPELINE." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4898,7 +5013,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan setatus dari perintah terakhir yang dijalankan." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4936,7 +5051,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4954,7 +5069,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4971,7 +5086,8 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4981,7 +5097,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Buat sebuah koproses dengan nama NAMA.\n" " \n" @@ -4994,7 +5110,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status keluar dari PERINTAH." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -5019,7 +5135,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali NAMA adalah baca-saja." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5038,7 +5154,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dieksekusi." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5065,7 +5181,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari pekerjaan yang dilanjutkan." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5083,7 +5199,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan 1 jika EXPRESI dievaluasi ke 0; mengembalikan 0 jika tidak." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5140,7 +5256,7 @@ msgstr "" " Status Keluar:\n" " 0 atau 1 tergantun dari nilai dari EKSPRESI." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5254,7 +5370,8 @@ msgstr "" "digunakan untuk menentukan dimana\n" " \t\tperintah seharusnya disimpan dalam daftar sejarah.\n" -#: builtins.c:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -5264,19 +5381,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5314,7 +5431,8 @@ msgstr "" "atau pemindahan\n" " direktori gagal." -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -5323,16 +5441,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5358,8 +5476,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" @@ -5369,7 +5487,8 @@ msgstr "" "atau pemindahan\n" " direktori gagal." -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -5380,19 +5499,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5425,7 +5544,7 @@ msgstr "" " Mengembalikan sukses kecuali ada sebuah pilihan tidak valid diberikan " "atau sebuah error terjadi." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5464,7 +5583,7 @@ msgstr "" "tidak valid diberikan\n" " atau OPTNAME dinonaktifkan." -#: builtins.c:1908 +#: builtins.c:1919 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5482,15 +5601,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5529,7 +5648,8 @@ msgstr "" "sebuah penulisan atau penempatan\n" " error terjadi." -#: builtins.c:1942 +#: builtins.c:1953 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5542,11 +5662,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5582,7 +5702,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5605,8 +5725,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1985 -#, fuzzy +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5668,7 +5787,7 @@ msgstr "" "NAMA tidak memiliki\n" " spesifikasi penyelesaian yang terdefinisi." -#: builtins.c:2015 +#: builtins.c:2026 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5680,20 +5799,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5745,7 +5865,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "ARRAY adalah baca-saja." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5755,18 +5875,24 @@ 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" +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc." -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Lisensi GPLv2+: GNU GPL versi 2 atau sesudahnya \n" +#~ msgid ":" +#~ msgstr ":" -#~ msgid "wait [pid]" -#~ msgstr "wait [pid]" +#~ msgid "true" +#~ msgstr "benar" + +#~ msgid "false" +#~ msgstr "salah" + +#~ msgid "times" +#~ msgstr "kali" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc." #~ msgid "" #~ ". With EXPR, returns\n" @@ -5790,6 +5916,16 @@ msgstr "" #~ "kembali\n" #~ " sebelum saat ini; 'frame' paling atas adalah 'frame' 0." +#~ 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 "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" #~ msgstr "" #~ "xrealloc: tidak dapat menrealokasikan %lu bytes (%lu bytes teralokasikan)" @@ -5938,9 +6074,6 @@ msgstr "" #~ msgid "removes the top directory from the stack, and cd's to the new" #~ msgstr "menghapus top direktori dari stack, dan pindah ke" -#~ msgid "top directory." -#~ msgstr "top direktori yang baru." - #~ msgid "+N removes the Nth entry counting from the left of the list" #~ msgstr "+N menghapus masukan ke-N dihitung dari kiri dari daftar" diff --git a/po/it.gmo b/po/it.gmo index 8f61a3818c786eea53bbdb7f903e7392174bc768..99e98a493ca7f469b76b05c4b36cb400bc5a85a7 100644 GIT binary patch delta 10957 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 delta 29236 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 diff --git a/po/it.po b/po/it.po index 9e7f144..6bff65a 100644 --- a/po/it.po +++ b/po/it.po @@ -7,82 +7,88 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "indice dell'array errato" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossibile convertire un array indicizzato in uno associativo" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: chiave dell'array associativo non valida" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossibile assegnare a un indice non numerico" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" "%s: %s: deve essere usato un indice nell'assegnazione di un array associativo" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: impossibile creare: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: impossibile trovare una mappatura per il comando" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: il primo carattere non spazio non eÌ€ \"\"\"" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "carattere di chiusura \"%c\" non presente in %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: separatore di tipo due punti mancante" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "\"%s\": nome alias non valido" @@ -91,45 +97,45 @@ msgstr "\"%s\": nome alias non valido" msgid "line editing not enabled" msgstr "modifica delle righe non abilitata" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "\"%s\": nome della mappatura non valido" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: impossibile leggere: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "\"%s\": impossibile eliminare l'associazione" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "\"%s\" nome della funzione sconosciuto" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s non eÌ€ associato ad alcun tasto.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s puoÌ€ essere invocato tramite " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "numero di cicli" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "significativo solo in un ciclo \"for\", \"while\" o \"until\"" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -139,300 +145,329 @@ msgstr "" " \n" " Senza ESPR, restituisce " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME non impostata" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "troppi argomenti" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "nessun'altra directory" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD non impostata" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "riga %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "attenzione: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: l'opzione richiede un argomento" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: è necessario un argomento numerico" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: non trovata" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: opzione non valida" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: nome dell'opzione non valido" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": non è un identificatore valido" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "numero ottale non valido" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "numero esadecimale non valido" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "numero non valido" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: specifica di segnale non valida" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "\"%s\": non eÌ€ un pid o un numero di job valido" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: variabile in sola lettura" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fuori dall'intervallo" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argomento" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s fuori dall'intervallo" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: job inesistente" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: nessun controllo dei job" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "nessun controllo dei job" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: limitato" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "limitato" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: non è un comando interno di shell" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "errore in scrittura: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "errore nell'impostazione degli attributi del terminale: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "errore nel recupero degli attributi del terminale: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: errore nel recupero della directory corrente: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: specifica di job ambigua" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: nome azione non valido" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: nessun completamento specificato" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "attenzione: l'opzione -F potrebbe non funzionare come previsto" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "attenzione: l'opzione -C potrebbe non funzionare come previsto" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "funzione di completamento attualmente non in esecuzione" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "puoÌ€ essere usato solo in una funzione" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, fuzzy, c-format +msgid "%s: circular name reference" +msgstr "%s: %s: valore non valido per il descrittore del file di traccia" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: %s: valore non valido per il descrittore del file di traccia" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "impossibile usare \"-f\" per creare funzioni" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: funzione in sola lettura" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: impossibile eliminare variabili array in questo modo" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossibile convertire un array associativo in uno indicizzato" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "caricamento dinamico non disponibile" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "impossibile aprire l'oggetto condiviso %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "impossibile trovare %s nell'oggetto condiviso %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: non caricato dinamicamente" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: impossibile eliminare: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: è una directory" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: non è un file regolare" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: file troppo grande" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossibile eseguire il file binario" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: impossibile eseguire: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "non eÌ€ una shell di login: utilizzare \"exit\"" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Sono presenti job interrotti.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Ci sono job in esecuzione.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "nessun comando trovato" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "specifica della cronologia" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: impossibile aprire il file temp: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "attuale" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "job %d avviato senza controllo dei job" @@ -451,24 +486,24 @@ msgstr "%s: l'opzione richiede un argomento -- %c\n" msgid "hashing disabled" msgstr "hashing disabilitato" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s tabella di hash vuota\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "rich.\tcomando\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Comandi di shell corrispondenti alla parola chiave \"" msgstr[1] "Comandi di shell corrispondenti alle parole chiave \"" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -476,12 +511,12 @@ msgstr "" "nessun argomento della guida corrisponde a \"%s\". Provare \"help help\" o " "\"man -k %s\" o \"info %s\"." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: impossibile aprire: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -502,15 +537,20 @@ msgstr "" "Un asterisco (*) vicino a un nome significa che il comando eÌ€ disabilitato.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "impossibile usare piuÌ€ di uno tra -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "posizione nella cronologia" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: argomento di limite non valido" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: espansione della cronologia non riuscita" @@ -524,113 +564,113 @@ msgstr "%s: inlib non riuscito" msgid "no other options allowed with `-x'" msgstr "nessuna altra opzione permessa con \"-x\"" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, 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:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Errore sconosciuto" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "attesa espressione" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: non è un array indicizzato" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: specifica di descrittore di file non valida" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descrittore di file non valido: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: numero di righe non valido" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: origine dell'array non valida" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum di callback non valido" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "nome della variabile array vuoto" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "necessario il supporto alla variabile array" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": manca il carattere di formato" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "\"%c\": specifica di formato dell'orario non valida" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": carattere di formato non valido" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "attenzione: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "cifra esadecimale mancante in \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "cifra unicode mancante in \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "nessun'altra directory" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: argomento di limite non valido" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "stack delle directory vuoto" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "indice dello stack delle directory" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -673,7 +713,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:711 +#: builtins/pushd.def:718 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -719,7 +759,7 @@ msgstr "" " \n" " Il comando interno \"dirs\" visualizza lo stack delle directory." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -757,144 +797,154 @@ msgstr "" " \n" " Il comando interno \"dirs\" visualizza lo stack delle directory." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: specifica di timeout non valida" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "errore in lettura: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" "eÌ€ possibile eseguire \"return\" solo da una funzione o da uno script chiamato" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "impossibile azzerare contemporaneamente una funzione e una variabile" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: impossibile azzerare" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossibile azzerare: %s in sola lettura" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: non è una variabile array" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: non è una funzione" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: impossibile azzerare" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "numero di scorrimenti" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "impossibile impostare e azzerare opzioni di shell contemporaneamente" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome dell'opzione di shell non valido" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "necessario un nome file come argomento" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: file non trovato" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "impossibile sospendere" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "impossibile sospendere una shell di login" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s ha \"%s\" come alias\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s è una parola chiave di shell\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s è una funzione\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s è un comando interno di shell\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s è un comando interno di shell\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s è %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "hash effettuato su %s (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argomento di limite non valido" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "\"%c\": comando errato" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: impossibile recuperare il limite: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: impossibile modificare il limite: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "numero ottale" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "\"%c\": operatore di modo simbolico non valido" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": carattere di modo simbolico non valido" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " riga " @@ -908,82 +958,103 @@ msgstr "ultimo comando: %s\n" msgid "Aborting..." msgstr "Interruzione..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "errore di comando sconosciuto" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "tipo di comando errato" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "connettore errato" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "salto errato" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: variabile non assegnata" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "impossibile redirigere lo standard input da /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": carattere di formato non valido" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "errore della pipe" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: limitato: impossibile specificare \"/\" nei nomi dei comandi" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: comando non trovato" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interprete errato" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossibile eseguire il file binario" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s è un comando interno di shell\n" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossibile duplicare fd %d su fd %d" @@ -1028,37 +1099,37 @@ msgstr "atteso identificatore dopo un pre-incremento o un pre-decremento" msgid "missing `)'" msgstr "\")\" mancante" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "errore di sintassi: atteso un operando" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "errore di sintassi: operatore aritmetico non valido" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (il token dell'errore è \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "base aritmetica non valida" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "valore troppo grande per la base" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: errore di espressione\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossibile accedere alle directory padre" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" @@ -1075,148 +1146,148 @@ msgstr "" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer giaÌ€ esistente per il nuovo fd %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pipe pgrp" -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, 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:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: processo %5ld (%s) in the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid inesistente" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Segnale %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Completato" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Fermato" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Fermato(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "In esecuzione" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Eseguito(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Uscita %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Stato sconosciuto" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(core dump creato) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (dir: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid del figlio (%ld a %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: il pid %ld non eÌ€ un figlio di questa shell" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: nessun record del processo %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: il job %d eÌ€ fermo" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: il job eÌ€ terminato" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: il job %d è giaÌ€ in background" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: attivato WNOHANG per evitare blocchi indefiniti" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: riga %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (core dump creato)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ora: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp non riuscita" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina di linea" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossibile impostare il gruppo di processi del terminale (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "nessun controllo dei job in questa shell" @@ -1270,18 +1341,18 @@ msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: dimensioni diverse dei blocchi di inizio e di fine" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" "register_alloc: forse la tavola di allocazione eÌ€ piena con FIND_ALLOC\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: forse %p è giaÌ€ come allocato nella tabella\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_alloc: forse %p è giaÌ€ come libero nella tabella\n" @@ -1305,7 +1376,7 @@ msgstr "%s: servizio non valido" msgid "%s: bad network path specification" msgstr "%s: specifica del percorso di rete errata" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "operazione di rete non supportata" @@ -1342,227 +1413,262 @@ msgstr "EÌ€ presente della nuova posta in $_" msgid "The mail in %s has been read\n" msgstr "La posta in %s eÌ€ stata letta\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "errore di sintassi: richiesta espressione aritmetica" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "errore di sintassi: \";\" non atteso" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "errore di sintassi: \"((%s))\"" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo di istruzione errata %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document alla riga %d è delimitato da un EOF (era richiesto \"%s\")" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: istruzione di reindirizzamento \"%d\" fuori dell'intervallo" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF non atteso durante la ricerca di \"%c\"" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "EOF non atteso durante la ricerca di \"]]\"" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "errore di sintassi nell'espressione condizionale: token non atteso \"%s\"" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "errore di sintassi nell'espressione condizionale" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "token non atteso \"%s\", era atteso \")\"" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "atteso \")\"" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argomento non atteso \"%s\" per l'operatore unario condizionale" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "argomento non atteso per l'operatore unario condizionale" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "token non atteso \"%s\", era atteso un operatore binario condizionale" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "atteso operatore binario condizionale" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argomento non atteso \"%s\" per l'operatore binario condizionale" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "argomento non atteso per l'operatore binario condizionale" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "token non atteso \"%c\" nel comando condizionale" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "token non atteso \"%s\" nel comando condizionale" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "token non atteso %d nel comando condizionale" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "errore di sintassi vicino al token non atteso \"%s\"" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "errore di sintassi vicino a \"%s\"" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "errore di sintassi: EOF non atteso" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "errore di sintassi" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Usare \"%s\" per uscire dalla shell.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF non atteso durante la ricerca di \")\"" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funzione \"%s\" non trovata" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: COMPSPEC NULL" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: connettore errato \"%d\"" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: descrittore di file non valido" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: puntatore a file NULL" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfile xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": carattere di formato non valido" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "descrittore di file fuori dell'intervallo" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirezione ambigua" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossibile sovrascrivere il file esistente" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: limitato: impossibile redirigere l'output" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossibile creare un file temporaneo per here-document: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossibile assegnare fd a una variabile" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port non supportata senza rete" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "errore di reindirizzamento: impossibile duplicare fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "impossibile trovare /tmp, eÌ€ necessario crearla" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp deve essere un nome di directory valido" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opzione non valida" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "impossibile reimpostare il modo nodelay per fd %d" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "impossibile reimpostare il modo nodelay per fd %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: è una directory" + +#: shell.c:1777 msgid "I have no name!" msgstr "Manca il nome" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versione %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1571,44 +1677,54 @@ msgstr "" "Uso:\t%s [opzione lunga GNU] [opzione] ...\n" "\t%s [opzione lunga GNU] [opzione] file-script ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Opzioni lunghe GNU:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Opzioni di shell:\n" -#: shell.c:1835 +#: shell.c:1938 #, 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\topzione -%s oppure -o\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Usare il comando \"bashbug\" per segnalare i bug.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operazione non valida" @@ -1782,77 +1898,92 @@ msgstr "Numero di segnale sconosciuto" msgid "Unknown Signal #%d" msgstr "Segnale sconosciuto n° %d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sostituzione errata: nessuna chiusura di \"%s\" in %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossibile assegnare una lista a un membro di un array" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "impossibile creare una pipe per la sostituzione del processo" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "impossibile creare un figlio per la sostituzione del processo" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossibile aprire la pipe con nome %s in lettura" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossibile aprire la pipe con nome %s in scrittura" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossibile duplicare una pipe con nome %s come fd %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "sostituzione errata: manca «\"» di chiusura in %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "impossibile creare una pipe per la sostituzione del comando" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "impossibile creare un figlio per la sostituzione del comando" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: impossibile duplicare la pipe come fd 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, 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:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parametro nullo o non impostato" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: expressione di sottostringa < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: sostituzione errata" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: numero di righe non valido" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "\"%s\": nome alias non valido" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametro nullo o non impostato" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expressione di sottostringa < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossibile assegnare in questo modo" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1860,12 +1991,12 @@ msgstr "" "le versioni future della shell forzeranno la valutazione come fosse una " "sostituzione aritmetica" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sostituzione errata: manca «\"» di chiusura in %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "nessuna corrispondenza: %s" @@ -1879,39 +2010,39 @@ msgstr "atteso argomento" msgid "%s: integer expression expected" msgstr "%s: attesa espressione intera" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "atteso \")\"" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "atteso \")\", trovato %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: atteso operatore unario" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: atteso operatore binario" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "\"]\" mancante" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "numero di segnale non valido" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1919,88 +2050,88 @@ msgstr "" "run_pending_traps: il gestore dei segnali eÌ€ SIG_DFL, viene inviato " "nuovamente %d (%s)" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: segnale errato %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "errore nell'importazione della definizione di funzione per \"%s\"" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "livello di shell (%d) troppo alto, reimpostato a 1" -#: variables.c:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%s: %s: valore non valido per il descrittore del file di traccia" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nessun contesto di funzione nell'ambito corrente" -#: variables.c:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: impossibile assegnare fd a una variabile" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: %s: valore non valido per il descrittore del file di traccia" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nessun contesto di funzione nell'ambito corrente" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s ha exportstr null" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carattere non valido %d in exportstr per %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "nessun \"=\" in exportstr per %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nessun contesto global_variables" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossibile aprire come FILE" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valore non valido per il descrittore del file di traccia" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s fuori dall'intervallo" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Copyright © 2011 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2026,11 +2157,6 @@ msgstr "Questo eÌ€ software libero; eÌ€ possibile modificarlo e ridistribuirlo.\ msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Non c'eÌ€ ALCUNA GARANZIA, nei limiti permessi dalla legge.\n" -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright © 2011 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2051,15 +2177,15 @@ msgstr "%s: %s:%d: impossibile allocare %lu byte (%lu byte allocati)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: impossibile allocare %lu byte" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [nome[=valore] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nome [nome ...]" -#: builtins.c:51 +#: builtins.c:53 #, fuzzy msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" @@ -2069,113 +2195,102 @@ msgstr "" "seqtasti] [-x seqtasti:comando-shell] [seqtasti:funzione-readline o comando-" "readline]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [comandoint-shell [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [espr]" -#: builtins.c:64 +#: builtins.c:66 #, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]]] [dir]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "vero" - -#: builtins.c:72 -msgid "false" -msgstr "falso" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] comando [arg ...]" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [nome[=valore] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "typeset [-aAfFgilrtux] [-p] nome[=valore] ..." -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [opzione] nome[=valore] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f nome_file] [nome ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts stringaopz nome [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a nome] [comando [argomenti ...]] [redirezione ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e ename] [-lnr] [primo] [ultimo] oppure fc -s [pat=rep] [comando]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [spec_job]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [spec_job ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p nomepercorso] [-dt] [nome ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [modello ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2183,15 +2298,16 @@ msgstr "" "history [-c] [-d posiz] [n] oppure history -anrw [nomefile] oppure history -" "ps arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [specjob ...] oppure jobs -x comando [argomenti]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [specjob ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2199,11 +2315,11 @@ msgstr "" "kill [-s specsegn | -n numsegn | -specsegn] pid | specjob ... oppure kill -l " "[specsegn]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2211,103 +2327,99 @@ msgstr "" "read [-ers] [-a array] [-d delim] [-i testo] [-n ncaratt] [-N ncaratt] [-p " "stringa] [-t secondi] [-u fd] [nome ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opzione] [--] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nome ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [nome[=valore] ...] oppure export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [nome[=valore] ...] oppure readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source nomefile [argomenti]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". nomefile [argomenti]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [espr]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] spec_segnale ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nome [nome ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [limite]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [modo]" -#: builtins.c:175 +#: builtins.c:177 #, fuzzy msgid "wait [-n] [id ...]" msgstr "wait [id]" -#: builtins.c:179 +#: builtins.c:181 #, fuzzy msgid "wait [pid ...]" msgstr "wait [id]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NOME [in PAROLE ... ] ; do COMANDI; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( espr1; espr2; espr3 )); do COMANDI; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NOME [in PAROLE ... ;] do COMANDI; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] pipeline" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case PAROLA in [MODELLO [| MODELLO]...) COMANDI ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2315,63 +2427,63 @@ msgstr "" "if COMANDI; then COMANDI; [ elif COMANDI; then COMANDI; ]... [ else " "COMANDI; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while COMANDI; do COMANDI; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until COMANDI; do COMANDI; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NOME] comando [redirezioni]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function name { COMANDI ; } oppure name () { COMANDI ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ COMANDI ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "spec_job [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( espressione ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ espressione ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variabili - nomi e significati di alcune variabili di shell" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | dir]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [nomeopz ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formato [argomenti]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2381,28 +2493,30 @@ msgstr "" "W elencoparole] [-F funzione] [-C comando] [-X modfiltro] [-P prefisso] [-S " "suffisso] [nome ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o opzione] [-A azione] [-G modglob] [-W " "elencoparole] [-F funzione] [-C comando] [-X modfiltro] [-P prefisso] [-S " "suffisso] [parola]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o opzione] [-DE] [nome ...]" -#: builtins.c:240 +#: builtins.c:242 +#, fuzzy msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "mapfile [-n numero] [-O origine] [-s numero] [-t] [-u fd] [-C callback] [-c " "quantità] [array]" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2410,7 +2524,8 @@ msgstr "" "readarray [-n numero] [-O origine] [-s numero] [-t] [-u fd] [-C callback] [-" "c quantità] [array]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2422,7 +2537,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2448,12 +2563,13 @@ msgstr "" "quale\n" " non sia stato definito alcun alias." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2464,7 +2580,7 @@ msgstr "" " \n" " Restituisce successo a meno che NOME non sia un alias esistente." -#: builtins.c:289 +#: builtins.c:291 #, fuzzy msgid "" "Set Readline key bindings and variables.\n" @@ -2499,7 +2615,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2550,7 +2667,7 @@ msgstr "" " bind restituisce 0 a meno che non sia fornita una opzione non " "riconosciuta o si riscontri un errore." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2569,7 +2686,7 @@ msgstr "" " Stato di uscita:\n" " Lo stato di uscita è 0 a meno che N non sia maggiore o uguale a 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2587,7 +2704,7 @@ msgstr "" " Stato di uscita:\n" " Lo stato di uscita è 0 a meno che N non sia maggiore o uguale a 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2614,7 +2731,7 @@ msgstr "" "COMINTERNO-SHELL\n" " non è un comando interno di shell." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2645,7 +2762,7 @@ msgstr "" "che l'ESPR\n" " non sia valida." -#: builtins.c:385 +#: builtins.c:387 #, fuzzy msgid "" "Change the shell working directory.\n" @@ -2669,16 +2786,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2727,13 +2844,14 @@ msgstr "" "successo quando\n" " viene usato -P; altrimenti un valore diverso da zero." -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2757,7 +2875,7 @@ msgstr "" "la\n" " directory corrente non possa essere letta." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2773,7 +2891,7 @@ msgstr "" " Stato di uscita:\n" " ha sempre successo." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2785,7 +2903,7 @@ msgstr "" " Stato di uscita:\n" " ha sempre successo." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2797,7 +2915,8 @@ msgstr "" " Stato di uscita:\n" " Sempre un insuccesso." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2807,10 +2926,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2835,7 +2954,7 @@ msgstr "" " Restituisce lo stato di uscita del COMANDO o insuccesso se il COMANDO " "non viene trovato." -#: builtins.c:487 +#: builtins.c:490 #, fuzzy msgid "" "Set variable values and attributes.\n" @@ -2846,9 +2965,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2916,17 +3035,18 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Imposta valori e attributi di variabile.\n" " \n" " Obsoleto. Vedere \"help declare\"." -#: builtins.c:535 +#: builtins.c:538 #, fuzzy msgid "" "Define local variables.\n" @@ -2957,7 +3077,7 @@ msgstr "" "non si\n" " riscontri un errore o la shell non stia eseguendo una funzione." -#: builtins.c:552 +#: builtins.c:555 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2984,9 +3104,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3024,7 +3144,7 @@ msgstr "" " Restituisce successo a meno che non venga riscontrato un errore di " "scrittura." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3047,7 +3167,7 @@ msgstr "" " Restituisce successo a meno che non venga riscontrato un errore di " "scrittura." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3103,7 +3223,7 @@ msgstr "" " Restituisce successo a meno che NOME non sia un comando interno di shell " "o si riscontri un errore." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3123,7 +3243,7 @@ msgstr "" " Restituisce lo stato di uscita del comando o successo se il comando è " "nullo." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3214,7 +3334,8 @@ msgstr "" "raggiunta\n" " la fine delle opzioni o viene riscontrato un errore." -#: builtins.c:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3225,8 +3346,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3257,7 +3378,7 @@ msgstr "" " Restituisce successo a meno che non sia trovato il COMANDO o si " "riscontri un errore di ridirezione." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3269,7 +3390,7 @@ msgstr "" " Esce dalla shell con uno stato N. Se N è omesso lo stato di uscita\n" " è quello dell'ultimo comando eseguito." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3283,7 +3404,7 @@ msgstr "" "se non eseguito\n" " in una shell di login." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3343,7 +3464,7 @@ msgstr "" " Restituisce successo o lo stato del comando eseguito, non zero se si " "riscontra un errore." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3364,7 +3485,7 @@ msgstr "" " Stato del comando messo in primo piano, o insuccesso se si riscontra un " "errore." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3389,7 +3510,7 @@ msgstr "" " Restituisce successo a meno che il controllo dei job non sia abilitato o " "si riscontri un errore." -#: builtins.c:784 +#: builtins.c:787 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3399,15 +3520,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3437,7 +3558,8 @@ msgstr "" " Restituisce successo a meno che non sia trovato NOME o sia fornita una " "opzione non valida." -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3449,7 +3571,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3480,7 +3602,8 @@ msgstr "" " Restituisce successo a meno che non venga trovato il MODELLO o sia " "fornita una opzione non valida." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3489,23 +3612,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3554,7 +3677,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:869 +#: builtins.c:872 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3565,7 +3688,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3602,7 +3725,8 @@ msgstr "" "si riscontri un errore.\n" " Se viene usato -x, restituisce lo stato di uscita del COMANDO." -#: builtins.c:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3612,7 +3736,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3635,7 +3759,8 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o uno SPECJOB." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3647,7 +3772,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3680,7 +3806,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3775,7 +3901,7 @@ msgstr "" " Se l'ultimo ARG viene valutato pari a 0 restituisce 1, altrimenti " "restituisce 0." -#: builtins.c:983 +#: builtins.c:987 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3797,27 +3923,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3879,7 +4006,7 @@ msgstr "" "timeout in lettura\n" " o venga fornito un descrittore di file non valido come argomento per -u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3901,7 +4028,7 @@ msgstr "" " Restituisce N, oppure insuccesso se la shell non sta eseguendo una " "funzione o uno script." -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3970,7 +4097,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4086,7 +4214,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che non venga fornita una opzione non valida." -#: builtins.c:1126 +#: builtins.c:1132 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -4097,7 +4225,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4127,7 +4255,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "NOME sia in sola lettura." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4163,7 +4291,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "il NOME non sia valido." -#: builtins.c:1167 +#: builtins.c:1173 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4176,9 +4304,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4204,7 +4331,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o NOME non sia valido." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4222,7 +4349,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che N non sia negativo o maggiore di $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4247,7 +4374,7 @@ msgstr "" "insuccesso se\n" " il NOMEFILE non può essere letto." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4273,7 +4400,7 @@ msgstr "" " Restituisce successo a meno che non sia abilitato il controllo job o si " "riscontri un errore." -#: builtins.c:1248 +#: builtins.c:1254 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4338,9 +4465,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4443,7 +4570,7 @@ msgstr "" "viene valutata\n" " falsa o viene fornito un argomento non valido." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4456,7 +4583,7 @@ msgstr "" "deve\n" " essere un \"]\" letterale per corrispondere al \"[\" di apertura." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4476,7 +4603,7 @@ msgstr "" " Stato di uscita:\n" " Sempre successo." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4562,7 +4689,8 @@ msgstr "" " Restituisce successo a meno che SPEC_SEGNALE non sia valido o si " "fornisca una opzione non valida." -#: builtins.c:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -4571,18 +4699,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4624,7 +4752,7 @@ msgstr "" " Restituisce successo se tutti i NOMI vengono trovati; insuccesso in caso " "contrario." -#: builtins.c:1417 +#: builtins.c:1424 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4643,6 +4771,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4654,7 +4783,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4718,7 +4848,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o venga riscontrato un errore." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4755,7 +4885,7 @@ msgstr "" " Restituisce successo a meno che MODO non sia valido o venga fornita una " "opzione non valida." -#: builtins.c:1485 +#: builtins.c:1494 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4791,7 +4921,7 @@ msgstr "" "fornita una\n" " opzione non valida." -#: builtins.c:1506 +#: builtins.c:1515 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4819,7 +4949,7 @@ msgstr "" "fornita una opzione non\n" " valida." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4844,7 +4974,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4875,7 +5005,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4913,7 +5043,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato di uscita dell'ultimo comando eseguito." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4942,7 +5072,7 @@ msgstr "" " Stato di uscita:\n" " Viene restituito lo stato della PIPELINE." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4961,7 +5091,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -5000,7 +5130,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5018,7 +5148,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5036,7 +5166,8 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5046,7 +5177,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Crea un coprocesso chiamato NOME.\n" " \n" @@ -5061,7 +5192,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato di uscita del COMANDO." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -5087,7 +5218,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che il NOME non sia in sola lettura." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5106,7 +5237,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5130,7 +5261,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato del job ripristinato." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5148,7 +5279,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce 1 se ESPRESSIONE è valutata 0, altrimenti restituisce 0." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5205,7 +5336,7 @@ msgstr "" " Stato di uscita:\n" " 0 o 1 a seconda del valore dell'ESPRESSIONE." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5333,7 +5464,8 @@ msgstr "" "decidere quale\n" " \t\tcomando dovrebbe essere salvato nell'elenco della cronologia.\n" -#: builtins.c:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -5343,19 +5475,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5392,7 +5524,8 @@ msgstr "" "non abbia\n" " successo il cambio di directory." -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -5401,16 +5534,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5443,7 +5576,8 @@ msgstr "" "valido o non\n" " abbia successo il cambio di directory." -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -5454,19 +5588,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5496,7 +5630,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita un'opzione non valida o " "si riscontri un errore." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5537,7 +5671,7 @@ msgstr "" "fornita\n" " una opzione non valida o NOMEOPZ è disabilitato." -#: builtins.c:1908 +#: builtins.c:1919 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5555,15 +5689,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5607,7 +5741,8 @@ msgstr "" "o si riscontri\n" " un errore di scrittura o assegnazione." -#: builtins.c:1942 +#: builtins.c:1953 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5620,11 +5755,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5662,7 +5797,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5686,7 +5821,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5750,7 +5885,8 @@ msgstr "" "o NOME non\n" " abbia una specifica di completamento definita." -#: builtins.c:2015 +#: builtins.c:2026 +#, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5761,20 +5897,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5829,7 +5966,7 @@ msgstr "" "valida, ARRAY sia\n" " in sola lettura oppure non indicizzato." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5839,6 +5976,26 @@ msgstr "" " \n" " Sinonimo per \"mapfile\"." +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "vero" + +#~ msgid "false" +#~ msgstr "falso" + +#~ msgid "times" +#~ msgstr "times" + +#, fuzzy +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2011 Free Software Foundation, Inc." + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" diff --git a/po/ja.gmo b/po/ja.gmo index cd8526d43eae0272da0574eb8095d8b10c6c7610..3f5a091a3c26ab390283a565c9033a619775c54d 100644 GIT binary patch delta 16101 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 delta 30785 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

    1. *{DzEvQ=16!s=Y>!-@EnweoM)w|zHbJ-oOgle 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, 2000. -# Yasuaki Taniguchi , 2011. # Takeshi Hamasaki , 2011, 2013. +# Yasuaki Taniguchi , 2011, 2014. msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.2\n" +"Project-Id-Version: GNU bash 4.3-rc2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2013-03-12 19:44+0900\n" -"Last-Translator: Takeshi Hamasaki \n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2014-10-30 05:04+0100\n" +"Last-Translator: Yasuaki Taniguchi \n" "Language-Team: Japanese \n" -"Language: Japanese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: Japanese\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.5.4\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "誤ã£ãŸé…åˆ—ã®æ·»å­—" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: インデックスé…列ã‹ã‚‰é€£æƒ³é…列ã«å¤‰æ›ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: 無効ãªé€£æƒ³é…列ã®ã‚­ãƒ¼ã§ã™" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: é…åˆ—ã®æ·»å­—ã«éžæ•°å­—を設定ã§ãã¾ã›ã‚“" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: 連想é…列を設定ã™ã‚‹ã¨ãã«ã¯æ·»å­—ã‚’ã¤ã‘ãªã‘れã°ã„ã‘ã¾ã›ã‚“" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: %s を作æˆã§ãã¾ã›ã‚“" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: コマンドã®ã‚­ãƒ¼ãƒžãƒƒãƒ—ãŒã‚りã¾ã›ã‚“" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 最åˆã®éžç©ºç™½é¡žæ–‡å­—㌠`\"' ã§ã¯ã‚りã¾ã›ã‚“" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "é–‰ã˜ã‚‹ `%c' ㌠%s ã«ã‚りã¾ã›ã‚“" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: 区切り文字コロン(:)ãŒã‚りã¾ã›ã‚“" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "中括弧展開: %s ã¸ãƒ¡ãƒ¢ãƒªã‚’割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" +"中括弧展開: failed to allocate memory for %d è¦ç´ ã®ãƒ¡ãƒ¢ãƒªã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾" +"ã—ãŸ" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "中括弧展開: `%s' ã¸ã®ãƒ¡ãƒ¢ãƒªå‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸ" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': 無効ãªã‚¨ã‚¤ãƒªã‚¢ã‚¹åã§ã™" @@ -91,45 +98,45 @@ msgstr "`%s': 無効ãªã‚¨ã‚¤ãƒªã‚¢ã‚¹åã§ã™" msgid "line editing not enabled" msgstr "è¡Œç·¨é›†ãŒæœ‰åйã«ãªã£ã¦ã„ã¾ã›ã‚“" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': 無効ãªã‚­ãƒ¼ãƒžãƒƒãƒ—åã§ã™" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: %s を読ã¿è¾¼ã‚ã¾ã›ã‚“" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': 割り当ã¦è§£é™¤ã§ãã¾ã›ã‚“" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "`%s': 䏿˜Žãªé–¢æ•°åã§ã™" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ã¯ã©ã®ã‚­ãƒ¼ã«ã‚‚割り当ã¦ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s ã¯æ¬¡ã‚’通ã—ã¦èµ·å‹•ã—ã¾ã™ " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "ループ回数" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "`for'ã€`while' ã¾ãŸã¯ `until' ループã§ã®ã¿æ„味ãŒã‚りã¾ã™" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -139,300 +146,329 @@ msgstr "" " \n" " EXPR ãŒç„¡ã„å ´åˆã€æ¬¡ã‚’è¿”ã—ã¾ã™ " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME ãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "引数ãŒå¤šã™ãŽã¾ã™" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "ä»–ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã‚りã¾ã›ã‚“" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD ãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "%d 行: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "警告: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: 使用法: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: オプションã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: æ•°å­—ã®å¼•æ•°ãŒå¿…è¦ã§ã™" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: 見ã¤ã‹ã‚Šã¾ã›ã‚“" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: 無効ãªã‚ªãƒ—ションã§ã™" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: 無効ãªã‚ªãƒ—ションåã§ã™" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': 有効ãªè­˜åˆ¥å­ã§ã¯ã‚りã¾ã›ã‚“" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "無効ãªå…«é€²æ•°ã§ã™" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "無効ãªå六進数ã§ã™" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "ç„¡åŠ¹ãªæ•°å­—ã§ã™" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: 無効ãªã‚·ã‚°ãƒŠãƒ«æŒ‡å®šã§ã™" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': pid ã¾ãŸã¯æœ‰åйãªã‚¸ãƒ§ãƒ–指定ã§ã¯ã‚りã¾ã›ã‚“" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: 読ã¿å–り専用ã®å¤‰æ•°ã§ã™" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s ãŒç¯„囲外ã§ã™" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "引数" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s ãŒç¯„囲外ã§ã™" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: ãã®ã‚ˆã†ãªã‚¸ãƒ§ãƒ–ã¯ã‚りã¾ã›ã‚“" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: ジョブ制御ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "ジョブ制御ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: 制é™ã•れã¦ã„ã¾ã™" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "制é™ã•れã¦ã„ã¾ã™" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: シェルã®ãƒ“ルトイン関数ã§ã¯ã‚りã¾ã›ã‚“" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "ターミナル属性ã®è¨­å®šæ™‚ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "ターミナル属性ã®å–得時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: カレントディレクトリã®å–得時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: 曖昧ãªã‚¸ãƒ§ãƒ–指定ã§ã™" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: 無効ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³åã§ã™" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: 補完指定ãŒã‚りã¾ã›ã‚“" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "警告: -F ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯æœŸå¾…通りã«å‹•作ã—ãªã„ã‹ã‚‚ã—れã¾ã›ã‚“" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "警告: -C ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã¯æœŸå¾…通りã«å‹•作ã—ãªã„ã‹ã‚‚ã—れã¾ã›ã‚“" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "補完機能ã¯ç¾åœ¨å®Ÿè¡Œã•れã¦ã„ã¾ã›ã‚“" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "関数ã®ä¸­ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: å‚照変数ã¯é…列ã§ã‚ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: 自身をå‚ç…§ã™ã‚‹åå‰å‚照変数ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: 循環åå‰å‚ç…§ã§ã™" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: åå‰å‚ç…§ã¨ã—ã¦ç„¡åйãªå¤‰æ•°ã§ã™" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "é–¢æ•°ä½œæˆæ™‚ã« `-f' を使用ã§ãã¾ã›ã‚“" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: 読ã¿å–り専用関数ã§ã™" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: ã“ã®æ–¹æ³•ã§é…列変数を消去ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: 連想é…列ã‹ã‚‰ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹é…列ã«å¤‰æ›ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "動的ロードã¯åˆ©ç”¨ã§ãã¾ã›ã‚“" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "共有オブジェクト %s ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“ : %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "%s ãŒå…±æœ‰ã‚ªãƒ–ジェクト %s ã«å­˜åœ¨ã—ã¾ã›ã‚“: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: å‹•çš„ã«ãƒ­ãƒ¼ãƒ‰ã•れã¦ã„ã¾ã›ã‚“" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: 削除ã§ãã¾ã›ã‚“: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: ディレクトリã§ã™" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: 通常ファイルã§ã¯ã‚りã¾ã›ã‚“" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: ファイルãŒå¤§ãã™ãŽã¾ã™" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ãƒã‚¤ãƒŠãƒªãƒ•ァイルを実行ã§ãã¾ã›ã‚“" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: 実行ã§ãã¾ã›ã‚“: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "ログアウト\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "ログインシェルã§ã¯ã‚りã¾ã›ã‚“: `exit' を使用ã—ã¦ãã ã•ã„" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "åœæ­¢ã—ã¦ã„るジョブãŒã‚りã¾ã™ã€‚\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "動作中ã®ã‚¸ãƒ§ãƒ–ãŒã‚りã¾ã™ã€‚\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "ヒストリ指定" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: 一時ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "カレント" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "ジョブ %d ãŒã‚¸ãƒ§ãƒ–制御ãªã—ã§é–‹å§‹ã•れã¾ã—ãŸ" @@ -451,23 +487,23 @@ msgstr "%s: オプションã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™ -- %c\n" msgid "hashing disabled" msgstr "ãƒãƒƒã‚·ãƒ¥ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルãŒç©ºã§ã™\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "hits\tcommand\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "キーワードã«ä¸€è‡´ã—ãŸã‚·ã‚§ãƒ«ã‚³ãƒžãƒ³ãƒ‰ `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -475,12 +511,12 @@ msgstr "" "`%s' ã«ä¸€è‡´ã™ã‚‹ãƒ˜ãƒ«ãƒ—é …ç›®ãŒã‚りã¾ã›ã‚“。`help help'ã€`man -k %s' ã¾ãŸã¯ `info " "%s' を試ã—ã¦ãã ã•ã„" -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -502,15 +538,20 @@ msgstr "" "味ã—ã¾ã™ã€‚\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "-anrw ã‚’2ã¤ä»¥ä¸Šä¸€ç·’ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "ヒストリä½ç½®" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: 無効ãªå¼•æ•°ã§ã™" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: ヒストリã®å±•é–‹ã«å¤±æ•—ã—ã¾ã—ãŸ" @@ -524,113 +565,113 @@ msgstr "%s: inlib ãŒå¤±æ•—ã—ã¾ã—ãŸ" msgid "no other options allowed with `-x'" msgstr "`-x' ã¯ä»–ã®ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’åŒæ™‚ã«ä½¿ç”¨ã§ãã¾ã›ã‚“" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: 引数ã¯ãƒ—ロセスIDã‹ã‚¸ãƒ§ãƒ–IDã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼ã§ã™" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "å¼ãŒäºˆæœŸã•れã¾ã™" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: インデックスé…列ã§ã¯ã‚りã¾ã›ã‚“" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 無効ãªãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­æŒ‡å®šã§ã™" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 無効ãªãƒ•ァイル記述å­: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: 無効ãªè¡Œæ•°ã§ã™" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: 無効ãªé…列ã®åŽŸç‚¹ã§ã™" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: コールãƒãƒƒã‚¯ã® quantum ãŒç„¡åйã§ã™" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "空ã®é…列変数åã§ã™" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "é…列変数ã®ã‚µãƒãƒ¼ãƒˆãŒå¿…è¦ã§ã™" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': æ›¸å¼æŒ‡å®šæ–‡å­—ãŒã‚りã¾ã›ã‚“" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': ç„¡åŠ¹ãªæ™‚é–“æ›¸å¼æŒ‡å®šã§ã™" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': ç„¡åŠ¹ãªæ›¸å¼æŒ‡å®šæ–‡å­—ã§ã™" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "書å¼è§£æžå•題ã§ã™: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "\\x 用ã®å六進数字ãŒã‚りã¾ã›ã‚“" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "\\%c 用ã®ãƒ¦ãƒ‹ã‚³ãƒ¼ãƒ‰æ•°å€¤ãŒã‚りã¾ã›ã‚“" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "ä»–ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã‚りã¾ã›ã‚“" -#: builtins/pushd.def:354 -#, fuzzy, c-format +#: builtins/pushd.def:360 +#, c-format msgid "%s: invalid argument" -msgstr "%s: limit ã®ç„¡åйãªå¼•æ•°ã§ã™" +msgstr "%s: 無効ãªå¼•æ•°ã§ã™" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "<カレントディレクトリãŒã‚りã¾ã›ã‚“>" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "ディレクトリスタックãŒç©ºã§ã™" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "ディレクトリスタックã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -672,7 +713,7 @@ msgstr "" " -N\tオプションãªã—ã§èµ·å‹•ã•れãŸå ´åˆã«ãƒªã‚¹ãƒˆã®æœ«å°¾ã‹ã‚‰æ•°ãˆã¦\n" "\tN番目ã®è¦ç´ ã‚’表示ã—ã¾ã™ã€‚開始番å·ã¯0ã§ã™ã€‚" -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -716,7 +757,7 @@ msgstr "" " \n" " `dirs' ビルトインコマンドã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯ã‚’表示ã—ã¾ã™ã€‚" -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -754,143 +795,153 @@ msgstr "" " \n" " `dirs' ビルトインコマンドã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯ã‚’表示ã—ã¾ã™ã€‚" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: 無効ãªã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆæŒ‡å®šã§ã™" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "`return' ã¯é–¢æ•°ã¾ãŸã¯ source ã•れãŸã‚¹ã‚¯ãƒªãƒ—ト内ã®ã¿ã§åˆ©ç”¨ã§ãã¾ã™" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "変数ã¨é–¢æ•°ã‚’åŒæ™‚ã«æ¶ˆåŽ»ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: 消去ã§ãã¾ã›ã‚“" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: 消去ã§ãã¾ã›ã‚“: %s ã¯èª­ã¿å–り専用ã§ã™" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: é…列変数ã§ã¯ã‚りã¾ã›ã‚“" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: 関数ã§ã¯ã‚りã¾ã›ã‚“" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: 消去ã§ãã¾ã›ã‚“" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "シフト回数" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "ã‚·ã‚§ãƒ«ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã‚’åŒæ™‚ã«æœ‰åйã‹ã¤ç„¡åйã«ã§ãã¾ã›ã‚“" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 無効ãªã‚·ã‚§ãƒ«ã‚ªãƒ—ションåã§ã™" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "ファイルåãŒå¼•æ•°ã¨ã—ã¦å¿…è¦ã§ã™" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "中断ã§ãã¾ã›ã‚“" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "ログインシェルを中断ã§ãã¾ã›ã‚“" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s 㯠`%s' ã®ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã§ã™\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s ã¯ã‚·ã‚§ãƒ«ã®äºˆç´„語ã§ã™\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s ã¯é–¢æ•°ã§ã™\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s ã¯ã‚·ã‚§ãƒ«çµ„ã¿è¾¼ã¿é–¢æ•°ã§ã™\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s ã¯ã‚·ã‚§ãƒ«çµ„ã¿è¾¼ã¿é–¢æ•°ã§ã™\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s 㯠%s ã§ã™\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s ã¯ãƒãƒƒã‚·ãƒ¥ã•れã¦ã„ã¾ã™ (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: limit ã®ç„¡åйãªå¼•æ•°ã§ã™" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': 誤ã£ãŸã‚³ãƒžãƒ³ãƒ‰ã§ã™" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: limit ã‚’å–å¾—ã§ãã¾ã›ã‚“: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: limit を変更ã§ãã¾ã›ã‚“ : %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "八進数" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "`%c': 無効ãªã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒ¢ãƒ¼ãƒ‰æ¼”ç®—å­ã§ã™" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format 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:348 error.c:350 error.c:352 msgid " line " msgstr " 行 " @@ -904,82 +955,103 @@ msgstr "最後ã®ã‚³ãƒžãƒ³ãƒ‰: %s\n" msgid "Aborting..." msgstr "中止ã—ã¦ã„ã¾ã™..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "䏿˜Žãªã‚³ãƒžãƒ³ãƒ‰ã‚¨ãƒ©ãƒ¼ã§ã™" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "誤ã£ãŸã‚³ãƒžãƒ³ãƒ‰ã‚¿ã‚¤ãƒ—ã§ã™" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "誤ã£ãŸæŽ¥ç¶šã§ã™" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "誤ã£ãŸã‚¸ãƒ£ãƒ³ãƒ—ã§ã™" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: 未割り当ã¦ã®å¤‰æ•°ã§ã™" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a入力待ã¡ãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸ: 自動ログアウト\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "/dev/null ã‹ã‚‰æ¨™æº–入力ã«å¯¾ã—ã¦ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': ç„¡åŠ¹ãªæ›¸å¼æ–‡å­—ã§ã™" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "パイプエラー" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, fuzzy, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "%s: 関数ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’è¶…ãˆã¦ã„ã¾ã™ (%d)" + +#: execute_cmd.c:4508 +#, fuzzy, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: 関数ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’è¶…ãˆã¦ã„ã¾ã™ (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: 関数ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’è¶…ãˆã¦ã„ã¾ã™ (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 制é™ã•れã¦ã„ã¾ã™: `/' をコマンドåã®ä¸­ã«æŒ‡å®šã§ãã¾ã›ã‚“" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 誤ã£ãŸã‚¤ãƒ³ã‚¿ãƒ—リタã§ã™" -#: execute_cmd.c:5280 -#, fuzzy, c-format +#: execute_cmd.c:5545 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: ãƒã‚¤ãƒŠãƒªãƒ•ァイルを実行ã§ãã¾ã›ã‚“" +msgstr "%s: ãƒã‚¤ãƒŠãƒªãƒ•ァイルを実行ã§ãã¾ã›ã‚“: %s" -#: execute_cmd.c:5352 -#, fuzzy, c-format +#: execute_cmd.c:5623 +#, c-format msgid "`%s': is a special builtin" -msgstr "%s ã¯ã‚·ã‚§ãƒ«çµ„ã¿è¾¼ã¿é–¢æ•°ã§ã™\n" +msgstr "`%s': 特殊シェル組ã¿è¾¼ã¿é–¢æ•°ã§ã™" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "fd %d ã‚’ fd %d ã«è¤‡è£½ã§ãã¾ã›ã‚“" @@ -1024,37 +1096,37 @@ msgstr "識別å­ã¯å‰ç½®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¾ãŸã¯å‰ç½®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆ msgid "missing `)'" msgstr "`)' ãŒã‚りã¾ã›ã‚“" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "構文エラー: オペランドãŒäºˆæœŸã•れã¾ã™" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "構文エラー: 無効ãªè¨ˆç®—演算å­ã§ã™" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (エラーã®ã‚るトークン㯠\"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "無効ãªåŸºåº•ã®æ•°å€¤ã§ã™" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "基底ã®å€¤ãŒå¤§ãã™ãŽã¾ã™" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: å¼ã®ã‚¨ãƒ©ãƒ¼\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: 親ディレクトリã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ファイル記述å­(fd) %d ã‚’ç„¡é…延モードã«å†è¨­å®šã§ãã¾ã›ã‚“" @@ -1069,148 +1141,148 @@ msgstr "æ–°è¦ãƒ•ァイル記述å­(fd) %d ã‚’ bash ã®å…¥åŠ›ã¨ã—ã¦å‰²ã‚Šå½“ msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: æ–°è¦ fd %d ã®ãƒãƒƒãƒ•ã‚¡ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "実行中ã®ã‚¸ãƒ§ãƒ– %2$d ã§ fork ã—㟠pid %1$d ãŒå‡ºç¾ã—ã¾ã—ãŸ" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "プロセスグループ %2$ld ã®ã‚¸ãƒ§ãƒ– %1$d を削除ã—ã¦ã„ã¾ã™" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: プロセス %5ld (%s) ㌠the_pipeline ã«ã‚りã¾ã™" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) ã¯ã¾ã å­˜åœ¨ã—ã¦ã„ã‚‹ã¨ãƒžãƒ¼ã‚¯ã•れã¦ã„ã¾ã™" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ãã®ã‚ˆã†ãª pid ã¯å­˜åœ¨ã—ã¾ã›ã‚“" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "シグナル %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "終了" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "åœæ­¢" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "åœæ­¢ (%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "実行中" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "終了(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "終了 %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "䏿˜Žãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(コアダンプ) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "å­ãƒ—ロセス setpgid (%ld ã‹ã‚‰ %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld ã¯ã“ã®ã‚·ã‚§ãƒ«ã®å­ãƒ—ロセスã§ã¯ã‚りã¾ã›ã‚“" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: プロセス %ld ã®è¨˜éŒ²ãŒã‚りã¾ã›ã‚“" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: ジョブ %d ã¯åœæ­¢ã—ã¦ã„ã¾ã™" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: ジョブã¯çµ‚了ã—ã¾ã—ãŸ" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: ジョブ %d ã¯ã™ã§ã«ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å‹•作ã—ã¦ã„ã¾ã™" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: ä¸å®šã®ãƒ–ロックをé¿ã‘ã‚‹ãŸã‚ã« WNOHANG をオンã«ã—ã¾ã—ãŸã€‚" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: %d 行: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (コアダンプ)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp ãŒå¤±æ•—ã—ã¾ã—ãŸ" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "端末プロセスグループを設定ã§ãã¾ã›ã‚“ (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "ã“ã®ã‚·ã‚§ãƒ«ã§ã¯ã‚¸ãƒ§ãƒ–制御ãŒç„¡åйã«ãªã£ã¦ã„ã¾ã™" @@ -1264,17 +1336,17 @@ msgstr "realloc: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„ msgid "realloc: start and end chunk sizes differ" msgstr "realloc: é–‹å§‹ã¨çµ‚了ã®å¡Šã®å¤§ãã•ãŒç•°ãªã£ã¦ã„ã¾ã™" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: FIND_ALLOC ã§å‰²ã‚Šå½“ã¦ãƒ†ãƒ¼ãƒ–ルãŒã„ã£ã±ã„ã§ã™\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p æ—¢ã«ãƒ†ãƒ¼ãƒ–ル上ã§ã¯å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p テーブル上ã§ã¯æ—¢ã«è§£æ”¾ã•れã¦ã„ã¾ã™\n" @@ -1298,7 +1370,7 @@ msgstr "%s: 無効ãªã‚µãƒ¼ãƒ“スã§ã™" msgid "%s: bad network path specification" msgstr "%s: ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ‘ス指定ã«èª¤ã‚ŠãŒã‚りã¾ã™" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æ“作ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" @@ -1335,225 +1407,260 @@ msgstr "æ–°ã—ã„メール㌠$_ ã«ã‚りã¾ã™" msgid "The mail in %s has been read\n" msgstr "%s ã®ãƒ¡ãƒ¼ãƒ«ã¯æ—¢èª­ã§ã™\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "構文エラー: 数値ã®å¼ãŒå¿…è¦ã§ã™" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "構文エラー: 予期ã—ãªã„ `;' ã§ã™" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "構文エラー: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: 誤ã£ãŸæŒ‡å®šã®ç¨®é¡ž %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "ヒアドキュメント㮠%d 行目ã§ãƒ•ァイル終了 (EOF) ã«é”ã—ã¾ã—㟠(`%s' ãŒå¿…è¦)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: リダイレクト指定 `%d' ã¯ç¯„囲外ã§ã™" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "対応ã™ã‚‹ `%c' を探索中ã«äºˆæœŸã—ãªã„ファイル終了 (EOF) ã§ã™" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "`]]' を探索中ã«äºˆæœŸã—ãªã„ファイル終了 (EOF) ã§ã™" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "æ¡ä»¶å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼: 予期ã—ãªã„トークン `%s' ã§ã™" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "æ¡ä»¶å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "予期ã—ãªã„トークン `%s' ã§ã™ã€‚`)' ãŒäºˆæœŸã•れã¾ã™" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "`)' ãŒäºˆæœŸã•れã¾ã™" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "æ¡ä»¶å˜é …演算å­ã«äºˆæœŸã—ãªã„引数 `%s' ã§ã™" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "æ¡ä»¶å˜é …演算å­ã«äºˆæœŸã—ãªã„引数ã§ã™" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "`%s` ã¯äºˆæœŸã—ãªã„トークンã§ã™ã€‚æ¡ä»¶äºŒé …演算å­ãŒäºˆæœŸã•れã¾ã™" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "æ¡ä»¶äºŒé …演算å­ãŒäºˆæœŸã•れã¾ã™" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "æ¡ä»¶äºŒé …演算å­ã«äºˆæœŸã—ãªã„引数 `%s' ã§ã™" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "æ¡ä»¶äºŒé …演算å­ã«äºˆæœŸã—ãªã„引数ã§ã™" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン `%c' ãŒã‚りã¾ã™" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン `%s' ãŒã‚りã¾ã™" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン %d ãŒã‚りã¾ã™" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "予期ã—ãªã„トークン `%s' å‘¨è¾ºã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "`%s' å‘¨è¾ºã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚りã¾ã™" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "構文エラー: 予期ã—ãªã„ファイル終了 (EOF) ã§ã™" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "構文エラー" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "シェルã‹ã‚‰è„±å‡ºã™ã‚‹ã«ã¯ \"%s\" を使用ã—ã¦ãã ã•ã„。\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "対応ã™ã‚‹ `)' を探索中ã«äºˆæœŸã—ãªã„ファイル終了(EOF)ã§ã™" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: 関数 `%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: 誤ã£ãŸæŽ¥ç¶š `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: 無効ãªãƒ•ァイル記述å­ã§ã™" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL ファイルãƒã‚¤ãƒ³ã‚¿ã§ã™" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': ç„¡åŠ¹ãªæ›¸å¼æ–‡å­—ã§ã™" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "ファイル記述å­ãŒç¯„囲外ã§ã™" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 曖昧ãªãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ã™" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 存在ã™ã‚‹ãƒ•ァイルを上書ãã§ãã¾ã›ã‚“" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: 制é™ã•れã¦ã„ã¾ã™: 出力をリダイレクト出æ¥ã¾ã›ã‚“" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "ヒアドキュメント用一時ファイルを作æˆã§ãã¾ã›ã‚“: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ (fd) を変数ã«è¨­å®šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãŒç„¡åйãªå ´åˆ /dev/(tcp|udp)/host/port ã¯ã‚µãƒãƒ¼ãƒˆã•れã¾ã›ã‚“" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "リダイレクトエラー: ファイル記述å­ã‚’複製ã§ãã¾ã›ã‚“" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "/tmp ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。作æˆã—ã¦ãã ã•ã„!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp ã¯æœ‰åйãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: 無効ãªã‚ªãƒ—ション" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "ファイル記述å­(fd) %d ã‚’ç„¡é…延モードã«å†è¨­å®šã§ãã¾ã›ã‚“" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "ファイル記述å­(fd) %d ã‚’ç„¡é…延モードã«å†è¨­å®šã§ãã¾ã›ã‚“" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: ディレクトリã§ã™" + +#: shell.c:1777 msgid "I have no name!" msgstr "ç§ã¯åå‰ãŒã‚りã¾ã›ã‚“!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1562,41 +1669,50 @@ msgstr "" "使用法:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU å½¢å¼ã®é•·ã„オプション:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "シェルオプション:\n" -#: shell.c:1835 -#, fuzzy +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-irsD ã¾ãŸã¯ -c command ã¾ãŸã¯ -O shopt_option\t\t(起動時ã®ã¿)\n" +msgstr "\t-ilrsD, -c command ã¾ãŸã¯ -O shopt_option\t\t(起動時ã®ã¿)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ã¾ãŸã¯ -o option\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "シェルオプションã®è©³ç´°ã«ã¤ã„ã¦ã¯ `%s -c \"help set\"'ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。\n" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "シェル組ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã«ã¤ã„ã¦ã¯ `%s -c help' ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "ãƒã‚°å ±å‘Šã‚’ã™ã‚‹å ´åˆã¯ `bashbug' コマンドを使用ã—ã¦ãã ã•ã„。\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ç„¡åŠ¹ãªæ“作ã§ã™" @@ -1770,88 +1886,103 @@ msgstr "䏿˜Žãªã‚·ã‚°ãƒŠãƒ«ç•ªå·" msgid "Unknown Signal #%d" msgstr "䏿˜Žãªã‚·ã‚°ãƒŠãƒ«ç•ªå· %d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "誤ã£ãŸä»£å…¥: é–‰ã˜ã‚‹ `%s' ㌠%s ã«å­˜åœ¨ã—ã¾ã›ã‚“" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: リストをé…列è¦ç´ ã«å‰²ã‚Šå½“ã¦ã§ãã¾ã›ã‚“" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "プロセス代入ã§ã¯ãƒ‘イプを作æˆã§ãã¾ã›ã‚“" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "プロセス代入ã§ã¯å­ãƒ—ロセスを作æˆã§ãã¾ã›ã‚“" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "åå‰ä»˜ãパイプ %s を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "åå‰ä»˜ãパイプ %s を書ãè¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "åå‰ä»˜ãパイプ %s をファイル記述å­(fd) %d ã¨ã—ã¦è¤‡è£½ã§ãã¾ã›ã‚“" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "誤ã£ãŸä»£å…¥: %s ã«é–‰ã˜ã‚‹ \"`\" ãŒã‚りã¾ã›ã‚“" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "コマンド代入ã§ã¯ãƒ‘イプを作æˆã§ãã¾ã›ã‚“" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "コマンド代入ã§ã¯å­ãƒ—ロセスを作æˆã§ãã¾ã›ã‚“" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: パイプを fd 1 ã¨ã—ã¦è¤‡è£½ã§ãã¾ã›ã‚“" -#: subst.c:5837 subst.c:8050 -#, fuzzy, c-format +#: subst.c:6580 subst.c:8939 +#, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: %s: トレースファイル記述å­ã¨ã—ã¦ç„¡åйãªå€¤ã§ã™" +msgstr "%s: åå‰å‚ç…§ã¨ã—ã¦ç„¡åйãªå¤‰æ•°ã§ã™" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: パラメータ㌠null ã¾ãŸã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: substring expression < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: 誤ã£ãŸä»£å…¥ã§ã™" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: 無効ãªè¡Œæ•°ã§ã™" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "`%s': 無効ãªã‚¨ã‚¤ãƒªã‚¢ã‚¹åã§ã™" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: パラメータ㌠null ã¾ãŸã¯è¨­å®šã•れã¦ã„ã¾ã›ã‚“" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: substring expression < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ã“ã®æ–¹æ³•ã§å‰²å½“ã¯ã§ãã¾ã›ã‚“" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚·ã‚§ãƒ«ã§ã¯å¼·åˆ¶çš„ã«æ•°å€¤ä»£å…¥ã¨ã—ã¦è©•価ã•れã¾ã™" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "誤ã£ãŸä»£å…¥: %s ã«é–‰ã˜ã‚‹ \"`\" ãŒã‚りã¾ã›ã‚“" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "一致ã—ã¾ã›ã‚“: %s" @@ -1865,39 +1996,39 @@ msgstr "引数ãŒäºˆæœŸã•れã¾ã™" msgid "%s: integer expression expected" msgstr "%s: æ•´æ•°ã®å¼ãŒäºˆæœŸã•れã¾ã™" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "`)' ãŒäºˆæœŸã•れã¾ã™" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "`)' ãŒäºˆæœŸã•れã¾ã™ãŒã€è¦‹ã¤ã‹ã£ãŸã®ã¯ %s ã§ã™" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: å˜é …演算å­ãŒäºˆæœŸã•れã¾ã™" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: 二項演算å­ãŒäºˆæœŸã•れã¾ã™" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "`]'ãŒã‚りã¾ã›ã‚“" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "無効ãªã‚·ã‚°ãƒŠãƒ«ç•ªå·" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] ã«èª¤ã£ãŸå€¤ãŒã‚りã¾ã™: %p" -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1905,86 +2036,86 @@ msgstr "" "run_pending_traps: シグナルãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã¯ SIG_DFLã§ã™ã€‚, %d (%s) を自身ã«å†é€ã—" "ã¾ã™ã€‚" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: 誤ã£ãŸã‚·ã‚°ãƒŠãƒ« %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "`%s' ã®é–¢æ•°å®šç¾©ã‚’インãƒãƒ¼ãƒˆä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "シェルレベル (%d) ã¯é«˜ã™ãŽã¾ã™ã€‚1ã«å†è¨­å®šã•れã¾ã—ãŸ" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ç¾åœ¨ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¯é–¢æ•°ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã¯ã‚りã¾ã›ã‚“" -#: variables.c:2247 -#, fuzzy, c-format +#: variables.c:2432 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: ãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ (fd) を変数ã«è¨­å®šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" +msgstr "%s: 変数ãŒåˆæœŸåŒ–ã•れã¦ã„ãªã„ã‹ã‚‚ã—れã¾ã›ã‚“" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: åå‰å‚ç…§ã¨ã—ã¦ç„¡åйãªå¤‰æ•°ã§ã™" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ç¾åœ¨ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¯é–¢æ•°ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã¯ã‚りã¾ã›ã‚“" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s 㯠null ã® exportstr ã‚’æŒã£ã¦ã„ã¾ã™" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s ã«å¯¾ã™ã‚‹ exportstr ã§ %1$d ã¯ç„¡åŠ¹ãªæ–‡å­—ã§ã™" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s ã«å¯¾ã™ã‚‹ exportstr ã« `=' ãŒã‚りã¾ã›ã‚“" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: shell_variables ã®å…ˆé ­ã§ã™ã€‚関数コンテキストã§ã¯ã‚りã¾ã›ã‚“" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: global_variables コンテキストã§ã¯ã‚りã¾ã›ã‚“" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables ã®å…ˆé ­ã§ã™ã€‚一時環境スコープã§ã¯ã‚りã¾ã›ã‚“" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ファイルã¨ã—ã¦é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: トレースファイル記述å­ã¨ã—ã¦ç„¡åйãªå€¤ã§ã™" -#: variables.c:5307 -#, fuzzy, c-format +#: variables.c:5669 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s ãŒç¯„囲外ã§ã™" +msgstr "%s: %s: 値ã®äº’æ›æ€§ãŒç¯„囲外ã§ã™" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2013 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2000,19 +2131,12 @@ msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s (%s)\n" #: version.c:91 version2.c:91 -#, fuzzy 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.\n" +msgstr "This is free software; you are free to change and redistribute it." #: version.c:92 version2.c:92 -#, fuzzy msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "There is NO WARRANTY, to the extent permitted by law.\n" - -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +msgstr "There is NO WARRANTY, to the extent permitted by law." #: xmalloc.c:91 #, c-format @@ -2034,130 +2158,116 @@ msgstr "%s: %s:%d: %lu ãƒã‚¤ãƒˆã‚’割当ã§ãã¾ã›ã‚“ (%lu ãƒã‚¤ãƒˆã‚’割当 msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: %lu ãƒã‚¤ãƒˆã‚’割当ã§ãã¾ã›ã‚“" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [name[=value] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] name [name ...]" -#: builtins.c:51 -#, fuzzy +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function ã¾ãŸã¯ readline-command]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [shell-builtin [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [expr]" -#: builtins.c:64 -#, fuzzy -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|[-P [-e]]] [dir]" - #: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dir]" + +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" -#: builtins.c:76 -#, fuzzy -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrtux] [-p] [name[=value] ...]" - #: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..." +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" #: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [option] name[=value] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f filename] [name ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts optstring name [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e ename] [-lnr] [first] [last] ã¾ãŸã¯ fc -s [pat=rep] [command]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [job_spec]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [job_spec ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p pathname] [-dt] [name ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [pattern ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2165,15 +2275,16 @@ msgstr "" "history [-c] [-d offset] [n] ã¾ãŸã¯ history -anrw [filename] ã¾ãŸã¯ history -" "ps arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] ã¾ãŸã¯ jobs -x command [args]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [jobspec ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2181,11 +2292,11 @@ msgstr "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... ã¾ãŸã¯ kill -l " "[sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let 引数 [引数 ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2193,103 +2304,96 @@ msgstr "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -#: builtins.c:142 -#, fuzzy -msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [name ...]" - #: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [name ...]" + +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [name[=value] ...] ã¾ãŸã¯ export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [name[=value] ...] ã¾ãŸã¯ readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source filename [arguments]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". filename [arguments]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [expr]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] signal_spec ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" -#: builtins.c:175 -#, fuzzy +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "wait [id]" +msgstr "wait [-n] [id ...]" -#: builtins.c:179 -#, fuzzy +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [pid]" +msgstr "wait [pid ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NAME [in WORDS ... ;] do COMMANDS; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] pipeline" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2297,63 +2401,63 @@ msgstr "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while COMMANDS; do COMMANDS; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until COMMANDS; do COMMANDS; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NAME] command [redirections]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function name { COMMANDS ; } ã¾ãŸã¯ name () { COMMANDS ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ COMMANDS ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "job_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( expression ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ expression ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "変数 - 変数ã®åå‰ã¨ãã®æ„味" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | dir]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [optname ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [arguments]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2363,27 +2467,29 @@ msgstr "" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" 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 +#: builtins.c:239 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]" - #: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" + +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2391,7 +2497,8 @@ msgstr "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2403,7 +2510,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2428,12 +2535,13 @@ msgstr "" " alias ã¯ä¸Žãˆã‚‰ã‚ŒãŸåå‰ã§ã‚¨ã‚¤ãƒªã‚¢ã‚¹ãŒå®šç¾©ã•れãªã‹ã£ãŸå ´åˆã‚’除ã true ã‚’è¿”" "ã—ã¾ã™ã€‚" -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2444,7 +2552,7 @@ msgstr "" " \n" " åå‰ãŒã‚¨ã‚¤ãƒªã‚¢ã‚¹ã«å­˜åœ¨ã—ãªã„å ´åˆã‚’除ã true ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:289 +#: builtins.c:291 #, fuzzy msgid "" "Set Readline key bindings and variables.\n" @@ -2479,49 +2587,54 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -"Readline ã®ã‚­ãƒ¼ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ã¨å¤‰æ•°ã‚’設定ã—ã¾ã™ã€‚\n" +"Readline ã®ã‚­ãƒ¼å‰²ã‚Šå½“ã¦ã¨å¤‰æ•°ã‚’設定ã—ã¾ã™ã€‚\n" " \n" -" キーシーケンスを Readline 関数ã¾ãŸã¯ãƒžã‚¯ãƒ­ã«é–¢é€£ä»˜ã‘を行ã†ã‹ã€Readline\n" +" キーシーケンスを Readline 関数ã¾ãŸã¯ãƒžã‚¯ãƒ­ã«å‰²ã‚Šå½“ã¦ã‚’行ã†ã‹ã€Readline\n" " 変数を設定ã—ã¾ã™ã€‚オプションãŒç„¡ã„å¼•æ•°ã®æ§‹æ–‡ã¯ ~/.inputrc ã®æ§‹æ–‡ã¨\n" -" åŒæ§˜ã§ã™ã€‚ã—ã‹ã—ã€å˜ä¸€ã®å¼•æ•°ã¨ã—ã¦ä¸Žãˆãªã‘れã°ãªã‚Šã¾ã›ã‚“。\n" +" åŒã˜ã§ã™ã€‚ã—ã‹ã—ã€å˜ä¸€ã®å¼•æ•°ã¨ã—ã¦ä¸Žãˆãªã‘れã°ãªã‚Šã¾ã›ã‚“。\n" " 例: bind '\"\\C-x\\C-r\": re-read-init-file'\n" -" \n" +"\n" +" Options:\n" " オプション:\n" " -m keymap ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã®é–“ã®ã‚­ãƒ¼ãƒžãƒƒãƒ—ã¨ã—㦠KEYMAP を使用ã™" "る。\n" -" 利用å¯èƒ½ãªã‚­ãƒ¼ãƒžãƒƒãƒ—㯠emacs, emacs-standard, emacs-" -"meta,\n" +" 利用å¯èƒ½ãªã‚­ãƒ¼ãƒžãƒƒãƒ—å㯠emacs, emacs-standard, " +"emacs-meta,\n" " emacs-ctlx, vi, vi-move, vi-command, ãŠã‚ˆã³ vi-" -"insert。\n" -" -l 関数å一覧を表示ã—ã¾ã™ã€‚\n" -" -P 関数åãŠã‚ˆã³ã‚­ãƒ¼ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ä¸€è¦§ã‚’表示ã—ã¾ã™ã€‚\n" -" -p 関数åã¨ã‚­ãƒ¼ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ã‚’入力ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãª\n" -" å½¢å¼ã§ä¸€è¦§è¡¨ç¤ºã—ã¾ã™ã€‚\n" +"insertã§ã™ã€‚\n" +" -l 関数å一覧を表示ã™ã‚‹ã€‚\n" +" -P 関数åãŠã‚ˆã³ã‚­ãƒ¼å‰²ã‚Šå½“ã¦ä¸€è¦§ã‚’表示ã™ã‚‹ã€‚\n" +" -p 入力ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§ã€é–¢æ•°åã¨ã‚­ãƒ¼å‰²ã‚Šå½“ã¦ã‚’" +"一覧\n" +" 表示ã™ã‚‹\n" " -S マクロを起動ã™ã‚‹ã‚­ãƒ¼ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã¨ãã®å€¤ã‚’一覧表示ã™" "ã‚‹\n" " -s 入力ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§ã€ãƒžã‚¯ãƒ­ã‚’èµ·å‹•ã™ã‚‹\n" " キーシーケンスã¨ãã®å€¤ã‚’一覧表示ã™ã‚‹\n" -" -V 変数åã¨å€¤ã®ä¸€è¦§ã‚’表示ã—ã¾ã™ã€‚\n" -" -v 変数åã¨å€¤ã‚’入力ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§ä¸€è¦§\n" -" 表示ã—ã¾ã™ã€‚\n" -" -q function-name 関数åãŒã©ã®ã‚­ãƒ¼ã«ã‚ˆã£ã¦èµ·å‹•ã•ã‚Œã‚‹ã‹æŽ¢ç´¢ã—ã¾ã™\n" -" -u function-name 関数åã«ãƒã‚¤ãƒ³ãƒ‰ã•れãŸã™ã¹ã¦ã®ã‚­ãƒ¼ã‚’解除ã—ã¾ã™ã€‚\n" -" -r keyseq KEYSEQ ã«å¯¾ã™ã‚‹ãƒã‚¤ãƒ³ãƒ‰ã‚’解除ã—ã¾ã™ã€‚\n" -" -f filename FILENAME ã‹ã‚‰ã‚­ãƒ¼ãƒã‚¤ãƒ³ãƒ‰ã‚’読ã¿è¾¼ã¿ã¾ã™ã€‚\n" +" -V 変数åã¨å€¤ã®ä¸€è¦§ã‚’表示ã™ã‚‹\n" +" -v 入力ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§ã€å¤‰æ•°åã¨å€¤ã‚’一覧\n" +" 表示ã™ã‚‹\n" +" -q function-name 関数åãŒã©ã®ã‚­ãƒ¼ã«ã‚ˆã£ã¦èµ·å‹•ã•ã‚Œã‚‹ã‹æŽ¢ç´¢ã™ã‚‹\n" +" -u function-name 関数åã«ãƒã‚¤ãƒ³ãƒ‰ã•れãŸã™ã¹ã¦ã®ã‚­ãƒ¼ã‚’解除ã™ã‚‹\n" +" -r keyseq KEYSEQ ã«å¯¾ã™ã‚‹å‰²ã‚Šå½“ã¦ã‚’解除ã™ã‚‹\n" +" -f filename FILENAME ã‹ã‚‰ã‚­ãƒ¼ãƒã‚¤ãƒ³ãƒ‰ã‚’読ã¿è¾¼ã‚€\n" " -x keyseq:shell-command\tKEYSEQ ãŒå…¥åŠ›ã•ã‚ŒãŸæ™‚ã« SHELL-COMMAND \n" -" \t\t\t\tãŒå®Ÿè¡Œã•れるよã†ã«ã—ã¾ã™ã€‚\n" +" \t\t\t\tãŒå®Ÿè¡Œã•れるよã†ã«ã™ã‚‹\n" +" -X\t\t 入力ã¨ã—ã¦å†åˆ©ç”¨å¯èƒ½ãªå½¢å¼ã§ -x ã«ã‚ˆã£ã¦å‰²ã‚Šå½“ã¦\n" +" られãŸã‚­ãƒ¼ã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã¨ã‚³ãƒžãƒ³ãƒ‰ã‚’一覧表示ã™ã‚‹\n" " \n" " 終了ステータス:\n" " bind ã¯è§£é‡ˆã§ããªã„ã‚ªãƒ—ã‚·ãƒ§ãƒ³ãŒæ¸¡ã•れãŸå ´åˆãŠã‚ˆã³ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆ\n" " を除ã 0 ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2540,7 +2653,7 @@ msgstr "" " 終了ステータス:\n" " N ãŒ1未満ã®å ´åˆã‚’除ãã€çµ‚了ステータス㯠0 ã§ã™ã€‚" -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2558,7 +2671,7 @@ msgstr "" " 終了ステータス:\n" " N ãŒ1未満ã®å ´åˆã‚’除ãã€çµ‚了ステータス㯠0 ã§ã™ã€‚" -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2581,7 +2694,7 @@ msgstr "" " シェル組ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚シェル組ã¿è¾¼ã¿ã‚³ãƒž\n" " ンドãŒç„¡ã„å ´åˆã¯ false ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2609,7 +2722,7 @@ msgstr "" " 終了ステータス:\n" " シェルãŒé–¢æ•°ã‚’実行ã§ããªã„ã‹å¼ EXPR ãŒç„¡åйãªå ´åˆã‚’除ã 0 ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:385 +#: builtins.c:387 #, fuzzy msgid "" "Change the shell working directory.\n" @@ -2633,16 +2746,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2662,9 +2775,9 @@ msgstr "" " 変数 CDPATH 㯠DIR ã‚’å«ã‚“ã§ã„る検索パスを定義ã—ã¾ã™ã€‚CDPATH ã«ã¯ã‚³ãƒ­ãƒ³" "(:)\n" " ã§åŒºåˆ‡ã‚‰ã‚ŒãŸä»£æ›¿ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåを指定ã—ã¾ã™ã€‚\n" -" NULL ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã¯ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¨åŒç¾©ã§ã™ã€‚ DIR ãŒ\n" +" 値ãŒãªã„ディレクトリåã¯ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¨åŒç¾©ã§ã™ã€‚ DIR ãŒ\n" " スラッシュ (/) ã‹ã‚‰å§‹ã¾ã‚‹å ´åˆã¯ CDPATH ã¯ä½¿ç”¨ã•れã¾ã›ã‚“。\n" -"\n" +" \n" " ディレクトリãŒè¦‹ã¤ã‹ã‚‰ãªãã€ã‹ã¤ `cdabl_vars' シェルオプションãŒè¨­å®šã•れ" "ã¦\n" " ã„ã‚‹å ´åˆã€å¼•æ•°ã¯å¤‰æ•°åã¨ã—ã¦æ‰±ã‚れã¾ã™ã€‚ãã®å¤‰æ•°ã«å€¤ãŒã‚ã‚‹å ´åˆã€ãã®å€¤" @@ -2672,26 +2785,37 @@ msgstr "" " DIR ã¨ã—ã¦æ‰±ã‚れã¾ã™ã€‚\n" " \n" " オプション:\n" -" -L\tシンボリックリンクを強制的ã«ãŸã©ã‚Šã¾ã™\n" -" -P\tシンボリックリンクをãŸã©ã‚‰ãšç‰©ç†æ§‹é€ ã‚’利用ã—ã¾ã™\n" +" -L\tシンボリックリンクを強制的ã«ãŸã©ã‚Šã¾ã™: resolve symbolic links " +"in\n" +" DIR after processing instances of `..'\n" +" -P\tシンボリックリンクをãŸã©ã‚‰ãšç‰©ç†æ§‹é€ ã‚’利用ã—ã¾ã™: resolve\n" +" symbolic links in DIR before processing instances\n" +" \tof `..'\n" " -e\t-P オプションãŒä¸Žãˆã‚‰ã‚Œã€ã‹ã¤ã€ç¾åœ¨ã®ä½œæ¥­ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒæ­£ã—ã\n" -" \t決定ã§ããªã„å ´åˆã€çµ‚了ステータス㌠0 以外ã§çµ‚了ã—ã¾ã™\n" +" 決定ã§ããªã„å ´åˆã€çµ‚了ステータス㌠0 以外ã§çµ‚了ã—ã¾ã™\n" +" -@ on systems that support it, present a file with extended " +"attributes\n" +" as a directory containing the file attributes\n" " \n" " デフォルトã§ã¯ `-L' ãŒæŒ‡å®šã•れãŸå ´åˆã¨åŒæ§˜ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã‚’ãŸã©ã‚Šã¾" -"ã™\n" +"ã™ã€‚\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" " \n" " 終了ステータス:\n" " ディレクトリを変更ã—ãŸå ´åˆã€ãŠã‚ˆã³ -P ãŒä½¿ç”¨ã•れã¦ã„る時㫠$PWD ãŒæ­£ã—" "ã\n" " 設定ã•れãŸå ´åˆã¯ 0ã€ãれ以外㯠0 以外ã®å€¤ã§ã™ã€‚" -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2713,7 +2837,7 @@ msgstr "" " 無効ãªã‚ªãƒ—ションã¾ãŸã¯ã‚«ãƒ¬ãƒ³ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’読ã¿è¾¼ã‚ãªã„å ´åˆã‚’除ã\n" " 0ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2729,7 +2853,7 @@ msgstr "" " 終了ステータス:\n" " å¸¸ã«æˆåŠŸã§ã™ã€‚" -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2741,7 +2865,7 @@ msgstr "" " 終了ステータス:\n" " å¸¸ã«æˆåŠŸã§ã™ã€‚" -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2753,7 +2877,8 @@ msgstr "" " 終了ステータス:\n" " 常ã«å¤±æ•—ã§ã™ã€‚" -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2763,10 +2888,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2787,7 +2912,7 @@ msgstr "" " COMMAND ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚ã¾ãŸã¯ COMMAND ãŒè¦‹ã¤ã‹ã‚‰ãªã„時ã«å¤±æ•—" "ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:487 +#: builtins.c:490 #, fuzzy msgid "" "Set variable values and attributes.\n" @@ -2798,9 +2923,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2833,7 +2958,7 @@ msgstr "" " ã™ã¹ã¦ã®å¤‰æ•°ã«é–¢ã™ã‚‹å±žæ€§ã¨å€¤ã‚’表示ã—ã¾ã™ã€‚\n" " \n" " オプション:\n" -" -f\t関数åã¨é–¢æ•°å®šç¾©ã«ãªã‚‹ã‚ˆã†ã«å‹•作ã¨è¡¨ç¤ºã‚’制é™ã™ã‚‹\n" +" -f\t関数åã¨é–¢æ•°å®šç¾©ã«è¡¨ç¤ºã‚’制é™ã™ã‚‹\n" " -F\t関数åã®ã¿è¡¨ç¤ºã™ã‚‹ã‚ˆã†ã«åˆ¶é™ã™ã‚‹ (デãƒãƒƒã‚°ä¸­ã¯è¡Œç•ªå·ã¨\n" " \tソースファイルも追加ã•れる)\n" " -g\tシェル関数内ã§ä½¿ç”¨ã•ã‚ŒãŸæ™‚ã«å¤§åŸŸå¤‰æ•°ã‚’作æˆã™ã‚‹ã€‚ãれ以\n" @@ -2845,6 +2970,7 @@ msgstr "" " -A\tNAME を連想é…列ã«ã™ã‚‹(サãƒãƒ¼ãƒˆã•れã¦ã„ã‚‹å ´åˆ)\n" " -i\tNAME ã«`æ•´æ•°åž‹'ã®å±žæ€§ã‚’設定ã™ã‚‹\n" " -l\tNAME ã®è¨­å®šæ™‚ã«å€¤ã‚’å°æ–‡å­—ã«å¤‰æ›ã™ã‚‹\n" +" -n\tNAME ã®å€¤ãŒå¤‰æ•°åã®å‚ç…§ã¨ãªã‚‹ã‚ˆã†ã«ã™ã‚‹\n" " -r\tNAME を読ã¿å–り専用ã«ã™ã‚‹\n" " -t\tNAME ã« `trace' 属性を設定ã™ã‚‹\n" " -u\tNAME 設定時ã«å€¤ã‚’大文字ã«è¨­å®šã™ã‚‹\n" @@ -2854,7 +2980,7 @@ msgstr "" " \n" " 整数属性を与ãˆã‚‰ã‚ŒãŸå¤‰æ•°ã¯å€¤ã‚’割り当ã¦ã‚‰ã‚ŒãŸæ™‚ã«ã€æ•°å€¤ã¨ã—ã¦è©•価ã•れ\n" " ã¾ã™ã€‚(`let' コマンドå‚ç…§ã—ã¦ãã ã•ã„。)\n" -" \n" +"\n" " 関数内ã§ä½¿ç”¨ã•れãŸå ´åˆã¯ `local' コマンドを使用ã—ãŸæ™‚ã¨åŒæ§˜ã« " "`declare' \n" " 㯠NAME をローカル変数ã«ã—ã¾ã™ã€‚`-g' オプションã¯ã“ã®å‹•作を抑止ã—ã¾ã™ã€‚\n" @@ -2862,18 +2988,18 @@ msgstr "" " 終了ステータス:\n" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚ŒãŸã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "変数ã®å€¤ãŠã‚ˆã³å±žæ€§ã‚’設定ã—ã¾ã™ã€‚\n" " \n" " æ—§å¼ã§ã™ã€‚`help declare'ã‚’å‚ç…§ã—ã¦ãã ã•ã„。" -#: builtins.c:535 -#, fuzzy +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2889,20 +3015,19 @@ msgid "" msgstr "" "ローカル変数を定義ã—ã¾ã™ã€‚\n" " \n" -" NAME ã¨ã„ã†åå‰ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã‚’定義ã—値を VALUE ã«è¨­å®šã—ã¾ã™ã€‚" -"`declare'ã¨\n" -" åŒã˜ã‚ªãƒ—ションをå—ã‘付ã‘ã¾ã™ã€‚\n" +" NAME ã¨ã„ã†åå‰ã®ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã‚’定義ã—値を VALUE ã«è¨­å®šã—ã¾ã™ã€‚OPTION ã¯\n" +" `declare'ã¨åŒã˜ã™ã¹ã¦ã®ã‚ªãƒ—ションをå—ã‘付ã‘ã¾ã™ã€‚\n" " \n" -" ローカル変数ã¯ã‚·ã‚§ãƒ«é–¢æ•°ã®ä¸­ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™ã€‚宣言ã•れãŸé–¢æ•°ã®ä¸­ãŠã‚ˆã³" -"ãã“\n" -" ã‹ã‚‰å‘¼ã³å‡ºã•れãŸé–¢æ•°ã®ã¿ã§å‚ç…§ã§ãã¾ã™ã€‚\n" +" 局所変数ã¯ã‚·ã‚§ãƒ«é–¢æ•°ã®ä¸­ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™ã€‚宣言ã•れãŸé–¢æ•°ã®ä¸­ãŠã‚ˆã³ã" +"ã®\n" +" å­é–¢æ•°ã®ã¿ã§å‚ç…§ã§ãã¾ã™ã€‚\n" " \n" " 終了ステータス:\n" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã™ã‚‹ã€ã¾ãŸã¯ã‚·ã‚§ãƒ«ãŒé–¢æ•°ã‚’実行" "ã§ããªã„\n" " å ´åˆã‚’é™¤ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:552 +#: builtins.c:555 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2929,16 +3054,17 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" "å¼•æ•°ã‚’æ¨™æº–å‡ºåŠ›ã«æ›¸ã出ã—ã¾ã™ã€‚\n" " \n" -" 引数 ARG ã‚’æœ€å¾Œã«æ”¹è¡Œã‚’加ãˆã¦æ¨™æº–出力ã«è¡¨ç¤ºã—ã¾ã™ã€‚\n" +" 引数 ARG ã‚’å˜ä¸€ç©ºç™½æ–‡å­—ã§åŒºåˆ‡ã‚Šã€æœ€å¾Œã«æ”¹è¡Œã‚’加ãˆã¦æ¨™æº–出力ã«è¡¨ç¤ºã—ã¾" +"ã™ã€‚\n" " \n" " オプション:\n" " -n\tæœ€å¾Œã«æ”¹è¡Œã‚’加ãˆãªã„\n" @@ -2950,6 +3076,7 @@ msgstr "" " \\b\tãƒãƒƒã‚¯ã‚¹ãƒšãƒ¼ã‚¹\n" " \\c\t以é™ã®å‡ºåŠ›ã‚’æŠ‘æ­¢\n" " \\e\tエスケープ文字\n" +" \\E\tエスケープ文字\n" " \\f\tフォームフィード\n" " \\n\t改行\n" " \\r\tキャリッジリターン\n" @@ -2958,11 +3085,11 @@ msgstr "" " \\\\\tãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥\n" " \\0nnn\tASCII コード㌠NNN (8進数) ã®æ–‡å­—。 NNN ã¯0ã‹ã‚‰3個ã®8進数字\n" " \\xHH\t値㌠HH (16進数) ã®8ビット文字。HH 㯠1 ã¾ãŸã¯2個ã®16進数字\n" -" \n" +"\n" " 終了ステータス:\n" " 書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2984,7 +3111,7 @@ msgstr "" " 終了ステータス:\n" " 書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3036,7 +3163,7 @@ msgstr "" " 終了ステータス:\n" " NAME ãŒçµ„ã¿è¾¼ã¿é–¢æ•°ã§ã¯ãªã„ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3056,7 +3183,7 @@ msgstr "" " コマンドã®çµ‚了ステータスを返ã—ã¾ã™ã€‚コマンド㌠null ã®å ´åˆã¯æˆåŠŸã‚’\n" " è¿”ã—ã¾ã™ã€‚" -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3133,7 +3260,8 @@ msgstr "" " オプションãŒè¦‹ã¤ã‹ã£ãŸå ´åˆã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚オプションã®çµ‚ã‚り\n" " ã«åˆ°é”ã™ã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸæ™‚ã«å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3144,8 +3272,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3175,7 +3303,7 @@ msgstr "" " COMMAND ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾" "ã™ã€‚" -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3187,7 +3315,7 @@ msgstr "" " 終了ステータス N ã§ã‚·ã‚§ãƒ«ã‚’終了ã—ã¾ã™ã€‚ N を指定ã—ãªã„å ´åˆã¯\n" " 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータスã«ãªã‚Šã¾ã™ã€‚" -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3201,7 +3329,7 @@ msgstr "" "ル\n" " 内ã§ç„¡ã„å ´åˆã¯ã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3261,7 +3389,7 @@ msgstr "" "0 \n" " 以外ã®å€¤ã«ãªã‚Šã¾ã™ã€‚" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3286,7 +3414,7 @@ msgstr "" "ãŒ\n" " 発生ã—ãŸæ™‚ã«å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3310,7 +3438,7 @@ msgstr "" " 終了ステータス:\n" " ã‚¸ãƒ§ãƒ–åˆ¶å¾¡ãŒæœ‰åйã«ãªã£ã¦ã„ãªã„ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:784 +#: builtins.c:787 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3320,15 +3448,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3354,7 +3482,8 @@ msgstr "" " 終了ステータス:\n" " NAME ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ã€ç„¡åйãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3366,7 +3495,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3394,7 +3523,8 @@ msgstr "" " PATTERN ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ç„¡åйãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾" "ã™ã€‚" -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3403,23 +3533,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3460,7 +3590,7 @@ msgstr "" " 終了ステータス:\n" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:869 +#: builtins.c:872 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3471,7 +3601,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3507,7 +3637,8 @@ msgstr "" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚\n" " ã‚‚ã— -x ãŒä½¿ç”¨ã•れãŸå ´åˆã€COMMAND ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚" -#: builtins.c:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3517,7 +3648,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3539,7 +3670,8 @@ msgstr "" " 終了ステータス:\n" " 無効ãªã‚ªãƒ—ション㋠JOBSPEC ãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3551,7 +3683,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3583,7 +3716,7 @@ msgstr "" " 終了ステータス:\n" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3668,7 +3801,7 @@ msgstr "" " ARG ã®æœ€çµ‚çš„ãªè©•価値㌠0 ã®å ´åˆ let 㯠1 ã‚’è¿”ã—ã¾ã™ã€‚ãれ以外ã®å ´åˆã¯\n" " let 㯠0 ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:983 +#: builtins.c:987 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3690,27 +3823,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3755,17 +3889,18 @@ msgstr "" " -t timeout\tTIMEOUT 秒以内ã«å…¥åŠ›è¡ŒãŒå®Œå…¨ã«èª­ã¿è¾¼ã¾ã‚Œãªã‹ã£ãŸå ´åˆ\n" " \t\tタイムアウトを発生ã•ã›å¤±æ•—ã¨ã—ã¦å¾©å¸°ã—ã¾ã™ã€‚TMOUT 変数ã®å€¤ãŒ\n" " \t\tデフォルトã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã§ã™ã€‚TIMEOUT ã‚’å°æ•°ã«ã™ã‚‹ã“ã¨ã‚‚ã§ã\n" -" \t\tã¾ã™ã€‚ã‚‚ã— TIMEOUT ㌠0 ã®å ´åˆã€æŒ‡å®šã—ãŸãƒ•ァイル記述å­ã‹ã‚‰ã®\n" -" \t\t入力ãŒä½¿ç”¨å¯èƒ½ãªå ´åˆã«ã®ã¿èª­ã¿è¾¼ã¿ã€æˆåŠŸè¿”ã—ã¾ã™ã€‚タイムアウ\n" -" \t\tト発生時ã®çµ‚了ステータスã¯128より大ãããªã‚Šã¾ã™\n" +" \t\tã¾ã™ã€‚ã‚‚ã— TIMEOUT ㌠0 ã®å ´åˆã€read ã¯ä½•ã®ãƒ‡ãƒ¼ã‚¿ã‚‚読ã¿è¾¼ã¾\n" +" \t\tãšã«ç›´ã¡ã«çµ‚了ã—ã€æŒ‡å®šã—ãŸãƒ•ァイル記述å­ã§å…¥åŠ›ãŒä½¿ç”¨å¯èƒ½ãªå ´\n" +" \t\tåˆã®ã¿æˆåŠŸè¿”ã—ã¾ã™ã€‚タイムアウト発生時ã®çµ‚了ステータスã¯128\n" +" \t\tより大ãããªã‚Šã¾ã™\n" " -u fd\t\t読ã¿è¾¼ã¿ã«æ¨™æº–入力ã§ã¯ãªããƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ FD を使用ã—ã¾ã™\n" " \n" " 終了ステータス:\n" -" ファイル終了(EOF)ã€èª­ã¿è¾¼ã¿ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã€-u ã«ç„¡åйãªãƒ•ァイル記述å­ãŒä¸Ž" -"ãˆ\n" -" られãŸå ´åˆã‚’除ã0ã‚’è¿”ã—ã¾ã™ã€‚" +" ファイル終了(EOF)ã€èª­ã¿è¾¼ã¿ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ(ã“ã®å ´åˆã¯128以上)ã€å¤‰æ•°ã¸ã®ä»£å…¥" +"エ\n" +" ラーãŒç™ºç”Ÿã€ -u ã«ç„¡åйãªãƒ•ァイル記述å­ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã‚’除ã0ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3789,7 +3924,7 @@ msgstr "" "ã‚’\n" " è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3858,7 +3993,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3954,7 +4090,7 @@ msgstr "" " 終了ステータス:\n" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1126 +#: builtins.c:1132 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -3965,7 +4101,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3981,8 +4117,10 @@ msgstr "" " å„ NAMEã«å¯¾ã—ã¦é–¢é€£ã™ã‚‹å€¤ã¾ãŸã¯é–¢æ•°ã‚’削除ã—ã¾ã™ã€‚\n" " \n" " オプション:\n" -" -f\tå„ NAME をシェル関数ã¨ã—ã¦æ‰±ã„ã¾ã™\n" -" -v\tå„ NAME をシェル変数ã¨ã—ã¦æ‰±ã„ã¾ã™\n" +" -f\tå„ NAME をシェル関数ã¨ã—ã¦æ‰±ã†\n" +" -v\tå„ NAME をシェル変数ã¨ã—ã¦æ‰±ã†\n" +" -n\tå„ NAME ã‚’åå‰å‚ç…§ã¨ã—ã¦æ‰±ã„ã€å¤‰æ•°è‡ªèº«ã‚’消去ã™ã‚‹ã€‚å‚ç…§ã¨ã—ã¦\n" +"\t\t評価ã¯ã—ãªã„。 \n" " \n" " オプションãŒç„¡ã„å ´åˆã€æœ€åˆã«å¤‰æ•°ã‚’消去ã—よã†ã¨è©¦ã¿ã¾ã™ã€‚失敗ã—ãŸå ´åˆã«" "ã¯\n" @@ -3994,7 +4132,7 @@ msgstr "" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ NAME ãŒèª­ã¿å–り専用ã®å ´åˆã‚’é™¤ãæˆåŠŸã‚’è¿”ã—" "ã¾ã™ã€‚" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4029,7 +4167,7 @@ msgstr "" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€ç„¡åŠ¹ãª NAME ãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸ\n" " ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1167 +#: builtins.c:1173 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4042,9 +4180,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4061,7 +4198,8 @@ msgstr "" " -a\tインデックス型é…列変数を示ã—ã¾ã™\n" " -A\t連想é…列変数を示ã—ã¾ã™\n" " -f\tシェル関数を示ã—ã¾ã™\n" -" -p\tå…¨ã¦ã®èª­ã¿å–り専用変数・関数ã®ä¸€è¦§ã‚’表示ã—ã¾ã™\n" +" -p\tå…¨ã¦ã®èª­ã¿å–り専用変数・関数ã®ä¸€è¦§ã‚’表示ã—ã¾ã™ã€‚-fオプシ\n" +"\t\t ョンãŒã‚ã‚‹ã‹ãªã„ã‹ã§å‹•作ãŒå¤‰ã‚りã¾ã™ã€‚\n" " \n" " 引数 `--' ã¯ä»¥é™ã®ã‚ªãƒ—ション処ç†ã‚’無効ã«ã—ã¾ã™\n" " \n" @@ -4069,7 +4207,7 @@ msgstr "" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€ä¸Žãˆã‚‰ã‚ŒãŸ NAME ãŒç„¡åйãªå ´åˆã‚’é™¤ãæˆåŠŸ\n" " ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4087,7 +4225,7 @@ msgstr "" " 終了ステータス:\n" " NãŒè² ã®å€¤ã¾ãŸã¯ $# より大ãã„å ´åˆã‚’é™¤ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4111,7 +4249,7 @@ msgstr "" " FILENAME ã§æœ€å¾Œã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚FILENAME ãŒ\n" " 読ã¿è¾¼ã‚ãªã‹ã£ãŸå ´åˆã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4135,7 +4273,7 @@ msgstr "" " 終了ステータス:\n" " ã‚¸ãƒ§ãƒ–åˆ¶å¾¡ãŒæœ‰åйã§ãªã„ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1248 +#: builtins.c:1254 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4200,9 +4338,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4279,6 +4417,7 @@ msgstr "" " \n" " -o OPTION シェルオプション OPTION ãŒæœ‰åŠ¹ãªæ™‚ã«çœŸ(true)\n" " -v VAR シェル変数 VAR ãŒè¨­å®šã•れã¦ã„る時ã«çœŸ(true)\n" +" -R VAR シェル変数 VAR ãŒè¨­å®šã•れã€åå‰å‚ç…§ã®æ™‚ã«çœŸ(true)\n" " ! EXPR å¼ expr ãŒå½(fales)ã®æ™‚ã«çœŸ(true)\n" " EXPR1 -a EXPR2 å¼ expr1 ãŠã‚ˆã³ expr2 ã®ä¸¡æ–¹ã¨ã‚‚真(true)ã®æ™‚ã«çœŸ(true)\n" " EXPR1 -o EXPR2 å¼ expr1 ã¾ãŸã¯ expr2 ã®ã„ãšã‚Œã‹ãŒçœŸ(true)ã®æ™‚ã«çœŸ" @@ -4296,7 +4435,7 @@ msgstr "" "ã¾ãŸã¯\n" " 引数ãŒç„¡åйãªå ´åˆã«å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4309,7 +4448,7 @@ msgstr "" "致\n" " ã™ã‚‹ã‚ˆã†ã«æ–‡å­—`]'を与ãˆãªã‘れã°ã„ã‘ã¾ã›ã‚“。" -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4329,7 +4468,7 @@ msgstr "" " 終了ステータス:\n" " å¸¸ã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4411,7 +4550,8 @@ msgstr "" " 終了ステータス:\n" " SIGSPEC ãŒç„¡åйã‹ã€ç„¡åйãªã‚ªãƒ—ションを与ãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -4420,18 +4560,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4469,7 +4609,7 @@ msgstr "" "åˆ\n" " ã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1417 +#: builtins.c:1424 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4488,6 +4628,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4499,7 +4640,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4518,46 +4660,49 @@ msgid "" msgstr "" "シェルã®è³‡æºåˆ¶é™ã‚’変更ã—ã¾ã™ã€‚\n" " \n" -" シェルãŠã‚ˆã³ã‚·ã‚§ãƒ«ãŒä½œæˆã™ã‚‹ãƒ—ロセスãŒä½¿ç”¨å¯èƒ½ãªè³‡æºã«å¯¾ã™ã‚‹åˆ¶å¾¡ã‚’æä¾›ã—" -"ã¾ã™ã€‚\n" -" ãŸã ã—ã€ã‚·ã‚¹ãƒ†ãƒ ãŒãã®ã‚ˆã†ãªåˆ¶å¾¡ã‚’許å¯ã—ã¦ã„ã‚‹å ´åˆã§ã™ã€‚\n" +" システムãŒã‚·ã‚§ãƒ«ã®è³‡æºåˆ¶å¾¡ã‚’æä¾›ã—ã¦ã„ã‚‹å ´åˆã€ã‚·ã‚§ãƒ«ã€ãŠã‚ˆã³ã‚·ã‚§ãƒ«ãŒç”Ÿ" +"æˆ\n" +" ã™ã‚‹ãƒ—ロセスã«å¯¾ã™ã‚‹è³‡æºã®åˆ¶å¾¡ã‚’行ã„ã¾ã™ã€‚\n" " \n" " オプション:\n" -" -S\t`soft' 資æºåˆ¶é™ã‚’使用ã—ã¾ã™\n" -" -H\t`hard' 資æºåˆ¶é™ã‚’使用ã—ã¾ã™\n" -" -a\tç¾åœ¨ã®å…¨ã¦ã®è³‡æºåˆ¶é™ã‚’表示ã—ã¾ã™\n" -" -b\tソケットãƒãƒƒãƒ•ァサイズ\n" +" -S\tç·©ã„ (soft) 資æºåˆ¶å¾¡ã‚’使用ã™ã‚‹\n" +" -H\t厳ã—ã„ (hard) 資æºåˆ¶å¾¡ã‚’使用ã™ã‚‹\n" +" -a\tç¾åœ¨ã®åˆ¶é™ã‚’表示ã™ã‚‹\n" +" -b\tソケットã®å¤§ãã•\n" " -c\t作æˆã•ã‚Œã‚‹ã‚³ã‚¢ãƒ•ã‚¡ã‚¤ãƒ«ã®æœ€å¤§ã‚µã‚¤ã‚º\n" -" -d\tãƒ—ãƒ­ã‚»ã‚¹ãƒ‡ãƒ¼ã‚¿ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã®æœ€å¤§ã‚µã‚¤ã‚º\n" -" -e\tã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«å„ªå…ˆåº¦ã®æœ€å¤§å€¤ (`nice')\n" -" -f\tシェルåŠã³å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæ›¸ãè¾¼ã¿å¯èƒ½ãªãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºã®æœ€å¤§å€¤\n" -" -i\tä¿ç•™ã™ã‚‹ã‚·ã‚°ãƒŠãƒ«ã®æœ€å¤§æ•°\n" -" -l\tメモリã«ãƒ­ãƒƒã‚¯ã§ãã‚‹ãƒ—ãƒ­ã‚»ã‚¹ã®æœ€å¤§ã‚µã‚¤ã‚º\n" -" -m\t最大ã®ãƒ¡ãƒ¢ãƒªã‚µã‚¤ã‚º\n" -" -n\tファイル記述å­ã‚’é–‹ãã“ã¨ãŒã§ãる最大数\n" +" -d\tプロセスã®ãƒ‡ãƒ¼ã‚¿ã‚»ã‚°ãƒ¡ãƒ³ãƒˆã®æœ€å¤§ã‚µã‚¤ã‚º\n" +" -e\tスケジューリング優先度 (`nice') ã®æœ€å¤§å€¤\n" +" -f\tシェルãŠã‚ˆã³ãã®å­ãƒ—ãƒ­ã‚»ã‚¹ãŒæ›¸ãè¾¼ã‚る最大ファイルサイズ\n" +" -i\tã‚·ã‚°ãƒŠãƒ«æŠ‘åˆ¶ã®æœ€å¤§æ•°\n" +" -l\tメモリ内ã«å›ºå®šã§ãã‚‹ãƒ—ãƒ­ã‚»ã‚¹ã®æœ€å¤§ã‚µã‚¤ã‚º\n" +" -m\tthe maximum resident set size\n" +" -n\té–‹ã‘るファイル記述å­ã®æœ€å¤§æ•°\n" " -p\tパイプã®ãƒãƒƒãƒ•ァサイズ\n" -" -q\tPOSIX message queues ã®æœ€å¤§ãƒã‚¤ãƒˆæ•°\n" -" -r\tãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«å„ªå…ˆåº¦ã®æœ€å¤§å€¤\n" -" -s\tã‚¹ã‚¿ãƒƒã‚¯ã‚µã‚¤ã‚ºã®æœ€å¤§å€¤\n" -" -t\tCPU時間ç·é‡ã®æœ€å¤§å€¤ (ç§’å˜ä½)\n" -" -u\tãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒ—ãƒ­ã‚»ã‚¹ã®æœ€å¤§æ•°\n" -" -v\t仮想メモリã®ã‚µã‚¤ã‚º\n" +" -q\tPOSIX ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚­ãƒ¥ãƒ¼å†…ã®æœ€å¤§ãƒã‚¤ãƒˆæ•°\n" +" -r\tãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒªãƒ³ã‚°å„ªå…ˆåº¦ã®æœ€å¤§å€¤\n" +" -s\t最大スタックサイズ\n" +" -t\tCPU時間é‡ã®æœ€å¤§å€¤ (å˜ä½:ç§’)\n" +" -u\tãƒ¦ãƒ¼ã‚¶ãƒ—ãƒ­ã‚»ã‚¹ã®æœ€å¤§æ•°\n" +" -v\tä»®æƒ³ãƒ¡ãƒ¢ãƒªã®æœ€å¤§ã‚µã‚¤ã‚º\n" " -x\tãƒ•ã‚¡ã‚¤ãƒ«ãƒ­ãƒƒã‚¯ã®æœ€å¤§æ•°\n" +" -T\tã‚¹ãƒ¬ãƒƒãƒ‰ã®æœ€å¤§æ•°\n" " \n" -" LIMIT ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã€æŒ‡å®šã—ãŸè³‡æºã«å¯¾ã™ã‚‹æ–°ã—ã„値ã«ãªã‚Šã¾ã™ã€‚特別ãª\n" -" LIMIT ã®å€¤ã§ã‚ã‚‹ `soft'ã€`hard'ã€ãŠã‚ˆã³ `unlimited' ã¯ç¾åœ¨ã® `soft' 制" -"é™\n" -" ç¾åœ¨ã®`hard' 制é™ãŠã‚ˆã³åˆ¶é™ãªã—ã‚’ãれãžã‚Œæ„味ã—ã¾ã™ã€‚\n" -" ãれ以外ã®å ´åˆã€æŒ‡å®šã—ãŸè³‡æºã®ç¾åœ¨ã®å€¤ãŒè¡¨ç¤ºã•れã¾ã™ã€‚オプションãŒä¸Žãˆ\n" -" られãªã‹ã£ãŸå ´åˆ -f ã¨è¦‹ãªã•れã¾ã™ã€‚\n" +" ã™ã¹ã¦ã®ãƒ—ラットフォームã§ã™ã¹ã¦ã®ã‚ªãƒ—ションãŒåˆ©ç”¨å¯èƒ½ã¨ã¯é™ã‚Šã¾ã›ã‚“。\n" " \n" -" 値㯠1024 ãƒã‚¤ãƒˆå˜ä½ã§å¢—加ã—ã¾ã™ã€‚例外㯠-t ãŒç§’å˜ä½ã€-p ㌠512ãƒã‚¤ãƒˆ\n" -" å˜ä½ã€ãŠã‚ˆã³ -u ã¯1プロセスå˜ä½ã§ã™ã€‚\n" +" LIMIT を指定ã—ãŸå ´åˆã€æŒ‡å®šã—ãŸè³‡æºã«æ–°ã—ã„値ãŒè¨­å®šã•れã¾ã™ã€‚`soft', \n" +" `hard' ãŠã‚ˆã³ `unlimited' ã¨ã„ã†ç‰¹åˆ¥ãªå€¤ã¯ç¾åœ¨ã®ç·©ã‚„ã‹ãªåˆ¶é™ã€ç¾åœ¨ã®\n" +" 厳ã—ã„制é™ã€ãŠã‚ˆã³ç„¡åˆ¶é™ã‚’æ„味ã—ã¾ã™ã€‚\n" +" LIMIT を指定ã—ãªã„å ´åˆã€æŒ‡å®šã—ãŸè³‡æºã®ç¾åœ¨ã®å€¤ã‚’表示ã—ã¾ã™ã€‚オプション" +"ã‚’\n" +" 指定ã—ãªã„å ´åˆã€-f ã¨è¦‹ãªã•れã¾ã™ã€‚\n" +" \n" +" -t ã¯ç§’å˜ä½ã€-p 㯠512ãƒã‚¤ãƒˆã”ã¨ã€-u ã¯ãƒ—ロセス数ã§ã‚りã€ãれ以外ã¯\n" +" 1024 ãƒã‚¤ãƒˆå˜ä½ã§ã™ã€‚\n" " \n" " 終了ステータス:\n" -" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" +" 無効ãªã‚ªãƒ—ションを与ãˆã‚‹ã‹ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚Šã€æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4591,8 +4736,7 @@ msgstr "" " 終了ステータス:\n" " MODE ãŒç„¡åйã‹ã€ç„¡åйãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1485 -#, fuzzy +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4613,17 +4757,17 @@ msgid "" msgstr "" "ジョブã®å®Ÿè¡Œå®Œäº†ã‚’å¾…ã¡ã€çµ‚了ステータスを返ã—ã¾ã™ã€‚\n" " \n" -" ID ã§è­˜åˆ¥ã•れるプロセス (プロセスID ã¾ãŸã¯ ジョブ指定) ã‚’å¾…ã¡ã€ãã®çµ‚了\n" +" ID ã§è­˜åˆ¥ã•れるå„プロセス (プロセスID ã¾ãŸã¯ ジョブ指定) ã‚’å¾…ã¡ã€ãã®çµ‚" +"了\n" " ステータスを返ã—ã¾ã™ã€‚ID ãŒä¸Žãˆã‚‰ã‚Œãªã„å ´åˆã€ç¾åœ¨ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªå…¨ã¦ã®å­ãƒ—\n" " ロセスを待㡠0 ã‚’è¿”ã—ã¾ã™ã€‚ID ãŒã‚¸ãƒ§ãƒ–指定ã®å ´åˆã‚¸ãƒ§ãƒ–ã®ãƒ‘イプラインã«\n" " ã‚ã‚‹å…¨ã¦ã®ãƒ—ロセスを待ã¡ã¾ã™ã€‚\n" " \n" " 終了ステータス:\n" -" ID ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚IDãŒç„¡åйã§ã‚ã‚‹ã‹ã€ç„¡åйãªã‚ªãƒ—ションãŒ\n" -" 与ãˆã‚‰ã‚ŒãŸå ´åˆã«ã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" +" 最後㮠ID ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚IDãŒç„¡åйã§ã‚ã‚‹ã‹ã€ç„¡åйãªã‚ªãƒ—\n" +" ションãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã«ã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1506 -#, fuzzy +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4639,15 +4783,17 @@ msgid "" msgstr "" "プロセスã®å®Ÿè¡Œå®Œäº†ã‚’å¾…ã¡ã€çµ‚了ステータスを返ã—ã¾ã™ã€‚\n" " \n" -" 指定ã•れãŸãƒ—ロセスを待ã¡ã€ãã®çµ‚了ステータスを返ã—ã¾ã™ã€‚PID ãŒä¸Žãˆã‚‰ã‚Œ\n" +" PIDã§æŒ‡å®šã•れãŸå„プロレスを待ã¡ã€ãã®çµ‚了ステータスを返ã—ã¾ã™ã€‚PID ãŒä¸Žãˆ" +"られ\n" " ãªã„å ´åˆã€ç¾åœ¨ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ãªå…¨ã¦ã®å­ãƒ—ロセスを待ã¡ã€0 ã‚’è¿”ã—ã¾ã™ã€‚PID ã¯\n" -" プロセスIDã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。\n" +" プロセスIDã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“。\n" " \n" " 終了ステータス:\n" -" IDã®çµ‚了ステータスを返ã—ã¾ã™ã€‚IDãŒç„¡åйã‹ã€ç„¡åйãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚ŒãŸ\n" -" å ´åˆã¯ã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¾ã™ã€‚" +" 最後㮠PID ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚PIDãŒç„¡åйã‹ã€ç„¡åйãªã‚ªãƒ—ションãŒä¸Ž" +"ãˆã‚‰ã‚ŒãŸ\n" +" å ´åˆã¯å¤±æ•—ã—ã¾ã™ã€‚" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4668,7 +4814,7 @@ msgstr "" " 終了ステータス:\n" " 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4698,7 +4844,7 @@ msgstr "" " 終了ステータス:\n" " 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4733,7 +4879,7 @@ msgstr "" " 終了ステータス:\n" " 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4761,7 +4907,7 @@ msgstr "" " 終了ステータス:\n" " PIPELINE ã®æˆ»ã‚Šå€¤ãŒçµ‚了ステータスã¨ãªã‚Šã¾ã™ã€‚" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4780,7 +4926,7 @@ msgstr "" " 終了ステータス:\n" " 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4814,7 +4960,7 @@ msgstr "" " 終了ステータス:\n" " 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4832,7 +4978,7 @@ msgstr "" " 終了ステータス:\n" " 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4850,7 +4996,8 @@ msgstr "" " 終了ステータス:\n" " 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4860,7 +5007,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "NAME ã¨ã„ã†åå‰ã®éžåŒæœŸãƒ—ロセスを作æˆã—ã¾ã™ã€‚\n" " \n" @@ -4872,7 +5019,7 @@ msgstr "" " 終了ステータス:\n" " COMMAND ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4897,7 +5044,7 @@ msgstr "" " 終了ステータス:\n" " NAME ãŒèª­ã¿å–り専用ã§ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4915,7 +5062,7 @@ msgstr "" " 終了ステータス:\n" " 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4938,7 +5085,7 @@ msgstr "" " 終了ステータス:\n" " å†é–‹ã•れãŸã‚¸ãƒ§ãƒ–ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4956,7 +5103,7 @@ msgstr "" " 終了ステータス:\n" " EXPRESSION ã®è©•価値㌠0 ã®å ´åˆã¯ 1ã€ãれ以外㯠0 ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5011,7 +5158,7 @@ msgstr "" " 終了ステータス:\n" " EXPRESSION ã®å€¤ã«åŸºã¥ã„㦠0 ã¾ãŸã¯ 1 ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5112,7 +5259,8 @@ msgstr "" " HISTIGNORE\tヒストリ一覧ã«ä¿å­˜ã•れるコマンドを決ã‚る時ã«ä½¿ç”¨ã•れる\n" " \t\tコロン (:) ã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒ‘ターンã®ä¸€è¦§ã€‚\n" -#: builtins.c:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -5122,19 +5270,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5171,7 +5319,8 @@ msgstr "" " 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´ãŒå¤±æ•—ã—ãªã„é™ã‚ŠæˆåŠŸã‚’\n" " è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -5180,16 +5329,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5222,7 +5371,8 @@ msgstr "" " 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´ãŒå¤±æ•—ã—ãªã„é™ã‚ŠæˆåŠŸã‚’\n" " è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -5233,19 +5383,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5274,7 +5424,7 @@ msgstr "" " 終了ステータス:\n" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5310,7 +5460,7 @@ msgstr "" " OPTNAME ãŒæœ‰åйãªå ´åˆã¯æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆ\n" " ã¾ãŸã¯ OPTNAME ãŒç„¡åйãªå ´åˆã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1908 +#: builtins.c:1919 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5328,15 +5478,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5362,20 +5512,26 @@ msgstr "" " コピーã•れã¾ã™ã€‚三ã¤ç›®ã¯æ›¸å¼æŒ‡å®šæ–‡å­—ã§ã€å„文字ã¯å¾Œã«ç¶šã引数を表示ã—ã¾" "ã™ã€‚\n" " \n" -" printf(1) ãŠã‚ˆã³ printf(3) ã«è¨˜è¿°ã•ã‚Œã‚‹æ¨™æº–ã®æ›¸å¼æŒ‡å®šã«åŠ ãˆã¦ã€printf " -"ã¯\n" -" æ¬¡ã®æ–‡å­—を解釈ã—ã¾ã™ã€‚\n" +" printf(1) ã«è¨˜è¿°ã•ã‚Œã‚‹æ¨™æº–ã®æ›¸å¼æŒ‡å®šã«åŠ ãˆã¦ã€printf ã¯æ¬¡ã®æ–‡å­—を解釈ã—ã¾" +"ã™ã€‚\n" " \n" " %b\t対応ã™ã‚‹å¼•æ•°ã®ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—文字を展開ã™ã‚‹\n" " %q\tシェル入力ã¨ã—ã¦å¼•数をクオートã™ã‚‹\n" " %(fmt)T FMT ã‚’ strftime(3) ç”¨ã®æ›¸å¼æ–‡å­—列ã¨ã—ã¦æ—¥ä»˜ã¨æ™‚é–“ã®æ–‡å­—列を出" "力ã™ã‚‹\n" " \n" +" FORMAT ã¯ã™ã¹ã¦ã® ARGUMENTS を使ã„切る必è¦ãŒã‚りã¾ã™ã€‚FORMATãŒå¿…è¦ã¨ã™" +"ã‚‹\n" +" ARGUMENTS より少ãªã„å ´åˆã€æ®‹ã‚Šã®æ›¸å¼æŒ‡å®šã¯å€¤ãŒ 0 ã¾ãŸã¯ null 文字列ãŒé©" +"切\n" +" ã«ä¸Žãˆã‚‰ã‚Œã¦ã„ã‚‹ã‹ã®ã‚ˆã†ã«å‹•作ã—ã¾ã™ã€‚\n" +"\n" " 終了ステータス:\n" " 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€æ›¸ãè¾¼ã¿ã€ä»£å…¥ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—" "ã¾ã™ã€‚" -#: builtins.c:1942 +#: builtins.c:1953 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5388,11 +5544,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5424,7 +5580,7 @@ msgstr "" " 終了ステータス:\n" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5446,7 +5602,7 @@ msgstr "" " 終了ステータス:\n" " 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5502,7 +5658,8 @@ msgstr "" "åˆ\n" " を除ãã€æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:2015 +#: builtins.c:2026 +#, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5513,20 +5670,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5577,7 +5735,7 @@ msgstr "" "列ã§ç„¡ã„\n" " å ´åˆã‚’é™¤ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5587,34 +5745,21 @@ msgstr "" " \n" " `mapfile'ã®åˆ¥åã§ã™ã€‚" -#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2013 Free Software Foundation, Inc." -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "ライセンス GPLv2+: GNU GPL ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2 ã¾ãŸã¯ãã‚Œä»¥é™ \n" +#~ msgid ":" +#~ msgstr ":" -#~ msgid "" -#~ ". With EXPR, returns\n" -#~ " " -#~ msgstr "" -#~ "。 EXPR ãŒå­˜åœ¨ã™ã‚‹å ´åˆã€æ¬¡ã‚’è¿”ã—ã¾ã™ \n" -#~ " " +#~ msgid "true" +#~ msgstr "true" -#~ msgid "" -#~ "; this extra information can be used to\n" -#~ " provide a stack trace.\n" -#~ " \n" -#~ " The value of EXPR indicates how many call frames to go back before " -#~ "the\n" -#~ " current one; the top frame is frame 0." -#~ msgstr "" -#~ "。ã“ã®è¿½åŠ ã®æƒ…å ±ã¯ã‚¹ã‚¿ãƒƒã‚¯ãƒˆãƒ¬ãƒ¼ã‚¹\n" -#~ " ã‚’æä¾›ã™ã‚‹æ™‚ã«åˆ©ç”¨ã—ã¾ã™ã€‚\n" -#~ "\n" -#~ " EXPR ã®å€¤ã¯ç¾åœ¨ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã«æˆ»ã‚‹ã¾ã§ã«ä½•回フレームãŒå‘¼ã³å‡ºã•れã¦ã„ã‚‹ã‹" -#~ "ã‚’\n" -#~ " æ„味ã—ã¾ã™ã€‚最上ä½ã®ãƒ•レーム㯠0 ã§ã™ã€‚" +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc." diff --git a/po/lt.gmo b/po/lt.gmo index aceaa7121fe218c5739c4e05c87965718d472d62..36a1279523be80e76c24d450a6f40b156592bc43 100644 GIT binary patch delta 7160 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 H3&H;fMlA{8 delta 7293 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 R7R>u@%wYfPT8;fZ@PBRbE?ocs diff --git a/po/lt.po b/po/lt.po index 9f53f35..2594d1d 100644 --- a/po/lt.po +++ b/po/lt.po @@ -7,82 +7,88 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "blogas masyvo indeksas" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nepavyko priskirti prie neskaitinio indekso" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nepavyko sukurti: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: nepavyko rasti keymapo komandai" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: pirmas ne tarpo simbolis nÄ—ra „\"“" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "nÄ—ra uždaranÄiojo „%c“ %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: trÅ«ksta dvitaÅ¡kio skirtuko" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "„%s“: netaisyklingas keymap'o pavadinimas" @@ -91,45 +97,45 @@ msgstr "„%s“: netaisyklingas keymap'o pavadinimas" msgid "line editing not enabled" msgstr "eilutÄ—s redagavimas neįgalintas" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: netaisyklingas keymap'o pavadinimas" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nepavyko perskaityti: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "„%s“: nepavyko atjungti (unbind)" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: nežinomas funkcijos pavadinimas" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nÄ—ra priskirtas jokiam klaviÅ¡ui.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s gali bÅ«ti iÅ¡kviestas su " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "prasminga tik „for“, „while“ arba „until“ cikle" -#: builtins/caller.def:134 +#: builtins/caller.def:136 #, fuzzy msgid "" "Returns the context of the current subroutine call.\n" @@ -137,300 +143,329 @@ msgid "" " Without EXPR, returns " msgstr "Grąžina esamos procedÅ«ros kontekstÄ…." -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME nenustatytas" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "per daug argumentų" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "steko viršūnÄ—je esanÄiu." + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD nenustatytas" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "eilutÄ— %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "įspÄ—jimas: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: naudojimas: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: parametrui reikia argumento" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: reikia skaitinio argumento" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: nerasta" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: negalimas parametras" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: netaisyklingas parametro vardas" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': netaisyklingas identifikatorius" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "netaisyklingas aÅ¡tuonetainis skaiÄius" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "netaisyklingas Å¡eÅ¡ioliktainis skaiÄius" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "netaisyklingas skaiÄius" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: netaisyklinga signalo specifikacija" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: ne pid'as ar taisyklinga darbo specifikacija" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: kintamasis tik skaitymui" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s išėjo už ribų" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argumentas" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s už ribų" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: nÄ—ra tokio darbo" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: nÄ—ra darbų valdymo" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "nÄ—ra darbų valdymo" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: apribota" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "apribota" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ne vidinÄ— aplinkos komanda" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "raÅ¡ymo klaida: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: klaida skaitant esamÄ… aplankÄ…: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: dviprasmis darbo apraÅ¡ymas" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: nÄ—ra baigimo specifikacijos" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "įspÄ—jimas: parametras -F gali neveikti taip, kaip tikitÄ—s" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "įspÄ—jimas: parametras -C gali neveikti taip, kaip tikitÄ—s" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "galima naudoti tik funkcijoje" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, fuzzy, c-format +msgid "%s: circular name reference" +msgstr "%d: netaisyklingas failo deskriptorius: %s" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%d: netaisyklingas failo deskriptorius: %s" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "negalima naudoti „-f“ funkcijoms kurti" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija tik skaitymui" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: negalima tokiu bÅ«du sunaikinti masyvų kintamųjų" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dinaminis įkrovimas negalimas" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "nepavyko atverti bendrojo objekto %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "nepavyko rasti %s bendrajame objekte %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: nedinamiÅ¡kai įkrauta" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nepavyko iÅ¡trinti: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: aplankas" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: ne paprastas failas" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: failas per didelis" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: negalima vykdyti dvejetainių failų" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nepavyko paleisti: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "ne prisijungimo aplinka: naudokite „exit“" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Yra sustabdytų darbų.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Yra veikianÄių darbų.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "komandų nerasta" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "istorijos specifikacija" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nepavyko atverti laikinojo failo: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "darbas %d pradÄ—tas be darbų valdymo" @@ -449,17 +484,17 @@ msgstr "%s: parametrui reikia argumento -- %c\n" msgid "hashing disabled" msgstr "maiÅ¡a iÅ¡jungta" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: maiÅ¡os lentelÄ— tuÅ¡Äia\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "paskutinÄ— komanda: %s\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, fuzzy, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" @@ -467,7 +502,7 @@ msgstr[0] "Aplinkos komandos, atitinkanÄios raktažodį „" msgstr[1] "Aplinkos komandos, atitinkanÄios raktažodį „" msgstr[2] "Aplinkos komandos, atitinkanÄios raktažodį „" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -475,12 +510,12 @@ msgstr "" "nÄ—ra žinyno temų, atitinkanÄių „%s“. Bandykite „help help“, „man -k %s“ arba " "„info %s“." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nepavyko atverti: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -501,15 +536,20 @@ msgstr "" "ŽvaigždutÄ— (*) prie vardo reiÅ¡kia, kad komanda iÅ¡jungta.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "negalima naudoti daugiau negu vieno parametro iÅ¡ -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "istorijos pozicija" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: netaisyklingas limito argumentas" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: istorijos iÅ¡skleidimas nesÄ—kmingas" @@ -523,115 +563,115 @@ 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:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumentai turi bÅ«ti procesų arba darbų ID" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Nežinoma klaida" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "tikÄ—tasi iÅ¡raiÅ¡kos" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, fuzzy, c-format msgid "%s: not an indexed array" msgstr "%s: ne masyvo kintamasis" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: nesamas parametras" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: nesamas parametras" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 #, fuzzy msgid "empty array variable name" msgstr "%s: ne masyvo kintamasis" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "„%s“: trÅ«ksta formato simbolio" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: netaisyklingas formato simbolis" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "įspÄ—jimas: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "trÅ«ksta Å¡eÅ¡ioliktainio skaitmens iÅ¡raiÅ¡koje \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "trÅ«ksta Å¡eÅ¡ioliktainio skaitmens iÅ¡raiÅ¡koje \\x" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "nÄ—ra kito aplanko" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: netaisyklingas limito argumentas" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 #, fuzzy msgid "directory stack index" msgstr "rekursijos steko atvirkÅ¡tinis perpildymas" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -655,7 +695,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -680,7 +720,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -701,143 +741,153 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "skaitymo klaida: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "galima grįžti (return) tik iÅ¡ funkcijos ar scenarijaus" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "negalima kartu iÅ¡trinti funkcijos ir kintamojo" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: nepavyko iÅ¡trinti" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nepavyko iÅ¡trinti: %s tik skaitymui" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: ne masyvo kintamasis" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: ne funkcija" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: nepavyko iÅ¡trinti" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "postÅ«mių skaiÄius" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "negalima aplinkos nuostatos vienu metu įjungti ir iÅ¡jungti" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: netaisyklingas aplinkos nuostatos pavadinimas" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "reikia failo pavadinimo argumento" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: failas nerastas" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "nepavyko sustabdyti" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "nepavyko sustabdyti prisijungimo aplinkos" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s yra „%s“ sinonimas\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s yra aplinkos raktinis žodis\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s yra funkcija\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s yra aplinkos vidinÄ— komanda\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s yra aplinkos vidinÄ— komanda\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s yra %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s yra heÅ¡uotas (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: netaisyklingas limito argumentas" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': bloga komanda" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nepavyko gauti limito: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "riba" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nepavyko pakeisti limito: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "aÅ¡tuntainis skaiÄius" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "„%c“: netaisyklingas simbolinÄ—s veiksenos operatorius" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "„%c“: netaisyklingas simbolinÄ—s veiksenos simbolis" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " eilutÄ— " @@ -851,83 +901,104 @@ msgstr "paskutinÄ— komanda: %s\n" msgid "Aborting..." msgstr "Nutraukiama..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "nežinoma komandos klaida" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "blogas komandos tipas" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "blogas jungtukas" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "blogas Å¡uolis" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: nepriskirtas kintamasis" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\alaukiant įvedimo baigÄ—si laikas: automatiÅ¡kai atsijungta\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nepavyko peradresuoti standartinio įvedimo iÅ¡ /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 #, fuzzy msgid "pipe error" msgstr "raÅ¡ymo klaida: %s" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: komanda nerasta" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, fuzzy, c-format msgid "%s: %s" msgstr "%s yra %s\n" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: blogas interpretatorius" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: negalima vykdyti dvejetainių failų" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s yra aplinkos vidinÄ— komanda\n" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nepavyko dublikuoti fd %d į fd %d" @@ -973,37 +1044,37 @@ msgstr "" msgid "missing `)'" msgstr "TrÅ«ksta „)“" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "sintaksÄ—s klaida: tikÄ—tasi operando" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "sintaksÄ—s klaida: netaisyklingas aritmetinis operatorius" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "netaisyklingas aritmetinis pagrindas" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "per didelÄ— pagrindo reikÅ¡mÄ—" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: iÅ¡raiÅ¡kos klaida\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: nepavyko pasiekti aukÅ¡tesnių aplankų" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, fuzzy, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nepavyko dublikuoti fd %d į fd %d" @@ -1018,148 +1089,148 @@ msgstr "nepavyko iÅ¡skirti naujo failo deskriptoriaus bash įvedimui iÅ¡ fd %d" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: naujam fd %d buferis jau egzistuoja" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "trinamas sustabdytas darbas %d procesų grupÄ—je %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: tokio pid nÄ—ra" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signalas %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Atlikta" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Atlikta(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Nežinoma bÅ«sena" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: nÄ—ra proceso %ld įraÅ¡o" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: darbas %d yra sustabdytas" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: darbas užsibaigÄ—" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: darbas %d jau fone" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: %d eilutÄ—: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "Å¡ioje aplinkoje nÄ—ra darbų valdymo" @@ -1213,17 +1284,17 @@ msgstr "realloc: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p jau lentelÄ—je kaip laisvas?\n" @@ -1247,7 +1318,7 @@ msgstr "%s: netaisyklinga tarnyba" msgid "%s: bad network path specification" msgstr "%s: netaisyklingas tinklo kelias" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "tinklo operacijos nepalaikomos" @@ -1284,224 +1355,259 @@ msgstr "Turite naujų laiÅ¡kų $_" msgid "The mail in %s has been read\n" msgstr "PaÅ¡tas %s perskaitytas\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "sintaksÄ—s klaida: reikia aritmetinÄ—s iÅ¡raiÅ¡kos" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "sintaksÄ—s klaida: netikÄ—tas „;“" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "sintaksÄ—s klaida: „((%s))“" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: blogas instrukcijos tipas %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "netikÄ—ta failo pabaiga ieÅ¡kant atitinkamo „%c“" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "netikÄ—ta failo pabaiga ieÅ¡kant „]]“" -#: parse.y:4175 +#: parse.y:4415 #, 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:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "sintaksÄ—s klaida sÄ…lygos iÅ¡raiÅ¡koje" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "netikÄ—ta leksema „%s“, tikÄ—tasi „)“" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "tikÄ—tasi „)“" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "netikÄ—tas argumentas „%s“ sÄ…lygos unariniam operatoriui" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "netikÄ—tas argumentas sÄ…lygos unariniam operatoriui" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "netikÄ—ta leksema „%s“, tikÄ—tasi sÄ…lyginio binarinio operatoriaus" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "tikÄ—tasi sÄ…lygos binarinio operatoriaus" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "netikÄ—tas argumentas „%s“ sÄ…lygos binariniam operatoriui" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "netikÄ—tas argumentas sÄ…lygos binariniam operatoriui" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "netikÄ—ta leksema „%c“ sÄ…lygos komandoje" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "netikÄ—ta leksema „%s“ sÄ…lygos komandoje" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "netikÄ—ta leksema %d sÄ…lygos komandoje" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "sintaksÄ—s klaida prie netikÄ—tos leksemos: „%s“" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "sintaksÄ—s klaida prie „%s“" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "sintaksÄ—s klaida: netikÄ—ta failo pabaiga" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "sintaksÄ—s klaida" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Naudokite „%s“, jei norite iÅ¡eiti iÅ¡ ap.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "netikÄ—ta failo pabaiga ieÅ¡kant atitinkamo „)“" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funkcija „%s“ nerasta" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: blogas jungtukas  „%d“" -#: print_cmd.c:373 +#: print_cmd.c:375 #, fuzzy, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: netaisyklingas formato simbolis" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "failo deskriptorius už ribų" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: negalima perraÅ¡yti egzistuojanÄio failo" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: apribota: negalima peradresuoti iÅ¡vedimo" -#: redir.c:191 +#: redir.c:192 #, fuzzy, c-format msgid "cannot create temp file for here-document: %s" msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s" -#: redir.c:195 +#: redir.c:196 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: negalima priskirti sÄ…raÅ¡o masyvo elementui" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/serveris/prievadas nepalaikoma be tinklo" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "nukreipimo klaida: nepavyko dublikuoti fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "nepavyko rasti /tmp, sukurkite šį aplankÄ…!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp turi bÅ«ti taisyklingas aplanko pavadinimas" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: netaisyklingas parametras" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "nepavyko dublikuoti fd %d į fd %d" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "nepavyko dublikuoti fd %d į fd %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: aplankas" + +#: shell.c:1777 msgid "I have no name!" msgstr "Neturiu vardo!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versija %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1510,43 +1616,53 @@ msgstr "" "Naudojimas:\t%s [GNU ilgas parametras] [parametras] ...\n" "\t%s [GNU ilgas parametras] [parametras] scenarijaus-failas ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU ilgi parametrai:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Aplinkos parametrai:\n" -#: shell.c:1835 +#: shell.c:1938 #, 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s arba -o nustatymas\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Naudokite komandÄ… „bashbug“ klaidoms praneÅ¡ti.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: netaisyklinga operacija" @@ -1721,88 +1837,103 @@ msgstr "Nežinomas signalas #" msgid "Unknown Signal #%d" msgstr "Nežinomas signalas #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "blogas keitinys: trÅ«ksta „%s“ %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: negalima priskirti sÄ…raÅ¡o masyvo elementui" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "blogas keitinys: trÅ«ksta „%s“ %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parametras tuÅ¡Äias arba nenustatytas" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: posekio iÅ¡raiÅ¡ka < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: blogas keitinys" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: nesamas parametras" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "„%s“: netaisyklingas keymap'o pavadinimas" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametras tuÅ¡Äias arba nenustatytas" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: posekio iÅ¡raiÅ¡ka < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: negalima tokiu bÅ«du priskirti" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8421 +#: subst.c:9349 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "blogas keitinys: trÅ«ksta „%s“ %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "nÄ—ra atitikmenų: %s" @@ -1816,122 +1947,122 @@ msgstr "tikÄ—tasi argumento" msgid "%s: integer expression expected" msgstr "%s: tikÄ—tasi skaitinÄ—s iÅ¡raiÅ¡kos" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "tikÄ—tasi „)“" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "tikÄ—tasi „)“, rasta %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: tikÄ—tasi unarinio operatoriaus" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: tikÄ—tasi binarinio operatoriaus" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "trÅ«ksta „]“" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "netaisyklingas signalo numeris" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: blogas signalas %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "klaida importuojant funkcijos apibrėžimÄ… „%s“" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "aplinkos lygmuo (%d) per aukÅ¡tas, nustatoma į 1" -#: variables.c:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%d: netaisyklingas failo deskriptorius: %s" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: negalima priskirti sÄ…raÅ¡o masyvo elementui" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%d: netaisyklingas failo deskriptorius: %s" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3891 +#: variables.c:4218 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametras tuÅ¡Äias arba nenustatytas" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "netaisyklingas simbolis %d %s exportstr'e" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s exportstr'e trÅ«ksta „=“" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nÄ—ra global_variables konteksto" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5257 +#: variables.c:5619 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: nepavyko atverti: %s" -#: variables.c:5262 +#: variables.c:5624 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s išėjo už ribų" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "AutorinÄ—s teisÄ—s (C) 2009 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -1958,11 +2089,6 @@ msgstr "" 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:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "AutorinÄ—s teisÄ—s (C) 2009 Free Software Foundation, Inc." - #: xmalloc.c:91 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1983,144 +2109,132 @@ msgstr "xmalloc: %s:%d: nepavyko iÅ¡skirti %lu baitų (iÅ¡skirta %lu baitų)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "xmalloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [pavadinimas[=reikÅ¡mÄ—] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] pavadinimas [pavadinimas ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [aplinkos-komanda [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [iÅ¡raiÅ¡ka]" -#: builtins.c:64 +#: builtins.c:66 #, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|-P] [aplankas]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] komanda [arg ...]" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFilrtux] [-p] [pavadinimas[=reikÅ¡mÄ—] ...]" -#: builtins.c:78 +#: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "typeset [-aAfFilrtux] [-p] pavadinimas[=reikÅ¡mÄ—] ..." -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [option] pavadinimas[=reikÅ¡mÄ—] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f failopavadinimas] [pavadinimas ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts optsekos pavadinimas [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "" "exec [-cl] [-a pavadinimas] [komanda [argumentai ...]] [nukreipimas ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e evardas] [-lnr] [pirm] [pask] arba fc -s [pat=rep] [komanda]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "" -#: builtins.c:117 +#: builtins.c:119 #, fuzzy msgid "help [-dms] [pattern ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2128,115 +2242,111 @@ msgstr "" "kill [-s sigspec | -n signum | -sigspec] pid | darbospec ... arba kill -l " "[sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 #, fuzzy msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o nustatymas] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [pavadinimas ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [pavadinimas[=vertÄ—] ...] arba export -p" -#: builtins.c:146 +#: builtins.c:148 #, fuzzy msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-af] [pavadinimas[=vertÄ—] ...] arba readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source failopavadinimas [argumentai]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". failopavadinimas [argumentai]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [iÅ¡rk]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] signalo_spec ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] pavadinimas [pavadinimas ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [riba]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [režimas]" -#: builtins.c:175 +#: builtins.c:177 #, fuzzy msgid "wait [-n] [id ...]" msgstr "wait [id]" -#: builtins.c:179 +#: builtins.c:181 #, fuzzy msgid "wait [pid ...]" msgstr "wait [id]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for PAVADINIMAS [in ŽODŽIAI ... ] ; do KOMANDOS; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( iÅ¡rk1; iÅ¡rk2; iÅ¡rk3 )); do KOMANDOS; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select PAVADINIMAS [in ŽODŽIAI ... ;] do KOMANDOS; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2244,93 +2354,93 @@ msgstr "" "if KOMANDOS; then KOMANDOS; [ elif KOMANDOS; then KOMANDOS; ]... [ else " "KOMANDOS; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while KOMANDOS; do KOMANDOS; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until KOMANDOS; do KOMANDOS; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "funkcijos pavadinimas { KOMANDOS ; } arba name () { KOMANDOS ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ KOMANDOS ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "darbo_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( iÅ¡raiÅ¡ka ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ iÅ¡raiÅ¡ka ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "kintamieji – Kai kurių aplinkos kintamųjų pavadinimai ir reikÅ¡mÄ—s" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | dir]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [optvardas ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v kint] formatas [argumentai]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -#: builtins.c:237 +#: builtins.c:239 #, fuzzy msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "shopt [-pqsu] [-o] [optvardas ...]" -#: builtins.c:240 +#: builtins.c:242 msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" -#: builtins.c:254 +#: builtins.c:256 #, fuzzy msgid "" "Define or display aliases.\n" @@ -2343,7 +2453,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2359,20 +2469,20 @@ msgstr "" " iÅ¡skleidžiamas. „alias“ grąžina „true“, nebent duotas VARDAS, kuriam\n" " neapraÅ¡ytas joks alternatyvusis vardas." -#: builtins.c:276 +#: builtins.c:278 #, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "PaÅ¡alinti VARDUS iÅ¡ apraÅ¡ytų alternatyviųjų vardų sÄ…raÅ¡o. Jei nurodyta\n" " nuostata -a, paÅ¡alinti visus alternatyviuosius vardus." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2406,14 +2516,15 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2424,7 +2535,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:340 +#: builtins.c:342 #, fuzzy msgid "" "Resume for, while, or until loops.\n" @@ -2438,7 +2549,7 @@ msgstr "" "TÄ™sti kitÄ… FOR, WHILE arba UNTIL ciklo iteracijÄ….\n" " Jei N nurodytas, tÄ™sti ciklÄ…, esantį N lygmenų virÅ¡ esamo." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2452,7 +2563,7 @@ msgid "" " not a shell builtin.." msgstr "" -#: builtins.c:367 +#: builtins.c:369 #, fuzzy msgid "" "Return the context of the current subroutine call.\n" @@ -2477,7 +2588,7 @@ msgstr "" " IÅ RAIÅ KOS reikÅ¡mÄ— nurodo, per kiek kvietimo freimų grįžti nuo\n" " esamo; virÅ¡utinis freimas yra 0." -#: builtins.c:385 +#: builtins.c:387 #, fuzzy msgid "" "Change the shell working directory.\n" @@ -2501,16 +2612,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2534,13 +2645,13 @@ msgstr "" " užuot sekus simbolines nuorodas; parametras -L nurodo, kad turi bÅ«ti\n" " sekama simbolinÄ—mis nuorodomis." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2550,7 +2661,7 @@ msgid "" " cannot be read." msgstr "" -#: builtins.c:439 +#: builtins.c:442 #, fuzzy msgid "" "Null command.\n" @@ -2561,7 +2672,7 @@ msgid "" " Always succeeds." msgstr "Jokio efekto; komanda nieko nedaro. Grąžinamas klaidos kodas 0." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2569,7 +2680,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:459 +#: builtins.c:462 #, fuzzy msgid "" "Return an unsuccessful result.\n" @@ -2578,7 +2689,7 @@ msgid "" " Always fails." msgstr "Grąžinti nesÄ—kmingÄ… rezultatÄ…." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2588,16 +2699,16 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2607,9 +2718,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2637,14 +2748,14 @@ msgid "" " assignment error occurs." msgstr "" -#: builtins.c:527 +#: builtins.c:530 msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2659,7 +2770,7 @@ msgid "" " assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2685,15 +2796,15 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2706,7 +2817,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2733,7 +2844,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2745,7 +2856,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2786,7 +2897,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2797,8 +2908,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2809,7 +2920,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:706 +#: builtins.c:709 #, fuzzy msgid "" "Exit the shell.\n" @@ -2821,7 +2932,7 @@ msgstr "" "nustatomas\n" " paskutinÄ—s vykdytos komandos klaidos kodas." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2830,7 +2941,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2860,7 +2971,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2872,7 +2983,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2886,7 +2997,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -2895,22 +3006,22 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -2922,7 +3033,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2932,7 +3043,7 @@ msgid "" "given." msgstr "" -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2941,23 +3052,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -2966,7 +3077,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -2976,7 +3087,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -2990,7 +3101,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3000,14 +3111,14 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3019,7 +3130,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3029,7 +3141,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3074,7 +3186,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3095,27 +3207,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3125,7 +3238,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3137,7 +3250,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3205,7 +3318,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3222,7 +3336,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3232,7 +3346,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3244,7 +3358,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3263,7 +3377,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3275,9 +3389,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3285,7 +3398,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3296,7 +3409,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 #, fuzzy msgid "" "Execute commands from a file in the current shell.\n" @@ -3315,7 +3428,7 @@ msgstr "" " Jei nurodyta ARGUMENTŲ, jie tampa poziciniais parametrais iÅ¡kvietus\n" " FAILÄ„." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3329,7 +3442,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3393,9 +3506,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3412,7 +3525,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3420,7 +3533,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3432,7 +3545,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3476,7 +3589,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3485,18 +3598,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3506,7 +3619,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3524,6 +3637,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3535,7 +3649,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3553,7 +3668,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3571,7 +3686,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3591,7 +3706,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3606,7 +3721,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3619,7 +3734,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3636,7 +3751,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3656,7 +3771,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3672,7 +3787,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3683,7 +3798,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3704,7 +3819,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1629 #, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" @@ -3718,7 +3833,7 @@ msgstr "" "IÅ¡skleisti ir vykdyti KOMANDAS tol, kol galutinÄ— komanda iÅ¡\n" " „while“ komandų grąžina klaidos kodÄ… 0." -#: builtins.c:1632 +#: builtins.c:1641 #, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" @@ -3732,7 +3847,7 @@ msgstr "" "IÅ¡skleisti ir vykdyti KOMANDAS tol, kol galutinÄ— komanda iÅ¡\n" " „until“ komandų grąžina klaidos kodÄ…, nelygų 0." -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3742,10 +3857,10 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3759,7 +3874,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1672 +#: builtins.c:1681 #, fuzzy msgid "" "Group commands as a unit.\n" @@ -3773,7 +3888,7 @@ msgstr "" "Vykdyti eilÄ™ komandų grupÄ—je. Tai yra vienas iÅ¡ bÅ«dų nukreipti\n" " visos eilÄ—s komandų įvedimÄ…/iÅ¡vedimÄ…." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3787,7 +3902,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3798,7 +3913,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3826,7 +3941,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3880,7 +3995,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -3890,19 +4005,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3911,7 +4026,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -3920,16 +4035,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3938,7 +4053,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -3949,25 +4064,25 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -3988,7 +4103,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1908 +#: builtins.c:1919 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -4006,15 +4121,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -4039,7 +4154,7 @@ msgstr "" " Jei pateiktas parametras -v, iÅ¡vedimas įraÅ¡omas į aplinkos kintamÄ…jį\n" " KINT, užuot spausdinus į standartinį iÅ¡vedimÄ…." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4052,11 +4167,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -4066,7 +4181,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 #, fuzzy msgid "" "Display possible completions depending on the options.\n" @@ -4084,7 +4199,7 @@ msgstr "" " Jei pateiktas nebÅ«tinasis ŽODŽIO argumentas, iÅ¡vedami įraÅ¡ai,\n" " atitinkantys ŽODÄ®." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4115,7 +4230,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4126,20 +4241,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4156,13 +4272,33 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "AutorinÄ—s teisÄ—s (C) 2009 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#, fuzzy +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "AutorinÄ—s teisÄ—s (C) 2009 Free Software Foundation, Inc." + #, fuzzy #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "AutorinÄ—s teisÄ—s (C) 2009 Free Software Foundation, Inc." @@ -4303,9 +4439,6 @@ msgstr "" #~ msgid "removes the top directory from the stack, and cd's to the new" #~ msgstr "paÅ¡alina virÅ¡utinį aplankÄ… iÅ¡ steko ir pakeiÄia darbinį aplankÄ…" -#~ msgid "top directory." -#~ msgstr "steko viršūnÄ—je esanÄiu." - #~ msgid "+N removes the Nth entry counting from the left of the list" #~ msgstr "" #~ "+N paÅ¡alina N-tÄ…jį įrašą skaiÄiuojant iÅ¡ kairÄ—s sÄ…raÅ¡e, iÅ¡vedamame „dir“" diff --git a/po/nb.gmo b/po/nb.gmo new file mode 100644 index 0000000000000000000000000000000000000000..63a485d600b59f8b415c04d3847a3780a065f064 GIT binary patch literal 152775 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
    2. 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 literal 0 HcmV?d00001 diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 0000000..441d8a0 --- /dev/null +++ b/po/nb.po @@ -0,0 +1,5738 @@ +# Norwegian (bokmÃ¥l) translation of GNU Bash +# Copyright (C) 2015 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Ã…ka Sikrom , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: bash-4.4-beta1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-22 12:19+0100\n" +"Last-Translator: Ã…ka Sikrom \n" +"Language-Team: Norwegian Bokmaal \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: Norwegian bokmÃ¥l\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.5.4\n" + +#: arrayfunc.c:54 +msgid "bad array subscript" +msgstr "feil i tabell-underskript" + +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: indeksert tabell kan ikke konverteres til assosiativ tabell" + +#: arrayfunc.c:578 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: ugyldig nøkkel for assosiativ tabell" + +#: arrayfunc.c:580 +#, c-format +msgid "%s: cannot assign to non-numeric index" +msgstr "%s: kan ikke tildeles ikke-numerisk indeks" + +#: arrayfunc.c:625 +#, c-format +msgid "%s: %s: must use subscript when assigning associative array" +msgstr "%s: %s: underskript mÃ¥ brukes ved tildeling av assosiative tabeller" + +#: bashhist.c:421 +#, c-format +msgid "%s: cannot create: %s" +msgstr "%s: klarte ikke Ã¥ opprette: %s" + +#: bashline.c:4091 +msgid "bash_execute_unix_command: cannot find keymap for command" +msgstr "bash_execute_unix_command: fant ikke tastaturoppsett for kommando" + +#: bashline.c:4189 +#, c-format +msgid "%s: first non-whitespace character is not `\"'" +msgstr "%s: første ikke-blanktegn mÃ¥ være «\"»" + +#: bashline.c:4218 +#, c-format +msgid "no closing `%c' in %s" +msgstr "avsluttende «%c» mangler i %s" + +#: bashline.c:4252 +#, c-format +msgid "%s: missing colon separator" +msgstr "%s: kolon-skilletegn mangler" + +#: braces.c:329 +#, c-format +msgid "brace expansion: cannot allocate memory for %s" +msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for %s" + +#: braces.c:427 +#, c-format +msgid "brace expansion: failed to allocate memory for %d elements" +msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for %d elementer" + +#: braces.c:471 +#, c-format +msgid "brace expansion: failed to allocate memory for `%s'" +msgstr "brace-utvidelse: klarte ikke Ã¥ tildele minne for «%s»" + +#: builtins/alias.def:133 +#, c-format +msgid "`%s': invalid alias name" +msgstr "«%s»: ugyldig alias" + +#: builtins/bind.def:123 builtins/bind.def:126 +msgid "line editing not enabled" +msgstr "linjeredigering er ikke slÃ¥tt pÃ¥" + +#: builtins/bind.def:213 +#, c-format +msgid "`%s': invalid keymap name" +msgstr "«%s»: ugyldig navn pÃ¥ tastaturoppsett" + +#: builtins/bind.def:253 +#, c-format +msgid "%s: cannot read: %s" +msgstr "%s: klarte ikke Ã¥ lese: %s" + +#: builtins/bind.def:270 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: klarte ikke Ã¥ fjerne tildeling" + +#: builtins/bind.def:308 builtins/bind.def:338 +#, c-format +msgid "`%s': unknown function name" +msgstr "«%s»: ukjent funksjonsnavn" + +#: builtins/bind.def:316 +#, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s er ikke tilknyttet en knapp.\n" + +#: builtins/bind.def:320 +#, c-format +msgid "%s can be invoked via " +msgstr "%s kan startes via" + +#: builtins/break.def:79 builtins/break.def:121 +msgid "loop count" +msgstr "antall sløyfer" + +#: builtins/break.def:141 +msgid "only meaningful in a `for', `while', or `until' loop" +msgstr "gir bare mening i «for»-, «while»- og «until»-sløyfer" + +#: builtins/caller.def:136 +msgid "" +"Returns the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns " +msgstr "" +"Viser kontekst for kall av gjeldende underrutine.\n" +" \n" +" Hvis EXPR mangler, vises" + +#: builtins/cd.def:321 +msgid "HOME not set" +msgstr "HOME har ingen verdi" + +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 +msgid "too many arguments" +msgstr "for mange argumenter" + +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "ingen annen mappe" + +#: builtins/cd.def:347 +msgid "OLDPWD not set" +msgstr "OLDPWD har ingen verdi" + +#: builtins/common.c:102 +#, c-format +msgid "line %d: " +msgstr "linje %d: " + +#: builtins/common.c:140 error.c:265 +#, c-format +msgid "warning: " +msgstr "advarsel:" + +#: builtins/common.c:154 +#, c-format +msgid "%s: usage: " +msgstr "%s: bruk: " + +#: builtins/common.c:199 shell.c:514 shell.c:825 +#, c-format +msgid "%s: option requires an argument" +msgstr "%s: valget krever et argument" + +#: builtins/common.c:206 +#, c-format +msgid "%s: numeric argument required" +msgstr "%s: valget krever et tall-argument" + +#: builtins/common.c:213 +#, c-format +msgid "%s: not found" +msgstr "%s: ikke funnet" + +#: builtins/common.c:222 shell.c:838 +#, c-format +msgid "%s: invalid option" +msgstr "%s: ugyldig valg" + +#: builtins/common.c:229 +#, c-format +msgid "%s: invalid option name" +msgstr "%s: ugyldig valgnavn" + +#: builtins/common.c:236 general.c:293 general.c:298 +#, c-format +msgid "`%s': not a valid identifier" +msgstr "«%s»: ugyldig navn" + +#: builtins/common.c:246 +msgid "invalid octal number" +msgstr "ugyldig oktal-tall" + +#: builtins/common.c:248 +msgid "invalid hex number" +msgstr "ugldig heksadesimalt tall" + +#: builtins/common.c:250 expr.c:1473 +msgid "invalid number" +msgstr "ugyldig tall" + +#: builtins/common.c:258 +#, c-format +msgid "%s: invalid signal specification" +msgstr "%s: ugyldig signalspesifikasjon" + +#: builtins/common.c:265 +#, c-format +msgid "`%s': not a pid or valid job spec" +msgstr "«%s» er hverken hverken et PID eller en gyldig jobbspesifikasjon" + +#: builtins/common.c:272 error.c:511 +#, c-format +msgid "%s: readonly variable" +msgstr "%s: skrivebeskyttet variabel" + +#: builtins/common.c:280 +#, c-format +msgid "%s: %s out of range" +msgstr "%s: %s er utenfor rekkevidde" + +#: builtins/common.c:280 builtins/common.c:282 +msgid "argument" +msgstr "argument" + +#: builtins/common.c:282 +#, c-format +msgid "%s out of range" +msgstr "%s er utenfor rekkevidde" + +#: builtins/common.c:290 +#, c-format +msgid "%s: no such job" +msgstr "%s: jobben finnes ikke" + +#: builtins/common.c:298 +#, c-format +msgid "%s: no job control" +msgstr "%s: ingen jobbkontroll" + +#: builtins/common.c:300 +msgid "no job control" +msgstr "ingen jobbkontroll" + +#: builtins/common.c:310 +#, c-format +msgid "%s: restricted" +msgstr "%s: begrenset" + +#: builtins/common.c:312 +msgid "restricted" +msgstr "begrenset" + +#: builtins/common.c:320 +#, c-format +msgid "%s: not a shell builtin" +msgstr "%s: ikke innebygd i skall" + +#: builtins/common.c:329 +#, c-format +msgid "write error: %s" +msgstr "skrivefeil: %s" + +#: builtins/common.c:337 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "feil ved endring av terminal-egenskaper: %s" + +#: builtins/common.c:339 +#, c-format +msgid "error getting terminal attributes: %s" +msgstr "feil ved henting av terminal-egenskaper: %s" + +#: builtins/common.c:585 +#, c-format +msgid "%s: error retrieving current directory: %s: %s\n" +msgstr "%s: feil ved henting av gjeldende mappe: %s: %s\n" + +#: builtins/common.c:651 builtins/common.c:653 +#, c-format +msgid "%s: ambiguous job spec" +msgstr "%s: flertydig jobbspesifikasjon" + +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "hjelp er ikke tilgjengelig for denne versjonen" + +#: builtins/complete.def:278 +#, c-format +msgid "%s: invalid action name" +msgstr "%s: ugyldig handlingsnavn" + +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 +#, c-format +msgid "%s: no completion specification" +msgstr "%s: ingen spesifikasjon for fullføring" + +#: builtins/complete.def:699 +msgid "warning: -F option may not work as you expect" +msgstr "advarsel: valget «-F» virker kanskje ikke slik du forventer" + +#: builtins/complete.def:701 +msgid "warning: -C option may not work as you expect" +msgstr "advarsel: valget «-C» virker kanskje ikke slik du forventer" + +#: builtins/complete.def:831 +msgid "not currently executing completion function" +msgstr "fullføringsfunksjon kjøres ikke nÃ¥" + +#: builtins/declare.def:127 +msgid "can only be used in a function" +msgstr "kan bare brukes i funksjoner" + +#: builtins/declare.def:332 builtins/declare.def:685 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: referansevariabler kan ikke være tabeller (arrays)" + +#: builtins/declare.def:343 variables.c:2959 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: navnref.-variabler kan ikke referere til seg selv" + +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: sirkulær navnreferanse" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: ugyldig variabelnavn for navnreferanse" + +#: builtins/declare.def:463 +msgid "cannot use `-f' to make functions" +msgstr "valget«-f» kan ikke brukes til Ã¥ lage funksjoner" + +#: builtins/declare.def:475 execute_cmd.c:5632 +#, c-format +msgid "%s: readonly function" +msgstr "%s: skrivebeskyttet funksjon" + +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: sammensatt tabell-tideling i hermetegn er utgÃ¥tt" + +#: builtins/declare.def:767 +#, c-format +msgid "%s: cannot destroy array variables in this way" +msgstr "%s: tabellvariabler kan ikke ødelegges pÃ¥ denne mÃ¥ten" + +#: builtins/declare.def:774 builtins/read.def:751 +#, c-format +msgid "%s: cannot convert associative to indexed array" +msgstr "%s: assosiative tabeller kan ikke konverteres til indekserte tabeller" + +#: builtins/enable.def:143 builtins/enable.def:151 +msgid "dynamic loading not available" +msgstr "dynamisk innlasting er ikke tilgjengelig" + +#: builtins/enable.def:343 +#, c-format +msgid "cannot open shared object %s: %s" +msgstr "klarte ikke Ã¥ Ã¥pne delt objekt %s: %s" + +#: builtins/enable.def:369 +#, c-format +msgid "cannot find %s in shared object %s: %s" +msgstr "fant ikke %s i delt objekt %s: %s" + +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "innlastingsfunksjon for %s førte til feilkode (%d). Ikke lastet inn" + +#: builtins/enable.def:512 +#, c-format +msgid "%s: not dynamically loaded" +msgstr "%s: ikke dynamisk innlastet" + +#: builtins/enable.def:538 +#, c-format +msgid "%s: cannot delete: %s" +msgstr "%s: klarte ikke Ã¥ slette: %s" + +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 +#, c-format +msgid "%s: is a directory" +msgstr "%s: er en mappe" + +#: builtins/evalfile.c:150 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: ikke en vanlig fil" + +#: builtins/evalfile.c:159 +#, c-format +msgid "%s: file is too large" +msgstr "%s: fila er for stor" + +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 +#, c-format +msgid "%s: cannot execute binary file" +msgstr "%s: klarte ikke Ã¥ kjøre binærfil" + +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#, c-format +msgid "%s: cannot execute: %s" +msgstr "%s: klarte ikke Ã¥ kjøre: %s" + +#: builtins/exit.def:67 +#, c-format +msgid "logout\n" +msgstr "logg ut\n" + +#: builtins/exit.def:92 +msgid "not login shell: use `exit'" +msgstr "ikke innloggingsskall. Bruk «exit»" + +#: builtins/exit.def:124 +#, c-format +msgid "There are stopped jobs.\n" +msgstr "Bakgrunnsjobb(er) venter.\n" + +#: builtins/exit.def:126 +#, c-format +msgid "There are running jobs.\n" +msgstr "Bakgrunnsjobb(er) kjører.\n" + +#: builtins/fc.def:269 +msgid "no command found" +msgstr "fant ingen kommando" + +#: builtins/fc.def:327 builtins/fc.def:376 +msgid "history specification" +msgstr "historikk-spesifikasjon" + +#: builtins/fc.def:397 +#, c-format +msgid "%s: cannot open temp file: %s" +msgstr "%s: klarte ikke Ã¥ Ã¥pne midlertidig fil: %s" + +#: builtins/fg_bg.def:153 builtins/jobs.def:284 +msgid "current" +msgstr "gjeldende" + +#: builtins/fg_bg.def:162 +#, c-format +msgid "job %d started without job control" +msgstr "jobb %d startet uten jobbkontroll" + +#: builtins/getopt.c:110 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: -- %c er et ugyldig valg\n" + +#: builtins/getopt.c:111 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: -- %c krever et argument\n" + +#: builtins/hash.def:92 +msgid "hashing disabled" +msgstr "nøkkelsummering er slÃ¥tt av" + +#: builtins/hash.def:139 +#, c-format +msgid "%s: hash table empty\n" +msgstr "%s: kontrollsum-tabell er tom\n" + +#: builtins/hash.def:254 +#, c-format +msgid "hits\tcommand\n" +msgstr "treff\tkommando\n" + +#: builtins/help.def:135 +#, c-format +msgid "Shell commands matching keyword `" +msgid_plural "Shell commands matching keywords `" +msgstr[0] "Skallkommandoer som samsvarer med nøkkelordet `" +msgstr[1] "Skallkommandoer som samsvarer med nøkkelordene `" + +#: builtins/help.def:187 +#, c-format +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"ingen hjelpeemner samsvarer med «%s». Prøv «help help», «man -k %s» eller «info " +"%s»." + +#: builtins/help.def:226 +#, c-format +msgid "%s: cannot open: %s" +msgstr "%s: klarte ikke Ã¥ Ã¥pne: %s" + +#: builtins/help.def:526 +#, c-format +msgid "" +"These shell commands are defined internally. Type `help' to see this list.\n" +"Type `help name' to find out more about the function `name'.\n" +"Use `info bash' to find out more about the shell in general.\n" +"Use `man -k' or `info' to find out more about commands not in this list.\n" +"\n" +"A star (*) next to a name means that the command is disabled.\n" +"\n" +msgstr "" +"Disse skallkommandoene er internt definert. Skriv «help» for Ã¥ se denne " +"lista.\n" +"Skriv «help name» for Ã¥ finne ut mer om funksjonen «name».\n" +"Bruk «info bash» for Ã¥ finne generell info om skallet.\n" +"Bruk «man -k» eller «info» for Ã¥ finne ut mer om kommandoer som ikke er pÃ¥ " +"denne lista.\n" +"\n" +"Stjerne (*) ved siden av et kommandonavn betyr at gjeldende kommando er " +"slÃ¥tt av.\n" +"\n" + +#: builtins/history.def:155 +msgid "cannot use more than one of -anrw" +msgstr "du kan ikke bruke flere enn ett av valgene -anrw pÃ¥ én gang" + +#: builtins/history.def:187 +msgid "history position" +msgstr "historikkposisjon" + +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: ugyldig argument" + +#: builtins/history.def:375 +#, c-format +msgid "%s: history expansion failed" +msgstr "%s: historikk-utvidelse mislyktes" + +#: builtins/inlib.def:71 +#, c-format +msgid "%s: inlib failed" +msgstr "%s: inlib mislyktes" + +#: builtins/jobs.def:109 +msgid "no other options allowed with `-x'" +msgstr "valget «-x» kan ikke brukes i kombinasjon med andre valg" + +#: builtins/kill.def:202 +#, c-format +msgid "%s: arguments must be process or job IDs" +msgstr "%s: argumenter mÃ¥ være prosess- eller jobb-ID-er" + +#: builtins/kill.def:265 +msgid "Unknown error" +msgstr "Ukjent feil" + +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 +msgid "expression expected" +msgstr "forventet uttrykk" + +#: builtins/mapfile.def:178 +#, c-format +msgid "%s: not an indexed array" +msgstr "%s: ikke en indeksert tabell" + +#: builtins/mapfile.def:272 builtins/read.def:306 +#, c-format +msgid "%s: invalid file descriptor specification" +msgstr "%s: ugyldig spesifikasjon av fildeskriptor" + +#: builtins/mapfile.def:280 builtins/read.def:313 +#, c-format +msgid "%d: invalid file descriptor: %s" +msgstr "%d: ugyldig fildeskriptor: %s" + +#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#, c-format +msgid "%s: invalid line count" +msgstr "%s: ugyldig linjeantall" + +#: builtins/mapfile.def:300 +#, c-format +msgid "%s: invalid array origin" +msgstr "%s: ugyldig tabellopphav" + +#: builtins/mapfile.def:317 +#, c-format +msgid "%s: invalid callback quantum" +msgstr "%s: ugyldig tilbakekallsmengde" + +#: builtins/mapfile.def:350 +msgid "empty array variable name" +msgstr "tomt navn pÃ¥ tabellvariabel" + +#: builtins/mapfile.def:371 +msgid "array variable support required" +msgstr "støtte for tabellvariabler kreves" + +#: builtins/printf.def:412 +#, c-format +msgid "`%s': missing format character" +msgstr "«%s»: formattegn mangler" + +#: builtins/printf.def:467 +#, c-format +msgid "`%c': invalid time format specification" +msgstr "«%c»: ugyldig spesifikasjon av tidsformat" + +#: builtins/printf.def:669 +#, c-format +msgid "`%c': invalid format character" +msgstr "«%c»: ugyldig formattegn" + +#: builtins/printf.def:695 +#, c-format +msgid "warning: %s: %s" +msgstr "advarsel: %s: %s" + +#: builtins/printf.def:781 +#, c-format +msgid "format parsing problem: %s" +msgstr "problem med tolkning av format: %s" + +#: builtins/printf.def:878 +msgid "missing hex digit for \\x" +msgstr "heks-siffer mangler for \\x" + +#: builtins/printf.def:893 +#, c-format +msgid "missing unicode digit for \\%c" +msgstr "unicode-siffer mangler for \\%c" + +#: builtins/pushd.def:199 +msgid "no other directory" +msgstr "ingen annen mappe" + +#: builtins/pushd.def:360 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: ugyldig argument" + +#: builtins/pushd.def:475 +msgid "" +msgstr "" + +#: builtins/pushd.def:519 +msgid "directory stack empty" +msgstr "mappestabel er tom" + +#: builtins/pushd.def:521 +msgid "directory stack index" +msgstr "mappestabel-indeks" + +#: builtins/pushd.def:696 +msgid "" +"Display the list of currently remembered directories. Directories\n" +" find their way onto the list with the `pushd' command; you can get\n" +" back up through the list with the `popd' command.\n" +" \n" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" +" \tdirs when invoked without options, starting with zero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" +"\tdirs when invoked without options, starting with zero." +msgstr "" +"Vis liste over mapper som blir husket. Mapper\n" +" havner pÃ¥ denne lista med kommandoen «pushd». Du kan gÃ¥\n" +" tilbake i lista med kommandoen «popd».\n" +" \n" +" Valg:\n" +" -c\ttøm mappestabel ved Ã¥ slette alle elementer\n" +" -l\tikke legg til tildeprefiks pÃ¥ stier som er relative\n" +" \ttil gjeldende hjemmemappe\n" +" -p\tskriv ut mappetsabel med ett element per linje\n" +" -v\tskriv ut mappestabel med ett element per linje som har\n" +" \tstabelposisjon som prefiks\n" +" \n" +" Argumenter:\n" +" +N\tVis N-te mappe talt fra null\n" +" \tpÃ¥ venstre side av lista (gjelder nÃ¥r programmet kjøres uten valg).\n" +" \n" +" -N\tVis N-te mappe talt fra null\n" +"\tpÃ¥ høyre side av lista (gjelder nÃ¥r programmet kjøres uten valg)." + +#: builtins/pushd.def:718 +msgid "" +"Adds a directory to the top of the directory stack, or rotates\n" +" the stack, making the new top of the stack the current working\n" +" directory. With no arguments, exchanges the top two directories.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the left of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \tfrom the right of the list shown by `dirs', starting with\n" +" \tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Legger til en mappe i toppen av mappestabelen, eller rullerer\n" +" stabelen slik at øverste mappe blir gjeldende arbeidsmappe.\n" +" Hvis ingen argumenter er valgt, bytter de to øverste mappene plass.\n" +" \n" +" Valg:\n" +" -n\tLar være Ã¥ bytte mappe nÃ¥r mapper legges til i stabelen,\n" +" \tslik at kun selve stabelen blir endret.\n" +" \n" +" Argumenter:\n" +" +N\tRullerer stabelen slik at N-te mappe - talt fra\n" +" \tnull til venstre i lista etter «dirs» - havner øverst.\n" +" \n" +" -N\tRullerer stabelen slik at N-te mappe - talt fra\n" +" \tnull til høyre i lista etter «dirs» - havner øverst\n" +" \n" +" dir\tLegger til DIR i toppen av mappestabelen, og tar den\n" +" \ti bruk som gjeldende arbeidsmappe.\n" +" \n" +" Den innebygde funksjonen «dirs» viser mappestabelen." + +#: builtins/pushd.def:743 +msgid "" +"Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack." +msgstr "" +"Fjerner mapper fra mappestabelen. Hvis ingen argumenter brukes,\n" +" fjerner programmet øverste mappe fra stabelen og bytter til det som " +"deretter er øverste mappe.\n" +" \n" +" Valg:\n" +" -n\tLar være Ã¥ bytte mappe nÃ¥r mapper fjernes fra stabelen,\n" +" \tslik at bare stabelen blir endret.\n" +" \n" +" Argumenter:\n" +" +N\tFjerner N-te oppføring - talt fra null til venstre i lista\n" +" \tetter «dirs». For eksempel fjerner «popd +0»\n" +" \tførste mappe, og «popd +1» den andre.\n" +" \n" +" -N\tFjerner N-te oppføring - talt fra null til høyre i lista\n" +" \tetter «dirs». For eksempel fjerner «popd -0»\n" +" \tsiste mappe, og «popd -1» den nest siste.\n" +" \n" +" Den innebygde funksjonen «dirs» viser mappestabelen." + +#: builtins/read.def:279 +#, c-format +msgid "%s: invalid timeout specification" +msgstr "%s: ugyldig spesifikasjon av tidsavbrudd" + +#: builtins/read.def:696 +#, c-format +msgid "read error: %d: %s" +msgstr "lesefeil: %d: %s" + +#: builtins/return.def:71 +msgid "can only `return' from a function or sourced script" +msgstr "du kan bare «return» fra en funksjon eller kildeskript" + +#: builtins/set.def:841 +msgid "cannot simultaneously unset a function and a variable" +msgstr "" +"du kan ikke utføre «unset» (tømme bÃ¥de en funksjon og en variabel for " +"verdier) samtidig" + +#: builtins/set.def:888 +#, c-format +msgid "%s: cannot unset" +msgstr "%s: klarte ikke Ã¥ fjerne verdi" + +#: builtins/set.def:909 variables.c:3389 +#, c-format +msgid "%s: cannot unset: readonly %s" +msgstr "%s: klarte ikke Ã¥ fjerne verdi fra skrivebeskyttet %s" + +#: builtins/set.def:922 +#, c-format +msgid "%s: not an array variable" +msgstr "%s: ikke en tabellvariabel" + +#: builtins/setattr.def:191 +#, c-format +msgid "%s: not a function" +msgstr "%s: ikke en funksjon" + +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: klarte ikke Ã¥ eksportere" + +#: builtins/shift.def:73 builtins/shift.def:79 +msgid "shift count" +msgstr "shift-antall" + +#: builtins/shopt.def:289 +msgid "cannot set and unset shell options simultaneously" +msgstr "du kan ikke bÃ¥de definere og fjerne skallvalg samtidig" + +#: builtins/shopt.def:391 +#, c-format +msgid "%s: invalid shell option name" +msgstr "%s: ugyldig navn pÃ¥ skallvalg" + +#: builtins/source.def:131 +msgid "filename argument required" +msgstr "filnavn-argument kreves" + +#: builtins/source.def:157 +#, c-format +msgid "%s: file not found" +msgstr "%s: fant ikke fil" + +#: builtins/suspend.def:102 +msgid "cannot suspend" +msgstr "klarte ikke Ã¥ sette i hvilemodus" + +#: builtins/suspend.def:112 +msgid "cannot suspend a login shell" +msgstr "klarte ikke Ã¥ sette et innloggingsskall i hvilemodus" + +#: builtins/type.def:236 +#, c-format +msgid "%s is aliased to `%s'\n" +msgstr "%s har alias «%s»\n" + +#: builtins/type.def:257 +#, c-format +msgid "%s is a shell keyword\n" +msgstr "%s er et skall-nøkkelord\n" + +#: builtins/type.def:276 +#, c-format +msgid "%s is a function\n" +msgstr "%s er en funksjon\n" + +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s er en innebygd skallkommando\n" + +#: builtins/type.def:302 +#, c-format +msgid "%s is a shell builtin\n" +msgstr "%s er en innebygget skallfunksjon\n" + +#: builtins/type.def:324 builtins/type.def:409 +#, c-format +msgid "%s is %s\n" +msgstr "%s er %s\n" + +#: builtins/type.def:344 +#, c-format +msgid "%s is hashed (%s)\n" +msgstr "%s er nøkkelsummert («hashed») (%s)\n" + +#: builtins/ulimit.def:398 +#, c-format +msgid "%s: invalid limit argument" +msgstr "%s: ugyldig grenseargument" + +#: builtins/ulimit.def:424 +#, c-format +msgid "`%c': bad command" +msgstr "«%c»: ugyldig kommando" + +#: builtins/ulimit.def:453 +#, c-format +msgid "%s: cannot get limit: %s" +msgstr "%s: klarte ikke Ã¥ hente grense: %s" + +#: builtins/ulimit.def:479 +msgid "limit" +msgstr "grense" + +#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#, c-format +msgid "%s: cannot modify limit: %s" +msgstr "%s: klarte ikke Ã¥ endre grense: %s" + +#: builtins/umask.def:115 +msgid "octal number" +msgstr "oktalt tall" + +#: builtins/umask.def:232 +#, c-format +msgid "`%c': invalid symbolic mode operator" +msgstr "«%c»: ugyldig symbolsk modus-operatør" + +#: builtins/umask.def:287 +#, c-format +msgid "`%c': invalid symbolic mode character" +msgstr "«%c»: ugyldig symbolsk modustegn" + +#: error.c:90 error.c:348 error.c:350 error.c:352 +msgid " line " +msgstr " linje " + +#: error.c:165 +#, c-format +msgid "last command: %s\n" +msgstr "forrige kommando: %s\n" + +#: error.c:173 +#, c-format +msgid "Aborting..." +msgstr "Abryter …" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:463 +msgid "unknown command error" +msgstr "ukjent kommandofeil" + +#: error.c:464 +msgid "bad command type" +msgstr "ugyldig kommandotype" + +#: error.c:465 +msgid "bad connector" +msgstr "ugyldig tilkobling" + +#: error.c:466 +msgid "bad jump" +msgstr "ugyldig hopp" + +#: error.c:504 +#, c-format +msgid "%s: unbound variable" +msgstr "%s: utildelt variabel" + +#: eval.c:209 +#, c-format +msgid "\atimed out waiting for input: auto-logout\n" +msgstr "\atidsavbrudd for inndata: auto-utlogging\n" + +#: execute_cmd.c:527 +#, c-format +msgid "cannot redirect standard input from /dev/null: %s" +msgstr "klarte ikke Ã¥ videresende standard inndata fra «/dev/null». %s" + +#: execute_cmd.c:1275 +#, c-format +msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: «%c» er et ugyldig formattegn" + +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 +msgid "pipe error" +msgstr "datarør-feil" + +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" +"eval: grensa for nivÃ¥er av eval-funksjoner i eval-funksjoner (%d) er " +"overskredet" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: grensa for nivÃ¥er av kilder i kilder (%d) er overskredet" + +#: execute_cmd.c:4616 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "%s: grensa for nivÃ¥er av funksjoner i funksjoner (%d) er overskredet" + +#: execute_cmd.c:5144 +#, c-format +msgid "%s: restricted: cannot specify `/' in command names" +msgstr "%s: ikke tillatt: kommandonavn kan ikke inneholde «/»" + +#: execute_cmd.c:5232 +#, c-format +msgid "%s: command not found" +msgstr "%s: fant ikke kommando" + +#: execute_cmd.c:5470 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: execute_cmd.c:5508 +#, c-format +msgid "%s: %s: bad interpreter" +msgstr "%s: %s: ugyldig tolk" + +#: execute_cmd.c:5545 +#, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: klarte ikke Ã¥ kjøre binærfil: %s" + +#: execute_cmd.c:5623 +#, c-format +msgid "`%s': is a special builtin" +msgstr "«%s» er en innebygd spesialfunksjon" + +#: execute_cmd.c:5675 +#, c-format +msgid "cannot duplicate fd %d to fd %d" +msgstr "klarte ikke Ã¥ duplisere fd %d til fd %d" + +#: expr.c:259 +msgid "expression recursion level exceeded" +msgstr "grensa for rekursjonsnivÃ¥er i uttrykk er overskredet" + +#: expr.c:283 +msgid "recursion stack underflow" +msgstr "rekursjonsstabelen er tom" + +#: expr.c:431 +msgid "syntax error in expression" +msgstr "uttrykk inneholder syntaksfeil" + +#: expr.c:475 +msgid "attempted assignment to non-variable" +msgstr "du forsøkte Ã¥ tilordne en verdi til noe som ikke er en variabel" + +#: expr.c:495 expr.c:858 +msgid "division by 0" +msgstr "forsøkte Ã¥ dele pÃ¥ 0" + +#: expr.c:542 +msgid "bug: bad expassign token" +msgstr "programfeil: ugyldig expassign-symbol" + +#: expr.c:595 +msgid "`:' expected for conditional expression" +msgstr "forventet «:» for betinget uttrykk" + +#: expr.c:919 +msgid "exponent less than 0" +msgstr "eksponent er lavere enn 0" + +#: expr.c:976 +msgid "identifier expected after pre-increment or pre-decrement" +msgstr "forventet identifikator etter pre-økning eller pre-forminskelse" + +#: expr.c:1002 +msgid "missing `)'" +msgstr "mangler «)»" + +#: expr.c:1053 expr.c:1393 +msgid "syntax error: operand expected" +msgstr "syntaksfeil: forventet operand" + +#: expr.c:1395 +msgid "syntax error: invalid arithmetic operator" +msgstr "syntaksfeil: ugyldig aritmetisk operatør" + +#: expr.c:1419 +#, c-format +msgid "%s%s%s: %s (error token is \"%s\")" +msgstr "%s%s%s: %s (feilaktig symbol er «%s»)" + +#: expr.c:1477 +msgid "invalid arithmetic base" +msgstr "ugyldig aritmetisk grunntall" + +#: expr.c:1497 +msgid "value too great for base" +msgstr "verdien er for høy for grunntallet" + +#: expr.c:1546 +#, c-format +msgid "%s: expression error\n" +msgstr "%s: feil i uttrykk\n" + +#: general.c:68 +msgid "getcwd: cannot access parent directories" +msgstr "getcwd: fikk ikke tilgang til foreldermapper" + +#: input.c:102 subst.c:5858 +#, c-format +msgid "cannot reset nodelay mode for fd %d" +msgstr "klarte ikke Ã¥ tilbakestille nodelay-modus for fd %d" + +#: input.c:271 +#, c-format +msgid "cannot allocate new file descriptor for bash input from fd %d" +msgstr "klarte ikke Ã¥ knytte ny fildeskriptor til bash-inndata fra fd %d" + +#: input.c:279 +#, c-format +msgid "save_bash_input: buffer already exists for new fd %d" +msgstr "save_bash_input: mellomlager for ny fd %d finnes allerede" + +#: jobs.c:527 +msgid "start_pipeline: pgrp pipe" +msgstr "start_pipeline: pgrp-datarør" + +#: jobs.c:1035 +#, c-format +msgid "forked pid %d appears in running job %d" +msgstr "kopiert pid %d finnes i kjørende jobb %d" + +#: jobs.c:1154 +#, c-format +msgid "deleting stopped job %d with process group %ld" +msgstr "sletter ventende bakgrunnsjobb %d med prosessgruppe %ld" + +#: jobs.c:1258 +#, c-format +msgid "add_process: process %5ld (%s) in the_pipeline" +msgstr "add_process: prosess %5ld (%s) i _kommandokø" + +#: jobs.c:1261 +#, c-format +msgid "add_process: pid %5ld (%s) marked as still alive" +msgstr "add_process: markert PID %5ld (%s) som levende" + +#: jobs.c:1590 +#, c-format +msgid "describe_pid: %ld: no such pid" +msgstr "describe_pid: %ld: pid-en finnes ikke" + +#: jobs.c:1605 +#, c-format +msgid "Signal %d" +msgstr "Signal %d" + +#: jobs.c:1619 jobs.c:1645 +msgid "Done" +msgstr "Ferdig" + +#: jobs.c:1624 siglist.c:123 +msgid "Stopped" +msgstr "Venter" + +#: jobs.c:1628 +#, c-format +msgid "Stopped(%s)" +msgstr "Venter(%s)" + +#: jobs.c:1632 +msgid "Running" +msgstr "Kjører" + +#: jobs.c:1649 +#, c-format +msgid "Done(%d)" +msgstr "Ferdig(%d)" + +#: jobs.c:1651 +#, c-format +msgid "Exit %d" +msgstr "Avsluttet %d" + +#: jobs.c:1654 +msgid "Unknown status" +msgstr "Ukjent status" + +#: jobs.c:1741 +#, c-format +msgid "(core dumped) " +msgstr "(kjerne lagret i fil) " + +#: jobs.c:1760 +#, c-format +msgid " (wd: %s)" +msgstr " (wd: %s)" + +#: jobs.c:1985 +#, c-format +msgid "child setpgid (%ld to %ld)" +msgstr "underprosess setpgid (%ld til %ld)" + +#: jobs.c:2347 nojobs.c:654 +#, c-format +msgid "wait: pid %ld is not a child of this shell" +msgstr "wait: pid %ld er ikke en underprosess av dette skallet" + +#: jobs.c:2602 +#, c-format +msgid "wait_for: No record of process %ld" +msgstr "wait_for: Ingen kjennskap til prosess %ld" + +#: jobs.c:2929 +#, c-format +msgid "wait_for_job: job %d is stopped" +msgstr "wait_for_job: prosess %d venter" + +#: jobs.c:3221 +#, c-format +msgid "%s: job has terminated" +msgstr "%s: jobben er avsluttet" + +#: jobs.c:3230 +#, c-format +msgid "%s: job %d already in background" +msgstr "%s: jobb %d kjører allerede i bakgrunnen" + +#: jobs.c:3455 +msgid "waitchld: turning on WNOHANG to avoid indefinite block" +msgstr "waitchld: slÃ¥r pÃ¥ WNOHANG for Ã¥ unngÃ¥ kronisk blokkering" + +#: jobs.c:3970 +#, c-format +msgid "%s: line %d: " +msgstr "%s: linje %d: " + +#: jobs.c:3984 nojobs.c:897 +#, c-format +msgid " (core dumped)" +msgstr " (kjerne lagret i fil)" + +#: jobs.c:3996 jobs.c:4009 +#, c-format +msgid "(wd now: %s)\n" +msgstr "(wd nÃ¥: %s)\n" + +#: jobs.c:4041 +msgid "initialize_job_control: getpgrp failed" +msgstr "initialize_job_control: getpgrp mislyktes" + +#: jobs.c:4104 +msgid "initialize_job_control: line discipline" +msgstr "initialize_job_control: linjeregler" + +#: jobs.c:4114 +msgid "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid" + +#: jobs.c:4135 jobs.c:4144 +#, c-format +msgid "cannot set terminal process group (%d)" +msgstr "klarte ikke Ã¥ velge terminal-prosessgruppe (%d)" + +#: jobs.c:4149 +msgid "no job control in this shell" +msgstr "ingen jobbkontroll i dette skallet" + +#: lib/malloc/malloc.c:296 +#, c-format +msgid "malloc: failed assertion: %s\n" +msgstr "malloc: mislykket premiss: %s\n" + +#: lib/malloc/malloc.c:312 +#, c-format +msgid "" +"\r\n" +"malloc: %s:%d: assertion botched\r\n" +msgstr "" +"\r\n" +"malloc: %s:%d: urimelig premiss\r\n" + +#: lib/malloc/malloc.c:313 +msgid "unknown" +msgstr "ukjent" + +#: lib/malloc/malloc.c:801 +msgid "malloc: block on free list clobbered" +msgstr "malloc: rotete blokk pÃ¥ befrielsesliste" + +#: lib/malloc/malloc.c:878 +msgid "free: called with already freed block argument" +msgstr "free: ble bedt om Ã¥ behandle blokk som allerede er ledig" + +#: lib/malloc/malloc.c:881 +msgid "free: called with unallocated block argument" +msgstr "free: ble bedt om Ã¥ behandle blokk som ikke er tildelt" + +#: lib/malloc/malloc.c:900 +msgid "free: underflow detected; mh_nbytes out of range" +msgstr "free: tomt. mh_nbytes er utenfor rekkevidde" + +#: lib/malloc/malloc.c:906 +msgid "free: start and end chunk sizes differ" +msgstr "free: start- og sluttdel er av ulik størrelse" + +#: lib/malloc/malloc.c:1005 +msgid "realloc: called with unallocated block argument" +msgstr "realloc: ble bedt om Ã¥ behandle blokk som ikke er tildelt" + +#: lib/malloc/malloc.c:1020 +msgid "realloc: underflow detected; mh_nbytes out of range" +msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde" + +#: lib/malloc/malloc.c:1026 +msgid "realloc: start and end chunk sizes differ" +msgstr "realloc: start- og sluttdel er av ulik størrelse" + +#: lib/malloc/table.c:191 +#, c-format +msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" +msgstr "register_alloc: tildelingstabell er full med FIND_ALLOC?\n" + +#: lib/malloc/table.c:200 +#, c-format +msgid "register_alloc: %p already in table as allocated?\n" +msgstr "register_alloc: finnes %p allerede i tabellen som tildelt?\n" + +#: lib/malloc/table.c:253 +#, c-format +msgid "register_free: %p already in table as free?\n" +msgstr "register_free: finnes %p allerede i tabellen som ledig?\n" + +#: lib/sh/fmtulong.c:102 +msgid "invalid base" +msgstr "ugyldig grunntall" + +#: lib/sh/netopen.c:168 +#, c-format +msgid "%s: host unknown" +msgstr "%s: ukjent vert" + +#: lib/sh/netopen.c:175 +#, c-format +msgid "%s: invalid service" +msgstr "%s: ugyldig tjeneste" + +#: lib/sh/netopen.c:306 +#, c-format +msgid "%s: bad network path specification" +msgstr "%s: ugyldig spesifikasjon av nettverkssti" + +#: lib/sh/netopen.c:347 +msgid "network operations not supported" +msgstr "nettverkshandlinger støttes ikke" + +#: locale.c:200 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s)" +msgstr "setlocale: LC_ALL: klarte ikke Ã¥ bytte region (%s)" + +#: locale.c:202 +#, c-format +msgid "setlocale: LC_ALL: cannot change locale (%s): %s" +msgstr "setlocale: LC_ALL: klarte ikke Ã¥ bytte region (%s): %s" + +#: locale.c:259 +#, c-format +msgid "setlocale: %s: cannot change locale (%s)" +msgstr "setlocale: %s: klarte ikke Ã¥ bytte region (%s)" + +#: locale.c:261 +#, c-format +msgid "setlocale: %s: cannot change locale (%s): %s" +msgstr "setlocale: %s: klarte ikke Ã¥ bytte region (%s): %s" + +#: mailcheck.c:439 +msgid "You have mail in $_" +msgstr "Du har e-post i $_" + +#: mailcheck.c:464 +msgid "You have new mail in $_" +msgstr "Du har ny e-post i $_" + +#: mailcheck.c:480 +#, c-format +msgid "The mail in %s has been read\n" +msgstr "Posten i %s er lest\n" + +#: make_cmd.c:329 +msgid "syntax error: arithmetic expression required" +msgstr "syntaksfeil: aritmetisk uttrykk kreves" + +#: make_cmd.c:331 +msgid "syntax error: `;' unexpected" +msgstr "syntaksfeil: uforventet «;»" + +#: make_cmd.c:332 +#, c-format +msgid "syntax error: `((%s))'" +msgstr "syntaksfeil: «((%s))»" + +#: make_cmd.c:584 +#, c-format +msgid "make_here_document: bad instruction type %d" +msgstr "make_here_document: %d er en ugyldig instrukstype" + +#: make_cmd.c:669 +#, c-format +msgid "here-document at line %d delimited by end-of-file (wanted `%s')" +msgstr "here-dokument ved linje %d adskilt av slutt pÃ¥ fil (forventet «%s»)" + +#: make_cmd.c:768 +#, c-format +msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "" +"make_redirection: videresendinginstruks «%d» er utenfor tillatt rekkevidde" + +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "grensa for maksimalt antall here-dokumenter er overskredet" + +#: parse.y:3390 parse.y:3748 +#, c-format +msgid "unexpected EOF while looking for matching `%c'" +msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter «%c»" + +#: parse.y:4410 +msgid "unexpected EOF while looking for `]]'" +msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter «]]»" + +#: parse.y:4415 +#, c-format +msgid "syntax error in conditional expression: unexpected token `%s'" +msgstr "syntaksfeil i betinget uttrykk: forventet ikke symbolet «%s»" + +#: parse.y:4419 +msgid "syntax error in conditional expression" +msgstr "syntaksfeil i betinget uttrykk" + +#: parse.y:4497 +#, c-format +msgid "unexpected token `%s', expected `)'" +msgstr "forventet ikke symbolet «%s», men «)»" + +#: parse.y:4501 +msgid "expected `)'" +msgstr "forventet «)»" + +#: parse.y:4529 +#, c-format +msgid "unexpected argument `%s' to conditional unary operator" +msgstr "«%s» er et uforventet argument for betinget unær operatør" + +#: parse.y:4533 +msgid "unexpected argument to conditional unary operator" +msgstr "uforventet argument for betinget unær operatør" + +#: parse.y:4579 +#, c-format +msgid "unexpected token `%s', conditional binary operator expected" +msgstr "«%s» er et uforventet symbol. Forventet betinget binær operatør" + +#: parse.y:4583 +msgid "conditional binary operator expected" +msgstr "forventet betinget binæroperatør" + +#: parse.y:4605 +#, c-format +msgid "unexpected argument `%s' to conditional binary operator" +msgstr "«%s» er et uforventet argument for betinget binæroperatør" + +#: parse.y:4609 +msgid "unexpected argument to conditional binary operator" +msgstr "uforventet argument for betinget binæroperatør" + +#: parse.y:4620 +#, c-format +msgid "unexpected token `%c' in conditional command" +msgstr "«%c» er et uforventet symbol i en betinget kommando" + +#: parse.y:4623 +#, c-format +msgid "unexpected token `%s' in conditional command" +msgstr "«%s» er et uforventet symbol i en betinget kommando" + +#: parse.y:4627 +#, c-format +msgid "unexpected token %d in conditional command" +msgstr "«%d» er et uforventet symbol i en betinget kommando" + +#: parse.y:5996 +#, c-format +msgid "syntax error near unexpected token `%s'" +msgstr "syntaksfeil ved «%s», som er et uforventet symbol" + +#: parse.y:6014 +#, c-format +msgid "syntax error near `%s'" +msgstr "syntaksfeil ved «%s»" + +#: parse.y:6024 +msgid "syntax error: unexpected end of file" +msgstr "syntaksfeil: uforventet slutt pÃ¥ fil" + +#: parse.y:6024 +msgid "syntax error" +msgstr "syntaksfeil" + +#: parse.y:6086 +#, c-format +msgid "Use \"%s\" to leave the shell.\n" +msgstr "Bruk «%s» for Ã¥ gÃ¥ ut av skallet.\n" + +#: parse.y:6248 +msgid "unexpected EOF while looking for matching `)'" +msgstr "uforventet slutt pÃ¥ fil (EOF) under søk etter «)»" + +#: pcomplete.c:1126 +#, c-format +msgid "completion: function `%s' not found" +msgstr "fullføring: fant ikke funksjonen «%s»" + +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + +#: pcomplib.c:182 +#, c-format +msgid "progcomp_insert: %s: NULL COMPSPEC" +msgstr "progcomp_insert: %s: NULL COMPSPEC" + +#: print_cmd.c:302 +#, c-format +msgid "print_command: bad connector `%d'" +msgstr "print_command: «%d» er en ugyldig tilkobling" + +#: print_cmd.c:375 +#, c-format +msgid "xtrace_set: %d: invalid file descriptor" +msgstr "xtrace_set: %d: ugyldig fildeskriptor" + +#: print_cmd.c:380 +msgid "xtrace_set: NULL file pointer" +msgstr "xtrace_set: filpeker er NULL" + +#: print_cmd.c:384 +#, c-format +msgid "xtrace fd (%d) != fileno xtrace fp (%d)" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" + +#: print_cmd.c:1534 +#, c-format +msgid "cprintf: `%c': invalid format character" +msgstr "cprintf: «%c»: ugyldig formattegn" + +#: redir.c:124 redir.c:171 +msgid "file descriptor out of range" +msgstr "fildeskriptor er utenfor tillatt rekkevidde" + +#: redir.c:178 +#, c-format +msgid "%s: ambiguous redirect" +msgstr "%s: flertydig videresending" + +#: redir.c:182 +#, c-format +msgid "%s: cannot overwrite existing file" +msgstr "%s: klarte ikke Ã¥ overskrive fil" + +#: redir.c:187 +#, c-format +msgid "%s: restricted: cannot redirect output" +msgstr "%s: ikke tillatt: klarte ikke Ã¥ videresende utdata" + +#: redir.c:192 +#, c-format +msgid "cannot create temp file for here-document: %s" +msgstr "klarte ikke Ã¥ lage midlertidig fil for here-dokument: %s" + +#: redir.c:196 +#, c-format +msgid "%s: cannot assign fd to variable" +msgstr "%s: klarte ikke Ã¥ knytte fd til variabel" + +#: redir.c:586 +msgid "/dev/(tcp|udp)/host/port not supported without networking" +msgstr "/dev/(tcp|udp)/host/port støttes ikke uten nettverkstilkobling" + +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 +msgid "redirection error: cannot duplicate fd" +msgstr "videresendingsfeil: klarte ikke Ã¥ duplisere fd" + +#: shell.c:347 +msgid "could not find /tmp, please create!" +msgstr "fant ikke «/tmp». Opprett denne mappa!" + +#: shell.c:351 +msgid "/tmp must be a valid directory name" +msgstr "«/tmp» mÃ¥ være et gyldig mappenavn" + +#: shell.c:927 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: ugyldig valg" + +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "klarte ikke Ã¥ velge %d som uid. Effektiv uid: %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "klarte ikke Ã¥ velge %d som gid. Effektiv gid: %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: er en mappe" + +#: shell.c:1777 +msgid "I have no name!" +msgstr "Jeg manger navn!" + +#: shell.c:1930 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, versjon %s-(%s)\n" + +#: shell.c:1931 +#, c-format +msgid "" +"Usage:\t%s [GNU long option] [option] ...\n" +"\t%s [GNU long option] [option] script-file ...\n" +msgstr "" +"Bruk:\t%s [langt GNU-valg] [valg] …\n" +"\t%s [langt GNU-valg] [valg] skriptfil …\n" + +#: shell.c:1933 +msgid "GNU long options:\n" +msgstr "Lange GNU-valg:\n" + +#: shell.c:1937 +msgid "Shell options:\n" +msgstr "Skallvalg:\n" + +#: shell.c:1938 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgstr "" +"\t«-ilrsD», «-c kommando» eller «-O kortvalg_valg»\t\t(kun programkall)\n" + +#: shell.c:1953 +#, c-format +msgid "\t-%s or -o option\n" +msgstr "\t«-%s» eller «-o»\n" + +#: shell.c:1959 +#, c-format +msgid "Type `%s -c \"help set\"' for more information about shell options.\n" +msgstr "Skriv «%s -c \"help set\"» for mer informasjon om skallvalg.\n" + +#: shell.c:1960 +#, c-format +msgid "Type `%s -c help' for more information about shell builtin commands.\n" +msgstr "Skriv «%s -c help» for mer informasjon om innebygde skallkommandoer.\n" + +#: shell.c:1961 +#, c-format +msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Bruk kommandoen «bashbug» for Ã¥ rapportere programfeil.\n" + +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "bash-nettside: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Generell hjelp til bruk av GNU-programvare: \n" + +#: sig.c:707 +#, c-format +msgid "sigprocmask: %d: invalid operation" +msgstr "sigprocmask: %d: ugyldig handling" + +#: siglist.c:48 +msgid "Bogus signal" +msgstr "Ugyldig signal" + +#: siglist.c:51 +msgid "Hangup" +msgstr "Legg pÃ¥" + +#: siglist.c:55 +msgid "Interrupt" +msgstr "Forstyrr" + +#: siglist.c:59 +msgid "Quit" +msgstr "Avslutt" + +#: siglist.c:63 +msgid "Illegal instruction" +msgstr "Ugyldig instruks" + +#: siglist.c:67 +msgid "BPT trace/trap" +msgstr "BPT-sporing/-fanging" + +#: siglist.c:75 +msgid "ABORT instruction" +msgstr "ABORT-instruks" + +#: siglist.c:79 +msgid "EMT instruction" +msgstr "EMT-instruks" + +#: siglist.c:83 +msgid "Floating point exception" +msgstr "Flyttallsfeil" + +#: siglist.c:87 +msgid "Killed" +msgstr "Drept" + +#: siglist.c:91 +msgid "Bus error" +msgstr "Bussfeil" + +#: siglist.c:95 +msgid "Segmentation fault" +msgstr "Segmenteringsfeil" + +#: siglist.c:99 +msgid "Bad system call" +msgstr "Ugyldig systemkall" + +#: siglist.c:103 +msgid "Broken pipe" +msgstr "Ødelagt datarør" + +#: siglist.c:107 +msgid "Alarm clock" +msgstr "Alarmklokke" + +#: siglist.c:111 +msgid "Terminated" +msgstr "Avsluttet" + +#: siglist.c:115 +msgid "Urgent IO condition" +msgstr "Hastende IO-tilstand" + +#: siglist.c:119 +msgid "Stopped (signal)" +msgstr "Stoppet (signal)" + +#: siglist.c:127 +msgid "Continue" +msgstr "Fortsett" + +#: siglist.c:135 +msgid "Child death or stop" +msgstr "Død eller stans av underprosess" + +#: siglist.c:139 +msgid "Stopped (tty input)" +msgstr "Stoppet (tty-inndata)" + +#: siglist.c:143 +msgid "Stopped (tty output)" +msgstr "Stoppet (tty-utdata)" + +#: siglist.c:147 +msgid "I/O ready" +msgstr "I/O klar" + +#: siglist.c:151 +msgid "CPU limit" +msgstr "CPU-grense" + +#: siglist.c:155 +msgid "File limit" +msgstr "Filgrense" + +#: siglist.c:159 +msgid "Alarm (virtual)" +msgstr "Alarm (virtuell)" + +#: siglist.c:163 +msgid "Alarm (profile)" +msgstr "Alarm (profil)" + +#: siglist.c:167 +msgid "Window changed" +msgstr "Vindu endret" + +#: siglist.c:171 +msgid "Record lock" +msgstr "Husk lÃ¥s" + +#: siglist.c:175 +msgid "User signal 1" +msgstr "Brukersignal 1" + +#: siglist.c:179 +msgid "User signal 2" +msgstr "Brukersignal 2" + +#: siglist.c:183 +msgid "HFT input data pending" +msgstr "HFT-inndata venter" + +#: siglist.c:187 +msgid "power failure imminent" +msgstr "strømstans er nærliggende" + +#: siglist.c:191 +msgid "system crash imminent" +msgstr "systemkræsj er nærliggende" + +#: siglist.c:195 +msgid "migrate process to another CPU" +msgstr "flytt prosess til annen CPU" + +#: siglist.c:199 +msgid "programming error" +msgstr "programmeringsfeil" + +#: siglist.c:203 +msgid "HFT monitor mode granted" +msgstr "HFT-skjermmodus tildelt" + +#: siglist.c:207 +msgid "HFT monitor mode retracted" +msgstr "HFT-skjermmodus tilbaketrukket" + +#: siglist.c:211 +msgid "HFT sound sequence has completed" +msgstr "HFT-lydsekvens er fullført" + +#: siglist.c:215 +msgid "Information request" +msgstr "Informasjonsforespørsel" + +#: siglist.c:223 +msgid "Unknown Signal #" +msgstr "Ukjent signal #" + +#: siglist.c:225 +#, c-format +msgid "Unknown Signal #%d" +msgstr "#%d er et ukjent signal" + +#: subst.c:1445 subst.c:1608 +#, c-format +msgid "bad substitution: no closing `%s' in %s" +msgstr "ugyldig substitutt: %2$s mangler avsluttende «%1$s»" + +#: subst.c:3154 +#, c-format +msgid "%s: cannot assign list to array member" +msgstr "%s: klarte ikke Ã¥ knytte liste til tabellmedlem" + +#: subst.c:5740 subst.c:5756 +msgid "cannot make pipe for process substitution" +msgstr "klarte ikke Ã¥ lage datarør for substitusjon av prosess" + +#: subst.c:5798 +msgid "cannot make child for process substitution" +msgstr "klarte ikke Ã¥ lage underprosess for substitusjon av prosess" + +#: subst.c:5848 +#, c-format +msgid "cannot open named pipe %s for reading" +msgstr "klarte ikke Ã¥ Ã¥pne navngitt datarør %s for lesing" + +#: subst.c:5850 +#, c-format +msgid "cannot open named pipe %s for writing" +msgstr "klarte ikke Ã¥ Ã¥pne navngitt datarør %s for skriving" + +#: subst.c:5873 +#, c-format +msgid "cannot duplicate named pipe %s as fd %d" +msgstr "klarte ikke Ã¥ duplisere navngitt datarør %s som fd %d" + +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "ugyldig substitusjon. %s mangler avsluttende «`»" + +#: subst.c:6083 +msgid "cannot make pipe for command substitution" +msgstr "klarte ikke Ã¥ lage datarør for substitusjon av kommando" + +#: subst.c:6127 +msgid "cannot make child for command substitution" +msgstr "klarte ikke Ã¥ lage underprosess for substitusjon av kommando" + +#: subst.c:6153 +msgid "command_substitute: cannot duplicate pipe as fd 1" +msgstr "command_substitute: klarte ikke Ã¥ duplisere datarør som fd 1" + +#: subst.c:6580 subst.c:8939 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: ugyldig variabelnavn for navnreferanse" + +#: subst.c:6666 subst.c:8351 subst.c:8371 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: ugyldig substitusjon" + +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: ugyldig indirekte utvidelse" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: ugyldig variabelnavn" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter har null-verdi eller stÃ¥r tomt" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: understreng-uttrykk < 0" + +#: subst.c:8450 +#, c-format +msgid "$%s: cannot assign in this way" +msgstr "$%s: du kan ikke tildele pÃ¥ denne mÃ¥ten" + +#: subst.c:8802 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk " +"substitusjon" + +#: subst.c:9349 +#, c-format +msgid "bad substitution: no closing \"`\" in %s" +msgstr "ugyldig substitusjon. %s mangler avsluttende «`»" + +#: subst.c:10298 +#, c-format +msgid "no match: %s" +msgstr "ingen treff pÃ¥ %s" + +#: test.c:147 +msgid "argument expected" +msgstr "forventet argument" + +#: test.c:156 +#, c-format +msgid "%s: integer expression expected" +msgstr "%s: forventet heltallsuttrykk" + +#: test.c:265 +msgid "`)' expected" +msgstr "forventet «)»" + +#: test.c:267 +#, c-format +msgid "`)' expected, found %s" +msgstr "forventet «)», men fant %s" + +#: test.c:282 test.c:744 test.c:747 +#, c-format +msgid "%s: unary operator expected" +msgstr "%s: forventet unær operatør" + +#: test.c:469 test.c:787 +#, c-format +msgid "%s: binary operator expected" +msgstr "%s: forventet binær operatør" + +#: test.c:869 +msgid "missing `]'" +msgstr "«]» mangler" + +#: trap.c:224 +msgid "invalid signal number" +msgstr "ugyldig signalnummer" + +#: trap.c:387 +#, c-format +msgid "run_pending_traps: bad value in trap_list[%d]: %p" +msgstr "run_pending_traps: ugyldig verdi i «trap_list[%d]»: %p" + +#: trap.c:391 +#, c-format +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv " +"pÃ¥ nytt" + +#: trap.c:447 +#, c-format +msgid "trap_handler: bad signal %d" +msgstr "trap_handler: %d er et ugyldig signal" + +#: variables.c:409 +#, c-format +msgid "error importing function definition for `%s'" +msgstr "feil under importering av definisjonen av funksjonen «%s»" + +#: variables.c:814 +#, c-format +msgid "shell level (%d) too high, resetting to 1" +msgstr "skallnivÃ¥et (%d) er for høyt. Tilbakestiller til 1" + +#: variables.c:2413 +msgid "make_local_variable: no function context at current scope" +msgstr "make_local_variable: ingen funksjonskontekst i gjeldende virkefelt" + +#: variables.c:2432 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: variabel kan ikke tilknyttes verdi" + +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: ugyldig variabelnavn for navnreferanse" + +#: variables.c:3940 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: ingen funksjonskontekst i gjeldende virkefelt" + +#: variables.c:4218 +#, c-format +msgid "%s has null exportstr" +msgstr "%s har exportstr som er null" + +#: variables.c:4223 variables.c:4232 +#, c-format +msgid "invalid character %d in exportstr for %s" +msgstr "%d er et ugyldig tegn i exportstr for %s" + +#: variables.c:4238 +#, c-format +msgid "no `=' in exportstr for %s" +msgstr "exportstr for %s mangler «=»" + +#: variables.c:4684 +msgid "pop_var_context: head of shell_variables not a function context" +msgstr "" +"pop_var_context: toppen av «shell_variables» er ikke en funksjonskontekst" + +#: variables.c:4697 +msgid "pop_var_context: no global_variables context" +msgstr "pop_var_context: kontekst for «global_variables» mangler" + +#: variables.c:4772 +msgid "pop_scope: head of shell_variables not a temporary environment scope" +msgstr "pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt" + +#: variables.c:5619 +#, c-format +msgid "%s: %s: cannot open as FILE" +msgstr "%s: %s: klarte ikke Ã¥ Ã¥pne som FIL" + +#: variables.c:5624 +#, c-format +msgid "%s: %s: invalid value for trace file descriptor" +msgstr "%s: %s: ugyldig verdi for sporing av fildeskriptor" + +#: variables.c:5669 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: samspill-verdi er utenfor tillatt rekkevidde" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Opphavsrett (C) 2015 Free Software Foundation, Inc." + +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Lisens GPLv3+: GNU GPL versjon 3 eller nyere \n" + +#: version.c:86 version2.c:86 +#, c-format +msgid "GNU bash, version %s (%s)\n" +msgstr "GNU bash, versjon %s (%s)\n" + +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Dette er fri programvare. Du stÃ¥r fritt til Ã¥ endre og dele den videre." + +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "" +"Det stilles INGEN GARANTI, i den grad dette tillates av gjeldende lovverk." + +#: xmalloc.c:91 +#, c-format +msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: klarte ikke Ã¥ tildele %lu byte (%lu byte tildelt)" + +#: xmalloc.c:93 +#, c-format +msgid "%s: cannot allocate %lu bytes" +msgstr "%s: klarte ikke Ã¥ tildele %lu byte" + +#: xmalloc.c:163 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" +msgstr "%s: %s:%d: klarte ikke Ã¥ tildele %lu byte (%lu byte tildelt)" + +#: xmalloc.c:165 +#, c-format +msgid "%s: %s:%d: cannot allocate %lu bytes" +msgstr "%s: %s:%d: klarte ikke Ã¥ tildele %lu byte" + +#: builtins.c:45 +msgid "alias [-p] [name[=value] ... ]" +msgstr "alias [-p] [navn[=verdi] … ]" + +#: builtins.c:49 +msgid "unalias [-a] name [name ...]" +msgstr "unalias [-a] navn [navn …]" + +#: builtins.c:53 +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpsvPSVX] [-m tastaturoppsett] [-f filnavn] [-q navn] [-u navn] [-r " +"knappesekv] [-x knappesekv:skallkommando] [knappesekv:readline-funksjon " +"eller readline-kommando]" + +#: builtins.c:56 +msgid "break [n]" +msgstr "break [n]" + +#: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 +msgid "builtin [shell-builtin [arg ...]]" +msgstr "builtin [innebygd-skallfunksjon [arg …]]" + +#: builtins.c:63 +msgid "caller [expr]" +msgstr "caller [uttr]" + +#: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [mappe]" + +#: builtins.c:68 +msgid "pwd [-LP]" +msgstr "pwd [-LP]" + +#: builtins.c:76 +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] command [arg …]" + +#: builtins.c:78 +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [navn[=verdi] …]" + +#: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] navn[=verdi] …" + +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [valg] navn[=verdi] …" + +#: builtins.c:85 +msgid "echo [-neE] [arg ...]" +msgstr "echo [-neE] [arg …]" + +#: builtins.c:89 +msgid "echo [-n] [arg ...]" +msgstr "echo [-n] [arg …]" + +#: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filnavn] [navn …]" + +#: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [arg …]" + +#: builtins.c:96 +msgid "getopts optstring name [arg]" +msgstr "getopts valgstreng navn [arg]" + +#: builtins.c:98 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a navn] [kommando [argumenter …]] [videresending …]" + +#: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 +msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" +msgstr "fc [-e enavn] [-lnr] [første] [siste] eller fc -s [pat=rep] [kommando]" + +#: builtins.c:109 +msgid "fg [job_spec]" +msgstr "fg [jobbspes]" + +#: builtins.c:113 +msgid "bg [job_spec ...]" +msgstr "bg [jobbspes …]" + +#: builtins.c:116 +msgid "hash [-lr] [-p pathname] [-dt] [name ...]" +msgstr "hash [-lr] [-p stinavn] [-dt] [navn …]" + +#: builtins.c:119 +msgid "help [-dms] [pattern ...]" +msgstr "help [-dms] [mønster …]" + +#: builtins.c:123 +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d posisjon] [n] eller history -anrw [filnavn] eller history -" +"ps arg [arg …]" + +#: builtins.c:127 +msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" +msgstr "jobs [-lnprs] [jobbspes …] eller jobs -x kommando [arg]" + +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [jobbspes …]" + +#: builtins.c:134 +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspes | -n signum | -sigspes] pid | jobbspes … eller kill -l " +"[sigspes]" + +#: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let arg [arg …]" + +#: builtins.c:138 +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a tabell] [-d adskill] [-i tekst] [-n ntegn] [-N ntegn] [-p " +"ledetekst] [-t tidsavbrudd] [-u fd] [navn …]" + +#: builtins.c:140 +msgid "return [n]" +msgstr "return [n]" + +#: builtins.c:142 +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o valgnavn] [--] [arg …]" + +#: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [navn …]" + +#: builtins.c:146 +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [navn[=verdi] …] eller export -p" + +#: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [navn[=verdi] …] eller readonly -p" + +#: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 +msgid "source filename [arguments]" +msgstr "source filnavn [argumenter]" + +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". filnavn [argumenter]" + +#: builtins.c:157 +msgid "suspend [-f]" +msgstr "suspend [-f]" + +#: builtins.c:160 +msgid "test [expr]" +msgstr "test [uttr]" + +#: builtins.c:162 +msgid "[ arg... ]" +msgstr "[ arg … ]" + +#: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[arg] signalspes …]" + +#: builtins.c:168 +msgid "type [-afptP] name [name ...]" +msgstr "type [-afptP] navn [navn …]" + +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [grense]" + +#: builtins.c:174 +msgid "umask [-p] [-S] [mode]" +msgstr "umask [-p] [-S] [modus]" + +#: builtins.c:177 +msgid "wait [-n] [id ...]" +msgstr "wait [-n] [id …]" + +#: builtins.c:181 +msgid "wait [pid ...]" +msgstr "wait [pid …]" + +#: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NAVN [in ORD … ] ; do KOMMANDOER; done" + +#: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( uttr1; uttr2; uttr3 )); do KOMMANDOER; done" + +#: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAVN [in ORD … ;] do KOMMANDOER; done" + +#: builtins.c:190 +msgid "time [-p] pipeline" +msgstr "time [-p] kommandokø" + +#: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case ORD in [MØNSTER [| MØNSTER] …) KOMMANDOER ;;] … esac" + +#: builtins.c:194 +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if KOMMANDOER; then KOMMANDOER; [ elif KOMMANDOER; then KOMMANDOER; ] … " +"[ else KOMMANDOER; ] fi" + +#: builtins.c:196 +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while KOMMANDOER; do KOMMANDOER; done" + +#: builtins.c:198 +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until KOMMANDOER; do KOMMANDOER; done" + +#: builtins.c:200 +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NAVN] kommando [videresendinger]" + +#: builtins.c:202 +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function navn { KOMAMNDOER ; } eller navn () { KOMMANDOER ; }" + +#: builtins.c:204 +msgid "{ COMMANDS ; }" +msgstr "{ KOMMANDOER ; }" + +#: builtins.c:206 +msgid "job_spec [&]" +msgstr "job_spec [&]" + +#: builtins.c:208 +msgid "(( expression ))" +msgstr "(( uttrykk ))" + +#: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ uttrykk ]]" + +#: builtins.c:212 +msgid "variables - Names and meanings of some shell variables" +msgstr "variabler - Navn og betydninger av enkelte skallvariabler" + +#: builtins.c:215 +msgid "pushd [-n] [+N | -N | dir]" +msgstr "pushd [-n] [+N | -N | mappe]" + +#: builtins.c:219 +msgid "popd [-n] [+N | -N]" +msgstr "popd [-n] [+N | -N]" + +#: builtins.c:223 +msgid "dirs [-clpv] [+N] [-N]" +msgstr "dirs [-clpv] [+N] [-N]" + +#: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [valgnavn …]" + +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] format [argumenter]" + +#: builtins.c:231 +msgid "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" +"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " +"suffix] [name ...]" +msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o valg] [-A handling] [-G globpat] [-" +"W ordliste] [-F funksjon] [-C kommando] [-X filterpat] [-P prefiks] [-S " +"suffiks] [navn …]" + +#: builtins.c:235 +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o valg] [-A handling] [-G globpat] [-W ordliste] " +"[-F funksjon] [-C kommando] [-X filtersti] [-P prefiks] [-S suffiks] [ord]" + +#: builtins.c:239 +msgid "compopt [-o|+o option] [-DE] [name ...]" +msgstr "compopt [-o|+o valg] [-DE] [navn …]" + +#: builtins.c:242 +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C " +"tilbakekall] [-c mengde] [tabell]" + +#: builtins.c:244 +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"readarray [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] " +"[-c mengde] [tabell]" + +#: builtins.c:256 +msgid "" +"Define or display aliases.\n" +" \n" +" Without arguments, `alias' prints the list of aliases in the reusable\n" +" form `alias NAME=VALUE' on standard output.\n" +" \n" +" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" +" A trailing space in VALUE causes the next word to be checked for\n" +" alias substitution when the alias is expanded.\n" +" \n" +" Options:\n" +" -p\tprint all defined aliases in a reusable format\n" +" \n" +" Exit Status:\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" +" defined." +msgstr "" +"Definer eller vis alias.\n" +" \n" +" Hvis ingen argumenter er gitt, skriver programmet ut en liste over\n" +" gjeldende alias i form av «alias NAVN=verdi» til standardutdata.\n" +" \n" +" Ellers defineres et alias per NAVN med en VERDI.\n" +" Avsluttende mellomrom i VERDI fører til at neste ord kontrolleres for\n" +" alias-substitusjon nÃ¥r aliaset utvides.\n" +" \n" +" Valg:\n" +" -p\tSkriv ut alle definerte alias i brukbart format\n" +" \n" +" Avslutningsstatus:\n" +" alias avslutter med positiv verdi («true»), med mindre brukeren angir et " +"NAVN\n" +" som mangler definert alias." + +#: builtins.c:278 +msgid "" +"Remove each NAME from the list of defined aliases.\n" +" \n" +" Options:\n" +" -a\tremove all alias definitions\n" +" \n" +" Return success unless a NAME is not an existing alias." +msgstr "" +"Fjern hvert NAVN fra lista over definerte alias.\n" +" \n" +" Valg:\n" +" -a\tfjern alle alias-definisjoner.\n" +" \n" +" Programmet avslutter som vellykket med mindre brukeren velger et " +"aliasNAVN som ikke finnes." + +#: builtins.c:291 +msgid "" +"Set Readline key bindings and variables.\n" +" \n" +" Bind a key sequence to a Readline function or a macro, or set a\n" +" Readline variable. The non-option argument syntax is equivalent to\n" +" that found in ~/.inputrc, but must be passed as a single argument:\n" +" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Options:\n" +" -m keymap Use KEYMAP as the keymap for the duration of this\n" +" command. Acceptable keymap names are emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command, and vi-insert.\n" +" -l List names of functions.\n" +" -P List function names and bindings.\n" +" -p List functions and bindings in a form that can be\n" +" reused as input.\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" +" in a form that can be reused as input.\n" +" -V List variable names and values\n" +" -v List variable names and values in a form that can\n" +" be reused as input.\n" +" -q function-name Query about which keys invoke the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" +" -r keyseq Remove the binding for KEYSEQ.\n" +" -f filename Read key bindings from FILENAME.\n" +" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" +" \t\t\t\tKEYSEQ is entered.\n" +" -X List key sequences bound with -x and associated " +"commands\n" +" in a form that can be reused as input.\n" +" \n" +" Exit Status:\n" +" bind returns 0 unless an unrecognized option is given or an error occurs." +msgstr "" +"Velg hurtigtaster og variabler for Readline.\n" +" \n" +" Knytt en knappekombinasjon til en Readline-funksjon eller makro, eller " +"gi\n" +" verdi til en Readline-variabel. Argumentsyntaksen tilsvarer det som " +"finnes\n" +" i «~/.inputrc», men mÃ¥ oppgis som ett argument.\n" +" F.eks.: bind '\"\\C-x\\C-r\": re-read-init-file'.\n" +" \n" +" Valg:\n" +" -m OPPSETT Bruk valgt tastaturOPPSETT under kjøring av denne " +"kommandoen.\n" +" Gyldige oppsettsnavn er «emacs», «emacs-standard»,\n" +" «emacs-meta», «emacs-ctlx», «vi», «vi-move»,\n" +" «vi-command» og «vi-insert».\n" +" -l Vis funksjonsnavn.\n" +" -P Vis funksjonsnavn og tildelinger.\n" +" -p Vis funksjoner og tildelinger i et format som kan " +"gjenbrukes\n" +" som inndata.\n" +" -S Vis knappekombinasjoner som kaller makroer og " +"tilhørende verdier\n" +" -s Tilsvarer «-S», men i et format som kan gjenbrukes i " +"inndata.\n" +" -V Vis variabelnavn og verdier\n" +" -v Tilsvarer «-V», men i et format som kan gjenbrukes i " +"inndata.\n" +" -q function-name Spør hvilke knapper som kaller aktuell funksjon.\n" +" -u function-name Fjern alle knappekombinasjoner som er tilknyttet " +"aktuell funksjon.\n" +" -r KOMB Fjern tildeling av valgt knappeKOMBinasjon.\n" +" -f FILNAVN Les knappekombinasjoner fra FILNAVN.\n" +" -x KOMB:KOMMANDO\tGjør slik at valgt skallKOMMANDO kjøres nÃ¥r\n" +" \t\t\t\tvalgt knappeKOMBinasjon trykkes.\n" +" -X Vis knappekombinasjoner som er tildelt med «-x», og " +"aktuelle kommandoer \n" +" i et format som kan gjenbrukes i inndata.\n" +" \n" +" Avslutningsstatus:\n" +" bind avslutter med 0, med mindre brukeren tar et ukjent valg eller det " +"oppstÃ¥r en feil." + +#: builtins.c:330 +msgid "" +"Exit for, while, or until loops.\n" +" \n" +" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n" +" loops.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"GÃ¥ ut av en «FOR»-, «WHILE»- eller «UNTIL»-løkke.\n" +" \n" +" Hvis N er valgt, brytes N antall underløkker.\n" +" \n" +" Avslutningsstatus:\n" +" Statuskoden er 0, med mindre N er mindre enn 1." + +#: builtins.c:342 +msgid "" +"Resume for, while, or until loops.\n" +" \n" +" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n" +" If N is specified, resumes the Nth enclosing loop.\n" +" \n" +" Exit Status:\n" +" The exit status is 0 unless N is not greater than or equal to 1." +msgstr "" +"Fortsett neste runde av gjeldende FOR-, WHILE- eller WHILE-løkke..\n" +" \n" +" Hvis N er valgt, fortsetter N-te løkke.\n" +" \n" +" Avslutningsstatus:\n" +" Statuskoden er 0, med mindre N er mindre enn 1." + +#: builtins.c:354 +msgid "" +"Execute shell builtins.\n" +" \n" +" Execute SHELL-BUILTIN with arguments ARGs without performing command\n" +" lookup. This is useful when you wish to reimplement a shell builtin\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" +" \n" +" Exit Status:\n" +" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" +" not a shell builtin.." +msgstr "" +"Kjør innebygde skallfunksjoner.\n" +" \n" +" Kjør SKALLFUNKSJON med valgte ARGumenter uten Ã¥ slÃ¥ opp\n" +" kommandonavn. Dette er nyttig nÃ¥r du vil re-implementere en innebygd\n" +" skallkommando som en funksjon, samtidig som du kjører den innenfor en " +"skallfunksjon.\n" +" \n" +" Avslutningsstatus:\n" +" Statuskoden er den samme som aktuell SKALLFUNKSJON gir, eller\n" +" negativ («false») hvis SKALLFUNKSJON ikke er en innebygd skallkommando.." + +#: builtins.c:369 +msgid "" +"Return the context of the current subroutine call.\n" +" \n" +" Without EXPR, returns \"$line $filename\". With EXPR, returns\n" +" \"$line $subroutine $filename\"; this extra information can be used to\n" +" provide a stack trace.\n" +" \n" +" The value of EXPR indicates how many call frames to go back before the\n" +" current one; the top frame is frame 0.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless the shell is not executing a shell function or EXPR\n" +" is invalid." +msgstr "" +"Vis konteksten for gjeldende underrutine-kall.\n" +" \n" +" Hvis UTTRykk ikke er valgt, vises «$line $filename». Med UTTRykk vises\n" +" «$line $subroutine $filename». Denne ekstrainformasjonen kan brukes\n" +" til stabelsporing.\n" +" \n" +" Verdien av UTTRykk viser hvor mange kall-rammer programmet skal bevege " +"seg\n" +" gjennom tilbake fra gjeldende ramme. Øverste ramme er 0.\n" +" \n" +" Avslutningsstatus:\n" +" Status er 0, med mindre skallet ikke kjører en skallfunksjon eller\n" +" valgt UTTRykk er ugyldig." + +#: builtins.c:387 +msgid "" +"Change the shell working directory.\n" +" \n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" +" HOME shell variable.\n" +" \n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" +" with a slash (/), then CDPATH is not used.\n" +" \n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" +" its value is used for DIR.\n" +" \n" +" Options:\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" +" \n" +" The default is to follow symbolic links, as if `-L' were specified.\n" +" `..' is processed by removing the immediately previous pathname " +"component\n" +" back to a slash or the beginning of DIR.\n" +" \n" +" Exit Status:\n" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" +" -P is used; non-zero otherwise." +msgstr "" +"Bytt arbeidsmappe for skallet.\n" +" \n" +" Bytt gjeldende mappe til MAP. Standard MAPpe er verdien av\n" +" skallvariabelen HOME.\n" +" \n" +" Variabelen CDPATH bestemmer søkestien for mapper som inneholder\n" +" MAP. Alternative mappenavn i CDPATH er adskilt med «:».\n" +" Et null-mappenavn er det samme som gjeldende mappe. Hvis MAP begynner\n" +" med skrÃ¥strek (/), brukes ikke CDPATH.\n" +" \n" +" Hvis valgt mappe ikke finnes, og skallvalget «cdable_vars» har en verdi,\n" +" antas ordet Ã¥ være et variabelnavn. Hvis den variabelen har en verdi,\n" +" brukes denne verdien som MAP.\n" +" \n" +" Valg:\n" +" -L\ttving følging av symbolske lenker. Følg symbolske lenker i\n" +" \tMAP etter Ã¥ ha behandlet forekomster av «..»\n" +" -P\tbruk fysisk mappestruktur uten Ã¥ følge symbolske\n" +" \tlenker. Følg lenker i MAP før forekomster av «..» behandles.\n" +" -e\thvis «-P» er valgt, og det er uklart hva som er gjeldende\n" +" \tarbeidsmappe, avslutt med en annen status enn 0\n" +" -@ hvis systemet støtter det, vis en fil med utvidede attributter\n" +" som en mappe med attributtene som innhold\n" +" \n" +" Standard for symbolske lenker er at de følges, som om «-L» er valgt.\n" +" «..» behandles ved at den nÃ¥ tidligere stinavn-komponenten fjernes\n" +" én skrÃ¥strek tilbake eller til begynnelsen av MAP.\n" +" \n" +" Avslutningsstatus:\n" +" Status er 0 hvis skallet har byttet mappe, og hvis $PWD er valgt uten " +"problemer\n" +" ved bruk av «-P». Ellers er status noe annet enn 0." + +#: builtins.c:425 +msgid "" +"Print the name of the current working directory.\n" +" \n" +" Options:\n" +" -L\tprint the value of $PWD if it names the current working\n" +" \t\tdirectory\n" +" -P\tprint the physical directory, without any symbolic links\n" +" \n" +" By default, `pwd' behaves as if `-L' were specified.\n" +" \n" +" Exit Status:\n" +" Returns 0 unless an invalid option is given or the current directory\n" +" cannot be read." +msgstr "" +"Skriv ut navn pÃ¥ gjeldende arbeidsmappe.\n" +" \n" +" Valg:\n" +" -L\tskriv ut verdien av $PWD hvis dette er navnet pÃ¥\n" +" \tgjeldende arbeidsmappe\n" +" -P\tskriv ut fysisk mappe, uten symbolske lenker\n" +" \n" +" «pwd» kjører med valget «-L» som standard.\n" +" \n" +" Avslutningsstatus:\n" +" Status er 0, med mindre brukeren tar et ugyldig valg eller\n" +" programmet ikke klarer Ã¥ lese gjeldende mappe." + +#: builtins.c:442 +msgid "" +"Null command.\n" +" \n" +" No effect; the command does nothing.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Null-kommando.\n" +" \n" +" Dette har ingen effekt. Kommandoen gjør ingenting.\n" +" \n" +" Avslutningsstatus:\n" +" Alltid vellykket." + +#: builtins.c:453 +msgid "" +"Return a successful result.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Gi et vellykket resultat.\n" +" \n" +" Avslutningsstatus:\n" +" Alltid vellykket." + +#: builtins.c:462 +msgid "" +"Return an unsuccessful result.\n" +" \n" +" Exit Status:\n" +" Always fails." +msgstr "" +"Gi et mislykket resultat.\n" +" \n" +" Avslutningsstatus:\n" +" Alltid mislykket." + +#: builtins.c:471 +msgid "" +"Execute a simple command or display information about commands.\n" +" \n" +" Runs COMMAND with ARGS suppressing shell function lookup, or display\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" +" on disk when a function with the same name exists.\n" +" \n" +" Options:\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" +" \n" +" Exit Status:\n" +" Returns exit status of COMMAND, or failure if COMMAND is not found." +msgstr "" +"Kjør en enkel kommando, eller vis informasjon om kommandoer.\n" +" \n" +" Kjører valgt KOMMANDO med ARG uten oppslag av skallfunksjoner, eller " +"viser\n" +" informasjon om valgte KOMMANDOer. Dette kan brukes til Ã¥ kalle " +"kommandoer\n" +" pÃ¥ disk nÃ¥r det finens en funksjon med samme navn.\n" +" \n" +" Valg:\n" +" -p\tbruk en standardverdi for STI som garantert finner alle\n" +" \tstandardverktøyene\n" +" -v\tskriv ut en beskrivelse av KOMMANDO i «type»-stil\n" +" -V\tskriv ut en mer detaljert beskrivelse av hver KOMMANDO\n" +" \n" +" Avslutningsstatus:\n" +" Samme som statuskoden fra KOMMANDO, eller mislykket hvis KOMMANDO ikke " +"finnes." + +#: builtins.c:490 +msgid "" +"Set variable values and attributes.\n" +" \n" +" Declare variables and give them attributes. If no NAMEs are given,\n" +" display the attributes and values of all variables.\n" +" \n" +" Options:\n" +" -f\trestrict action or display to function names and definitions\n" +" -F\trestrict display to function names only (plus line number and\n" +" \t\tsource file when debugging)\n" +" -g\tcreate global variables when used in a shell function; otherwise\n" +" \t\tignored\n" +" -p\tdisplay the attributes and value of each NAME\n" +" \n" +" Options which set attributes:\n" +" -a\tto make NAMEs indexed arrays (if supported)\n" +" -A\tto make NAMEs associative arrays (if supported)\n" +" -i\tto make NAMEs have the `integer' attribute\n" +" -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" +" -r\tto make NAMEs readonly\n" +" -t\tto make NAMEs have the `trace' attribute\n" +" -u\tto convert NAMEs to upper case on assignment\n" +" -x\tto make NAMEs export\n" +" \n" +" Using `+' instead of `-' turns off the given attribute.\n" +" \n" +" Variables with the integer attribute have arithmetic evaluation (see\n" +" the `let' command) performed when the variable is assigned a value.\n" +" \n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" +" command. The `-g' option suppresses this behavior.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." +msgstr "" +"Gi verdier og attributter til variabler.\n" +" \n" +" Lag variabler og gi dem attributter. Hvis ingen NAVN er valgt,\n" +" vises attributter og verdier av alle variabler.\n" +" \n" +" Valg:\n" +" -f\tbegrens handling eller visning til funksjonsnavn og definisjoner\n" +" -F\tbegrens visning til funksjonsnavn (linjenummer og\n" +" \tkildefil kommer i tillegg ved feilsøking)\n" +" -g\tlag globale variabler ved bruk innenfor en skallfunksjon\n" +" \t(ignoreres ved annen bruk)\n" +" -p\tvis attributter og verdi av hvert valgt NAVN\n" +" \n" +" Valg som justerer attributter:\n" +" -a\tgjør valgte NAVN til indekserte tabeller (hvis det støttes)\n" +" -A\tgjør valgte NAVN til assosiative tabeller (hvis det støttes)\n" +" -i\tgi valgte NAVN attributten «integer» (heltall)\n" +" -l\tkonverter valgte NAVN til smÃ¥ bokstaver\n" +" -n\tgjør valgt NAVN til en referanse til variabelen med egen verdi som " +"navn\n" +" -r\tskrivebeskytt valgte NAVN\n" +" -t\tgi valgte NAVN attirbutten «trace»\n" +" -u\tkonverter valgte NAVN til store bokstaver\n" +" -x\tgjør valgte NAVN eksporterbare\n" +" \n" +" Bruk «+» i stedet for «-» for Ã¥ slÃ¥ av aktuell attributt.\n" +" \n" +" Variabler med heltallsattributt blir evaluert aritmetisk (se\n" +" kommandoen «let») nÃ¥r de fÃ¥r en verdi.\n" +" \n" +" Ved bruk innenfor funksjoner gjør «declare» valgte NAVN lokale, som med\n" +" kommandoen «local». Valget «-g» slÃ¥r av denne oppførselen.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller\n" +" det oppstÃ¥r en variabel-tildelingsfeil." + +#: builtins.c:530 +#, fuzzy +msgid "" +"Set variable values and attributes.\n" +" \n" +" A synonym for `declare'. See `help declare'." +msgstr "" +"Gi verdier og attributter til variabler.\n" +" \n" +" Denne funksjonen er utgÃ¥tt. Se «help declare»." + +#: builtins.c:538 +msgid "" +"Define local variables.\n" +" \n" +" Create a local variable called NAME, and give it VALUE. OPTION can\n" +" be any option accepted by `declare'.\n" +" \n" +" Local variables can only be used within a function; they are visible\n" +" only to the function where they are defined and its children.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." +msgstr "" +"Definer lokale variabler.\n" +" \n" +" Lag en lokal variabel med valgt NAVN og VERDI. Du kan foreta\n" +" VALG i henhold til kommandoen «declare».\n" +" \n" +" Lokale variabler kan bare brukes innenfor en funksjon. De er kun " +"synlige\n" +" for funksjonen de lages innenfor, samt underfunksjoner.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg, det oppstÃ¥r\n" +" en feil under variabeltildeling eller skallet ikke kjører en funksjon." + +#: builtins.c:555 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs, separated by a single space character and followed by " +"a\n" +" newline, on the standard output.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" -e\tenable interpretation of the following backslash escapes\n" +" -E\texplicitly suppress interpretation of backslash escapes\n" +" \n" +" `echo' interprets the following backslash-escaped characters:\n" +" \\a\talert (bell)\n" +" \\b\tbackspace\n" +" \\c\tsuppress further output\n" +" \\e\tescape character\n" +" \\E\tescape character\n" +" \\f\tform feed\n" +" \\n\tnew line\n" +" \\r\tcarriage return\n" +" \\t\thorizontal tab\n" +" \\v\tvertical tab\n" +" \\\\\tbackslash\n" +" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" +" \t\t0 to 3 octal digits\n" +" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +" \t\tcan be one or two hex digits\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Skriv argumenter til standardutdata.\n" +" \n" +" Send ARGumenter til standardutdata, adskilt med enkelt mellomromtegn og\n" +" etterfulgt av linjeskift.n \n" +" Valg:\n" +" -n\tikke legg til linjeskift\n" +" -e\tslÃ¥ pÃ¥ tolkning av skrÃ¥strek-skiftetegn\n" +" -E\tslÃ¥ uttrykkelig av tolkning av skÃ¥strek-skiftetegn\n" +" \n" +" «echo» tolker følgende skiftetegn:\n" +" \\a\tsystemvarsel\n" +" \\b\tskrÃ¥strektegn\n" +" \\c\tavbryt etterfølgende utdata\n" +" \\e\tskiftetegn\n" +" \\E\tskiftetegn\n" +" \\f\tsideskift\n" +" \\n\tny linje\n" +" \\r\tlinjeskift-tegn\n" +" \\t\thorisontal tabulator\n" +" \\v\tvertikal tabulator\n" +" \\\\\tomvendt skrÃ¥strek\n" +" \\0nnn\ttegn med ASCII-kode NNN (oktal). NNN kan bestÃ¥ av\n" +" \t0 til 3 oktale sifre\n" +" \\xHH\t8-bit-tegn med verdi HH (heksadesimal). HH\n" +" \tkan bestÃ¥ av ett eller to hex-sifre\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre det oppstÃ¥r en skrivefeil." + +#: builtins.c:591 +msgid "" +"Write arguments to the standard output.\n" +" \n" +" Display the ARGs on the standard output followed by a newline.\n" +" \n" +" Options:\n" +" -n\tdo not append a newline\n" +" \n" +" Exit Status:\n" +" Returns success unless a write error occurs." +msgstr "" +"Skriv ut argumenter til standardutdata.\n" +" \n" +" Vis ARGumenter pÃ¥ standardutdata, etterfulgt av linjeskift.\n" +" \n" +" Valg:\n" +" -n\tikke ta med linjeskift\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre det oppstÃ¥r en skrivefeil." + +#: builtins.c:606 +msgid "" +"Enable and disable shell builtins.\n" +" \n" +" Enables and disables builtin shell commands. Disabling allows you to\n" +" execute a disk command which has the same name as a shell builtin\n" +" without using a full pathname.\n" +" \n" +" Options:\n" +" -a\tprint a list of builtins showing whether or not each is enabled\n" +" -n\tdisable each NAME or display a list of disabled builtins\n" +" -p\tprint the list of builtins in a reusable format\n" +" -s\tprint only the names of Posix `special' builtins\n" +" \n" +" Options controlling dynamic loading:\n" +" -f\tLoad builtin NAME from shared object FILENAME\n" +" -d\tRemove a builtin loaded with -f\n" +" \n" +" Without options, each NAME is enabled.\n" +" \n" +" To use the `test' found in $PATH instead of the shell builtin\n" +" version, type `enable -n test'.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not a shell builtin or an error occurs." +msgstr "" +"SlÃ¥ pÃ¥ og av innebygde skallfunksjoner.\n" +" \n" +" SlÃ¥r av og pÃ¥ innebygde skallkommandoer. Ved Ã¥ slÃ¥ av kan du\n" +" kjøre en kommando pÃ¥ disk med samme navnet som en skallkommando\n" +" uten Ã¥ mÃ¥tte bruke fullstendig filsti.\n" +" \n" +" Valg:\n" +" -a\tskriv ut en liste som viser hvilke kommandoer som er slÃ¥tt pÃ¥\n" +" -n\tslÃ¥ av hvert valgt NAVN, eller vis en liste over kommandoer som er " +"slÃ¥tt av\n" +" -p\tskriv ut liste over kommandoer i et gjenbrukbart format\n" +" -s\tbare skriv ut navn pÃ¥ innebygde Posix-spesialkommandoer\n" +" \n" +" Valg for dynamisk innlasting:\n" +" -f\tHent NAVN fra delt objekt-FILNAVN\n" +" -d\tFjern en kommando som er lastet inn med -f\n" +" \n" +" Hvis du ikke tar noen valg, blir hvert NAVN slÃ¥tt pÃ¥.\n" +" \n" +" Bruk «enable -n test» for Ã¥ bruke «test» i $PATH i stedet for\n" +" versjonen som er innebygd i skallet.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre valgt NAVN ikke er innebygd eller det oppstÃ¥r en " +"feil." + +#: builtins.c:634 +msgid "" +"Execute arguments as a shell command.\n" +" \n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" +" and execute the resulting commands.\n" +" \n" +" Exit Status:\n" +" Returns exit status of command or success if command is null." +msgstr "" +"Kjør argumenter som en skallkommando.\n" +" \n" +" Kombiner ARGumenter i én streng, bruk resultatet som inndata i skallet,\n" +" og kjør dette som kommando(er).\n" +" \n" +" Avslutningsstatus:\n" +" Samme som valgt kommando, eller vellykket hvis kommando er null." + +#: builtins.c:646 +msgid "" +"Parse option arguments.\n" +" \n" +" Getopts is used by shell procedures to parse positional parameters\n" +" as options.\n" +" \n" +" OPTSTRING contains the option letters to be recognized; if a letter\n" +" is followed by a colon, the option is expected to have an argument,\n" +" which should be separated from it by white space.\n" +" \n" +" Each time it is invoked, getopts will place the next option in the\n" +" shell variable $name, initializing name if it does not exist, and\n" +" the index of the next argument to be processed into the shell\n" +" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n" +" a shell script is invoked. When an option requires an argument,\n" +" getopts places that argument into the shell variable OPTARG.\n" +" \n" +" getopts reports errors in one of two ways. If the first character\n" +" of OPTSTRING is a colon, getopts uses silent error reporting. In\n" +" this mode, no error messages are printed. If an invalid option is\n" +" seen, getopts places the option character found into OPTARG. If a\n" +" required argument is not found, getopts places a ':' into NAME and\n" +" sets OPTARG to the option character found. If getopts is not in\n" +" silent mode, and an invalid option is seen, getopts places '?' into\n" +" NAME and unsets OPTARG. If a required argument is not found, a '?'\n" +" is placed in NAME, OPTARG is unset, and a diagnostic message is\n" +" printed.\n" +" \n" +" If the shell variable OPTERR has the value 0, getopts disables the\n" +" printing of error messages, even if the first character of\n" +" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n" +" \n" +" Getopts normally parses the positional parameters ($0 - $9), but if\n" +" more arguments are given, they are parsed instead.\n" +" \n" +" Exit Status:\n" +" Returns success if an option is found; fails if the end of options is\n" +" encountered or an error occurs." +msgstr "" +"Tolk valg-argumenter.\n" +" \n" +" Getopts brukes av skallprosedyrer til Ã¥ tolke posisjonsparametre\n" +" som valg.\n" +" \n" +" VALGSTRENG inneholder bokstaver som skal behandles som valg.\n" +" Hvis en bokstav etterfølges av kolon, forventer valget et argument.\n" +" Argumentet holdes adskilt fra valget med blanktegn.\n" +" \n" +" getopts plasserer neste valg i skallvariabelen $name hver gang det\n" +" kalles, laster inn navnet hvis det ikke finnes, og\n" +" indeks for neste argument som skal behandles i skallvariabelen OPTIND.\n" +" OPTIND lastes inn til 1 hver gang skallet eller et skallskript kjøres.\n" +" NÃ¥r et valg krever et argument plasseres argumentet i skallvariabelen " +"OPTARG.\n" +" \n" +" getopts rapporterer feil pÃ¥ én av to mÃ¥ter. Hvis første tegn i " +"VALGSTRENG\n" +" er kolon, rapporteres feil uten direkte feilmeldinger til brukeren.\n" +" Hvis getopts ser et ugyldig valg, plasseres aktuelt valgtegn i OPTARG.\n" +" Hvis et obligatorisk argument ikke er gitt, legger getopts et «:» i NAVN " +"og\n" +" bruker oppdaget valgtegn som OPTARG. Hvis getopts ikke er i " +"stillemodus,\n" +" og ser et ugyldig valg, brukes «?» som NAVN, og OPTARG tømmes.\n" +" Hvis et obligatorisk argument ikke er gitt, legger getopts et «?»\n" +" i NAVN, tømmer OPTARG og skriver ut en feilmelding.\n" +" \n" +" Hvis skallvariabelen OPTERR har verdien 0, slÃ¥r getopts av utskrift\n" +" av feilmeldinger, selv hvis første tegn i VALGSTRENG ikke er kolon.\n" +" OPTERR har verdien 1 som standard.\n" +" \n" +" Getopts tolker vanligvis posisjonsparametre ($0 - $9), men hvis\n" +" flere argumenter er gitt, blir disse tolket i stedet.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket hvis et valg finnes, og mislykket hvis et valg ikke finnes\n" +" eller det oppstÃ¥r en annen feil." + +#: builtins.c:688 +msgid "" +"Replace the shell with the given command.\n" +" \n" +" Execute COMMAND, replacing this shell with the specified program.\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" +" any redirections take effect in the current shell.\n" +" \n" +" Options:\n" +" -a name\tpass NAME as the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" +" \n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" +" the shell option `execfail' is set.\n" +" \n" +" Exit Status:\n" +" Returns success unless COMMAND is not found or a redirection error " +"occurs." +msgstr "" +"Erstatt skallet med valgt kommando.\n" +" \n" +" Kjør KOMMANDO, og erstatt dette skallet med valgt program.\n" +" ARGUMENTER sendes videre til valgt KOMMANDO. Hvis KOMMANDO ikke er " +"valgt,\n" +" blir videresendinger brukt i gjeldende skall.\n" +" \n" +" Valg:\n" +" -a name\tsend NAVN som argument nummer null for KOMMANDO\n" +" -c\t\tkjør valgt KOMMANDO med et tomt miljø\n" +" -l\t\tbruk bindestrek som argument nummer null for COMMAND\n" +" \n" +" Hvis kommandoen ikke kan kjøres, avsluttes ikke-interaktivt skall, med " +"mindre\n" +" skallvalget «execfail» er brukt.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre valgt KOMMANDO ikke finnes eller det oppstÃ¥r en " +"videresendingsfeil." + +#: builtins.c:709 +msgid "" +"Exit the shell.\n" +" \n" +" Exits the shell with a status of N. If N is omitted, the exit status\n" +" is that of the last command executed." +msgstr "" +"Avslutt skallet.\n" +" \n" +" Avslutt skallet med status N. Hvis N utelates, er statuskoden\n" +" den samme som forrige kjørte kommando." + +#: builtins.c:718 +msgid "" +"Exit a login shell.\n" +" \n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" +" in a login shell." +msgstr "" +"Avslutt et innloggingsskall.\n" +" \n" +" Avslutter et innloggingsskall med status N. Dette gir feilmelding hvis " +"det\n" +" ikke kjøres i et innloggingsskall." + +#: builtins.c:728 +msgid "" +"Display or execute commands from the history list.\n" +" \n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" +" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" +" string, which means the most recent command beginning with that\n" +" string.\n" +" \n" +" Options:\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" +" \t\tthen vi\n" +" -l \tlist lines instead of editing\n" +" -n\tomit line numbers when listing\n" +" -r\treverse the order of the lines (newest listed first)\n" +" \n" +" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n" +" re-executed after the substitution OLD=NEW is performed.\n" +" \n" +" A useful alias to use with this is r='fc -s', so that typing `r cc'\n" +" runs the last command beginning with `cc' and typing `r' re-executes\n" +" the last command.\n" +" \n" +" Exit Status:\n" +" Returns success or status of executed command; non-zero if an error " +"occurs." +msgstr "" +"Vis eller kjør kommandoer fra historikklista.\n" +" \n" +" fc brukes til Ã¥ vise list eller redigere og kjøre kommandoer pÃ¥ nytt fra " +"historikklista.\n" +" FØRSTE og SISTE kan være tall som angir rekkevidde. FØRSTE kan ogsÃ¥ være " +"en\n" +" streng, som betyr nyeste kommando som begynner med denne strengen.\n" +" \n" +" Valg:\n" +" -e ENAME\tvelg hvilket redigeringsprogram som skal brukes. Standard er " +"FCEDIT, evt. EDITOR\n" +" \t\teller vi\n" +" -l \tvis linjer i stedet for Ã¥ redigere\n" +" -n\tikke vis linjenumre\n" +" -r\tvis linjer i omvendt rekkefølge (nyeste linjer øverst)\n" +" \n" +" I formatet «fc -s [pat=rep …] [kommando]» kjøres KOMMANDO\n" +" pÃ¥ nytt etter at GAMMEL=NY er utført.\n" +" \n" +" Et nyttig alias for dette er r='fc -s'. Slik blir «r cc» ensbetydende\n" +" med Ã¥ kjøre forrige kommando med navn som begynner pÃ¥ «cc», og «r»\n" +" betyr Ã¥ kjøre forrige kommando.\n" +" \n" +" Avslutningsstatus:\n" +" Enten vellykket, samme som kjørt kommando eller noe annet enn null hvis " +"det oppstÃ¥r feil." + +#: builtins.c:758 +msgid "" +"Move job to the foreground.\n" +" \n" +" Place the job identified by JOB_SPEC in the foreground, making it the\n" +" current job. If JOB_SPEC is not present, the shell's notion of the\n" +" current job is used.\n" +" \n" +" Exit Status:\n" +" Status of command placed in foreground, or failure if an error occurs." +msgstr "" +"Flytt jobb til forgrunnen.\n" +" \n" +" Plasser jobb med id-en JOB_SPEC i forgrunnen, slik at den blir\n" +" gjeldende jobb. Hvis JOB_SPEC ikke er oppgitt, brukes jobben som\n" +" allerede oppfattes som gjeldende i skallet.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det " +"oppstÃ¥r en feil." + +#: builtins.c:773 +msgid "" +"Move jobs to the background.\n" +" \n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" +" of the current job is used.\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Flytt jobber til bakgrunnen.\n" +" \n" +" Plasser jobber med id-er JOB_SPEC i bakgrunnen, som om de\n" +" ble startet med «&». Hvis JOB_SPEC ikke er oppgitt, brukes jobben som " +"allerede\n" +" som gjeldende i skallet.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre jobbkontroll er slÃ¥tt av eller det oppstÃ¥r en feil." + +#: builtins.c:787 +msgid "" +"Remember or display program locations.\n" +" \n" +" Determine and remember the full pathname of each command NAME. If\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" +" \n" +" Options:\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" +" -p pathname\tuse PATHNAME as the full pathname of NAME\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" +" \t\teach location with the corresponding NAME if multiple\n" +" \t\tNAMEs are given\n" +" Arguments:\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" +" \t\tof remembered commands.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is not found or an invalid option is given." +msgstr "" +"Husk eller vis programplasseringer.\n" +" \n" +" Finn ut og husk fullstendige stinavn pÃ¥ hvert kommandoNAVN. Hvis\n" +" ingen argumenter er gitt, viser programmet lagrede programplasseringer.\n" +" \n" +" Valg:\n" +" -d\t\tglem lagret plassering av valgt(e) NAVN\n" +" -l\t\tskriv ut i gjenbrukbart format\n" +" -p stinavn\tbruk valgt STINAVN som fullstendig stinavn pÃ¥ valgt NAVN\n" +" -r\t\tglem alle lagrede plasseringer\n" +" -t\t\tskriv ut lagret plassering av valgt(e) NAVN, med\n" +" \t\tNAVN foran aktuell plassering hvis flere NAVN er valgt\n" +" Argumenter:\n" +" NAVN\t\tProgrammet søker etter hvert NAVN i $PATH og legger det til i " +"lista\n" +" \t\tover lagrede kommandoer.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre NAVN ikke finnes eller brukeren tar et ugyldig " +"valg." + +#: builtins.c:812 +msgid "" +"Display information about builtin commands.\n" +" \n" +" Displays brief summaries of builtin commands. If PATTERN is\n" +" specified, gives detailed help on all commands matching PATTERN,\n" +" otherwise the list of help topics is printed.\n" +" \n" +" Options:\n" +" -d\toutput short description for each topic\n" +" -m\tdisplay usage in pseudo-manpage format\n" +" -s\toutput only a short usage synopsis for each topic matching\n" +" \t\tPATTERN\n" +" \n" +" Arguments:\n" +" PATTERN\tPattern specifiying a help topic\n" +" \n" +" Exit Status:\n" +" Returns success unless PATTERN is not found or an invalid option is " +"given." +msgstr "" +"Vis informasjon om innebygde kommandoer.\n" +" \n" +" Vis kort sammendrag om innebygde kommandoer. Hvis MØNSTER er\n" +" gitt, vises detaljert hjelp til bruk av alle kommandoer som samsvarer\n" +" med MØNSTER. Ellers vises en liste over hjelpeemner.\n" +" \n" +" VALG:\n" +" -d\tskriv ut en kort beskrivelse av hvert emne\n" +" -m\tetterlikn «manpage»-format i bruksdata\n" +" -s\tbare vis et kort brukssammendrag per emne som samsvarer\n" +" \tmed MØNSTER\n" +" \n" +" Argumenter:\n" +" MØNSTER\tVelger hjelpeemne\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre et MØNSTER ikke finnes eller brukeren tar et " +"ugyldig valg." + +#: builtins.c:836 +#, fuzzy +msgid "" +"Display or manipulate the history list.\n" +" \n" +" Display the history list with line numbers, prefixing each modified\n" +" entry with a `*'. An argument of N lists only the last N entries.\n" +" \n" +" Options:\n" +" -c\tclear the history list by deleting all of the entries\n" +" -d offset\tdelete the history entry at position OFFSET.\n" +" \n" +" -a\tappend history lines from this session to the history file\n" +" -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" +" -r\tread the history file and append the contents to the history\n" +" \t\tlist\n" +" -w\twrite the current history to the history file\n" +" \n" +" -p\tperform history expansion on each ARG and display the result\n" +" \t\twithout storing it in the history list\n" +" -s\tappend the ARGs to the history list as a single entry\n" +" \n" +" If FILENAME is given, it is used as the history file. Otherwise,\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" +" \n" +" If the HISTTIMEFORMAT variable is set and not null, its value is used\n" +" as a format string for strftime(3) to print the time stamp associated\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Vis eller gjør endringer i kommandohistorikk.\n" +" \n" +" Vis historikk som en liste med linjenumre, og legg til en «*» foran\n" +" endrede oppføringer. Argumentet N viser siste N antall oppføringer.\n" +" \n" +" Valg:\n" +" -c\ttøm historikk ved Ã¥ slette alle oppføringer\n" +" -d posisjon\tslett historikkoppføring ved valgt posisjon.\n" +" \n" +" -a\tlegg til linjer fra denne økta i historikkfil\n" +" -n\tles alle historikklinjer som ikke allerede er lest inn fra " +"historikkfil\n" +" -r\tles historikkfil og legg til innhold i historikkliste\n" +" -w\tlagre gjeldende historikk i historikkfil\n" +" \tog legg til i historikkliste\n" +" \n" +" -p\tutfør historikkutvidelse per ARGument og vis resultatet\n" +" \tuten Ã¥ lagre det i historikkliste\n" +" -s\tlegg til ARGumenter i historikkliste som én enkelt oppføring\n" +" \n" +" Hvis FILNAVN er valgt, brukes dette som historikkfil. Hvis ikke, brukes\n" +" $HISTFILE hvis den har en verdi. Ellers brukes «~/.bash_history».\n" +" \n" +" Hvis variabelen $HISTTIMEFORMAT har en verdi som ikke er null, brukes " +"denne\n" +" verdien som formatstreng for strftime(3) for Ã¥ skriv ut tidsstempelet i\n" +" hver historikkoppføring. Ellers skrives ingen tidsstempler ut.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " +"feil." + +#: builtins.c:872 +msgid "" +"Display status of jobs.\n" +" \n" +" Lists the active jobs. JOBSPEC restricts output to that job.\n" +" Without options, the status of all active jobs is displayed.\n" +" \n" +" Options:\n" +" -l\tlists process IDs in addition to the normal information\n" +" -n\tlists only processes that have changed status since the last\n" +" \t\tnotification\n" +" -p\tlists process IDs only\n" +" -r\trestrict output to running jobs\n" +" -s\trestrict output to stopped jobs\n" +" \n" +" If -x is supplied, COMMAND is run after all job specifications that\n" +" appear in ARGS have been replaced with the process ID of that job's\n" +" process group leader.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs.\n" +" If -x is used, returns the exit status of COMMAND." +msgstr "" +"Vis status for bakgrunnsjobber.\n" +" \n" +" Vis aktive bakgrunnsjobber. JOBBSPES begrenser utskrift til valgt jobb.\n" +" Hvis ingenting er valgt, vises status for alle aktive jobber.\n" +" \n" +" Valg:\n" +" -l\tvis prosess-ID-er i tillegg til vanlig informasjon\n" +" -n\tbare vis prosesser som har endret stattus siden forrige\n" +" \tvarsling\n" +" -p\tbare vis prosess-ID-er\n" +" -r\tbare skriv ut kjørende jobber\n" +" -s\tbare skriv ut ventende jobber\n" +" \n" +" Hvis «-x» er valgt, kjøres KOMMANDO straks alle ARGumenterte\n" +" jobber er erstattet med prosess-ID-en til gjeldende prosessgruppeleder.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " +"feil.\n" +" Hvis «-x» er valgt, hentes statuskode fra aktuell KOMMANDO." + +#: builtins.c:899 +msgid "" +"Remove jobs from current shell.\n" +" \n" +" Removes each JOBSPEC argument from the table of active jobs. Without\n" +" any JOBSPECs, the shell uses its notion of the current job.\n" +" \n" +" Options:\n" +" -a\tremove all jobs if JOBSPEC is not supplied\n" +" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" +" \t\tshell receives a SIGHUP\n" +" -r\tremove only running jobs\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option or JOBSPEC is given." +msgstr "" +"Fjern jobber fra gjeldende skall.\n" +" \n" +" Fjerner hvert JOBBSPES-argument fra tabellen med aktive jobber.\n" +" Hvis ingen JOBBSPES er valgt, brukes jobben som regnes som gjeldende.\n" +" \n" +" Valg:\n" +" -a\tfjern alle jobber hvis JOBBSPES ikke er angitt\n" +" -h\tmarker hver JOBBSPES slik at SIGHUP ikke sendes til jobben hvis " +"skallet\n" +" \tmottar et SIGHUP\n" +" -r\tbare fjern kjørende jobber\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar ugyldig(e) valg eller JOBBSPES." + +#: builtins.c:918 +#, fuzzy +msgid "" +"Send a signal to a job.\n" +" \n" +" Send the processes identified by PID or JOBSPEC the signal named by\n" +" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n" +" SIGTERM is assumed.\n" +" \n" +" Options:\n" +" -s sig\tSIG is a signal name\n" +" -n sig\tSIG is a signal number\n" +" -l\tlist the signal names; if arguments follow `-l' they are\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" +" \n" +" Kill is a shell builtin for two reasons: it allows job IDs to be used\n" +" instead of process IDs, and allows processes to be killed if the limit\n" +" on processes that you can create is reached.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or an error occurs." +msgstr "" +"Send et signal til en jobb.\n" +" \n" +" Gi prosesser (valgt med PID eller JOBBSPES) et signal\n" +" (valgt med SIGSPES eller SIGNUM). Hvis hverken SIGSPES eller SIGNUM er " +"valgt,\n" +" brukes SIGTERM.\n" +" \n" +" Valg:\n" +" -s sig\tSIG er et signalnavn\n" +" -n sig\tSIG er et signalnummer\n" +" -l\tvis signalnavn. Hvis «-l» etterfølges av argumenter,\n" +" \tantas disse Ã¥ være signalnumre som det skal vises navn pÃ¥\n" +" \n" +" Kill er en innebygget skallkommando av to grunner: den tillater bruk av " +"jobb-ID\n" +" i stedet for prosess-ID, og lar brukeren drepe prosesser hvis grensa " +"for\n" +" antall tillatte prosesser er nÃ¥dd.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r " +"feil." + +#: builtins.c:942 +msgid "" +"Evaluate arithmetic expressions.\n" +" \n" +" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" +" fixed-width integers with no check for overflow, though division by 0\n" +" is trapped and flagged as an error. The following list of operators is\n" +" grouped into levels of equal-precedence operators. The levels are " +"listed\n" +" in order of decreasing precedence.\n" +" \n" +" \tid++, id--\tvariable post-increment, post-decrement\n" +" \t++id, --id\tvariable pre-increment, pre-decrement\n" +" \t-, +\t\tunary minus, plus\n" +" \t!, ~\t\tlogical and bitwise negation\n" +" \t**\t\texponentiation\n" +" \t*, /, %\t\tmultiplication, division, remainder\n" +" \t+, -\t\taddition, subtraction\n" +" \t<<, >>\t\tleft and right bitwise shifts\n" +" \t<=, >=, <, >\tcomparison\n" +" \t==, !=\t\tequality, inequality\n" +" \t&\t\tbitwise AND\n" +" \t^\t\tbitwise XOR\n" +" \t|\t\tbitwise OR\n" +" \t&&\t\tlogical AND\n" +" \t||\t\tlogical OR\n" +" \texpr ? expr : expr\n" +" \t\t\tconditional operator\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tassignment\n" +" \n" +" Shell variables are allowed as operands. The name of the variable\n" +" is replaced by its value (coerced to a fixed-width integer) within\n" +" an expression. The variable need not have its integer attribute\n" +" turned on to be used in an expression.\n" +" \n" +" Operators are evaluated in order of precedence. Sub-expressions in\n" +" parentheses are evaluated first and may override the precedence\n" +" rules above.\n" +" \n" +" Exit Status:\n" +" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." +msgstr "" +"Kontroller aritmetiske uttrykk.\n" +" \n" +" Kontroller hvert ARGument som et aritmetisk uttrykk. Kontroll utføres i\n" +" breddefaste heltall uten overflodssjekk, men deling pÃ¥ 0 fanges opp\n" +" og markeres som en feil. Følgende liste over operatører er\n" +" sortert gruppevis pÃ¥ presedensnivÃ¥, som vises i synkende rekkefølge.\n" +" \n" +" \tid++, id--\tvariabel post-inkrement, post-dekrement\n" +" \t++id, --id\tvariabel pre-inkrement, pre-dekrement\n" +" \t-, +\t\tunær minus, pluss\n" +" \t!, ~\t\tlogisk og bitvis negasjon\n" +" \t**\t\teksponentiasjon\n" +" \t*, /, %\t\tmultiplikasjon, divisjon, rest\n" +" \t+, -\t\taddisjon, subtraksjon\n" +" \t<<, >>\t\tvenstre og høyre bitvis bytte\n" +" \t<=, >=, <, >\tsammenlikning\n" +" \t==, !=\t\tlikhet, ulikhet\n" +" \t&\t\tbitvis AND\n" +" \t^\t\tbitvis XOR\n" +" \t|\t\tbitvis OR\n" +" \t&&\t\tlogisk AND\n" +" \t||\t\tlogisk OR\n" +" \texpr ? expr : expr\n" +" \t\t\tbetinget operatør\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\toppgave\n" +" \n" +" Skallvariabler tillates som operand. Variabelens navn erstattes med\n" +" verdien (tvunget til et breddefast heltall) i et uttrykk.\n" +" Variabelen behøver ikke heltallsattributt for Ã¥ kunne brukes i et " +"uttrykk.\n" +" \n" +" Operatører regnes ut etter presedens. Underuttrykk i parentes\n" +" regnes ut først, og kan overstyre overnevnte presedensregler.\n" +" \n" +" Avslutningsstatus:\n" +" Hvis siste ARGument blir 0, er status 1. Ellers er statuskoden 0." + +#: builtins.c:987 +msgid "" +"Read a line from the standard input and split it into fields.\n" +" \n" +" Reads a single line from the standard input, or from file descriptor FD\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" +" splitting, and the first word is assigned to the first NAME, the second\n" +" word to the second NAME, and so on, with any leftover words assigned to\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" +" delimiters.\n" +" \n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" +" \n" +" Options:\n" +" -a array\tassign the words read to sequential indices of the array\n" +" \t\tvariable ARRAY, starting at zero\n" +" -d delim\tcontinue until the first character of DELIM is read, rather\n" +" \t\tthan newline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" +" -n nchars\treturn after reading NCHARS characters rather than waiting\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" +" -p prompt\toutput the string PROMPT without a trailing newline before\n" +" \t\tattempting to read\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" +" \n" +" Exit Status:\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" +" or an invalid file descriptor is supplied as the argument to -u." +msgstr "" +"Les en linje fra standard inndata og del den opp i felt.\n" +" \n" +" Leser en enkeltlinje fra standard inndata, eller fra fildeskriptor FD\n" +" hvis «-u» er valgt. Linja deles opp i felt pÃ¥ samme mÃ¥te som orddeling.\n" +" Første ord tildeles første NAVN, ord nummer to til NAVN nummer to,\n" +" og sÃ¥ videre. Eventuelle restrerende ord tildeles siste NAVN.\n" +" Bare tegn som finnes i $IFS regnes som ord-skilletegn.\n" +" \n" +" Hvis ingen NAVN er oppgitt, legges lest linje i variabelen REPLY.\n" +" \n" +" Valg:\n" +" -a tabell\tknytt leste ord til sekvens-indekser i \n" +" \t\ttabellvariabelen TABELL, talt fra null\n" +" -d skill\tfortsett frem til første SKILLetegn, i stedet for frem til " +"linjeskift\n" +" -e\t\tbruk Readline til Ã¥ hente linja i et interaktivt skall\n" +" -i tekst\tBruk valgt TEKST med Readline\n" +" -n n\tgÃ¥ tilbake etter Ã¥ ha lest N antall tegn i stedet for Ã¥ vente pÃ¥ " +"ny linje,\n" +" \t\tmen bruk skilletegn hvis linja er kortere enn N\n" +" \t\tles tegn før skilletegn\n" +" -N N\tgÃ¥ tilbake etter Ã¥ ha lest nøyaktig N antall tegn, med mindre\n" +" \t\tEOF eller tidsavbrudd oppstÃ¥r (skilletegn ignoreres)\n" +" -p ledet\tskriv ut valgt LEDETekst uten Ã¥ legge til linjeskift før " +"lesing\n" +" -r\t\tikke tillat bruk av skrÃ¥strek som skiftetegn\n" +" -s\t\tikke skriv ut inndata som kommer fra en terminal\n" +" -t tidsav\tavbryt og avslutt med feil hvis en hel linje med inndata\n" +" \t\tikke blir lest ferdig innen valgt TIDSAVbrudd (i sekunder).\n" +" \t\tStandard avbruddstid hentes fra variabelen TMOUT. TIDSAVbrudd kan " +"være\n" +" \t\tet brøktall. Hvis TIDSAV er 0, gÃ¥r read tilbake umiddelbart,\n" +" \t\tog prøver ikke Ã¥ lese data. I sistnevnte tilfelle avslutter read " +"bare\n" +" \t\tvellykket hvis inndata er tilgjengelig pÃ¥ valgt fildeskriptor.\n" +" \t\tAvslutningsstatus er større enn 128 ved tidsavbrudd\n" +" -u fd\t\tles fra fildeskriptor FD i stedet for standard inndata\n" +" \n" +" Avslutningsstatus:\n" +" Null (vellykket), med mindre programmet møter EOF, fÃ¥r tidsavbrudd\n" +" (i sÃ¥ fall er verdien høyere enn 128), det oppstÃ¥r en variabel-" +"tidelingsfeil,\n" +" eller valget «-u» argumenteres med en ugyldig fildeskriptor." + +#: builtins.c:1034 +msgid "" +"Return from a shell function.\n" +" \n" +" Causes a function or sourced script to exit with the return value\n" +" specified by N. If N is omitted, the return status is that of the\n" +" last command executed within the function or script.\n" +" \n" +" Exit Status:\n" +" Returns N, or failure if the shell is not executing a function or script." +msgstr "" +"GÃ¥ ut av en skallfunksjon.\n" +" \n" +" Avslutter en funksjon eller kildeskript med status N.\n" +" Hvis N er utelatt, brukes statuskoden fra forrige kommando\n" +" i funksjonen eller skriptet.\n" +" \n" +" Avslutningsstatus:\n" +" N, eller mislykket hvis skallet ikke kjører en funksjon eller et skript." + +#: builtins.c:1047 +#, fuzzy +msgid "" +"Set or unset values of shell options and positional parameters.\n" +" \n" +" Change the value of shell attributes and positional parameters, or\n" +" display the names and values of shell variables.\n" +" \n" +" Options:\n" +" -a Mark variables which are modified or created for export.\n" +" -b Notify of job termination immediately.\n" +" -e Exit immediately if a command exits with a non-zero status.\n" +" -f Disable file name generation (globbing).\n" +" -h Remember the location of commands as they are looked up.\n" +" -k All assignment arguments are placed in the environment for a\n" +" command, not just those that precede the command name.\n" +" -m Job control is enabled.\n" +" -n Read commands but do not execute them.\n" +" -o option-name\n" +" Set the variable corresponding to option-name:\n" +" allexport same as -a\n" +" braceexpand same as -B\n" +" emacs use an emacs-style line editing interface\n" +" errexit same as -e\n" +" errtrace same as -E\n" +" functrace same as -T\n" +" hashall same as -h\n" +" histexpand same as -H\n" +" history enable command history\n" +" ignoreeof the shell will not exit upon reading EOF\n" +" interactive-comments\n" +" allow comments to appear in interactive commands\n" +" keyword same as -k\n" +" monitor same as -m\n" +" noclobber same as -C\n" +" noexec same as -n\n" +" noglob same as -f\n" +" nolog currently accepted but ignored\n" +" notify same as -b\n" +" nounset same as -u\n" +" onecmd same as -t\n" +" physical same as -P\n" +" pipefail the return value of a pipeline is the status of\n" +" the last command to exit with a non-zero status,\n" +" or zero if no command exited with a non-zero " +"status\n" +" posix change the behavior of bash where the default\n" +" operation differs from the Posix standard to\n" +" match the standard\n" +" privileged same as -p\n" +" verbose same as -v\n" +" vi use a vi-style line editing interface\n" +" xtrace same as -x\n" +" -p Turned on whenever the real and effective user ids do not match.\n" +" Disables processing of the $ENV file and importing of shell\n" +" functions. Turning this option off causes the effective uid and\n" +" gid to be set to the real uid and gid.\n" +" -t Exit after reading and executing one command.\n" +" -u Treat unset variables as an error when substituting.\n" +" -v Print shell input lines as they are read.\n" +" -x Print commands and their arguments as they are executed.\n" +" -B the shell will perform brace expansion\n" +" -C If set, disallow existing regular files to be overwritten\n" +" by redirection of output.\n" +" -E If set, the ERR trap is inherited by shell functions.\n" +" -H Enable ! style history substitution. This flag is on\n" +" by default when the shell is interactive.\n" +" -P If set, do not resolve symbolic links when executing commands\n" +" such as cd which change the current directory.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" +" -- Assign any remaining arguments to the positional parameters.\n" +" If there are no remaining arguments, the positional parameters\n" +" are unset.\n" +" - Assign any remaining arguments to the positional parameters.\n" +" The -x and -v options are turned off.\n" +" \n" +" Using + rather than - causes these flags to be turned off. The\n" +" flags can also be used upon invocation of the shell. The current\n" +" set of flags may be found in $-. The remaining n ARGs are positional\n" +" parameters and are assigned, in order, to $1, $2, .. $n. If no\n" +" ARGs are given, all shell variables are printed.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given." +msgstr "" +"Legg til eller fjern verdier for skallvalg og posisjonsparametre.\n" +" \n" +" Endre verdien av skall-attributter og posisjonsparametre, eller\n" +" vis navn og verdier av skallvariabler.\n" +" \n" +" Valg:\n" +" -a Marker variabler som er endret eller laget for eksportering.\n" +" -b Varsle jobbavbrudd umiddelbart.\n" +" -e Avslutt hvis en kommando avslutter med annen status enn null.\n" +" -f SlÃ¥ av generering av filnavn («globbing»).\n" +" -h Husk plassering av kommandoer ved oppslag.\n" +" -k Legg alle tildelingsargumenter for en kommando i miljøet,\n" +" og ikke bare de som kommer før kommandonavnet.\n" +" -m SlÃ¥ pÃ¥ jobbkontroll.\n" +" -n Les kommandoer, men ikke kjør dem.\n" +" -o valgnavn\n" +" Gi verdi til variabelen som samsvarer med valgnavn:\n" +" allexport tilsvarer «-a»\n" +" braceexpand tilsvarer «-B»\n" +" emacs rediger linjer med et emacs-aktig grensesnitt\n" +" errexit tilsvarer «-e»\n" +" errtrace tilsvarer «-E»\n" +" functrace tilsvarer «-T»\n" +" hashall tilsvarer «-h»\n" +" histexpand tilsvarer «-H»\n" +" history slÃ¥ pÃ¥ kommandohistorikk\n" +" ignoreeof ikke avslutt skall ved lesing av EOF\n" +" interactive-comments\n" +" tillat kommentarer i interaktive kommandoer\n" +" keyword tilsvarer «-k»\n" +" monitor tilsvarer «-m»\n" +" noclobber tilsvarer «-C»\n" +" noexec tilsvarer «-n»\n" +" noglob tilsvarer «-f»\n" +" nolog godtas, men ignoreres\n" +" notify tilsvarer «-b»\n" +" nounset tilsvarer «-u»\n" +" onecmd tilsvarer «-t»\n" +" physical tilsvarer «-P»\n" +" pipefail returverdi av en kommandokø er statusen for\n" +" siste kommando som avslutter med en annen status " +"enn null,\n" +" eller null hvis alle kommandoer avsluttet med " +"null\n" +" posix endre bash-oppførsel hvor standardoppførselen er\n" +" annerledes enn Posix-standarden, slik at bash\n" +" samsvarer med Posix\n" +" privileged tilsvarer «-p»\n" +" verbose tilsvarer «-v»\n" +" vi rediger linjer med et vi-aktig grensesnitt\n" +" xtrace tilsvarer «-x»\n" +" -p SlÃ¥tt pÃ¥ nÃ¥r virkelig og effektiv bruker-ID ikke er like.\n" +" Dette slÃ¥r av behandling av fila $ENV og importering av\n" +" skallfunksjoner. Hvis du slÃ¥r av dette valget, blir effektiv uid " +"og\n" +" gid det samme som virkelig uid og gid.\n" +" -t Avslutt nÃ¥r én kommando er lest og kjørt.\n" +" -u Behandle udefinerte variabler som en feil.\n" +" -v Skriv ut skall-inndatalinjer nÃ¥r de leses.\n" +" -x Skriv ut kommandoer og argumenter nÃ¥r de kjøres.\n" +" -B utfør «brace»-utvidelse\n" +" -C Ikke tillat overskriving av vanlige filer ved\n" +" videresending av utdata.\n" +" -E Gi ERR-felle videre til skallfunksjoner.\n" +" -H SlÃ¥ pÃ¥ historikk-subsidiering i «!»-stil. Dette er slÃ¥tt pÃ¥\n" +" som standard i interaktive skall.\n" +" -P Ikke følg symbolske lenker ved kjøring av kommandoer\n" +" som «cd».\n" +" -T Gi DEBUG-felle videre til skallfunksjoner.\n" +" -- Tildel gjenstÃ¥ende argumenter til posisjonsparametre.\n" +" Hvis ingen argumenter gjenstÃ¥r, tømmes posisjonsparametrene..\n" +" - Knytt gjenstÃ¥ende argumenter til posisjonsparametrene.\n" +" Valgene «-x» og «-v» er slÃ¥tt av.\n" +" \n" +" Bruk «+» i stedet for «-» for Ã¥ skru av disse valgene.\n" +" De kan ogsÃ¥ brukes nÃ¥r skalelt kalles. Gjeldende valgsett finnes\n" +" i «$-». GjenstÃ¥ende antall ARGumenter er posisjonsparametre,\n" +" og tildeles i rekkefølge til $1, $2, … $n. Hvis ingen\n" +" ARGumenter er brukt, skrives alle skallvariabler ut.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg." + +#: builtins.c:1132 +msgid "" +"Unset values and attributes of shell variables and functions.\n" +" \n" +" For each NAME, remove the corresponding variable or function.\n" +" \n" +" Options:\n" +" -f\ttreat each NAME as a shell function\n" +" -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \t\trather than the variable it references\n" +" \n" +" Without options, unset first tries to unset a variable, and if that " +"fails,\n" +" tries to unset a function.\n" +" \n" +" Some variables cannot be unset; also see `readonly'.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a NAME is read-only." +msgstr "" +"Fjern verdier og attributter fra skallvariabler og funksjoner.\n" +" \n" +" Fjern variabel og funksjon per oppgitt NAVN.\n" +" \n" +" Valg:\n" +" -f\tbehandle hvert NAVN som en skallfunksjon\n" +" -v\tbehandle hvert NAVN som en skallvariabel\n" +" -n\tbehandle hvert NAVN som en navnreferanse, og tilbakestill selve " +"variabelen\n" +" \ti stedet for variabelen den refererer til\n" +" \n" +" Hvis ingen valg er tatt, prøver programmet først Ã¥ tømme en variabel.\n" +" Hvis dette mislykkes, prøver programmet Ã¥ tømme en funksjon.\n" +" \n" +" Enkelte variabler kan ikke tømmes. Se ogsÃ¥ «readonly».\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller et NAVN er " +"skrivebeskyttet." + +#: builtins.c:1154 +msgid "" +"Set export attribute for shell variables.\n" +" \n" +" Marks each NAME for automatic export to the environment of subsequently\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" +" \n" +" Options:\n" +" -f\trefer to shell functions\n" +" -n\tremove the export property from each NAME\n" +" -p\tdisplay a list of all exported variables and functions\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Gi skallvariabler eksport-attributt.\n" +" \n" +" Markerer hvert valgt NAVN for automatisk eksportering til miljøet ved " +"etterfølgende\n" +" kjørte kommandoer. Hvis VERDI er oppgitt, tildeles VERDI før " +"eksportering.\n" +" \n" +" Valg:\n" +" -f\thenvis til skallfunksjoner\n" +" -n\tfjern eksport-attributt fra valgt(e) NAVN\n" +" -p\tvis en liste over alle eksporterte variabler og funksjoner\n" +" \n" +" Bruk argumentet«--» for Ã¥ slÃ¥ av videre behandling av valg.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg, eller et NAVN er " +"ugyldig." + +#: builtins.c:1173 +msgid "" +"Mark shell variables as unchangeable.\n" +" \n" +" Mark each NAME as read-only; the values of these NAMEs may not be\n" +" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n" +" before marking as read-only.\n" +" \n" +" Options:\n" +" -a\trefer to indexed array variables\n" +" -A\trefer to associative array variables\n" +" -f\trefer to shell functions\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" +" \n" +" An argument of `--' disables further option processing.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or NAME is invalid." +msgstr "" +"Marker skallvariabler som skrivebeskyttet.\n" +" \n" +" Marker hvert valgt NAVN som skrivebeskyttet. Verdier av NAVN kan ikke " +"endres\n" +" av etterfølgende tildeling. Hvis VERDI er oppgitt, tildeles denne før\n" +" variabelen markeres som skrivebeskyttet.\n" +" \n" +" Valg:\n" +" -a\thenvis til indekserte tabellvariabler\n" +" -A\thenvis til assosiative tabellvariabler\n" +" -f\thenvis til skallfunksjoner\n" +" -p\tvis en liste over alle skrivebeskyttede variabler eller " +"funksjoner,\n" +" avhengig av hvorvidt «-f» er valgt\n" +" \n" +" Bruk argumentet «--» for Ã¥ slÃ¥ av videre behandling av valg.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller NAVN." + +#: builtins.c:1195 +msgid "" +"Shift positional parameters.\n" +" \n" +" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n" +" not given, it is assumed to be 1.\n" +" \n" +" Exit Status:\n" +" Returns success unless N is negative or greater than $#." +msgstr "" +"Flytt posisjonsparametre.\n" +" \n" +" Gi parametrene $N+1,$N+2 osv. nye navn som $1,$2 osv. Hvis N er\n" +" utelatt, brukes verdien 1.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre N er negativ eller større enn $#." + +#: builtins.c:1207 builtins.c:1222 +msgid "" +"Execute commands from a file in the current shell.\n" +" \n" +" Read and execute commands from FILENAME in the current shell. The\n" +" entries in $PATH are used to find the directory containing FILENAME.\n" +" If any ARGUMENTS are supplied, they become the positional parameters\n" +" when FILENAME is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed in FILENAME; fails if\n" +" FILENAME cannot be read." +msgstr "" +"Kjør kommandoer fra en fil i gjeldende skall.\n" +" \n" +" Les og kjør kommandoer fra valgt FILNAVN i gjeldende kall.\n" +" Elementene i $PATH brukes til Ã¥ finne mappa med valgt FILNAVN.\n" +" Hvis ARGUMENTER brukes, bruke disse som posisjonsparametre\n" +" nÃ¥r valgt FILNAVN kjøres.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som siste kommando som ble kjørt via FILNAVN, eller\n" +" mislykket hvis FILNAVN ikke kan leses." + +#: builtins.c:1238 +msgid "" +"Suspend shell execution.\n" +" \n" +" Suspend the execution of this shell until it receives a SIGCONT signal.\n" +" Unless forced, login shells cannot be suspended.\n" +" \n" +" Options:\n" +" -f\tforce the suspend, even if the shell is a login shell\n" +" \n" +" Exit Status:\n" +" Returns success unless job control is not enabled or an error occurs." +msgstr "" +"Sett skallkjøring pÃ¥ pause.\n" +" \n" +" Sett kjøring av dette skallet pÃ¥ pause inntil det mottar et SIGCONT-" +"signal.\n" +" Innloggingsskall kan ikke settes pÃ¥ pause med mindre du tvinger det " +"fram.\n" +" \n" +" Valg:\n" +" -f\ttving skallpause, selv hvis skallet er et innloggingsskall\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre jobbkontroll er slÃ¥tt av eller det oppstÃ¥r en feil." + +#: builtins.c:1254 +msgid "" +"Evaluate conditional expression.\n" +" \n" +" Exits with a status of 0 (true) or 1 (false) depending on\n" +" the evaluation of EXPR. Expressions may be unary or binary. Unary\n" +" expressions are often used to examine the status of a file. There\n" +" are string operators and numeric comparison operators as well.\n" +" \n" +" The behavior of test depends on the number of arguments. Read the\n" +" bash manual page for the complete specification.\n" +" \n" +" File operators:\n" +" \n" +" -a FILE True if file exists.\n" +" -b FILE True if file is block special.\n" +" -c FILE True if file is character special.\n" +" -d FILE True if file is a directory.\n" +" -e FILE True if file exists.\n" +" -f FILE True if file exists and is a regular file.\n" +" -g FILE True if file is set-group-id.\n" +" -h FILE True if file is a symbolic link.\n" +" -L FILE True if file is a symbolic link.\n" +" -k FILE True if file has its `sticky' bit set.\n" +" -p FILE True if file is a named pipe.\n" +" -r FILE True if file is readable by you.\n" +" -s FILE True if file exists and is not empty.\n" +" -S FILE True if file is a socket.\n" +" -t FD True if FD is opened on a terminal.\n" +" -u FILE True if the file is set-user-id.\n" +" -w FILE True if the file is writable by you.\n" +" -x FILE True if the file is executable by you.\n" +" -O FILE True if the file is effectively owned by you.\n" +" -G FILE True if the file is effectively owned by your group.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" +" \n" +" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" +" modification date).\n" +" \n" +" FILE1 -ot FILE2 True if file1 is older than file2.\n" +" \n" +" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n" +" \n" +" String operators:\n" +" \n" +" -z STRING True if string is empty.\n" +" \n" +" -n STRING\n" +" STRING True if string is not empty.\n" +" \n" +" STRING1 = STRING2\n" +" True if the strings are equal.\n" +" STRING1 != STRING2\n" +" True if the strings are not equal.\n" +" STRING1 < STRING2\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" +" STRING1 > STRING2\n" +" True if STRING1 sorts after STRING2 lexicographically.\n" +" \n" +" Other operators:\n" +" \n" +" -o OPTION True if the shell option OPTION is enabled.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" +" ! EXPR True if expr is false.\n" +" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" +" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" +" \n" +" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n" +" -lt, -le, -gt, or -ge.\n" +" \n" +" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n" +" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n" +" than ARG2.\n" +" \n" +" Exit Status:\n" +" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" +" false or an invalid argument is given." +msgstr "" +"Kontroller betinget uttrykk.\n" +" \n" +" Avslutter med status 0 (positiv, «true») eller 1 (negativ, «false»)\n" +" i henhold til resultatet av valgt UTTRykk. Uttrykk kan være unære eller " +"binære.\n" +" Unære uttrykk brukes ofte for Ã¥ undersøke status for en fil.\n" +" Streng- og tallkontroll-valg kan ogsÃ¥ brukes.\n" +" \n" +" Test endrer oppførsel i henhold til antall argumenter.\n" +" Se bash-bruksanvisninga for en fullstendig spesifikasjon.\n" +" \n" +" Filvalg:\n" +" \n" +" -a FIL Positiv hvis FIL finnes.\n" +" -b FIL Positiv hvis FIL er blokk-spesialfil.\n" +" -c FIL Positiv hvis FIL er tegn-spesialfil.\n" +" -d FIL Positiv hvis FIL er en mappe.\n" +" -e FIL Positiv hvis FIL finnes.\n" +" -f FIL Positiv hvis FIL finnes og er en vanlig fil.\n" +" -g FIL Positiv hvis FIL er «set-group-id».\n" +" -h FIL Positiv hvis FIL er en symbolsk lenke.\n" +" -L FIL Positiv hvis FIL er en symbolsk lenke.\n" +" -k FIL Positiv hvis FIL er «sticky».\n" +" -p FIL Positiv hvis FIL er et navngitt datarør.\n" +" -r FIL Positiv hvis FIL kan leses av deg.\n" +" -s FIL Positiv hvis FIL finnes og ikke er tom.\n" +" -S FIL Positiv hvis FIL er en sokkel.\n" +" -t FD Positiv hvis FD er Ã¥pen i en terminal.\n" +" -u FIL Positiv hvis FIL er «set-user-id».\n" +" -w FIL Positiv hvis FIL kan overskrives av deg.\n" +" -x FIL Positiv hvis FIL kan kjøres av deg.\n" +" -O FIL Positiv hvis FIL har deg som effektiv eier.\n" +" -G FIL Positiv hvis FIL har din gruppe som effektiv " +"gruppetilhørighet.\n" +" -N FIL Positiv hvis FIL er blitt endret siden den ble lest " +"sist.\n" +" \n" +" FIL1 -nt FIL2 Positiv hvis FIL1 er nyere enn FIL2 (i følge\n" +" endringsdato).\n" +" \n" +" FIL1 -ot FIL2 Positiv hvis FIL1 er eldre enn FIL2.\n" +" \n" +" FIL1 -ef FIL2 Positiv hvis FIL1 er en hard lenke til FIL2.\n" +" \n" +" Strengvalg:\n" +" \n" +" -z STRENG Positiv hvis STRENG er tom.\n" +" \n" +" -n STRENG\n" +" STRENG Positiv hvis STRENG ikke er tom.\n" +" \n" +" STRENG1 = STRENG2\n" +" Positiv hvis STRENGene er like.\n" +" STRENG1 != STRENG2\n" +" Positiv hvis STRENGene ikke er like.\n" +" STRENG1 < STRENG2\n" +" Positiv hvis STRENG1 havner over STRENG2 nÃ¥r de " +"sorteres leksikografisk.\n" +" STRENG1 > STRENG2\n" +" Positiv hvis STRENG1 havner under STRENG2 nÃ¥r de " +"sorteres leksikografisk.\n" +" \n" +" Andre valg:\n" +" \n" +" -o VALG Positiv hvis skallvalget OPTION er slÃ¥tt pÃ¥.\n" +" -v VAR\t Positiv hvis skallvariabelen VAR har en verdi\n" +" -R VAR\t Positiv hvis skallvariabelen VAR har en verdi, og er en " +"navnreferanse.\n" +" ! UTTR Positiv hvis UTTR er usant.\n" +" UTTR1 -a UTTR2 Positiv hvis bÃ¥de UTTR1 og UTTR2 er sanne.\n" +" UTTR1 -o UTTR2 Positiv hvis enten UTTR1 eller UTTR2 er sanne.\n" +" \n" +" arg1 OP arg2 Aritmetiske tester. OP mÃ¥ være enten «-eq», «-ne»,\n" +" «-lt», «-le», «-gt» eller «-ge».\n" +" \n" +" Aritmetiske binærvalg gir positiv verdi hvis ARG1 er lik, ulik, mindre " +"enn,\n" +" lik-eller-mindre-enn, større enn eller større-enn-eller-lik ARG2.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket hvis UTTR gir positiv verdi, og mislykket hvis det gir negativ " +"verdi eller\n" +" brukeren bruker et ugyldig argument." + +#: builtins.c:1336 +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 "" +"Kontroller betinget uttrykk.\n" +" \n" +" Dette er synonymt med den innebygde kommandoen «test», men\n" +" siste argument mÃ¥ være «]» for Ã¥ samsvare med «[»." + +#: builtins.c:1345 +msgid "" +"Display process times.\n" +" \n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" +" child processes.\n" +" \n" +" Exit Status:\n" +" Always succeeds." +msgstr "" +"Vis prosesstider.\n" +" \n" +" Skriver ut oppsamlet bruker- og systemtid for skallet og alle " +"underprosesser.\n" +" \n" +" Avslutningsstatus:\n" +" Alltid vellykket." + +#: builtins.c:1357 +msgid "" +"Trap signals and other events.\n" +" \n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" +" or other conditions.\n" +" \n" +" ARG is a command to be read and executed when the shell receives the\n" +" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n" +" is supplied) or `-', each specified signal is reset to its original\n" +" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" +" shell and by the commands it invokes.\n" +" \n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" +" shell to exit when the -e option is enabled.\n" +" \n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" +" with each signal.\n" +" \n" +" Options:\n" +" -l\tprint a list of signal names and their corresponding numbers\n" +" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" +" \n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" +" Signal names are case insensitive and the SIG prefix is optional. A\n" +" signal may be sent to the shell with \"kill -signal $$\".\n" +" \n" +" Exit Status:\n" +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." +msgstr "" +"Fang signaler og andre hendelser.\n" +" \n" +" Definerer og slÃ¥r pÃ¥ brytere som skal kjøres nÃ¥r skallet mottar " +"signaler\n" +" eller havner i andre tilstander.\n" +" \n" +" ARG er en kommando som skal leses og kjøres nÃ¥r skallet mottar signalet/-" +"ene\n" +" i henhold til SIGNALSPES. Hvis ARG er enten utelatt eller «-»,\n" +" og én SIGNALSPES er brukt, tilbakestilles valgt(e) signal(er) til\n" +" opprinnelig verdi. Hvis ARG er null, ignoreres SIGNALSPES av skallet\n" +" og kommandoene det kjører.\n" +" \n" +" Hvis en SIGNALSPES er EXIT (0), kjøres ARG nÃ¥r skallet avslutter.\n" +" Hvis en SIGNALSPES er DEBUG, kjøres ARG før hver kommando.\n" +" Hvis en SIGNALSPES er RETURN, kjøres ARG hver gang en skallfunksjon, " +"skript\n" +" eller innebygd kommando har kjørt ferdig. Hvis en SIGNALSPES\n" +" er ERR, kjøres ARG hver gang en feilkjørt kommando ville ført til at " +"skallet\n" +" avsluttes nÃ¥r «-e» er valgt.\n" +" \n" +" Hvis ingen argumenter er brukt, skriver trap ut en liste over " +"kommandoer\n" +" som er tilknyttet hvert signal.\n" +" \n" +" Valg:\n" +" -l\tskriv ut en liste over signalnavn og tilknyttede numre\n" +" -p\tvis trap-kommandoer som er tilknyttet hver SIGNALSPESifikasjon\n" +" \n" +" Hver SIGNALSPES er enten et signalnavn fra eller et " +"signalnummer.\n" +" Signalnavn skiller mellom smÃ¥ og store bokstaver. Prefikset «SIG» er " +"valgfritt.\n" +" Du kan sende et signal til skallet med «kill -signal $$».\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre en SIGNALSPES eller et valg er ugyldig." + +#: builtins.c:1393 +msgid "" +"Display information about command type.\n" +" \n" +" For each NAME, indicate how it would be interpreted if used as a\n" +" command name.\n" +" \n" +" Options:\n" +" -a\tdisplay all locations containing an executable named NAME;\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" +" -f\tsuppress shell function lookup\n" +" -P\tforce a PATH search for each NAME, even if it is an alias,\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" +" -p\treturns either the name of the disk file that would be executed,\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" +" -t\toutput a single word which is one of `alias', `keyword',\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" +" \n" +" Arguments:\n" +" NAME\tCommand name to be interpreted.\n" +" \n" +" Exit Status:\n" +" Returns success if all of the NAMEs are found; fails if any are not " +"found." +msgstr "" +"Vis informasjon om kommandotype.\n" +" \n" +" Vis hvordan hvert NAVN ville blitt tolket hvis det ble brukt som\n" +" et kommandonavn.\n" +" \n" +" Valg:\n" +" -a\tvis alle plasseringer som inneholder en kjørbar fil med oppgitt " +"NAVN.\n" +" \tHer inngÃ¥r alle alias, innebygde kommandoer og funksjoner, med mindre\n" +" \t«-p» er valgt i tillegg\n" +" -f\tikke slÃ¥ opp skallfunksjoner\n" +" -P\ttving et søk i STI etter NAVN, selv hvis det er et alias,\n" +" \tinnebygd kommando eller en funksjon, og vis navn pÃ¥ fila\n" +" \tsom ville blitt kjørt\n" +" -p\tvis enten navn pÃ¥ fila som ville blitt kjørt, eller ingenting " +"hvis\n" +" \t«type -t NAVN» ikke fører til «file».\n" +" -t\tbeskriv NAVN som enten «alias», «keyword» (nøkkelord),\n" +" \t«function» (funksjon), «builtin» (innebygd kommando), «file» (fil) " +"eller \n" +" \t«'» (ikke funnet), if NAME is an alias, shell\n" +" \n" +" Argumenter:\n" +" NAVN\tKommandonavn som skal tolkes.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke " +"finnes." + +#: builtins.c:1424 +msgid "" +"Modify shell resource limits.\n" +" \n" +" Provides control over the resources available to the shell and " +"processes\n" +" it creates, on systems that allow such control.\n" +" \n" +" Options:\n" +" -S\tuse the `soft' resource limit\n" +" -H\tuse the `hard' resource limit\n" +" -a\tall current limits are reported\n" +" -b\tthe socket buffer size\n" +" -c\tthe maximum size of core files created\n" +" -d\tthe maximum size of a process's data segment\n" +" -e\tthe maximum scheduling priority (`nice')\n" +" -f\tthe maximum size of files written by the shell and its children\n" +" -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" +" -l\tthe maximum size a process may lock into memory\n" +" -m\tthe maximum resident set size\n" +" -n\tthe maximum number of open file descriptors\n" +" -p\tthe pipe buffer size\n" +" -q\tthe maximum number of bytes in POSIX message queues\n" +" -r\tthe maximum real-time scheduling priority\n" +" -s\tthe maximum stack size\n" +" -t\tthe maximum amount of cpu time in seconds\n" +" -u\tthe maximum number of user processes\n" +" -v\tthe size of virtual memory\n" +" -x\tthe maximum number of file locks\n" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" +" \n" +" If LIMIT is given, it is the new value of the specified resource; the\n" +" special LIMIT values `soft', `hard', and `unlimited' stand for the\n" +" current soft limit, the current hard limit, and no limit, respectively.\n" +" Otherwise, the current value of the specified resource is printed. If\n" +" no option is given, then -f is assumed.\n" +" \n" +" Values are in 1024-byte increments, except for -t, which is in seconds,\n" +" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n" +" number of processes.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Endre grenser for skallressurser.\n" +" \n" +" Lar deg kontrollere mengden ressurser som skal være tilgjengelig for " +"skall og\n" +" prosessene det lager pÃ¥ systemer som tillater det.\n" +" \n" +" Valg:\n" +" -S\tbruk myk («soft») ressursgrense\n" +" -H\tbruk «hard» ressursgrense\n" +" -a\tvis alle gjeldende grenser\n" +" -b\tstørrelse pÃ¥ sokkel-mellomlager\n" +" -c\tmaksimal størrelse pÃ¥ opprettede kjernefiler\n" +" -d\tmaksimal størrelse pÃ¥ datasegment av en prosess\n" +" -e\tmaksimal prioritet («nice»-verdi)\n" +" -f\tmaksimal størrelse pÃ¥ filer som skrives av skallet og " +"underprosesser\n" +" -i\tmaksimalt antall ventende signaler\n" +" -l\tmaksimal minnemengde en prosess kan lÃ¥se\n" +" -m\tmaksimal «resident set»-størrelse\n" +" -n\tmaksimalt antall Ã¥pne fildeskriptorer\n" +" -p\tstørrelse pÃ¥ mellomlager for datarør\n" +" -q\tmaksimalt antall byte i POSIX-meldingskøer\n" +" -r\tmaksimal sanntidsprioritet\n" +" -s\tmaksimal stabelstørrelse\n" +" -t\tmaksimal cpu-tid (i sekunder)\n" +" -u\tmaksimalt antall brukerprosesser\n" +" -v\tstørrelsen pÃ¥ virtuelt minne\n" +" -x\tmaksimalt antall fillÃ¥ser\n" +" -T maksimalt antall trÃ¥der\n" +" \n" +" Det er ikke alle valg som støttes pÃ¥ alle plattformer.\n" +" \n" +" Hvis GRENSE er oppgitt, brukes denne som ny verdi for valgt ressurs.\n" +" Du kan ogsÃ¥ bruke spesialverdiene «soft» (myk), «hard», og " +"«unlimited» (ubegrenset).\n" +" Ellers skriver programmet ut gjeldende verdi av valgt ressurs. Hvis " +"ingenting\n" +" er valgt, brukes «-f».\n" +" \n" +" Verdier oppgis i 1024-byte-enheter, bortsett fra «-t» som oppgis i " +"sekunder,\n" +" «-p» som oppgis i 512-byte-enheter og «-u» som er et uskalert antall " +"prosesser.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " +"feil." + +#: builtins.c:1474 +msgid "" +"Display or set file mode mask.\n" +" \n" +" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n" +" the current value of the mask.\n" +" \n" +" If MODE begins with a digit, it is interpreted as an octal number;\n" +" otherwise it is a symbolic mode string like that accepted by chmod(1).\n" +" \n" +" Options:\n" +" -p\tif MODE is omitted, output in a form that may be reused as input\n" +" -S\tmakes the output symbolic; otherwise an octal number is output\n" +" \n" +" Exit Status:\n" +" Returns success unless MODE is invalid or an invalid option is given." +msgstr "" +"Vis eller endre filmodus-maske.\n" +" \n" +" Endrer brukerens standardmaske for nye filer til valgt MODUS. Hvis " +"ingen\n" +" MODUS er valgt, skrives gjeldende maskeverdi ut.\n" +" \n" +" Hvis MODUS begynner med et siffer, tolkes den som et oktalt tall,\n" +" og ellers som en symbolsk modusstreng av typen som brukes av chmod(1).\n" +" \n" +" Valg:\n" +" -p\tskriv ut i et format som kan gjenbrukes som inndata hvis ingen " +"MODUS er valgt\n" +" -S\tgjør utdata symbolsk (ikke skriv ut oktaltall)\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre MODUS er ugyldig eller brukeren tar et ugyldig " +"valg." + +#: builtins.c:1494 +msgid "" +"Wait for job completion and return exit status.\n" +" \n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" +" job specification, and reports its termination status. If ID is not\n" +" given, waits for all currently active child processes, and the return\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given." +msgstr "" +"Vent pÃ¥ fullføring av jobb, og skriv ut avslutningsstatus.\n" +" \n" +" Vent pÃ¥ valgt(e) prosess(er) (valgt med ID, som kan være prosess-ID " +"eller\n" +" jobbspesifikasjon), og skriv ut statuskode. Hvis ID ikke er valgt,\n" +" venter programmet pÃ¥ alle aktive underprosesser, og avslutter\n" +" med kode null. Hvis ID er en jobbspesifikasjon, venter programmet pÃ¥ " +"alle\n" +" prosesser i kommandokøen for valgt jobb.\n" +" \n" +" Hvis «-n» er valgt, skriver programmet ut avslutningsstatus for neste " +"jobb.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som siste ID, eller mislykket hvis enten en ID er ugyldig eller\n" +" brukeren tar et ugyldig valg." + +#: builtins.c:1515 +msgid "" +"Wait for process completion and return exit status.\n" +" \n" +" Waits for each process specified by a PID and reports its termination " +"status.\n" +" If PID is not given, waits for all currently active child processes,\n" +" and the return status is zero. PID must be a process ID.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." +msgstr "" +"Vent pÃ¥ ferdigstillelse av prosess, og rapporter avslutningsstatus.\n" +" \n" +" Venter pÃ¥ hver prosess som er valgt med PID, og rapporterer avsluttende " +"statuskode.\n" +" Hvis PID ikke er valgt, venter kommandoen pÃ¥ alle aktive " +"underprosesser,\n" +" og avslutter med null-status. PID mÃ¥ være en prosess-ID.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som siste PID. Mislykket hvis PID er ugyldig, eller hvis\n" +" brukeren tar et ugyldig valg." + +#: builtins.c:1530 +msgid "" +"Execute commands for each member in a list.\n" +" \n" +" The `for' loop executes a sequence of commands for each member in a\n" +" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n" +" assumed. For each element in WORDS, NAME is set to that element, and\n" +" the COMMANDS are executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kjør kommandoer for hvert medlem i en liste.\n" +" \n" +" Løkka «for» kjører en rekke kommandoer per medlem i en liste\n" +" over elementer. Hvis «in ORD …;» ikke er angitt, brukes«in \"$@\"».\n" +" NAVN gis til hvert element i ORD, og KOMMANDOER kjøres.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørte kommando." + +#: builtins.c:1544 +msgid "" +"Arithmetic for loop.\n" +" \n" +" Equivalent to\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n" +" omitted, it behaves as if it evaluates to 1.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Aritmetisk «for»-løkke.\n" +" \n" +" Tilsvarer\n" +" \t(( UTTR1 ))\n" +" \twhile (( UTTR2 )); do\n" +" \t\tKOMMANDOER\n" +" \t\t(( UTTR3 ))\n" +" \tdone\n" +" UTTR1, UTTR2 og UTTR3 er aritmetiske uttrykk. Hvis et uttrykk\n" +" utelates, oppfører programmet seg som om uttrykket er lik 1.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørte kommando." + +#: builtins.c:1562 +msgid "" +"Select words from a list and execute commands.\n" +" \n" +" The WORDS are expanded, generating a list of words. The\n" +" set of expanded words is printed on the standard error, each\n" +" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n" +" is assumed. The PS3 prompt is then displayed and a line read\n" +" from the standard input. If the line consists of the number\n" +" corresponding to one of the displayed words, then NAME is set\n" +" to that word. If the line is empty, WORDS and the prompt are\n" +" redisplayed. If EOF is read, the command completes. Any other\n" +" value read causes NAME to be set to null. The line read is saved\n" +" in the variable REPLY. COMMANDS are executed after each selection\n" +" until a break command is executed.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Velg ord fra en liste og kjør kommandoer.\n" +" \n" +" Utvid og lag en liste av valgt(e) ORD.\n" +" Utvidede ord skrive ut pÃ¥ standard feilkanal, anledet av et tall.\n" +" Hvis «in ORD» ikke er valgt, brukes «in \"$@\"». Deretter vises\n" +" PS3-ledetekst, og en linje leses fra standard inndata. Hvis linja\n" +" bestÃ¥r av et tall som tilsvarer antall ord, endres NAVN slik at det\n" +" tilsvarer dette tallet. Hvis linja er tom, vises ORD og ledetekst pÃ¥\n" +" nytt. Hvis programmet møter EOF, avslutter kommandoen. Andre\n" +" verdier fører til at NAVN endres til null. Lest linje lagres i " +"variabelen\n" +" REPLY. KOMMANDOER kjøres etter hvert utvalg frem til programmet\n" +" støter pÃ¥ en bruddkommando.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørt kommando." + +#: builtins.c:1583 +msgid "" +"Report time consumed by pipeline's execution.\n" +" \n" +" Execute PIPELINE and print a summary of the real time, user CPU time,\n" +" and system CPU time spent executing PIPELINE when it terminates.\n" +" \n" +" Options:\n" +" -p\tprint the timing summary in the portable Posix format\n" +" \n" +" The value of the TIMEFORMAT variable is used as the output format.\n" +" \n" +" Exit Status:\n" +" The return status is the return status of PIPELINE." +msgstr "" +"Rapporter medgÃ¥tt tid i kommandokø-kjøring.\n" +" \n" +" Kjør valgt DATARØR og skriv ut en oppsummering av reell tid, bruker-CPU-" +"tid\n" +" og system-CPU-tid som er medgÃ¥tt ved kjøring av DATARØR idet det " +"avsluttes.\n" +" \n" +" Valg:\n" +" -p\tkjør tidsoppsummering i gjenbrukbart Posix-format.\n" +" \n" +" Verdien av variabelen «TIMEFORMAT» brukes som utdata-format.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som statuskoden fra valgt DATARØR." + +#: builtins.c:1600 +msgid "" +"Execute commands based on pattern matching.\n" +" \n" +" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" +" `|' is used to separate multiple patterns.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kjør kommandoer basert pÃ¥ mønster-søk.\n" +" \n" +" Kjør KOMMANDOER som samsvarer med ORD og MØNSTER.\n" +" Tegnet «|» brukes til Ã¥ holde mønstre adskilt.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørte kommando." + +#: builtins.c:1612 +msgid "" +"Execute commands based on conditional.\n" +" \n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" +" executed in turn, and if its exit status is zero, the corresponding\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" +" if no condition tested true.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kjør kommandoer pÃ¥ gitte betingelser.\n" +" \n" +" Kjør lista «if KOMMANDOER». Hvis avslutningsstatus er null, kjøres\n" +" «then KOMMANDOER». Ellers kjøres hver «elif KOMMANDOER»-liste\n" +" etter tur. Hvis status er null ved sistnevnte, kjøres tilhørende «then " +"KOMMANDOER»\n" +" og if-kommandoen avslutter. Ellers kjøres evt. lista «else KOMMANDOER».\n" +" Avslutningsstatus for hele betingelsesuttrykket er statuskoden fra sist " +"kjørt kommando,\n" +" eller null hvis ingen tilstand er sann.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørt kommando." + +#: builtins.c:1629 +msgid "" +"Execute commands as long as a test succeeds.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `while' COMMANDS has an exit status of zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kjør kommandoer sÃ¥ lenge en test lykkes.\n" +" \n" +" Utvid og kjør KOMMANDOER sÃ¥ lenge siste kommando i\n" +" «while» avslutter med null-status.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørte kommando." + +#: builtins.c:1641 +msgid "" +"Execute commands as long as a test does not succeed.\n" +" \n" +" Expand and execute COMMANDS as long as the final command in the\n" +" `until' COMMANDS has an exit status which is not zero.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Kjør kommandoer sÃ¥ lenge en test mislykkes.\n" +" \n" +" Utvid og kjør KOMMANDOER sÃ¥ lenge siste kommando i\n" +" «until» avslutter med en annen statuskode enn null.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørte kommando." + +#: builtins.c:1653 +#, fuzzy +msgid "" +"Create a coprocess named NAME.\n" +" \n" +" Execute COMMAND asynchronously, with the standard output and standard\n" +" input of the command connected via a pipe to file descriptors assigned\n" +" to indices 0 and 1 of an array variable NAME in the executing shell.\n" +" The default NAME is \"COPROC\".\n" +" \n" +" Exit Status:\n" +" The coproc command returns an exit status of 0." +msgstr "" +"Lag en medprosess med valgt NAVN.\n" +" \n" +" Kjør valgt KOMMANDO synkront, med standard inn- og utdata for " +"kommandoen\n" +" som er tilkoblet via et datarør til fildeskriptorer med indeks 0 og 1 i " +"en tabellvariabel \n" +" med oppgitt NAVN i kjørende skall.\n" +"\v StandardNAVN er «COPROC».\n" +" \n" +" Avslutningsstatus:\n" +" Samme som valgt KOMMANDO." + +#: builtins.c:1667 +msgid "" +"Define shell function.\n" +" \n" +" Create a shell function named NAME. When invoked as a simple command,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" +" the arguments are passed to the function as $1...$n, and the function's\n" +" name is in $FUNCNAME.\n" +" \n" +" Exit Status:\n" +" Returns success unless NAME is readonly." +msgstr "" +"Definer en skallfunksjon.\n" +" \n" +" Lag en skallfunksjon med valgt NAVN. NAVN kjører KOMMANDOer i gjeldende " +"skallkontekst\n" +" nÃ¥r det kjøres som en enkel kommando, og argumenter videresendes til " +"funksjonen som\n" +" $1…$n. Funksjonens navn ligger i $FUNCNAME.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre valgt NAVN er skrivebeskyttet." + +#: builtins.c:1681 +msgid "" +"Group commands as a unit.\n" +" \n" +" Run a set of commands in a group. This is one way to redirect an\n" +" entire set of commands.\n" +" \n" +" Exit Status:\n" +" Returns the status of the last command executed." +msgstr "" +"Organiser kommandoer i grupper.\n" +" \n" +" Kjør en rekke kommandoer som en gruppe. Slik kan du videresende\n" +" et helt kommandosett.\n" +" \n" +" Avslutningsstatus:\n" +" Samme som sist kjørt kommando." + +#: builtins.c:1693 +msgid "" +"Resume job in foreground.\n" +" \n" +" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n" +" stopped or background job. JOB_SPEC can specify either a job name\n" +" or a job number. Following JOB_SPEC with a `&' places the job in\n" +" the background, as if the job specification had been supplied as an\n" +" argument to `bg'.\n" +" \n" +" Exit Status:\n" +" Returns the status of the resumed job." +msgstr "" +"Gjenoppta jobb i forgrunnen.\n" +" \n" +" Tilsvarer argumentet «JOBBSPES» for kommandoen «fg». Gjenoppta\n" +" en jobb som venter eller kjører i bakgrunnen. «JOBBSPES» kan\n" +" enten være et jobbnavn eller -nummer. Bruk «&» etter JOBBSPES for Ã¥\n" +" legge jobben i bakgrunnen, som om jobbspesifikasjonen var et argument " +"for «bg».\n" +" \n" +" Avslutningsstatus:\n" +" Samme som statuskoden for gjenopptatt jobb." + +#: builtins.c:1708 +msgid "" +"Evaluate arithmetic expression.\n" +" \n" +" The EXPRESSION is evaluated according to the rules for arithmetic\n" +" evaluation. Equivalent to \"let EXPRESSION\".\n" +" \n" +" Exit Status:\n" +" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." +msgstr "" +"GÃ¥ gjennom aritmetisk uttrykk.\n" +" \n" +" Valgt UTTRYKK prøves i henhold til regler for aritmetisk utregning.\n" +" Tilsvarer «let UTTRYKK».\n" +" \n" +" Avslutningsstatus:\n" +" 1 hvis UTTRYKK blir 0, og ellers 0." + +#: builtins.c:1720 +msgid "" +"Execute conditional command.\n" +" \n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" +" \n" +" ( EXPRESSION )\tReturns the value of EXPRESSION\n" +" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" +" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n" +" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n" +" \n" +" When the `==' and `!=' operators are used, the string to the right of\n" +" the operator is used as a pattern and pattern matching is performed.\n" +" When the `=~' operator is used, the string to the right of the operator\n" +" is matched as a regular expression.\n" +" \n" +" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n" +" determine the expression's value.\n" +" \n" +" Exit Status:\n" +" 0 or 1 depending on value of EXPRESSION." +msgstr "" +"Kjør betinget kommando.\n" +" \n" +" Gir statuskode 0 eller 1, avhengig av utfallet av betinget UTTRYKK.\n" +" Uttrykk bygges opp pÃ¥ samme mÃ¥te som i den innebygde kommandoen «test»,\n" +" og kan kombineres som følger:\n" +" \n" +" ( UTTRYKK )\tViser verdien av UTTRYKK\n" +" ! UTTRYKK\t\tPositiv hvis UTTRYKK er usant, ellers negativ\n" +" UTTR1 && UTTR2\tPositiv hvis bÃ¥de UTTR1 og UTTR2 er sant, ellers " +"negativ\n" +" UTTR1 || UTTR2\tPositiv hvis enten UTTR1 eller UTTR2 er sant, ellers " +"negativ\n" +" \n" +" Ved bruk av «==» og «!=» brukes etterfølgende streng som\n" +" et mønster, og programmet utfører mønsterutlikning.\n" +" Ved bruk av «=~» utliknes etterfølgende streng som\n" +" et regulært uttrykk.\n" +" \n" +" Valgene «&&» og «||» kontrollerer ikke UTTR2 hvis UTTR1 allerede\n" +" har gitt svar pÃ¥ uttrykkets verdi.\n" +" \n" +" Avslutningsstatus:\n" +" 0 eller 1, avhengig av UTTRYKKets verdi." + +#: builtins.c:1746 +msgid "" +"Common shell variable names and usage.\n" +" \n" +" BASH_VERSION\tVersion information for this Bash.\n" +" CDPATH\tA colon-separated list of directories to search\n" +" \t\tfor directories given as arguments to `cd'.\n" +" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n" +" \t\tbe ignored by pathname expansion.\n" +" HISTFILE\tThe name of the file where your command history is stored.\n" +" HISTFILESIZE\tThe maximum number of lines this file can contain.\n" +" HISTSIZE\tThe maximum number of history lines that a running\n" +" \t\tshell can access.\n" +" HOME\tThe complete pathname to your login directory.\n" +" HOSTNAME\tThe name of the current host.\n" +" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n" +" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n" +" \t\tcharacter as the sole input. If set, then the value\n" +" \t\tof it is the number of EOF characters that can be seen\n" +" \t\tin a row on an empty line before the shell will exit\n" +" \t\t(default 10). When unset, EOF signifies the end of input.\n" +" MACHTYPE\tA string describing the current system Bash is running on.\n" +" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n" +" MAILPATH\tA colon-separated list of filenames which Bash checks\n" +" \t\tfor new mail.\n" +" OSTYPE\tThe version of Unix this version of Bash is running on.\n" +" PATH\tA colon-separated list of directories to search when\n" +" \t\tlooking for commands.\n" +" PROMPT_COMMAND\tA command to be executed before the printing of each\n" +" \t\tprimary prompt.\n" +" PS1\t\tThe primary prompt string.\n" +" PS2\t\tThe secondary prompt string.\n" +" PWD\t\tThe full pathname of the current directory.\n" +" SHELLOPTS\tA colon-separated list of enabled shell options.\n" +" TERM\tThe name of the current terminal type.\n" +" TIMEFORMAT\tThe output format for timing statistics displayed by the\n" +" \t\t`time' reserved word.\n" +" auto_resume\tNon-null means a command word appearing on a line by\n" +" \t\titself is first looked for in the list of currently\n" +" \t\tstopped jobs. If found there, that job is foregrounded.\n" +" \t\tA value of `exact' means that the command word must\n" +" \t\texactly match a command in the list of stopped jobs. A\n" +" \t\tvalue of `substring' means that the command word must\n" +" \t\tmatch a substring of the job. Any other value means that\n" +" \t\tthe command must be a prefix of a stopped job.\n" +" histchars\tCharacters controlling history expansion and quick\n" +" \t\tsubstitution. The first character is the history\n" +" \t\tsubstitution character, usually `!'. The second is\n" +" \t\tthe `quick substitution' character, usually `^'. The\n" +" \t\tthird is the `history comment' character, usually `#'.\n" +" HISTIGNORE\tA colon-separated list of patterns used to decide which\n" +" \t\tcommands should be saved on the history list.\n" +msgstr "" +"Vanlige skallvariabel-navn og bruk.\n" +" \n" +" BASH_VERSION\tInformasjon om Bash-versjon.\n" +" CDPATH\tEn kolondelt liste over mapper som skal gjennomsøkes\n" +" \t\tfor mapper som er brukt som argumenter for «cd».\n" +" GLOBIGNORE\tEn kolondelt liste over mønstre som beskriver filnavn\n" +" \t\tsom skal ignoreres av stinavn-utvidelse.\n" +" HISTFILE\tNavn pÃ¥ fil hvor kommandohistorikk for gjeldende bruker er " +"lagret.\n" +" HISTFILESIZE\tMaksimalt antall linjer denne fila kan inneholde.\n" +" HISTSIZE\tMaksimalt antall historikklinjer et kjørende skall har tilgang " +"til.\n" +" HOME\tFullstendig sti til gjeldende brukers hjemmemappe.\n" +" HOSTNAME\tNavn pÃ¥ gjeldende vert.\n" +" HOSTTYPE\tType prosessor denne versjonen av Bash kjører pÃ¥.\n" +" IGNOREEOF\tKontrollerer skallets handling ved mottak av\n" +" \t\tEOF-tegn som eneste inndata. Hvis denne har en verdi, er verdien\n" +" \t\tgjeldende antall EOF-tegn som kan dukke opp pÃ¥ rad pÃ¥ en tom linje\n" +" \t\tfør skallet avslutter (standard: 10). Hvis denne ikke har en verdi,\n" +" \t\ttolkes EOF som slutt pÃ¥ inndata.\n" +" MACHTYPE\tEn streng som beskriver systemet Bash kjører pÃ¥ nÃ¥.\n" +" MAILCHECK\tHvor ofte (i sekunder) Bash skal se etter ny e-post.\n" +" MAILPATH\tEn kolondelt liste over filnavn som Bash skal gjennomsøke\n" +" \t\tfor ny e-post.\n" +" OSTYPE\tVersjonen av Unix som denne versjonen av Bash kjører pÃ¥.\n" +" PATH\tEn kolondelt liste over mapper som skal gjennomsøkes\n" +" \t\tved søk etter kommandoer.\n" +" PROMPT_COMMAND\tEn kommando som skal kjøres før utskrift av\n" +" \t\tprimær ledetekst.\n" +" PS1\t\tPrimær ledetekst-streng.\n" +" PS2\t\tSekundær ledetekst-streng.\n" +" PWD\t\tFullstendig sti til gjeldende mappe.\n" +" SHELLOPTS\tEn kolondelt liste over skallvalg som er i bruk.\n" +" TERM\tNavn pÃ¥ gjeldende terminaltype.\n" +" TIMEFORMAT\tUtdata-format for tidsstatistikk som vises av\n" +" \t\tdet reserverte ordet «time».\n" +" auto_resume\tEt kommandoord som dukker opp alene pÃ¥ en linje\n" +" \t\tblir kontrollert mot lista over ventende jobber. Hvis kommandoen " +"finnes\n" +" \t\ti lista, flyttes den til forgrunnen.\n" +" \t\tVerdien «exact» betyr at kommandoen mÃ¥ være helt lik\n" +" \t\tet kommandonavn i lista over ventende jobber.\n" +" \t\t«substring» betyr at kommandoen mÃ¥ samsvare med en del\n" +" \t\tav navnet. Andre verdier betyr at kommandoen mÃ¥\n" +" \t\tvære et prefiks av en ventende jobb.\n" +" histchars\tTegn som styrer historikkutvidelse og hurtig-subsidiering.\n" +" \t\tFørste tegn er historikk-subsidieringstegnet (vanligvis «!»),\n" +" \t\tdet andre er hurtig-subsidieringstegnet (vanligvis «^»), og\n" +" \t\tdet tredje er historikk-kommentar-tegnet (vanligvis «#»).\n" +" HISTIGNORE\tEn kolondelt liste over mønstre som bestemmer\n" +" \t\thvilke kommandoer som skal lagres i historikklista.\n" + +#: builtins.c:1803 +msgid "" +"Add directories to stack.\n" +" \n" +" Adds a directory to the top of the directory stack, or rotates\n" +" the stack, making the new top of the stack the current working\n" +" directory. With no arguments, exchanges the top two directories.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when adding\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" -N\tRotates the stack so that the Nth directory (counting\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" +" \n" +" dir\tAdds DIR to the directory stack at the top, making it the\n" +" \t\tnew current working directory.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Legg til mapper i stabel.\n" +" \n" +" Legg til en mappe i toppen av mappestabelen, eller roter\n" +" stabelen og gjør toppen av stabelen til gjeldende arbeidsmappe.\n" +" Hvis ingen argumenter er gitt, bytter de to øverste mappene plass..\n" +" \n" +" Valg:\n" +" -n\tIkke bytt mappe nÃ¥r mapper legges til i stabelen\n" +" \t(bare endre stabelen).\n" +" \n" +" Argumenter:\n" +" +N\tRoter stabelen og legg N-te mappe (talt fra\n" +" \tnull til venstre, etter «dirs») i toppen.\n" +" \n" +" -N\tRoter stabelen og legg N-te mappe (talt fra\n" +" \tnull til høyre, etter «dirs») i toppen.\n" +" \n" +" dir\tLegg til MAP i toppen av mappestabelen, og ta den i bruk\n" +" \tsom arbeidsmappe.\n" +" \n" +" Bruk kommandoen «dirs» for Ã¥ vise mappestabelen.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre et ugyldig argument er brukt eller\n" +" mappebytte mislykkes." + +#: builtins.c:1837 +msgid "" +"Remove directories from stack.\n" +" \n" +" Removes entries from the directory stack. With no arguments, removes\n" +" the top directory from the stack, and changes to the new top directory.\n" +" \n" +" Options:\n" +" -n\tSuppresses the normal change of directory when removing\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" +" \n" +" Arguments:\n" +" +N\tRemoves the Nth entry counting from the left of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" +" \n" +" -N\tRemoves the Nth entry counting from the right of the list\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" +" \n" +" The `dirs' builtin displays the directory stack.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid argument is supplied or the directory\n" +" change fails." +msgstr "" +"Fjern mapper fra stabelen.\n" +" \n" +" Fjern oppføringer fra mappestabelen. Hvis ingen argumenter er gitt,\n" +" fjernes øverste mappe fra stabelen, og tar i bruk ny toppmappe som " +"arbeidsmappe.\n" +" \n" +" Valg:\n" +" -n\tIkke bytt mappe nÃ¥r mapper fjernes fra stabelen\n" +" \t(bare endre stabelen).\n" +" \n" +" Argumenter:\n" +" +N\tFjern N-te mappe (talt fra null til venstre, etter «dirs»).\n" +" F.eks.: «popd +0» fjerner første mappe, og «popd +1» mappe nr. 2.\n" +" \n" +" -N\tFjern N-te mappe (talt fra null til høyre, etter «dirs»).\n" +" F.eks.: «popd -0» fjerner siste mappe, og «popd -1» nest siste mappe.\n" +" \n" +" Bruk kommandoen «dirs» for Ã¥ vise mappestabelen.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre et ugyldig argument er brukt eller\n" +" mappebytte mislykkes." + +#: builtins.c:1867 +msgid "" +"Display directory stack.\n" +" \n" +" Display the list of currently remembered directories. Directories\n" +" find their way onto the list with the `pushd' command; you can get\n" +" back up through the list with the `popd' command.\n" +" \n" +" Options:\n" +" -c\tclear the directory stack by deleting all of the elements\n" +" -l\tdo not print tilde-prefixed versions of directories relative\n" +" \t\tto your home directory\n" +" -p\tprint the directory stack with one entry per line\n" +" -v\tprint the directory stack with one entry per line prefixed\n" +" \t\twith its position in the stack\n" +" \n" +" Arguments:\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Vis mappestabel.\n" +" \n" +" Vis lista over hurtiglagrede mapper som er hurtiglagret med\n" +" kommandoen «pushd». Du kan gÃ¥ opp igjen med kommandoen «popd». \n" +" Valg:\n" +" -c\ttøm mappestabel ved Ã¥ slette alle elementer\n" +" -l\tikke skriv ut undermapper av brukerens hjemmemappe som\n" +" \trelative stier med tilde-prefiks\n" +" -p\tskriv ut mappestabel med én oppføring per linje\n" +" -v\ttilsvarer «-p», men med stabelposisjon som prefiks\n" +" \n" +" Argumenter:\n" +" +N\tVis N-te oppføring (talt fra null til venstre, etter «dirs»).\n" +" -N\tVis N-te oppføring (talt fra null til høyre, etter «dirs»).\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " +"feil." + +#: builtins.c:1898 +msgid "" +"Set and unset shell options.\n" +" \n" +" Change the setting of each shell option OPTNAME. Without any option\n" +" arguments, list all shell options with an indication of whether or not " +"each\n" +" is set.\n" +" \n" +" Options:\n" +" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" +" -p\tprint each shell option with an indication of its status\n" +" -q\tsuppress output\n" +" -s\tenable (set) each OPTNAME\n" +" -u\tdisable (unset) each OPTNAME\n" +" \n" +" Exit Status:\n" +" Returns success if OPTNAME is enabled; fails if an invalid option is\n" +" given or OPTNAME is disabled." +msgstr "" +"Juster og tilbakestill skallvalg.\n" +" \n" +" Endre innstilling for hvert VALGNAVN. Hvis ingen valg/argumenter er " +"brukt,\n" +" skriv ut alle skallvalg og vis hvorvidt hvert av dem har en verdi.\n" +" \n" +" Valg:\n" +" -o\tbegrense VALGNAVN til det som er definert med «set -o»\n" +" -p\tskriv ut hvert skallvalg og vis status\n" +" -q\tikke skriv ut noe\n" +" -s\tslÃ¥ pÃ¥ (gi verdi til) hvert VALGNAVN\n" +" -u\tslÃ¥ av (tilbakestill) hvert VALGNAVN\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket hvis VALGNAVN er slÃ¥tt pÃ¥, og mislykket hvis enten brukeren \n" +" tar et ugyldig valg eller VALGNAVN er slÃ¥tt av." + +#: builtins.c:1919 +msgid "" +"Formats and prints ARGUMENTS under control of the FORMAT.\n" +" \n" +" Options:\n" +" -v var\tassign the output to shell variable VAR rather than\n" +" \t\tdisplay it on the standard output\n" +" \n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" +" sequences, which are converted and copied to the standard output; and\n" +" format specifications, each of which causes printing of the next " +"successive\n" +" argument.\n" +" \n" +" In addition to the standard format specifications described in printf" +"(1),\n" +" printf interprets:\n" +" \n" +" %b\texpand backslash escape sequences in the corresponding argument\n" +" %q\tquote the argument in a way that can be reused as shell input\n" +" %(fmt)T\toutput the date-time string resulting from using FMT as a " +"format\n" +" \t string for strftime(3)\n" +" \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" +" error occurs." +msgstr "" +"Formaterer og skriver ut ARGUMENTER pÃ¥ FORMATets premisser.\n" +" \n" +" Valg:\n" +" -v var\tlegg utdata i valgt VARiabel i stedet for Ã¥\n" +" \t\tvise den pÃ¥ standardutdata\n" +" \n" +" FORMAT er en tegnstreng som inneholder tre typer objekter:\n" +" - rene tegn (som kopieres til standardutdata),\n" +" - skiftetegn (som konverteres og kopieres til standardutdata), og\n" +" - formatspesifikasjoner (som skriver ut pÃ¥følgende argument).\n" +" \n" +" Printf tolker følgende standard-formatspes. i tillegg til de som " +"stÃ¥r beskrevet i printf(1):\n" +" \n" +" %b\tutvid omvendt skrÃ¥strek-skiftesekvenser i gjeldende argument\n" +" %q\tgi argumentet anførselstegn slik at det kan brukes som skall-" +"inndata\n" +" %(fmt)T skriv ut «date-time»-streng etter bruk av FMT som formatstreng\n" +" med strftime(3)\n" +" \n" +" Formatet gjenbrukes etter nødvendighet for Ã¥ bruke opp alle " +"argumentene.\n" +" Hvis det finnes færre argumenter enn formatet krever, oppfører " +"overflødige\n" +" formatstrenger seg som om de var 0-verdier eller null-strenger.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en\n" +" skrive- eller tidelingsfeil." + +#: builtins.c:1953 +msgid "" +"Specify how arguments are to be completed by Readline.\n" +" \n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" +" allows them to be reused as input.\n" +" \n" +" Options:\n" +" -p\tprint existing completion specifications in a reusable format\n" +" -r\tremove a completion specification for each NAME, or, if no\n" +" \t\tNAMEs are supplied, all completion specifications\n" +" -D\tapply the completions and actions as the default for commands\n" +" \t\twithout any specific completion defined\n" +" -E\tapply the completions and actions to \"empty\" commands --\n" +" \t\tcompletion attempted on a blank line\n" +" \n" +" When completion is attempted, the actions are applied in the order the\n" +" uppercase-letter options are listed above. The -D option takes\n" +" precedence over -E.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Velg hvordan argumenter skal fullføres av Readline.\n" +" \n" +" Velg hvordan argumenter skal fullføres per NAVN.\n" +" \n" +" Valg:\n" +" -p\tskriv ut gjeldende fullføringsoppsett i et gjenbrukbart format " +"(standard)\n" +" -r\tfjern en fullføringsspesifikasjon per NAVN\n" +" \t(eller fra alle spesifikasjoner hvis ingen NAVN er valgt)\n" +" -D\tbruk fullføringer og handlinger som standard for kommandoer uten\n" +" \tspesifikke definisjoner av fullføring\n" +" -E\tbruk fullføringer og handlinger med «tomme» kommandoer\n" +" \n" +" Handlinger tas i bruk i samme rekkefølge som valgene med\n" +" store bokstaver ovenfor. Valget «-D» brukes fortrinnsvis\n" +" fremfor «-E».\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " +"feil." + +#: builtins.c:1981 +msgid "" +"Display possible completions depending on the options.\n" +" \n" +" Intended to be used from within a shell function generating possible\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" +" WORD are generated.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or an error occurs." +msgstr "" +"Vis mulige fullføringer basert pÃ¥ valgene.\n" +" \n" +" Dette er ment for Ã¥ brukes i en skallfunksjon som genererer mulige\n" +" fullføringer. Hvis argumentet ORD brukes, genererer programmet\n" +" søketreff pÃ¥ ORD.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller det oppstÃ¥r en " +"feil." + +#: builtins.c:1996 +msgid "" +"Modify or display completion options.\n" +" \n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" +" \n" +" Options:\n" +" \t-o option\tSet completion option OPTION for each NAME\n" +" \t-D\t\tChange options for the \"default\" command completion\n" +" \t-E\t\tChange options for the \"empty\" command completion\n" +" \n" +" Using `+o' instead of `-o' turns off the specified option.\n" +" \n" +" Arguments:\n" +" \n" +" Each NAME refers to a command for which a completion specification must\n" +" have previously been defined using the `complete' builtin. If no NAMEs\n" +" are supplied, compopt must be called by a function currently generating\n" +" completions, and the options for that currently-executing completion\n" +" generator are modified.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is supplied or NAME does not\n" +" have a completion specification defined." +msgstr "" +"Endre eller vis fullføringsvalg.\n" +" \n" +" Endre fullføringsvalg per NAVN, eller kjørende fullføringsprosess hvis " +"ingen\n" +" NAVN er valgt. Hvis ingen VALG er brukt, skriv enten ut fullføringsvalg " +"per NAVN,\n" +" eller gjeldende fullføringsoppsett.\n" +" \n" +" Valg:\n" +" \t-o option\tEndre fullføringsVALG per NAVN\n" +" \t-D\t\tEndre valg for kommandofullføringa «default»\n" +" \t-E\t\tEndre valg for kommandofullføringa «empty»\n" +" \n" +" Bruk «+o» i stedet for «-o» for Ã¥ slÃ¥ av valg.\n" +" \n" +" Argumenter:\n" +" \n" +" Hvert NAVN henviser til en kommando som mÃ¥ ha en " +"fullføringsspesifikasjon\n" +" definert med den innebyde kommandoen «complete». Hvis ingen NAVN\n" +" er valgt, mÃ¥ compopt brukes av en funksjon som genererer fullføringer.\n" +" Valgene for den aktuelle fullføringsgeneratoren blir i sÃ¥ fall endret.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller NAVN\n" +" mangler fullføringsoppsett." + +#: builtins.c:2026 +msgid "" +"Read lines from the standard input into an indexed array variable.\n" +" \n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" +" is the default ARRAY.\n" +" \n" +" Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" +" \n" +" Arguments:\n" +" ARRAY\tArray variable name to use for file data\n" +" \n" +" If -C is supplied without -c, the default quantum is 5000. When\n" +" CALLBACK is evaluated, it is supplied the index of the next array\n" +" element to be assigned and the line to be assigned to that element\n" +" as additional arguments.\n" +" \n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" +" assigning to it.\n" +" \n" +" Exit Status:\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" +" not an indexed array." +msgstr "" +"Legg linjer fra standard inndata i en indeksert tabellvariabel.\n" +" \n" +" Legg linjer fra standard inndata i indeksert tabellvariabel TABELL, " +"eller\n" +" fra fildeskriptor FD ved bruk av «-u». Variabelen MAPFILE er\n" +" standard TABELL.\n" +" \n" +" Valg:\n" +" -d skill\tBruk SKILLetegn til Ã¥ avslutte linjer (i stedet for " +"linjeskift)\n" +" -n antall\tIkke kopier flere enn valgt ANTALL linjer. Hvis ANTALL er " +"0, kopieres alle linjer.\n" +" -O oppr\tTildel til TABELL ved indeks-OPPRinnelse. Standard indeks er " +"0.\n" +" -s antall \tForkast valgt ANTALL linjer i starten.\n" +" -t\t\tFjern etterfølgende linjeskift fra hver lest linje.\n" +" -u fd\t\tLes linjer fra fildeskriptor FD i stedet for standard " +"inndata.\n" +" -C tilbakekall\tVurder TILBAKEKALL hver gang valgt ANTALL linjer er " +"lest.\n" +" -c antall\tVelg antall linjer som skal leses mellom hvert " +"TILBAKEKALL.\n" +" \n" +" Argumenter:\n" +" ARRAY\t\tTabellvariabel-navn som skal brukes i fildata.\n" +" \n" +" Hvis «-C» er valgt men ikke «-c», brukes standardantallet 5000. NÃ¥r\n" +" TILBAKEKALL vurderes, argumenteres det i tillegg med indeks av neste " +"tabellelement\n" +" samt linjenummeret som skal tildeles aktuelt element.\n" +" \n" +" Hvis ingen eksplisitt opprinnelse er gitt, tømmes TABELL før den fÃ¥r " +"tildelt noe.\n" +" \n" +" Avslutningsstatus:\n" +" Vellykket, med mindre brukeren tar et ugyldig valg eller TABELL enten " +"er\n" +" skrivebeskyttet eller en ikke-indeksert tabell." + +#: builtins.c:2062 +msgid "" +"Read lines from a file into an array variable.\n" +" \n" +" A synonym for `mapfile'." +msgstr "" +"Legg linjer fra en fil inn i en tabellvariabel.\n" +" \n" +" Dette er synonymt med «mapfile»." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Opphavsrett (C) 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Opphavsrett (C) 2012 Free Software Foundation, Inc." diff --git a/po/nl.gmo b/po/nl.gmo index 93aa543f44ee20af45104901c297ef96f73dc8c8..34efe81bfaba603a10ed5ea20a6a1543187b9524 100644 GIT binary patch delta 16439 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≥K$Q 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 delta 26690 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 diff --git a/po/nl.po b/po/nl.po index 86a2026..f1c2b47 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,8 +1,8 @@ # Dutch translations for GNU bash. -# Copyright (C) 2014 Free Software Foundation, Inc. +# Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # -# "Sokol gore na nebu." +# “Änderung des Speises tut essen.†# # De vertaling van de ruim 70 laatste hulpteksten (65%) in dit bestand # volgt niet helemaal het normale stramien van "onbepaalde wijs voor @@ -17,90 +17,96 @@ # om stilstaan en niet om finale opgave. Een alternatieve vertaling # zou dus "Stilstand" kunnen zijn. # -# Benno Schulenberg , 2006, 2008, 2010, 2011, 2013, 2014. +# Benno Schulenberg , 2006, 2008, 2010, 2011, 2013, 2014, 2015. # Erwin Poeze , 2009. # Julie Vermeersch , 2004. # Erick Branderhorst , 1996. msgid "" msgstr "" -"Project-Id-Version: bash-4.3-rc2\n" +"Project-Id-Version: bash-4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2014-01-30 21:31+0100\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-18 21:37+0200\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" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "ongeldige array-index" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: kan geïndexeerd array niet omzetten naar associatief array" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ongeldige sleutel voor associatief array" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: niet-numerieke index is niet mogelijk" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: een index is nodig bij toekenning aan associatief array" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "Kan %s niet aanmaken: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command(): kan voor opdracht geen toetsenkaart vinden" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: eerste teken dat geen witruimte is is niet '\"'" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "geen sluit-'%c' in %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: ontbrekend scheidingsteken (dubbele punt)" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %d elementen" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor '%s'" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "'%s': ongeldige naam voor alias" @@ -109,45 +115,45 @@ msgstr "'%s': ongeldige naam voor alias" msgid "line editing not enabled" msgstr "regelbewerking is niet ingeschakeld" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "'%s': ongeldige naam voor toetsenkaart" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "Kan %s niet lezen: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "Kan %s niet losmaken" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "'%s': onbekende functienaam" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s is aan geen enkele toets gebonden\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s kan worden aangeroepen via " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "herhalingsaantal" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "heeft alleen betekenis in een 'for'-, 'while'- of 'until'-lus" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -157,300 +163,329 @@ msgstr "" "\n" " Zonder EXPR, resulteert " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME is niet gedefinieerd" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "te veel argumenten" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "geen andere map" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD is niet gedefinieerd" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "regel %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "waarschuwing: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: Gebruik: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: optie vereist een argument" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: vereist een numeriek argument" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: niet gevonden" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: ongeldige optie" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: ongeldige optienaam" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "'%s': is geen geldige naam" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "ongeldig octaal getal" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "ongeldig hexadecimaal getal" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "ongeldig getal" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ongeldige signaalaanduiding" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "'%s': is geen PID en geen geldige taakaanduiding" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: is een alleen-lezen variabele" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s valt buiten bereik" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s valt buiten bereik" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: taak bestaat niet" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: geen taakbesturing" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "geen taakbesturing" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: beperkte modus" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "beperkte modus" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: is geen ingebouwde opdracht van de shell" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "schrijffout: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "fout tijdens instellen van terminaleigenschappen: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "fout tijdens verkrijgen van terminaleigenschappen: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fout tijdens bepalen van huidige map: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: taakaanduiding is niet eenduidig" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "hulp is niet beschikbaar in deze versie" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: ongeldige actienaam" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: is geen completerings-aanduiding" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "waarschuwing: optie -F functioneert mogelijk niet zoals verwacht" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "waarschuwing: optie -C functioneert mogelijk niet zoals verwacht" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "er wordt momenteel geen completeringsfunctie uitgevoerd" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "kan alleen worden gebruikt binnen een functie" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: verwijzingsvariabele mag geen array zijn" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: zelfverwijzing door naamsverwijzingsvariabele is niet toegestaan" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: circulaire naamsverwijzing" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "'-f' kan niet gebruikt worden om een functie te definiëren" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: is een alleen-lezen functie" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: aangehaalde samengesteld-array-toekenning is verouderd" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: kan array-variabelen niet op deze manier verwijderen" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: kan associatief array niet omzetten naar geïndexeerd array" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dynamisch-laden is niet beschikbaar" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "kan gedeeld object %s niet openen: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "kan %s niet vinden in gedeeld object %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "laadfunctie voor %s geeft foutcode (%d): is niet geladen" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: is niet dynamisch geladen" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "Kan %s niet verwijderen: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: is een map" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: is geen normaal bestand" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: bestand is te groot" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan binair bestand niet uitvoeren" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "Kan %s niet uitvoeren: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "uitgelogd\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "geen login-shell; gebruik 'exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Er zijn nog gepauzeerde taken.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Er zijn nog draaiende taken.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "geen opdracht gevonden" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "geschiedenisaanduiding" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "Kan tijdelijk bestand '%s' niet openen: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "huidige" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "taak %d is gestart zonder taakbesturing" @@ -469,24 +504,24 @@ msgstr "%s: optie vereist een argument -- %c\n" msgid "hashing disabled" msgstr "hashen is uitgeschakeld" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: de hash-tabel is leeg\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "treffers commando\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell-opdrachten die overeenkomen met '" msgstr[1] "Shell-opdrachten die overeenkomen met '" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -494,12 +529,12 @@ msgstr "" "Er is geen hulptekst voor '%s'.\n" "Probeer 'help help' of 'man -k %s' of 'info %s'." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "Kan %s niet openen: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -521,15 +556,20 @@ msgstr "" "is.)\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "slechts één van '-a', '-n', '-r' of '-w' is mogelijk" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "geschiedenispositie" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: ongeldig argument" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: geschiedenisexpansie is mislukt" @@ -543,115 +583,115 @@ msgstr "%s: 'inlib' is mislukt" msgid "no other options allowed with `-x'" msgstr "bij '-x' zijn geen andere opties toegestaan" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenten moeten proces-IDs of taak-IDs zijn" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Onbekende fout" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "uitdrukking werd verwacht" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: is geen geïndexeerd array" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ongeldige aanduiding van bestandsdescriptor" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ongeldige bestandsdescriptor: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: ongeldig regelaantal" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, 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:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ongeldige hoeveelheid" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "lege naam van array-variabele" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "ondersteuning van arrayvariabelen is vereist" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "'%s': ontbrekend opmaakteken" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "'%c': ongeldige aanduiding van tijdsopmaak" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "'%c': ongeldig opmaakteken" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "waarschuwing: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "probleem bij ontleden van opmaak: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "ontbrekend hexadecimaal cijfer bij \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "ontbrekend Unicode-cijfer bij \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "geen andere map" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: ongeldig argument" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "mappenstapel is leeg" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "mappenstapelindex" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -691,7 +731,7 @@ msgstr "" " -N Toont het N-de item, tellend vanaf rechts, van de lijst getoond\n" " door 'dirs' wanneer opgeroepen zonder opties, beginnend bij nul." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -733,7 +773,7 @@ msgstr "" "\n" " De opdracht 'dirs' toont de huidige mappenstapel." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -771,145 +811,155 @@ msgstr "" "\n" " De opdracht 'dirs' toont de huidige mappenstapel." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ongeldige aanduiding van tijdslimiet" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "leesfout: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" "kan alleen een 'return' doen uit een functie of een uit script aangeroepen " "met 'source'" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "kan niet tegelijk een functie en een variabele verwijderen" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "Kan '%s' niet verwijderen" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: is geen array-variabele" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: is geen functie" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "Kan '%s' niet exporteren" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "shift-aantal" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "kan shell-opties niet tegelijk inschakelen en uitschakelen" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ongeldige shell-optienaam" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "vereist een bestandsnaam als argument" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: bestand niet gevonden" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "kan niet pauzeren" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "kan een inlog-shell niet pauzeren" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s is een alias voor '%s'\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s is een shell-sleutelwoord\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s is een functie\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s is een speciale ingebouwde shell-functie\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s is een ingebouwde shell-functie\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s is gehasht (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ongeldige limietwaarde" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "'%c': ongeldige opdracht" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan de limiet niet bepalen: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limiet" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan de limiet niet wijzigen: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "octaal getal" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "'%c': ongeldige operator in symbolische modus" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "'%c': ongeldig teken in symbolische modus" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " regel " @@ -923,82 +973,103 @@ msgstr "laatste opdracht: %s\n" msgid "Aborting..." msgstr "Afbreken..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "onbekende opdrachtfout" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "ongeldig opdrachttype" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "ongeldige verbinder" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "ongeldige sprong" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: ongebonden variabele" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\awachten op invoer duurde te lang -- automatisch afgemeld\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "kan standaardinvoer niet omleiden vanaf /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: '%c': ongeldig opmaakteken" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "pijpfout" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximum 'source'-nestingsniveau is overschreden (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum functie-nestingsniveau is overschreden (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: beperkte modus: '/' in opdrachtnamen is niet toegestaan" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: opdracht niet gevonden" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: ongeldige interpreter" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan binair bestand %s niet uitvoeren" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "'%s' is een speciale ingebouwde shell-functie" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan bestandsdescriptor %d niet dupliceren naar bestandsdescriptor %d" @@ -1043,37 +1114,37 @@ msgstr "naam verwacht na pre-increment of pre-decrement" msgid "missing `)'" msgstr "ontbrekend ')'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "syntaxfout: operator verwacht" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "syntaxfout: ongeldige rekenkundige operator" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (het onjuiste symbool is \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "ongeldige rekenkundige basis" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "waarde is te groot voor basis" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: expressiefout\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getwd(): kan geen geen toegang verkrijgen tot bovenliggende mappen" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan 'nodelay'-modus niet uitschakelen voor bestandsdescriptor %d" @@ -1091,150 +1162,150 @@ msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "check_bash_input(): buffer bestaat al voor nieuwe bestandsdescriptor %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline(): procesgroep van pijp" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "afgesplitst PID %d hoort bij draaiende taak %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "verwijderen van gepauzeerde taak %d met procesgroep %ld..." -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process(): proces %5ld (%s) in de pijplijn" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid(): PID %ld bestaat niet" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signaal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Klaar" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Gepauzeerd" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Gepauzeerd(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Wordt uitgevoerd" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Klaar(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Onbekende afsluitwaarde" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(geheugendump gemaakt) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (werkmap: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "instellen van procesgroep %2$ld van dochter %1$ld" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for(): proces %ld is nergens geregistreerd" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job(): taak %d is gepauzeerd" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: taak is afgesloten" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: taak %d draait al op de achtergrond" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "waitchld(): WNOHANG wordt ingeschakeld om een onbegrensde blokkering te " "vermijden" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: regel %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (geheugendump gemaakt)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(werkmap is nu: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp() is mislukt" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: lijnprotocol" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "kan procesgroep (%d) van terminal niet instellen" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "er is geen taakbesturing in deze shell" @@ -1288,17 +1359,17 @@ msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik" msgid "realloc: start and end chunk sizes differ" msgstr "realloc(): blokgroottes van begin en eind zijn verschillend" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc(): reserveringstabel is vol??\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free(): %p staat al als vrij in tabel??\n" @@ -1322,7 +1393,7 @@ msgstr "%s: ongeldige service" msgid "%s: bad network path specification" msgstr "%s: ongeldige aanduiding van netwerkpad" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "netwerkoperaties worden niet ondersteund" @@ -1359,229 +1430,264 @@ msgstr "U hebt nieuwe post in $_" msgid "The mail in %s has been read\n" msgstr "De post in %s is gelezen.\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "syntaxfout: een rekenkundige uitdrukking is vereist" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "syntaxfout: onverwachte ';'" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "syntaxfout: '((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document(): ongeldig instructietype %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, 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 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection(): omleidingsinstructie '%d' valt buiten bereik" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "maximum aantal \"hier\"-documenten is overschreden" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende '%c'" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "onverwacht bestandseinde tijdens zoeken naar ']]'" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaxfout in conditionele expressie: onverwacht symbool '%s'" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "syntaxfout in conditionele expressie" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "onverwacht symbool '%s'; ')' werd verwacht" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "')' werd verwacht" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "onverwacht argument '%s' bij eenzijdige conditionele operator" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "onverwacht argument bij eenzijdige conditionele operator" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "onverwacht symbool '%s'; tweezijdige conditionele operator werd verwacht" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "tweezijdige conditionele operator werd verwacht" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "onverwacht argument '%s' bij tweezijdige conditionele operator" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "onverwacht argument bij tweezijdige conditionele operator" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "onverwacht symbool '%c' in conditionele opdracht" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "onverwacht symbool '%s' in conditionele opdracht" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "onverwacht symbool %d in conditionele opdracht" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaxfout nabij onverwacht symbool '%s'" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "syntaxfout nabij '%s'" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "syntaxfout: onverwacht bestandseinde" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "syntaxfout" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gebruik \"%s\" om de shell te verlaten.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende ')'" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion(): functie '%s' niet gevonden" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert(): %s: lege COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command(): ongeldige verbinder '%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set(): %d: ongeldige bestandsdescriptor" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set(): bestandspointer is NIL" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" "xtrace-bestandsdescriptor (%d) != bestandsnummer van xtrace-bestandspointer " "(%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf(): '%c': ongeldig opmaakteken" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "bestandsdescriptor valt buiten bereik" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: omleiding is niet eenduidig" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: kan bestaand bestand niet overschrijven" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: beperkte modus: omleiden van uitvoer is niet toegestaan" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "kan geen tijdelijk bestand maken voor \"hier\"-document: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: kan bestandsdescriptor niet toewijzen aan variabele" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port is niet mogelijk zonder netwerk" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "omleidingsfout: kan bestandsdescriptor niet dupliceren" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "Kan /tmp niet vinden; maak deze aan!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp dient een geldige mapnaam te zijn" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ongeldige optie" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "kan UID niet op %d instellen; effectieve UID is %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "kan GID niet op %d instellen; effectieve GID is %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: is een map" + +#: shell.c:1777 msgid "I have no name!" msgstr "Ik heb geen naam!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versie %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1590,40 +1696,51 @@ msgstr "" "Gebruik: %s [opties]\n" " %s [opties] scriptbestand...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Lange opties:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Korte opties:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD, of -c OPDRACHT, of -O SHOPT-OPTIE (enkel bij aanroep)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s, of -o optie (veranderbaar via 'set')\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, 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:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "Webpagina van 'bash': \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Algemene hulp bij gebruik van GNU-software: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask(): %d: ongeldige operatie" @@ -1800,78 +1917,93 @@ msgstr "Onbekend signaalnummer" msgid "Unknown Signal #%d" msgstr "Onbekend signaal #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "ongeldige vervanging: geen sluit-'%s' in %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: kan geen lijst toewijzen aan een array-element" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "kan geen pijp maken voor procesvervanging" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "kan geen dochterproces maken voor procesvervanging" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "kan pijp genaamd %s niet openen om te lezen" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "kan pijp genaamd %s niet openen om te schrijven" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "kan pijp genaamd %s niet dupliceren als bestandsdescriptor %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "ongeldige vervanging: geen afsluitende '`' in %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "kan geen pijp maken voor opdrachtvervanging" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "kan geen dochterproces maken voor opdrachtvervanging" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute(): kan pijp niet dupliceren als bestandsdescriptor 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: lege parameter, of niet ingesteld" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: ongeldige vervanging" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: ongeldige indirecte expansie" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: ongeldige variabelenaam" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: lege parameter, of niet ingesteld" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: kan niet op deze manier toewijzen" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1879,12 +2011,12 @@ msgstr "" "toekomstige versies van de shell zullen dit als een rekenkundige vervanging " "evalueren" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "ongeldige vervanging: geen afsluitende '`' in %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "geen overeenkomst: %s" @@ -1898,39 +2030,39 @@ msgstr "argument werd verwacht" msgid "%s: integer expression expected" msgstr "%s: een geheel-getaluitdrukking werd verwacht" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "')' werd verwacht" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "')' werd verwacht; %s gevonden" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "eenzijdige operator werd verwacht, %s gevonden" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "tweezijdige operator werd verwacht, %s gevonden" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "ontbrekende ']'" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "ongeldig signaalnummer" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1938,87 +2070,88 @@ msgstr "" "run_pending_traps: signaalverwerker is SIG_DFL, herzenden van %d (%s) aan " "mezelf..." -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler(): ongeldig signaal %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "fout tijdens importeren van functiedefinitie voor '%s'" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell-niveau is te hoog (%d); teruggezet op 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: circulaire naamsverwijzing" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" "make_local_variable(): er is geen functiecontext in huidige geldigheidsbereik" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: aan variabele mag geen waarde toegewezen worden" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: ongeldige variabelenaam voor naamsverwijzing" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" "all_local_variables(): er is geen functiecontext in huidige geldigheidsbereik" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "*** %s heeft lege export-tekenreeks" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "*** ongeldig teken '%d' in export-tekenreeks voor %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "*** geen '=' in export-tekenreeks voor %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context(): er is geen 'global_variables'-context" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: Kan %s niet openen als BESTAND" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: ongeldige waarde %s voor 'trace'-bestandsdescriptor" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: compatibiliteitswaarde valt buiten bereik" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2015 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2042,10 +2175,6 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Er is GEEN GARANTIE, voor zover de wet dit toestaat." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2012 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2066,134 +2195,120 @@ msgstr "%s: %s:%d: kan geen %lu bytes reserveren (%lu bytes gereserveerd)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: kan geen %lu bytes reserveren" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [NAAM[=WAARDE] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] NAAM [NAAM...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" "bind [-lpvsPSVX] [-m TOETSENKAART] [-f BESTANDSNAAM] [-q NAAM] [-u NAAM]\n" -" [-r TOETSENREEKS] [-x TOETSENREEKS:SHELL-OPDRACHT]\n" -" [TOETSENREEKS:READLINE-FUNCTIE | TOETSENREEKS:READLINE-OPDRACHT]" +" [-r TOETSENREEKS] [-x TOETSENREEKS:SHELL-OPDRACHT]\n" +" [TOETSENREEKS:READLINE-FUNCTIE | TOETSENREEKS:READLINE-OPDRACHT]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [N]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [N]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [INGEBOUWDE_SHELLFUNCTIE [ARGUMENT...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [EXPRESSIE]" # XXX FIXME is this right? # can -@ only combine with -P, not with -L? -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|(-P [-e])] [-@] [MAP]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -# Dit is een commandonaam. -#: builtins.c:70 -msgid "true" -msgstr "true" - -# Dit is een commandonaam. -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] OPDRACHT [ARGUMENT...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [NAAM[=WAARDE] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] NAAM[=WAARDE]..." - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] NAAM[=WAARDE]..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [OPTIE] NAAM[=WAARDE]..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [ARGUMENT...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [ARGUMENT...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f BESTANDSNAAM] [NAAM...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [ARGUMENT...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts OPTIETEKENREEKS NAAM [ARGUMENT]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a NAAM] [OPDRACHT [ARGUMENT...]] [OMLEIDING...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [N]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [N]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e EDITORNAAM] [-lnr] [EERSTE] [LAATSTE] of: fc -s [PATROON=VERVANGING] " "[OPDRACHT]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [TAAKAANDUIDING]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [TAAKAANDUIDING...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p PADNAAM] [-dt] [NAAM...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [PATROON...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2201,15 +2316,16 @@ msgstr "" "history [-c] [-d POSITIE] [N] of: history -anrw [BESTANDSNAAM] of: history " "-ps ARGUMENT..." -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [TAAKAANDUIDING...] of: jobs -x OPDRACHT [ARGUMENT...]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [TAAKAANDUIDING...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2217,11 +2333,11 @@ msgstr "" "kill [-s SIGNAALNAAM | -n SIGNAALNUMMER | -SIGNAAL] PID | TAAKAANDUIDING\n" " of: kill -l [SIGNAAL]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let ARGUMENT..." -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2230,99 +2346,95 @@ msgstr "" " [-n AANTAL_TEKENS] [-N AANTAL_TEKENS] [-t TIJDSLIMIET]\n" " [-u BESTANDSDESCRIPTOR] [NAAM...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [N]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o OPTIENAAM] [--] [ARGUMENT...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [NAAM...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [NAAM[=WAARDE] ...] of export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [NAAM[=WAARDE] ...] of readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [N]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source BESTANDSNAAM [ARGUMENTEN]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". BESTANDSNAAM [ARGUMENTEN]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [EXPRESSIE]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ EXPRESSIE... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[ARGUMENT] SIGNAALAANDUIDING...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] NAAM..." -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [GRENSWAARDE]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [GRENSWAARDE]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [MODUS]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [ID ...]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [-n] [PID ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NAAM [in WOORDEN...] ; do OPDRACHTEN; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( EXPR1; EXPR2; EXPR3 )); do OPDRACHTEN; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NAAM [in WOORDEN... ;] do OPDRACHTEN; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] PIJPLIJN" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case WOORD in [PATROON [| PATROON]...) OPDRACHTEN ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2330,63 +2442,63 @@ msgstr "" "if OPDRACHTEN; then OPDRACHTEN; [elif OPDRACHTEN; then OPDRACHTEN;]... [else " "OPDRACHTEN;] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while OPDRACHTEN; do OPDRACHTEN; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until OPDRACHTEN; do OPDRACHTEN; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NAAM] OPDRACHT [OMLEIDINGEN]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function NAAM { OPDRACHTEN ; } of NAAM () { OPDRACHTEN ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ OPDRACHTEN ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "TAAKAANDUIDING [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( EXPRESSIE ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ EXPRESSIE ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - enkele shell-variabelen" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | MAP]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [OPTIENAAM...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v VARIABELE] OPMAAK [ARGUMENTEN]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2396,36 +2508,37 @@ msgstr "" " [-F FUNCTIE] [-G PATROON] [-P PREFIX] [-S SUFFIX]\n" " [-W WOORDENLIJST] [-X FILTERPATROON] [NAAM...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o OPTIE] [-A ACTIE] [-C OPDRACHT] [-F FUNCTIE]\n" -" [-G PATROON] [-P PREFIX] [-S SUFFIX]\n" -" [-W WOORDENLIJST] [-X FILTERPATROON] [WOORD]" +" [-G PATROON] [-P PREFIX] [-S SUFFIX]\n" +" [-W WOORDENLIJST] [-X FILTERPATROON] [WOORD]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o OPTIE] [-DE] [NAAM...]" -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" -"mapfile [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t] [-u BESTANDSDESCRIPTOR]\n" -" [-C FUNCTIE] [-c HOEVEELHEID] [ARRAY]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d SCHEIDINGSTEKEN] [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t]\n" +" [-u BESTANDSDESCRIPTOR] [-C FUNCTIE] [-c HOEVEELHEID] " +"[ARRAY]" + +#: builtins.c:244 +msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" "readarray [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t] [-u BESTANDSDESCRIPTOR]\n" -" [-C FUNCTIE] [-c HOEVEELHEID] [ARRAY]" +" [-C FUNCTIE] [-c HOEVEELHEID] [ARRAY]" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2437,7 +2550,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2455,24 +2568,26 @@ msgstr "" "het\n" " een alias is.\n" "\n" -" De afsluitwaarde is 0, tenzij er een NAAM zonder VERVANGING gegeven is." +" De afsluitwaarde is 0, tenzij er een NAAM gegeven is waarvoor geen " +"alias\n" +" gedefinieerd is." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Elke gegeven NAAM verwijderen uit de lijst van gedefinieerde aliassen.\n" "\n" -" Optie '-a' verwijdert alle aliassen.\n" +" Met optie '-a' worden alle gedefinieerde aliassen verwijderd.\n" "\n" " De afsluitwaarde is 0, tenzij NAAM geen bestaande alias is." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2506,7 +2621,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2554,7 +2670,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2570,7 +2686,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij N kleiner dan 1 is." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2585,7 +2701,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij N kleiner dan 1 is." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2609,7 +2725,7 @@ msgstr "" " De afsluitwaarde is die van de uitgevoerde shell-functie, of 1\n" " of 1 als INGEBOUWDE_SHELLFUNCTIE geen ingebouwde shell-functie is." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2635,7 +2751,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij de shell momenteel geen functie uitvoert\n" " of EXPRESSIE ongeldig is." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2658,16 +2774,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2719,13 +2835,13 @@ msgstr "" " omgevingsvariabele PWD ingesteld kon worden als '-P' gegeven is, anders " "1." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2737,16 +2853,16 @@ msgstr "" "De naam van de huidige werkmap tonen.\n" "\n" " Opties:\n" +" -L de waarde van $PWD tonen (als het de huidige werkmap aangeeft)\n" " -P het werkelijke, fysieke pad tonen, zonder symbolische " "koppelingen\n" -" -L het pad tonen zoals dat gevolgd is, inclusief eventuele " -"symbolische\n" -" koppelingen (standaard)\n" +"\n" +" Zonder opties wordt optie '-L' aangenomen.\n" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of de\n" " huidige map niet bepaald kon worden." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2756,7 +2872,7 @@ msgid "" " Always succeeds." msgstr "Doet niets; de opdracht heeft geen effect; de afsluitwaarde is 0." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2764,7 +2880,7 @@ msgid "" " Always succeeds." msgstr "Geeft afsluitwaarde 0, horend bij \"gelukt\"." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2772,7 +2888,7 @@ msgid "" " Always fails." msgstr "Geeft afsluitwaarde 1, horend bij \"mislukt\"." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2782,10 +2898,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2806,7 +2922,7 @@ msgstr "" " De afsluitwaarde is die van de uitgevoerde OPDRACHT,\n" " of 1 als de OPDRACHT niet gevonden is." -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2816,9 +2932,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2885,17 +3001,18 @@ msgstr "" "een\n" " toekenningsfout optrad." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Waarden en eigenschappen van variabelen instellen.\n" "\n" " Deze opdracht is verouderd. Zie 'help declare'." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2921,7 +3038,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd, er een\n" " toekenningsfout optrad, of de shell geen functie aan het uitvoeren is." -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2947,9 +3064,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2982,7 +3099,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een schrijffout optrad." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3001,7 +3118,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een schrijffout optrad." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3057,7 +3174,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij NAAM geen ingebouwde shell-opdracht is of\n" "  er een fout optreedt." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3078,7 +3195,7 @@ msgstr "" "opdracht\n" " leeg is." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3154,7 +3271,7 @@ msgstr "" " Normaliter ontleedt 'getopts' de positionele parameters: $0...$9.\n" " Maar als er argumenten gegeven worden, dan worden deze ontleed." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3165,8 +3282,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3195,7 +3312,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij OPDRACHT niet gevonden wordt of er een\n" " omleidingsfout optreedt." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3207,7 +3324,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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3220,7 +3337,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:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3275,7 +3392,7 @@ msgstr "" " De afsluitwaarde die van de uitgevoerde opdracht, of 0, of niet-nul als\n" " er een fout optreedt." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3298,7 +3415,7 @@ msgstr "" "er\n" " een fout optreedt." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3323,7 +3440,7 @@ msgstr "" "fout\n" " optreedt." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3332,15 +3449,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3365,7 +3482,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij NAAM niet gevonden wordt of een ongeldige\n" " optie gegeven werd." -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3377,7 +3494,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3402,7 +3519,8 @@ msgstr "" "ongeldige\n" " optie gegeven werd." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3411,23 +3529,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3471,8 +3589,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3482,7 +3599,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3518,7 +3635,7 @@ msgstr "" "een\n" " fout optrad. Met optie '-x' is de afsluitwaarde die van OPDRACHT." -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3528,7 +3645,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3550,7 +3667,8 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie of TAAKAANDUIDING\n" " gegeven werd." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3562,7 +3680,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3595,7 +3714,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3684,7 +3803,7 @@ msgstr "" " Als het laatste ARGUMENT evalueert tot 0, dan is de afsluitwaarde van\n" " 'let' 1; anders 0." -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3705,27 +3824,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3785,7 +3905,7 @@ msgstr "" " de tijdslimiet overschreden werd, er een toekenningsfout optrad, of een\n" " ongeldige bestandsdescriptor als argument van '-u' gegeven werd." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3806,7 +3926,8 @@ msgstr "" " uitvoeren is." # Voor de duidelijkheid is de tekstvolgorde veranderd. -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3874,7 +3995,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3991,7 +4113,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4001,7 +4123,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4029,7 +4151,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of een\n" " NAAM alleen-lezen is." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4063,7 +4185,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4075,9 +4197,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4102,7 +4223,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4119,7 +4240,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 tenzij N negatief is of groter dan $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4144,7 +4265,7 @@ msgstr "" "gegeven\n" " bestand, of 1 als dit bestand niet gelezen kan worden." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4170,7 +4291,7 @@ msgstr "" "fout\n" " optreedt." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4234,9 +4355,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4320,7 +4441,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:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4332,7 +4453,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:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4351,7 +4472,7 @@ msgstr "" "\n" " De afsluitwaarde is altijd 0." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4439,7 +4560,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie of SIGNAALAANDUIDING\n" " gegeven werd." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4448,18 +4569,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4492,7 +4613,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 als elke NAAM gevonden werd, anders 1." -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4510,6 +4631,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4521,7 +4643,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4557,6 +4680,7 @@ msgstr "" " -i het maximum aantal nog wachtende signalen\n" " -l de maximum hoeveelheid geheugen die een proces mag vastpinnen " "(kB)\n" +" -k het maximum aantal gereserveerde kqueues voor dit proces\n" " -m de maximum hoeveelheid fysiek geheugen van een proces (in kB)\n" " -n het maximum aantal open bestandsdescriptors\n" " -p de maximum grootte van een pijpbuffer\n" @@ -4564,10 +4688,11 @@ msgstr "" " -r de maximum realtime-procesprioriteit\n" " -s de maximum stapelgrootte (in kB)\n" " -t de maximum hoeveelheid CPU-tijd (in seconden)\n" -" -T het maximum aantal threads\n" " -u het maximum aantal gebruikersprocessen\n" " -v de maximum hoeveelheid virtueel geheugen van een proces (in kB)\n" " -x het maximum aantal bestandsvergrendelingen\n" +" -P het maximum aantal pseudoterminals\n" +" -T het maximum aantal threads\n" "\n" " Niet alle opties zijn beschikbaar op alle platformen.\n" "\n" @@ -4586,7 +4711,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4622,7 +4747,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij MODUS ongeldig is of een ongeldige optie\n" " gegeven werd." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4659,7 +4784,7 @@ msgstr "" " De afsluitwaarde is die van de laatste ID, 1 als ID ongeldig is,\n" " of 2 als een ongeldige optie gegeven werd." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4683,7 +4808,7 @@ msgstr "" " De afsluitwaarde is die van de laatste PID, 1 als PID ongeldig is,\n" " of 2 als een ongeldige optie gegeven werd." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4704,7 +4829,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4731,7 +4856,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4768,7 +4893,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4795,7 +4920,7 @@ msgstr "" " overdraagbare standaardopmaak.\n" " De afsluitwaarde is die van de PIJPLIJN." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4813,7 +4938,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4848,7 +4973,7 @@ msgstr "" "uitgevoerde\n" " deelopdracht, of nul als geen enkele 'if' of 'elif' nul opleverde." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4865,7 +4990,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4882,7 +5007,8 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4892,7 +5018,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Een co-proces aanmaken genaamd NAAM.\n" "\n" @@ -4903,7 +5029,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de OPDRACHT." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4925,7 +5051,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij NAAM onveranderbaar is." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4942,7 +5068,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4966,7 +5092,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de hervatte taak." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4983,7 +5109,7 @@ msgstr "" "\n" " De afsluitwaarde is 1 als de EXPRESSIE tot 0 evalueert; anders 0." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5038,7 +5164,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 of 1, afhankelijk van EXPRESSIE." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5152,7 +5278,7 @@ msgstr "" "het\n" " geschiedeniscommentaarteken, gewoonlijk '#'\n" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5162,19 +5288,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5205,7 +5331,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" " mapwijziging mislukte." -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5214,16 +5340,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5254,7 +5380,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" " mapwijziging mislukte." -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5265,19 +5391,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5305,7 +5431,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5348,7 +5474,7 @@ msgstr "" " een ongeldige optienaam gegeven werd, en de afsluitwaarde is 2 als een\n" " ongeldige optie gegeven werd." -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5365,15 +5491,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5418,7 +5544,7 @@ msgstr "" "een\n" " schrijf- of toekenningsfout optrad." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5431,11 +5557,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5468,7 +5594,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5490,7 +5616,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5546,7 +5672,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of voor\n" " NAAM geen completeringsvoorschrift gedefinieerd is." -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5557,20 +5683,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5592,6 +5719,7 @@ msgstr "" " De variabele MAPFILE wordt gebruikt als geen ARRAY gegeven is.\n" "\n" " Opties:\n" +" -d TEKEN dit teken (i.p.v. LF) gebruiken als einde van regel\n" " -n AANTAL maximaal dit aantal regels kopiëren (0 = alles)\n" " -O BEGIN met toekennen beginnen bij deze index (standaard 0)\n" " -s AANTAL dit aantal regels overslaan\n" @@ -5619,7 +5747,7 @@ msgstr "" "of\n" " een ongeldige optie gegeven werd." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5629,6 +5757,26 @@ msgstr "" "\n" " Een synoniem voor 'mapfile'." +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +# Dit is een commandonaam. +#~ msgid "true" +#~ msgstr "true" + +# Dit is een commandonaam. +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc." + #~ msgid "" #~ "License GPLv2+: GNU GPL version 2 or later \n" diff --git a/po/pl.gmo b/po/pl.gmo index 0afbb44460dcedf3206f9d36eb5bf0fb4875a3e7..a67cbd54c932731eb0aaafdf898b1067e3118434 100644 GIT binary patch delta 16892 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 delta 26836 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 C$yPo9 diff --git a/po/pl.po b/po/pl.po index 8e5b18b..9f97f36 100644 --- a/po/pl.po +++ b/po/pl.po @@ -2,91 +2,97 @@ # Copyright (C) 2007, 2010, 2011, 2013, 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Andrzej M. Krzysztofowicz 2006,2007. -# Jakub Bogusz 2010-2014. +# Jakub Bogusz 2010-2015. # msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2014-01-30 20:40+0100\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-24 22:34+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" -"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\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" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "nieprawidÅ‚owy indeks tablicy" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nie można przeksztaÅ‚cić tablicy indeksowanej na asocjacyjnÄ…" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: błędny klucz tablicy asocjacyjnej" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nie można przypisać do nienumerycznego indeksu" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: przy przypisaniu do tablicy asocjacyjnej należy użyć nawiasów" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nie można utworzyć: %s" # ??? -#: bashline.c:3982 +#: bashline.c:4091 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:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "brak zamykajÄ…cego `%c' w %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: brak separujÄ…cego dwukropka" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "rozwijanie nawiasów: nie można przydzielić pamiÄ™ci dla %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" "rozwijanie nawiasów: nie udaÅ‚o siÄ™ przydzielić pamiÄ™ci dla elementów w " "liczbie %d" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "rozwijanie nawiasów: nie udaÅ‚o siÄ™ przydzielić pamiÄ™ci dla `%s'" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': błędna nazwa aliasu" @@ -96,46 +102,46 @@ msgid "line editing not enabled" msgstr "edycja wiersza nie zostaÅ‚a włączona" # ??? -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nieprawidÅ‚owa nazwa mapy klawiszy" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nie można odczytać: %s" # ??? -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': nie można usunąć dowiÄ…zania" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nie znana nazwa funkcji" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nie jest przypisany do żadnego klawisza.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s może być wywoÅ‚any przez " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "licznik pÄ™tli" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "ma sens tylko w pÄ™tli `for', `while' lub `until'" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -145,300 +151,329 @@ msgstr "" " \n" " Bez WYRAÅ»ENIA zwraca " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "Nie ustawiono HOME" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "za dużo argumentów" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "brak innego katalogu" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "Nie ustawiono OLDPWD" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "linia %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "uwaga: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: skÅ‚adnia: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcja wymaga argumentu" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: wymagany argument numeryczny" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: nie znaleziono" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: nieprawidÅ‚owa opcja" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: nieprawidÅ‚owa nazwa opcji" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': nieprawidÅ‚owy identyfikator" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "błędna liczba ósemkowa" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "błędna liczba szesnastkowa" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "nieprawidÅ‚owa liczba" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: nieprawidÅ‚owo okreÅ›lony sygnaÅ‚" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': nie jest to nr PID ani prawidÅ‚owe okreÅ›lenie zadania" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: zmienna tylko do odczytu" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s poza zakresem" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s poza zakresem" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: brak takiego zadania" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: brak kontroli zadaÅ„" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "brak kontroli zadaÅ„" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: ograniczony" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "ograniczony" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nie jest to polecenie powÅ‚oki" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "błąd zapisu: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "błąd podczas ustawiania atrybutów terminala: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "błąd podczas pobierania atrybutów terminala: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: błąd przy okreÅ›laniu katalogu bieżącego: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: niejednoznaczne okreÅ›lenie zadania" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "pomoc nie jest dostÄ™pna w tej wersji" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: nieprawidÅ‚owa nazwa akcji" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: brak definicji dla uzupeÅ‚nienia" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "uwaga: opcja -F może dziaÅ‚ać inaczej niż oczekiwano" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "uwaga: opcja -C może dziaÅ‚ać inaczej niż oczekiwano" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "aktualnie nie jest wykonywana funkcja dopeÅ‚niania" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "można używać tylko w funkcji" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: zmienna referencyjna nie może być tablicÄ…" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: zmienna referencyjna nie może wskazywać na siebie" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: cykliczne odwoÅ‚anie do nazwy" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: nieprawidÅ‚owa nazwa zmiennej przy odwoÅ‚aniu do nazwy" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "nie można używać `-f' do tworzenia funkcji" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: funkcja tylko do odczytu" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: przypisanie zÅ‚ożonej tablicy z cytowaniem jest przestarzaÅ‚e" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nie można przeksztaÅ‚cić tablicy asocjacyjnej na indeksowanÄ…" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "Å‚adowanie dynamiczne nie jest dostÄ™pne" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "nie można otworzyć obiektu współdzielonego %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "nie można znaleźć %s w obiekcie współdzielonym %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "funkcja Å‚adujÄ…ca dla %s zwraca niepowodzenie (%d): nie zaÅ‚adowano" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: nie jest Å‚adowany dynamicznie" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nie można usunąć: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: jest katalogiem" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: nie jest zwykÅ‚ym plikiem" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: plik jest za duży" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nie można uruchomić pliku binarnego" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nie można uruchomić: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "wylogowanie\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "to nie jest powÅ‚oka logowania: użyj `exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "IstniejÄ… zatrzymane zadania.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "IstniejÄ… dziaÅ‚ajÄ…ce zadania.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "nie znaleziono polecenia" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "specyfikacja historii" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nie udaÅ‚o siÄ™ otworzyć pliku tymczasowego: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "bieżące" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "zadanie %d uruchomiono bez kontroli zadaÅ„" @@ -457,17 +492,17 @@ msgstr "%s: opcja wymaga argumentu -- %c\n" msgid "hashing disabled" msgstr "zapamiÄ™tywanie Å›cieżek poleceÅ„ w tablicy asocjacyjnej wyłączone" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tablica asocjacyjna pusta\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "trafienia\tpolecenie\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" @@ -475,7 +510,7 @@ msgstr[0] "Polecenia powÅ‚oki pasujÄ…ce do sÅ‚owa kluczowego `" msgstr[1] "Polecenia powÅ‚oki pasujÄ…ce do słów kluczowych `" msgstr[2] "Polecenia powÅ‚oki pasujÄ…ce do słów kluczowych `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -483,12 +518,12 @@ msgstr "" "żaden temat pomocy nie pasuje do `%s'. Spróbuj `help help', `man -k %s'\n" "lub `info %s'." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nie można otworzyć: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -510,15 +545,20 @@ msgstr "" "Gwiazdka (*) po nazwie oznacza, że dane polecenie jest wyłączone.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "nie można używać wiÄ™cej niż jednego spoÅ›ród -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "pozycja historii" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: nieprawidÅ‚owy argument" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: rozwiniÄ™cie wg historii nie powiodÅ‚o siÄ™" @@ -532,113 +572,113 @@ msgstr "%s: inlib nie powiodÅ‚o siÄ™" msgid "no other options allowed with `-x'" msgstr "nie można używać innych opcji przy `-x'" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumentami muszÄ… być numery procesów lub zadaÅ„" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Nieznany błąd" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "spodziewano siÄ™ wyrażenia" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: nie jest tablicÄ… indeksowanÄ…" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: nieprawidÅ‚owo okreÅ›lony deskryptor pliku" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: nieprawidÅ‚owy deskryptor pliku: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: błędna liczba linii" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: błędny poczÄ…tek tablicy" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: błędna liczba linii miÄ™dzy wywoÅ‚aniami" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "pusta nazwa zmiennej tablicowej" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "wymagana obsÅ‚uga zmiennych tablicowych" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': brak znaku formatujÄ…cego" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': błędne okreÅ›lenie formatu czasu" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': nieprawidÅ‚owy znak formatujÄ…cy" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "uwaga: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "problem z analizÄ… formatu: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "brak cyfry szesnastkowej dla \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "brak cyfry unikodowej dla \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "brak innego katalogu" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: nieprawidÅ‚owy argument" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "pusty stos katalogów" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "indeks stosu katalogów" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -681,7 +721,7 @@ msgstr "" " -N\tWypisanie N-tej pozycji liczÄ…c od prawej strony listy wypisywanej\n" "\tprzez dirs wywoÅ‚ane bez opcji, poczÄ…wszy od zera." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -725,7 +765,7 @@ msgstr "" " \n" " Zawartość stosu katalogów można zobaczyć za pomocÄ… polecenia `dirs'." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -764,143 +804,153 @@ msgstr "" " \n" " Zawartość stosu katalogów można zobaczyć za pomocÄ… polecenia `dirs'." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: nieprawidÅ‚owo okreÅ›lony limit czasu" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "błąd odczytu: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "nie można jednoczeÅ›nie anulować definicji funkcji i zmiennej" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: nie można anulować definicji" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nie można anulować definicji: %s jest tylko do odczytu" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: nie jest zmiennÄ… tablicowÄ…" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: nie jest funkcjÄ…" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: nie można wyeksportować" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "licznik przesuniÄ™cia" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "nie można opcji powÅ‚oki jednoczeÅ›nie ustawić i unieważnić" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nieprawidÅ‚owa nazwa opcji powÅ‚oki" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "wymagany argument w postaci nazwy pliku" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: nie znaleziono pliku" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "nie można wstrzymać" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "nie można wstrzymać powÅ‚oki logowania" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s jest aliasem do %s'\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s jest sÅ‚owem kluczowym powÅ‚oki\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s jest funkcjÄ…\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s jest specjalnym wewnÄ™trznym poleceniem powÅ‚oki\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s jest wewnÄ™trznym poleceniem powÅ‚oki\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s jest %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "Å›cieżka do %s jest zapamiÄ™tana (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: nieprawidÅ‚owy argument stanowiÄ…cy ograniczenie" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': zÅ‚e polecenie" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nie można odczytać ograniczenia: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "ograniczenie" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nie można zmienić ograniczenia: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "liczba ósemkowa" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "`%c': nieprawidÅ‚owy operator trybu symbolicznego" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "`%c': nieprawidÅ‚owy znak trybu symbolicznego" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " linia " @@ -914,82 +964,103 @@ msgstr "ostatnie polecenie: %s\n" msgid "Aborting..." msgstr "Przerywanie..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:463 msgid "unknown command error" msgstr "nieznany błąd polecenia" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "zÅ‚y rodzaj polecenia" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "zÅ‚y łącznik" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "zÅ‚y skok" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: nieustawiona zmienna" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': nieprawidÅ‚owy znak formatujÄ…cy" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "błąd potoku" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: przekroczono maksymalny poziom zagnieżdżenia polecenia eval (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia polecenia source (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia funkcji (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ograniczony: nie można podawać `/' w nazwach poleceÅ„" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: nie znaleziono polecenia" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: zÅ‚y interpreter" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nie można uruchomić pliku binarnego: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "`%s' jest specjalnym poleceniem wewnÄ™trznym" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nie można skopiować deskryptora pliku %d do %d" @@ -1036,37 +1107,37 @@ msgstr "" msgid "missing `)'" msgstr "brakujÄ…cy `)'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "błąd skÅ‚adni: spodziewany argument" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "błąd skÅ‚adni: nieprawidÅ‚owy operator arytmetyczny" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (błędny znacznik to \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "nieprawidÅ‚owa podstawa arytmetyczna" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "wartość za duża na podstawÄ™" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: błąd w wyrażeniu\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: niemożliwy dostÄ™p do katalogów nadrzÄ™dnych" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nie można wyłączyć trybu nieblokujÄ…cego dla deskryptora %d" @@ -1081,150 +1152,150 @@ msgstr "nie można przydzielić nowego deskryptora pliku dla wejÅ›cia basha z %d msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: bufor dla nowego deskryptora %d już istnieje" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" # ??? -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "usuwanie zatrzymanego zadania %d z grupÄ… procesów %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) w potoku" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) oznaczony jako nadal żywy" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: brak takiego PID-u" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "SygnaÅ‚ %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "ZakoÅ„czono" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Zatrzymano" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Zatrzymano(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "DziaÅ‚a" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "ZakoÅ„czono(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Kod wyjÅ›cia %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Stan nieznany" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(zrzut pamiÄ™ci) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (katalog: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid potomka (%ld na %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Brak rekordu dla procesu %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: zadanie %d jest zatrzymane" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: zadanie zostaÅ‚o przerwane" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: zadanie %d już pracuje w tle" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "waitchld: wyłączanie WNOHANG w celu unikniÄ™cia nieskoÅ„czonego oczekiwania" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: linia %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (zrzut pamiÄ™ci)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(katalog: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp nie powiodÅ‚o siÄ™" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: dyscyplina linii" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nie można ustawić grupy procesów terminala (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "w tej powÅ‚oce nie ma kontroli zadaÅ„" @@ -1279,17 +1350,17 @@ msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: rozmiar poczÄ…tkowy i koÅ„cowy fragmentu sÄ… różne" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p już znajduje siÄ™ w tablicy jako wolny?\n" @@ -1313,7 +1384,7 @@ msgstr "%s: nieznana usÅ‚uga" msgid "%s: bad network path specification" msgstr "%s: źle okreÅ›lona Å›cieżka sieciowa" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "operacje sieciowe nie sÄ… wspierane" @@ -1350,225 +1421,260 @@ msgstr "Masz nowÄ… pocztÄ™ w $_" msgid "The mail in %s has been read\n" msgstr "Poczta w %s jest przeczytana\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "błąd skÅ‚adni: oczekiwano wyrażenia arytmetycznego" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "błąd skÅ‚adni: oczekiwany `;'" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "błąd skÅ‚adni: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: zÅ‚y rodzaj instrukcji %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "dokument miejscowy w linii %d ograniczony koÅ„cem pliku (oczekiwano `%s')" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "przekroczono maksymalnÄ… liczbÄ™ dokumentów w miejscu" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "nieoczekiwany EOF podczas poszukiwania pasujÄ…cego `%c'" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "nieoczekiwany EOF podczas poszukiwania `]]'" -#: parse.y:4175 +#: parse.y:4415 #, 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:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "błąd skÅ‚adni w wyrażeniu warunkowym" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "oczekiwano `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "oczekiwano dwuargumentowego operatora warunkowego" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "błąd skÅ‚adni przy nieoczekiwanym znaczniku `%s'" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "błąd skÅ‚adni przy `%s'" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "błąd skÅ‚adni: nieoczekiwany koniec pliku" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "błąd skÅ‚adni" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Użyj \"%s\", aby opuÅ›cić tÄ™ powÅ‚okÄ™.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "nieoczekiwany EOF podczas poszukiwania pasujÄ…cego `)'" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "uzupeÅ‚nienie: nie znaleziono funkcji `%s'" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: zÅ‚y łącznik `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: nieprawidÅ‚owy deskryptor pliku" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: pusty wskaźnik pliku" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': nieprawidÅ‚owy znak formatujÄ…cy" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "deskryptor pliku poza zakresem" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: niejednoznaczne przekierowanie" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nie można nadpisać istniejÄ…cego pliku" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ograniczony: nie można przekierować wyjÅ›cia" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "nie można utworzyć pliku tymczasowego dla dokumentu miejscowego: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nie można przypisać deskryptora pliku do zmiennej" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nie sÄ… wspierane bez sieci" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "błąd przekierowania: nie można powielić deskryptora pliku" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "nie można znaleźć /tmp, proszÄ™ o utworzenie!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp musi być prawidÅ‚owÄ… nazwÄ… katalogu" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: nieprawidÅ‚owa opcja" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "nie można ustawić uid-a na %d: efektywny uid %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "nie można ustawić gid-a na %d: efektywny gid %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: jest katalogiem" + +#: shell.c:1777 msgid "I have no name!" msgstr "Nie mam nazwy!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, wersja %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1577,43 +1683,55 @@ msgstr "" "Użycie:\t%s [dÅ‚uga opcja GNU] [opcja] ...\n" "\t%s [dÅ‚uga opcja GNU] [opcja] plik-skryptu ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "DÅ‚ugie opcje GNU:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Opcje powÅ‚oki:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD lub -c polecenie lub -O shopt_option\t\t(tylko wywoÅ‚anie)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s lub -o opcja\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, 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:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "strona domowa basha: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Ogólna pomoc przy użytkowaniu oprogramowania GNU: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: nieprawidÅ‚owa operacja" @@ -1787,77 +1905,92 @@ msgstr "Nieznany sygnaÅ‚ #" msgid "Unknown Signal #%d" msgstr "Nieznany sygnaÅ‚ #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "zÅ‚e podstawienie: brak zamykajÄ…cego `%s' w %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nie można przypisać listy do elementu tablicy" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "nie można utworzyć potoku dla podstawienia procesu" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "nie można utworzyć procesu potomnego dla podstawienia procesu" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nie można otworzyć nazwanego potoku %s do odczytu" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nie można otworzyć nazwanego potoku %s do zapisu" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nie można powielić nazwanego potoku %s jako deskryptor %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "zÅ‚e podstawienie: brak zamykajÄ…cego \"`\" w %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "nie można utworzyć potoku dla podstawienia polecenia" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "nie można utworzyć procesu potomnego dla podstawienia polecenia" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nie można powielić potoku jako deskryptora 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: nieprawidÅ‚owa nazwa zmiennej przy odwoÅ‚aniu do nazwy" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parametr pusty lub nieustawiony" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: wyrażenie dla podÅ‚aÅ„cucha < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: zÅ‚e podstawienie" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: błędne rozwiniÄ™cie niebezpoÅ›rednie" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "`%s': błędna nazwa zmiennej" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametr pusty lub nieustawiony" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: wyrażenie dla podÅ‚aÅ„cucha < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nie można przypisywać w ten sposób" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1865,12 +1998,12 @@ msgstr "" "przyszÅ‚e wersje powÅ‚oki bÄ™dÄ… wymuszać obliczenie jako podstawienie " "arytmetyczne" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "zÅ‚e podstawienie: brak zamykajÄ…cego \"`\" w %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "brak pasujÄ…cego: %s" @@ -1884,125 +2017,126 @@ msgstr "oczekiwano argumentu" msgid "%s: integer expression expected" msgstr "%s: oczekiwano wyrażenia caÅ‚kowitego" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "oczekiwano `)'" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "oczekiwano `)', znaleziono %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: oczekiwano operatora jednoargumentowego" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: oczekiwano operatora dwuargumentowego" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "brakujÄ…cy `]'" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "nieprawidÅ‚owy numer sygnaÅ‚u" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: zÅ‚y sygnaÅ‚ %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "błąd importu definicji funkcji dla `%s'" -#: variables.c:780 +#: variables.c:814 #, 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:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: cykliczne odwoÅ‚anie do nazwy" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: brak kontekstu funkcji w bieżącym zakresie" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nie można przypisać wartoÅ›ci do zmiennej" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: nieprawidÅ‚owa nazwa zmiennej przy odwoÅ‚aniu do nazwy" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: brak kontekstu funkcji w bieżącym zakresie" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s ma pusty exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "nieprawidÅ‚owy znak %d w exportstr dla %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "brak `=' w exportstr dla %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: brak kontekstu global_variables" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nie można otworzyć jako PLIK" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nieprawidÅ‚owa wartość dla deskryptora pliku do Å›ledzenia" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s: wartość kompatybilna poza zakresem" +msgstr "%s: %s: wartość zgodnoÅ›ci poza zakresem" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright (C) 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2015 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2027,10 +2161,6 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Nie ma Å»ADNEJ GWARANCJI w granicach dopuszczanych przez prawo." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2012 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2051,15 +2181,15 @@ msgstr "%s: %s:%d: nie można przydzielić %lu bajtów (przydzielono %lu)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: nie można przydzielić %lu bajtów" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [nazwa[=wartość] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nazwa [nazwa ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -2068,112 +2198,100 @@ msgstr "" "x sekwencja:polecenie-powÅ‚oki] [sekwencja:funkcja-readline lub polecenie-" "readline]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [polecenie-wbudowane [arg ... ]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [wyrażenie]" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]] [-@]] [katalog]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] polecenie [arg ...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [nazwa[=wartość] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] nazwa[=wartość] ..." - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] nazwa[=wartość] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [opcja] nazwa[=wartość] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f plik] [nazwa ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts Å‚aÅ„cuch-opcji nazwa [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a nazwa] [polecenie [argumenty ...]] [przekierowanie ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e nazwa-ed] [-lnr] [pierwszy] [ostatni] lub fc -s [wz=zam] [polecenie]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [zadanie]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [zadanie ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p Å›cieżka] [-dt] [nazwa ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [wzorzec ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2181,15 +2299,16 @@ msgstr "" "history [-c] [-d offset] [n] lub history -anrw [plik] lub history -ps arg " "[arg ...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [zadanie ...] lub jobs -x polecenie [argumenty]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [zadanie ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2197,11 +2316,11 @@ msgstr "" "kill [-s sygnaÅ‚ | -n numer-sygnaÅ‚u | -sygnaÅ‚] pid | zadanie ... lub kill -l " "[sygnaÅ‚]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2209,99 +2328,95 @@ msgstr "" "read [-ers] [-a tablica] [-d separator] [-i tekst] [-n liczba] [-N liczba] [-" "p zachÄ™ta] [-t czas] [-u fd] [nazwa ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nazwa-opcji] [--] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [nazwa ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [nazwa[=wartość] ...] lub export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [aAf] [nazwa[=wartość] ...] lub readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source plik [argumenty]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". plik [argumenty]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [wyrażenie]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] sygnaÅ‚ ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nazwa [nazwa ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [ograniczenie]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ograniczenie]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [uprawnienia]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [id ...]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [pid ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NAZWA [in SÅOWA ... ] ; do POLECENIA; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( wyr1; wyr2; wyr3 )); do POLECENIA; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NAZWA [in SÅOWA ... ;] do POLECENIA; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] potok" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case SÅOWO in [WZORZEC [| WZORZEC]...) POLECENIA ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2309,63 +2424,63 @@ msgstr "" "if POLECENIA; then POLECENIA; [ elif POLECENIA; then POLECENIA; ]... [ else " "POLECENIA; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while POLECENIA; do POLECENIA; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until POLECENIA; do POLECENIA; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NAZWA] polecenie [przekierowania]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function nazwa { POLECENIA ; } lub nazwa () { POLECENIA ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ POLECENIA ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "zadanie [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( wyrażenie ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ wyrażenie ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "zmienne - nazwy i znaczenie niektórych zmiennych powÅ‚oki" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | katalog]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [nazwa-opcji ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [argumenty]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2375,36 +2490,36 @@ msgstr "" "[-W lista-słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P " "przedrostek] [-S przyrostek] [nazwa ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o opcja] [-A akcja] [-G wzorzec-glob] [-W lista-" +"compgen [-abcdefgjksuv] [-o opcja] [-A akcja] [-G wzorzec-glob] [-W lista-" "słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P przedrostek ] [-S " "przyrostek] [sÅ‚owo]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o opcja] [-DE] [nazwa ...]" -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" -"mapfile [-n liczba] [-O poczÄ…tek] [-s liczba] [-t] [-u fd] [-C wywoÅ‚anie] [-" -"c co-ile] [tablica]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d separator] [-n liczba] [-O poczÄ…tek] [-s liczba] [-t] [-u fd] [-" +"C wywoÅ‚anie] [-c co-ile] [tablica]" + +#: builtins.c:244 +msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" "readarray [-n liczba] [-O poczÄ…tek] [-s liczba] [-t] [-u fd] [-C wywoÅ‚anie] " "[-c co-ile] [tablica]" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2416,7 +2531,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2436,30 +2551,30 @@ msgstr "" " nastÄ™pnego sÅ‚owa.\n" " \n" " Opcje:\n" -" -p\tWypisanie wszystkich zdefiniowanych aliasów w formacie do\n" +" -p\twypisanie wszystkich zdefiniowanych aliasów w formacie do\n" " \tponownego użycia\n" " \n" " Stan wyjÅ›ciowy:\n" " Polecenie alias zwraca prawdÄ™, chyba że poda siÄ™ NAZWĘ, dla której nie\n" " zdefiniowano aliasu." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Usuwa wszystkich NAZW z listy zdefiniowanych aliasów.\n" " \n" " Opcje:\n" -" -a\tusuniÄ™cie wszystkich definicji aliasów.\n" +" -a\tusuniÄ™cie wszystkich definicji aliasów\n" " \n" " Zwracana jest prawda, chyba że NAZWA nie jest istniejÄ…cym aliasem." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2493,7 +2608,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2548,7 +2664,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " bind zwraca 0, chyba że podano nieznanÄ… opcjÄ™ lub wystÄ…pi błąd." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2567,7 +2683,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Instrukcja zwraca prawdÄ™, chyba że N jest mniejsze niż 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2585,7 +2701,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Instrukcja zwraca 0, chyba że N jest mniejsze niż 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2610,7 +2726,7 @@ msgstr "" " Instrukcja zwraca stan wyjÅ›ciowy POLECENIA-WBUDOWANEGO lub faÅ‚sz, jeÅ›li\n" " POLECENIE-WBUDOWANE nie jest poleceniem wbudowanym powÅ‚oki." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2640,7 +2756,7 @@ msgstr "" " Polecenie zwraca 0, chyba że powÅ‚oka nie wykonuje funkcji lub WYRAÅ»ENIE\n" " jest nieprawidÅ‚owe." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2663,16 +2779,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2703,14 +2819,14 @@ msgstr "" " \n" " Opcje:\n" " -L\twymuszenie Å›ledzenia dowiÄ…zaÅ„ symbolicznych: rozwiÄ…zanie\n" -" \tdowiÄ…zaÅ„ w KATALOGU po przetworzeniu wszystkich `..'\n" +" \t\tdowiÄ…zaÅ„ w KATALOGU po przetworzeniu wszystkich `..'\n" " -P\tkorzystanie z fizycznej struktury katalogów zamiast Å›ledzenia\n" -" \tdowiÄ…zaÅ„ symbolicznych: rozwiÄ…zanie dowiÄ…zaÅ„ w KATALOGU przed\n" -" \tprzetworzeniem wszystkich `..'\n" +" \t\tdowiÄ…zaÅ„ symbolicznych: rozwiÄ…zanie dowiÄ…zaÅ„ w KATALOGU przed\n" +" \t\tprzetworzeniem wszystkich `..'\n" " -e\tjeÅ›li podano opcjÄ™ -P, a nie można okreÅ›lić bieżącego katalogu,\n" -" \tpolecenie koÅ„czy siÄ™ stanem niezerowym\n" +" \t\tpolecenie koÅ„czy siÄ™ stanem niezerowym\n" " -@ na systemach obsÅ‚ugujÄ…cych je, zaprezentowanie pliku majÄ…cego\n" -" rozszerzone atrybuty jako katalogu zawierajÄ…cego atrybuty pliku\n" +" \t\trozszerzone atrybuty jako katalogu zawierajÄ…cego atrybuty pliku\n" " \n" " DomyÅ›lne jest Å›ledzenie dowiÄ…zaÅ„ symbolicznych, jak z opcjÄ… `-L'.\n" " `..' jest przetwarzane przez usuniÄ™cie bezpoÅ›redniego poprzedniego\n" @@ -2721,13 +2837,13 @@ msgstr "" " zmienione pomyÅ›lnie w przypadku użycia -P; w przeciwnym razie zwraca\n" " wartość niezerowÄ…." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2748,7 +2864,7 @@ msgstr "" " Polecenie zwraca 0, chyba że podano nieprawidÅ‚owÄ… opcjÄ™ lub katalog\n" " bieżący nie może być odczytany." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2764,7 +2880,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zawsze zwracana jest prawda." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2776,7 +2892,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zawsze zwracana jest prawda." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2788,7 +2904,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zawsze zwracany jest faÅ‚sz." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2798,10 +2914,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2815,7 +2931,7 @@ msgstr "" " \n" " Opcje:\n" " -p\tużycie domyÅ›lnej wartoÅ›ci PATH, pod którÄ… powinny być wszystkie\n" -" \tstandardowe narzÄ™dzia\n" +" \t\tstandardowe narzÄ™dzia\n" " -v\twypisanie opisu POLECENIA w sposób podobny do polecenia `type'\n" " -V\twypisanie szczegółowego opisu każdego POLECENIA\n" " \n" @@ -2823,7 +2939,7 @@ msgstr "" " Polecenie zwraca stan POLECENIA lub faÅ‚sz, jeÅ›li POLECENIE nie zostaÅ‚o\n" " znalezione." -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2833,9 +2949,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2870,9 +2986,9 @@ msgstr "" " Opcje:\n" " -f\tograniczenie akcji lub wyÅ›wietlania do nazw i definicji funkcji\n" " -F\tograniczenie wyÅ›wietlania tylko do nazw funkcji (oraz numeru\n" -" \tlinii i pliku źródÅ‚owego w przypadku diagnostyki)\n" +" \t\tlinii i pliku źródÅ‚owego w przypadku diagnostyki)\n" " -g\ttworzenie zmiennych globalnych w przypadku użycia w funkcji\n" -" \tpowÅ‚oki; w przeciwnym wypadku ignorowane\n" +" \t\tpowÅ‚oki; w przeciwnym wypadku ignorowane\n" " -p\twyÅ›wietlenie atrybutów i wartoÅ›ci dla każdej NAZWY\n" " \n" " Opcje ustawiajÄ…ce atrybuty:\n" @@ -2898,17 +3014,18 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Polecenie zwraca prawdÄ™, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Ustawienie wartoÅ›ci i atrybutów zmiennej.\n" " \n" " Polecenie przestarzaÅ‚e - p. `help declare'." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2934,7 +3051,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™, wystÄ…pi błąd przy\n" " przypisaniu zmiennej lub powÅ‚oka nie wykonuje żadnej funkcji." -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2960,9 +3077,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2993,14 +3110,14 @@ msgstr "" " \\v\ttabulacja pionowa\n" " \\\\\todwrotny ukoÅ›nik\n" " \\0nnn\tznak o kodzie ASCII NNN (ósemkowo). NNN może stanowić od\n" -" \t0 do 3 cyfr ósemkowych\n" +" \t\t0 do 3 cyfr ósemkowych\n" " \\xHH\tznak oÅ›miobitowy o wartoÅ›ci HH (szesnastkowo). HH może być\n" -" \tjednÄ… lub dwiema cyframi szesnastkowymi\n" +" \t\tjednÄ… lub dwiema cyframi szesnastkowymi\n" " \n" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że wystÄ…pi błąd zapisu." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3022,7 +3139,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że wystÄ…pi błąd zapisu." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3076,7 +3193,7 @@ msgstr "" " Zwracana jest prawda, chyba że NAZWA nie jest poleceniem wbudowanym lub\n" " wystÄ…pi błąd." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3096,7 +3213,7 @@ msgstr "" " Zwracany jest stan wyjÅ›ciowy polecenia lub prawdÄ™, jeÅ›li polecenie jest\n" " puste." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3182,7 +3299,7 @@ msgstr "" "koniec\n" " opcji lub błąd." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3193,8 +3310,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3212,8 +3329,8 @@ msgstr "" " \n" " Opcje:\n" " -a nazwa\tprzekazanie NAZWY jako zerowego argumentu POLECENIA\n" -" -c\t\twywoÅ‚anie POLECENIA z pustym Å›rodowiskiem\n" -" -l\t\tumieszczenie kreski w zerowym argumencie POLECENIA\n" +" -c\twywoÅ‚anie POLECENIA z pustym Å›rodowiskiem\n" +" -l\tumieszczenie kreski w zerowym argumencie POLECENIA\n" " \n" " JeÅ›li polecenia nie można wywoÅ‚ać, powÅ‚oka nieinteraktywna koÅ„czy siÄ™,\n" " chyba że ustawiona jest opcja powÅ‚oki `execfail'.\n" @@ -3223,7 +3340,7 @@ msgstr "" "wystÄ…pi\n" " błąd przekierowania." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3235,7 +3352,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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3248,7 +3365,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:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3307,7 +3424,7 @@ msgstr "" " Zwracana jest prawda lub stan wykonanego polecenia; wartość niezerowa\n" " w przypadku błędu." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3328,7 +3445,7 @@ msgstr "" " Stan zadania umieszczonego na pierwszym planie lub faÅ‚sz, jeÅ›li wystÄ…pi\n" " błąd." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3351,7 +3468,7 @@ msgstr "" " Zwracana jest prawda, chyba że sterowanie zadaniami nie jest włączone\n" " lub wystÄ…pi błąd." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3360,15 +3477,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3381,21 +3498,21 @@ msgstr "" " poleceniach.\n" " \n" " Opcje:\n" -" -d\t\tzapomnienie poÅ‚ożenia każdej NAZWY\n" -" -l\t\twypisanie w formacie do wykorzystania jako wejÅ›cie\n" +" -d\tzapomnienie poÅ‚ożenia każdej NAZWY\n" +" -l\twypisanie w formacie do wykorzystania jako wejÅ›cie\n" " -p Å›cieżka\tużycie ÅšCIEÅ»KI jako peÅ‚nej Å›cieżki NAZWY\n" -" -r\t\tzapomnienie wszystkich pamiÄ™tanych poÅ‚ożeÅ„\n" -" -t\t\twypisanie pamiÄ™tanych poÅ‚ożeÅ„ każdej NAZWY poprzedzajÄ…c\n" +" -r\tzapomnienie wszystkich pamiÄ™tanych poÅ‚ożeÅ„\n" +" -t\twypisanie pamiÄ™tanych poÅ‚ożeÅ„ każdej NAZWY poprzedzajÄ…c\n" " \t\tkażde poÅ‚ożenie odpowiedniÄ… NAZWÄ„, jeÅ›li podano wiele NAZW\n" " Argumenty:\n" -" NAZWA\t\tKażda nazwa jest wyszukiwana w $PATH i dodawana do listy\n" +" NAZWA\tKażda nazwa jest wyszukiwana w $PATH i dodawana do listy\n" " \t\tpamiÄ™tanych poleceÅ„.\n" " \n" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że nie znaleziono NAZWY lub podano błędnÄ…\n" " opcjÄ™." -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3407,7 +3524,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3427,7 +3544,7 @@ msgstr "" " -d\twypisanie krótkiego opisu każdego tematu\n" " -m\twyÅ›wietlenie sposobu użycia w formacie zbliżonym do stron man\n" " -s\twypisanie tylko krótkiej informacji o skÅ‚adni dla każdego\n" -" \ttematu pasujÄ…cego do WZORCA\n" +" \t\ttematu pasujÄ…cego do WZORCA\n" " \n" " Argumenty:\n" " WZORZEC\tWzorzec okreÅ›lajÄ…cy temat pomocy\n" @@ -3436,7 +3553,8 @@ msgstr "" " Zwracana jest prawda, chyba że WZORCA nie znaleziono lub podano błędnÄ…\n" " opcjÄ™." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3445,23 +3563,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3481,14 +3599,14 @@ msgstr "" " \n" " -a\tdołączenie linii historii z tej sesji do pliku historii\n" " -n\todczyt wszystkich jeszcze nie przeczytanych linii z pliku\n" -" \thistorii\n" +" \t\thistorii\n" " -r\todczyt pliku historii i dołączenie zawartoÅ›ci do listy historii\n" " -w\tzapis bieżącej historii do pliku historii\n" " \n" " -p\trozwiniÄ™cie wg historii każdego ARG i wypisanie wyniku bez\n" -" \tzapisywania go na liÅ›cie historii\n" +" \t\tzapisywania go na liÅ›cie historii\n" " -s\tdołączenie wszystkich ARG do listy historii jako pojedynczych\n" -" \twpisów\n" +" \t\twpisów\n" " \n" " JeÅ›li podano PLIK, jest używany jako plik historii. W przeciwnym " "wypadku\n" @@ -3505,8 +3623,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." -#: builtins.c:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3516,7 +3633,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3538,13 +3655,12 @@ msgstr "" " Opcje:\n" " -l\twypisanie dodatkowo numerów PID procesów\n" " -n\twypisanie tylko procesów, które zmieniÅ‚y stan od ostatniego\n" -" \tpowiadomienia\n" +" \t\tpowiadomienia\n" " -p\twypisanie tylko numerów PID procesów\n" " -r\tograniczenie wyjÅ›cia do zadaÅ„ dziaÅ‚ajÄ…cych\n" " -s\tograniczenie wyjÅ›cia do zadaÅ„ zatrzymanych\n" " \n" -" Przy podaniu -x, uruchamiane jet polecenie podane POLECENIE po " -"zastÄ…pieniu\n" +" Przy podaniu -x, uruchamiane jest podane POLECENIE po zastÄ…pieniu\n" " każdej z wystÄ™pujÄ…cych w argumentach ARG specyfikacji zadaÅ„ numerem PID\n" " procesu wiodÄ…cego danego zadania.\n" " \n" @@ -3552,7 +3668,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:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3562,7 +3678,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3576,13 +3692,14 @@ msgstr "" " Opcje:\n" " -a\tusuniÄ™cie wszystkich zadaÅ„, jeÅ›li nie podano ZADANIA\n" " -h\toznaczenie każdego zadania tak, że SIGHUP nie jest wysyÅ‚any do\n" -" \tzadania, jeÅ›li powÅ‚oka otrzyma SIGHUP\n" +" \t\tzadania, jeÅ›li powÅ‚oka otrzyma SIGHUP\n" " -r\tusuniÄ™cie tylko dziaÅ‚ajÄ…cych zadaÅ„\n" " \n" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub ZADANIE." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3594,7 +3711,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3614,7 +3732,8 @@ msgstr "" " -s SYG\tSYG jest nazwÄ… sygnaÅ‚u\n" " -n SYG\tSYG jest numerem sygnaÅ‚u\n" " -l\tlista nazw sygnałów; jeÅ›li `-l' wystÄ™puje z argumentami, sÄ… one\n" -" \ttraktowane jako numery sygnałów, dla których majÄ… być wypisane nazwy\n" +" \t\ttraktowane jako numery sygnałów, dla których majÄ… być wypisane " +"nazwy\n" " \n" " Kill jest poleceniem wewnÄ™trznym z dwóch powodów: umożliwia korzystanie\n" " z identyfikatorów zadaÅ„ zamiast numerów PID oraz, w przypadku " @@ -3625,7 +3744,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest sukces, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3714,7 +3833,7 @@ msgstr "" " JeÅ›li wartoÅ›ciÄ… ostatniego argumentu jest 0, let zwraca 1;\n" " w pozostaÅ‚ych przypadkach zwracane jest 0." -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3735,27 +3854,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3783,7 +3903,7 @@ msgstr "" " -d ogr\tkontynuacja do odczytu pierwszego znaku OGR zamiast znaku " "nowej\n" " \t\tlinii\n" -" -e\t\tużycie Readline'a do odczytania wiersza w powÅ‚oce interaktywnej\n" +" -e\tużycie Readline'a do odczytania wiersza w powÅ‚oce interaktywnej\n" " -o tekst\tużycie TEKSTU jako poczÄ…tkowego tekstu dla Readline'a\n" " -n liczba\tpowrót po odczycie LICZBY znaków zamiast oczekiwania na\n" " \t\tznak nowej linii; ogranicznik jest honorowany, jeÅ›li odczytano " @@ -3795,10 +3915,9 @@ msgstr "" " -p zachÄ™ta\twypisanie Å‚aÅ„cucha ZACHĘTY bez koÅ„cowego znaku nowej " "linii\n" " \t\tprzed próbÄ… odczytu\n" -" -r\t\twyłączenie interpretowania odwrotnych ukoÅ›ników jako " -"przedrostka\n" +" -r\twyłączenie interpretowania odwrotnych ukoÅ›ników jako przedrostka\n" " \t\tznaków specjalnych\n" -" -s\t\tbez wypisywania wejÅ›cia pochodzÄ…cego z terminala\n" +" -s\tbez wypisywania wejÅ›cia pochodzÄ…cego z terminala\n" " -t czas\tzakoÅ„czenie i zwrócenie niepowodzenia, jeÅ›li nie zostanie\n" " \t\todczytany caÅ‚y wiersz przed upÅ‚yniÄ™ciem podanego CZASU (w " "sekundach).\n" @@ -3806,8 +3925,7 @@ msgstr "" " \t\tuÅ‚amkowy. Przy wartoÅ›ci 0 odczyt powiedzie siÄ™ tylko wtedy, gdy\n" " \t\twejÅ›cie jest dostÄ™pne na podanym deskryptorze. Kod (stan) wyjÅ›ciowy\n" " \t\tw przypadku osiÄ…gniÄ™cia limitu czasu jest wiÄ™kszy niż 128\n" -" -u fd\t\todczyt z deskryptora pliku FD zamiast ze standardowego " -"wejÅ›cia\n" +" -u fd\todczyt z deskryptora pliku FD zamiast ze standardowego wejÅ›cia\n" " \n" " Stan wyjÅ›ciowy:\n" " Zwracana jest wartość 0, chyba że zostanie napotkany koniec pliku,\n" @@ -3815,7 +3933,7 @@ msgstr "" " błąd przypisania zmiennej albo podano nieprawidÅ‚owy deskryptor dla\n" " argumentu -u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3836,7 +3954,8 @@ msgstr "" " Zwracane jest N lub niepowodzenie, jeÅ›li powÅ‚oka nie wykonuje żadnej\n" " funkcji ani skryptu." -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3904,7 +4023,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4011,7 +4131,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że podano nieprawidÅ‚owÄ… opcjÄ™." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4021,7 +4141,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4040,7 +4160,7 @@ msgstr "" " -f\tpotraktowanie wszystkich NAZW jako funkcji powÅ‚oki\n" " -v\tpotraktowanie wszystkich NAZW jako zmiennych powÅ‚oki\n" " -n\tpotraktowanie wszystkich NAZW jako referencji do nazw\n" -" \ti anulowanie samej zmiennej zamiast tej, do której siÄ™ odnosi\n" +" \t\ti anulowanie samej zmiennej zamiast tej, do której siÄ™ odnosi\n" " \n" " Bez opcji unset próbuje najpierw anulować definicjÄ™ zmiennej, a jeÅ›li " "to\n" @@ -4053,7 +4173,7 @@ msgstr "" "do\n" " odczytu." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4088,7 +4208,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że podano nieprawidÅ‚owÄ… opcjÄ™ lub NAZWĘ." -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4100,9 +4220,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4122,14 +4241,14 @@ msgstr "" " -f\tdziaÅ‚anie na funkcjach powÅ‚oki\n" " -p\twyÅ›wietlenie listy wszystkich zmiennych lub funkcji tylko do " "odczytu,\n" -" w zależnoÅ›ci od tego, czy podano opcjÄ™ -f\n" +" \t\tw zależnoÅ›ci od tego, czy podano opcjÄ™ -f\n" " \n" " Argument `--' wyłącza dalsze przetwarzanie opcji.\n" " \n" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że podano nieprawidÅ‚owÄ… opcjÄ™ lub NAZWĘ." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4147,7 +4266,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że N jest ujemne lub wiÄ™ksze niż $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4172,7 +4291,7 @@ msgstr "" "jeÅ›li\n" " PLIKU nie udaÅ‚o siÄ™ odczytać." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4200,7 +4319,7 @@ msgstr "" "wystÄ…pi\n" " błąd." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4264,9 +4383,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4373,7 +4492,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:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4385,7 +4504,7 @@ msgstr "" " Jest to synonim dla wbudowanego polecenia \"test\", ale wymagajÄ…cy, by\n" " ostatnim argumentem byÅ‚ `]' pasujÄ…cy do poczÄ…tkowego `['." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4405,7 +4524,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zawsze prawda." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4490,7 +4609,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że podano błędny SYGNAÅ lub błędnÄ… opcjÄ™." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4499,18 +4618,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4526,19 +4645,19 @@ msgstr "" " \n" " Opcje:\n" " -a\twyÅ›wietlenie wszystkich poÅ‚ożeÅ„ zawierajÄ…cych program wykonywalny\n" -" \to podanej NAZWIE; obejmuje aliasy, polecenia wbudowane i funkcje " -"tylko\n" -" \tjeÅ›li nie podano dodatkowo opcji `-p'\n" +" \t\to podanej NAZWIE; obejmuje aliasy, polecenia wbudowane i funkcje\n" +" \t\ttylko jeÅ›li nie podano dodatkowo opcji `-p'\n" " -f\tpominiÄ™cie wyszukiwania funkcji powÅ‚oki\n" " -P\twymuszenie wyszukiwania w PATH każdej nazwy, nawet jeÅ›li jest\n" -" \taliasem, poleceniem wbudowanym lub funkcjÄ… i zwrócenie nazwy pliku na\n" -" \tdysku\n" +" \t\taliasem, poleceniem wbudowanym lub funkcjÄ… i zwrócenie nazwy pliku\n" +" \t\tna dysku\n" " -p\tzwrócenie nazwy pliku na dysku lub niczego, jeÅ›li `type -t NAZWA'\n" -" \tnie zwróciÅ‚oby `file'.\n" +" \t\tnie zwróciÅ‚oby `file'.\n" " -t\tzwrócenie pojedynczego sÅ‚owa: `alias', `keyword', `function',\n" -" \t`builtin', `file' lub `', jeÅ›li nazwa jest odpowiednio: aliasem,\n" -" \tzarezerwowanym sÅ‚owem kluczowym powÅ‚oki, funkcjÄ… powÅ‚oki, poleceniem\n" -" \twbudowanym powÅ‚oki, plikiem na dysku lub nie zostanie znaleziona\n" +" \t\t`builtin', `file' lub `', jeÅ›li nazwa jest odpowiednio: aliasem,\n" +" \t\tzarezerwowanym sÅ‚owem kluczowym powÅ‚oki, funkcjÄ… powÅ‚oki, " +"poleceniem\n" +" \t\twbudowanym powÅ‚oki, plikiem na dysku lub nie zostanie znaleziona\n" " \n" " Argumenty:\n" " NAZWA\tNazwa polecenia do zinterpretowania.\n" @@ -4548,7 +4667,7 @@ msgstr "" "jeÅ›li\n" " którakolwiek nie zostanie znaleziona." -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4566,6 +4685,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4577,7 +4697,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4611,6 +4732,8 @@ msgstr "" " -f\tmaksymalny rozmiar plików zapisywanych przez powÅ‚okÄ™ i jej " "potomków\n" " -i\tmaksymalna liczba oczekujÄ…cych sygnałów\n" +" -k\tmaksymalna liczba kolejek jÄ…dra (kqueue) przydzielonych dla " +"procesu\n" " -l\tmaksymalny rozmiar pamiÄ™ci, którÄ… proces może zablokować\n" " -m\tmaksymalny rozmiar obszaru rezydentnego procesu\n" " -n\tmaksymalna liczba otwartych deskryptorów plików\n" @@ -4623,6 +4746,7 @@ msgstr "" " -u\tmaksymalna liczba procesów użytkownika\n" " -v\trozmiar pamiÄ™ci wirtualnej\n" " -x\tmaksymalna liczba blokad plików\n" +" -P\tmaksymalna liczba pseudoterminali\n" " -T\tmaksymalna liczba wÄ…tków\n" " \n" " Nie wszystkie opcje sÄ… dostÄ™pne na wszystkich platformach.\n" @@ -4642,7 +4766,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4677,7 +4801,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędne uprawnienia lub błędnÄ… " "opcjÄ™." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4714,7 +4838,7 @@ msgstr "" " Zwracany jest stan zakoÅ„czenia ID; niepowodzenie, jeÅ›li ID jest\n" " nieprawidÅ‚owe lub podano błędnÄ… opcjÄ™." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4743,7 +4867,7 @@ msgstr "" "podano\n" " nieprawidÅ‚owÄ… opcjÄ™." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4766,7 +4890,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4796,7 +4920,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4833,7 +4957,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4863,7 +4987,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Polecenie zwraca status zakoÅ„czenia POTOKU poleceÅ„." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4881,7 +5005,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4917,7 +5041,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4935,7 +5059,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4953,7 +5077,8 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4963,7 +5088,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Utworzenie koprocesu o podanej NAZWIE.\n" " \n" @@ -4975,7 +5100,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest status zakoÅ„czenia POLECENIA." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -5000,7 +5125,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest sukces, chyba że NAZWA jest tylko do odczytu." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5018,7 +5143,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest status zakoÅ„czenia ostatniego wykonanego polecenia." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5044,7 +5169,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracany jest stan wznowionego zadania." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5064,7 +5189,7 @@ msgstr "" " Zwracane jest 1, jeÅ›li wartoÅ›ciÄ… WYRAÅ»ENIA jest 0; 0 w przeciwnym " "wypadku." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5119,7 +5244,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " 0 lub 1 w zależnoÅ›ci od wartoÅ›ci WYRAÅ»ENIA." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5227,7 +5352,7 @@ msgstr "" " \t\tdecydowaniu, które polecenia powinny być zapisywane na liÅ›cie\n" " \t\thistorii.\n" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5237,19 +5362,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5265,17 +5390,18 @@ msgstr "" " \n" " Opcje:\n" " -n\tPominiÄ™cie zmiany katalogu podczas umieszczania katalogów na\n" -" \tstosie tak, że zmieniany jest tylko stos.\n" +" \t\tstosie tak, że zmieniany jest tylko stos.\n" " \n" " Argumenty:\n" " +N\tRotacja stosu czyniÄ…ca jego wierzchoÅ‚kiem N-ty katalog (liczÄ…c\n" -" \tod lewej strony listy wypisywanej przez `dirs', poczÄ…wszy od zera).\n" +" \t\tod lewej strony listy wypisywanej przez `dirs', poczÄ…wszy od zera).\n" " \n" " -N\tRotacja stosu czyniÄ…ca jego wierzchoÅ‚kiem N-ty katalog (liczÄ…c\n" -" \tod prawej strony listy wypisywanej przez `dirs', poczÄ…wszy od zera).\n" +" \t\tod prawej strony listy wypisywanej przez `dirs', poczÄ…wszy od " +"zera).\n" " \n" " KATALOG\tUmieszczenie KATALOGU na wierzchoÅ‚ku stosu i uczynienie go\n" -" \tnowym bieżącym katalogiem roboczym.\n" +" \t\tnowym bieżącym katalogiem roboczym.\n" " \n" " Zawartość stosu katalogów można zobaczyć za pomocÄ… polecenia `dirs'.\n" " \n" @@ -5284,7 +5410,7 @@ msgstr "" "katalogu\n" " siÄ™ nie powiedzie." -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5293,16 +5419,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5318,16 +5444,16 @@ msgstr "" " \n" " Opcje:\n" " -n\tPominiÄ™cie zmiany katalogu podczas usuwania katalogów ze stosu\n" -" \ttak, że zmieniany jest tylko stos.\n" +" \t\ttak, że zmieniany jest tylko stos.\n" " \n" " Argumenty:\n" " +N\tUsuniÄ™cie ze stosu N-tej pozycji liczÄ…c od lewej strony listy\n" -" \twypisywanej przez `dirs', poczÄ…wszy od zera. Na przykÅ‚ad: `popd +0'\n" -" \tusuwa pierwszy katalog, `popd +1' usuwa drugi.\n" +" \t\twypisywanej przez `dirs', poczÄ…wszy od zera. Na przykÅ‚ad: `popd +0'\n" +" \t\tusuwa pierwszy katalog, `popd +1' usuwa drugi.\n" " \n" " -N\tUsuniÄ™cie ze stosu N-tej pozycji liczÄ…c od prawej strony listy\n" -" \twypisywanej przez `dirs', poczÄ…wszy od zera. Na przykÅ‚ad: `popd -0'\n" -" \tusuwa pierwszy katalog, `popd -1' usuwa drugi.\n" +" \t\twypisywanej przez `dirs', poczÄ…wszy od zera. Na przykÅ‚ad: `popd -0'\n" +" \t\tusuwa pierwszy katalog, `popd -1' usuwa drugi.\n" " \n" " Zawartość stosu katalogów można zobaczyć za pomocÄ… polecenia `dirs'.\n" " \n" @@ -5336,7 +5462,7 @@ msgstr "" "katalogu\n" " siÄ™ nie powiedzie." -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5347,19 +5473,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5373,24 +5499,24 @@ msgstr "" " \n" " Opcje:\n" " -c\twyczyszczenie stosu katalogów poprzez usuniÄ™cie wszystkich jego\n" -" \telementów\n" +" \t\telementów\n" " -l\tnieużywanie wersji skróconej wersji z tyldÄ… przy wypisywaniu\n" -" \tkatalogów wzglÄ™dem katalogu domowego\n" +" \t\tkatalogów wzglÄ™dem katalogu domowego\n" " -p\twypisanie katalogów ze stosu w osobnych wierszach\n" " -v\twypisanie katalogów ze stosu w osobnych wierszach, poprzedzajÄ…c\n" -" \tkażdy jego pozycjÄ… na stosie\n" +" \t\tkażdy jego pozycjÄ… na stosie\n" " \n" " Argumenty:\n" " +N\tWypisanie N-tej pozycji liczÄ…c od lewej strony listy wypisywanej\n" -" \tprzez dirs wywoÅ‚ane bez opcji, poczÄ…wszy od zera.\n" +" \t\tprzez dirs wywoÅ‚ane bez opcji, poczÄ…wszy od zera.\n" " \n" " -N\tWypisanie N-tej pozycji liczÄ…c od prawej strony listy wypisywanej\n" -" \tprzez dirs wywoÅ‚ane bez opcji, poczÄ…wszy od zera.\n" +" \t\tprzez dirs wywoÅ‚ane bez opcji, poczÄ…wszy od zera.\n" " \n" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5428,7 +5554,7 @@ msgstr "" "jeÅ›li\n" " podano błędnÄ… opcjÄ™ lub NAZWA-OPCJI jest wyłączona." -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5445,15 +5571,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5485,11 +5611,11 @@ msgstr "" " printf(3), printf interpretuje:\n" " \n" " %b\trozwiniÄ™cie sekwencji z odwrotnym ukoÅ›nikiem w odpowiadajÄ…cym\n" -" \targumencie\n" +" \t\targumencie\n" " %q\tcytowanie argumentu w sposób umożliwiajÄ…cy użycie na wejÅ›ciu\n" -" \tpowÅ‚oki\n" -" %(fmt)T wypisanie Å‚aÅ„cucha daty-czasu otrzymanego z użycia FMT jako\n" -" Å‚aÅ„cucha formatujÄ…cego dla strftime(3)\n" +" \t\tpowÅ‚oki\n" +" %(fmt)T\twypisanie Å‚aÅ„cucha daty-czasu otrzymanego z użycia FMT jako\n" +" \t Å‚aÅ„cucha formatujÄ…cego dla strftime(3)\n" " \n" " Format jest używany ponownie w razie potrzeby w celu pochÅ‚oniÄ™cia\n" " wszystkich argumentów. JeÅ›li argumentów jest mniej, niż wymaga format,\n" @@ -5500,7 +5626,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub zapis albo\n" " przypisanie zakoÅ„czy siÄ™ niepowodzeniem." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5513,11 +5639,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5536,11 +5662,11 @@ msgstr "" " Opcje:\n" " -p\twypisanie istniejÄ…cych dopeÅ‚nieÅ„ w formacie do ponownego użycia\n" " -r\tusuniÄ™cie specyfikacji dopeÅ‚niania dla każdej NAZWY lub, jeÅ›li\n" -" \tnie podano NAZW, wszystkich specyfikacji dopeÅ‚niania\n" +" \t\tnie podano NAZW, wszystkich specyfikacji dopeÅ‚niania\n" " -D\tstosowanie dopeÅ‚niania i akcji domyÅ›lnie dla poleceÅ„ bez\n" -" \tokreÅ›lonych żadnych konkretnych reguÅ‚ dopeÅ‚niania\n" +" \t\tokreÅ›lonych żadnych konkretnych reguÅ‚ dopeÅ‚niania\n" " -E\tstosowanie dopeÅ‚niania i akcji dla \"pustych\" poleceÅ„ -\n" -" \tpróby dopeÅ‚nienia w pustej linii\n" +" \t\tpróby dopeÅ‚nienia w pustej linii\n" " \n" " Przy próbie dopeÅ‚nienia akcje sÄ… wykonywane w kolejnoÅ›ci takiej, jak\n" " wielkie litery wymienione powyżej. Opcja -D ma priorytet nad -E.\n" @@ -5548,7 +5674,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5569,7 +5695,7 @@ msgstr "" " Stan wyjÅ›ciowy:\n" " Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub wystÄ…pi błąd." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5627,7 +5753,7 @@ msgstr "" " Zwracana jest prawda, chyba że podano błędnÄ… opcjÄ™ lub NAZWA nie ma\n" " zdefiniowanej specyfikacji dopeÅ‚niania." -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5638,20 +5764,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5674,18 +5801,20 @@ msgstr "" " jest domyÅ›lnÄ… TABLICÄ„.\n" " \n" " Opcje:\n" +" -d ogr\tUżycie OGRanicznika do koÅ„czenia linii zamiast znaku nowej " +"linii\n" " -n liczba\tSkopiowanie maksymalnie podanej LICZBY linii. JeÅ›li LICZBA\n" -" \twynosi 0, kopiowane sÄ… wszystkie linie.\n" +" \t\t\twynosi 0, kopiowane sÄ… wszystkie linie.\n" " -O poczÄ…tek\tRozpoczÄ™cie wpisywania do TABLICY od indeksu POCZÄ„TKU.\n" -" \tDomyÅ›lny indeks wynosi 0.\n" +" \t\t\tDomyÅ›lny indeks wynosi 0.\n" " -s liczba\tPominiÄ™cie pierwszych LICZBA odczytanych linii.\n" -" -t\t\tUsuniÄ™cie koÅ„cowego znaku koÅ„ca linii z każdej wczytanej linii.\n" -" -u fd\t\tOdczyt linii z deskryptora FD zamiast standardowego wejÅ›cia.\n" +" -t\tUsuniÄ™cie koÅ„cowego znaku koÅ„ca linii z każdej wczytanej linii.\n" +" -u fd\tOdczyt linii z deskryptora FD zamiast standardowego wejÅ›cia.\n" " -C wywoÅ‚anie\tObliczenie WYWOÅANIA po odczycie każdego CO-ILE linii.\n" -" -c CO-OLE\tLiczba linii do wczytania miÄ™dzy każdym WYWOÅANIEM.\n" +" -c co-ile\tLiczba linii do wczytania miÄ™dzy każdym WYWOÅANIEM.\n" " \n" " Argumenty:\n" -" TABLICA\t\tNazwa zmiennej tablicowej do użycia na dane z pliku.\n" +" TABLICA\tNazwa zmiennej tablicowej do użycia na dane z pliku.\n" " \n" " JeÅ›li podano -C bez -c, domyÅ›lnym krokiem jest 5000. Podczas obliczania\n" " WYWOÅANIA jest przekazywany indeks do nastÄ™pnego elementu tablicy, " @@ -5700,7 +5829,7 @@ msgstr "" "tylko\n" " do odczytu, lub nie jest tablicÄ… indeksowanÄ…." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5709,3 +5838,18 @@ msgstr "" "Odczyt linii z pliku do zmiennej tablicowej.\n" " \n" " Synonim polecenia `mapfile'." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index 610f4f929d357f78ca97507aacb88b86053ae2de..fd7eae62d024d92daf0c1815fd62405f793ccb00 100644 GIT binary patch literal 162582 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 xL2wf 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
    3. ExbVoP7Ltm?&cI2=3 zsNvOkVpTNqxW2vqwuk#n!q+PmhyY9&&C%JR6#)uK^JTcdx3`<=6~6|%YsF@Rg9$1s zB_||13KV5mU_8F-g6r=+tq$Vl#!?vg2P9nW>P= zA8$@3x~Q^S^3K^;d@aRi*S7B5zb~_LV`F2uI^AImTx9-MPuR+OmcL$Eq(2|-p8p=7 zu7o&^Yo7M6zx(2g-Y9_PuZAxVxTMPCh4YJXzW8Fe`dU|>!{?7;urIzSb6r_!brlp7 zT?N$*sMp-mfBv*A;Y+(w6&)&`cLx$0$NL8_220v_b6IM?;WIhW6tR9jc=pWaAJ@0G z&i}*a@cHvW2?c};41(~Rr_=nsMNDDSn1scY$4eXO_8W{J%z{5atBZ}N64~4{Acpj= zww?4XaicCw!P`->ASW|s#xsH%c#pWcLjDaM;mI8KlOd_2%0a$Xnx#htO0y?-Rmmgx zWwSf2P2FX?xf3q)&8+;TnigzDXZfr>j1Nm+m}5HO(&9eLC{WGu(wh|Wfgj}R&>06?%rLP^I|CZ1!f&Pe}-5&np_37#H z?Hf0~{r21IuO?^Lrzfv&WYFn`?Brj*H_$&X!pXh&;%sv8-3u%xIraPe!2656uMpni z3Akcp4PL$)J_{GD>N>zSpAW=2K%K+m*_%gOU;YXV8XdLA>h!~Yo-WasZ|s`Tr$`Cc zr<3Na%kv>WeAoQYKYT*-?qJC6drvpc|0C>rba#E^!Xoma<;j!$?fC%G8b_>DJFPS- zFt}xh<*I3Fk;Xm6Mk`V2vKQk(zv^fRYCx?27Dww!x!|AlzP5kh)P0iqddcB3VCQF zpAXPZbV?SIS^Dl^$>t!y!(A&KHfVXh*-HRvCzIW+S$IevffbLOCE$ZI%mNqPw>5_(* z1%FfKN|zLYS7?1g(k6TC27Zbg9Cbfj*t`r`!*--jZcoV3IUIjqbci2;Jt(3&7CG6A z1P~;SQqb^n;Xn+(dHhngu=BTzjvPto!609Mg@$5?UO~d>3yyoIU(O+KZGVE`SC@$) z`dnOYhp0KIr7hy+YuM=BF#2-AF!QUtU~N4v7EG)!%iDWD`bsWrGmi+-yD1<+roO}zf#${e=H6R6s&mOJaeJr!( z*$@2ekI&)i*HRX44L|urKMYa(cLqC>*bjbqHhRRrd(S0-|3-iB-iPsT6VE$l)le9$HXZZ zbNq4#40!d`*RwMQe>T!Bs8#^_{K4jDYY+7M-%)dH>&e*UdrBrCGyK{VkUDIY{UMF1uJ7W61)ddHykd|m9ECu?R*j^?+)^E z7Md(;J5a%DR<(0@ETZ{vLrdIv&d*##ta0S$ya`XS$|gkzhRi_}euBzS!>Eglt^rrXVNlZ3ShKo2c{J0%t;Nuwn{;9H?&(Ve z1h%EFfAj&pPGVSIT4$!67&m@MN!gGaMV2)hs~MY!AQWw0N(u9p?(vW{>)Ye&ZT6~E zAQHsvV#zCf*cDRosQ6PLOAe%7xf;SvrWp&~In=VF>J6U?H}WV?gC0UlA3mEWlrY0U z73fv=f&)M4fZ*^fhB{_7W3$P!k#EYV0W5;Dc5mL`e=ZZMG#MRt{n?pPT@-XOzh2f! z4&m9!477?CW3E(+mbeaR425}Zzx@xJ_!rh@&GJw$Juqq7#zg0rkVd&O-k zQ1@3PB_DF^QEY5*sW&17Bz|1qAk|?!AutT>h?hWRC^G^bOoU5mlnlxjUELV*^aJH` zfR(c{B3=~==63XvOpHPfs&@Fv@aXl6$;k5j&PmtmlgVxrRyq(eccwuM#oVY;4g~3)sd-m~s0-uoJuP{G1Y)Gn zPT%WTU7u#-{!;P+emA1v57%%I4RJ8uKcPhAZ-ayVih!TU!#ZicKEo^Yw&&K))d
      eGdo4prbO<&@_!w{GvazLBoS0~5LWtyH{*o=MMIlxaL&tciR3)>dm zUtUA`Ub~~B>D3>{qwZ@LtjgaIfMaPy{0%Wex^yuhW`hEB@dL$(;1KCu&nJt&IMlVI zCEUj8t<9r`VKM_>bOKJv7h9la*L^b8LFdbS_Gixr09R_#;pF&4bkaQ(k_k860N-RQ zozYXBtoaOaMf#^w(uY6jT0g#QJbkFo<>%*4dHA8^uoefZx{YK{RElgk$h%4kYKon| zH{cjmMf)J$!UU5VZx08YAtb`S4jazvk75fzr5`^z;>H2&|dp2D5E0_B=Qmf4%oYyyZpbU<-G=@B*wU zXQI-pZn5W=Ja~;pyfYYKbsxT{kVK4Hd@vFnSf|ZcOs?_IgvPdgMaFPn@DLAW61SDq z%q5_%I3R#c&tk7|qGLTvtu1#&irpcl;s!*0$=et8xn6vzFJkJr#_!$Lzx8TBeQEFY z?!nOkK4fLAS7(cN-KRWM-F#5va0*{_U!FH#N>Dk- z*RTKjyRKSx+#?_Xbx#!p#n_*Z zr_@-K8F>?E8ZB{=}N{wuNQnB14?p^vRhcD6l(rq%YUA z@1=~T&d98~$8?CC>4;Ex(1J5%rf-~cwDMLu@L``udnkkIa3V~so-ZJ9jE<`lU@}9u zN8eqA(W1z}#KTT3ryOLvHfd8mUQo_B8<*qlh_!}Z1mx__x=k*n3>eG}jS=`}20f@} zD(vnn5dyXimzd~Xz~6?7IFYmc?Q4i5;CY5?;ILRLP;`82+K_lNyy*-5zavb}0==cAj8eKniy#;h4V#8pZTyV>eJxy@vA zeYhdHfC(N<76XMoA`N$MvUl?8V2pZ?KckD)F_XDqBv`w9HJa_y?HdXXVOB*+fBb;x zM#XR>mP70a#5jHt84ff;-_0z z7rlvyl$|frAa`P3XkOs+-QNWsy3TX&s?#uZMBFd^8`(bYmUu3lT)!kr4@ z)5=$p{;?-r+UXt^wntdet`CTU^=9vd!~6eFXXmohMi4|%e~Pn97G7iv$|4~_MuHeA zNLg9nAX`QTVz5of=j2aw?yc^5xJQni4QQrcNz`Uok`QqVmx!%0IemWUmYQO$; zNBJ~B-5Kzw0t9Jl0}kOXLDUSdXND1p>enL;m zUWT_TvI(XZ$^A<72}n^d)vxe<4@Z4g7{$IxQ6TTjr`5)D$sfs>Jey(pqibctk&v?B zF@z|KI~I0mcAzH2+VvfUOulIA1pNEwbwvTvw;vsgLCeaggrWkD=rGT$<{;p0>7eIo z)2HiXv2~G`vUvDs&6?2=048&FgO#;=sG_tY?}tsdqZ~&uF(`J9$Gp7N-V>QC5i!zF zq2yRB+1$J=Pk3Vufi@lLvU(Llsoib?XxTk3hL3@PR@{)qRdy*f22L4>;6|BlLacn^ zT48pudL@$|CNQm5EX<&Qtl`hHcL|2Hzu8mSeZqj@nV6PA-w9k?^&|;tc&{*uw*9!3 zw`s`6!g9_AfpP*_%3`pVrbwjq@1>&xOZ*`#{sz*evXDO=ftziG+}qeq=6SviBSLq# zxJO_;J+CCQF0XjV^RtVyt1sgo824%sKbh(jT#P=CxGi`UalJnDWTTl%D(aF1_kLtBGpIlonDUZxa?F{Vg+ZfE@ z4`8Q2n3~s^*GqHYa7Paxv)!(1xMI7bRZ-g53)Z&HCo8Jj@!Y>Mb9YGPobr;lvKYXf zv)%Dr`kZeT1ajG>9;NjgoFvy)OE3B z3>_OlM43E7oJxv`28lh|AEfi~1>mK_H593#{-jK^%(}JrYoZvJ9Vjw+EJos%5__sk zMORIeg|=XuIvm6b@d#D}b5S|r>f{>F^oYDTeFrXmZeHp-v6dXi&D8|LqONjApw^M2 zqgsPVVO6`GE6VG0IHdKze;o}!g6eyfPG7*}dBgsgy~(6u9?*0`JeJr^{-3B@>2B@q zg9@2F7pNQ&5Kt_7wB1~(qq5cM9F(hy!jyN q2m!}_E?7paGcKZHyh&dB+b86xdPwoacG|=3n1?`R5JS1>dRg=ASX<2JR1mnt!Uge**j^?mrJo?w^D22cHLj z5&RCQ?|xk2`>rwOHtt73t+NV#7(5SZ{oezn*VEw7f?owM1D^-42VVex4*XVyZ-9t4 z?|}O5Dn8Qt4}d%}!=T>Z4qgrJukaA~KJJ&ntH5;-Q<*c>{RSvGPk=JrZ-bb^d;$C* z_$5&L{TitK{$ut0-@sqs{wJUXKZH_04NiiRHw8+M2SBaAQr#z@=52z~fWtTJH82A{deLP*^v!LST>!9rPT~Kzpip^+0HU4P58Sn~l9z<1h4AeU7pyKg2 ztNW+G&s~N*Q0qU8b9BBUQ0MtcQ0x6EDF40y&Vc_8*1%l|le~xdGYV#)=6?|!0iOl6 z{wpA#nEwPN_nHrtdEhos_e-GUo(E;OzX4^ZZ-bKec7-=^L#UZ?5Vg(z>V6s|WXvL{ zbsC`d^C&32J_AbLUxKpFOQ7ubT~PX6!KU^8gWwKuFR1uBQDGgF|Dy`egR;kypyq!W zM3ngkh>OkltM~s6@}GG>!i9Ulo#0VW=Qjtn{-YqSG@k{vkEcNC`DdWw@^3+%^M3*{ zg?R~7ocs{fcRvEP?zJc-xjR68Hwx~R8Ad_D?F&!<4e@iU<8@U`mwKZA%e{{u?D z8!ftm6QJZg0?H4c0e6940QZ5S z|23%Z{vOnM`!=Zg*RZ(kyaPNA-UWUf{9RCS^&)sD_jH3))@}1&b zzUf}Fn_`<3Fv#vDV}2;(lsCv?N57@lM}#(su;{xD+~<19ll zr0X1`&3Ke?FJth!nwwjz2bY72qsJIY_3W3y&FXgzoMJrAI8;3gK*gZ01B~k#hZ#Dj zH!(VlI~l*i=w8d!59Nek?LGvvf!{m$y~J3lo;8J6*LG$$No_5$Nhc4Jc*xk1Mv^+) zEZQB{95uJ>%qDFkh~p%;L6(KB*oLvq*Tc-74K|J5)`O$pbln*QZhc~O|a!L`u6&)e+d9IAQ^a){!}c`T z5)IajoR!JW%F3fdoRz8R`Nd^)K*gfm$W#=hZ9CFQ6WMyyRQDTUnioOTy>CQG#}y1Cml1B#CaGO&KyYM^3TXlVtV$-R+VSZg}L3?GzU?*l6Ejk0zPfo zPC`sz#fJ0e!`yq61ruJB=OvpQGWQ*nxK5GVW{?NA+Q5)m-t0Jgis!Y4 z-ND)&9hx1(98#H)%oN7_Y?mqqL@TFiP{pyWA|&De@o~KfBmCVxN*Pj)#ixn%*e?0_ zvo~MxU}v-UD8pn$W{#yTtY_!ukwXypgMBOuT5j@cHng%Wc2@05Y1UOcHa0f&e@w|5 zY1qkYI#hnTIhHxQV`sKQsWWm4haAItTS)ti)Kj{~PHef`V;&@TCTDG9onXR~4<$tz zPF<(ma#kc0vWPgtLV9zduXg@WXAPPyL zE42#Wi%U8U~YQ0+)lYv)PO(Vd>56&+hP^7LbOf4_ZE*`ZjkJ;+yD$_>o%>0ofQ%4Uh z*?s%;z`87Gm~KjDOUE}>yJ2Nly26=IrY5fn6-B#mL>=a?+n$}u&g_?L$HEPwg9O)vb$KVfDjJzrL`t?>#xYje?J_T<) zaJyn%bgB2=)S85gx*phPSM6G8SY6hP;!c`j7TuzY_o*s_e_cDb#V6USA-^iN2Taip zPP>!qE_ElHNyEoq+3O5cJDV$8kqFu$*_}3nve%$-@a+r*pRX+?iq|v~Y@TD%|GheF zNZ_c0Dsi4BJ|X(f%15N>Bxm`2jZ9f6?X_tyI0L4G8S|4>fR!5Yee7EjT-qFFMuIk) zPyP30k_uC##4vu%T*Op+bn3{gT_LU&-%B!%-M4C+$$&BGP@KsMj7LMTQd{HOO=`or zO6K5=4oE*Zw#>7!3sPIey!H(srcoXDu{S7Ua&V4TOxAEFJy5qJNP}#>Z-tz$$gXJ3 zRg;J6d-5b9Q^lL|qW4y23eH%xWk*|X*q%=_sFYBhX&roys&nkkS=x!g$hy!n3u*EQ zJF3k!YsZ~G3UUTI?im{&T68*mwIf+8Y}TfWR#sb1ChgF|{BmtZ3vmQ%2YkD_XME!J z+W4N@#Dtxgn4Gw?HokX!oQbtXSDyafJSL6rt&QJdCvKbEJAN-sOzpOz!$FqUmgy|A zNPYICy^qexZQ6yPu}*>K$lLiS+;CwU*t^#KyH2t{Y>g2>WA*go2%w{&MAepE(4Mr@ zX>dLy8^?Bm4HT`yalr11nw?rb-CqyR2Pt1F*ustA0vVIGlb@Vk96B<0WVUaV3G6XL zgcH0qRrg7H<#YM&P85XkK2@QV3V-+9(tPcXJNDjLo9Iv0w$@x)n~fWZda6l#M?K7k zPSoyoamgzt?fuh1o%}OCcIVjMp^DHHC87DjtBLqb*k*fe#diF5BXV+eun{zairgqq zX4#ucVgV_NI*?*DD!QUcb~7S5U4j!LlxU}Q;!KsV9492DpD)QylN1BlcqI)J|KY{N z7wv#PQ%eN4XnV?&dROTMtxX!9wwJ2gsx ze4lM~DOS%&p8qN&ihe|>Kk-V+x*Nn&5fP2%5^*Zl6||Bx=<%*O&$wibDKW5;Wx4IN z%OT#=F6pm^DWU6+-fD&3XMva+WC{|tNERV2$*#%nnV=(++L5jFY!r$Ww9&L5{yI|` zaqQZGS%UmVRI4aU%&7%f+OQmy%c>)@YQBi}40~3dfQ3<+B%rQ9_bZ!asaP^F{sn^c z3%gTe(L{S4GstN>%t%)9VB~y-`5(_wN+S2JufAO20}{(q zML8k|Q_pppZocS4;&rKv+`-8@2TfnH3QtY_soLUibBq>=7{d`INo8NJCS}+vYH6VT zlL3zUt~07iQfsWdrZ;uniuGk4X>^O=*krlp%mKNCaE^iM}q9bZ% z!FdYI@ucy(@?6*ZoNndqp7SBF7fy+j4Ih$Q=dIYO#e3Bi!-Tr^UETZO&8~skNMMz0 zw>#NywqGXjAJv++kE1lmc8|^Qa<<{31cr zN-RgNs%GjTx+TU`Jpxg>wXNvo@Z@5Q7(xZ3ov+Ou72}<+9hj;u-8XyquwB6@gXDN& z>hRR@#VMqTA0Jr!yZMqH>sOB*OVlOVakX4uy1`mX0uwu&_ z&deR0o0&Q=-{;Nq3;*!V*(Iwe@#g80W^dCzX|8Vjr1|3S zw~^**(#1&gc8x0bT=dxUpwE^{_ACqa0>oU5J=6Au6nKnWa%fqcPWzR9H1@c(I#Wtf zS@FFu_?JGK60vETjNG@UI*|Pv@oCB$U8lkaKJBwzuj7n;PhX{0eMTkXUyjA8{X|iU zRv2vO*T{nH5M$k@pY$w}tzxM3f|4TJN}%Q<()k6Z>i2vl z37, 2002. +# Rafael Fontenelle , 2015, 2016. # msgid "" msgstr "" -"Project-Id-Version: bash 2.0\n" +"Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-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" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2016-02-12 09:33-0200\n" +"Last-Translator: Rafael Fontenelle \n" +"Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 0.9.5\n" +"Language: pt_BR\n" +"X-Generator: Poedit 1.8.7\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" -msgstr "índice da matriz (array) incorreto" +msgstr "subscrito de array incorreto" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "" +msgstr "%s: impossível converter array indexado para associativo" -#: arrayfunc.c:539 -#, fuzzy, c-format +#: arrayfunc.c:578 +#, c-format msgid "%s: invalid associative array key" -msgstr "%c%c: opção incorreta" +msgstr "%s: chave de array associativo inválida" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s: impossível atribuir a índice não numérico" +msgstr "%s: impossível atribuir a índice não numérico" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "" +msgstr "%s: %s: deve usar subscrito ao atribuir um array associativo" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" -msgstr "%s: impossível criar: %s" +msgstr "%s: impossível criar: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" +"bash_execute_unix_command: impossível localizar mapa de teclas para comando" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "" +msgstr "%s: primeiro caractere não-espaço em branco não é `\"'" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" -msgstr "" +msgstr "sem `%c' de fechamento em %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" -msgstr "" +msgstr "%s faltando separador dois-pontos" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "expansão de chaves: impossível alocar memória para %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +msgstr "expansão de chaves: falha ao alocar memória para %d elementos" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "expansão de chaves: falha ao alocar memória para `%s'" -#: builtins/alias.def:132 -#, fuzzy, c-format +#: builtins/alias.def:133 +#, c-format msgid "`%s': invalid alias name" -msgstr "%c%c: opção incorreta" +msgstr "`%s': nome de apelido (alias) inválido" #: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" -msgstr "" +msgstr "edição de linha não habilitada" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" -msgstr "" +msgstr "`%s': nome de mapa de teclas inválido" -#: builtins/bind.def:251 -#, fuzzy, c-format -msgid "%s: cannot read: %s" -msgstr "%s: impossível criar: %s" - -#: builtins/bind.def:266 -#, fuzzy, c-format -msgid "`%s': cannot unbind" -msgstr "%s: comando não encontrado" - -#: builtins/bind.def:304 builtins/bind.def:334 -#, fuzzy, c-format -msgid "`%s': unknown function name" -msgstr "%s: função somente para leitura" - -#: builtins/bind.def:312 +#: builtins/bind.def:253 #, c-format -msgid "%s is not bound to any keys.\n" -msgstr "" +msgid "%s: cannot read: %s" +msgstr "%s: impossível ler: %s" + +#: builtins/bind.def:270 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': impossível desassociar (unbind)" + +#: builtins/bind.def:308 builtins/bind.def:338 +#, c-format +msgid "`%s': unknown function name" +msgstr "`%s': nome de função desconhecida" #: builtins/bind.def:316 #, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s não está associada a qualquer tecla.\n" + +#: builtins/bind.def:320 +#, c-format msgid "%s can be invoked via " -msgstr "" +msgstr "%s pode ser chamado via " -#: builtins/break.def:77 builtins/break.def:117 -#, fuzzy +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" -msgstr "logout" +msgstr "número de loops" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "" +msgstr "significativo apenas em um loop de `for', `while' ou `until'" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" " Without EXPR, returns " msgstr "" +"Retorna o contexto da chamada de sub-rotina atual.\n" +" \n" +" Sem EXPR, retorna " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" -msgstr "" +msgstr "HOME não definida" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" -msgstr "número excessivo de argumentos" +msgstr "número excessivo de argumentos" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "\t\tencontrado no diretório atual." + +#: builtins/cd.def:347 msgid "OLDPWD not set" -msgstr "" +msgstr "OLDPWD não definida" -#: builtins/common.c:101 -#, fuzzy, c-format +#: builtins/common.c:102 +#, c-format msgid "line %d: " -msgstr "encaixe (slot) %3d: " +msgstr "linha %d: " -#: builtins/common.c:139 error.c:265 -#, fuzzy, c-format +#: builtins/common.c:140 error.c:265 +#, c-format msgid "warning: " -msgstr "escrevendo" +msgstr "aviso: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " -msgstr "" +msgstr "%s: uso: " -#: builtins/common.c:191 shell.c:506 shell.c:788 -#, fuzzy, c-format +#: builtins/common.c:199 shell.c:514 shell.c:825 +#, c-format msgid "%s: option requires an argument" -msgstr "a opção requer um argumento: -" +msgstr "%s: a opção requer um argumento" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" -msgstr "" +msgstr "%s: requer argumento numérico" -#: builtins/common.c:205 -#, fuzzy, c-format +#: builtins/common.c:213 +#, c-format msgid "%s: not found" -msgstr "%s: comando não encontrado" +msgstr "%s: não encontrado" -#: builtins/common.c:214 shell.c:801 -#, fuzzy, c-format +#: builtins/common.c:222 shell.c:838 +#, c-format msgid "%s: invalid option" -msgstr "%c%c: opção incorreta" +msgstr "%s: opção inválida" -#: builtins/common.c:221 -#, fuzzy, c-format +#: builtins/common.c:229 +#, c-format msgid "%s: invalid option name" -msgstr "%c%c: opção incorreta" +msgstr "%s: nome de opção inválido" -#: builtins/common.c:228 general.c:235 general.c:240 -#, fuzzy, c-format +#: builtins/common.c:236 general.c:293 general.c:298 +#, c-format msgid "`%s': not a valid identifier" -msgstr "`%s' não é um identificador válido" +msgstr "`%s': não é um identificador válido" -#: builtins/common.c:238 -#, fuzzy +#: builtins/common.c:246 msgid "invalid octal number" -msgstr "número do sinal incorreto" +msgstr "número octal inválido" -#: builtins/common.c:240 -#, fuzzy +#: builtins/common.c:248 msgid "invalid hex number" -msgstr "número do sinal incorreto" +msgstr "número do hexa inválido" -#: builtins/common.c:242 expr.c:1470 -#, fuzzy +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" -msgstr "número do sinal incorreto" +msgstr "número inválido" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" -msgstr "" +msgstr "%s: especificação de sinal inválida" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" +"`%s': não é um identificador de processo (pid) nem é uma especificação de " +"trabalho válida" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" -msgstr "%s: a variável permite somente leitura" +msgstr "%s: a variável permite somente leitura" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" -msgstr "" +msgstr "%s: %s fora dos limites" -#: builtins/common.c:272 builtins/common.c:274 -#, fuzzy +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" -msgstr "esperado argumento" - -#: builtins/common.c:274 -#, c-format -msgid "%s out of range" -msgstr "" +msgstr "argumento" #: builtins/common.c:282 #, c-format -msgid "%s: no such job" -msgstr "" +msgid "%s out of range" +msgstr "%s fora dos limites" #: builtins/common.c:290 -#, fuzzy, c-format +#, c-format +msgid "%s: no such job" +msgstr "%s: trabalho não existe" + +#: builtins/common.c:298 +#, c-format msgid "%s: no job control" -msgstr "nenhum controle de trabalho nesta `shell'" +msgstr "%s: nenhum controle de trabalho" -#: builtins/common.c:292 -#, fuzzy +#: builtins/common.c:300 msgid "no job control" -msgstr "nenhum controle de trabalho nesta `shell'" +msgstr "nenhum controle de trabalho" -#: builtins/common.c:302 -#, fuzzy, c-format +#: builtins/common.c:310 +#, c-format msgid "%s: restricted" -msgstr "%s: o trabalho terminou" - -#: builtins/common.c:304 -#, fuzzy -msgid "restricted" -msgstr "Terminado" +msgstr "%s: restrição" #: builtins/common.c:312 +msgid "restricted" +msgstr "restrição" + +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" -msgstr "" - -#: builtins/common.c:321 -#, fuzzy, c-format -msgid "write error: %s" -msgstr "erro de `pipe': %s" +msgstr "%s: não é um comando interno do shell" #: builtins/common.c:329 #, c-format -msgid "error setting terminal attributes: %s" -msgstr "" +msgid "write error: %s" +msgstr "erro de escrita: %s" -#: builtins/common.c:331 +#: builtins/common.c:337 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "erro ao definir atributos do terminal: %s" + +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" -msgstr "" +msgstr "erro ao obter atributos do terminal: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "" +msgstr "%s: erro ao obter o diretório atual: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 -#, fuzzy, c-format +#: builtins/common.c:651 builtins/common.c:653 +#, c-format msgid "%s: ambiguous job spec" -msgstr "%s: Redirecionamento ambíguo" +msgstr "%s: especificação de trabalho ambígua" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "ajuda não disponível nesta versão" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" -msgstr "" +msgstr "%s: nome de ação inválido" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" -msgstr "" - -#: builtins/complete.def:697 -msgid "warning: -F option may not work as you expect" -msgstr "" +msgstr "%s: nenhuma especificação de completação" #: builtins/complete.def:699 +msgid "warning: -F option may not work as you expect" +msgstr "aviso: a opção -F pode não funcionar como esperado" + +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" -msgstr "" +msgstr "aviso: a opção -C pode não funcionar como esperado" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" -msgstr "" +msgstr "não se está executando atualmente função de completação" -#: builtins/declare.def:126 -#, fuzzy +#: builtins/declare.def:127 msgid "can only be used in a function" -msgstr "somente pode ser usado dentro de funções; faz com que o escopo visível" +msgstr "somente pode ser usado em uma função" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: variável de referência não pode ser um array" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: referência a si próprio da variável nameref não é permitido" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s referência circular de nome" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: nome de variável inválido para referência de nome" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" -msgstr "" +msgstr "impossível usar `-f' para criar funções" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" -msgstr "%s: função somente para leitura" +msgstr "%s: função somente para leitura" -#: builtins/declare.def:553 -#, fuzzy, c-format +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: atribuição de array composto com aspas está obsoleto" + +#: builtins/declare.def:767 +#, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "$%s: impossível atribuir desta maneira" +msgstr "%s: impossível destruir variáveis de array desta maneira" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "" +msgstr "%s: impossível converter array associativo para indexado" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" -msgstr "" +msgstr "carregamento dinâmico não está disponível" -#: builtins/enable.def:312 -#, fuzzy, c-format +#: builtins/enable.def:343 +#, c-format msgid "cannot open shared object %s: %s" -msgstr "impossível abrir o `named pipe' %s para %s: %s" +msgstr "impossível abrir objeto compartilhado %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" -msgstr "" +msgstr "impossível localizar %s no objeto compartilhado %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "função de carregamento para %s retorna falha (%d): não foi carregada" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" -msgstr "" +msgstr "%s: não foi carregado dinamicamente" -#: builtins/enable.def:474 -#, fuzzy, c-format +#: builtins/enable.def:538 +#, c-format msgid "%s: cannot delete: %s" -msgstr "%s: impossível criar: %s" +msgstr "%s: impossível excluir: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" -msgstr "%s: é um diretório" +msgstr "%s: é um diretório" -#: builtins/evalfile.c:146 -#, fuzzy, c-format +#: builtins/evalfile.c:150 +#, c-format msgid "%s: not a regular file" -msgstr "%s: impossível executar o arquivo binário" +msgstr "%s: não é um arquivo irregular" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" -msgstr "" +msgstr "%s: arquivo é muito grande" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" -msgstr "%s: impossível executar o arquivo binário" +msgstr "%s: impossível executar o arquivo binário" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 -#, fuzzy, c-format +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 +#, c-format msgid "%s: cannot execute: %s" -msgstr "%s: impossível criar: %s" +msgstr "%s: impossível executar: %s" -#: builtins/exit.def:65 -#, fuzzy, c-format +#: builtins/exit.def:67 +#, c-format msgid "logout\n" -msgstr "logout" +msgstr "sair\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" -msgstr "" +msgstr "não é um shell de login: use `exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" -msgstr "" +msgstr "Há trabalhos parados.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" -msgstr "" +msgstr "Há trabalhos em execução.\n" -#: builtins/fc.def:262 -#, fuzzy +#: builtins/fc.def:269 msgid "no command found" -msgstr "%s: comando não encontrado" +msgstr "nenhum comando encontrado" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" -msgstr "" +msgstr "especificação do histórico" -#: builtins/fc.def:390 -#, fuzzy, c-format +#: builtins/fc.def:397 +#, c-format msgid "%s: cannot open temp file: %s" -msgstr "%s: impossível criar: %s" +msgstr "%s: impossível abrir arquivo temporário: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" -msgstr "" +msgstr "atual" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" -msgstr "" +msgstr "o trabalho %d iniciou sem controle de trabalho" #: builtins/getopt.c:110 -#, fuzzy, c-format +#, c-format msgid "%s: illegal option -- %c\n" -msgstr "Opção ilegal: -" +msgstr "%s: opção ilegal -- %c\n" #: builtins/getopt.c:111 -#, fuzzy, c-format +#, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "a opção requer um argumento: -" +msgstr "%s: a opção requer um argumento: -- %c\n" #: builtins/hash.def:92 msgid "hashing disabled" -msgstr "" +msgstr "hashing está desabilitado" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" -msgstr "" +msgstr "%s: tabela de hash está vazia\n" -#: builtins/hash.def:245 -#, fuzzy, c-format +#: builtins/hash.def:254 +#, c-format msgid "hits\tcommand\n" -msgstr "`r', o último comando seja executado novamente." +msgstr "número\tcomando\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Comandos shell correspondendo à palavra-chave `" +msgstr[1] "Comandos shell correspondendo às palavras-chave `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" +"nenhum tópico de ajuda corresponde a `%s'. Tente `help help' ou `man -k %s' " +"ou `info %s'." -#: builtins/help.def:199 -#, fuzzy, c-format +#: builtins/help.def:226 +#, c-format msgid "%s: cannot open: %s" -msgstr "%s: impossível criar: %s" +msgstr "%s: impossível abrir: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -493,141 +531,151 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" +"Esses comandos shell são definidos internamente. Digite `help' para ver " +"essa\n" +"lista. Digite `help NOME' para descobrir mais sobre a função `NOME'.\n" +"Use `info bash' para descobrir mais sobre o shell em geral.\n" +"Use `man -k' ou `info' para descobrir mais sobre comandos que não estão " +"nesta\n" +"lista.\n" +"\n" +"Um asterisco (*) próximo ao nome significa que o comando está desabilitado.\n" +"\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" -msgstr "" +msgstr "impossível usar mais de um dentre -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" -msgstr "" +msgstr "posição no histórico" -#: builtins/history.def:366 +#: builtins/history.def:264 #, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s argumento inválido" + +#: builtins/history.def:375 +#, c-format msgid "%s: history expansion failed" -msgstr "%s: esperado expressão de número inteiro" +msgstr "%s: expansão do histórico falhou" #: builtins/inlib.def:71 -#, fuzzy, c-format +#, c-format msgid "%s: inlib failed" -msgstr "%s: esperado expressão de número inteiro" +msgstr "%s: inlib falhou" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "" +msgstr "nenhuma outra opção permitida com `-x'" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "" +msgstr "%s: argumentos devem ser IDs de trabalhos ou processo" -#: builtins/kill.def:263 -#, fuzzy +#: builtins/kill.def:265 msgid "Unknown error" -msgstr "Erro desconhecido %d" +msgstr "Erro desconhecido" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" -msgstr "esperado uma expressão" +msgstr "esperava uma expressão" -#: builtins/mapfile.def:172 -#, fuzzy, c-format +#: builtins/mapfile.def:178 +#, c-format msgid "%s: not an indexed array" -msgstr "%s: variável não vinculada" +msgstr "%s: não é um array indexado" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "" +msgstr "%s: especificação de descritor de arquivo inválida" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "" +msgstr "%d: descritor de arquivo inválido: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 -#, fuzzy, c-format +#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#, c-format msgid "%s: invalid line count" -msgstr "%c%c: opção incorreta" +msgstr "%s: número de linhas inválido" -#: builtins/mapfile.def:287 -#, fuzzy, c-format +#: builtins/mapfile.def:300 +#, c-format msgid "%s: invalid array origin" -msgstr "%c%c: opção incorreta" +msgstr "%s: origem do array inválido" -#: builtins/mapfile.def:304 -#, fuzzy, c-format +#: builtins/mapfile.def:317 +#, c-format msgid "%s: invalid callback quantum" -msgstr "número do sinal incorreto" +msgstr "%s: quantidade de chamadas inválida" -#: builtins/mapfile.def:336 -#, fuzzy +#: builtins/mapfile.def:350 msgid "empty array variable name" -msgstr "%s: variável não vinculada" +msgstr "nome de variável array vazio" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" -msgstr "" +msgstr "requer suporte a variável de array" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" -msgstr "" +msgstr "`%s': faltando caractere de formato" -#: builtins/printf.def:456 -#, fuzzy, c-format +#: builtins/printf.def:467 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%c%c: opção incorreta" +msgstr "`%c': especificação de formato de tempo inválida" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" -msgstr "" +msgstr "`%c': caractere de formato inválido" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" -msgstr "" +msgstr "aviso: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "problema ao analisar formato: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" -msgstr "" +msgstr "faltando dígito hexa para \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" -msgstr "" +msgstr "faltando dígito unicode para \\%c" -#: builtins/pushd.def:195 -#, fuzzy +#: builtins/pushd.def:199 msgid "no other directory" -msgstr "o novo diretório que ocupa o topo da pilha." +msgstr "nenhum outro diretório" -#: builtins/pushd.def:354 -#, fuzzy, c-format +#: builtins/pushd.def:360 +#, c-format msgid "%s: invalid argument" -msgstr "%c%c: opção incorreta" +msgstr "%s argumento inválido" -#: builtins/pushd.def:468 -#, fuzzy +#: builtins/pushd.def:475 msgid "" -msgstr "\tnovo diretório atual de trabalho." +msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" -msgstr "" +msgstr "pilha de diretórios está vazia" -#: builtins/pushd.def:514 -#, fuzzy +#: builtins/pushd.def:521 msgid "directory stack index" -msgstr "Estouro na base da pilha de recursividade" +msgstr "índice de pilha de diretórios" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -650,8 +698,26 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" +"Exibe a lista de diretórios atualmente memorizados. Diretórios são\n" +" inseridos na lista por meio do comando `pushd'; você pode obter\n" +" de volta da lista com o comando `popd'.\n" +" \n" +" Opções:\n" +" -c\tlimpa a pilha de diretórios excluindo todos os elementos\n" +" -l\tnão mostra versões de diretórios prefixadas por til,\n" +" \t\trelativos ao seu diretório HOME\n" +" -p\texibe a pilha de diretório com uma entrada por linha\n" +" -v\texibe a pilha de diretório com uma entrada por linha,\n" +" \t\tprefixada com sua posição na pilha\n" +" \n" +" Argumentos:\n" +" +N\tExibe a n-ésima entrada a partir da esquerda da linha\n" +" \t\tmostrada por `dirs' chamado sem opções, iniciando com zero.\n" +" \n" +" -N\tExibe a n-ésima entrada a partir da esquerda da linha\n" +" \t\tmostrada por `dirs' chamado sem opções, iniciando com zero." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -675,8 +741,30 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"Adiciona um diretório ao topo da pilha de diretórios ou movimenta\n" +" a pilha, fazendo o novo topo da pilha ser o diretório atual de\n" +" trabalho. Com nenhum argumento, efetua troca do topo entre dois\n" +" diretórios.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de diretório ao adicionar\n" +" \t\tdiretórios à pilha, de forma que apenas a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tMovimenta a pilha de forma que o n-ésimo diretório (a contar\n" +" \t\tda esquerda da lista mostrada por `dirs', iniciando com zero)\n" +" \t\testá no topo.\n" +" \n" +" -N\tMovimenta a pilha de forma que o n-ésimo diretório (a contar\n" +" \t\tda direita da lista mostrada por `dirs', iniciando com zero)\n" +" \t\testá no topo.\n" +" \n" +" dir\tAdiciona DIR à pilha de diretórios no topo, fazendo dele o\n" +" \t\tnovo diretório de trabalho atual.\n" +" \n" +" O comando interno `dirs' exibe a pilha de diretórios." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -696,885 +784,961 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"Remove entradas da pilha de diretórios. Com nenhum argumento, remove\n" +" o diretório do topo da pilha e altera o novo diretório do topo.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de diretório ao remover\n" +" \t\tdiretórios da pilha, de forma que apenas a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRemove a n-ésima entrada a contar da esquerda da lista\n" +" \t\tmostrada por `dirs', iniciando com zero. Ex.: `popd +0'\n" +" \t\tremove o primeiro diretório e `popd +1', o segundo.\n" +" \n" +" -N\tRemove a n-ésima entrada a contar da direita da lista\n" +" \t\tmostrada por `dirs', iniciando com zero. Ex.: `popd +0'\n" +" \t\tremove o último diretório e `popd -1', o penúltimo.\n" +" \n" +" O comando interno `dirs' exibe a pilha de diretório." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" -msgstr "" +msgstr "%s: especificação de tempo limite inválida" -#: builtins/read.def:678 -#, fuzzy, c-format +#: builtins/read.def:696 +#, c-format msgid "read error: %d: %s" -msgstr "erro de `pipe': %s" +msgstr "erro de leitura: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" +"possível retornar (`return') apenas de uma função ou script carregado (com " +"`source')" -#: builtins/set.def:782 -#, fuzzy +#: builtins/set.def:841 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" +msgstr "" +"impossível simultaneamente remover definição de uma função e uma variável" -#: builtins/set.def:826 -#, fuzzy, c-format +#: builtins/set.def:888 +#, c-format msgid "%s: cannot unset" -msgstr "%s: impossível criar: %s" +msgstr "%s: impossível remover definição" -#: builtins/set.def:843 -#, fuzzy, c-format +#: builtins/set.def:909 variables.c:3389 +#, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: impossível criar: %s" +msgstr "%s: impossível remover definição: %s somente-leitura" -#: builtins/set.def:854 -#, fuzzy, c-format +#: builtins/set.def:922 +#, c-format msgid "%s: not an array variable" -msgstr "%s: variável não vinculada" +msgstr "%s: não é uma variável array" -#: builtins/setattr.def:187 -#, fuzzy, c-format +#: builtins/setattr.def:191 +#, c-format msgid "%s: not a function" -msgstr "%s: função somente para leitura" +msgstr "%s: não é uma função" -#: builtins/shift.def:71 builtins/shift.def:77 -#, fuzzy +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: impossível exportar" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "shift [n]" +msgstr "número de shift" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "" +"impossível simultaneamente definir e remover definição de opções do shell" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" -msgstr "" +msgstr "%s: nome de opção de shell inválido" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" -msgstr "" +msgstr "requer argumento arquivo" -#: builtins/source.def:155 -#, fuzzy, c-format +#: builtins/source.def:157 +#, c-format msgid "%s: file not found" -msgstr "%s: comando não encontrado" +msgstr "%s: arquivo não encontrado" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" -msgstr "" +msgstr "impossível suspender" -#: builtins/suspend.def:111 -#, fuzzy +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" -msgstr "Sair de uma shell de login." +msgstr "impossível suspender um shell de login." -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "" +msgstr "%s está apelidada para `%s'\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" -msgstr "" +msgstr "%s é uma palavra-chave do shell\n" -#: builtins/type.def:274 -#, fuzzy, c-format +#: builtins/type.def:276 +#, c-format msgid "%s is a function\n" -msgstr "%s: função somente para leitura" +msgstr "%s é uma função\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s é um comando interno especial do shell\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" -msgstr "" +msgstr "%s é um comando interno do shell\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" -msgstr "" +msgstr "%s é %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" -msgstr "" +msgstr "%s está na tabela hash (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" -msgstr "" +msgstr "%s: argumento limite inválido" -#: builtins/ulimit.def:409 -#, fuzzy, c-format +#: builtins/ulimit.def:424 +#, c-format msgid "`%c': bad command" -msgstr "%c%c: opção incorreta" +msgstr "`%c': comando incorreto" -#: builtins/ulimit.def:438 -#, fuzzy, c-format +#: builtins/ulimit.def:453 +#, c-format msgid "%s: cannot get limit: %s" -msgstr "%s: impossível criar: %s" +msgstr "%s: impossível obter limite: %s" -#: builtins/ulimit.def:464 -#, fuzzy +#: builtins/ulimit.def:479 msgid "limit" -msgstr "Tempo limite de CPU excedido" +msgstr "limite" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 -#, fuzzy, c-format +#: builtins/ulimit.def:491 builtins/ulimit.def:791 +#, c-format msgid "%s: cannot modify limit: %s" -msgstr "%s: impossível criar: %s" +msgstr "%s: impossível modificar limite: %s" -#: builtins/umask.def:114 -#, fuzzy +#: builtins/umask.def:115 msgid "octal number" -msgstr "número do sinal incorreto" +msgstr "número octal" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "" +msgstr "`%c': operador de modo simbólico inválido" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "" +msgstr "`%c': caractere de modo simbólico inválido" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " -msgstr "" +msgstr " linha " #: error.c:165 -#, fuzzy, c-format +#, c-format msgid "last command: %s\n" -msgstr "`r', o último comando seja executado novamente." +msgstr "último comando: %s\n" #: error.c:173 #, c-format msgid "Aborting..." -msgstr "" +msgstr "Abortando..." -#: error.c:440 -#, fuzzy +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORM: " + +#: error.c:463 msgid "unknown command error" -msgstr "Erro desconhecido %d" +msgstr "erro de comando desconhecido" -#: error.c:441 -#, fuzzy +#: error.c:464 msgid "bad command type" -msgstr "usado como nome de um comando." +msgstr "tipo de comando incorreto" -#: error.c:442 -#, fuzzy +#: error.c:465 msgid "bad connector" -msgstr "conector incorreto `%d'" +msgstr "conector incorreto" -#: error.c:443 -#, fuzzy +#: error.c:466 msgid "bad jump" -msgstr "Desvio incorreto %d" +msgstr "desvio incorreto" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" -msgstr "%s: variável não vinculada" +msgstr "%s: variável não associada" -#: eval.c:189 -#, fuzzy, c-format +#: eval.c:209 +#, 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" +"\atempo limite de espera excedido aguardando entrada: fim automático da " +"sessão\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "" +msgstr "impossível redirecionar a entrada padrão para /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: `%c': caractere de formato inválido" + +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2287 -#, fuzzy +#: execute_cmd.c:2377 msgid "pipe error" -msgstr "erro de `pipe': %s" +msgstr "erro de `pipe'" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: excedido o nível máximo de aninhamento de `eval' (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: excedido o nível máximo de aninhamento de `function' (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: excedido o nível máximo de aninhamento de avaliação (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos" +msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" -msgstr "%s: comando não encontrado" +msgstr "%s: comando não encontrado" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" -msgstr "" +msgstr "%s: %s" -#: execute_cmd.c:5243 -#, fuzzy, c-format +#: execute_cmd.c:5508 +#, c-format msgid "%s: %s: bad interpreter" -msgstr "%s: é um diretório" +msgstr "%s: %s: interpretador incorreto" -#: execute_cmd.c:5280 -#, fuzzy, c-format +#: execute_cmd.c:5545 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: impossível executar o arquivo binário" +msgstr "%s: impossível executar o arquivo binário: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" -msgstr "" +msgstr "`%s': é um comando interno especial" -#: execute_cmd.c:5404 -#, fuzzy, c-format +#: execute_cmd.c:5675 +#, c-format msgid "cannot duplicate fd %d to fd %d" -msgstr "impossível duplicar fd (descritor de arquivo) %d para fd 0: %s" +msgstr "impossível duplicar fd (descritor de arquivo) %d para fd %d" #: expr.c:259 msgid "expression recursion level exceeded" -msgstr "excedido o nível de recursividade da expressão" +msgstr "excedido o nível de recursividade da expressão" #: expr.c:283 -#, fuzzy msgid "recursion stack underflow" -msgstr "Estouro na base da pilha de recursividade" +msgstr "esvaziamento de pilha de recursão" #: expr.c:431 msgid "syntax error in expression" -msgstr "erro de sintaxe na expressão" +msgstr "erro de sintaxe na expressão" #: expr.c:475 msgid "attempted assignment to non-variable" -msgstr "tentativa de atribuição para algo que não é uma variável" +msgstr "tentativa de atribuição para algo que não é uma variável" #: expr.c:495 expr.c:858 msgid "division by 0" -msgstr "divisão por 0" +msgstr "divisão por 0" #: expr.c:542 -#, fuzzy msgid "bug: bad expassign token" -msgstr "Erro de programação: `token' inválido `%d' passado para expassign()" +msgstr "erro de programação: token incorreto passado para expassign()" #: expr.c:595 msgid "`:' expected for conditional expression" -msgstr "`:' esperado para expressão condicional" +msgstr "esperava `:' para expressão condicional" #: expr.c:919 msgid "exponent less than 0" -msgstr "" +msgstr "exponente menor que 0" #: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "" +msgstr "esperava identificador após pré-acréscimo ou pré-decréscimo" #: expr.c:1002 msgid "missing `)'" msgstr "faltando `)'" -#: expr.c:1053 expr.c:1390 -#, fuzzy +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" -msgstr "erro de sintaxe: fim prematuro do arquivo" +msgstr "erro de sintaxe: esperava operando" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" -msgstr "" +msgstr "erro de sintaxe: operador aritmético inválido" -#: expr.c:1416 -#, fuzzy, c-format +#: expr.c:1419 +#, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s: %s: %s (erro: o `token' é \"%s\")\n" +msgstr "%s%s%s: %s (token de erro é \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" -msgstr "" +msgstr "base aritmética inválida" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" -msgstr "valor muito grande para esta base de numeração" +msgstr "valor muito grande para esta base de numeração" -#: expr.c:1543 -#, fuzzy, c-format +#: expr.c:1546 +#, c-format msgid "%s: expression error\n" -msgstr "%s: esperado expressão de número inteiro" +msgstr "%s: erro de expressão\n" -#: general.c:62 -#, fuzzy +#: general.c:68 msgid "getcwd: cannot access parent directories" -msgstr "getwd: impossível acessar os diretórios pais (anteriores)" +msgstr "getcwd: impossível acessar os diretórios pais (anteriores)" -#: input.c:102 subst.c:5168 -#, fuzzy, c-format +#: input.c:102 subst.c:5858 +#, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "impossível duplicar fd (descritor de arquivo) %d para fd 0: %s" +msgstr "" +"impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d" #: input.c:271 -#, fuzzy, c-format +#, 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" +"impossível alocar novo descritor de arquivo (fd) para a entrada do `bash' a " +"partir do fd %d" #: input.c:279 -#, fuzzy, c-format +#, 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" +"save_bash_input: buffer já existe para o novo descritor de arquivo (fd) %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" -msgstr "" +msgstr "start_pipeline: `pipe' de pgrp" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" +"identificador de processo (pid) %d bifurcado (fork) aparece no trabalho em " +"execução %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "" +msgstr "excluindo trabalho parado %d com grupo de processo %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" -msgstr "" +msgstr "add_process: processo %5ld (%s) em the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "" +msgstr "add_process: pid %5ld (%s) marcado como ainda vivo" -#: jobs.c:1435 -#, fuzzy, c-format +#: jobs.c:1590 +#, c-format msgid "describe_pid: %ld: no such pid" -msgstr "describe_pid: o identificador do processo (pid) não existe (%d)!\n" +msgstr "describe_pid: %ld: o identificador do processo (pid) não existe" -#: jobs.c:1450 -#, fuzzy, c-format +#: jobs.c:1605 +#, c-format msgid "Signal %d" -msgstr "Sinal desconhecido #%d" +msgstr "Sinal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" -msgstr "Concluído" +msgstr "Concluído" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Parado" -#: jobs.c:1473 -#, fuzzy, c-format +#: jobs.c:1628 +#, c-format msgid "Stopped(%s)" -msgstr "Parado" +msgstr "Parado(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Executando" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" -msgstr "Concluído(%d)" +msgstr "Concluído(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" -msgstr "Fim da execução com status %d" +msgstr "Fim da execução com status %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Status desconhecido" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " -msgstr "(imagem do núcleo gravada)" +msgstr "(imagem do núcleo gravada)" -#: jobs.c:1602 -#, fuzzy, c-format +#: jobs.c:1760 +#, c-format msgid " (wd: %s)" -msgstr "(wd agora: %s)\n" +msgstr " (wd: %s)" -#: jobs.c:1819 -#, fuzzy, c-format +#: jobs.c:1985 +#, c-format msgid "child setpgid (%ld to %ld)" -msgstr "`setpgid' filho (%d para %d) erro %d: %s\n" +msgstr "`setpgid' filho (%ld para %ld)" -#: jobs.c:2138 nojobs.c:605 -#, fuzzy, c-format +#: jobs.c:2347 nojobs.c:654 +#, c-format msgid "wait: pid %ld is not a child of this shell" -msgstr "wait: o pid %d não é um filho deste `shell'" +msgstr "wait: o pid %ld não é um processo filho deste shell" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" -msgstr "" +msgstr "wait_for: Sem registro do processo %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "" +msgstr "wait_for_job: trabalho %d está parado" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: o trabalho terminou" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" -msgstr "" +msgstr "%s: o trabalho %d já está em plano de fundo" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" +msgstr "waitchld: ativando WNOHANG para evitar bloqueio indefinido" -#: jobs.c:3711 -#, fuzzy, c-format +#: jobs.c:3970 +#, c-format msgid "%s: line %d: " -msgstr "encaixe (slot) %3d: " +msgstr "%s, linha %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" -msgstr " (imagem do núcleo gravada)" +msgstr " (imagem do núcleo gravada)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd agora: %s)\n" -#: jobs.c:3782 -#, fuzzy +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" -msgstr "initialize_jobs: getpgrp falhou: %s" +msgstr "initialize_job_control: getpgrp falhou" -#: jobs.c:3843 -#, fuzzy +#: jobs.c:4104 msgid "initialize_job_control: line discipline" -msgstr "initialize_jobs: disciplina da linha: %s" +msgstr "initialize_job_control: disciplina da linha" -#: jobs.c:3853 -#, fuzzy +#: jobs.c:4114 msgid "initialize_job_control: setpgid" -msgstr "initialize_jobs: getpgrp falhou: %s" +msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "" +msgstr "impossível definir grupo do processo do terminal (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" -msgstr "nenhum controle de trabalho nesta `shell'" +msgstr "nenhum controle de trabalho neste shell" #: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" -msgstr "" +msgstr "malloc: asserção falhou: %s\n" #: lib/malloc/malloc.c:312 -#, c-format +#, fuzzy, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" +"\r\n" +"malloc: %s:%d: asserção remendada\r\n" #: lib/malloc/malloc.c:313 -#, fuzzy msgid "unknown" -msgstr "" +msgstr "desconhecido" #: lib/malloc/malloc.c:801 +#, fuzzy msgid "malloc: block on free list clobbered" -msgstr "" +msgstr "malloc: bloco socado em lista livre" #: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" -msgstr "" +msgstr "free: chamado com argumento de bloco já liberado" #: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" -msgstr "" +msgstr "free: chamado com argumento de bloco não alocado" #: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite" #: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" -msgstr "" +msgstr "free: tamanhos de porções do início e do fim são diferentes" #: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" -msgstr "" +msgstr "realloc: chamado com argumento de bloco não alocado" #: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite" #: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" -msgstr "" +msgstr "realloc: tamanhos de porções do início e do fim são diferentes" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "" +msgstr "register_alloc: tabela de `alloc' está cheia com FIND_ALLOC?\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "" +msgstr "register_alloc: %p já na tabela como alocado?\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" -msgstr "" +msgstr "register_free: %p já na tabela como livre?\n" #: lib/sh/fmtulong.c:102 msgid "invalid base" -msgstr "" +msgstr "base inválida" #: lib/sh/netopen.c:168 -#, fuzzy, c-format +#, c-format msgid "%s: host unknown" -msgstr "desconhecido" +msgstr "%s: máquina desconhecida" #: lib/sh/netopen.c:175 #, c-format msgid "%s: invalid service" -msgstr "" +msgstr "%s: serviço inválido" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "" +msgstr "%s: especificação de caminho de rede inválida" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" -msgstr "" +msgstr "sem suporte a operações de rede" #: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "" +msgstr "setlocale: LC_ALL: impossível alterar locale (%s)" #: locale.c:202 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "" +msgstr "setlocale: LC_ALL: impossível alterar locale (%s): %s" #: locale.c:259 -#, fuzzy, c-format +#, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" +msgstr "setlocale: %s: impossível alterar locale (%s)" #: locale.c:261 -#, fuzzy, c-format +#, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" +msgstr "setlocale: %s: impossível alterar locale (%s): %s" #: mailcheck.c:439 msgid "You have mail in $_" -msgstr "Você tem mensagem de correio em $_" +msgstr "Você tem mensagem de correio em $_" #: mailcheck.c:464 msgid "You have new mail in $_" -msgstr "Você tem mensagem nova de correio em $_" +msgstr "Você tem mensagem nova de correio em $_" #: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "As mensagens de correio em %s foram lidas\n" -#: make_cmd.c:323 -#, fuzzy +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" -msgstr "erro de sintaxe na expressão" +msgstr "erro de sintaxe: requer expressão aritmética" -#: make_cmd.c:325 -#, fuzzy +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" -msgstr "erro de sintaxe: fim prematuro do arquivo" +msgstr "erro de sintaxe: `;' inesperado" -#: make_cmd.c:326 -#, fuzzy, c-format +#: make_cmd.c:332 +#, c-format msgid "syntax error: `((%s))'" -msgstr "erro de sintaxe" +msgstr "erro de sintaxe: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" -msgstr "make_here_document: o tipo da instrução está incorreto %d" +msgstr "make_here_document: tipo da instrução incorreto %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" +"here-document na linha %d delimitado pelo fim do arquivo (desejava `%s')" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" +msgstr "make_redirection: instrução de redirecionamento `%d' fora do limite" + +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" msgstr "" -#: parse.y:3278 parse.y:3561 -#, fuzzy, c-format +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "excedido o número máximo de here-document" + +#: parse.y:3390 parse.y:3748 +#, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "encontrado EOF não esperado enquanto procurava por `%c'" +msgstr "encontrado EOF inesperado enquanto procurava por `%c' correspondente" -#: parse.y:4170 -#, fuzzy +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" -msgstr "encontrado EOF não esperado enquanto procurava por `%c'" +msgstr "encontrado EOF inesperado enquanto procurava por `]]'" -#: parse.y:4175 -#, fuzzy, c-format +#: parse.y:4415 +#, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "erro de sintaxe próximo do `token' não esperado `%s'" +msgstr "erro de sintaxe na expressão condicional: token inesperado `%s'" -#: parse.y:4179 -#, fuzzy +#: parse.y:4419 msgid "syntax error in conditional expression" -msgstr "erro de sintaxe na expressão" +msgstr "erro de sintaxe na expressão condicional" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "" +msgstr "token inesperado `%s', esperava`)'" -#: parse.y:4261 -#, fuzzy +#: parse.y:4501 msgid "expected `)'" -msgstr "esperado `)'" +msgstr "esperava `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "" +msgstr "argumento inesperado `%s' para operador unário condicional" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" -msgstr "" +msgstr "argumento inesperado para operador unário condicional" -#: parse.y:4339 -#, fuzzy, c-format +#: parse.y:4579 +#, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "%s: esperado operador binário" +msgstr "token inesperado `%s', esperava operador binário condicional" -#: parse.y:4343 -#, fuzzy +#: parse.y:4583 msgid "conditional binary operator expected" -msgstr "%s: esperado operador binário" +msgstr "esperava operador binário condicional" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "" +msgstr "argumento inesperado `%s' para operador binário condicional" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" -msgstr "" +msgstr "argumento inesperado para operador binário condicional" -#: parse.y:4380 -#, fuzzy, c-format +#: parse.y:4620 +#, c-format msgid "unexpected token `%c' in conditional command" -msgstr "`:' esperado para expressão condicional" +msgstr "token inesperado `%c' em comando condicional" -#: parse.y:4383 -#, fuzzy, c-format +#: parse.y:4623 +#, c-format msgid "unexpected token `%s' in conditional command" -msgstr "`:' esperado para expressão condicional" +msgstr "token inesperado `%s' em comando condicional" -#: parse.y:4387 -#, fuzzy, c-format +#: parse.y:4627 +#, c-format msgid "unexpected token %d in conditional command" -msgstr "`:' esperado para expressão condicional" +msgstr "token inesperado %d em comando condicional" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "erro de sintaxe próximo do `token' não esperado `%s'" +msgstr "erro de sintaxe próximo ao token inesperado `%s'" -#: parse.y:5755 -#, fuzzy, c-format +#: parse.y:6014 +#, c-format msgid "syntax error near `%s'" -msgstr "erro de sintaxe próximo do `token' não esperado `%s'" +msgstr "erro de sintaxe próximo a `%s'" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "erro de sintaxe: fim prematuro do arquivo" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "Use \"%s\" para sair da `shell'.\n" +msgstr "Use \"%s\" para sair do shell.\n" -#: parse.y:5989 -#, fuzzy +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" -msgstr "encontrado EOF não esperado enquanto procurava por `%c'" +msgstr "encontrado EOF inesperado enquanto procurava por `)' correspondente" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" +msgstr "completion: função `%s' não encontrada" + +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" msgstr "" +# COMPSPEC é variável no código fonte, manter sem tradução para português. #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "" +msgstr "progcomp_insert: %s: COMPSPEC NULO" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector incorreto `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" -msgstr "" +msgstr "xtrace_set: %d: descritor de arquivo inválido" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" -msgstr "" +msgstr "xtrace_set: ponteiro de arquivo NULO" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" -msgstr "" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "" +msgstr "cprintf: `%c': caractere de formato inválido" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" -msgstr "" +msgstr "descritor de arquivo fora dos limites" -#: redir.c:177 -#, fuzzy, c-format +#: redir.c:178 +#, c-format msgid "%s: ambiguous redirect" -msgstr "%s: Redirecionamento ambíguo" +msgstr "%s: redirecionamento ambíguo" -#: redir.c:181 -#, fuzzy, c-format +#: redir.c:182 +#, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s: Impossível sobrescrever arquivo existente" +msgstr "%s: impossível sobrescrever arquivo existente" -#: redir.c:186 -#, fuzzy, c-format +#: redir.c:187 +#, c-format msgid "%s: restricted: cannot redirect output" -msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos" +msgstr "%s: restrição: impossível redirecionar saída" -#: redir.c:191 -#, fuzzy, c-format +#: redir.c:192 +#, c-format msgid "cannot create temp file for here-document: %s" -msgstr "impossível criar `pipe' para a substituição do processo: %s" +msgstr "impossível criar arquivo temporário para here-document: %s" -#: redir.c:195 -#, fuzzy, c-format +#: redir.c:196 +#, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s: impossível atribuir uma lista a um membro de uma matriz (array)" +msgstr "%s: impossível atribuir fd a variável" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" -msgstr "" +msgstr "sem suporte a /dev/(tcp|udp)/máquina/porta sem rede" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 -#, fuzzy +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" -msgstr "erro de redirecionamento" +msgstr "erro de redirecionamento: impossível duplicar fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" -msgstr "" +msgstr "impossível localizar /tmp, por favor crie!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" +msgstr "/tmp deve ser um nome de diretório válido" + +#: shell.c:927 +#, c-format +msgid "%c%c: invalid option" +msgstr "%c%c: opção inválida" + +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "impossível definir uid para %d: uid efetivo %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "impossível definir gid para %d: gid efetivo %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:890 -#, fuzzy, c-format -msgid "%c%c: invalid option" -msgstr "%c%c: opção incorreta" +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: É um diretório" -#: shell.c:1682 +#: shell.c:1777 msgid "I have no name!" -msgstr "Eu não tenho nome!" +msgstr "Eu não tenho nome!" -#: shell.c:1827 -#, fuzzy, c-format +#: shell.c:1930 +#, c-format msgid "GNU bash, version %s-(%s)\n" -msgstr "GNU %s, versão %s\n" +msgstr "GNU bash, versão %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"Utilização:\t%s [opção-longa-GNU] [opção] ...\n" -"\t%s [opção-longa-GNU] [opção] arquivo-de-script ...\n" +"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:1830 +#: shell.c:1933 msgid "GNU long options:\n" -msgstr "opções-longas-GNU:\n" +msgstr "opções-longas-GNU:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" -msgstr "Opções da `shell':\n" +msgstr "Opções do shell:\n" -#: shell.c:1835 -#, fuzzy +#: shell.c:1938 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" +msgstr "\t-ilrsD or -c comando ou -O opção-shopt\t\t(somente para chamada)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" -msgstr "\t-%s ou -o opção\n" +msgstr "\t-%s ou -o opção\n" -#: shell.c:1856 +#: shell.c:1959 #, 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" +"Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n" -#: shell.c:1857 +#: shell.c:1960 #, 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" +"Digite `%s -c help' para mais informações sobre os comandos internos do " +"shell.\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "" +msgstr "Uso o comando `bashbug' para relatar erros.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "página do bash: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Ajuda geral sobre uso de software GNU: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" -msgstr "" +msgstr "sigprocmask: %d: operação inválida" #: siglist.c:48 msgid "Bogus signal" @@ -1594,7 +1758,7 @@ msgstr "Sair" #: siglist.c:63 msgid "Illegal instruction" -msgstr "Instrução ilegal" +msgstr "Instrução ilegal" #: siglist.c:67 msgid "BPT trace/trap" @@ -1602,15 +1766,15 @@ msgstr "BPT Rastreamento/Captura (BPT trace/trap)" #: siglist.c:75 msgid "ABORT instruction" -msgstr "Instrução ABORT" +msgstr "Instrução ABORT" #: siglist.c:79 msgid "EMT instruction" -msgstr "Instrução EMT" +msgstr "Instrução EMT" #: siglist.c:83 msgid "Floating point exception" -msgstr "Exceção de ponto flutuante" +msgstr "Exceção de ponto flutuante" #: siglist.c:87 msgid "Killed" @@ -1622,7 +1786,7 @@ msgstr "Erro do barramento" #: siglist.c:95 msgid "Segmentation fault" -msgstr "Falha de segmentação" +msgstr "Falha de segmentação" #: siglist.c:99 msgid "Bad system call" @@ -1630,20 +1794,19 @@ msgstr "Chamada incorreta do sistema" #: siglist.c:103 msgid "Broken pipe" -msgstr "`Pipe' partido (Escrita sem leitura)" +msgstr "`Pipe' partido (escrita sem leitura)" #: siglist.c:107 msgid "Alarm clock" -msgstr "Relógio de alarme" +msgstr "Relógio de alarme" #: siglist.c:111 -#, fuzzy msgid "Terminated" -msgstr "exibida." +msgstr "Terminado" #: siglist.c:115 msgid "Urgent IO condition" -msgstr "Condição urgente de Entrada/Saída" +msgstr "Condição urgente de Entrada/Saída" #: siglist.c:119 msgid "Stopped (signal)" @@ -1663,11 +1826,11 @@ msgstr "Parado (entrada tty)" #: siglist.c:143 msgid "Stopped (tty output)" -msgstr "Parado (saída tty)" +msgstr "Parado (saída tty)" #: siglist.c:147 msgid "I/O ready" -msgstr "Entrada/Saída pronta" +msgstr "Entrada/Saída pronta" #: siglist.c:151 msgid "CPU limit" @@ -1679,11 +1842,11 @@ msgstr "Tamanho limite do arquivo excedido" #: siglist.c:159 msgid "Alarm (virtual)" -msgstr "Alarme virtual de tempo" +msgstr "Alarme (virtual)" #: siglist.c:163 msgid "Alarm (profile)" -msgstr "Alarme (profile)" +msgstr "Alarme (perfil)" #: siglist.c:167 msgid "Window changed" @@ -1695,11 +1858,11 @@ msgstr "Registro bloqueado (lock)" #: siglist.c:175 msgid "User signal 1" -msgstr "Sinal 1 definido pelo usuário" +msgstr "Sinal 1 definido pelo usuário" #: siglist.c:179 msgid "User signal 2" -msgstr "Sinal 2 definido pelo usuário" +msgstr "Sinal 2 definido pelo usuário" #: siglist.c:183 msgid "HFT input data pending" @@ -1719,7 +1882,7 @@ msgstr "migrar o processo para outra CPU" #: siglist.c:199 msgid "programming error" -msgstr "erro de programação" +msgstr "erro de programação" #: siglist.c:203 msgid "HFT monitor mode granted" @@ -1731,11 +1894,11 @@ msgstr "modo monitor HFT rescindido" #: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "a seqüência de som HFT foi completada" +msgstr "a seqüência de som HFT foi completada" #: siglist.c:215 msgid "Information request" -msgstr "" +msgstr "Requisição de informação" #: siglist.c:223 msgid "Unknown Signal #" @@ -1746,550 +1909,519 @@ msgstr "Sinal desconhecido #" msgid "Unknown Signal #%d" msgstr "Sinal desconhecido #%d" -#: subst.c:1362 subst.c:1520 -#, fuzzy, c-format +#: subst.c:1445 subst.c:1608 +#, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "substituição incorreta: nenhum `%s' em %s" +msgstr "substituição incorreta: sem `%s' de fechamento em %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" -msgstr "%s: impossível atribuir uma lista a um membro de uma matriz (array)" +msgstr "%s: impossível atribuir uma lista a um membro de um array" -#: subst.c:5065 subst.c:5081 -#, fuzzy +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" -msgstr "impossível criar `pipe' para a substituição do processo: %s" +msgstr "impossível criar `pipe' para a substituição do processo" -#: subst.c:5113 -#, fuzzy +#: subst.c:5798 msgid "cannot make child for process substitution" -msgstr "impossível criar um processo filho para a substituição do processo: %s" +msgstr "impossível criar um processo filho para a substituição do processo" -#: subst.c:5158 -#, fuzzy, c-format +#: subst.c:5848 +#, c-format msgid "cannot open named pipe %s for reading" -msgstr "impossível abrir o `named pipe' %s para %s: %s" +msgstr "impossível abrir `pipe' %s para leitura" -#: subst.c:5160 -#, fuzzy, c-format +#: subst.c:5850 +#, c-format msgid "cannot open named pipe %s for writing" -msgstr "impossível abrir o `named pipe' %s para %s: %s" +msgstr "impossível abrir `pipe' %s para escrita" -#: subst.c:5178 -#, fuzzy, c-format +#: subst.c:5873 +#, 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" +msgstr "impossível duplicar `pipe' %s como descritor de arquivo (fd) %d" -#: subst.c:5376 +#: subst.c:5959 #, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "substituição incorreta: sem \"`\" de fechamento em %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" -msgstr "impossível construir `pipes' para substituição do comando: %s" +msgstr "impossível criar um `pipe' para substituição do comando" -#: subst.c:5414 -#, fuzzy +#: subst.c:6127 msgid "cannot make child for command substitution" -msgstr "impossível criar um processo filho para substituição do comando: %s" +msgstr "impossível criar um processo filho para substituição do comando" -#: subst.c:5433 -#, fuzzy +#: subst.c:6153 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" +"command_substitute: impossível duplicar o `pipe' como descritor de arquivo " +"(fd) 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "" +msgstr "%s: nome de variável inválido para referência de nome" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parâmetro nulo ou não inicializado" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: expressão de substring < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" -msgstr "%s: substituição incorreta" +msgstr "%s: substituição incorreta" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: expansão indireta inválida" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: nome de variável inválido" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parâmetro nulo ou não inicializado" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expressão de substring < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" -msgstr "$%s: impossível atribuir desta maneira" +msgstr "$%s: impossível atribuir desta maneira" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" +"versões futuras do shell vão forçar avaliação como um substituto aritmético" -#: subst.c:8421 -#, fuzzy, c-format +#: subst.c:9349 +#, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "substituição incorreta: nenhum `%s' em %s" +msgstr "substituição incorreta: sem \"`\" de fechamento em %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" -msgstr "" +msgstr "sem correspondência: %s" #: test.c:147 msgid "argument expected" -msgstr "esperado argumento" +msgstr "esperava argumento" #: test.c:156 #, c-format msgid "%s: integer expression expected" -msgstr "%s: esperado expressão de número inteiro" +msgstr "%s: esperava expressão de número inteiro" -#: test.c:264 +#: test.c:265 msgid "`)' expected" -msgstr "esperado `)'" +msgstr "esperava `)'" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "esperado `)', encontrado %s" +msgstr "esperava `)', encontrado %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" -msgstr "%s: esperado operador unário" +msgstr "%s: esperava operador unário" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" -msgstr "%s: esperado operador binário" +msgstr "%s: esperava operador binário" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "faltando `]'" -#: trap.c:217 -#, fuzzy +#: trap.c:224 msgid "invalid signal number" -msgstr "número do sinal incorreto" +msgstr "número de sinal inválido" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps: valor incorreto em trap_list[%d]: %p" -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" +"run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d (%" +"s) para mim mesmo" -#: trap.c:428 -#, fuzzy, c-format +#: trap.c:447 +#, c-format msgid "trap_handler: bad signal %d" -msgstr "trap_handler: Sinal incorreto %d" +msgstr "trap_handler: sinal incorreto %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" -msgstr "erro ao importar a definição da função para `%s'" +msgstr "erro ao importar a definição da função para `%s'" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" -msgstr "" +msgstr "nível do shell (%d) muito grande, redefinindo para 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" -msgstr "" +msgstr "make_local_variable: nenhum contexto de função no atual escopo" -#: variables.c:2247 -#, fuzzy, c-format +#: variables.c:2432 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: impossível atribuir uma lista a um membro de uma matriz (array)" +msgstr "%s: a variável pode não ter um valor atribuído" -#: variables.c:3646 -msgid "all_local_variables: no function context at current scope" -msgstr "" - -#: variables.c:3891 +#: variables.c:3043 #, fuzzy, c-format -msgid "%s has null exportstr" -msgstr "%s: parâmetro nulo ou não inicializado" +msgid "%s: assigning integer to name reference" +msgstr "%s: nome de variável inválido para referência de nome" -#: variables.c:3896 variables.c:3905 +#: variables.c:3940 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: nenhum contexto de função no escopo atual" + +#: variables.c:4218 +#, c-format +msgid "%s has null exportstr" +msgstr "%s possui a string de exportação nula" + +# exportstr é uma variável no código fonte do bash (arquivo variiables.c) +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" -msgstr "" +msgstr "caractere inválido na %d na exportstr para %s" -#: variables.c:3911 +# exportstr é uma variável no código fonte do bash (arquivo variiables.c) +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" -msgstr "" +msgstr "Sem `=' na exportstr para %s" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "" +msgstr "pop_var_context: cabeça de shell_variables não é um contexto de função" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" -msgstr "" +msgstr "pop_var_context: nenhum contexto em no global_variables" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" +"pop_scope: cabeça de shell_variables não é um escopo de ambiente temporário" -#: variables.c:5257 -#, fuzzy, c-format +#: variables.c:5619 +#, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: impossível criar: %s" +msgstr "%s: %s: impossível abrir como ARQUIVO" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "" +msgstr "%s: %s: valor inválido para rastrear descritor de arquivo" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" -msgstr "" +msgstr "%s: %s: valor de compatibilidade fora dos limites" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "" +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright (C) 2015 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" +"Licença GPLv3+: GNU GPL versão 3 ou posterior .\n" #: version.c:86 version2.c:86 -#, fuzzy, c-format +#, c-format msgid "GNU bash, version %s (%s)\n" -msgstr "GNU %s, versão %s\n" +msgstr "GNU bash, versão %s (%s)\n" #: version.c:91 version2.c:91 msgid "This is free software; you are free to change and redistribute it." -msgstr "" +msgstr "Este é um software livre; você é livre para alterar e redistribuí-lo." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "" - -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "" +msgstr "Há NENHUMA GARANTIA, na extensão permitida pela lei." #: xmalloc.c:91 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "xmalloc: impossível alocar %lu bytes (%lu bytes alocados)" +msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)" #: xmalloc.c:93 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "xmalloc: impossível alocar %lu bytes (%lu bytes alocados)" +msgstr "%s: impossível alocar %lu bytes" #: xmalloc.c:163 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "xmalloc: impossível alocar %lu bytes (%lu bytes alocados)" +msgstr "%s: %s:%d: impossível alocar %lu bytes (%lu bytes alocados)" #: xmalloc.c:165 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "xmalloc: impossível alocar %lu bytes (%lu bytes alocados)" +msgstr "%s: %s:%d: impossível alocar %lu bytes" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [NOME[=VALOR] ... ]" -#: builtins.c:47 -#, fuzzy +#: builtins.c:49 msgid "unalias [-a] name [name ...]" -msgstr "unalias [-a] [NOME ...]" +msgstr "unalias [-a] NOME [NOME ...]" -#: builtins.c:51 -#, fuzzy +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -"bind [-lpvsPVS] [-m MAPA-TECLAS] [-f ARQUIVO] [-q NOME-FUNÇÃO] [-r SEQ-" -"TECLAS] [SEQ-TECLAS:FUNÇÃO-DE-LEITURA-DE-LINHA]" +"bind [-lpsvPSVX] [-m MAPA-TECLAS] [-f ARQUIVO] [-q NOME] [-u NOME] [-r SEQ-" +"TECLAS] [-x SEQ-TECLAS:COMANDO-SHELL] [SEQ-TECLAS:FUNÇÃO-DE-LINHA ou " +"COMANDO-DE-LINHA]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "builtin [COMANDO-INTERNO-DA-SHELL [ARG ...]]" +msgstr "builtin [COMANDO-INTERNO-SHELL [ARG ...]]" -#: builtins.c:61 -#, fuzzy +#: builtins.c:63 msgid "caller [expr]" -msgstr "test [EXPR]" - -#: builtins.c:64 -#, fuzzy -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-PL] [DIR]" +msgstr "caller [EXPR]" #: builtins.c:66 -#, fuzzy -msgid "pwd [-LP]" -msgstr "pwd [-PL]" +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [DIR]" #: builtins.c:68 -msgid ":" -msgstr ":" +msgid "pwd [-LP]" +msgstr "pwd [-LP]" -#: builtins.c:70 -msgid "true" -msgstr "" - -#: builtins.c:72 -msgid "false" -msgstr "" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] COMANDO [ARG ...]" -#: builtins.c:76 -#, fuzzy -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-afFrxi] [-p] NOME[=VALOR] ..." - #: builtins.c:78 -#, fuzzy -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-afFrxi] [-p] NOME[=VALOR] ..." +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [NOME[=VALOR] ...]" #: builtins.c:80 -#, fuzzy -msgid "local [option] name[=value] ..." -msgstr "local NOME[=VALOR] ..." +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] NOME[=VALOR] ..." -#: builtins.c:83 +#: builtins.c:82 +msgid "local [option] name[=value] ..." +msgstr "local [OPÇÃO] NOME[=VALOR] ..." + +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [ARG ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [ARG ...]" -#: builtins.c:90 -#, fuzzy -msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "enable [-pnds] [-a] [-f ARQUIVO] [NOME ...]" - #: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-DnPs] [-f ARQUIVO] [NOME ...]" + +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [ARG ...]" -#: builtins.c:94 -msgid "getopts optstring name [arg]" -msgstr "getopts OPÇÕES NOME [ARG]" - #: builtins.c:96 -#, fuzzy -msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "exec [-cl] [-a NOME] ARQUIVO [REDIRECIONAMENTO ...]" +msgid "getopts optstring name [arg]" +msgstr "getopts OPTSTRING NOME [ARG]" #: builtins.c:98 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a NOME] [COMANDO [ARGUMENTOS ...]] [REDIRECIONAMENTO ...]" + +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 -#, fuzzy +#: builtins.c:102 msgid "logout [n]" -msgstr "logout" +msgstr "logout [n]" -#: builtins.c:103 -#, fuzzy +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" -"fc [-e EDITOR] [-nlr] [PRIMEIRO] [ÚLTIMO] ou fc -s [ANTIGO=NOVO] [COMANDO]" +"fc [-e EDITOR] [-lnr] [PRIMEIRO] [ÚLTIMO] ou fc -s [ANTIGO=NOVO] [COMANDO]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [JOB-ESPECIFICADO]" +msgstr "fg [ESPEC-JOB]" -#: builtins.c:111 -#, fuzzy +#: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [JOB-ESPECIFICADO]" +msgstr "bg [ESPEC-JOB ...]" -#: builtins.c:114 -#, fuzzy +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" -msgstr "hash [-r] [-p CAMINHO] [NOME ...]" +msgstr "hash [-lr] [-p CAMINHO] [-dt] [NOME ...]" -#: builtins.c:117 -#, fuzzy +#: builtins.c:119 msgid "help [-dms] [pattern ...]" -msgstr "help [PADRÃO ...]" +msgstr "help [-dms] [PADRÃO ...]" -#: builtins.c:121 -#, fuzzy +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" -"history [-c] [n] ou history -awrn [ARQUIVO] ou history -ps ARG [ARG...]" +"history [-c] [-d POSIÇÃO] [n] ou history -anrw [ARQUIVO] ou history -ps ARG " +"[ARG...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [JOB-ESPECIFICADO ...] ou jobs -x COMANDO [ARGS]" +msgstr "jobs [-lnprs] [ESPEC-JOB ...] ou jobs -x COMANDO [ARGS]" -#: builtins.c:129 +#: builtins.c:131 #, fuzzy -msgid "disown [-h] [-ar] [jobspec ...]" -msgstr "disown [JOB-ESPECIFICADO ...]" +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [ESPEC-JOB ...]" -#: builtins.c:132 -#, fuzzy +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" -"kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] [PID | JOB]... ou kill -l [SIGSPEC]" +"kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] PID | ESPEC-JOB ... ou kill -l " +"[SIGSPEC]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let ARG [ARG ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" +"read [-ers] [-a ARRAY] [-d DELIM] [-i TEXTO] [-n NCHARS] [-N NCHARS] [-p " +"CONFIRMAR ] [-t TEMPO] [-u FD] [NOME ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 -#, fuzzy -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "set [--abefhkmnptuvxBCHP] [-o OPÇÃO] [ARG ...]" - #: builtins.c:142 -#, fuzzy -msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [NOME ...]" +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o NOME-OPÇÃO] [--] [ARG ...]" #: builtins.c:144 -#, fuzzy -msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "export [-nf] [NOME ...] ou export -p" +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [NOME ...]" #: builtins.c:146 -#, fuzzy -msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "readonly [-anf] [NOME ...] ou readonly -p" +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [NOME[=VALOR] ...] ou export -p" #: builtins.c:148 -#, fuzzy -msgid "shift [n]" -msgstr "exit [n]" +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [NOME[=VALOR] ...] ou readonly -p" #: builtins.c:150 -#, fuzzy -msgid "source filename [arguments]" -msgstr "arquivo fonte" +msgid "shift [n]" +msgstr "shift [n]" #: builtins.c:152 -#, fuzzy -msgid ". filename [arguments]" -msgstr ". ARQUIVO" +msgid "source filename [arguments]" +msgstr "source ARQUIVO [ARGUMENTOS]" -#: builtins.c:155 +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". ARQUIVO [ARGUMENTOS]" + +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [EXPR]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ ARG... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 -#, fuzzy -msgid "trap [-lp] [[arg] signal_spec ...]" -msgstr "trap [ARG] [SINAL-ESPEC] ou trap -l" - #: builtins.c:166 -#, fuzzy +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[ARG] ESPEC-SINAL ...]" + +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-apt] NOME [NOME ...]" -#: builtins.c:169 -#, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHacdfmstpnuv] [LIMITE]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMITE]" -#: builtins.c:172 -#, fuzzy +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" -msgstr "umask [-S] [MODO]" +msgstr "umask [-p] [-S] [MODO]" -#: builtins.c:175 -#, fuzzy +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "wait [n]" +msgstr "wait [-n] [ID ...]" -#: builtins.c:179 -#, fuzzy +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [n]" - -#: builtins.c:182 -#, fuzzy -msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "for NOME [in PALAVRAS ... ;] do COMANDOS; done" +msgstr "wait [PID ...]" #: builtins.c:184 -#, fuzzy -msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" -msgstr "for NOME [in PALAVRAS ... ;] do COMANDOS; done" +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for NOME [in PALAVRAS ...] ; do COMANDOS; done" #: builtins.c:186 +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( EXP1; EXP2; EXP3 )); do COMANDOS; done" + +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NOME [in PALAVRAS ... ;] do COMANDOS; done" -#: builtins.c:188 -msgid "time [-p] pipeline" -msgstr "" - #: builtins.c:190 -msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac" +msgid "time [-p] pipeline" +msgstr "time [-p] LINHA-COMANDOS" #: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac" + +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2297,102 +2429,104 @@ msgstr "" "if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else " "COMANDOS; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while COMANDOS; do COMANDOS; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until COMANDOS; do COMANDOS; done" -#: builtins.c:198 -msgid "coproc [NAME] command [redirections]" -msgstr "" - #: builtins.c:200 -#, fuzzy +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [NOME] COMANDO [REDIRECIONAMENTOS]" + +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function NOME { COMANDOS ; } ou NOME () { COMANDOS ; }" -#: builtins.c:202 -#, fuzzy -msgid "{ COMMANDS ; }" -msgstr "{ COMANDOS }" - #: builtins.c:204 -#, fuzzy -msgid "job_spec [&]" -msgstr "fg [JOB-ESPECIFICADO]" +msgid "{ COMMANDS ; }" +msgstr "{ COMANDOS ; }" #: builtins.c:206 -#, fuzzy -msgid "(( expression ))" -msgstr "esperado uma expressão" +msgid "job_spec [&]" +msgstr "ESPEC-JOB [&]" #: builtins.c:208 -#, fuzzy -msgid "[[ expression ]]" -msgstr "esperado uma expressão" +msgid "(( expression ))" +msgstr "(( EXPRESSÃO ))" #: builtins.c:210 -#, fuzzy +msgid "[[ expression ]]" +msgstr "[[ EXPRESSÃO ]]" + +# Não traduzir "variables", esta é uma opção "builtin" do "bash" que é exibida ao executar "help" e acessível com "help variables". +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "As variáveis da `shell' podem ser operandos. O nome da variável é" +msgstr "variables - Nomes e significados de algumas variáveis do shell" -#: builtins.c:213 -#, fuzzy +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" -msgstr "pushd [DIR | +N | -N] [-n]" +msgstr "pushd [-n] [+N | -N | DIR]" -#: builtins.c:217 -#, fuzzy +#: builtins.c:219 msgid "popd [-n] [+N | -N]" -msgstr "popd [+N | -N] [-n]" +msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 -#, fuzzy -msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "shopt [-pqsu] [-o OPÇÃO-LONGA] NOME-OPÇÃO [NOME-OPÇÃO...]" - #: builtins.c:226 -msgid "printf [-v var] format [arguments]" -msgstr "" +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [NOME-OPÇÃO ...]" -#: builtins.c:229 +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v VAR] FORMATO [ARGUMENTOS]" + +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o OPÇÃO] [-A AÇÃO] [-G GLOBAL] [-W " +"LISTA-PALAVRAS] [-F FUNÇÃO] [-C COMANDO] [-X FILTRO] [-P PREFIXO] [-S " +"SUFIXO] [NOME ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" +"compgen [-abcdefgjksuv] [-o OPÇÃO] [-A AÇÃO] [-G GLOBAL] [-W LISTA-" +"PALAVRAS] [-F FUNÇÃO] [-C COMANDO] [-X FILTRO] [-P PREFIXO] [-S SUFIXO] " +"[PALAVRA]" -#: builtins.c:237 -#, fuzzy +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "type [-apt] NOME [NOME ...]" - -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" +msgstr "compopt [-o|+o OPÇÃO] [-DE] [NOME ...]" #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d DELIM] [-n NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C " +"CHAMADA] [-c QUANTIDADE] [ARRAY]" + +#: builtins.c:244 +msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" +"readarray [-n NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C CHAMADA] [-c " +"QUANTIDADE] [ARRAY]" -#: builtins.c:254 +# help alias +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2404,27 +2538,48 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " "been\n" " defined." msgstr "" +"Define ou exibe apelidos (aliases).\n" +" \n" +" Sem argumentos, `alias' mostra a lista de apelidos no formato usável\n" +" `alias NOME=VALOR' na saída padrão.\n" +" \n" +" Do contrário, um apelido é definido para cada NOME cujo VALOR é dado.\n" +" Um espaço ao final em VALOR resulta na próxima palavra ser verificada\n" +" por substituição de apelido quando o apelido for expandido.\n" +" \n" +" Opções:\n" +" -p\tmostra todos os apelidos definidos em uma formato usável\n" +" \n" +" Status de saída:\n" +" `alias' retorna verdadeiro, a menos que seja fornecido um NOME para\n" +" o qual não se tenha definido um apelido" -#: builtins.c:276 -#, fuzzy +# help unalias +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"Remove NOMEs da lista de aliases definidos. Se a opção -a for fornecida," +"Remove cada NOME da lista de apelidos definidos.\n" +" \n" +" Opções:\n" +" -a\tremove todas as definições de apelidos\n" +" \n" +" Retorna sucesso, a menos que NOME não seja um apelido existente." -#: builtins.c:289 +# help bind +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2458,15 +2613,63 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" +"Define variáveis e associações de teclas para Readline.\n" +" \n" +" Associa uma sequência de teclas para uma função Readline ou uma macro\n" +" ou define uma variável de Readline. A sintaxe de argumento sem opção é\n" +" equivalente àquela encontrada em ~/.inputrc, mas deve ser passada como\n" +" um argumento singular.\n" +" \n" +" Opções:\n" +" -m MAPA-TECLAS Usa MAPA-TECLAS como mapa de teclas para a duração\n" +" deste comando. Nomes de mapa de teclas aceitáveis\n" +" são emacs, emacs-standard, emacs-meta, emacs-ctlx,\n" +" vi, vi-move, vi-command e vi-insert.\n" +" -l Lista nomes de funções.\n" +" -P Lista nomes e associações de função.\n" +" -p Lista funções e associações em uma forma que pode " +"ser\n" +" usada como entrada.\n" +" -S Lista sequências de teclas que chamam macros e " +"seus\n" +" valores\n" +" -s Lista sequências de teclas que chamam macros e " +"seus\n" +" valores em uma forma que pode ser usada como " +"entrada.\n" +" -V Lista nomes e valores de variáveis\n" +" -v Lista nomes e valores de variáveis em uma forma " +"que\n" +" pode ser usada como entrada.\n" +" -q NOME Consulta sobre quais teclas chamam a função " +"informada.\n" +" -u NOME Desassocia todas teclas que estão associadas à " +"função\n" +" informada.\n" +" -r SEQ-TECLAS Remove a associação para SEQ-TECLAS.\n" +" -f ARQUIVO Lê associações de tecla de ARQUIVO.\n" +" -x SEQ-TECLAS:COMANDO-SHELL\n" +" Faz com que COMANDO-SHELL seja executado ao " +"inserir\n" +" SEQ-TECLAS.\n" +" -X Lista sequência de teclas associadas com -x e " +"comandos\n" +" associados em uma forma que pode ser usada como\n" +" entrada.\n" +" \n" +" Status de saída:\n" +" `bind' retorna 0 a mesmo que uma opção desconhecida seja fornecida ou\n" +" um erro ocorrer." -#: builtins.c:328 -#, fuzzy +# help break +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2475,10 +2678,17 @@ msgid "" " \n" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." -msgstr "Prossegue no próximo ciclo do laço FOR, WHILE ou UNTIL envolvente." +msgstr "" +"Sai de loops de for, while ou until.\n" +" \n" +" Sai de um loop de FOR, WHILE ou UNTIL. Se N for especificado, quebra N \n" +" blocos de declaração de loops.\n" +" \n" +" Status de saída:\n" +" O status de saída é 0, a menos que N não seja maior ou igual a 1." -#: builtins.c:340 -#, fuzzy +# help continue +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2487,9 +2697,18 @@ msgid "" " \n" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." -msgstr "Prossegue no próximo ciclo do laço FOR, WHILE ou UNTIL envolvente." +msgstr "" +"Resume loops de for, while ou until.\n" +" \n" +" Resume a próxima iteração do bloco de declaração de loop de FOR, WHILE\n" +" ou UNTIL.\n" +" Se N for especificado, resume o N-ésimo bloco de declaração de loop.\n" +" \n" +" Status de saída:\n" +" O status de saída é 0, a menos que N não seja maior ou igual a 1." -#: builtins.c:352 +# help builtin +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2502,8 +2721,19 @@ msgid "" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." msgstr "" +"Executa comandos internos (builtin) do shell.\n" +" \n" +" Executa COMANDO-INTERNO-SHELL com argumentos ARGs sem realizar procura\n" +" por comandos. Isso é útil quando você deseja reimplementar um comando\n" +" interno como uma função shell, mas precisa executar o comando interno\n" +" dentro de uma função.\n" +" \n" +" Status de saída:\n" +" Retorna o status de saída de COMANDO-INTERNO-SHELL ou falso, se\n" +" COMANDO-INTERNO-SHELL não for de fato um comando interno de shell." -#: builtins.c:367 +# help caller +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2518,8 +2748,22 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" +"Retorna o contexto da chamada de sub-rotina atual.\n" +" \n" +" Sem EXPR, retorna \"$linha $arquivo\". Com EXPR, retorna\n" +" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada " +"para\n" +" fornecer um rastro da pilha.\n" +" \n" +" O valor de EXPR indica quantos quadros de chamada deve voltar antes do\n" +" atual; o quadro do topo é o quadro 0.\n" +" \n" +" Status de saída:\n" +" Retorna 0, a menos que o shell não esteja executando uma função de\n" +" shell ou EXPR seja inválida." -#: builtins.c:385 +# help cd +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2542,16 +2786,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2563,14 +2807,54 @@ msgid "" "when\n" " -P is used; non-zero otherwise." msgstr "" +"Altera o diretório de trabalho do shell.\n" +" \n" +" Altera o diretório atual para DIR, sendo o padrão de DIR o mesmo valor\n" +" da variável HOME.\n" +" \n" +" A variável CDPATH define o caminho de pesquisa para o diretório " +"contendo\n" +" DIR. Nomes de diretórios alternativos em CDPATH são separados por\n" +" dois-pontos (:). Um nome de diretório nulo é o mesmo que o diretório\n" +" atual. Se DIR inicia com uma barra (/), então CDPATH não é usada.\n" +" \n" +" Se o diretório não for encontrado e a opção `cdable_vars` estiver " +"definida\n" +" no shell, a palavra é presumida como sendo o nome de uma variável. Se\n" +" tal variável possuir um valor, este valor é usado para DIR.\n" +" \n" +" Opções:\n" +" -L\tforça links simbólicos a serem seguidos: resolver links " +"simbólicos\n" +" \t\tem DIR após processar instâncias de `..'\n" +" -P\tusa a estrutura do diretório físico sem seguir links\n" +" \t\tsimbólicos: resolve links simbólicos em DIR antes de processar\n" +" \t\tinstâncias de `..'\n" +" -e\tse a opção -P for fornecida e o diretório de trabalho atual não\n" +" \t\tpuder ser determinado com sucesso, sai com um status não-zero\n" +" -@\tem sistemas nos quais haja suporte, apresenta um arquivo com\n" +" \t\tatributos estendidos como um diretório contendo os atributos de\n" +" \t\tarquivo\n" +" \n" +" O padrão é seguir links simbólicos, como se `-L' tivesse sido " +"especificada.\n" +" `..' é processada removendo o componente de caminho imediatamente " +"anterior\n" +" de volta para uma barra ou para o início de DIR.\n" +" \n" +" Status de saída:\n" +" Retorna 0, se o diretório tiver sido alterado e se $PWD está definida " +"com\n" +" sucesso quando a opção -P for usada; do contrário, retorna não-zero." -#: builtins.c:422 +# help pwd +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2579,9 +2863,21 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" +"Mostra o nome do diretório de trabalho atual.\n" +" \n" +" Opções:\n" +" -L\tmostra o valor de $PWD se ele tiver o nome do diretório de\n" +" \t\ttrabalho atual\n" +" -P\tmostra o diretório físico, sem quaisquer links simbólicos\n" +" \n" +" Por padrão, `pwd' se comporta como se a opção `-L' foi especificada.\n" +" \n" +" Status de saída:\n" +" Retorna 0, a menos que uma opção inválida seja fornecida ou o diretório\n" +" atual não possa ser lido." -#: builtins.c:439 -#, fuzzy +# help : +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2590,25 +2886,41 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" -"Nenhum efeito; o comando não faz nada. Retorna zero no código de saída." +"Comando nulo.\n" +" \n" +" Nenhum efeito; o comando não faz nada.\n" +" \n" +" Status de saída:\n" +" Sempre com sucesso." -#: builtins.c:450 +# help true +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" " Exit Status:\n" " Always succeeds." msgstr "" +"Retorna um resultado de sucesso.\n" +" \n" +" Status de saída:\n" +" Sempre sucesso." -#: builtins.c:459 +# help false +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" " Exit Status:\n" " Always fails." msgstr "" +"Retorna um resultado de insucesso.\n" +" \n" +" Status de saída:\n" +" Sempre falha." -#: builtins.c:468 +# help command +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2618,16 +2930,32 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" +"Executa um comando simples ou exibe informação sobre comandos.\n" +" \n" +" Executa COMANDO com ARG suprimindo a procura por função do shell ou\n" +" exibe informação sobre os COMANDOs especificados. Pode ser usado para\n" +" chamar comandos no disco quando um função com o mesmo nome existe.\n" +" \n" +" Opções:\n" +" -p\tusa um valor padrão como variável PATH no qual garantidamente\n" +" \t\tse encontram todas os utilitários padrão\n" +" -v\tmostra uma descrição de COMANDO similar ao comando `type'\n" +" -V\tmostra uma descrição detalhada (verboso) para cada COMANDO\n" +" \n" +" Status de saída:\n" +" Retorna status de saída de COMANDO ou falha, se COMANDO não for \n" +" encontrado." -#: builtins.c:487 +# help declare +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2637,9 +2965,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2666,15 +2994,57 @@ msgid "" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." msgstr "" +"Define valores e atributos de variável.\n" +" \n" +" Declara variáveis e a elas fornece atributos. Se nenhum NOME for " +"fornecido,\n" +" exibe os atributos e valores de todas as variáveis.\n" +" \n" +" Opções:\n" +" -f\trestringe ação ou exibição dos nomes e definições de funções\n" +" -F\trestringe exibição a nomes de função apenas (mais número de linha\n" +" \t\te arquivo fonte, na depuração)\n" +" -g\tcria variáveis globais quando usado em uma função do shell;\n" +" \t\tdo contrário, ignorado\n" +" -p\texibe os atributos e valores de cada NOME\n" +" \n" +" Opções que definem atributos:\n" +" -a\tpara fazer NOMEs serem arrrays indexados (se houver suporte)\n" +" -A\tpara fazer NOMEs serem arrrays associativos (se houver suporte)\n" +" -i\tpara fazer NOMEs terem o atributo `integer'\n" +" -l\tpara converter NOMEs para minúsculo em sua atribuição\n" +" -n\tfazer de NOME uma referência à variável chamada por seu valor\n" +" -r\tpara fazer de NOMEs somente-leitura\n" +" -t\tpara fazer NOMEs terem o atributo `trace'\n" +" -u\tpara converter NOMEs para maiúsculo em sua atribuição\n" +" -x\tpra fazer NOMEs exportar\n" +" \n" +" Usar `+' ao invés de `-' desliga o atributo dado.\n" +" \n" +" Variáveis com o atributo `integer' têm sua avaliação aritmética (veja o\n" +" comando `let') realizada quando é atribuído um valor à variável.\n" +" \n" +" Quando usado em uma função, `declare' torna NOMEs local, da mesma forma\n" +" que o comando `local'. A opção `-g' suprime este comportamento.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida tenha sido fornecida ou\n" +" ocorrer um erro de atribuição de variável." -#: builtins.c:527 +# help typeset +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" +"Define valores e atributos de variável.\n" +" \n" +" Obsoleto. Veja `help declare'." -#: builtins.c:535 +# help local +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2688,8 +3058,23 @@ msgid "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." msgstr "" +"Define variáveis locais.\n" +" \n" +" Cria uma variável local chamada NOME e lhe dá VALOR. OPÇÃO pode ser\n" +" qualquer opção aceita pelo `declare'.\n" +" \n" +" Variáveis locais podem ser usadas apenas em uma função; elas são " +"visíveis\n" +" apenas para a função na qual elas foram definidas, bem como para seus\n" +" filhos.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida, ocorrer\n" +" um erro de atribuição de uma variável ou o shell não estiver executando\n" +" uma função." -#: builtins.c:552 +# help echo +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2715,15 +3100,45 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Escreve argumentos para a saída padrão.\n" +" \n" +" Exibe os ARGs, separados por um único caractere de espaço e seguido\n" +" por uma nova linha, na saída padrão.\n" +" \n" +" Opções:\n" +" -n\tnão anexa uma nova linha\n" +" -e\thabilita interpretação de escapes de contrabarra a seguir\n" +" -E\texplicitação suprime interpretação de escapes de contrabarra\n" +" \n" +" `echo' interpreta os caracteres escapados por contrabarra:\n" +" \\a\talerta (bipe)\n" +" \\b\tbackspace\n" +" \\c\tsuprime futuras saídas\n" +" \\e\tcaractere de escape\n" +" \\E\tcaractere de escape\n" +" \\f\talimentação de formulário (form feed)\n" +" \\n\tnova linha\n" +" \\r\tretorno de carro (carrier return)\n" +" \\t\tTAB horizontal\n" +" \\v\tTAB vertical\n" +" \\\\\tcontrabarra\n" +" \\0nnn\to caractere cujo código ASCII é NNN (octal). NNN pode\n" +" \t\tser 0 a 3 dígitos octais\n" +" \\xHH\to caractere de 8 bits cujo valor é HH (hexadecimal). HH\n" +" \t\tpode ser um ou dois dígitos hexa\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que ocorra um erro de escrita." -#: builtins.c:588 +# help echo +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2735,8 +3150,18 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Escreve argumentos para a saída padrão.\n" +" \n" +" Exibe os ARGs na saída padrão seguido por uma nova linha.\n" +" \n" +" Opções:\n" +" -n\tnão anexa uma nova linha\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que ocorra um erro de escrita." -#: builtins.c:603 +# help enable +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2762,8 +3187,35 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" +"Habilita e desabilita comandos internos do shell.\n" +" \n" +" Habilita e desabilita comandos internos do shell. Desabilitar\n" +" permite que você executa um comando do disco que possui o mesmo\n" +" nome que um outro comando interno sem usar um caminho completo.\n" +" \n" +" Opções:\n" +" -a\tmostra uma lista de comandos internos mostrando se cada\n" +" \t\tum está habilitado\n" +" -n\tdesabilita cada NOME ou exibe uma lista de comandos\n" +" \t\tinternos desabilitados\n" +" -p\texibe a lista de comandos internos em um formato usável\n" +" -s\texibe apenas nomes dos comandos internos 'especial' Posix\n" +" \n" +" Opções de controle de carregamento dinâmico:\n" +" -f\tcarrega comando interno NOME do objeto compartilhado ARQUIVO\n" +" -d\tremove um comando interno carregado com -f\n" +" \n" +" Não sendo informado uma opção, cada NOME é habilitado.\n" +" \n" +" Para usar o `test' encontrado em $PATH, ao invés da versão de comando\n" +" interno do shell, digite `enable -n test'.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que NOME não seja um comando interno de shell\n" +" ou ocorrer um erro." -#: builtins.c:631 +# help eval +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2774,8 +3226,16 @@ msgid "" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" +"Executa argumentos como um comando de shell.\n" +" \n" +" Combina ARGs em uma única string, usa o resultado como entrada para o\n" +" shell, e executa os comandos resultantes.\n" +" \n" +" Status de saída:\n" +" Retorna status de saída do comando ou sucesso, se o comando for nulo." -#: builtins.c:643 +# help getopts +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2815,8 +3275,49 @@ msgid "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." msgstr "" +"Analisa argumentos de opções.\n" +" \n" +" Getopts é usado pelos procedimentos do shell para analisar parâmetros\n" +" posicionais como opções.\n" +" \n" +" OPÇÕES é uma string que contém as letras de opções a ser reconhecidas;\n" +" se uma letra é seguida por dois-pontos, é esperado que a opção tenha\n" +" um argumento, o que deveria ser separado dela por um espaço em branco.\n" +" \n" +" A cada vez que ele é chamado, getopts coloca a próxima opção\n" +" na variável shell $NOME, inicializando NOME se ela não existir,\n" +" e o índice do próximo argumento a ser processado para dentro da\n" +" variável OPTIND. OPTIND é inicializado para 1 a cada vez que o\n" +" shell ou um script shell é chamado. Quando uma opção requer\n" +" um argumento, getopts coloca aquele argumento em uma variável\n" +" shell chamada OPTARG.\n" +" \n" +" getopts relata erros em um de duas formas. Se o primeiro caractere\n" +" de OPÇÕES for caractere dois-pontos, getopts usa sistema silencioso de\n" +" relatório de erro. Neste modo, nenhuma mensagem de erro é mostrada.\n" +" Se uma opção inválida é vista, getopts coloca o caractere de opção\n" +" encontrada dentro do OPTARG. Se um argumento obrigatório não for\n" +" encontrado, getopts coloca um ':' em NOME e define OPTARG para o\n" +" caractere de opção encontrada. Se getopts não estiver no modo\n" +" silencioso, uma opção inválida é vista, getopts coloca um '?' em\n" +" NOME e remove definição de OPTARG. Se um argumento obrigatório não for\n" +" encontrado, um '?' é colocado em NOME, OPTARG tem sua definição " +"removida\n" +" e uma mensagem de diagnóstico é mostrada.\n" +" \n" +" Se a variável shell OPTERR possuir o valor 0, getopts desabilita a\n" +" exibição de mensagens de erro, mesmo se o primeiro caractere de\n" +" OPÇÕES não for dois-pontos. OPTERR tem o valor por padrão.\n" +" \n" +" Getopts normalmente analisa os parâmetros posicionais ($0 - $9), mas se\n" +" mais argumentos forem fornecidos, eles serão analisados.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, se uma opção for encontrada; falha se o fim das opções\n" +" for encontrado ou ocorrer um erro." -#: builtins.c:685 +# help exec +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2827,8 +3328,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2838,17 +3339,40 @@ msgid "" " Returns success unless COMMAND is not found or a redirection error " "occurs." msgstr "" +"Substitui o shell com o comando fornecido.\n" +" \n" +" Executa COMANDO, substituindo o shell com o programa especificado.\n" +" ARGUMENTOS se tornam os argumentos para COMANDO. Se COMANDO não for\n" +" especificado, quaisquer redirecionamentos surtem efeito no shell\n" +" atual.\n" +" \n" +" Opções:\n" +" -a NOME\tpassa NOME como argumento zero para COMANDO\n" +" -c\texecuta COMANDO com um ambiente vazio\n" +" -l\tcoloca um traço no argumento zero para COMANDO\n" +" \n" +" Se o comando não puder ser executado, um shell não-interativo sai,\n" +" a menos que a opção `execfail' esteja definida.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que COMANDO não seja encontrado ou ocorrer um\n" +" erro no redirecionamento." -#: builtins.c:706 -#, fuzzy +# help exit +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." -msgstr "Sair da `shell' com status igual a N. Se N for omitido, o status" +msgstr "" +"Sai do shell.\n" +" \n" +" Sai do shell com status igual a N. Se N for omitido, o status\n" +" de saída é o mesmo do último comando executado." -#: builtins.c:715 +# help exit +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2856,8 +3380,13 @@ msgid "" "executed\n" " in a login shell." msgstr "" +"Sai de um shell de login.\n" +" \n" +" Sai de um shell de login com o status de saída N. Retorna um erro\n" +" se não for executada em um shell de login." -#: builtins.c:725 +# help fc +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2886,9 +3415,34 @@ msgid "" " Returns success or status of executed command; non-zero if an error " "occurs." msgstr "" +"Exibe ou executa comandos da lista do histórico.\n" +" \n" +" fc é usado para listar ou editar e re-executar comandos da lista de\n" +" histórico. PRIMEIRO e ÚLTIMO podem ser números especificando o " +"intervalo\n" +" ou PRIMEIRO pode ser uma string, o que significa o comando mais recente\n" +" iniciando com aquela string.\n" +" \n" +" Opções:\n" +" -e EDITOR\tseleciona qual editor usar. O padrão é FCEDIT,\n" +" \t\t\tentão EDITOR, então vi\n" +" -l\t\tlista linhas ao invés de editar\n" +" -n\t\tomite números de linhas ao listar\n" +" -r\t\tordem reversa de linhas (mais novos listados primeiro)\n" +" \n" +" Com o formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', COMANDO é\n" +" re-executado após a substituição ANTIGO=NOVO ser realizada.\n" +" \n" +" Um apelido útil para usar isso é r='fc -s', de forma que digitar `r cc'\n" +" executa o último comando iniciando com `cc' e digitar `r' re-executa\n" +" o último comando.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso ou status do comando executado; ocorrendo um erro,\n" +" retorna não-zero." -#: builtins.c:755 -#, fuzzy +# help fg +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2899,9 +3453,18 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -"Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual." +"Move um trabalho para o primeiro plano.\n" +" \n" +" Coloca o trabalho identificado por ESPEC-JOB em primeiro plano,\n" +" tornando o trabalho atual. Se ESPEC-JOB não estiver presente,\n" +" a noção do shell de trabalho atual é usada.\n" +" \n" +" Status de saída:\n" +" Status do comando colocado em primeiro plano ou falha, se ocorrer um " +"erro." -#: builtins.c:770 +# help bg +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2914,8 +3477,18 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Move trabalhos para o plano de fundo.\n" +"\n" +" Coloca os trabalhos identificados por ESPEC-JOB em plano de fundo,\n" +" como se eles tivessem sido iniciado com `&'. Se ESPEC-JOB não\n" +" estiver presente, a noção do shell de trabalho atual é usada.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que controle de trabalho não esteja\n" +" habilitado ou ocorra um erro." -#: builtins.c:784 +# help hash +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -2924,22 +3497,44 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" +"Memoriza ou exibe localizações de programas.\n" +" \n" +" Determina e memoriza do caminho completo de cada comando NOME. Se " +"nenhum\n" +" argumento for fornecido, exibe informação sobre comandos memorizados.\n" +" \n" +" Opções:\n" +" -d\t\t\tesquece a localização memorizada de cada NOME\n" +" -l\t\t\texibe em um formato que pode ser usado como entrada\n" +" -p CAMINHO\tusa CAMINHO como o caminho completo de NOME\n" +" -r\t\t\tesquece de todas as localizações memorizadas\n" +" -t\t\t\tmostra a localização memorizada de cada NOME, iniciando\n" +" \t\t\t\tcada localização com o NOME correspondente, se múltiplos\n" +" \t\t\t\tNOMEs forem fornecidos\n" +" Argumentos:\n" +" NOME\t\t\tCada NOME é pesquisado em $PATH e adicionado à lista de\n" +" \t\t\t\tcomandos memorizados.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que NOME não seja encontrado ou uma opção\n" +" inválida seja fornecida." -#: builtins.c:809 +# help help +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -2951,7 +3546,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2960,8 +3555,28 @@ msgid "" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" +"Exibe informação sobre comandos internos (builtin).\n" +" \n" +" Exibe resumos de comandos internos. Se PADRÃO for especificado,\n" +" fornece ajuda detalhada sobre todos os comandos correspondendo\n" +" a PADRÃO; do contrário, a lista de tópicos de ajuda é mostrada.\n" +" \n" +" Opções:\n" +" -d\texibe uma descrição breve para cada tópico\n" +" -m\texibe o uso em formato pseudo-manpage\n" +" -s\texibe apenas uma breve sinopse de uso para cada tópico\n" +" \t\tcorrespondendo a PADRÃO\n" +" \n" +" Argumentos:\n" +" PADRÃO\tPadrão especificando um tópico de ajuda\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que PADRÃO não seja encontrado ou uma opção\n" +" inválida seja fornecida." -#: builtins.c:833 +# help history +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -2970,23 +3585,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -2994,8 +3609,41 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Exibe ou manipula a lista de histórico.\n" +" \n" +" Exibe a lista de histórico com números de linhas, prefixando cada\n" +" entrada modificada com um `*'. Um argumento de N lista apenas as\n" +" últimas N entradas.\n" +" \n" +" Opções:\n" +" -c\t\t\tlimpa a lista de histórico ao excluir todas as entradas\n" +" -d POSIÇÃO\texclui a entrada de histórico na posição POSIÇÃO.\n" +" -a\t\t\tanexa linhas de histórico desta sessão no arquivo de\n" +" \t\t\t\thistórico\n" +" -n\t\t\tlê todas as linhas de histórico ainda não lidas do\n" +" \t\t\t\tarquivo de histórico\n" +" -r\t\t\tlê o histórico e anexa os conteúdos à lista de histórico\n" +" -w\t\t\tescreve o histórico atual para o arquivo de histórico e\n" +" \t\t\t\tanexa-os à lista de histórico \n" +" -p\t\t\texecuta expansão de histórico em cada ARG e exibe o\n" +" \t\t\t\tresultado sem armazená-lo na lista de histórico\n" +" -s\t\t\tanexa os ARGs à lista de histórico como uma única entrada\n" +" \n" +" Se ARQUIVO for fornecido, ele é usado como o arquivo de histórico.\n" +" Do contrário, se a variável HISTFILE tiver um valor, este será usado;\n" +" senão, usa de ~/.bash_history.\n" +" \n" +" Se a variável HISTTIMEFORMAT for definida e não for nula, seu valor é\n" +" usado como uma string de formato para strftime(3) para mostrar a marca\n" +" de tempo associada com cada entrada de histórico exibida. Do contrário,\n" +" nenhuma marca de tempo é mostrada.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro." -#: builtins.c:869 +# help jobs +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3005,7 +3653,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3018,8 +3666,30 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" +"Exibe status de trabalhos.\n" +" \n" +" Lista os trabalhos ativos. ESPEC-JOB restringe a saída àquele trabalho.\n" +" Não sendo informado qualquer opção, o status de todos os trabalhos\n" +" ativos é exibido.\n" +" \n" +" Opções:\n" +" -l\tlista IDs de processo junto com a informação normal\n" +" -n\tlista apenas processos que tiverem seu status alterado desde\n" +" \t\ta última notificação\n" +" -p\tlista apenas IDs de processo\n" +" -r\trestringe a saída apenas a trabalhos em execução\n" +" -s\trestringe a saída apenas a trabalhos parados\n" +" \n" +" Se -x for fornecido, COMANDO é executado após as demais especificações\n" +" de trabalho que aparecerem em ARGs terem sido substituídas com o ID de\n" +" processo daquele líder de grupo de processos do trabalhos.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro. Se -x for usado, retorna o status de saída do COMANDO." -#: builtins.c:896 +# help disown +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3029,14 +3699,30 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"Remove trabalhos do shell atual.\n" +" \n" +" Remove cada argumento ESPEC-JOB da tabela de trabalhos ativos. Sem\n" +" qualquer ESPEC-JOB, o shell usa sua noção de trabalho atual.\n" +" \n" +" Opções:\n" +" -a\tremove todos os trabalhos se ESPEC-JOB não for fornecido\n" +" -h\tmarca cada ESPEC-JOB, de forma que SIGHUP não seja fornecido\n" +" \t\tao trabalho, caso o shell receba um SIGHUP\n" +" -r\tremove apenas trabalhos em execução\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida ou ESPEC-JOB inválido\n" +" sejam fornecidos." -#: builtins.c:915 +# help kill +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3048,7 +3734,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3057,8 +3744,30 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Envia um sinal para um trabalho.\n" +"\n" +" Envia aos processos identificados pelo PID ou pelo ESPEC-JOB o sinal\n" +" informado por SIGSPEC ou SIGNUM. Se SIGSPEC e SIGNUM\n" +" não estiverem presentes, então, SIGTERM é presumido.\n" +" \n" +" Opções:\n" +" -s SIGSPEC\tSIGSPEC especifica o nome do sinal\n" +" -n SIGNUM\t\tSIGNUM representa um número de sinal\n" +" -l\t\t\tlista os nomes dos sinais; se `-l' for acompanhado por\n" +" \t\t\t\toutros argumentos, presume-se estes sejam números de\n" +" \t\t\t\tsinais para os quais nomes deveriam ser listados\n" +" \n" +" `Kill' é um comando interno do shell por duas razões: ele permite\n" +" IDs de trabalho serem usados ao invés de IDs de processo e permite\n" +" que processos sejam matados caso o limite de processos que você pode\n" +" criar seja atingido.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro." -#: builtins.c:938 +# help let +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3102,8 +3811,49 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" +"Avalia expressões aritméticas.\n" +" \n" +" Avalia cada ARG como uma expressão aritmética. A avaliação é feita\n" +" em inteiros com largura fixa com nenhuma verificação de estouro de\n" +" pilha. A lista de operadores a seguir está agrupada em níveis de\n" +" operadores de igual precedência. Os níveis estão listados em ordem\n" +" de precedência decrescente.\n" +" \n" +" \tid++, id-- pós-acréscimo, pós-decréscimo de variável\n" +" \t++id, --id pré-acréscimo, pré-decréscimo de variável\n" +" \t-, + menos, mais unário\n" +" \t!, ~ negação lógica e bit-a-bit\n" +" \t** exponenciação\n" +" \t*, /, % multiplicação, divisão, resto de divisão\n" +" \t+, - adição, subtração\n" +" \t<<, >> deslocamento bit-a-bit para esquerda, direita\n" +" \t<=, >=, <, > comparação\n" +" \t==, != igualdade, desigualdade\n" +" \t& E (AND) bit-a-bit\n" +" \t^ OU eXclusivo (XOR) bit-a-bit\n" +" \t| OU (OR) bit-a-bit\n" +" \t&& E lógico\n" +" \t|| OU lógico\n" +" \texpr ? expr : expr operador condicional\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |= atribuição\n" +" \n" +" As variáveis de shell são permitidas como operandos. O nome da\n" +" variável é substituída pelo seu valor (coagida a um inteiro com\n" +" largura fixa) dentro de uma expressão. A variável não precisa ter\n" +" seu atributo de `inteiro' ligado para ser usada em uma expressão.\n" +" \n" +" Operadores são avaliados em ordem de precedência. Sub-expressões em\n" +" parênteses são avaliados primeiro e podem sobrescrever as regras de\n" +" precedência acima.\n" +" \n" +" Status de saída:\n" +" Se o último ARG for avaliado como 0, let retorna 1; do contrário,\n" +" let retorna 0." -#: builtins.c:983 +# help read +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3124,27 +3874,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3153,8 +3904,63 @@ msgid "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" +"Lê uma linha da entrada padrão e separa em campos.\n" +"\n" +" Lê uma linha da entrada padrão ou do descritor de arquivo FD, caso a\n" +" opção -u seja fornecida. A linha é separada em campos, na mesma forma " +"de\n" +" separação de palavras, e a primeira palavra é atribuída ao primeiro " +"NOME,\n" +" o segundo ao segundo NOME e por aí vai, com qualquer palavras restantes\n" +" atribuídas para o último NOME. Apenas os caracteres encontrados em $IFS\n" +" são reconhecidos como delimitadores de palavras.\n" +" \n" +" Se nenhum NOME for fornecido, a linha lida é armazenada na variável\n" +" REPLY (resposta).\n" +" \n" +" Opções:\n" +" -a ARRAY atribui as palavras lidas a índices sequenciais da\n" +" variável array ARRAY, iniciando em zero\n" +" -d DELIM continua até o primeiro caractere de DELIM ser lido, ao\n" +" invés de nova linha\n" +" -e usa Readline para obter a linha em um shell interativo\n" +" -i TEXTO usa TEXTO como o texto inicial para Readline\n" +" -n NCHARS retorna após ler NCHARS caracteres, ao invés de esperar\n" +" por uma nova linha, mas respeita um delimitador se " +"número\n" +" de caracteres menor que NCHARS sejam lidos antes do\n" +" delimitador\n" +" -N NCHARS retorna apenas após ler exatamente NCHARS caracteres, a\n" +" menos que EOF (fim do arquivo) seja encontrado ou " +"`read'\n" +" esgote o tempo limite, ignorando qualquer delimitador\n" +" -p CONFIRMAR mostra a string PROMPT sem remover nova linha antes de\n" +" tentar ler\n" +" -r não mostra barra invertida para escapar quaisquer\n" +" caracteres\n" +" -s não ecoa entrada vindo de um terminal\n" +" -t TEMPO esgota-se o tempo limite e retorna falha, caso uma toda\n" +" uma linha não seja lida em TEMPO segundos. O valor da\n" +" variável TMOUT é o tempo limite padrão. TEMPO pode ser " +"um\n" +" número fracionado. SE TEMPO for 0, `read' retorna " +"sucesso\n" +" apenas se a entrada estiver disponível no descritor de\n" +" arquivo especificado. O status de saída é maior que " +"128,\n" +" se o tempo limite for excedido\n" +" -u FD lê do descritor de arquivo FD, ao invés da entrada " +"padrão\n" +" \n" +" Status de saída:\n" +" O código de retorno é zero, a menos que o EOF (fim do arquivo) seja\n" +" encontrado, `read' esgote o tempo limite (caso em que o código de " +"retorno\n" +" será 128), ocorra erro de atribuição de uma variável ou um descritor de\n" +" arquivo inválido seja fornecido como argumento para -u." -#: builtins.c:1028 +# help return +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3165,8 +3971,19 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" +"Retorna de uma função de shell.\n" +" \n" +" Causa uma função ou script carregado (source) a sair retornando o valor\n" +" especificado por N. Se N for omitido, o status de retorno é do último\n" +" comando executado dentro da função ou script.\n" +" \n" +" Status de saída:\n" +" Retorna N ou falha se o shell não estiver executando uma função ou\n" +" script." -#: builtins.c:1041 +# help set +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3234,7 +4051,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3250,8 +4068,107 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" +"Define ou remove definição de valores das opções e dos parâmetros " +"posicionais\n" +"do shell:\n" +" \n" +" Altera o valor de opções e de parâmetros posicionais do shell ou mostra\n" +" os nomes ou valores de variáveis shell.\n" +" \n" +" Opções:\n" +" -a Marca variáveis, que foram modificadas ou criadas, para " +"exportação.\n" +" -b Notifica sobre terminação de trabalho imediatamente.\n" +" -e Sai imediatamente se um comando sai com um status não-zero.\n" +" -f Desabilita a geração de nome de arquivo (\"globbing\").\n" +" -h Memoriza a localização de comandos à medida em que são " +"procurados.\n" +" -k Todos argumentos de atribuição são colocados no ambiente para um\n" +" comando, e não apenas aqueles que precedem o nome do comando.\n" +" -m Controle de trabalho está habilitado.\n" +" -n Lê comandos, mas não os executa.\n" +" -o NOME-OPÇÃO\n" +" Define a variável correspondendo a NOME-OPÇÃO:\n" +" allexport mesmo que -a\n" +" braceexpand mesmo que -B\n" +" emacs usa interface de edição de linha estilo Emacs\n" +" errexit mesmo que -e\n" +" errtrace mesmo que -E\n" +" functrace mesmo que -T\n" +" hashall mesmo que -h\n" +" histexpand mesmo que -H\n" +" history habilita histórico de comandos\n" +" ignoreeof shell não vai sair após leitura de EOF\n" +" interactive-comments\n" +" permite mostrar comentários em comandos " +"interativos\n" +" keyword mesmo que -k\n" +" monitor mesmo que -m\n" +" noclobber mesmo que -C\n" +" noexec mesmo que -n\n" +" noglob mesmo que -f\n" +" nolog atualmente aceito, mas ignorado\n" +" notify mesmo que -b\n" +" nounset mesmo que -u\n" +" onecmd mesmo que -t\n" +" physical mesmo que -P\n" +" pipefail o valor de retorno de uma linha de comandos é o\n" +" status do último comando a sair com status não-" +"zero,\n" +" ou zero se nenhum comando saiu com status não " +"zero\n" +" posix altera o comportamento do bash, onde a operação\n" +" padrão diverge dos padrões do Posix para\n" +" corresponder a estes padrões\n" +" privileged mesmo que -p\n" +" verbose mesmo que -v\n" +" vi usa interface de edição de linha estilo vi\n" +" xtrace mesmo que -x\n" +" -p Ligado sempre que IDs de usuário real e efetivo não " +"corresponderem.\n" +" Desabilita processamento do arquivo $ENV e importação de funções " +"da\n" +" shell. Ao desligar essa opção, causa o uid e o gid efetivo serem\n" +" os uid e gid reais.\n" +" -t Sai após a leitura e execução de um comando.\n" +" -u Trata limpeza (unset) de variáveis como um erro quando " +"substituindo.\n" +" -v Mostra linhas de entrada do shell na medida em que forem lidas.\n" +" -x Mostra comandos e seus argumentos na medida em que forme " +"executados.\n" +" -B o shell vai realizar expansão de chaves\n" +" -C Se definido, não permite arquivos normais existentes serem\n" +" sobrescritos por redirecionamento da saída.\n" +" -E Se definido, a armadilha ERR é herdada por funções do shell.\n" +" -H Habilita substituição de histórico estilo \"!\". Essa sinalização " +"está\n" +" habilitada por padrão quando shell é interativa.\n" +" -P Se definida, não resolve links simbólicos ao sair de comandos, " +"tais\n" +" como `cd' (que altera o diretório atual).\n" +" -T Se definido, a armadilha DEBUG é herdada por funções do shell.\n" +" -- Atribui quaisquer argumentos restantes aos parâmetros " +"posicionais.\n" +" Se não houver argumentos restantes, os parâmetros posicionais são\n" +" limpos (unset).\n" +" - Atribui quaisquer argumentos restantes aos parâmetros " +"posicionais.\n" +" As opções -x e -v são desligadas.\n" +" \n" +" Usar +, ao invés de -, causa essas sinalizações serem desligadas. As\n" +" sinalizações também podem ser usadas por meio de chamada do shell. As\n" +" sinalizações atualmente definidas podem ser encontradas em $-. Os n " +"ARGs\n" +" restantes são parâmetros posicionais e são atribuídos, em ordem, a $1, " +"$2,\n" +" .. $n. Se nenhuma ARG for fornecido, todas as variáveis shell são\n" +" mostradas.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida." -#: builtins.c:1126 +# help unset +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3261,7 +4178,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3272,8 +4189,27 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" +"Remove valores e atributos de variáveis e funções do shell.\n" +" \n" +" Para cada NOME, remove a variável ou função correspondente.\n" +" \n" +" Opções:\n" +" -f trata cada NOME como uma função de shell\n" +" -v trata cada NOME como uma variável de shell\n" +" -n trata cada NOME como um nome referência e remove o valor em si\n" +" ao invés da variável a qual ele se refere\n" +" \n" +" Se opções, `unset' primeiro tenta remover uma variável e, se falhar,\n" +" tenta remover uma função.\n" +" \n" +" Algumas variáveis não podem ser removida; veja também `readonly'.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" um NOME seja somente-leitura." -#: builtins.c:1148 +# help export +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3291,8 +4227,26 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Define atributo de exportação para variáveis shell.\n" +" \n" +" Marca cada NOME para exportação automática para o ambiente dos comandos\n" +" executados subsequentemente. Se VALOR for fornecido, atribui VALOR " +"antes\n" +" de exportar.\n" +" \n" +" Opções:\n" +" -f\tfaz referência a funções do shell\n" +" -n\tremove a propriedade de exportação para cada NOME\n" +" -p\texibe uma lista de todas as variáveis e funções exportadas\n" +" \n" +" Um argumento de `--' desabilita processamento de opções posteriores.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" NOME seja inválido." -#: builtins.c:1167 +# help readonly +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3304,17 +4258,35 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Marca variáveis shell como inalteráveis.\n" +" \n" +" Marca cada NOME como somente-leitura; os valores desses NOMEs pode não\n" +" ser alterados por atribuídos subsequentes. Se VALOR for fornecido,\n" +" atribui VALOR antes de marcar como somente-leitura.\n" +" \n" +" Opções:\n" +" -a\tfaz referência a variáveis array indexados\n" +" -A\tfaz referência a variáveis array associativos\n" +" -f\tfaz referência a funções de shell\n" +" -p\texibe uma lista de todas as variáveis ou funções somente-leitura,\n" +" \t\tdependendo da opção -f ser informada ou não\n" +" \n" +" Um argumento de `--' desabilita processamento de opções posteriores.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" NOME seja inválido." -#: builtins.c:1189 +# help shift +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3324,8 +4296,17 @@ msgid "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." msgstr "" +"Desloca parâmetros posicionais.\n" +" \n" +" Renomeia os parâmetros posicionais $N+1,$N+2 ... até $1,$2 ... Se N " +"não\n" +" for fornecido, presume-se que ele seja 1.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que N seja negativo ou maior que $#." -#: builtins.c:1201 builtins.c:1216 +# help source +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3338,8 +4319,19 @@ msgid "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." msgstr "" +"Executa comandos de um arquivo no shell atual.\n" +" \n" +" Lê e executa comandos de ARQUIVO no shell atual. As entradas em\n" +" $PATH são usadas para localizar o diretório contendo ARQUIVO. Se\n" +" quaisquer ARGUMENTOS forem fornecidos, eles se tornam parâmetros\n" +" posicionais quando ARQUIVO é executado.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado em ARQUIVO; falha se\n" +" ARQUIVO não puder ser lido." -#: builtins.c:1232 +# help suspend +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3352,8 +4344,20 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Suspende execução do shell.\n" +" \n" +" Suspende a execução deste shell até que receba um sinal SIGCONT.\n" +" A menos que seja forçado, `shells` de login não podem ser suspensas.\n" +" \n" +" Opções:\n" +" -f\tforça a suspensão, ainda que o shell seja um de login\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que controle de trabalho não esteja habilitado\n" +" ou ocorra um erro." -#: builtins.c:1248 +# help test +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3417,9 +4421,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3435,17 +4439,108 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" +"Avalia expressão condicional.\n" +" \n" +" Sai com um status de 0 (verdadeiro) ou 1 (falso) dependendo da " +"avaliação\n" +" de EXPR. As expressões podem ser unárias ou binárias. Expressões " +"unárias\n" +" são normalmente usadas para examinar o status de um arquivo. Há\n" +" operadores de strings e também há operadores de comparação numérica.\n" +" \n" +" O comportamento do teste depende do número de argumentos. Leia a página\n" +" de manual do `bash' para a especificação completa.\n" +" \n" +" Operadores de arquivos:\n" +" \n" +" -a ARQUIVO Verdadeiro, se arquivo existir.\n" +" -b ARQUIVO Verdadeiro, se arquivo for um bloco especial.\n" +" -c ARQUIVO Verdadeiro, se arquivo for um caractere especial.\n" +" -d ARQUIVO Verdadeiro, se arquivo for um diretório.\n" +" -e ARQUIVO Verdadeiro, se arquivo existir.\n" +" -f ARQUIVO Verdadeiro, se arquivo existir e for um arquivo " +"normal.\n" +" -g ARQUIVO Verdadeiro, se arquivo for set-group-id.\n" +" -h ARQUIVO Verdadeiro, se arquivo for um link simbólico.\n" +" -L ARQUIVO Verdadeiro, se arquivo for um link simbólico.\n" +" -k ARQUIVO Verdadeiro, se arquivo tiver o bit `sticky' definido.\n" +" -p ARQUIVO Verdadeiro, se arquivo for um `pipe' dado.\n" +" -r ARQUIVO Verdadeiro, se arquivo for um legível por você.\n" +" -s ARQUIVO Verdadeiro, se arquivo existir e não estiver vazio.\n" +" -S ARQUIVO Verdadeiro, se arquivo for um socket.\n" +" -t FD Verdadeiro, se FD estiver aberto em um terminal.\n" +" -u ARQUIVO Verdadeiro, se arquivo estiver com set-user-id.\n" +" -w ARQUIVO Verdadeiro, se arquivo puder ser escrito por você.\n" +" -x ARQUIVO Verdadeiro, se arquivo puder ser executado por você.\n" +" -O ARQUIVO Verdadeiro, se arquivo efetivamente for seu (owned).\n" +" -G ARQUIVO Verdadeiro, se arquivo efetivamente for do seu grupo.\n" +" -N ARQUIVO Verdadeiro, se arquivo foi modificado desde a última\n" +" leitura.\n" +" \n" +" ARQ1 -nt ARQ2 Verdadeiro se ARQ1 for mais novo que ARQ2, conforme\n" +" última data de modificação.\n" +" \n" +" ARQ1 -ot ARQ2 Verdadeiro, se ARQ1 for mais velho que ARQ2.\n" +" \n" +" ARQ1 -ef ARQ2 Verdadeiro, se ARQ1 for um link rígido para ARQ2.\n" +" \n" +" Operadores de string:\n" +" \n" +" -z STRING Verdadeiro, se string estiver vazia.\n" +" \n" +" -n STRING\n" +" STRING Verdadeiro, se string não estiver vazia.\n" +" \n" +" STRING1 = STRING2\n" +" Verdadeiro, se strings forem iguais.\n" +" STRING1 != STRING2\n" +" Verdadeiro, se strings não forem iguais.\n" +" STRING1 < STRING2\n" +" Verdadeiro, se STRING1 estiver antes de STRING2, de\n" +" acordo com a ordem alfabética.\n" +" STRING1 > STRING2\n" +" Verdadeiro, se STRING1 estiver depois de STRING2, de\n" +" acordo com a ordem alfabética.\n" +" \n" +" Outros operadores:\n" +" \n" +" -o OPÇÃO Verdadeiro, se a opção shell OPÇÃO estiver habilitada.\n" +" -v VAR Verdadeiro, se a variável shell VAR estiver definida.\n" +" -R VAR Verdadeiro, se a variável shell VAR estiver definida\n" +" e for uma referência de nome.\n" +" ! EXPR Verdadeiro, se a expressão EXPR for falsa.\n" +" EXPR1 -a EXPR2 Verdadeiro, se ambas EXPR1 e EXPR2 forem verdadeiras.\n" +" EXPR1 -o EXPR2 Verdadeiro, se ao menos uma das expressões for " +"verdadeira.\n" +" \n" +" arg1 OP arg2 Testes aritméticos. OP é um dentre -eq, -ne, -lt, -" +"le,\n" +" -gt, or -ge.\n" +" \n" +" Operadores binários de aritmética retornam verdadeiro se ARG1 for " +"igual,\n" +" não-igual, menor-que, menor-ou-igual-a ou maior-ou-igual-a ARG2.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, se EXPR for avaliada como verdadeira; falha, se EXPR " +"for\n" +" avaliada como falsa ou um argumento inválido for informado." -#: builtins.c:1329 -#, fuzzy +# help [ +#: builtins.c:1336 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 "argumento deve ser o literal `]', para fechar o `[' de abertura." +msgstr "" +"Avalia expressões condicionais.\n" +" \n" +" Esse é um sinônimo para o comando interno `test', mas o último\n" +" argumento deve ser um `]' literal, para corresponder ao `[' que abriu." -#: builtins.c:1338 +# help times +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3456,8 +4551,16 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"Exibe tempos de processos.\n" +" \n" +" Imprime os tempos de sistema e de usuário acumulados pelo shell e\n" +" todos seus processo filhos.\n" +" \n" +" Status de saída:\n" +" Sempre com sucesso." -#: builtins.c:1350 +# help trap +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3500,8 +4603,45 @@ msgid "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." msgstr "" +"Tratamento de sinais e outros eventos.\n" +" \n" +" Define e ativa manipuladores a serem executados quando o shell recebe\n" +" sinais ou outras condições.\n" +" \n" +" ARG é um comando a ser lido e executado quando o shell recebe o\n" +" ESPEC-SINAL do(s) sinal(is). Se ARG for vazio (e um único ESPEC-SINAL\n" +" for informado) ou `-', cada sinal especificado é redefinido para seu\n" +" valor original. Se ARG for uma string nula, cada ESPEC-SINAL é ignorado\n" +" pela seu shell e pelos comados chamados por ela.\n" +" \n" +" Se um ESPEC-SINAL for EXIT (0), ARG é executado na saída do shell.\n" +" Se ESPEC-SINAL for DEBUG, ARG é executado antes de todo comando.\n" +" Se ESPEC-SINAL for RETURN, ARG é executado toda vez que uma função ou\n" +" um script shell executados pelos comandos internos `.' ou `source'\n" +" finalizarem suas execuções. Um ESPEC-SINAL sendo ERR significa executar\n" +" ARG toda vez que uma falha do comando poderia causar o shell sair,\n" +" quando a opção -e está habilitada.\n" +" \n" +" Se nenhum argumento for fornecido, `trap' imprime a lista de comandos\n" +" associados a cada sinal.\n" +" \n" +" Opções:\n" +" -l\timprime uma lista de nomes de sinais e seus números\n" +" \t\tcorrespondentes\n" +" -p\texibe os comandos associados ao tratamento com cada\n" +" \t\tESPEC-SINAL\n" +" \n" +" Cada ESPEC-SINAL é um nome de sinal em ou um número\n" +" de sinal. Nomes de sinais são sensíveis a caracteres maiúsculo e\n" +" minúsculo e o prefixo SIG (sinal) é opcional. Um SINAL pode ser enviado\n" +" para o shell com \"kill -SINAL $$\".\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que um ESPEC-SINAL seja inválido ou\n" +" uma opção inválida seja fornecida." -#: builtins.c:1386 +# help type +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3510,18 +4650,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3530,8 +4670,35 @@ msgid "" " Returns success if all of the NAMEs are found; fails if any are not " "found." msgstr "" +"Exibe informação sobre o tipo de comando.\n" +" \n" +" Para cada NOME, indica como ele seria interpretado se fosse usado como\n" +" um nome de comando.\n" +" \n" +" Opções:\n" +" -a\texibe todas as localizações contendo um executável chamado NOME;\n" +" \t\tinclui apelidos (alias), comandos internos e funções,\n" +" \t\tse, e somente se, a opção `-p' não for usada em conjunto\n" +" -f\tsuprime a procura por função do shell\n" +" -P\tforça uma pesquisa em PATH por cada NOME, mesmo se ele for\n" +" \t\tum apelido, um comando interno ou uma função, e retorna o nome\n" +" \t\tdo arquivo de disco que seria executado\n" +" -p\tretorna o nome do arquivo de disco que seria executado ou nada,\n" +" \t\tse `type -t NOME' não retornasse `file'\n" +" -t\tmostra uma única palavra que é uma dentre `alias', `keyword',\n" +" \t\t`function', `builtin', `file' ou `', se NOME for um apelido,\n" +" \t\tpalavra reservada da shell, comando interno do shell,\n" +" \t\tarquivo de disco ou não encontrado, respectivamente\n" +" \n" +" Argumentos:\n" +" NOME\tNome de comando a ser interpretado.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, se todos os NOMEs forem encontrados; falha, se algum\n" +" deles não for encontrado." -#: builtins.c:1417 +# help ulimit +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3549,6 +4716,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3560,7 +4728,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3577,8 +4746,54 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Modifica limites de recursos do shell.\n" +" \n" +" Fornece controle sobre os recursos disponíveis para o shell e\n" +" seus processos, em sistemas que permitem tal controle.\n" +" \n" +" Opções:\n" +" -S\tusa um limite `soft' de recursos\n" +" -H\tusa um limite `hard' de recursos\n" +" -a\ttodos os limites atuais são relatados\n" +" -b\to tamanho do buffer do socket\n" +" -c\to tamanho máximo dos arquivos centrais criados\n" +" -d\to tamanho máximo de um segmento de dados do processo\n" +" -e\ta prioridade máxima de agendamento (`nice')\n" +" -f\to tamanho máximo de arquivos escritos pelo shell e seus filhos\n" +" -i\to número máximo de sinais pendentes\n" +" -k\to número máximo de kqueues alocadas para este processo\n" +" -l\to tamanho máximo que um processo pode alocar da memória\n" +" -m\to tamanho máximo de conjunto residente\n" +" -n\to número máximo de descritores de arquivo abertos\n" +" -p\to tamanho de buffer de `pipe'\n" +" -q\to número máximo de bytes em files de mensagem POSIX\n" +" -r\to tempo real máximo de prioridade de agendamento\n" +" -s\to tamanho máximo de pilha\n" +" -t\ta quantidade máxima de tempo de CPU em segundos\n" +" -u\to número máximo de processos de usuário\n" +" -v\to tamanho de memória virtual\n" +" -x\to número máximo de travas de arquivos\n" +" -P\to número máximo de pseudo-terminais\n" +" -T\to número máximo de fluxos (threads)\n" +" \n" +" Nem todas as opções estão disponíveis em todas as plataformas.\n" +" \n" +" Se LIMITE for fornecido, ele é o novo valor do recurso especificado;\n" +" os valores especiais de LIMITE `soft', `hard' e `unlimited' referem-se\n" +" ao atual limite suave, o atual limite rígido e nenhum limite,\n" +" respectivamente. Do contrário, o valor atual do recurso especificado\n" +" é impresso. Se nenhuma opção for fornecida, então -f é presumida.\n" +" \n" +" Valores estão em acréscimos de 1024 bytes, exceto para -t, que está\n" +" em segundos; -p, que é em 512 bytes; e -u, que é um número sem\n" +" escala de processos.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro." -#: builtins.c:1465 +# help umask +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3595,8 +4810,26 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" +"Exibe ou define máscara de modo de arquivo.\n" +" \n" +" Define a máscara de criação de arquivos do usuário para MODO. Se MODO\n" +" for omitido, imprime o valor atual da máscara.\n" +" \n" +" Se MODO inicia com um dígito, ele é interpretado como um número octal;\n" +" do contrário, ele é uma string de modo simbólico como a que é aceita\n" +" pelo chmod(1).\n" +" \n" +" Opções:\n" +" -p\tse MODO for omitido, exibe em um formulário que pode ser usado\n" +" \t\tcomo entrada\n" +" -S\ttorna a saída simbólica; do contrário, um número octal é mostrado\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que MODO seja inválido ou uma opção\n" +" inválida seja fornecida." -#: builtins.c:1485 +# help wait +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3615,8 +4848,24 @@ msgid "" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" +"Espera por conclusão de trabalho e retorna o status de saída.\n" +" \n" +" Espera por cada processo identificado por um ID, o que pode ser um ID\n" +" de processo ou uma especificação de trabalho, e relata seu status de\n" +" término. Se ID não for fornecido, espera por todos os processos filhos\n" +" ativos e o status de retorno é zero. Se ID é uma especificação de\n" +" trabalho, espera por todos os processos naquela sequência de comandos\n" +" dos trabalhos.\n" +" \n" +" Se a opção -n for fornecida, espera pelo próximo trabalho terminar e\n" +" retorna seu status de trabalho.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último ID; falha, se ID for inválido ou uma opção\n" +" inválida for fornecida." -#: builtins.c:1506 +# help wait +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3630,8 +4879,19 @@ msgid "" "invalid\n" " option is given." msgstr "" +"Espera por conclusão de processo e retorna o status de saída.\n" +" \n" +" Espera por cada processo especificado por um PID e relata seu status\n" +" de término. SE PID não for fornecido, espera por todos os processos\n" +" filhos atualmente ativos e o status de retorno é zero. PID deve ser\n" +" um ID de processo.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último ID; falha, se ID for inválido ou uma opção\n" +" inválida for fornecida." -#: builtins.c:1521 +# help for +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3643,8 +4903,19 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Executa comandos para cada membro em uma lista.\n" +" \n" +" O loop `for' executa uma sequência de comandos para cada membro em\n" +" uma lista de itens. Se `in PALAVRAS ...;' não estiver presente, então\n" +" `in \"$@\"' é presumido. Para cada elemento em PALAVRAS, NOME é " +"definido\n" +" com aquele elemento e os COMANDOS são executados.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." -#: builtins.c:1535 +# help for (( (?) +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3660,8 +4931,22 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Loop `for' aritmético.\n" +" \n" +" Equivalente a\n" +" \t(( EXPR1 ))\n" +" \twhile (( EXPR2 )); do\n" +" \t\tCOMANDOS\n" +" \t\t(( EXPR3 ))\n" +" \tdone\n" +" EXPR1, EXPR2 e EXPR3 são expressões aritméticas. Se alguma expressão\n" +" for omitida, ele se comporta como se a avaliação resultasse em 1.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." -#: builtins.c:1553 +# help select +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3680,8 +4965,26 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Seleciona palavras de uma lista e executa comandos.\n" +" \n" +" As PALAVRAS são expandidas, gerando uma lista de palavras.\n" +" O conjunto de palavras expandidas é exibido no erro padrão,\n" +" cada um precedido por um número. Se `in PALAVRAS' não estiver\n" +" presente, `in \"$@\"' é presumido. Então, o prompt PS3 é exibido\n" +" e uma linha é lida da entrada padrão. Se a linha consiste\n" +" do número correspondendo àquele nas palavras exibidas, então\n" +" NOME é definido para aquela palavra. Se a linha estiver vazia,\n" +" PALAVRAS e o prompt são exibidos novamente. Se EOF (fim do\n" +" arquivo) for lido, o comando conclui. Qualquer outro valor\n" +" lido causa NOME ser definido como nulo. A linha lida é salva\n" +" na variável REPLY. COMANDOS são executados após cada seleção\n" +" até um comando `break' ser executado.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." -#: builtins.c:1574 +# help time +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3696,9 +4999,22 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" +"Relata o tempo consumido pela execução da linha de comandos.\n" +" \n" +" Executa LINHA-COMANDOS e imprime um resumo do tempo real,\n" +" tempo de CPU do usuário e do sistema, gastos executando\n" +" LINHA-COMANDOS, quando este terminar.\n" +" \n" +" Opções:\n" +" -p\timprime o resumo do tempo no formato portátil do Posix\n" +" \n" +" O valor da variável TIMEFORMAT é usada como formato de saída.\n" +" \n" +" Status de saída:\n" +" O status de retorno é o status retornado por LINHA-COMANDOS." -#: builtins.c:1591 -#, fuzzy +# help case +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3708,9 +5024,16 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Executar seletivamente COMANDOS tomando por base a correspondência entre" +"Executa comandos baseados em correspondência de padrão.\n" +" \n" +" Seletivamente executa COMANDOS baseados na PALAVRA correspondendo\n" +" a PADRÃO. O `|' é usado para separar múltiplos padrões.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." -#: builtins.c:1603 +# help if +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3730,9 +5053,22 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Executa comandos baseados em condicional.\n" +" \n" +" A lista `if COMANDOS' é executada. Se seu status de saída for zero,\n" +" então a lista `then COMANDOS' é executada. Do contrário, cada lista\n" +" `elif COMANDOS' é executada em turnos e, se seu status de saída for\n" +" zero, a lista `then COMANDOS' correspondente é executada e o comando\n" +" `if' conclui. Do contrário, a lista `else COMANDOS' é executada, se\n" +" presente. O status de saída de toda construção é o status de saída do\n" +" último comando executado, ou zero, se nenhuma condição testada\n" +" resultou em verdadeiro.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." -#: builtins.c:1620 -#, fuzzy +# help while +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3741,10 +5077,17 @@ msgid "" " \n" " Exit Status:\n" " Returns the status of the last command executed." -msgstr "Expande e executa COMANDOS enquanto o comando final nos" +msgstr "" +"Executa comandos desde que se obtenha sucesso nos testes.\n" +" \n" +" Expande e executa COMANDOS desde que o último comando nos\n" +" COMANDOS de `while' tenham status de saída zero.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." -#: builtins.c:1632 -#, fuzzy +# help until +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3753,9 +5096,19 @@ msgid "" " \n" " Exit Status:\n" " Returns the status of the last command executed." -msgstr "Expande e executa COMANDOS enquanto o comando final nos" +msgstr "" +"Executa comandos desde que não se obtenha sucesso nos testes.\n" +" \n" +" Expande e executa COMANDOS desde que o último comando nos\n" +" COMANDOS de `until' tenham status de saída zero que seja\n" +" não-zero.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." -#: builtins.c:1644 +# help coproc +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3765,10 +5118,20 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" +"Cria um coprocesso chamado NOME.\n" +" \n" +" Executa COMANDO assincronamente, com a saída padrão e entrada padrão\n" +" do comando conectados via um `pipe' (redirecionamento) para descritores\n" +" de arquivo atribuídos para índices 0 e 1 de uma variável array NOME\n" +" no shell em execução. O NOME padrão é \"COPROC\".\n" +" \n" +" Status de saída:\n" +" Retorna o status de saída de COMANDO." -#: builtins.c:1658 +# help function +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3781,9 +5144,18 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is readonly." msgstr "" +"Define uma função de shell.\n" +" \n" +" Cria uma função de shell chamada NOME. Quando chamado como um comando\n" +" simples, NOME executa COMANDOs no contexto de chamada shell. Quando\n" +" NOME é chamado, os argumentos são passados para a função como $1..$n\n" +" e o nome da função está em $FUNCNAME.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que NOME seja somente-leitura." -#: builtins.c:1672 -#, fuzzy +# help -m { +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3792,9 +5164,16 @@ msgid "" " \n" " Exit Status:\n" " Returns the status of the last command executed." -msgstr "Executa um conjunto de comandos agrupando-os. Esta é uma forma de" +msgstr "" +"Agrupa comandos como uma unidade.\n" +" \n" +" Executa um conjunto de comandos em um grupo. Essa é uma\n" +" forma de redirecionar um todo um conjunto de comandos.\n" +" \n" +" Status de saída:\n" +" Retorna o status do último comando executado." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3807,8 +5186,20 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" +"Resume trabalho em primeiro plano.\n" +" \n" +" Equivalente ao argumento ESPEC-JOB para comando `fg'. Resume um\n" +" trabalho parado ou enviado para plano de fundo. ESPEC-JOB pode\n" +" especificar tanto um nome de trabalho quanto um número de trabalho.\n" +" ESPEC-JOB seguido de um `&' coloca o trabalho em plano de fundo,\n" +" como se a especificação do trabalho tivesse sido fornecida como um\n" +" argumento para `bg'.\n" +" \n" +" Status de saída:\n" +" Retorna o status de um trabalho resumido." -#: builtins.c:1699 +# help '((' +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3818,8 +5209,16 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" +"Avalia expressões aritméticas.\n" +" \n" +" A EXPRESSÃO é avaliada de acordo com as regras de avaliação aritmética.\n" +" Equivalente a \"let EXPRESSÃO\".\n" +" \n" +" Status de saída:\n" +" Retorna 1, se EXPRESSÃO for avaliada como 0; do contrário, retorna 0." -#: builtins.c:1711 +# help '[' +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3846,8 +5245,33 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" +"Executa comando condicional.\n" +" \n" +" Retorna um status de 0 ou 1 dependendo da avaliação da expressão\n" +" condicional EXPRESSÃO. Expressões são compostas dos mesmos primários\n" +" usados pelo comando interno `test' e pode ser combinado usando os\n" +" seguintes operadores:\n" +" \n" +" ( EXPRESSÃO )\tRetorna o valor de EXPRESSÃO\n" +" ! EXPRESSÃO\tVerdadeiro, se EXPRESSÃO for falsa; senão, falso\n" +" EXPR1 && EXPR2\tVerdadeiro, se ambas EXPR1 e EXPR2 forem verdadeiras;\n" +" \t\t\tsenão, falso\n" +" EXPR1 || EXPR2\tVerdadeiro, se EXPR1 ou EXPR2 for verdadeira;\n" +" \t\t\tsenão, falso\n" +" \n" +" Quando os operadores `==' e `!=' forem usados, a string à direita do\n" +" operador é usado como um padrão e uma correspondência de padrão é\n" +" realizada. Quando o operador `=~' é usado, a string à direita do\n" +" operador é correspondida como uma expressão regular.\n" +" \n" +" Os operadores && e || não avaliam EXPR2, se EXPR1 for suficiente para\n" +" determinar o valor da expressão.\n" +" \n" +" Status de saída:\n" +" 0 ou 1 dependendo do valor de EXPRESSÃO." -#: builtins.c:1737 +# help variables +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3900,8 +5324,70 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" +"Nomes e uso de variáveis comuns do shell.\n" +" \n" +" BASH_VERSION\tInformação da versão deste Bash.\n" +" CDPATH\t\tUma lista separada por dois-pontos de diretórios para\n" +" \t\t\tpesquisar por diretórios fornecidos como argumentos a `cd'.\n" +" GLOBIGNORE\t\tUma lista separada por dois-pontos de padrões descrevendo\n" +" \t\t\tarquivos a serem ignorados pela expansão de caminho.\n" +" HISTFILE\t\tO nome do arquivo no qual o histórico de comandos é\n" +" \t\t\tarmazenado.\n" +" HISTFILESIZE\tO número máximo de linhas que esse arquivo pode conter.\n" +" HISTSIZE\t\tO número máximo de linhas de histórico que um shell\n" +" \t\t\tpode acessar.\n" +" HOME\t\t\tO caminho completo para seu diretório de login.\n" +" HOSTNAME\t\tO nome da sua máquina.\n" +" HOSTTYPE\t\tO tipo de CPU sob a qual esta versão do Bash está\n" +" \t\t\tfuncionando.\n" +" IGNOREEOF\t\tControla a ação do shell na recepção de um caractere\n" +" \t\t\tde fim de arquivo (EOF) como uma entrada única. Se\n" +" \t\t\tdefinida, então seu valor é o número de caracteres de EOF\n" +" \t\t\tque podem ser vistos numa leva em uma linha vazia antes\n" +" \t\t\tdo shell sair (padrão 10). Do contrário, EOF significa\n" +" \t\t\to fim da entrada.\n" +" MACHTYPE\t\tUma string descrevendo o sistema no qual Bash está sendo\n" +" \t\t\texecutado.\n" +" MAILCHECK\t\tCom qual frequência, em segundos, Bash verifica por novo\n" +" \t\t\tcorreio.\n" +" MAILPATH\t\tUma lista separada por dois-pontos de arquivos que Bash\n" +" \t\t\tverifica por novo correio.\n" +" OSTYPE\t\t\tA versão do Unix no qual Bash está sendo executado.\n" +" PATH\t\t\tUma lista separada por dois-pontos de diretórios para\n" +" \t\t\tpesquisar ao se procurar por comandos.\n" +" PROMPT_COMMAND\tUm comando a ser executado antes de imprimir cada " +"prompt\n" +" \t\t\tprimário.\n" +" PS1\t\t\t\tA string de prompt primário.\n" +" PS2\t\t\t\tA string de prompt secundária.\n" +" PWD\t\t\t\tO caminho completo do diretório atual.\n" +" SHELLOPTS\t\tUma lista separada por dois-pontos de opções shell\n" +" \t\t\t\thabilitadas.\n" +" TERM\t\t\tO nome do tipo de terminal atual.\n" +" TIMEFORMAT\t\tO formato de saída para estatísticas de tempo exibidas\n" +" \t\t\t\tpela palavra reservada `time'.\n" +" auto_resume\t\tNão-nulo significa que uma palavra de comando aparecendo\n" +" \t\t\t\tem uma linha, por si só, é procurada primeiro na lista de\n" +" \t\t\t\ttrabalhos atualmente parados. Se encontrado lá, aquele\n" +" \t\t\t\ttrabalho é levado para primeiro plano. Um valor de `exact'\n" +" \t\t\t\tsignifica que a palavra de comando deve corresponder\n" +" \t\t\t\texatamente um comando na lista de trabalhos parados. Um\n" +" \t\t\t\tvalor de `substring' significa que a palavra de comando\n" +" \t\t\t\tdeve corresponder a uma substring do trabalho. Qualquer\n" +" \t\t\t\toutro valor significa que o comando deve ser um prefixo\n" +" \t\t\t\tde um trabalho parado.\n" +" histchars\t\tCaracteres controlando expansão de histórico e\n" +" \t\t\t\tsubstituição rápida. O primeiro caractere é o de\n" +" \t\t\t\tsubstituição de histórico, normalmente `!'. O segundo\n" +" \t\t\t\té o caractere `quick substitution', normalmente `^'.\n" +" \t\t\t\tO terceiro é o caractere `quick sbustitution',\n" +" \t\t\t\tnormalmente `#'\n" +" HISTIGNORE\t\tUma lista separada por dois-pontos de padrões usados para\n" +" \t\t\t\tdecidir quais comandos deveriam ser salvos na lista de\n" +" \t\t\t\thistórico.\n" -#: builtins.c:1794 +# help pushd +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -3911,19 +5397,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3931,8 +5417,37 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Adiciona diretórios a uma pilha.\n" +" \n" +" Adiciona um diretório ao topo da pilha de diretórios ou movimenta\n" +" a pilha, fazendo o novo topo da pilha ser o diretório atual de\n" +" trabalho. Com nenhum argumento, efetua troca do topo entre dois\n" +" diretórios.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de diretório ao adicionar\n" +" \t\tdiretórios à pilha, de forma que apenas a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tMovimenta a pilha de forma que o n-ésimo diretório (a contar\n" +" \t\tda esquerda da lista mostrada por `dirs', iniciando com zero)\n" +" \t\testá no topo.\n" +" \n" +" -N\tMovimenta a pilha de forma que o n-ésimo diretório (a contar\n" +" \t\tda direita da lista mostrada por `dirs', iniciando com zero)\n" +" \t\testá no topo.\n" +" \n" +" dir\tAdiciona DIR à pilha de diretórios no topo, fazendo dele o\n" +" \t\tnovo diretório de trabalho atual.\n" +" \n" +" O comando interno `dirs' exibe a pilha de diretórios.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que um argumento inválido seja fornecido ou\n" +" a alteração de diretório falhar." -#: builtins.c:1828 +# help popd +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -3941,16 +5456,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3958,8 +5473,32 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Remove diretórios de uma pilha.\n" +"\n" +" Remove entradas da pilha de diretórios. Com nenhum argumento, remove\n" +" o diretório do topo da pilha e altera o novo diretório do topo.\n" +" \n" +" Opções:\n" +" -n\tSuprime a alteração normal de diretório ao remover\n" +" \t\tdiretórios da pilha, de forma que apenas a pilha é manipulada.\n" +" \n" +" Argumentos:\n" +" +N\tRemove a n-ésima entrada a contar da esquerda da lista\n" +" \t\tmostrada por `dirs', iniciando com zero. Ex.: `popd +0'\n" +" \t\tremove o primeiro diretório e `popd +1', o segundo.\n" +" \n" +" -N\tRemove a n-ésima entrada a contar da direita da lista\n" +" \t\tmostrada por `dirs', iniciando com zero. Ex.: `popd +0'\n" +" \t\tremove o último diretório e `popd -1', o penúltimo.\n" +" \n" +" O comando interno `dirs' exibe a pilha de diretório.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que um argumento inválido seja fornecido ou\n" +" a alteração de diretório falhar." -#: builtins.c:1858 +# help dirs +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -3970,25 +5509,50 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Exibe pilha de diretórios.\n" +" \n" +" Exibe a lista de diretórios atualmente memorizados. Diretórios são\n" +" inseridos na lista por meio do comando `pushd'; você pode obter\n" +" de volta da lista com o comando `popd'.\n" +" \n" +" Opções:\n" +" -c\tlimpa a pilha de diretórios excluindo todos os elementos\n" +" -l\tnão mostra versões de diretórios prefixadas por til,\n" +" \t\trelativos ao seu diretório HOME\n" +" -p\texibe a pilha de diretório com uma entrada por linha\n" +" -v\texibe a pilha de diretório com uma entrada por linha,\n" +" \t\tprefixada com sua posição na pilha\n" +" \n" +" Argumentos:\n" +" +N\tExibe a n-ésima entrada a partir da esquerda da linha\n" +" \t\tmostrada por `dirs' chamado sem opções, iniciando com zero.\n" +" \n" +" -N\tExibe a n-ésima entrada a partir da esquerda da linha\n" +" \t\tmostrada por `dirs' chamado sem opções, iniciando com zero.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorrer um erro." -#: builtins.c:1887 +# help shopt +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -4008,8 +5572,25 @@ msgid "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." msgstr "" +"Define e remove definições de opções de shell.\n" +" \n" +" Altera a configuração de cada opção shell NOME-OPÇÃO. Sem qualquer\n" +" argumento de opção, lista todos shell com uma indicação de se cada\n" +" uma está definida ou não.\n" +" \n" +" Opções:\n" +" -o\trestringe NOME-OPÇÃO àqueles definidos para usar com `set -o'\n" +" -p\timprime cada opção shell com uma indicação de seu status\n" +" -q\tsuprime a saída\n" +" -s\thabilita (set) com NOME-OPÇÃO\n" +" -u\tdesabilita (unset) com NOME-OPÇÃO\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, se NOME-OPÇÃO estiver habilitado; falha, se uma\n" +" opção inválida for fornecida ou NOME-OPÇÃO estiver desabilitado." -#: builtins.c:1908 +# help printf +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4026,15 +5607,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -4047,8 +5628,39 @@ msgid "" "assignment\n" " error occurs." msgstr "" +"Formata e imprime ARGUMENTOS sob controle de FORMATO.\n" +" \n" +" Options:\n" +" -v var\tatribui a saída à variável shell VAR, ao invés de exibi-la\n" +" \t\t\tna saída padrão\n" +" \n" +" FORMATO é uma string de caractere que contém três tipos de objetos;\n" +" caracteres planos, que são simplesmente copiados para a saída padrão;\n" +" sequências de escape de caracteres, que são convertidas e copiadas\n" +" para a saída padrão; e especificações de formatos, cada um que causa\n" +" impressão do próximo argumento sucessivo.\n" +" \n" +" Além das especificações de formato padrão descritas em printf(1),\n" +" printf interpreta:\n" +" \n" +" %b\texpande sequências de escape com contrabarras no argumento\n" +" \t\tcorrespondente\n" +" %q\tcita o argumento de uma forma que pode ser usado como entrada\n" +" \t\tno shell\n" +" %(fmt)T\texibe a string de data-hora resultante do uso de FMT como\n" +" \t\t\tuma string de formato para strftime(3)\n" +" \n" +" O formato é usado como necessário para consumir todos os argumentos.\n" +" Se houver menos argumentos que o formato requer, especificações de\n" +" formato extras se comportam como se uma string com valor zero ou nula,\n" +" como apropriado, tivesse sido fornecida.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro de escrita ou atribuição." -#: builtins.c:1942 +# help complete +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4061,11 +5673,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -4074,8 +5686,33 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Especifica como argumentos são completados por Readline.\n" +" \n" +" Para cada NOME, especifica como argumentos são completados. Se nenhuma\n" +" opção for fornecida, especificações existente para completar são\n" +" impressas em uma forma que permite-as serem usadas como entrada.\n" +" \n" +" Opções:\n" +" -p\timprime especificações existentes de completar em um formato " +"usável\n" +" -r\tremove uma especificação de completar para cada NOME ou, se " +"nenhum\n" +" \t\tNOME for fornecido, todas as especificações de completar\n" +" -D\taplica as completações e ações como sendo o padrão para comandos\n" +" \t\tsem qualquer especificação definida\n" +" -E\taplica as completações e ações para tentativa de completar\n" +" \t\tcomandos -- \"vazios\" em uma linha vazia\n" +" \n" +" Ao tentar completar, as ações são fornecidas na ordem em que as opções\n" +" de letras de caixa alta são listadas acima. A opção -D tem precedência\n" +" sobre -E.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro." -#: builtins.c:1970 +# help compgen +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4087,8 +5724,18 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Exibe possibilidades de completação dependendo das opções.\n" +" \n" +" Tem a intenção de ser usado de dentro de uma função shell gerando\n" +" completações possíveis. Se o argumento opcional PALAVRA for fornecido,\n" +" comparações entre PALAVRA é gerada.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja fornecida ou\n" +" ocorra um erro." -#: builtins.c:1985 +# help compopt +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4118,8 +5765,35 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" +"Modifica ou exibe opções de completação.\n" +" \n" +" Modifica as opções de completação para cada NOME ou, se nenhum NOME for\n" +" fornecido, a completação sendo executada atualmente. Se nenhuma OPÇÃO\n" +" for fornecida, imprime as opções de completação para cada NOME ou a\n" +" especificação de completação atual.\n" +" \n" +" Opções:\n" +" \t-o OPÇÃO\tDefine a opção de completação OPÇÃO para cada NOME\n" +" \t-D\t\tAltera opções para a completação de comando \"padrão\"\n" +" \t-E\t\tAltera opções para a completação de comando \"vazio\"\n" +" \n" +" Ao usar `+o', ao invés de `-o', desliga a opção especificada.\n" +" \n" +" Argumentos:\n" +" \n" +" Cada NOME se refere a um comando para o qual uma especificação de\n" +" completação deve ter sido definida anteriormente usando o comando\n" +" interno `complete'. Se nenhum NOME for fornecido, `compopt` deve\n" +" ser chamado por uma função atualmente gerando completações e as\n" +" opções para aquele gerador de completações atualmente em execução\n" +" são modificados.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválido seja fornecido ou\n" +" NOME não tem uma especificação de completação definida." -#: builtins.c:2015 +# help mapfile +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4130,20 +5804,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4159,216 +5834,75 @@ msgid "" "or\n" " not an indexed array." msgstr "" +"Lê linhas da entrada padrão para uma variável array indexado.\n" +" \n" +" Lê linhas da entrada padrão para a variável array indexado ARRAY ou\n" +" do descritor de arquivo FD, se a opção -u for fornecida. A variável\n" +" MAPFILE é o ARRAY padrão.\n" +" \n" +" Opções:\n" +" -d DELIM Usa DELIM para terminar linhas, ao invés de nova linha\n" +" -n NÚMERO Copia no máximo NÚMERO linhas. Se NÚMERO for 0, todas " +"as\n" +" linhas são copiadas\n" +" -O ORIGEM Inicia atribuição de ARRAY no índice ORIGEM. O índice\n" +" padrão é 0\n" +" -s NÚMERO Descarta as primeiras NÚMERO linhas lidas\n" +" -t Remove uma DELIM ao final para cada linha lida\n" +" (padrão: nova linha)\n" +" -u FD Lê linhas do descritor de arquivos FD, ao invés da " +"entrada\n" +" padrão\n" +" -C CHAMADA Avalia CHAMADA a cada vez que QUANTIDADE linhas foram " +"lidas\n" +" -c QUANTIDADE Especifica o número de linhas lidas entre cada chamada " +"para\n" +" CHAMADA\n" +" \n" +" Argumentos:\n" +" ARRAY Nome da variável array para usar para arquivos de dados\n" +" \n" +" Se -C for fornecido sem -c, a quantidade padrão é 5000. Quando CHAMADA " +"é\n" +" avaliada, é fornecido o índice para o próximo elemento da array ser\n" +" atribuído e a linha para ser atribuída àquele elemento como argumentos\n" +" adicionais\n" +" \n" +" Se não for fornecido com uma origem explícita, mapfile vai limpar ARRAY\n" +" antes de lhe atribuir.\n" +" \n" +" Status de saída:\n" +" Retorna sucesso, a menos que uma opção inválida seja dada ou ARRAY for\n" +" somente leitura ou não for um array indexado." -#: builtins.c:2049 +# help readarray +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +"Lê linhas de um arquivo para uma variável array.\n" +" \n" +" Um sinônimo para `mapfile'." -#, fuzzy -#~ msgid "wait [pid]" -#~ msgstr "wait [n]" +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc." -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" +#~ msgid ":" +#~ msgstr ":" -#, fuzzy -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" +# Não traduzir "true", esta é uma opção "builtin" do "bash" que é exibida ao executar "help" e acessível com "help true". +#~ msgid "true" +#~ msgstr "true" -#, fuzzy -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" +# Não traduzir "false", esta é uma opção "builtin" do "bash" que é exibida ao executar "help" e acessível com "help false". +#~ msgid "false" +#~ msgstr "false" -#~ msgid "Display the list of currently remembered directories. Directories" -#~ msgstr "Exibe a lista atual de diretórios memorizados. Os diretórios são" - -#~ msgid "find their way onto the list with the `pushd' command; you can get" -#~ msgstr "introduzidos na lista através do comando `pushd'; os diretórios são" - -#~ msgid "back up through the list with the `popd' command." -#~ msgstr "removidos da lista através do comando `popd'." - -#~ msgid "" -#~ "The -l flag specifies that `dirs' should not print shorthand versions" -#~ msgstr "A opção -l especifica que `dirs' não deve exibir a versão resumida" - -#~ msgid "" -#~ "of directories which are relative to your home directory. This means" -#~ msgstr "" -#~ "dos diretórios relativos ao seu diretório `home'. Isto significa que" - -#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" -#~ msgstr "" -#~ "`~/bin' deve ser exibido como `/home/você/bin'. A opção -v faz com que" - -#~ msgid "causes `dirs' to print the directory stack with one entry per line," -#~ msgstr "`dirs' exiba a pilha de diretórios com uma entrada por linha," - -#~ msgid "" -#~ "prepending the directory name with its position in the stack. The -p" -#~ msgstr "antecedendo o nome do diretório com a sua posição na pilha. A opção" - -#~ msgid "flag does the same thing, but the stack position is not prepended." -#~ msgstr "-p faz a mesma coisa, mas a posição na pilha não é exibida. A opção" - -#~ msgid "" -#~ "The -c flag clears the directory stack by deleting all of the elements." -#~ msgstr "-c limpa a pilha de diretórios apagando todos os seus elementos." - -#, fuzzy -#~ msgid "" -#~ "+N displays the Nth entry counting from the left of the list shown by" -#~ msgstr "" -#~ "+N\texibe a n-ésima entrada contada a partir da esquerda da lista exibida" - -#, fuzzy -#~ msgid " dirs when invoked without options, starting with zero." -#~ msgstr "\tpor `dirs', quando este é chamado sem opções, começando por zero." - -#, fuzzy -#~ msgid "" -#~ "-N displays the Nth entry counting from the right of the list shown by" -#~ msgstr "" -#~ "-N\texibe a n-ésima entrada contada a partir da direita da lista exibida" - -#~ msgid "Adds a directory to the top of the directory stack, or rotates" -#~ msgstr "Adiciona o diretório no topo da pilha de diretórios, ou rotaciona a" - -#~ msgid "the stack, making the new top of the stack the current working" -#~ msgstr "" -#~ "pilha, fazendo o diretório atual de trabalho ficar no topo da pilha." - -#~ msgid "directory. With no arguments, exchanges the top two directories." -#~ msgstr "Sem nenhum argumento, troca os dois diretórios do topo." - -#, fuzzy -#~ msgid "+N Rotates the stack so that the Nth directory (counting" -#~ msgstr "" -#~ "+N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" - -#, fuzzy -#~ msgid " from the left of the list shown by `dirs', starting with" -#~ msgstr "\tpartir da esquerda da lista exibida por `dirs') fique no topo." - -#, fuzzy -#~ msgid " zero) is at the top." -#~ msgstr "\tpartir da direita) fique no topo." - -#, fuzzy -#~ msgid "-N Rotates the stack so that the Nth directory (counting" -#~ msgstr "" -#~ "-N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" - -#, fuzzy -#~ msgid " from the right of the list shown by `dirs', starting with" -#~ msgstr "\tpartir da esquerda da lista exibida por `dirs') fique no topo." - -#, fuzzy -#~ msgid "-n suppress the normal change of directory when adding directories" -#~ msgstr "-n\tsuprime a troca normal de diretório ao se adicionar diretórios" - -#, fuzzy -#~ msgid " to the stack, so only the stack is manipulated." -#~ msgstr "\tà pilha, fazendo com que somente a pilha seja manipulada." - -#, fuzzy -#~ msgid "dir adds DIR to the directory stack at the top, making it the" -#~ msgstr "dir\tadiciona DIR à pilha de diretórios, no topo, tornando-o o" - -#, fuzzy -#~ msgid " new current working directory." -#~ msgstr "\tnovo diretório atual de trabalho." - -#~ msgid "You can see the directory stack with the `dirs' command." -#~ msgstr "Você pode exibir a pilha de diretórios através do comando `dirs'." - -#~ msgid "Removes entries from the directory stack. With no arguments," -#~ msgstr "Remove entradas da pilha de diretórios. Sem nenhum argumento," - -#~ msgid "removes the top directory from the stack, and cd's to the new" -#~ msgstr "remove o diretório que está no topo da pilha, e executa `cd' para" - -#~ msgid "top directory." -#~ msgstr "o novo diretório que ocupa o topo da pilha." - -#, fuzzy -#~ msgid "+N removes the Nth entry counting from the left of the list" -#~ msgstr "+N\tremove a n-ésima entrada contada a partir da esquerda da lista" - -#, fuzzy -#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'" -#~ msgstr "\texibida por `dirs', começando por zero. Por exemplo: `popd +0'" - -#, fuzzy -#~ msgid " removes the first directory, `popd +1' the second." -#~ msgstr "\tremove o primeiro diretório, `popd +1' o segundo." - -#, fuzzy -#~ msgid "-N removes the Nth entry counting from the right of the list" -#~ msgstr "-N\tremove a n-ésima entrada contada a partir da direita da lista" - -#, fuzzy -#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'" -#~ msgstr "\texibida por `dirs', começando por zero. Por exemplo: `popd -0'" - -#, fuzzy -#~ msgid " removes the last directory, `popd -1' the next to last." -#~ msgstr "\tremove o último diretório, `popd -1' o penúltimo." - -#, fuzzy -#~ msgid "" -#~ "-n suppress the normal change of directory when removing directories" -#~ msgstr "-n\tsuprime a troca normal de diretório ao remover-se diretórios" - -#, fuzzy -#~ msgid " from the stack, so only the stack is manipulated." -#~ msgstr "\tda pilha, fazendo com que somente a pilha seja manipulada." - -#, fuzzy -#~ msgid "" -#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" -#~ " break N levels." -#~ msgstr "Sair de um laço FOR, WHILE ou UNTIL." - -#~ msgid "Obsolete. See `declare'." -#~ msgstr "Obsoleta. Veja `declare'." - -#~ msgid "" -#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." -#~ msgstr "" -#~ "Exibe ARGS. Se -n for fornecido, o caracter final de nova linha é " -#~ "suprimido." - -#~ msgid "" -#~ "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "" -#~ "Ler ARGs como entrada da `shell' e executar o(s) comando(s) resultante(s)." - -#~ msgid "Logout of a login shell." -#~ msgstr "Sair de uma shell de login." - -#, fuzzy -#~ 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 "Faz a função terminar com o valor de retorno especificado por N." - -#, fuzzy -#~ msgid "" -#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n" -#~ " not given, it is assumed to be 1." -#~ msgstr "" -#~ "Os parâmetros posicionais a partir de $N+1 ... são deslocados para $1 ..." - -#, fuzzy -#~ msgid "" -#~ "Print the accumulated user and system times for processes run from\n" -#~ " the shell." -#~ msgstr "" -#~ "Exibe os tempos acumulados do usuário e do sistema para os processos" +# não traduzir, este é um comando +#~ msgid "times" +#~ msgstr "times" #~ msgid "Missing `}'" #~ msgstr "Faltando `}'" @@ -4389,13 +5923,13 @@ msgstr "" #~ msgstr "Informar %s para corrigir o ocorrido.\n" #~ msgid "execute_command: bad command type `%d'" -#~ msgstr "execute_command: `%d' é um tipo incorreto de comando " +#~ msgstr "execute_command: `%d' é um tipo incorreto de comando " #~ msgid "real\t" #~ msgstr "real\t" #~ msgid "user\t" -#~ msgstr "usuário\t" +#~ msgstr "usuário\t" #~ msgid "sys\t" #~ msgstr "sistema\t" @@ -4406,23 +5940,29 @@ msgstr "" #~ "sys\t0m0.00s\n" #~ msgstr "" #~ "real \t0m0.00s\n" -#~ "usuário\t0m0.00s\n" +#~ "usuário\t0m0.00s\n" #~ "sistema\t0m0.00s\n" #~ msgid "cannot duplicate fd %d to fd 1: %s" -#~ msgstr "impossível duplicar fd (descritor de arquivo) %d para fd 1: %s" +#~ msgstr "impossível duplicar fd (descritor de arquivo) %d para fd 1: %s" #~ msgid "%s: output redirection restricted" -#~ msgstr "%s: redirecionamento da saída restringido" +#~ msgstr "%s: redirecionamento da saída restringido" #~ msgid "Out of memory!" -#~ msgstr "Memória esgotada!" +#~ msgstr "Memória esgotada!" #~ msgid "You have already added item `%s'\n" -#~ msgstr "Você já adicionou o item `%s'\n" +#~ msgstr "Você já adicionou o item `%s'\n" #~ msgid "You have entered %d (%d) items. The distribution is:\n" -#~ msgstr "Entrados %d (%d) itens. A distribuição é:\n" +#~ msgstr "Entrados %d (%d) itens. A distribuição é:\n" + +#~ msgid "slot %3d: " +#~ msgstr "encaixe (slot) %3d: " + +#~ msgid "" +#~ msgstr "" #~ msgid "%s: bg background job?" #~ msgstr "%s: bg trabalho no segundo plano?" @@ -4431,17 +5971,17 @@ msgstr "" #~ "Redirection instruction from yyparse () '%d' is\n" #~ "out of range in make_redirection ()." #~ msgstr "" -#~ "A instrução de redirecionamento do yyparse () '%d' está\n" +#~ "A instrução de redirecionamento do yyparse () '%d' está\n" #~ "fora do intervalo em make_redirection ()." #~ msgid "clean_simple_command () got a command with type %d." #~ msgstr "clean_simple_command () recebeu um comando do tipo %d." #~ msgid "got errno %d while waiting for %d" -#~ msgstr "recebido erro número %d enquanto aguardava por %d" +#~ msgstr "recebido erro número %d enquanto aguardava por %d" #~ msgid "syntax error near unexpected token `%c'" -#~ msgstr "erro de sintaxe próximo do `token' não esperado `%c'" +#~ msgstr "erro de sintaxe próximo do `token' não esperado `%c'" #~ msgid "print_command: bad command type `%d'" #~ msgstr "print_command: tipo de comando incorreto `%d'" @@ -4450,87 +5990,84 @@ msgstr "" #~ msgstr "cprintf: argumento `%%' incorreto (%c)" #~ msgid "option `%s' requires an argument" -#~ msgstr "a opção `%s' requer um argumento" +#~ msgstr "a opção `%s' requer um argumento" #~ msgid "%s: unrecognized option" -#~ msgstr "%s: a opção não é reconhecida" +#~ msgstr "%s: a opção não é reconhecida" #~ msgid "`-c' requires an argument" -#~ msgstr "A opção `-c' requer um argumento" +#~ msgstr "A opção `-c' requer um argumento" #~ msgid "%s: cannot execute directories" -#~ msgstr "%s: impossível executar diretórios" +#~ msgstr "%s: impossível executar diretórios" #~ msgid "Bad code in sig.c: sigprocmask" -#~ msgstr "Código incorreto em sig.c: sigprocmask" - -#~ msgid "bad substitution: no ending `}' in %s" -#~ msgstr "substituição incorreta: falta o `}' final em %s" - -#~ msgid "%s: bad array subscript" -#~ msgstr "%s: indice da matriz (array) incorreto" +#~ msgstr "Código incorreto em sig.c: sigprocmask" #~ msgid "can't make pipes for process substitution: %s" -#~ msgstr "impossível criar `pipes' para a substituição do processo: %s" +#~ msgstr "impossível criar `pipes' para a substituição do processo: %s" #~ msgid "reading" #~ msgstr "lendo" +#~ msgid "writing" +#~ msgstr "escrevendo" + #~ msgid "process substitution" -#~ msgstr "substituição de processo" +#~ msgstr "substituição de processo" #~ msgid "command substitution" -#~ msgstr "substituição de comando" +#~ msgstr "substituição de comando" #~ msgid "Can't reopen pipe to command substitution (fd %d): %s" #~ msgstr "" -#~ "Impossível reabrir o `pipe' para substituição de comando (fd %d): %s" +#~ "Impossível reabrir o `pipe' para substituição de comando (fd %d): %s" #~ msgid "$%c: unbound variable" -#~ msgstr "$%c: variável não vinculada" +#~ msgstr "$%c: variável não associada" #~ msgid "%s: bad arithmetic substitution" -#~ msgstr "%s: substituição aritmética incorreta" +#~ msgstr "%s: substituição aritmética incorreta" #~ msgid "-%s: binary operator expected" -#~ msgstr "-%s: esperado operador binário" +#~ msgstr "-%s: esperado operador binário" #~ msgid "%s[%s: bad subscript" -#~ msgstr "%s[%s: índice incorreto" +#~ msgstr "%s[%s: índice incorreto" #~ msgid "[%s: bad subscript" -#~ msgstr "[%s: índice incorreto" +#~ msgstr "[%s: índice incorreto" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" #~ msgid "digits occur in two different argv-elements.\n" -#~ msgstr "os dígitos aparecem em dois elementos argv diferentes.\n" +#~ msgstr "os dígitos aparecem em dois elementos argv diferentes.\n" #~ msgid "option %c\n" -#~ msgstr "opção %c\n" +#~ msgstr "opção %c\n" #~ msgid "option a\n" -#~ msgstr "opção a\n" +#~ msgstr "opção a\n" #~ msgid "option b\n" -#~ msgstr "opção b\n" +#~ msgstr "opção b\n" #~ msgid "option c with value `%s'\n" -#~ msgstr "opção c com o valor `%s'\n" +#~ msgstr "opção c com o valor `%s'\n" #~ msgid "?? sh_getopt returned character code 0%o ??\n" -#~ msgstr "?? sh_getopt retornou o código de caracter 0%o ??\n" +#~ msgstr "?? sh_getopt retornou o código de caracter 0%o ??\n" #~ msgid "non-option ARGV-elements: " -#~ msgstr "elementos de ARGV que não são opção:" +#~ msgstr "elementos de ARGV que não são opção:" #~ msgid "%s: Unknown flag %s.\n" -#~ msgstr "%s: Opção %s desconhecida.\n" +#~ msgstr "%s: Opção %s desconhecida.\n" #~ msgid "Unknown directive `%s'" #~ msgstr "Diretiva desconhecida `%s'" -#~ msgid "%s requires an argument" -#~ msgstr "%s requer um argumento" - #~ msgid "%s must be inside of a $BUILTIN block" #~ msgstr "%s deve estar dentro de um bloco $BUILTIN" @@ -4538,64 +6075,69 @@ msgstr "" #~ msgstr "%s encontrado antes de $END" #~ msgid "%s already has a function (%s)" -#~ msgstr "%s já possui uma função (%s)" +#~ msgstr "%s já possui uma função (%s)" #~ msgid "%s already had a docname (%s)" -#~ msgstr "%s já possui um nome de documento (%s)" +#~ msgstr "%s já possui um nome de documento (%s)" #~ msgid "%s already has short documentation (%s)" -#~ msgstr "%s já possui uma documentação curta (%s)" +#~ msgstr "%s já possui uma documentação curta (%s)" #~ msgid "%s already has a %s definition" -#~ msgstr "%s já possui a definição %s" +#~ msgstr "%s já possui a definição %s" #~ msgid "mkbuiltins: Out of virtual memory!\n" -#~ msgstr "mkbuiltins: Memória virtual esgotada!\n" +#~ msgstr "mkbuiltins: Memória virtual esgotada!\n" #~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" -#~ msgstr "read [-r] [-p MENSAGEM] [-a MATRIZ] [-e] [NOME ...]" +#~ msgstr "read [-r] [-p MENSAGEM] [-a ARRAY] [-e] [NOME ...]" #~ msgid "%[DIGITS | WORD] [&]" -#~ msgstr "%[DÍGITOS | PALAVRA] [&]" +#~ msgstr "%[DÃGITOS | PALAVRA] [&]" #~ msgid "variables - Some variable names and meanings" -#~ msgstr "variáveis - Alguns nomes de variáveis e suas descrições" +#~ msgstr "variáveis - Alguns nomes de variáveis e suas descrições" #~ msgid "`alias' with no arguments or with the -p option prints the list" -#~ msgstr "`alias' sem nenhum argumento, ou com a opção -p, exibe a lista" +#~ msgstr "`alias' sem nenhum argumento, ou com a opção -p, exibe a lista" #~ msgid "of aliases in the form alias NAME=VALUE on standard output." -#~ msgstr "de aliases na forma `alias NOME=VALOR' na saída padrão." +#~ msgstr "de aliases na forma `alias NOME=VALOR' na saída padrão." #~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." #~ msgstr "" -#~ "Ou então, um alias é definido para cada NOME cujo VALOR for fornecido." +#~ "Ou então, um alias é definido para cada NOME cujo VALOR for fornecido." #~ msgid "A trailing space in VALUE causes the next word to be checked for" -#~ msgstr "Um espaço após VALOR faz a próxima palavra ser verificada para" +#~ msgstr "Um espaço após VALOR faz a próxima palavra ser verificada para" #~ msgid "alias substitution when the alias is expanded. Alias returns" -#~ msgstr "substituição do alias quando o alias é expandido. Alias retorna" +#~ msgstr "substituição do alias quando o alias é expandido. Alias retorna" #~ msgid "true unless a NAME is given for which no alias has been defined." #~ msgstr "" -#~ "verdadeiro, a não ser que seja fornecido um NOME sem alias definido." +#~ "verdadeiro, a não ser que seja fornecido um NOME sem alias definido." + +#~ msgid "" +#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," +#~ msgstr "" +#~ "Remove NOMEs da lista de aliases definidos. Se a opção -a for fornecida," #~ msgid "then remove all alias definitions." -#~ msgstr "então todas as definições de alias são removidas." +#~ msgstr "então todas as definições de alias são removidas." #~ msgid "Bind a key sequence to a Readline function, or to a macro. The" #~ msgstr "" -#~ "Víncula uma seqüência de teclas a uma função de leitura de linha, ou a uma" +#~ "Víncula uma seqüência de teclas a uma função de leitura de linha, ou a uma" #~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" #~ msgstr "" -#~ "macro. A sintaxe é equivalente à encontrada em ~/.inputrc, mas deve ser" +#~ "macro. A sintaxe é equivalente à encontrada em ~/.inputrc, mas deve ser" #~ msgid "" #~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." #~ msgstr "" -#~ "passada como um único argumento: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ "passada como um único argumento: bind '\"\\C-x\\C-r\": re-read-init-file'." #~ msgid "Arguments we accept:" #~ msgstr "Argumentos permitidos:" @@ -4603,10 +6145,10 @@ msgstr "" #~ msgid "" #~ " -m keymap Use `keymap' as the keymap for the duration of this" #~ msgstr "" -#~ " -m MAPA-TECLAS Usar `MAPA-TECLAS' como mapa das teclas pela duração" +#~ " -m MAPA-TECLAS Usar `MAPA-TECLAS' como mapa das teclas pela duração" #~ msgid " command. Acceptable keymap names are emacs," -#~ msgstr " deste comando. Os nomes aceitos são emacs," +#~ msgstr " deste comando. Os nomes aceitos são emacs," #~ msgid "" #~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," @@ -4617,36 +6159,36 @@ msgstr "" #~ msgstr " vi-command, and vi-insert." #~ msgid " -l List names of functions." -#~ msgstr " -l Listar os nomes das funções." +#~ msgstr " -l Listar os nomes das funções." #~ msgid " -P List function names and bindings." -#~ msgstr " -P Listar nomes e vinculações das funções." +#~ msgstr " -P Listar nomes e associações das funções." #~ msgid "" #~ " -p List functions and bindings in a form that can be" #~ msgstr "" -#~ " -p Listar nomes e vinculações das funções de uma forma" +#~ " -p Listar nomes e associações das funções de uma forma" #~ msgid " reused as input." #~ msgstr " que pode ser reutilizada como entrada." #~ msgid " -r keyseq Remove the binding for KEYSEQ." -#~ msgstr " -r SEQ-TECLAS Remove o vínculo para SEQ-TECLAS." +#~ msgstr " -r SEQ-TECLAS Remove o vínculo para SEQ-TECLAS." #~ msgid " -f filename Read key bindings from FILENAME." -#~ msgstr " -f ARQUIVO Ler os vínculos das teclas em ARQUIVO." +#~ msgstr " -f ARQUIVO Ler os vínculos das teclas em ARQUIVO." #~ msgid "" #~ " -q function-name Query about which keys invoke the named function." -#~ msgstr " -q NOME-FUNÇÃO Consultar quais teclas chamam esta função." +#~ msgstr " -q NOME-FUNÇÃO Consultar quais teclas chamam esta função." #~ msgid " -V List variable names and values" -#~ msgstr " -V Listar os nomes e os valores das variáveis." +#~ msgstr " -V Listar os nomes e os valores das variáveis." #~ msgid "" #~ " -v List variable names and values in a form that can" #~ msgstr "" -#~ " -v Listar os nomes e os valores das variáveis de uma" +#~ " -v Listar os nomes e os valores das variáveis de uma" #~ msgid " be reused as input." #~ msgstr " forma que pode ser reutilizada como entrada." @@ -4655,151 +6197,157 @@ msgstr "" #~ " -S List key sequences that invoke macros and their " #~ "values" #~ msgstr "" -#~ " -S Listar as seqüências de teclas que chamam macros\n" +#~ " -S Listar as seqüências de teclas que chamam macros\n" #~ " e seus valores." #~ msgid "" #~ " -s List key sequences that invoke macros and their " #~ "values in" -#~ msgstr " -s Listar seqüências de teclas que chamam macros" +#~ msgstr " -s Listar seqüências de teclas que chamam macros" #~ msgid " a form that can be reused as input." #~ msgstr "" #~ " e seus valores de uma forma que pode ser\n" #~ " reutilizada como entrada." +#~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," +#~ msgstr "Sair de um laço FOR, WHILE ou UNTIL." + #~ msgid "break N levels." -#~ msgstr "Se N for especificado, sai de N níveis." +#~ msgstr "Se N for especificado, sai de N níveis." + +#~ msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." +#~ msgstr "Prossegue no próximo ciclo do laço FOR, WHILE ou UNTIL envolvente." #~ msgid "If N is specified, resume at the N-th enclosing loop." -#~ msgstr "Se N for especificado, prossegue no N-ésimo laço envolvente." +#~ msgstr "Se N for especificado, prossegue no N-ésimo laço envolvente." #~ msgid "Run a shell builtin. This is useful when you wish to rename a" #~ msgstr "" -#~ "Executa um comando interno da `shell'. Útil quando desejamos substituir" +#~ "Executa um comando interno do shell. Útil quando desejamos substituir" #~ msgid "shell builtin to be a function, but need the functionality of the" -#~ msgstr "um comando interno da `shell' por uma função, mas necessitamos da" +#~ msgstr "um comando interno do shell por uma função, mas necessitamos da" #~ msgid "builtin within the function itself." -#~ msgstr "funcionalidade do comando interno dentro da própria função." +#~ msgstr "funcionalidade do comando interno dentro da própria função." #~ msgid "Change the current directory to DIR. The variable $HOME is the" -#~ msgstr "Troca o diretório atual para DIR. A variável $HOME é o padrão" +#~ msgstr "Troca o diretório atual para DIR. A variável $HOME é o padrão" #~ msgid "default DIR. The variable $CDPATH defines the search path for" -#~ msgstr "para DIR. A variável $CDPATH define o caminho de procura para" +#~ msgstr "para DIR. A variável $CDPATH define o caminho de procura para" #~ msgid "the directory containing DIR. Alternative directory names in CDPATH" #~ msgstr "" -#~ "o diretório que contém DIR. Nomes de diretórios alternativos em CDPATH" +#~ "o diretório que contém DIR. Nomes de diretórios alternativos em CDPATH" #~ msgid "are separated by a colon (:). A null directory name is the same as" #~ msgstr "" -#~ "são separados por dois pontos (:). Um nome de diretório nulo é o mesmo" +#~ "são separados por dois pontos (:). Um nome de diretório nulo é o mesmo" #~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," -#~ msgstr "que o diretório atual, i.e. `.'. Se DIR inicia com uma barra (/)," +#~ msgstr "que o diretório atual, i.e. `.'. Se DIR inicia com uma barra (/)," #~ msgid "then $CDPATH is not used. If the directory is not found, and the" -#~ msgstr "então $CDPATH não é usado. Se o diretório não for encontrado, e a" +#~ msgstr "então $CDPATH não é usado. Se o diretório não for encontrado, e a" #~ msgid "shell option `cdable_vars' is set, then try the word as a variable" #~ msgstr "" -#~ "opção `cdable_vars' estiver definida, tentar usar DIR como um nome de" +#~ "opção `cdable_vars' estiver definida, tentar usar DIR como um nome de" #~ msgid "name. If that variable has a value, then cd to the value of that" #~ msgstr "" -#~ "variável. Se esta variável tiver valor, então `cd' para o valor desta" +#~ "variável. Se esta variável tiver valor, então `cd' para o valor desta" #~ msgid "" #~ "variable. The -P option says to use the physical directory structure" #~ msgstr "" -#~ "variável. A opção -P indica para usar a estrutura física do diretório" +#~ "variável. A opção -P indica para usar a estrutura física do diretório" #~ msgid "" #~ "instead of following symbolic links; the -L option forces symbolic links" -#~ msgstr "em vez de seguir os vínculos simbólicos; a opção -L força seguir os" +#~ msgstr "em vez de seguir os vínculos simbólicos; a opção -L força seguir os" #~ msgid "to be followed." -#~ msgstr "vínculos simbólicos." +#~ msgstr "vínculos simbólicos." #~ msgid "Print the current working directory. With the -P option, pwd prints" -#~ msgstr "Exibe o diretório atual de trabalho. Com a opção -P, `pwd' exibe" +#~ msgstr "Exibe o diretório atual de trabalho. Com a opção -P, `pwd' exibe" #~ msgid "the physical directory, without any symbolic links; the -L option" -#~ msgstr "o diretório físico, sem nenhum vínculo simbólico; a opção -L faz" +#~ msgstr "o diretório físico, sem nenhum vínculo simbólico; a opção -L faz" #~ msgid "makes pwd follow symbolic links." -#~ msgstr "com que `pwd' siga os vínculos simbólicos." +#~ msgstr "com que `pwd' siga os vínculos simbólicos." #~ msgid "" #~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" #~ msgstr "" -#~ "Executa COMANDO com ARGs ignorando as funções da `shell'. Ex: Havendo" +#~ "Executa COMANDO com ARGs ignorando as funções da shell. Ex: Havendo" #~ msgid "function called `ls', and you wish to call the command `ls', you can" #~ msgstr "" -#~ "uma função `ls', e se for necessário executar o comando `ls', executa-se" +#~ "uma função `ls', e se for necessário executar o comando `ls', executa-se" #~ msgid "" #~ "say \"command ls\". If the -p option is given, a default value is used" #~ msgstr "" -#~ "\"command ls\". Se a opção -p for fornecida, o valor padrão é utilizado" +#~ "\"command ls\". Se a opção -p for fornecida, o valor padrão é utilizado" #~ msgid "" #~ "for PATH that is guaranteed to find all of the standard utilities. If" #~ msgstr "" -#~ "para PATH, garantindo-se o encontro de todos os utilitários padrão. Se" +#~ "para PATH, garantindo-se o encontro de todos os utilitários padrão. Se" #~ msgid "" #~ "the -V or -v option is given, a string is printed describing COMMAND." -#~ msgstr "a opção -V ou -v for fornecida, é exibida a descrição do COMANDO." +#~ msgstr "a opção -V ou -v for fornecida, é exibida a descrição do COMANDO." #~ msgid "The -V option produces a more verbose description." -#~ msgstr "A opção -V produz uma descrição mais extensa." +#~ msgstr "A opção -V produz uma descrição mais extensa." #~ msgid "Declare variables and/or give them attributes. If no NAMEs are" -#~ msgstr "Declara variáveis e/ou dá-lhes atributos. Se nenhum nome for" +#~ msgstr "Declara variáveis e/ou dá-lhes atributos. Se nenhum nome for" #~ msgid "given, then display the values of variables instead. The -p option" -#~ msgstr "fornecido, então são exibidos os valores das variáveis. A opção -p" +#~ msgstr "fornecido, então são exibidos os valores das variáveis. A opção -p" #~ msgid "will display the attributes and values of each NAME." #~ msgstr "exibe os atributos e valores para cada NOME." #~ msgid "The flags are:" -#~ msgstr "As opções são:" +#~ msgstr "As opções são:" #~ msgid " -a\tto make NAMEs arrays (if supported)" -#~ msgstr " -a\tpara tornar NOMEs matrizes (arrays), se suportado" +#~ msgstr " -a\tpara tornar NOMEs arrays, se houver suporte" #~ msgid " -f\tto select from among function names only" -#~ msgstr " -f\tpara selecionar somente entre nomes de funções" +#~ msgstr " -f\tpara selecionar somente entre nomes de funções" #~ msgid " -F\tto display function names without definitions" -#~ msgstr " -F\tpara exibir os nomes das funções omitindo suas definições" +#~ msgstr " -F\tpara exibir os nomes das funções omitindo suas definições" #~ msgid " -r\tto make NAMEs readonly" #~ msgstr " -r\tpara tornar NOMEs somente para leitura" #~ msgid " -x\tto make NAMEs export" -#~ msgstr " -x\tpara fazer a exportação de NOMEs" +#~ msgstr " -x\tpara fazer a exportação de NOMEs" #~ msgid " -i\tto make NAMEs have the `integer' attribute set" #~ msgstr " -i\tpara ativar o atributo `inteiro' em NOMEs " #~ msgid "Variables with the integer attribute have arithmetic evaluation (see" -#~ msgstr "Variáveis com atributo inteiro são avaliadas aritmeticamente (veja" +#~ msgstr "Variáveis com atributo inteiro são avaliadas aritmeticamente (veja" #~ msgid "`let') done when the variable is assigned to." -#~ msgstr "`let') quando é feita uma atribuição de valor." +#~ msgstr "`let') quando é feita uma atribuição de valor." #~ msgid "When displaying values of variables, -f displays a function's name" -#~ msgstr "Ao exibir os valores das variáveis, -f exibe o nome da função e" +#~ msgstr "Ao exibir os valores das variáveis, -f exibe o nome da função e" #~ msgid "and definition. The -F option restricts the display to function" -#~ msgstr "sua definição. A opção -F restringe a exibição ao nome da função" +#~ msgstr "sua definição. A opção -F restringe a exibição ao nome da função" #~ msgid "name only." #~ msgstr "somente." @@ -4809,23 +6357,26 @@ msgstr "" #~ msgstr "Usando `+' em vez de `-' faz o atributo ser desabilitado. Quando" #~ msgid "used in a function, makes NAMEs local, as with the `local' command." -#~ msgstr "usado em uma função, torna NOMEs local, como no comando `local'." +#~ msgstr "usado em uma função, torna NOMEs local, como no comando `local'." + +#~ msgid "Obsolete. See `declare'." +#~ msgstr "Obsoleta. Veja `declare'." #~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" -#~ msgstr "Cria uma variável local chamada NOME, e atribui VALOR. LOCAL" +#~ msgstr "Cria uma variável local chamada NOME, e atribui VALOR. LOCAL" #~ msgid "have a visible scope restricted to that function and its children." -#~ msgstr "da variável NOME fique restrito à própria função e às suas filhas." +#~ msgstr "da variável NOME fique restrito à própria função e às suas filhas." #~ msgid "Output the ARGs. If -n is specified, the trailing newline is" -#~ msgstr "Exibe ARGs. Se -n for fornecido, o caracter final de nova linha é" +#~ msgstr "Exibe ARGs. Se -n for fornecido, o caracter final de nova linha é" #~ msgid "suppressed. If the -e option is given, interpretation of the" #~ msgstr "" -#~ "suprimido. Se a opção -e for fornecida, a interpretação dos seguintes" +#~ "suprimido. Se a opção -e for fornecida, a interpretação dos seguintes" #~ msgid "following backslash-escaped characters is turned on:" -#~ msgstr "caracteres após a contrabarra é ativada:" +#~ msgstr "caracteres após a contrabarra é ativada:" #~ msgid "\t\\a\talert (bell)" #~ msgstr "\t\\a\talerta (bell)" @@ -4840,7 +6391,7 @@ msgstr "" #~ msgstr "\t\\E\to caracter de escape" #~ msgid "\t\\f\tform feed" -#~ msgstr "\t\\f\talimentação de formulário (form feed)" +#~ msgstr "\t\\f\talimentação de formulário (form feed)" #~ msgid "\t\\n\tnew line" #~ msgstr "\t\\n\tnova linha" @@ -4849,36 +6400,42 @@ msgstr "" #~ msgstr "\t\\r\tretorno de carro (cr)" #~ msgid "\t\\t\thorizontal tab" -#~ msgstr "\t\\t\ttabulação horizontal (ht)" +#~ msgstr "\t\\t\ttabulação horizontal (ht)" #~ msgid "\t\\v\tvertical tab" -#~ msgstr "\t\\v\ttabulação vertical (vt)" +#~ msgstr "\t\\v\ttabulação vertical (vt)" #~ msgid "\t\\\\\tbackslash" #~ msgstr "\t\\\\\tcontrabarra" #~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." -#~ msgstr "\t\\num\to caracter com código ASCII igual a NUM (octal)." +#~ msgstr "\t\\num\to caracter com código ASCII igual a NUM (octal)." #~ msgid "" #~ "You can explicitly turn off the interpretation of the above characters" #~ msgstr "" -#~ "Pode-se explicitamente desabilitar a interpretação dos caracteres acima" +#~ "Pode-se explicitamente desabilitar a interpretação dos caracteres acima" #~ msgid "with the -E option." -#~ msgstr "através da opção -E." +#~ msgstr "através da opção -E." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Exibe ARGS. Se -n for fornecido, o caracter final de nova linha é " +#~ "suprimido." #~ msgid "Enable and disable builtin shell commands. This allows" #~ msgstr "" -#~ "Habilita e desabilita os comandos internos da `shell', permitindo usar" +#~ "Habilita e desabilita os comandos internos do shell, permitindo usar" #~ msgid "you to use a disk command which has the same name as a shell" #~ msgstr "" -#~ "um comando de disco que tenha o mesmo nome do comando interno da `shell'." +#~ "um comando de disco que tenha o mesmo nome do comando interno do shell." #~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" #~ msgstr "" -#~ "Se -n for especificado, os NOMEs são desabilitados, senão os nomes são" +#~ "Se -n for especificado, os NOMEs são desabilitados, senão os nomes são" #~ msgid "NAMEs are enabled. For example, to use the `test' found on your" #~ msgstr "" @@ -4886,15 +6443,15 @@ msgstr "" #~ msgid "path instead of the shell builtin version, type `enable -n test'." #~ msgstr "" -#~ "da versão interna do comando, digite `enable -n test'. Em sistemas que" +#~ "da versão interna do comando, digite `enable -n test'. Em sistemas que" #~ msgid "On systems supporting dynamic loading, the -f option may be used" #~ msgstr "" -#~ "suportam carregamento dinâmico, pode-se usar a opção -f para carregar" +#~ "suportam carregamento dinâmico, pode-se usar a opção -f para carregar" #~ msgid "to load new builtins from the shared object FILENAME. The -d" #~ msgstr "" -#~ "novos comandos internos do objeto compartilhado ARQUIVO. A opção -d" +#~ "novos comandos internos do objeto compartilhado ARQUIVO. A opção -d" #~ msgid "option will delete a builtin previously loaded with -f. If no" #~ msgstr "" @@ -4902,301 +6459,309 @@ msgstr "" #~ msgid "non-option names are given, or the -p option is supplied, a list" #~ msgstr "" -#~ "nome for fornecido, ou se a opção -p for fornecida, uma lista de comandos" +#~ "nome for fornecido, ou se a opção -p for fornecida, uma lista de comandos" #~ msgid "of builtins is printed. The -a option means to print every builtin" #~ msgstr "" -#~ "internos é exibida. A opção -a faz com que todos os comandos internos" +#~ "internos é exibida. A opção -a faz com que todos os comandos internos" #~ msgid "with an indication of whether or not it is enabled. The -s option" -#~ msgstr "sejam exibidos indicando se estão habilitados ou não. A opção -s" +#~ msgstr "sejam exibidos indicando se estão habilitados ou não. A opção -s" #~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" #~ msgstr "" -#~ "restringe a saída aos comandos internos `especiais' Posix.2. A opção" +#~ "restringe a saída aos comandos internos `especiais' Posix.2. A opção" #~ msgid "option displays a list of all disabled builtins." #~ msgstr "-n exibe a lista de todos os comandos internos desabilitados." +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Ler ARGs como entrada do shell e executar o(s) comando(s) resultante(s)." + #~ msgid "Getopts is used by shell procedures to parse positional parameters." #~ msgstr "" -#~ "Getopts é utilizado pelos procedimentos da `shell' para fazer a leitura\n" -#~ " (parse) dos parâmetros posicionais." +#~ "Getopts é utilizado pelos procedimentos do shell para fazer a leitura\n" +#~ " (parse) dos parâmetros posicionais." #~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" -#~ msgstr "OPÇÕES contém as letras das opções a serem reconhecidas; Se uma" +#~ msgstr "OPÇÕES contém as letras das opções a serem reconhecidas; Se uma" #~ msgid "is followed by a colon, the option is expected to have an argument," -#~ msgstr "letra é seguida por dois pontos, a opção espera a presença de um" +#~ msgstr "letra é seguida por dois pontos, a opção espera a presença de um" #~ msgid "which should be separated from it by white space." -#~ msgstr "argumento que deve ser separado dela por espaço em branco." +#~ msgstr "argumento que deve ser separado dela por espaço em branco." #~ msgid "Each time it is invoked, getopts will place the next option in the" -#~ msgstr "Cada vez que for chamada, `getopts' irá colocar a próxima opção na" +#~ msgstr "Cada vez que for chamada, `getopts' irá colocar a próxima opção na" #~ msgid "shell variable $name, initializing name if it does not exist, and" -#~ msgstr "variável da `shell' $NOME, inicializando NOME caso não exista, e o" +#~ msgstr "variável do shell $NOME, inicializando NOME caso não exista, e o" #~ msgid "the index of the next argument to be processed into the shell" -#~ msgstr "índice do próximo argumento a ser processado dentro da variável da" +#~ msgstr "índice do próximo argumento a ser processado dentro da variável da" #~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" -#~ msgstr "`shell' OPTIND. OPTIND é inicializado com 1 cada vez que o script" +#~ msgstr "shell OPTIND. OPTIND é inicializado com 1 cada vez que o script" #~ msgid "a shell script is invoked. When an option requires an argument," #~ msgstr "" -#~ "da `shell' é chamado. Quando uma opção requer um argumento, `getopts'" +#~ "do shell é chamado. Quando uma opção requer um argumento, `getopts'" #~ msgid "getopts places that argument into the shell variable OPTARG." -#~ msgstr "coloca este argumento dentro da variável da `shell' OPTARG." +#~ msgstr "coloca este argumento dentro da variável do shell OPTARG." #~ msgid "getopts reports errors in one of two ways. If the first character" #~ msgstr "" #~ "`getopts' informa os erros de duas maneiras. Se o primeiro caracter de" #~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" -#~ msgstr "OPÇÕES for dois pontos, `getopts' usa o modo silencioso. Neste" +#~ msgstr "OPÇÕES for dois pontos, `getopts' usa o modo silencioso. Neste" #~ msgid "this mode, no error messages are printed. If an illegal option is" -#~ msgstr "modo, nenhuma mensagem de erro é exibida. Se uma opção ilegal for" +#~ msgstr "modo, nenhuma mensagem de erro é exibida. Se uma opção ilegal for" #~ msgid "seen, getopts places the option character found into OPTARG. If a" -#~ msgstr "encontrada, `getopts' coloca o caracter da opção em OPTARG. Se um" +#~ msgstr "encontrada, `getopts' coloca o caracter da opção em OPTARG. Se um" #~ msgid "required argument is not found, getopts places a ':' into NAME and" #~ msgstr "" -#~ "argumento requerido não for encontrado, `getopts' coloca ':' em NOME e" +#~ "argumento requerido não for encontrado, `getopts' coloca ':' em NOME e" #~ msgid "sets OPTARG to the option character found. If getopts is not in" #~ msgstr "" -#~ "atribui a OPTARG o caracter de opção encontrado. Se `getopts' não está em" +#~ "atribui a OPTARG o caracter de opção encontrado. Se `getopts' não está em" #~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" #~ msgstr "" -#~ "modo silencioso, e uma opção ilegal é encontrada, `getopts' coloca '?' em" +#~ "modo silencioso, e uma opção ilegal é encontrada, `getopts' coloca '?' em" #~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" #~ msgstr "" -#~ "NOME e desativa OPTARG. Se uma opção requerida não é encontrada, uma '?'" +#~ "NOME e desativa OPTARG. Se uma opção requerida não é encontrada, uma '?'" #~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" #~ msgstr "" -#~ "é colocada em NOME, OPTARG é desativado, e uma mensagem de diagnóstico é" +#~ "é colocada em NOME, OPTARG é desativado, e uma mensagem de diagnóstico é" + +#~ msgid "printed." +#~ msgstr "exibida." #~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" -#~ msgstr "" -#~ "Se a variável da `shell' OPTERR tem o valor 0, `getopts' desabilita a" +#~ msgstr "Se a variável do shell OPTERR tem o valor 0, `getopts' desabilita a" #~ msgid "printing of error messages, even if the first character of" -#~ msgstr "exibição de mensagens de erro, mesmo que o primeiro caracter de" +#~ msgstr "exibição de mensagens de erro, mesmo que o primeiro caracter de" #~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." -#~ msgstr "OPTSTRING não seja dois pontos. OPTERR tem o valor 1 por padrão." +#~ msgstr "OPTSTRING não seja dois pontos. OPTERR tem o valor 1 por padrão." #~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" #~ msgstr "" -#~ "`getopts' normalmente faz a leitura dos parãmetros posicionais ($0 - $9)," +#~ "`getopts' normalmente faz a leitura dos parãmetros posicionais ($0 - $9)," #~ msgid "more arguments are given, they are parsed instead." -#~ msgstr "mas, se mais argumentos forem fornecidos, então estes são lidos." +#~ msgstr "mas, se mais argumentos forem fornecidos, então estes são lidos." #~ msgid "Exec FILE, replacing this shell with the specified program." #~ msgstr "" -#~ "Executa ARQUIVO, substituindo esta `shell' pelo programa especificado." +#~ "Executa ARQUIVO, substituindo esta shell pelo programa especificado." #~ msgid "If FILE is not specified, the redirections take effect in this" #~ msgstr "" -#~ "Se ARQUIVO não for especificado, os redirecionamentos são efetivados" +#~ "Se ARQUIVO não for especificado, os redirecionamentos são efetivados" #~ msgid "shell. If the first argument is `-l', then place a dash in the" -#~ msgstr "" -#~ "nesta `shell'. Se o primeiro argumento for `-l', coloca um hífen no" +#~ msgstr "neste shell. Se o primeiro argumento for `-l', coloca um hífen no" #~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" -#~ msgstr "argumento `0' passado para ARQUIVO, como no login. Se a opção `-c'" +#~ msgstr "argumento `0' passado para ARQUIVO, como no login. Se a opção `-c'" #~ msgid "is supplied, FILE is executed with a null environment. The `-a'" -#~ msgstr "for fornecida, ARQUIVO é executado com um ambiente nulo. A opção" +#~ msgstr "for fornecida, ARQUIVO é executado com um ambiente nulo. A opção" #~ msgid "option means to make set argv[0] of the executed process to NAME." #~ msgstr "`-a' significa atribuir NOME para argv[0] do processo executado." #~ msgid "If the file cannot be executed and the shell is not interactive," -#~ msgstr "" -#~ "Se o arquivo não puder ser executado e a `shell' não for interativa," +#~ msgstr "Se o arquivo não puder ser executado e o shell não for interativa," #~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" #~ msgstr "" -#~ "então a `shell' termina, a menos que a variável \"no_exit_on_failed_exec\"" +#~ "então o shell termina, a menos que a variável \"no_exit_on_failed_exec\"" #~ msgid "is set." #~ msgstr "esteja inicializada." #~ msgid "is that of the last command executed." -#~ msgstr "de saída é igual ao do último comando executado." +#~ msgstr "de saída é igual ao do último comando executado." #~ msgid "" #~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" -#~ msgstr "PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou" +#~ msgstr "PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou" #~ msgid "string, which means the most recent command beginning with that" #~ msgstr "PRIMEIRO pode ser uma cadeia de caracteres, representando o comando" #~ msgid "string." -#~ msgstr "mais recente começado por estes caracteres." +#~ msgstr "mais recente começado por estes caracteres." #~ msgid "" #~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," #~ msgstr "" -#~ " -e EDITOR seleciona qual editor usar. O padrão é FCEDIT, depois " +#~ " -e EDITOR seleciona qual editor usar. O padrão é FCEDIT, depois " #~ "EDITOR," #~ msgid "" #~ " then the editor which corresponds to the current readline editing" #~ msgstr "" -#~ " depois o editor correspondente ao modo de edição atual da leitura" +#~ " depois o editor correspondente ao modo de edição atual da leitura" #~ msgid " mode, then vi." #~ msgstr " de linha, e depois o vi." #~ msgid " -l means list lines instead of editing." -#~ msgstr " -l indica para listar as linha em vez de editá-las." +#~ msgstr " -l indica para listar as linha em vez de editá-las." #~ msgid " -n means no line numbers listed." -#~ msgstr " -n indica para não listar os números das linhas." +#~ msgstr " -n indica para não listar os números das linhas." #~ msgid "" #~ " -r means reverse the order of the lines (making it newest listed " #~ "first)." #~ msgstr "" -#~ " -r faz reverter a ordem das linhas (a última torna-se a primeira)." +#~ " -r faz reverter a ordem das linhas (a última torna-se a primeira)." #~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" #~ msgstr "" -#~ "No formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', o comando é executado" +#~ "No formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', o comando é executado" #~ msgid "re-executed after the substitution OLD=NEW is performed." -#~ msgstr "novamente após a substituição de ANTIGO por NOVO ser realizada." +#~ msgstr "novamente após a substituição de ANTIGO por NOVO ser realizada." #~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" #~ msgstr "" -#~ "Um alias útil a ser usado é r='fc -s' para que, ao se digitar `r cc'," +#~ "Um alias útil a ser usado é r='fc -s' para que, ao se digitar `r cc'," #~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" -#~ msgstr "seja executado o último comando começado por `cc' e, ao se digitar" +#~ msgstr "seja executado o último comando começado por `cc' e, ao se digitar" + +#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" +#~ msgstr "" +#~ "Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual." #~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" #~ msgstr "" -#~ "Se JOB-ESPECIFICADO não estiver presente, a noção da `shell' do trabalho" +#~ "Se JOB-ESPECIFICADO não estiver presente, a noção do shell do trabalho" #~ msgid "used." -#~ msgstr "atual é utilizada." +#~ msgstr "atual é utilizada." #~ msgid "Place JOB_SPEC in the background, as if it had been started with" #~ msgstr "" #~ "Colocar JOB-ESPECIFICADO no segundo plano, como se tivesse sido ativado" #~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" -#~ msgstr "" -#~ "com `&'. Se JOB-ESPECIFICADO não estiver presente, a noção da `shell'" +#~ msgstr "com `&'. Se JOB-ESPECIFICADO não estiver presente, a noção do shell" #~ msgid "job is used." -#~ msgstr "do trabalho atual é utilizada." +#~ msgstr "do trabalho atual é utilizada." #~ msgid "For each NAME, the full pathname of the command is determined and" #~ msgstr "" -#~ "Para cada NOME, o caminho completo do comando é determinado e lembrado." +#~ "Para cada NOME, o caminho completo do comando é determinado e lembrado." #~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" #~ msgstr "" -#~ "Se a opção -p for fornecida, CAMINHO é utilizado como o caminho completo" +#~ "Se a opção -p for fornecida, CAMINHO é utilizado como o caminho completo" #~ msgid "full pathname of NAME, and no path search is performed. The -r" -#~ msgstr "para NOME, e nenhuma procura de caminho é realizada. A opção -r" +#~ msgstr "para NOME, e nenhuma procura de caminho é realizada. A opção -r" #~ msgid "option causes the shell to forget all remembered locations. If no" #~ msgstr "" -#~ "faz com que a `shell' esqueça todas as localizações lembradas. Sem nenhum" +#~ "faz com que a shell esqueça todas as localizações lembradas. Sem nenhum" #~ msgid "" #~ "arguments are given, information about remembered commands is displayed." -#~ msgstr "argumento, as informações sobre os comandos lembrados são exibidas." +#~ msgstr "argumento, as informações sobre os comandos lembrados são exibidas." #~ msgid "Display helpful information about builtin commands. If PATTERN is" -#~ msgstr "Exibe informações úteis sobre os comandos internos. Se PADRÃO for" +#~ msgstr "Exibe informações úteis sobre os comandos internos. Se PADRÃO for" #~ msgid "specified, gives detailed help on all commands matching PATTERN," #~ msgstr "especificado, fornece ajuda detalhada para todos os comandos que" #~ msgid "otherwise a list of the builtins is printed." #~ msgstr "" -#~ "correspondem ao PADRÃO, senão a lista dos comandos internos é exibida." +#~ "correspondem ao PADRÃO, senão a lista dos comandos internos é exibida." #~ msgid "Display the history list with line numbers. Lines listed with" #~ msgstr "" -#~ "Exibe a lista histórica com os números das linhas. Linhas contendo um" +#~ "Exibe a lista histórica com os números das linhas. Linhas contendo um" #~ msgid "with a `*' have been modified. Argument of N says to list only" -#~ msgstr "`*' foram modificadas. O argumento N faz listar somente as últimas" +#~ msgstr "`*' foram modificadas. O argumento N faz listar somente as últimas" #~ msgid "the last N lines. The -c option causes the history list to be" -#~ msgstr "N linhas. A opção -c faz com que a lista histórica seja apagada" +#~ msgstr "N linhas. A opção -c faz com que a lista histórica seja apagada" #~ msgid "" #~ "cleared by deleting all of the entries. The `-w' option writes out the" #~ msgstr "" -#~ "removendo todas as entradas. A opção `-w' escreve o histórico atual no" +#~ "removendo todas as entradas. A opção `-w' escreve o histórico atual no" #~ msgid "" #~ "current history to the history file; `-r' means to read the file and" #~ msgstr "" -#~ "arquivo de histórico; A opção `-r' significa ler o arquivo e apensar seu" +#~ "arquivo de histórico; A opção `-r' significa ler o arquivo e apensar seu" #~ msgid "append the contents to the history list instead. `-a' means" #~ msgstr "" -#~ "conteúdo à lista histórica. A opção `-a' significa apensar as linhas de" +#~ "conteúdo à lista histórica. A opção `-a' significa apensar as linhas de" #~ msgid "to append history lines from this session to the history file." -#~ msgstr "histórico desta sessão ao arquivo de histórico." +#~ msgstr "histórico desta sessão ao arquivo de histórico." #~ msgid "Argument `-n' means to read all history lines not already read" -#~ msgstr "A opção `-n' faz ler todas as linhas de histórico ainda não lidas" +#~ msgstr "A opção `-n' faz ler todas as linhas de histórico ainda não lidas" #~ msgid "from the history file and append them to the history list. If" #~ msgstr "" -#~ "do arquivo histórico, e apensá-las à lista de histórico. Se ARQUIVO" +#~ "do arquivo histórico, e apensá-las à lista de histórico. Se ARQUIVO" #~ msgid "FILENAME is given, then that is used as the history file else" -#~ msgstr "for fornecido, então este é usado como arquivo de histórico, senão" +#~ msgstr "for fornecido, então este é usado como arquivo de histórico, senão" #~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." #~ msgstr "" -#~ "se $HISTFILE possui valor, este é usado, senão ~/.bash_history. Se a" +#~ "se $HISTFILE possui valor, este é usado, senão ~/.bash_history. Se a" #~ msgid "If the -s option is supplied, the non-option ARGs are appended to" #~ msgstr "" -#~ "opção -s for fornecida, os ARGs, que não forem opções, são apensados à" +#~ "opção -s for fornecida, os ARGs, que não forem opções, são apensados à" #~ msgid "the history list as a single entry. The -p option means to perform" #~ msgstr "" -#~ "lista histórica como uma única entrada. A opção -p significa realizar a" +#~ "lista histórica como uma única entrada. A opção -p significa realizar a" #~ msgid "" #~ "history expansion on each ARG and display the result, without storing" #~ msgstr "" -#~ "expansão da história em cada ARG e exibir o resultado, sem armazenar" +#~ "expansão da história em cada ARG e exibir o resultado, sem armazenar" #~ msgid "anything in the history list." -#~ msgstr "nada na lista de histórico." +#~ msgstr "nada na lista de histórico." #~ msgid "Lists the active jobs. The -l option lists process id's in addition" #~ msgstr "" -#~ "Lista os trabalhos ativos. A opção -l lista os ID's dos processos além" +#~ "Lista os trabalhos ativos. A opção -l lista os ID's dos processos além" #~ msgid "to the normal information; the -p option lists process id's only." #~ msgstr "" -#~ "das informações usuais; a opção -p lista somente os ID's dos processos." +#~ "das informações usuais; a opção -p lista somente os ID's dos processos." #~ msgid "" #~ "If -n is given, only processes that have changed status since the last" @@ -5206,29 +6771,29 @@ msgstr "" #~ msgid "" #~ "notification are printed. JOBSPEC restricts output to that job. The" #~ msgstr "" -#~ "última notificação são exibidos. JOB-ESPECIFICADO restringe a saída a " +#~ "última notificação são exibidos. JOB-ESPECIFICADO restringe a saída a " #~ "este" #~ msgid "-r and -s options restrict output to running and stopped jobs only," #~ msgstr "" -#~ "trabalho. As opções -r e -s restringem a saída apenas aos trabalhos" +#~ "trabalho. As opções -r e -s restringem a saída apenas aos trabalhos" #~ msgid "respectively. Without options, the status of all active jobs is" #~ msgstr "" -#~ "executando e parados, respectivamente. Sem opções, o status de todos os" +#~ "executando e parados, respectivamente. Sem opções, o status de todos os" #~ msgid "" #~ "printed. If -x is given, COMMAND is run after all job specifications" #~ msgstr "" -#~ "trabalhos ativos são exibidos. Se -x for fornecido, COMANDO é executado" +#~ "trabalhos ativos são exibidos. Se -x for fornecido, COMANDO é executado" #~ msgid "" #~ "that appear in ARGS have been replaced with the process ID of that job's" #~ msgstr "" -#~ "após todas as especificações de trabalho que aparecem em ARGS terem sido" +#~ "após todas as especificações de trabalho que aparecem em ARGS terem sido" #~ msgid "process group leader." -#~ msgstr "substituídas pelo ID do processo líder deste grupo de processos." +#~ msgstr "substituídas pelo ID do processo líder deste grupo de processos." #~ msgid "Removes each JOBSPEC argument from the table of active jobs." #~ msgstr "" @@ -5241,19 +6806,19 @@ msgstr "" #~ msgid "" #~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" #~ msgstr "" -#~ "SIGSPEC não estiver presente, então SIGTERM é assumido. A opção `-l'" +#~ "SIGSPEC não estiver presente, então SIGTERM é assumido. A opção `-l'" #~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" #~ msgstr "" -#~ "lista os nomes dos sinais; havendo argumentos após `-l', são assumidos" +#~ "lista os nomes dos sinais; havendo argumentos após `-l', são assumidos" #~ msgid "be signal numbers for which names should be listed. Kill is a shell" #~ msgstr "" -#~ "como sendo os números dos sinais cujos nomes devem ser exibidos. Kill" +#~ "como sendo os números dos sinais cujos nomes devem ser exibidos. Kill" #~ msgid "builtin for two reasons: it allows job IDs to be used instead of" #~ msgstr "" -#~ "é um comando interno por duas razões: permite o uso do ID do trabalho em" +#~ "é um comando interno por duas razões: permite o uso do ID do trabalho em" #~ msgid "process IDs, and, if you have reached the limit on processes that" #~ msgstr "" @@ -5263,41 +6828,41 @@ msgstr "" #~ msgid "" #~ "you can create, you don't have to start a process to kill another one." #~ msgstr "" -#~ "podem ser criados, não é necessário um novo processo para remover outro." +#~ "podem ser criados, não é necessário um novo processo para remover outro." #~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" -#~ msgstr "Cada ARG é uma expressão aritmética a ser avaliada. A avaliação é" +#~ msgstr "Cada ARG é uma expressão aritmética a ser avaliada. A avaliação é" #~ msgid "is done in long integers with no check for overflow, though division" #~ msgstr "" -#~ "feita usando inteiros longos sem verificar estouro, embora a divisão" +#~ "feita usando inteiros longos sem verificar estouro, embora a divisão" #~ msgid "by 0 is trapped and flagged as an error. The following list of" -#~ msgstr "por 0 seja capturada e indicada como erro. A lista abaixo está" +#~ msgstr "por 0 seja capturada e indicada como erro. A lista abaixo está" #~ msgid "operators is grouped into levels of equal-precedence operators." -#~ msgstr "grupada em níveis de igual de precedência dos operadores." +#~ msgstr "grupada em níveis de igual de precedência dos operadores." #~ msgid "The levels are listed in order of decreasing precedence." -#~ msgstr "Os níveis estão listados em ordem decrescente de precedência." +#~ msgstr "Os níveis estão listados em ordem decrescente de precedência." #~ msgid "\t-, +\t\tunary minus, plus" -#~ msgstr "\t-, +\t\tmenos, mais unários" +#~ msgstr "\t-, +\t\tmenos, mais unários" #~ msgid "\t!, ~\t\tlogical and bitwise negation" -#~ msgstr "\t!, ~\t\tnegação lógica e bit a bit" +#~ msgstr "\t!, ~\t\tnegação lógica e bit a bit" #~ msgid "\t*, /, %\t\tmultiplication, division, remainder" -#~ msgstr "\t*, /, %\t\tmultiplicação, divisão, resto" +#~ msgstr "\t*, /, %\t\tmultiplicação, divisão, resto" #~ msgid "\t+, -\t\taddition, subtraction" -#~ msgstr "\t+, -\t\tadição, subtração" +#~ msgstr "\t+, -\t\tadição, subtração" #~ msgid "\t<<, >>\t\tleft and right bitwise shifts" -#~ msgstr "\t<<, >>\t\tdeslocamento à esquerda e à direita bit a bit" +#~ msgstr "\t<<, >>\t\tdeslocamento à esquerda e à direita bit a bit" #~ msgid "\t<=, >=, <, >\tcomparison" -#~ msgstr "\t<=, >=, <, >\tcomparação" +#~ msgstr "\t<=, >=, <, >\tcomparação" #~ msgid "\t==, !=\t\tequality, inequality" #~ msgstr "\t==, !=\t\tigualdade, desigualdade" @@ -5312,16 +6877,16 @@ msgstr "" #~ msgstr "\t|\t\tOU Inclusivo (OR) bit a bit" #~ msgid "\t&&\t\tlogical AND" -#~ msgstr "\t&&\t\tE lógico" +#~ msgstr "\t&&\t\tE lógico" #~ msgid "\t||\t\tlogical OR" -#~ msgstr "\t||\t\tOU lógico" +#~ msgstr "\t||\t\tOU lógico" #~ msgid "\texpr ? expr : expr" #~ msgstr "\texpr ? expr : expr" #~ msgid "\t\t\tconditional expression" -#~ msgstr "\t\t\texpressão condicional" +#~ msgstr "\t\t\texpressão condicional" #~ msgid "\t=, *=, /=, %=," #~ msgstr "\t=, *=, /=, %=," @@ -5330,134 +6895,138 @@ msgstr "" #~ msgstr "\t+=, -=, <<=, >>=," #~ msgid "\t&=, ^=, |=\tassignment" -#~ msgstr "\t&=, ^=, |=\tatribuição" +#~ msgstr "\t&=, ^=, |=\tatribuição" #~ msgid "is replaced by its value (coerced to a long integer) within" -#~ msgstr "substituído pelo seu valor (convertido em inteiro longo) dentro" +#~ msgstr "substituído pelo seu valor (convertido em inteiro longo) dentro" #~ msgid "an expression. The variable need not have its integer attribute" -#~ msgstr "da expressão. A variável não precisa ter seu atributo inteiro" +#~ msgstr "da expressão. A variável não precisa ter seu atributo inteiro" #~ msgid "turned on to be used in an expression." -#~ msgstr "ativo para ser usada em uma expressão." +#~ msgstr "ativo para ser usada em uma expressão." #~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" #~ msgstr "" -#~ "Os operadores são avaliados em ordem de precedência. Sub-expressões" +#~ "Os operadores são avaliados em ordem de precedência. Sub-expressões" #~ msgid "parentheses are evaluated first and may override the precedence" -#~ msgstr "entre parênteses são avaliadas primeiro e podem prevalecer sobre as" +#~ msgstr "entre parênteses são avaliadas primeiro e podem prevalecer sobre as" #~ msgid "rules above." -#~ msgstr "regras de precedência anteriores." +#~ msgstr "regras de precedência anteriores." #~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" -#~ msgstr "Se o último argumento for avaliado como 0, `let' retorna 1, caso" +#~ msgstr "Se o último argumento for avaliado como 0, `let' retorna 1, caso" #~ msgid "otherwise." -#~ msgstr "contrário, retorna 0." +#~ msgstr "contrário, retorna 0." #~ msgid "One line is read from the standard input, and the first word is" -#~ msgstr "Uma linha é lida a partir da entrada padrão, e a primeira palavra é" +#~ msgstr "Uma linha é lida a partir da entrada padrão, e a primeira palavra é" #~ msgid "" #~ "assigned to the first NAME, the second word to the second NAME, and so" #~ msgstr "" -#~ "atribuída ao primeiro NOME, a segunda ao segundo NOME, e assim por diante," +#~ "atribuída ao primeiro NOME, a segunda ao segundo NOME, e assim por diante," #~ msgid "" #~ "on, with leftover words assigned to the last NAME. Only the characters" #~ msgstr "" -#~ "com as palavras restantes atribuídas ao último NOME. Somente os " +#~ "com as palavras restantes atribuídas ao último NOME. Somente os " #~ "caracteres" #~ msgid "found in $IFS are recognized as word delimiters. The return code is" #~ msgstr "" -#~ "encontrados em $IFS são reconhecidos como delimitadores. O código de " +#~ "encontrados em $IFS são reconhecidos como delimitadores. O código de " #~ "retorno" #~ msgid "" #~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" #~ msgstr "" -#~ "é zero, a menos que EOF seja encontrado. Se nenhum NOME for fornecido," +#~ "é zero, a menos que EOF seja encontrado. Se nenhum NOME for fornecido," #~ msgid "" #~ "line read is stored in the REPLY variable. If the -r option is given," #~ msgstr "" -#~ "a linha lida é armazenada na variável REPLY. Se a opção -r for fornecida," +#~ "a linha lida é armazenada na variável REPLY. Se a opção -r for fornecida," #~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" #~ msgstr "" -#~ "significa entrada `textual', desabilitando a interpretação da contrabarra." +#~ "significa entrada `textual', desabilitando a interpretação da contrabarra." #~ msgid "the `-p' option is supplied, the string supplied as an argument is" #~ msgstr "" -#~ "Se a opção `-p' for fornecida a MENSAGEM fornecida como argumento é " +#~ "Se a opção `-p' for fornecida a MENSAGEM fornecida como argumento é " #~ "exibida," #~ msgid "" #~ "output without a trailing newline before attempting to read. If -a is" #~ msgstr "" -#~ "sem o caracter de nova linha, antes de efetuar a leitura. Se a opção -a" +#~ "sem o caracter de nova linha, antes de efetuar a leitura. Se a opção -a" #~ msgid "" #~ "supplied, the words read are assigned to sequential indices of ARRAY," #~ msgstr "" -#~ "for fornecida, as palavras lidas são atribuídas aos índices seqüenciais" +#~ "for fornecida, as palavras lidas são atribuídas aos índices seqüenciais" #~ msgid "starting at zero. If -e is supplied and the shell is interactive," #~ msgstr "" -#~ "da MATRIZ, começando por zero. Se a opção -e for fornecida, e a shell for" +#~ "do ARRAY, começando por zero. Se a opção -e for fornecida, e a shell for" #~ msgid "readline is used to obtain the line." -#~ msgstr "interativa, `readline' é utilizado para ler a linha." +#~ msgstr "interativa, `readline' é utilizado para ler a linha." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N" +#~ msgstr "Faz a função terminar com o valor de retorno especificado por N." #~ msgid "is omitted, the return status is that of the last command." -#~ msgstr "Se N for omitido, retorna o status do último comando executado." +#~ msgstr "Se N for omitido, retorna o status do último comando executado." #~ msgid " -a Mark variables which are modified or created for export." #~ msgstr "" -#~ " -a Marcar para exportação as variáveis que são criadas ou " +#~ " -a Marcar para exportação as variáveis que são criadas ou " #~ "modificadas." #~ msgid " -b Notify of job termination immediately." -#~ msgstr " -b Notificar imediatamente o término do trabalho." +#~ msgstr " -b Notificar imediatamente o término do trabalho." #~ msgid " -e Exit immediately if a command exits with a non-zero status." #~ msgstr "" #~ " -e Terminar imediatamente se um comando terminar com status != 0." #~ msgid " -f Disable file name generation (globbing)." -#~ msgstr " -f Desabilitar a geração de nome de arquivo (metacaracteres)." +#~ msgstr " -f Desabilitar a geração de nome de arquivo (metacaracteres)." #~ msgid " -h Remember the location of commands as they are looked up." -#~ msgstr " -h Lembrar da localização dos comandos ao procurá-los." +#~ msgstr " -h Lembrar da localização dos comandos ao procurá-los." #~ msgid "" #~ " -i Force the shell to be an \"interactive\" one. Interactive shells" -#~ msgstr " -i Forçar a `shell' ser do tipo \"interativa\". `Shells'" +#~ msgstr " -i Forçar a shell ser do tipo \"interativa\". `Shells'" #~ msgid " always read `~/.bashrc' on startup." -#~ msgstr " interativas sempre lêem `~/.bashrc' ao iniciar." +#~ msgstr " interativas sempre lêem `~/.bashrc' ao iniciar." #~ msgid " -k All assignment arguments are placed in the environment for a" #~ msgstr "" -#~ " -k Todos os argumentos de atribuição são colocados no ambiente," +#~ " -k Todos os argumentos de atribuição são colocados no ambiente," #~ msgid " command, not just those that precede the command name." -#~ msgstr " e não somente os que precedem o nome do comando." +#~ msgstr " e não somente os que precedem o nome do comando." #~ msgid " -m Job control is enabled." -#~ msgstr " -m O controle de trabalho está habilitado." +#~ msgstr " -m O controle de trabalho está habilitado." #~ msgid " -n Read commands but do not execute them." -#~ msgstr " -n Ler os comandos, mas não executá-los." +#~ msgstr " -n Ler os comandos, mas não executá-los." #~ msgid " -o option-name" -#~ msgstr " -o NOME-DA-OPÇÃO" +#~ msgstr " -o NOME-DA-OPÇÃO" #~ msgid " Set the variable corresponding to option-name:" -#~ msgstr " Inicializar a variável correspondente ao nome da opção:" +#~ msgstr " Inicializar a variável correspondente ao nome da opção:" #~ msgid " allexport same as -a" #~ msgstr " allexport o mesmo que -a" @@ -5467,7 +7036,7 @@ msgstr "" #~ msgid " emacs use an emacs-style line editing interface" #~ msgstr "" -#~ " emacs usar interface de edição de linha estilo emacs" +#~ " emacs usar interface de edição de linha estilo emacs" #~ msgid " errexit same as -e" #~ msgstr " errexit o mesmo que -e" @@ -5479,7 +7048,7 @@ msgstr "" #~ msgstr " histexpand o mesmo que -H" #~ msgid " ignoreeof the shell will not exit upon reading EOF" -#~ msgstr " ignoreeof a `shell' não termina após ler EOF" +#~ msgstr " ignoreeof a shell não termina após ler EOF" #~ msgid " interactive-comments" #~ msgstr " interactive-comments" @@ -5487,7 +7056,7 @@ msgstr "" #~ msgid "" #~ " allow comments to appear in interactive commands" #~ msgstr "" -#~ " permite comentários em comandos interativos" +#~ " permite comentários em comandos interativos" #~ msgid " keyword same as -k" #~ msgstr " keyword o mesmo que -k" @@ -5519,15 +7088,15 @@ msgstr "" #~ msgid "" #~ " posix change the behavior of bash where the default" #~ msgstr "" -#~ " posix mudar o comportamento do `bash' onde o padrão" +#~ " posix mudar o comportamento do `bash' onde o padrão" #~ msgid "" #~ " operation differs from the 1003.2 standard to" #~ msgstr "" -#~ " for diferente do padrão 1003.2, para tornar" +#~ " for diferente do padrão 1003.2, para tornar" #~ msgid " match the standard" -#~ msgstr " igual ao padrão" +#~ msgstr " igual ao padrão" #~ msgid " privileged same as -p" #~ msgstr " privileged o mesmo que -p" @@ -5537,7 +7106,7 @@ msgstr "" #~ msgid " vi use a vi-style line editing interface" #~ msgstr "" -#~ " vi usar interface de edição de linha estilo vi" +#~ " vi usar interface de edição de linha estilo vi" #~ msgid " xtrace same as -x" #~ msgstr " xtrace o mesmo que -x" @@ -5545,132 +7114,132 @@ msgstr "" #~ msgid "" #~ " -p Turned on whenever the real and effective user ids do not match." #~ msgstr "" -#~ " -p Habilitado sempre que o usuário real e efetivo forem diferentes." +#~ " -p Habilitado sempre que o usuário real e efetivo forem diferentes." #~ msgid " Disables processing of the $ENV file and importing of shell" #~ msgstr "" -#~ " Desabilita o processamento do arquivo $ENV e importação das " -#~ "funções" +#~ " Desabilita o processamento do arquivo $ENV e importação das " +#~ "funções" #~ msgid "" #~ " functions. Turning this option off causes the effective uid and" #~ msgstr "" -#~ " da `shell'. Desabilitando esta opção faz com que o `uid' e `gid'" +#~ " da shell. Desabilitando esta opção faz com que o `uid' e `gid'" #~ msgid " gid to be set to the real uid and gid." #~ msgstr " efetivos sejam feitos o mesmo que o `uid' e `gid' reais." #~ msgid " -t Exit after reading and executing one command." -#~ msgstr " -t Sair após ler e executar um comando." +#~ msgstr " -t Sair após ler e executar um comando." #~ msgid " -u Treat unset variables as an error when substituting." #~ msgstr "" -#~ " -u Tratar como erro as variáveis não inicializadas na substituição." +#~ " -u Tratar como erro as variáveis não inicializadas na substituição." #~ msgid " -v Print shell input lines as they are read." -#~ msgstr " -v Exibir as linhas de entrada da `shell' ao lê-las." +#~ msgstr " -v Exibir as linhas de entrada da shell ao lê-las." #~ msgid " -x Print commands and their arguments as they are executed." -#~ msgstr " -x Exibir os comandos e seus argumentos ao executá-los." +#~ msgstr " -x Exibir os comandos e seus argumentos ao executá-los." #~ msgid " -B the shell will perform brace expansion" -#~ msgstr " -B a `shell' irá realizar a expansão das chaves {}" +#~ msgstr " -B a shell irá realizar a expansão das chaves {}" #~ msgid " -H Enable ! style history substitution. This flag is on" -#~ msgstr " -H Habilitar o estilo ! para substituição do histórico." +#~ msgstr " -H Habilitar o estilo ! para substituição do histórico." #~ msgid " by default." -#~ msgstr " Esta opção está ativa por padrão." +#~ msgstr " Esta opção está ativa por padrão." #~ msgid " -C If set, disallow existing regular files to be overwritten" -#~ msgstr " -C Não permite que arquivos regulares existentes sejam" +#~ msgstr " -C Não permite que arquivos regulares existentes sejam" #~ msgid " by redirection of output." -#~ msgstr " sobrescritos pelo redirecionamento da saída." +#~ msgstr " sobrescritos pelo redirecionamento da saída." #~ msgid " -P If set, do not follow symbolic links when executing commands" -#~ msgstr " -P Não seguir os vínculos simbólicos ao executar comandos," +#~ msgstr " -P Não seguir os vínculos simbólicos ao executar comandos," #~ msgid " such as cd which change the current directory." -#~ msgstr " tais como `cd', que troca o diretório atual." +#~ msgstr " tais como `cd', que troca o diretório atual." #~ msgid "Using + rather than - causes these flags to be turned off. The" -#~ msgstr "Usando + em vez de - faz com que as opções sejam desabilitadas. As" +#~ msgstr "Usando + em vez de - faz com que as opções sejam desabilitadas. As" #~ msgid "flags can also be used upon invocation of the shell. The current" #~ msgstr "" -#~ "opções também podem ser usadas na chamada da `shell'. O conjunto atual" +#~ "opções também podem ser usadas na chamada da shell. O conjunto atual" #~ msgid "" #~ "set of flags may be found in $-. The remaining n ARGs are positional" #~ msgstr "" -#~ "de opções pode ser encontrado em $-. Os n ARGs restantes são parâmetros" +#~ "de opções pode ser encontrado em $-. Os n ARGs restantes são parâmetros" #~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" -#~ msgstr "posicionais e são atribuídos, em ordem, a $1, $2, .. $n. Se nenhum" +#~ msgstr "posicionais e são atribuídos, em ordem, a $1, $2, .. $n. Se nenhum" #~ msgid "ARGs are given, all shell variables are printed." -#~ msgstr "ARG for fornecido, todas as variáveis da `shell' são exibidas." +#~ msgstr "ARG for fornecido, todas as variáveis da shell são exibidas." #~ msgid "For each NAME, remove the corresponding variable or function. Given" #~ msgstr "" -#~ "Para cada NOME, remove a variável ou a função correspondente. Usando-se a" +#~ "Para cada NOME, remove a variável ou a função correspondente. Usando-se a" #~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," #~ msgstr "" -#~ "opção `-v', `unset' atua somente nas variáveis. Usando-se a opção `-f'" +#~ "opção `-v', `unset' atua somente nas variáveis. Usando-se a opção `-f'" #~ msgid "unset will only act on functions. With neither flag, unset first" -#~ msgstr "`unset' atua somente nas funções. Sem nenhuma opção, inicialmente" +#~ msgstr "`unset' atua somente nas funções. Sem nenhuma opção, inicialmente" #~ msgid "tries to unset a variable, and if that fails, then tries to unset a" -#~ msgstr "`unset' tenta remover uma variável e, se falhar, tenta remover uma" +#~ msgstr "`unset' tenta remover uma variável e, se falhar, tenta remover uma" #~ msgid "" #~ "function. Some variables (such as PATH and IFS) cannot be unset; also" #~ msgstr "" -#~ "função. Algumas variáveis (como PATH e IFS) não podem ser removidas." +#~ "função. Algumas variáveis (como PATH e IFS) não podem ser removidas." #~ msgid "see readonly." -#~ msgstr "Veja também o comando `readonly'." +#~ msgstr "Veja também o comando `readonly'." #~ msgid "NAMEs are marked for automatic export to the environment of" #~ msgstr "" -#~ "NOMEs são marcados para serem automaticamente exportados para o ambiente" +#~ "NOMEs são marcados para serem automaticamente exportados para o ambiente" #~ msgid "subsequently executed commands. If the -f option is given," -#~ msgstr "dos comando executados a seguir. Se a opção -f for fornecida," +#~ msgstr "dos comando executados a seguir. Se a opção -f for fornecida," #~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" #~ msgstr "" -#~ "os NOMEs se referem a funções. Se nenhum nome for fornecido, ou se `-p'" +#~ "os NOMEs se referem a funções. Se nenhum nome for fornecido, ou se `-p'" #~ msgid "is given, a list of all names that are exported in this shell is" #~ msgstr "" -#~ "for usado, uma lista com todos os nomes que são exportados nesta `shell' é" +#~ "for usado, uma lista com todos os nomes que são exportados nesta shell é" #~ msgid "printed. An argument of `-n' says to remove the export property" #~ msgstr "" -#~ "exibida. O argumento `-n' faz remover a propriedade de exportação dos" +#~ "exibida. O argumento `-n' faz remover a propriedade de exportação dos" #~ msgid "from subsequent NAMEs. An argument of `--' disables further option" -#~ msgstr "NOMEs subseqüentes. O argumento `--' desabilita o processamento de" +#~ msgstr "NOMEs subseqüentes. O argumento `--' desabilita o processamento de" #~ msgid "processing." -#~ msgstr "opções posteriores." +#~ msgstr "opções posteriores." #~ msgid "" #~ "The given NAMEs are marked readonly and the values of these NAMEs may" #~ msgstr "" -#~ "Os NOMEs são marcados como somente para leitura, e os valores destes" +#~ "Os NOMEs são marcados como somente para leitura, e os valores destes" #~ msgid "not be changed by subsequent assignment. If the -f option is given," #~ msgstr "" -#~ "NOMEs não poderão ser alterados por novas atribuições. Se a opção -f for" +#~ "NOMEs não poderão ser alterados por novas atribuições. Se a opção -f for" #~ msgid "then functions corresponding to the NAMEs are so marked. If no" #~ msgstr "" -#~ "fornecida, as funções correspondentes a NOMEs também são marcadas. Sem" +#~ "fornecida, as funções correspondentes a NOMEs também são marcadas. Sem" #~ msgid "" #~ "arguments are given, or if `-p' is given, a list of all readonly names" @@ -5680,30 +7249,35 @@ msgstr "" #~ msgid "" #~ "is printed. An argument of `-n' says to remove the readonly property" #~ msgstr "" -#~ "somente para leitura é exibida. O argumento `-n' remove a propriedade" +#~ "somente para leitura é exibida. O argumento `-n' remove a propriedade" #~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" -#~ msgstr "somente para leitura. A opção `-a' faz tratar cada NOME como uma" +#~ msgstr "somente para leitura. A opção `-a' faz tratar cada NOME como uma" #~ msgid "an array variable. An argument of `--' disables further option" #~ msgstr "" -#~ "variável tipo matriz. Um argumento `--' desabilita o processamento de" +#~ "variável tipo array. Um argumento `--' desabilita o processamento de" + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +#~ msgstr "" +#~ "Os parâmetros posicionais a partir de $N+1 ... são deslocados para $1 ..." #~ msgid "not given, it is assumed to be 1." -#~ msgstr "Se N não for especificado, o valor 1 é assumido ($2 vira $1 ...)." +#~ msgstr "Se N não for especificado, o valor 1 é assumido ($2 vira $1 ...)." #~ msgid "Read and execute commands from FILENAME and return. The pathnames" #~ msgstr "Ler e executar os comandos em ARQUIVO e retornar. Os caminhos em" #~ msgid "in $PATH are used to find the directory containing FILENAME." -#~ msgstr "$PATH são usados para encontrar o diretório contendo o ARQUIVO." +#~ msgstr "$PATH são usados para encontrar o diretório contendo o ARQUIVO." #~ msgid "Suspend the execution of this shell until it receives a SIGCONT" #~ msgstr "" -#~ "Suspender a execução desta `shell' até que o sinal SIGCONT seja recebido." +#~ "Suspender a execução desta shell até que o sinal SIGCONT seja recebido." #~ msgid "signal. The `-f' if specified says not to complain about this" -#~ msgstr "Se a opção `-f' for especificada indica para não reclamar sobre ser" +#~ msgstr "Se a opção `-f' for especificada indica para não reclamar sobre ser" #~ msgid "being a login shell if it is; just suspend anyway." #~ msgstr "" @@ -5715,15 +7289,15 @@ msgstr "" #~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" #~ msgstr "" -#~ "As expressões podem ser unárias ou binárias. As expressões unárias são" +#~ "As expressões podem ser unárias ou binárias. As expressões unárias são" #~ msgid "expressions are often used to examine the status of a file. There" #~ msgstr "" -#~ "muito usadas para examinar o status de um arquivo. Existem, também," +#~ "muito usadas para examinar o status de um arquivo. Existem, também," #~ msgid "are string operators as well, and numeric comparison operators." #~ msgstr "" -#~ "operadores para cadeias de caracteres (strings) e comparações numéricas." +#~ "operadores para cadeias de caracteres (strings) e comparações numéricas." #~ msgid "File operators:" #~ msgstr "Operadores para arquivos:" @@ -5736,7 +7310,7 @@ msgstr "" #~ " -c ARQUIVO Verdade se o arquivo for do tipo especial de caracter." #~ msgid " -d FILE True if file is a directory." -#~ msgstr " -d ARQUIVO Verdade se o arquivo for um diretório." +#~ msgstr " -d ARQUIVO Verdade se o arquivo for um diretório." #~ msgid " -e FILE True if file exists." #~ msgstr " -e ARQUIVO Verdade se o arquivo existir." @@ -5750,10 +7324,10 @@ msgstr "" #~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." #~ msgstr "" -#~ " -h ARQUIVO Verdade se arquivo for um vínculo simbólico. Usar \"-L\"." +#~ " -h ARQUIVO Verdade se arquivo for um vínculo simbólico. Usar \"-L\"." #~ msgid " -L FILE True if file is a symbolic link." -#~ msgstr " -L ARQUIVO Verdade se o arquivo for um vínculo simbólico." +#~ msgstr " -L ARQUIVO Verdade se o arquivo for um vínculo simbólico." #~ msgid " -k FILE True if file has its \"sticky\" bit set." #~ msgstr " -k ARQUIVO Verdade se o arquivo tiver o bit \"sticky\" ativo." @@ -5763,10 +7337,10 @@ msgstr "" #~ msgid " -r FILE True if file is readable by you." #~ msgstr "" -#~ " -r ARQUIVO Verdade se você tiver autorização para ler o arquivo." +#~ " -r ARQUIVO Verdade se você tiver autorização para ler o arquivo." #~ msgid " -s FILE True if file exists and is not empty." -#~ msgstr " -s ARQUIVO Verdade se o arquivo existir e não estiver vazio." +#~ msgstr " -s ARQUIVO Verdade se o arquivo existir e não estiver vazio." #~ msgid " -S FILE True if file is a socket." #~ msgstr " -S ARQUIVO Verdade se o arquivo for um soquete." @@ -5782,16 +7356,16 @@ msgstr "" #~ msgid " -w FILE True if the file is writable by you." #~ msgstr "" -#~ " -w ARQUIVO Verdade se você tiver autorização para escrever no " +#~ " -w ARQUIVO Verdade se você tiver autorização para escrever no " #~ "arquivo." #~ msgid " -x FILE True if the file is executable by you." #~ msgstr "" -#~ " -x ARQUIVO Verdade se você tiver autorização para executar o arquivo." +#~ " -x ARQUIVO Verdade se você tiver autorização para executar o arquivo." #~ msgid " -O FILE True if the file is effectively owned by you." #~ msgstr "" -#~ " -O ARQUIVO Verdade se o arquivo pertencer ao seu usuário efetivo." +#~ " -O ARQUIVO Verdade se o arquivo pertencer ao seu usuário efetivo." #~ msgid "" #~ " -G FILE True if the file is effectively owned by your group." @@ -5802,15 +7376,15 @@ msgstr "" #~ msgstr " ARQ1 -nt ARQ2 Verdade se ARQ1 for mais novo (conforme a data" #~ msgid " modification date) file2." -#~ msgstr " de modificação) do que ARQ2." +#~ msgstr " de modificação) do que ARQ2." #~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." #~ msgstr " ARQ1 -ot ARQ2 Verdade se ARQ1 for mais antigo que ARQ2." #~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." #~ msgstr "" -#~ " ARQ1 -ef ARQ2 Verdade se ARQ1 for um vínculo direto para ARQ2.\n" -#~ " (mesma unidade e mesmo número do inode)" +#~ " ARQ1 -ef ARQ2 Verdade se ARQ1 for um vínculo direto para ARQ2.\n" +#~ " (mesma unidade e mesmo número do inode)" #~ msgid "String operators:" #~ msgstr "Operadores para cadeias de caracteres (strings):" @@ -5822,19 +7396,19 @@ msgstr "" #~ msgstr " -n STRING" #~ msgid " STRING True if string is not empty." -#~ msgstr " STRING Verdade se STRING não estiver vazia." +#~ msgstr " STRING Verdade se STRING não estiver vazia." #~ msgid " STRING1 = STRING2" #~ msgstr " STRING1 = STRING2" #~ msgid " True if the strings are equal." -#~ msgstr " Verdade se STRING1 for idêntica à STRING2." +#~ msgstr " Verdade se STRING1 for idêntica à STRING2." #~ msgid " STRING1 != STRING2" #~ msgstr " STRING1 != STRING2" #~ msgid " True if the strings are not equal." -#~ msgstr " Verdade se STRING1 não for idêntica à STRING2." +#~ msgstr " Verdade se STRING1 não for idêntica à STRING2." #~ msgid " STRING1 < STRING2" #~ msgstr " STRING1 < STRING2" @@ -5842,7 +7416,7 @@ msgstr "" #~ msgid "" #~ " True if STRING1 sorts before STRING2 lexicographically" #~ msgstr "" -#~ " Verdade se STRING1 tiver ordenação anterior à STRING2." +#~ " Verdade se STRING1 tiver ordenação anterior à STRING2." #~ msgid " STRING1 > STRING2" #~ msgstr " STRING1 > STRING2" @@ -5850,13 +7424,13 @@ msgstr "" #~ msgid "" #~ " True if STRING1 sorts after STRING2 lexicographically" #~ msgstr "" -#~ " Verdade se STRING1 tiver ordenação posterior à STRING2." +#~ " Verdade se STRING1 tiver ordenação posterior à STRING2." #~ msgid "Other operators:" #~ msgstr "Outros operadores:" #~ msgid " ! EXPR True if expr is false." -#~ msgstr " ! EXPR Verdade se a expressão EXPR for falsa." +#~ msgstr " ! EXPR Verdade se a expressão EXPR for falsa." #~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." #~ msgstr " EXPR1 -a EXPR2 Verdade se EXPR1 `E' EXPR2 forem verdadeiras." @@ -5865,14 +7439,14 @@ msgstr "" #~ msgstr " EXPR1 -o EXPR2 Verdade se EXPR1 `OU' EXPR2 for verdadeira." #~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," -#~ msgstr " arg1 OP arg2 Testes aritméticos. OP pode ser -eq, -ne," +#~ msgstr " arg1 OP arg2 Testes aritméticos. OP pode ser -eq, -ne," #~ msgid " -lt, -le, -gt, or -ge." #~ msgstr " -lt, -le, -gt, ou -ge." #~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," #~ msgstr "" -#~ "Operadores aritméticos binários retornam verdadeiro se ARG1 for igual," +#~ "Operadores aritméticos binários retornam verdadeiro se ARG1 for igual," #~ msgid "" #~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" @@ -5882,14 +7456,21 @@ msgstr "" #~ msgstr "ARG2, respectivamente." #~ msgid "This is a synonym for the \"test\" builtin, but the last" -#~ msgstr "É um sinônimo para o comando interno \"test\", mas o último" +#~ msgstr "É um sinônimo para o comando interno \"test\", mas o último" + +#~ msgid "argument must be a literal `]', to match the opening `['." +#~ msgstr "argumento deve ser o literal `]', para fechar o `[' de abertura." + +#~ msgid "Print the accumulated user and system times for processes run from" +#~ msgstr "" +#~ "Exibe os tempos acumulados do usuário e do sistema para os processos" #~ msgid "the shell." -#~ msgstr "executados por esta `shell'." +#~ msgstr "executados por esta shell." #~ msgid "The command ARG is to be read and executed when the shell receives" #~ msgstr "" -#~ "O comando em ARG é para ser lido e executado quando a `shell' receber o(s)" +#~ "O comando em ARG é para ser lido e executado quando a shell receber o(s)" #~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" #~ msgstr "" @@ -5901,50 +7482,50 @@ msgstr "" #~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." #~ msgstr "" -#~ "SINAL-ESPEC é ignorado pela `shell' e pelos comandos chamados por ela." +#~ "SINAL-ESPEC é ignorado pela shell e pelos comandos chamados por ela." #~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" #~ msgstr "" -#~ "Se SINAL-ESPEC for EXIT (0) o comando em ARG é executado na saída da" +#~ "Se SINAL-ESPEC for EXIT (0) o comando em ARG é executado na saída da" #~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" #~ msgstr "" -#~ "`shell'. Se SINAL-ESPEC for DEBUG, o comando em ARG é executado após cada" +#~ "shell. Se SINAL-ESPEC for DEBUG, o comando em ARG é executado após cada" #~ msgid "command. If ARG is `-p' then the trap commands associated with" #~ msgstr "" -#~ "comando. Se ARG for `-p' então os comandos de captura associados com cada" +#~ "comando. Se ARG for `-p' então os comandos de captura associados com cada" #~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" -#~ msgstr "SINAL-ESPEC são exibidos. Se nenhum argumento for fornecido, ou se" +#~ msgstr "SINAL-ESPEC são exibidos. Se nenhum argumento for fornecido, ou se" #~ msgid "only `-p' is given, trap prints the list of commands associated with" #~ msgstr "" -#~ "somente `-p' for fornecido, é exibida a lista dos comandos associados" +#~ "somente `-p' for fornecido, é exibida a lista dos comandos associados" #~ msgid "" #~ "each signal number. SIGNAL_SPEC is either a signal name in " #~ msgstr "" -#~ "com cada número de sinal. SINAL-ESPEC é um nome de sinal em ou" +#~ "com cada número de sinal. SINAL-ESPEC é um nome de sinal em ou" #~ msgid "" #~ "or a signal number. `trap -l' prints a list of signal names and their" #~ msgstr "" -#~ "um número de sinal. `trap -l' exibe a lista de nomes de sinais com seus" +#~ "um número de sinal. `trap -l' exibe a lista de nomes de sinais com seus" #~ msgid "corresponding numbers. Note that a signal can be sent to the shell" #~ msgstr "" -#~ "números correspondentes. Note que o sinal pode ser enviado para a `shell'" +#~ "números correspondentes. Note que o sinal pode ser enviado para a shell" #~ msgid "with \"kill -signal $$\"." -#~ msgstr "através do comando \"kill -SINAL $$\"." +#~ msgstr "através do comando \"kill -SINAL $$\"." #~ msgid "For each NAME, indicate how it would be interpreted if used as a" #~ msgstr "Para cada NOME, indica como este deve ser interpretado caso seja" #~ msgid "If the -t option is used, returns a single word which is one of" #~ msgstr "" -#~ "Se a opção -t for fornecida, `type' retorna uma única palavra dentre" +#~ "Se a opção -t for fornecida, `type' retorna uma única palavra dentre" #~ msgid "" #~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" @@ -5954,28 +7535,28 @@ msgstr "" #~ msgid "" #~ "alias, shell reserved word, shell function, shell builtin, disk file," #~ msgstr "" -#~ "alias, uma palavra reservada, função ou comando interno da shell, um " +#~ "alias, uma palavra reservada, função ou comando interno da shell, um " #~ "arquivo" #~ msgid "or unfound, respectively." -#~ msgstr "em disco, ou não for encontrado, respectivamente." +#~ msgstr "em disco, ou não for encontrado, respectivamente." #~ msgid "If the -p flag is used, either returns the name of the disk file" -#~ msgstr "Se a opção -p for fornecida, retorna o nome do arquivo em disco que" +#~ msgstr "Se a opção -p for fornecida, retorna o nome do arquivo em disco que" #~ msgid "that would be executed, or nothing if -t would not return `file'." -#~ msgstr "deve ser executado, ou nada, caso -t não retorne `file'." +#~ msgstr "deve ser executado, ou nada, caso -t não retorne `file'." #~ msgid "If the -a flag is used, displays all of the places that contain an" -#~ msgstr "Se a opção -a for fornecida, exibe todos os locais que contém um" +#~ msgstr "Se a opção -a for fornecida, exibe todos os locais que contém um" #~ msgid "" #~ "executable named `file'. This includes aliases and functions, if and" #~ msgstr "" -#~ "arquivo executável chamado `ARQUIVO', incluindo os aliases e funções," +#~ "arquivo executável chamado `ARQUIVO', incluindo os aliases e funções," #~ msgid "only if the -p flag is not also used." -#~ msgstr "mas somente se a opção -p não for fornecida conjuntamente." +#~ msgstr "mas somente se a opção -p não for fornecida conjuntamente." #~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," #~ msgstr "O comando `type' aceita -all, -path, e -type no lugar de" @@ -5985,14 +7566,14 @@ msgstr "" #~ msgid "Ulimit provides control over the resources available to processes" #~ msgstr "" -#~ "Ulimit estabelece controle sobre os recursos disponíveis para os processos" +#~ "Ulimit estabelece controle sobre os recursos disponíveis para os processos" #~ msgid "started by the shell, on systems that allow such control. If an" #~ msgstr "" #~ "iniciados por esta shell, em sistemas que permitem estes controles. Se uma" #~ msgid "option is given, it is interpreted as follows:" -#~ msgstr "opção for fornecida, é interpretada como mostrado a seguir:" +#~ msgstr "opção for fornecida, é interpretada como mostrado a seguir:" #~ msgid " -S\tuse the `soft' resource limit" #~ msgstr " -S\tutilizar os limites correntes (`soft') dos recursos" @@ -6001,56 +7582,56 @@ msgstr "" #~ msgstr " -H\tutilizar os limites absolutos (`hard') dos recursos" #~ msgid " -a\tall current limits are reported" -#~ msgstr " -a\ttodos os limites correntes são informados" +#~ msgstr " -a\ttodos os limites correntes são informados" #~ msgid " -c\tthe maximum size of core files created" #~ msgstr "" -#~ " -c\to tamanho máximo para os arquivos de imagem do núcleo criados" +#~ " -c\to tamanho máximo para os arquivos de imagem do núcleo criados" #~ msgid " -d\tthe maximum size of a process's data segment" -#~ msgstr " -d\to tamanho máximo do segmento de dados de um processo" +#~ msgstr " -d\to tamanho máximo do segmento de dados de um processo" #~ msgid " -m\tthe maximum resident set size" #~ msgstr "" -#~ " -m\to tamanho máximo do conjunto de processos residentes em memória" +#~ " -m\to tamanho máximo do conjunto de processos residentes em memória" #~ msgid " -s\tthe maximum stack size" -#~ msgstr " -s\to tamanho máximo da pilha" +#~ msgstr " -s\to tamanho máximo da pilha" #~ msgid " -t\tthe maximum amount of cpu time in seconds" -#~ msgstr " -t\ta quantidade máxima de tempo de CPU em segundos" +#~ msgstr " -t\ta quantidade máxima de tempo de CPU em segundos" #~ msgid " -f\tthe maximum size of files created by the shell" -#~ msgstr " -f\to tamanho máximo dos arquivos criados pela `shell'" +#~ msgstr " -f\to tamanho máximo dos arquivos criados pela shell" #~ msgid " -p\tthe pipe buffer size" -#~ msgstr " -p\to tamanho da área intermediária (buffer) do `pipe'" +#~ msgstr " -p\to tamanho da área intermediária (buffer) do `pipe'" #~ msgid " -n\tthe maximum number of open file descriptors" -#~ msgstr " -n\to número máximo de descritores de arquivos abertos" +#~ msgstr " -n\to número máximo de descritores de arquivos abertos" #~ msgid " -u\tthe maximum number of user processes" -#~ msgstr " -u\to número máximo de processos do usuário" +#~ msgstr " -u\to número máximo de processos do usuário" #~ msgid " -v\tthe size of virtual memory" -#~ msgstr " -v\to tamanho da memória virtual" +#~ msgstr " -v\to tamanho da memória virtual" #~ msgid "If LIMIT is given, it is the new value of the specified resource." #~ msgstr "" #~ "Se LIMITE for fornecido, torna-se o novo valor do recurso especificado." #~ msgid "Otherwise, the current value of the specified resource is printed." -#~ msgstr "Senão, o valor atual do recurso especificado é exibido." +#~ msgstr "Senão, o valor atual do recurso especificado é exibido." #~ msgid "If no option is given, then -f is assumed. Values are in 1k" #~ msgstr "" -#~ "Se nenhuma opção for fornecida, então -f é assumido. Os valores são em" +#~ "Se nenhuma opção for fornecida, então -f é assumido. Os valores são em" #~ msgid "increments, except for -t, which is in seconds, -p, which is in" -#~ msgstr "incrementos de 1k, exceto para -t, que é em segundos, -p, que é em" +#~ msgstr "incrementos de 1k, exceto para -t, que é em segundos, -p, que é em" #~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" -#~ msgstr "incrementos de 512 bytes, e -u, que é o número cardinal de" +#~ msgstr "incrementos de 512 bytes, e -u, que é o número cardinal de" #~ msgid "processes." #~ msgstr "processos." @@ -6058,235 +7639,242 @@ msgstr "" #~ msgid "" #~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" #~ msgstr "" -#~ "MODO é atribuído à máscara de criação de arquivos do usuário. Se omitido," +#~ "MODO é atribuído à máscara de criação de arquivos do usuário. Se omitido," #~ msgid "" #~ "`-S' is supplied, the current value of the mask is printed. The `-S'" #~ msgstr "" -#~ "ou se `-S' for especificado, a máscara em uso é exibida. A opção `-S'" +#~ "ou se `-S' for especificado, a máscara em uso é exibida. A opção `-S'" #~ msgid "" #~ "option makes the output symbolic; otherwise an octal number is output." -#~ msgstr "exibe símbolos na saída; sem esta opção um número octal é exibido." +#~ msgstr "exibe símbolos na saída; sem esta opção um número octal é exibido." #~ msgid "If MODE begins with a digit, it is interpreted as an octal number," #~ msgstr "" -#~ "Se MODO começar por um dígito, é interpretado como sendo um número octal," +#~ "Se MODO começar por um dígito, é interpretado como sendo um número octal," #~ msgid "" #~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." #~ msgstr "" -#~ "senão devem ser caracteres simbólicos, como os aceitos por chmod(1)." +#~ "senão devem ser caracteres simbólicos, como os aceitos por chmod(1)." #~ msgid "" #~ "Wait for the specified process and report its termination status. If" #~ msgstr "" -#~ "Aguardar pelo processo especificado e informar seu status de término. Se N" +#~ "Aguardar pelo processo especificado e informar seu status de término. Se N" #~ msgid "N is not given, all currently active child processes are waited for," #~ msgstr "" -#~ "não for especificado, todos os processos filhos ativos são aguardados," +#~ "não for especificado, todos os processos filhos ativos são aguardados," #~ msgid "and the return code is zero. N may be a process ID or a job" -#~ msgstr "e o código de retorno é zero. N pode ser o ID de um processo ou a" +#~ msgstr "e o código de retorno é zero. N pode ser o ID de um processo ou a" #~ msgid "specification; if a job spec is given, all processes in the job's" #~ msgstr "" -#~ "especificação de um trabalho; Se for a especificação de um trabalho, todos" +#~ "especificação de um trabalho; Se for a especificação de um trabalho, todos" #~ msgid "pipeline are waited for." -#~ msgstr "os processos presentes no `pipeline' do trabalho são aguardados." +#~ msgstr "os processos presentes no `pipeline' do trabalho são aguardados." #~ msgid "and the return code is zero. N is a process ID; if it is not given," #~ msgstr "" -#~ "e o código de retorno é zero. N é o ID de um processo; se N não for" +#~ "e o código de retorno é zero. N é o ID de um processo; se N não for" #~ msgid "all child processes of the shell are waited for." -#~ msgstr "especificado, todos os processos filhos da `shell' são aguardados." +#~ msgstr "especificado, todos os processos filhos da shell são aguardados." #~ msgid "The `for' loop executes a sequence of commands for each member in a" #~ msgstr "" -#~ "O laço `for' executa a seqüência de comandos para cada membro na lista de" +#~ "O laço `for' executa a seqüência de comandos para cada membro na lista de" #~ msgid "" #~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" #~ msgstr "" -#~ "items. Se `in PALAVRAS ...;' não estiver presente, então `in \"$@\"'" +#~ "items. Se `in PALAVRAS ...;' não estiver presente, então `in \"$@\"'" #~ msgid "" #~ "assumed. For each element in WORDS, NAME is set to that element, and" #~ msgstr "" -#~ "(parâmetros posicionais) é assumido. Para cada elemento em PALAVRAS, NOME" +#~ "(parâmetros posicionais) é assumido. Para cada elemento em PALAVRAS, NOME" #~ msgid "the COMMANDS are executed." -#~ msgstr "assume seu valor, e os COMANDOS são executados." +#~ msgstr "assume seu valor, e os COMANDOS são executados." #~ msgid "The WORDS are expanded, generating a list of words. The" #~ msgstr "" -#~ "As palavras são expandidas, gerando uma lista de palavras. O conjunto" +#~ "As palavras são expandidas, gerando uma lista de palavras. O conjunto" #~ msgid "set of expanded words is printed on the standard error, each" #~ msgstr "" -#~ "de palavras expandidas é enviado para a saída de erro padrão, cada uma" +#~ "de palavras expandidas é enviado para a saída de erro padrão, cada uma" #~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" #~ msgstr "" -#~ "precedida por um número. Se `in PALAVRAS' for omitido, `in \"$@\"' é" +#~ "precedida por um número. Se `in PALAVRAS' for omitido, `in \"$@\"' é" #~ msgid "is assumed. The PS3 prompt is then displayed and a line read" -#~ msgstr "assumido. Em seguida o prompt PS3 é exibido, e uma linha é lida da" +#~ msgstr "assumido. Em seguida o prompt PS3 é exibido, e uma linha é lida da" #~ msgid "from the standard input. If the line consists of the number" #~ msgstr "" -#~ "entrada padrão. Se a linha consistir do número correspondente ao número" +#~ "entrada padrão. Se a linha consistir do número correspondente ao número" #~ msgid "corresponding to one of the displayed words, then NAME is set" -#~ msgstr "de uma das palavras exibidas, então NOME é atribuído para esta" +#~ msgstr "de uma das palavras exibidas, então NOME é atribuído para esta" #~ msgid "to that word. If the line is empty, WORDS and the prompt are" #~ msgstr "" -#~ "PALAVRA. Se a linha estiver vazia, PALAVRAS e o prompt são exibidos" +#~ "PALAVRA. Se a linha estiver vazia, PALAVRAS e o prompt são exibidos" #~ msgid "redisplayed. If EOF is read, the command completes. Any other" #~ msgstr "" #~ "novamente. Se EOF for lido, o comando termina. Qualquer outro valor" #~ msgid "value read causes NAME to be set to null. The line read is saved" -#~ msgstr "lido faz com que NOME seja tornado nulo. A linha lida é salva" +#~ msgstr "lido faz com que NOME seja tornado nulo. A linha lida é salva" #~ msgid "in the variable REPLY. COMMANDS are executed after each selection" -#~ msgstr "na variável REPLY. COMANDOS são executados após cada seleção" +#~ msgstr "na variável REPLY. COMANDOS são executados após cada seleção" #~ msgid "until a break or return command is executed." -#~ msgstr "até que o comando `break' ou `return' seja executado." +#~ msgstr "até que o comando `break' ou `return' seja executado." + +#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" +#~ msgstr "" +#~ "Executar seletivamente COMANDOS tomando por base a correspondência entre" #~ msgid "`|' is used to separate multiple patterns." #~ msgstr "" -#~ "PALAVRA e PADRÃO. O caracter `|' é usado para separar múltiplos padrões." +#~ "PALAVRA e PADRÃO. O caracter `|' é usado para separar múltiplos padrões." #~ msgid "" #~ "The if COMMANDS are executed. If the exit status is zero, then the then" #~ msgstr "" -#~ "Os COMANDOS `if' são executados. Se os status de saída for zero, então os" +#~ "Os COMANDOS `if' são executados. Se os status de saída for zero, então os" #~ msgid "" #~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" #~ msgstr "" -#~ "COMANDOS `then' são executados, senão, os COMANDOS `elif' são executados " +#~ "COMANDOS `then' são executados, senão, os COMANDOS `elif' são executados " #~ "em" #~ msgid "" #~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" #~ msgstr "" -#~ "seqüência e, se o status de saída for zero, os COMANDOS `then' associados" +#~ "seqüência e, se o status de saída for zero, os COMANDOS `then' associados" #~ msgid "" #~ "are executed and the if command completes. Otherwise, the else COMMANDS" #~ msgstr "" -#~ "são executados e o `if' termina. Senão, os COMANDOS da cláusula `else'" +#~ "são executados e o `if' termina. Senão, os COMANDOS da cláusula `else'" #~ msgid "" #~ "are executed, if present. The exit status is the exit status of the last" #~ msgstr "" -#~ "são executados, se houver. O status de saída é o status de saída do" +#~ "são executados, se houver. O status de saída é o status de saída do" #~ msgid "command executed, or zero if no condition tested true." #~ msgstr "" -#~ "último comando executado, ou zero, se nenhuma condição for verdadeira." +#~ "último comando executado, ou zero, se nenhuma condição for verdadeira." + +#~ msgid "Expand and execute COMMANDS as long as the final command in the" +#~ msgstr "Expande e executa COMANDOS enquanto o comando final nos" #~ msgid "`while' COMMANDS has an exit status of zero." -#~ msgstr "COMANDOS `while' tiver um status de saída igual a zero." +#~ msgstr "COMANDOS `while' tiver um status de saída igual a zero." #~ msgid "`until' COMMANDS has an exit status which is not zero." -#~ msgstr "COMANDOS `until' tiver um status de saída diferente de zero." +#~ msgstr "COMANDOS `until' tiver um status de saída diferente de zero." #~ msgid "Create a simple command invoked by NAME which runs COMMANDS." #~ msgstr "Cria um comando chamado NOME o qual executa COMANDOS." #~ msgid "Arguments on the command line along with NAME are passed to the" -#~ msgstr "Os argumentos na linha de comando juntamente com NOME são passados" +#~ msgstr "Os argumentos na linha de comando juntamente com NOME são passados" #~ msgid "function as $0 .. $n." -#~ msgstr "para a função como $0 .. $n." +#~ msgstr "para a função como $0 .. $n." + +#~ msgid "Run a set of commands in a group. This is one way to redirect an" +#~ msgstr "Executa um conjunto de comandos agrupando-os. Esta é uma forma de" #~ msgid "entire set of commands." #~ msgstr "redirecionar todo um conjunto de comandos." #~ msgid "This is similar to the `fg' command. Resume a stopped or background" #~ msgstr "" -#~ "Semelhante ao comando `fg'. Prossegue a execução de um trabalho parado ou" +#~ "Semelhante ao comando `fg'. Prossegue a execução de um trabalho parado ou" #~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" #~ msgstr "" -#~ "em segundo plano. Se DÍGITOS for especificado, então este trabalho é " +#~ "em segundo plano. Se DÃGITOS for especificado, então este trabalho é " #~ "usado." #~ msgid "" #~ "WORD, then the job whose name begins with WORD is used. Following the" #~ msgstr "" -#~ "Se for especificado PALAVRA, o trabalho começado por PALAVRA é usado." +#~ "Se for especificado PALAVRA, o trabalho começado por PALAVRA é usado." #~ msgid "job specification with a `&' places the job in the background." #~ msgstr "" -#~ "Seguindo-se a especificação por um `&' põe o trabalho em segundo plano." +#~ "Seguindo-se a especificação por um `&' põe o trabalho em segundo plano." #~ msgid "BASH_VERSION The version numbers of this Bash." -#~ msgstr "BASH_VERSION Os números da versão desta `bash'." +#~ msgstr "BASH_VERSION Os números da versão desta `bash'." #~ msgid "CDPATH A colon separated list of directories to search" -#~ msgstr "CDPATH Uma lista, separada por dois pontos, de diretórios" +#~ msgstr "CDPATH Uma lista, separada por dois pontos, de diretórios" #~ msgid "\t\twhen the argument to `cd' is not found in the current" -#~ msgstr "\t\ta serem pesquisados quando o argumento para `cd' não for" - -#~ msgid "\t\tdirectory." -#~ msgstr "\t\tencontrado no diretório atual." +#~ msgstr "\t\ta serem pesquisados quando o argumento para `cd' não for" #~ msgid "" #~ "HISTFILE The name of the file where your command history is stored." #~ msgstr "" -#~ "HISTFILE O nome do arquivo onde o histórico de comandos é " +#~ "HISTFILE O nome do arquivo onde o histórico de comandos é " #~ "armazenado." #~ msgid "HISTFILESIZE The maximum number of lines this file can contain." #~ msgstr "" -#~ "HISTFILESIZE O número máximo de linhas que este arquivo pode conter." +#~ "HISTFILESIZE O número máximo de linhas que este arquivo pode conter." #~ msgid "HISTSIZE The maximum number of history lines that a running" -#~ msgstr "HISTSIZE O número máximo de linhas do histórico que uma" +#~ msgstr "HISTSIZE O número máximo de linhas do histórico que uma" #~ msgid "\t\tshell can access." -#~ msgstr "\t\t`shell' em execução pode acessar." +#~ msgstr "\t\tshell em execução pode acessar." #~ msgid "HOME The complete pathname to your login directory." #~ msgstr "" -#~ "HOME O nome completo do caminho do seu diretório de login." +#~ "HOME O nome completo do caminho do seu diretório de login." #~ msgid "" #~ "HOSTTYPE The type of CPU this version of Bash is running under." #~ msgstr "" -#~ "HOSTTYPE O tipo de CPU sob a qual esta `bash' está executando." +#~ "HOSTTYPE O tipo de CPU sob a qual esta `bash' está executando." #~ msgid "" #~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" -#~ msgstr "IGNOREEOF Controla a ação da `shell' ao receber um caracter" +#~ msgstr "IGNOREEOF Controla a ação da shell ao receber um caracter" #~ msgid "\t\tcharacter as the sole input. If set, then the value" -#~ msgstr "\t\tEOF como única entrada. Se estiver ativa, então o valor da" +#~ msgstr "\t\tEOF como única entrada. Se estiver ativa, então o valor da" #~ msgid "\t\tof it is the number of EOF characters that can be seen" -#~ msgstr "\t\tvariável é o número de caracteres EOF que podem ser recebidos," +#~ msgstr "\t\tvariável é o número de caracteres EOF que podem ser recebidos," #~ msgid "\t\tin a row on an empty line before the shell will exit" -#~ msgstr "\t\tde forma seguida em uma linha vazia, antes da `shell' terminar" +#~ msgstr "\t\tde forma seguida em uma linha vazia, antes da shell terminar" #~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." #~ msgstr "" -#~ "\t\t(padrão 10). Caso contrário, EOF significa o fim da entrada de dados." +#~ "\t\t(padrão 10). Caso contrário, EOF significa o fim da entrada de dados." #~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." #~ msgstr "" -#~ "MAILCHECK\tFreqüência, em segundos, para a `bash' verificar novo e-mail." +#~ "MAILCHECK\tFreqüência, em segundos, para a `bash' verificar novo e-mail." #~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" #~ msgstr "" @@ -6296,33 +7884,33 @@ msgstr "" #~ msgstr "\t\tnos quais a `bash' vai verificar se existe novo e-mail." #~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." -#~ msgstr "OSTYPE\t\tA versão do Unix sob a qual a `bash' está executando." +#~ msgstr "OSTYPE\t\tA versão do Unix sob a qual a `bash' está executando." #~ msgid "PATH A colon-separated list of directories to search when" #~ msgstr "" -#~ "PATH Uma lista, separada por dois pontos, de diretórios a" +#~ "PATH Uma lista, separada por dois pontos, de diretórios a" #~ msgid "\t\tlooking for commands." #~ msgstr "\t\tserem pesquisados quando os comandos forem procurados." #~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" -#~ msgstr "PROMPT_COMMAND O comando a ser executado antes da exibição de cada" +#~ msgstr "PROMPT_COMMAND O comando a ser executado antes da exibição de cada" #~ msgid "\t\tprimary prompt." -#~ msgstr "\t\tmensagem de prompt primária." +#~ msgstr "\t\tmensagem de prompt primária." #~ msgid "PS1 The primary prompt string." -#~ msgstr "PS1 A mensagem primária de prompt exibida." +#~ msgstr "PS1 A mensagem primária de prompt exibida." #~ msgid "PS2 The secondary prompt string." -#~ msgstr "PS2 A mensagem secundária de prompt exibida." +#~ msgstr "PS2 A mensagem secundária de prompt exibida." #~ msgid "TERM The name of the current terminal type." #~ msgstr "TERM O nome do tipo de terminal em uso no momento." #~ msgid "auto_resume Non-null means a command word appearing on a line by" #~ msgstr "" -#~ "auto_resume Não nulo significa que um comando aparecendo sozinho em" +#~ "auto_resume Não nulo significa que um comando aparecendo sozinho em" #~ msgid "\t\titself is first looked for in the list of currently" #~ msgstr "" @@ -6355,75 +7943,191 @@ msgstr "" #~ msgid "" #~ " Non-null means to save multiple-line commands together on" #~ msgstr "" -#~ " Se não for nulo significa salvar comandos com múltiplas" +#~ " Se não for nulo significa salvar comandos com múltiplas" #~ msgid " a single history line." -#~ msgstr " linhas, juntas em uma única linha do histórico." +#~ msgstr " linhas, juntas em uma única linha do histórico." #~ msgid "histchars Characters controlling history expansion and quick" #~ msgstr "" -#~ "histchars Caracteres que controlam a expansão do histórico e a" +#~ "histchars Caracteres que controlam a expansão do histórico e a" #~ msgid "\t\tsubstitution. The first character is the history" -#~ msgstr "\t\tsubstituição rápida. O primeiro caracter é o de substituição" +#~ msgstr "\t\tsubstituição rápida. O primeiro caracter é o de substituição" #~ msgid "\t\tsubstitution character, usually `!'. The second is" -#~ msgstr "\t\tdo histórico, geralmente o `!'. O segundo caracter é o" +#~ msgstr "\t\tdo histórico, geralmente o `!'. O segundo caracter é o" #~ msgid "\t\tthe `quick substitution' character, usually `^'. The" -#~ msgstr "\t\tde substituição rápida, geralmente o `^'. O terceiro caracter" +#~ msgstr "\t\tde substituição rápida, geralmente o `^'. O terceiro caracter" #~ msgid "\t\tthird is the `history comment' character, usually `#'." -#~ msgstr "\t\té o de comentário do histórico, geralmente o `#'." +#~ msgstr "\t\té o de comentário do histórico, geralmente o `#'." #~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" #~ msgstr "" -#~ "HISTCONTROL\tCom valor igual a `ignorespace', significa não introduzir" +#~ "HISTCONTROL\tCom valor igual a `ignorespace', significa não introduzir" #~ msgid "\t\tlines which begin with a space or tab on the history" #~ msgstr "" -#~ "\t\tlinhas que iniciam por espaço ou tabulação na lista de histórico." +#~ "\t\tlinhas que iniciam por espaço ou tabulação na lista de histórico." #~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" -#~ msgstr "\t\tCom valor igual a `ignoredups', significa não introduzir linhas" +#~ msgstr "\t\tCom valor igual a `ignoredups', significa não introduzir linhas" #~ msgid "\t\tenter lines which match the last entered line. Set to" -#~ msgstr "\t\tque correspondam à última linha introduzida. Com valor igual a" +#~ msgstr "\t\tque correspondam à última linha introduzida. Com valor igual a" #~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," -#~ msgstr "\t\t`ignoreboth' significa combinar as duas opções. Remover," +#~ msgstr "\t\t`ignoreboth' significa combinar as duas opções. Remover," #~ msgid "\t\tor set to any other value than those above means to save" #~ msgstr "" -#~ "\t\tou atribuir algum outro valor que não os acima, significa salvar" +#~ "\t\tou atribuir algum outro valor que não os acima, significa salvar" #~ msgid "\t\tall lines on the history list." -#~ msgstr "\t\ttodas as linhas na lista de histórico." +#~ msgstr "\t\ttodas as linhas na lista de histórico." + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Adiciona o diretório no topo da pilha de diretórios, ou rotaciona a" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "" +#~ "pilha, fazendo o diretório atual de trabalho ficar no topo da pilha." + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "Sem nenhum argumento, troca os dois diretórios do topo." + +#~ msgid "+N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "+N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" + +#~ msgid "\tfrom the left of the list shown by `dirs') is at the top." +#~ msgstr "\tpartir da esquerda da lista exibida por `dirs') fique no topo." + +#~ msgid "-N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "" +#~ "-N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" + +#~ msgid "\tfrom the right) is at the top." +#~ msgstr "\tpartir da direita) fique no topo." + +#~ msgid "-n\tsuppress the normal change of directory when adding directories" +#~ msgstr "-n\tsuprime a troca normal de diretório ao se adicionar diretórios" + +#~ msgid "\tto the stack, so only the stack is manipulated." +#~ msgstr "\tà pilha, fazendo com que somente a pilha seja manipulada." + +#~ msgid "dir\tadds DIR to the directory stack at the top, making it the" +#~ msgstr "dir\tadiciona DIR à pilha de diretórios, no topo, tornando-o o" + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "Você pode exibir a pilha de diretórios através do comando `dirs'." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "Remove entradas da pilha de diretórios. Sem nenhum argumento," + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "remove o diretório que está no topo da pilha, e executa `cd' para" + +#~ msgid "+N\tremoves the Nth entry counting from the left of the list" +#~ msgstr "+N\tremove a n-ésima entrada contada a partir da esquerda da lista" + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "\texibida por `dirs', começando por zero. Por exemplo: `popd +0'" + +#~ msgid "\tremoves the first directory, `popd +1' the second." +#~ msgstr "\tremove o primeiro diretório, `popd +1' o segundo." + +#~ msgid "-N\tremoves the Nth entry counting from the right of the list" +#~ msgstr "-N\tremove a n-ésima entrada contada a partir da direita da lista" + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "\texibida por `dirs', começando por zero. Por exemplo: `popd -0'" + +#~ msgid "\tremoves the last directory, `popd -1' the next to last." +#~ msgstr "\tremove o último diretório, `popd -1' o penúltimo." + +#~ msgid "" +#~ "-n\tsuppress the normal change of directory when removing directories" +#~ msgstr "-n\tsuprime a troca normal de diretório ao remover-se diretórios" + +#~ msgid "\tfrom the stack, so only the stack is manipulated." +#~ msgstr "\tda pilha, fazendo com que somente a pilha seja manipulada." + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "Exibe a lista atual de diretórios memorizados. Os diretórios são" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "introduzidos na lista através do comando `pushd'; os diretórios são" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "removidos da lista através do comando `popd'." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "A opção -l especifica que `dirs' não deve exibir a versão resumida" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "dos diretórios relativos ao seu diretório `home'. Isto significa que" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "" +#~ "`~/bin' deve ser exibido como `/home/você/bin'. A opção -v faz com que" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "`dirs' exiba a pilha de diretórios com uma entrada por linha," + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "antecedendo o nome do diretório com a sua posição na pilha. A opção" + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "-p faz a mesma coisa, mas a posição na pilha não é exibida. A opção" + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "-c limpa a pilha de diretórios apagando todos os seus elementos." + +#~ msgid "" +#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" +#~ msgstr "" +#~ "+N\texibe a n-ésima entrada contada a partir da esquerda da lista exibida" + +#~ msgid "\tdirs when invoked without options, starting with zero." +#~ msgstr "\tpor `dirs', quando este é chamado sem opções, começando por zero." + +#~ msgid "" +#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" +#~ msgstr "" +#~ "-N\texibe a n-ésima entrada contada a partir da direita da lista exibida" #~ msgid "Toggle the values of variables controlling optional behavior." #~ msgstr "" -#~ "Alterna os valores das variáveis controladoras de comportamentos " +#~ "Alterna os valores das variáveis controladoras de comportamentos " #~ "opcionais." #~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" -#~ msgstr "A opção -s ativa (set) cada NOME-OPÇÃO; a opção -u desativa cada" +#~ msgstr "A opção -s ativa (set) cada NOME-OPÇÃO; a opção -u desativa cada" #~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" #~ msgstr "" -#~ "NOME-OPÇÃO. A opção -q suprime a saída; o status de término indica se" +#~ "NOME-OPÇÃO. A opção -q suprime a saída; o status de término indica se" #~ msgid "status indicates whether each OPTNAME is set or unset. The -o" -#~ msgstr "cada NOME-OPÇÃO foi ativado ou desativado A opção -o restringe" +#~ msgstr "cada NOME-OPÇÃO foi ativado ou desativado A opção -o restringe" #~ msgid "option restricts the OPTNAMEs to those defined for use with" -#~ msgstr "NOME-OPÇÃO para aqueles definidos para uso através de `set -o'." +#~ msgstr "NOME-OPÇÃO para aqueles definidos para uso através de `set -o'." #~ msgid "`set -o'. With no options, or with the -p option, a list of all" -#~ msgstr "Sem nenhuma opção, ou com a opção -p, uma lista com todas as" +#~ msgstr "Sem nenhuma opção, ou com a opção -p, uma lista com todas as" #~ msgid "settable options is displayed, with an indication of whether or" #~ msgstr "" -#~ "opções que podem ser ativadas é exibida, com indicação sobre se cada uma" +#~ "opções que podem ser ativadas é exibida, com indicação sobre se cada uma" #~ msgid "not each is set." -#~ msgstr "das opções está ativa ou não." +#~ msgstr "das opções está ativa ou não." diff --git a/po/ro.gmo b/po/ro.gmo index 8405f78e645be68156825d18695d6ef29be02b7e..5c7cb9a8b68c7a1d270bcfe31216572cf17ad18d 100644 GIT binary patch delta 2810 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 diff --git a/po/ro.po b/po/ro.po index d3b27f3..2b91db3 100644 --- a/po/ro.po +++ b/po/ro.po @@ -6,79 +6,85 @@ msgid "" msgstr "" "Project-Id-Version: bash 2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "incluziune greºitã în interval" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%c%c: opþiune invalidã" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nu se poate atribui cãtre index ne-numeric" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nu s-a putut crea: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, fuzzy, c-format msgid "`%s': invalid alias name" msgstr "%c%c: opþiune invalidã" @@ -87,354 +93,383 @@ msgstr "%c%c: op msgid "line editing not enabled" msgstr "" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, fuzzy, c-format msgid "%s: cannot read: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, fuzzy, c-format msgid "`%s': cannot unbind" msgstr "%s: comandã negãsitã" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, fuzzy, c-format msgid "`%s': unknown function name" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "" -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 #, fuzzy msgid "loop count" msgstr "logout" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "prea mulþi parametri" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "\t\tdirectorul curent." + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "" -#: builtins/common.c:101 +#: builtins/common.c:102 #, fuzzy, c-format msgid "line %d: " msgstr "slot %3d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, fuzzy, c-format msgid "warning: " msgstr "în scriere" -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "" -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "opþiunea necesitã un parametru: -" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "" -#: builtins/common.c:205 +#: builtins/common.c:213 #, fuzzy, c-format msgid "%s: not found" msgstr "%s: comandã negãsitã" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%c%c: opþiune invalidã" -#: builtins/common.c:221 +#: builtins/common.c:229 #, fuzzy, c-format msgid "%s: invalid option name" msgstr "%c%c: opþiune invalidã" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, fuzzy, c-format msgid "`%s': not a valid identifier" msgstr "`%s' nu este un identificator valid" -#: builtins/common.c:238 +#: builtins/common.c:246 #, fuzzy msgid "invalid octal number" msgstr "numãr de semnal invalid" -#: builtins/common.c:240 +#: builtins/common.c:248 #, fuzzy msgid "invalid hex number" msgstr "numãr de semnal invalid" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 #, fuzzy msgid "invalid number" msgstr "numãr de semnal invalid" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: variabilã doar în citire" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 #, fuzzy msgid "argument" msgstr "se aºteaptã parametru" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "" -#: builtins/common.c:290 +#: builtins/common.c:298 #, fuzzy, c-format msgid "%s: no job control" msgstr "nici un control de job în acest shell" -#: builtins/common.c:292 +#: builtins/common.c:300 #, fuzzy msgid "no job control" msgstr "nici un control de job în acest shell" -#: builtins/common.c:302 +#: builtins/common.c:310 #, fuzzy, c-format msgid "%s: restricted" msgstr "%s: jobul a fost terminat" -#: builtins/common.c:304 +#: builtins/common.c:312 #, fuzzy msgid "restricted" msgstr "Terminat" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "" -#: builtins/common.c:321 +#: builtins/common.c:329 #, fuzzy, c-format msgid "write error: %s" msgstr "eroare de legãturã (pipe): %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, fuzzy, c-format msgid "%s: ambiguous job spec" msgstr "%s: Redirectare ambiguã" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:126 +#: builtins/declare.def:127 #, 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:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%c%c: opþiune invalidã" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "$%s: nu se poate asigna în acest mod" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, fuzzy, c-format msgid "cannot open shared object %s: %s" msgstr "nu pot deschide legãtura numitã %s pentru %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, fuzzy, c-format msgid "%s: cannot delete: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: este director" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, fuzzy, c-format msgid "%s: not a regular file" msgstr "%s: nu se poate executa fiºierul binar" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nu se poate executa fiºierul binar" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, fuzzy, c-format msgid "%s: cannot execute: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, fuzzy, c-format msgid "logout\n" msgstr "logout" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "" -#: builtins/fc.def:262 +#: builtins/fc.def:269 #, fuzzy msgid "no command found" msgstr "%s: comandã negãsitã" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, fuzzy, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "" @@ -453,35 +488,35 @@ msgstr "op msgid "hashing disabled" msgstr "" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, fuzzy, c-format msgid "hits\tcommand\n" msgstr "ultima comandã." -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "" msgstr[1] "" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -#: builtins/help.def:199 +#: builtins/help.def:226 #, fuzzy, c-format msgid "%s: cannot open: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -493,15 +528,20 @@ msgid "" "\n" msgstr "" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%c%c: opþiune invalidã" + +#: builtins/history.def:375 #, fuzzy, c-format msgid "%s: history expansion failed" msgstr "%s: se aºteaptã expresie întreagã (integer)" @@ -515,117 +555,117 @@ msgstr "%s: variabil msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:263 +#: builtins/kill.def:265 #, fuzzy msgid "Unknown error" msgstr "Eroare necunoscutã %d" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "se aºteaptã expresie" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, fuzzy, c-format msgid "%s: not an indexed array" msgstr "%s: variabilã fãrã limitã" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%c%c: opþiune invalidã" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%c%c: opþiune invalidã" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "numãr de semnal invalid" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 #, fuzzy msgid "empty array variable name" msgstr "%s: variabilã fãrã limitã" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%c%c: opþiune invalidã" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 #, fuzzy msgid "no other directory" msgstr "director superior." -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%c%c: opþiune invalidã" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 #, fuzzy msgid "" msgstr "\tnoul director de lucru curent." -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 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 +689,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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 +714,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -695,148 +735,158 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:678 +#: builtins/read.def:696 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "eroare de legãturã (pipe): %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:782 +#: builtins/set.def:841 #, 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:826 +#: builtins/set.def:888 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: nu s-a putut crea: %s" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "%s: variabilã fãrã limitã" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, fuzzy, c-format msgid "%s: not a function" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: nu s-a putut crea: %s" + +#: builtins/shift.def:73 builtins/shift.def:79 #, fuzzy msgid "shift count" msgstr "shift [n]" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "" -#: builtins/source.def:155 +#: builtins/source.def:157 #, fuzzy, c-format msgid "%s: file not found" msgstr "%s: comandã negãsitã" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 #, fuzzy msgid "cannot suspend a login shell" msgstr "Ieºire dintr-un login al shell-ului." -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "" -#: builtins/type.def:274 +#: builtins/type.def:276 #, fuzzy, c-format msgid "%s is a function\n" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, fuzzy, c-format msgid "`%c': bad command" msgstr "%c%c: opþiune invalidã" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, fuzzy, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 #, fuzzy msgid "limit" msgstr "limitã CPU" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, fuzzy, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 #, fuzzy msgid "octal number" msgstr "numãr de semnal invalid" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr "" @@ -850,87 +900,108 @@ msgstr "ultima comand msgid "Aborting..." msgstr "" -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 #, fuzzy msgid "unknown command error" msgstr "Eroare necunoscutã %d" -#: error.c:441 +#: error.c:464 #, fuzzy msgid "bad command type" msgstr "ºi nume de comandã." -#: error.c:442 +#: error.c:465 #, fuzzy msgid "bad connector" msgstr "conector greºit `%d'" -#: error.c:443 +#: error.c:466 #, fuzzy msgid "bad jump" msgstr "Salt invalid %d" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: variabilã fãrã limitã" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 #, fuzzy msgid "pipe error" msgstr "eroare de legãturã (pipe): %s" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: comandã negãsitã" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: este director" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nu se poate executa fiºierul binar" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nu se poate duplica fd %d în fd 0: %s" @@ -977,39 +1048,39 @@ msgstr "" msgid "missing `)'" msgstr "`)' lipsã" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 #, fuzzy msgid "syntax error: operand expected" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1416 +#: expr.c:1419 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s: %s: %s (identificatorul erorii este \"%s\")\n" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "valoare prea mare pentru bazã" -#: expr.c:1543 +#: expr.c:1546 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "eroare de redirectare" -#: general.c:62 +#: general.c:68 #, fuzzy msgid "getcwd: cannot access parent directories" msgstr "getwd: nu s-au putut accesa directoarele pãrinte" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" @@ -1025,151 +1096,151 @@ msgstr "" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "check_bash_input: buffer deja existent pentru fd nou %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1435 +#: jobs.c:1590 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: Nu existã pid-ul (%d)!\n" -#: jobs.c:1450 +#: jobs.c:1605 #, fuzzy, c-format msgid "Signal %d" msgstr "Semnal Necunoscut #%d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Finalizat" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Stopat" -#: jobs.c:1473 +#: jobs.c:1628 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Stopat" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "În rulare" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Finalizat(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Ieºire %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Stare necunoscutã" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1602 +#: jobs.c:1760 #, fuzzy, c-format msgid " (wd: %s)" msgstr "(wd actual: %s)\n" -#: jobs.c:1819 +#: jobs.c:1985 #, 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:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: jobul a fost terminat" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3711 +#: jobs.c:3970 #, fuzzy, c-format msgid "%s: line %d: " msgstr "slot %3d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd actual: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp eºuat: %s" -#: jobs.c:3843 +#: jobs.c:4104 #, fuzzy msgid "initialize_job_control: line discipline" msgstr "initialize_jobs: disciplinã linie: %s" -#: jobs.c:3853 +#: jobs.c:4114 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "initialize_jobs: getpgrp eºuat: %s" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "nici un control de job în acest shell" @@ -1221,17 +1292,17 @@ msgstr "" msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1255,7 +1326,7 @@ msgstr "" msgid "%s: bad network path specification" msgstr "" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "" @@ -1292,232 +1363,267 @@ msgstr "Ave msgid "The mail in %s has been read\n" msgstr "Mailul din %s a fost citit\n" -#: make_cmd.c:323 +#: make_cmd.c:329 #, fuzzy msgid "syntax error: arithmetic expression required" msgstr "eroare de sintaxã în expresie " -#: make_cmd.c:325 +#: make_cmd.c:331 #, fuzzy msgid "syntax error: `;' unexpected" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: make_cmd.c:326 +#: make_cmd.c:332 #, fuzzy, c-format msgid "syntax error: `((%s))'" msgstr "eroare de sintaxã" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tip de instrucþiune greºit %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, fuzzy, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF brusc în cãutare dupã `%c'" -#: parse.y:4170 +#: parse.y:4410 #, fuzzy msgid "unexpected EOF while looking for `]]'" msgstr "EOF brusc în cãutare dupã `%c'" -#: parse.y:4175 +#: parse.y:4415 #, fuzzy, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:4179 +#: parse.y:4419 #, fuzzy msgid "syntax error in conditional expression" msgstr "eroare de sintaxã în expresie " -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4261 +#: parse.y:4501 #, fuzzy msgid "expected `)'" msgstr "se aºteaptã `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4339 +#: parse.y:4579 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: parse.y:4343 +#: parse.y:4583 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4380 +#: parse.y:4620 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:4383 +#: parse.y:4623 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:4387 +#: parse.y:4627 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:5755 +#: parse.y:6014 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "eroare de sintaxã" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Folosiþi \"%s\" pentru a pãrãsi shellul.\n" -#: parse.y:5989 +#: parse.y:6248 #, fuzzy msgid "unexpected EOF while looking for matching `)'" msgstr "EOF brusc în cãutare dupã `%c'" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector greºitr `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "" -#: redir.c:177 +#: redir.c:178 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: Redirectare ambiguã" -#: redir.c:181 +#: redir.c:182 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nu se poate accesa(clobber) fiºierul existent" -#: redir.c:186 +#: redir.c:187 #, fuzzy, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" -#: redir.c:191 +#: redir.c:192 #, 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:195 +#: redir.c:196 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nu pot asigna listã membrului intervalului" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "eroare de redirectare" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:890 +#: shell.c:927 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%c%c: opþiune invalidã" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: este director" + +#: shell.c:1777 msgid "I have no name!" msgstr "Nu am nici un nume!" -#: shell.c:1827 +#: shell.c:1930 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU %s, versiunea %s\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1526,44 +1632,54 @@ msgstr "" "Folosire:\t%s [GNU opþiune lungã] [opþiune] ...\n" "\t%s [GNU opþiune lungã] [opþiune] fiºier script ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "opþiuni lungi GNU:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Opþiuni ale shell-ului:\n" -#: shell.c:1835 +#: shell.c:1938 #, fuzzy msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD sau -c comandã\t\t(doar invocaþie)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s sau -o opþiune\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1737,93 +1853,108 @@ msgstr "Semnal Necunoscut #" msgid "Unknown Signal #%d" msgstr "Semnal Necunoscut #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substituþie invalidã: nu existã '%s' în %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nu pot asigna listã membrului intervalului" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s" -#: subst.c:5113 +#: subst.c:5798 #, fuzzy msgid "cannot make child for process substitution" msgstr "nu pot crea un proces copil pentru substituirea procesului: %s" -#: subst.c:5158 +#: subst.c:5848 #, fuzzy, c-format msgid "cannot open named pipe %s for reading" msgstr "nu pot deschide legãtura numitã %s pentru %s: %s" -#: subst.c:5160 +#: subst.c:5850 #, fuzzy, c-format msgid "cannot open named pipe %s for writing" msgstr "nu pot deschide legãtura numitã %s pentru %s: %s" -#: subst.c:5178 +#: subst.c:5873 #, 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:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "substituþie invalidã: nu existã ')' de final în %s" + +#: subst.c:6083 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "nu pot face legãturi(pipes) pentru substituþia de comenzi: %s" -#: subst.c:5414 +#: subst.c:6127 #, fuzzy msgid "cannot make child for command substitution" msgstr "nu pot crea un copil pentru substituþia de comenzi: %s" -#: subst.c:5433 +#: subst.c:6153 #, 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:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parametru null sau nesetat" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: expresie subºir < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: substituþie invalidã" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%c%c: opþiune invalidã" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "%c%c: opþiune invalidã" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametru null sau nesetat" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: expresie subºir < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nu se poate asigna în acest mod" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8421 +#: subst.c:9349 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substituþie invalidã: nu existã ')' de final în %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "" @@ -1837,122 +1968,122 @@ msgstr "se a msgid "%s: integer expression expected" msgstr "%s: se aºteaptã expresie întreagã (integer)" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "se aºteaptã `)'" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "se aºteaptã `)', s-a primit %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: se aºteaptã operator unar" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "lipseºte ']'" -#: trap.c:217 +#: trap.c:224 #, fuzzy msgid "invalid signal number" msgstr "numãr de semnal invalid" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:428 +#: trap.c:447 #, fuzzy, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Semnal invalid %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "eroare în importarea definiþiei funcþiei pentru '%s'" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nu pot asigna listã membrului intervalului" -#: variables.c:3646 +#: variables.c:3043 +#, c-format +msgid "%s: assigning integer to name reference" +msgstr "" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3891 +#: variables.c:4218 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametru null sau nesetat" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5257 +#: variables.c:5619 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: nu s-a putut crea: %s" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "" #: version.c:47 version2.c:47 @@ -1974,10 +2105,6 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "" - #: xmalloc.c:91 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1998,16 +2125,16 @@ msgstr "xmalloc: nu pot aloca %lu octe msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [nume[=valoare] ... ]" -#: builtins.c:47 +#: builtins.c:49 #, fuzzy msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] [nume ...]" -#: builtins.c:51 +#: builtins.c:53 #, fuzzy msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" @@ -2016,124 +2143,112 @@ msgstr "" "bind [-lpvsPVS] [-m keymap] [-f nume_fiºier] [-q nume] [-r keyseq] [keyseq:" "funcþie readline]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [shell-builtin [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 #, fuzzy msgid "caller [expr]" msgstr "test [expr]" -#: builtins.c:64 +#: builtins.c:66 #, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-PL] [dir]" -#: builtins.c:66 +#: builtins.c:68 #, fuzzy msgid "pwd [-LP]" msgstr "pwd [-PL]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "" - -#: builtins.c:72 -msgid "false" -msgstr "" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] comandã [arg ...]" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-afFrxi] [-p] nume[=valoare] ..." -#: builtins.c:78 +#: builtins.c:80 #, fuzzy -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "typeset [-afFrxi] [-p] nume[=valoare] ..." -#: builtins.c:80 +#: builtins.c:82 #, fuzzy msgid "local [option] name[=value] ..." msgstr "local nume[=valoare] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 #, fuzzy msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-pnds] [-a] [-f nume_fiºier] [nume ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts optstring nume [arg]" -#: builtins.c:96 +#: builtins.c:98 #, fuzzy msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a nume] fiºier [redirectare ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 #, fuzzy msgid "logout [n]" msgstr "logout" -#: builtins.c:103 +#: builtins.c:105 #, fuzzy msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e enume] [-nlr] [prim] [u8ltim] sau fc -s [pat=rep] [cmd]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [job_spec]" -#: builtins.c:111 +#: builtins.c:113 #, fuzzy msgid "bg [job_spec ...]" msgstr "bg [job_spec]" -#: builtins.c:114 +#: builtins.c:116 #, fuzzy msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-r] [-p nume_cale] [nume ...]" -#: builtins.c:117 +#: builtins.c:119 #, fuzzy msgid "help [-dms] [pattern ...]" msgstr "help [tipar ...]" -#: builtins.c:121 +#: builtins.c:123 #, fuzzy msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " @@ -2141,16 +2256,16 @@ msgid "" msgstr "" "history [-c] [n] sau history -awrn [nume_fiºier] sau history -ps arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobspec ...] sau jobs -x comandã [args]" -#: builtins.c:129 +#: builtins.c:131 #, fuzzy -msgid "disown [-h] [-ar] [jobspec ...]" +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [jobspec ...]" -#: builtins.c:132 +#: builtins.c:134 #, fuzzy msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " @@ -2158,123 +2273,119 @@ msgid "" msgstr "" "kill [-s sigspec | -n signum | -sigspec] [pid | job]... sau kill -l [sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 #, fuzzy msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o opþiune] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nume ...]" -#: builtins.c:144 +#: builtins.c:146 #, fuzzy msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-nf] [nume ...] sau export -p" -#: builtins.c:146 +#: builtins.c:148 #, fuzzy msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-anf] [nume ...] sau readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 #, fuzzy msgid "source filename [arguments]" msgstr "nume fiºier sursã" -#: builtins.c:152 +#: builtins.c:154 #, fuzzy msgid ". filename [arguments]" msgstr ". nume fiºier" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [expr]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "ori" - -#: builtins.c:164 +#: builtins.c:166 #, fuzzy msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [arg] [signal_spec] sau trap -l" -#: builtins.c:166 +#: builtins.c:168 #, fuzzy msgid "type [-afptP] name [name ...]" msgstr "type [-apt] nume [nume ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "ulimit [-SHacdfmstpnuv] [limitã]" -#: builtins.c:172 +#: builtins.c:174 #, fuzzy msgid "umask [-p] [-S] [mode]" msgstr "umask [-S] [mod]" -#: builtins.c:175 +#: builtins.c:177 #, fuzzy msgid "wait [-n] [id ...]" msgstr "wait [n]" -#: builtins.c:179 +#: builtins.c:181 #, fuzzy msgid "wait [pid ...]" msgstr "wait [n]" -#: builtins.c:182 +#: builtins.c:184 #, fuzzy msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NUME [în EXPRESIE ... ;] executã COMENZI; done" -#: builtins.c:184 +#: builtins.c:186 #, fuzzy msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for NUME [în EXPRESIE ... ;] executã COMENZI; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NUME [în EXPRESIE ... ;] executã COMENZI; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case EXPRESIE în [TIPAR[[TIPAR]..) COMENZI ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2282,102 +2393,102 @@ msgstr "" "if COMENZI; then COMENZI; [elif COMENZI; then COMENZI; ]... [ else " "COMENZI; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while COMENZI; do COMENZI; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until COMENZI; do COMENZI; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "" -#: builtins.c:200 +#: builtins.c:202 #, fuzzy msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function NUME { COMENZI ; } sau NUME () { COMENZI ; }" -#: builtins.c:202 +#: builtins.c:204 #, fuzzy msgid "{ COMMANDS ; }" msgstr "{ COMENZI }" -#: builtins.c:204 +#: builtins.c:206 #, fuzzy msgid "job_spec [&]" msgstr "fg [job_spec]" -#: builtins.c:206 +#: builtins.c:208 #, fuzzy msgid "(( expression ))" msgstr "se aºteaptã expresie" -#: builtins.c:208 +#: builtins.c:210 #, fuzzy msgid "[[ expression ]]" msgstr "se aºteaptã expresie" -#: builtins.c:210 +#: builtins.c:212 #, fuzzy msgid "variables - Names and meanings of some shell variables" msgstr "Variabilele shell-ului sunt admise ca operanzi. Numele variabilei" -#: builtins.c:213 +#: builtins.c:215 #, fuzzy msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [dir | +N | -N] [-n]" -#: builtins.c:217 +#: builtins.c:219 #, fuzzy msgid "popd [-n] [+N | -N]" msgstr "popd [+N | -N] [-n]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 #, fuzzy msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o opþiune lungã] nume_opt [nume_opt...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -#: builtins.c:237 +#: builtins.c:239 #, fuzzy msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "type [-apt] nume [nume ...]" -#: builtins.c:240 +#: builtins.c:242 msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2389,7 +2500,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2397,17 +2508,17 @@ msgid "" " defined." msgstr "" -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2441,14 +2552,15 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2459,7 +2571,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2470,7 +2582,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2484,7 +2596,7 @@ msgid "" " not a shell builtin.." msgstr "" -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2500,7 +2612,7 @@ msgid "" " is invalid." msgstr "" -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2523,16 +2635,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2545,13 +2657,13 @@ msgid "" " -P is used; non-zero otherwise." msgstr "" -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2561,7 +2673,7 @@ msgid "" " cannot be read." msgstr "" -#: builtins.c:439 +#: builtins.c:442 #, fuzzy msgid "" "Null command.\n" @@ -2573,7 +2685,7 @@ msgid "" msgstr "" "Nici un efect, comanda nu face nimic. Un cod de ieºire zero este returnat." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2581,7 +2693,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2589,7 +2701,7 @@ msgid "" " Always fails." msgstr "" -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2599,16 +2711,16 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2618,9 +2730,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2648,14 +2760,14 @@ msgid "" " assignment error occurs." msgstr "" -#: builtins.c:527 +#: builtins.c:530 msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2670,7 +2782,7 @@ msgid "" " assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2696,15 +2808,15 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2717,7 +2829,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2744,7 +2856,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2756,7 +2868,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2797,7 +2909,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2808,8 +2920,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2820,7 +2932,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:706 +#: builtins.c:709 #, fuzzy msgid "" "Exit the shell.\n" @@ -2829,7 +2941,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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2838,7 +2950,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2868,7 +2980,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2880,7 +2992,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2894,7 +3006,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -2903,22 +3015,22 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -2930,7 +3042,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2940,7 +3052,7 @@ msgid "" "given." msgstr "" -#: builtins.c:833 +#: builtins.c:836 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2949,23 +3061,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -2974,7 +3086,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:869 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -2984,7 +3096,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -2998,7 +3110,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3008,14 +3120,14 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:915 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3027,7 +3139,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3037,7 +3150,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3082,7 +3195,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3103,27 +3216,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3133,7 +3247,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3145,7 +3259,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1041 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3213,7 +3327,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3230,7 +3345,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3240,7 +3355,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3252,7 +3367,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3271,7 +3386,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3283,9 +3398,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3293,7 +3407,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3304,7 +3418,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3318,7 +3432,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3332,7 +3446,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3396,9 +3510,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3415,7 +3529,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3423,7 +3537,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3435,7 +3549,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3479,7 +3593,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3488,18 +3602,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3509,7 +3623,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -3527,6 +3641,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3538,7 +3653,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3556,7 +3672,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3574,7 +3690,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3594,7 +3710,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3609,7 +3725,7 @@ msgid "" " option is given." msgstr "" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3622,7 +3738,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3639,7 +3755,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3659,7 +3775,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3675,7 +3791,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3686,7 +3802,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3707,7 +3823,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3718,7 +3834,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3729,7 +3845,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3739,10 +3855,10 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3756,7 +3872,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3767,7 +3883,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3781,7 +3897,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3792,7 +3908,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3820,7 +3936,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3874,7 +3990,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -3884,19 +4000,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3905,7 +4021,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -3914,16 +4030,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3932,7 +4048,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -3943,25 +4059,25 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -3982,7 +4098,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3999,15 +4115,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -4021,7 +4137,7 @@ msgid "" " error occurs." msgstr "" -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4034,11 +4150,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -4048,7 +4164,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4061,7 +4177,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4092,7 +4208,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4103,20 +4219,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4133,13 +4250,19 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "times" +#~ msgstr "ori" + #, fuzzy #~ msgid "wait [pid]" #~ msgstr "wait [n]" @@ -4269,8 +4392,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ã" @@ -4915,8 +5038,8 @@ msgstr "" #~ msgid "" #~ " then the editor which corresponds to the current readline editing" #~ msgstr "" -#~ " apoi editorul care corespunde cu modul de editare al " -#~ "liniei(readline)" +#~ " apoi editorul care corespunde cu modul de editare al liniei" +#~ "(readline)" #~ msgid " mode, then vi." #~ msgstr " curente, ºi apoi vi." @@ -5530,8 +5653,8 @@ msgstr "" #~ msgid "" #~ "function. Some variables (such as PATH and IFS) cannot be unset; also" #~ msgstr "" -#~ "pe o funcþie. Anumite variabile ( precum PATH ºi IFS) nu pot fi " -#~ "desetate(unset);" +#~ "pe o funcþie. Anumite variabile ( precum PATH ºi IFS) nu pot fi desetate" +#~ "(unset);" #~ msgid "see readonly." #~ msgstr "de asemenea, vedeþi readonly." @@ -6200,9 +6323,6 @@ msgstr "" #~ "\t\tcãuta atunci când parametrii specificaþi comenzii `cd' nu sunt gãsiþi " #~ "în" -#~ msgid "\t\tdirectory." -#~ msgstr "\t\tdirectorul curent." - #~ msgid "" #~ "HISTFILE The name of the file where your command history is stored." #~ msgstr "" diff --git a/po/ru.gmo b/po/ru.gmo index 6033205704262915063a0df7b9953610c7462493..86ac1a6a372846e824b1f87971d4b43a2fad0393 100644 GIT binary patch literal 134863 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 literal 9155 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, 2006. +# GNU Bourne Again SHell. +# Copyright (C) 2002 Free Software Foundation, Inc. +# This file is distributed under the same license as the bash package. +# Ruslan Batdalov , 2002. +# Pavel Maryanov , 2014. # msgid "" msgstr "" -"Project-Id-Version: GNU bash 3.1-release\n" +"Project-Id-Version: bash 4.3-rc2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2006-01-05 21:28+0300\n" -"Last-Translator: Evgeniy Dushistov \n" -"Language-Team: Russian \n" -"Language: ru\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2014-10-13 17:51+0200\n" +"Last-Translator: Pavel Maryanov \n" +"Language-Team: Russian \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=KOI8-R\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: 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" +"X-Generator: Poedit 1.6.9\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" -msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ÉÎÄÅËÓ ÍÁÓÓÉ×Á" +msgstr "неправильный Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 #, c-format -msgid "%s: cannot convert indexed to associative array" +msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:539 -#, fuzzy, c-format -msgid "%s: invalid associative array key" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ ÏÐÃÉÉ" +#: arrayfunc.c:393 builtins/declare.def:780 +#, c-format +msgid "%s: cannot convert indexed to associative array" +msgstr "%s: не удаётÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ð´ÐµÐºÑ Ð² аÑÑоциативный маÑÑив" -#: arrayfunc.c:541 +#: arrayfunc.c:578 +#, c-format +msgid "%s: invalid associative array key" +msgstr "%s: недейÑтвительный ключ аÑÑоциативного маÑÑива" + +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "%s; ÎÅ ÍÏÇÕ ÐÒÉÐÉÓÁÔØ ÎÅ ÞÉÓÌÏ×ÏÊ ÉÎÄÅËÓ" +msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить значение нечиÑловому индекÑу" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" +"%s: %s: необходимо иÑпользовать Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸ назначении аÑÑоциативному маÑÑиву" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" -msgstr "%s: ÎÅ ÍÏÇÕ ÓÏÚÄÁÔØ: %s" +msgstr "%s: не удаётÑÑ Ñоздать файл: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "" +msgstr "bash_execute_unix_command: не удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ keymap Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "%s: ÐÅÒ×ÙÊ ÎÅÐÒÏÂÅÌØÎÙÊ ÓÉÍ×ÏÌ ÎÅ `\"'" +msgstr "%s: первый непробельный Ñимвол не ÑвлÑетÑÑ Â«\"»" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" -msgstr "ÎÅÔ ÚÁËÒÙ×ÁÀÝÅÇÏ `%c' × %s" +msgstr "нет закрывающего «%c» в %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" -msgstr "%s: ÐÒÏÐÕÝÅÎ ÒÁÚÄÅÌÉÔÅÌØ Ä×ÏÅÔÏÞÉÅ" +msgstr "%s: отÑутÑтвует разделитель-двоеточие" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "раÑширение Ñкобки: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ памÑть Ð´Ð»Ñ %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +msgstr "раÑширение Ñкобки: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ памÑть Ð´Ð»Ñ %d Ñлементов" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "раÑширение Ñкобки: не удалоÑÑŒ выделить памÑть Ð´Ð»Ñ Â«%s»" -#: builtins/alias.def:132 -#, fuzzy, c-format +#: builtins/alias.def:133 +#, c-format msgid "`%s': invalid alias name" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ ÏÐÃÉÉ" +msgstr "«%s»: недопуÑтимый пÑевдоним" #: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" -msgstr "" +msgstr "редактирование Ñтроки не включено" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" -msgstr "" +msgstr "«%s»: недопуÑтимое название keymap" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" -msgstr "%s: ÎÅ ÍÏÇÕ ÐÒÏÞÉÔÁÔØ: %s" +msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ файл: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" -msgstr "" +msgstr "«%s»: не удаётÑÑ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ привÑзку" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" -msgstr "`%s': ÉÍÑ ÆÕÎËÃÉÉ ÎÅÉÚ×ÅÓÔÎÏ" - -#: builtins/bind.def:312 -#, c-format -msgid "%s is not bound to any keys.\n" -msgstr "%s ÎÅ ÐÒÉ×ÑÚÁÎÁ ÎÅ Ë ÏÄÎÏÊ ÉÚ ËÌÁ×ÉÛ.\n" +msgstr "«%s»: неизвеÑтное название функции" #: builtins/bind.def:316 #, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s не привÑзан ни к какой клавише.\n" + +#: builtins/bind.def:320 +#, c-format msgid "%s can be invoked via " -msgstr "%s ÍÏÖÅÔ ÂÙÔØ ×ÙÚ×ÁÎ Ó ÐÏÍÏÝØÀ" +msgstr "%s можно вызвать через " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" -msgstr "" +msgstr "Ñчётчик циклов" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "ÉÍÅÅÔ ÓÍÙÓÌ ÔÏÌØËÏ × ÃÉËÌÁÈ `for', `while', ÉÌÉ `until'" +msgstr "имеет значение только Ð´Ð»Ñ Ñ†Ð¸ÐºÐ»Ð¾Ð² «for», «while» или «until»" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" " Without EXPR, returns " msgstr "" +"Возвращает контекÑÑ‚ вызова текущей подпрограммы.\n" +" \n" +" Без EXPR выполнÑет возврат " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" -msgstr "ÐÅÒÅÍÅÎÎÁÑ HOME ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ" +msgstr "Ðе задана Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ HOME" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" -msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÁÒÇÕÍÅÎÔÏ×" +msgstr "Ñлишком много аргументов" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "\t\tкаталоге." + +#: builtins/cd.def:347 msgid "OLDPWD not set" -msgstr "ÐÅÒÅÍÅÎÎÁÑ OLDPWD ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ" +msgstr "Ðе задана Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OLDPWD" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " -msgstr "" +msgstr "Ñтрока %d: " -#: builtins/common.c:139 error.c:265 -#, fuzzy, c-format +#: builtins/common.c:140 error.c:265 +#, c-format msgid "warning: " -msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" +msgstr "предупреждение: " -#: builtins/common.c:153 -#, fuzzy, c-format +#: builtins/common.c:154 +#, c-format msgid "%s: usage: " -msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" +msgstr "%s: иÑпользование: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" -msgstr "%s: ÏÐÃÉÑ ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔÁ" +msgstr "%s: Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" -msgstr "%s: ÔÒÅÂÕÅÔÓÑ ÞÉÓÌÏ×ÏÊ ÁÒÇÕÍÅÎÔ" +msgstr "%s: требуетÑÑ Ñ‡Ð¸Ñловой аргумент" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" -msgstr "%s: ÎÅ ÎÁÊÄÅÎ" +msgstr "%s: не найден" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" -msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" +msgstr "%s: недопуÑтимый параметр" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ ÏÐÃÉÉ" +msgstr "%s: недопуÑтимое название параметра" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" -msgstr "`%s': ÎÅÐÒÁ×ÉÌØÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ" +msgstr "«%s»: Ñто недопуÑтимый идентификатор" -#: builtins/common.c:238 -#, fuzzy +#: builtins/common.c:246 msgid "invalid octal number" -msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÎÏÍÅÒ ÓÉÇÎÁÌÁ" +msgstr "недопуÑтимое воÑьмеричное чиÑло" -#: builtins/common.c:240 -#, fuzzy +#: builtins/common.c:248 msgid "invalid hex number" -msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ" +msgstr "недопуÑтимое шеÑтнадцатеричное чиÑло" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" -msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ" +msgstr "недопуÑтимое чиÑло" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÓÉÇÎÁÌÁ" +msgstr "%s: недопуÑтимое указание Ñигнала" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "`%s': ÎÅ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÒÏÃÅÓÓÁ ÉÌÉ ÐÒÁ×ÉÌØÎÏÅ ÉÍÑ ÚÁÄÁÞÉ" +msgstr "«%s»: Ñто не идентификатор процеÑÑа и не допуÑтимый указатель заданиÑ" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" -msgstr "%s: ÄÏÓÔÕÐÎÁÑ ÔÏÌØËÏ ÎÁ ÞÔÅÎÉÅ ÐÅÒÅÍÅÎÎÁÑ" +msgstr "%s: Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" -msgstr "%s: %s ×ÙÈÏÄÉÔ ÚÁ ÐÒÅÄÅÌÙ ÄÏÐÕÓÔÉÍÙÈ ÚÎÁÞÅÎÉÊ" +msgstr "%s: %s за пределами диапазона" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" -msgstr "ÁÒÇÕÍÅÎÔ" - -#: builtins/common.c:274 -#, c-format -msgid "%s out of range" -msgstr "%s ×ÙÈÏÄÉÔ ÚÁ ÐÒÅÄÅÌÙ ÄÏÐÕÓÔÉÍÙÈ ÚÎÁÞÅÎÉÊ" +msgstr "аргумент" #: builtins/common.c:282 #, c-format -msgid "%s: no such job" -msgstr "%s: ÎÅ ÔÁËÏÊ ÚÁÄÁÞÉ" +msgid "%s out of range" +msgstr "%s за пределами диапазона" #: builtins/common.c:290 #, c-format +msgid "%s: no such job" +msgstr "%s: нет такого заданиÑ" + +#: builtins/common.c:298 +#, c-format msgid "%s: no job control" -msgstr "" +msgstr "%s: нет ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñми" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" -msgstr "" +msgstr "нет ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñми" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" -msgstr "" - -#: builtins/common.c:304 -msgid "restricted" -msgstr "" +msgstr "%s: ограниченный режим" #: builtins/common.c:312 +msgid "restricted" +msgstr "ограниченный режим" + +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" -msgstr "%s: ÎÅ ×ÓÔÒÏÅÎÎÁ × ÏÂÏÌÏÞËÕ" - -#: builtins/common.c:321 -#, c-format -msgid "write error: %s" -msgstr "ÏÛÉÂËÁ ÚÁÐÉÓÉ: %s" +msgstr "%s: Ñто не не вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° bash" #: builtins/common.c:329 #, c-format -msgid "error setting terminal attributes: %s" -msgstr "" +msgid "write error: %s" +msgstr "ошибка запиÑи: %s" -#: builtins/common.c:331 +#: builtins/common.c:337 +#, c-format +msgid "error setting terminal attributes: %s" +msgstr "ошибка Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² терминала: %s" + +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" -msgstr "" +msgstr "ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² терминала: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "%s: ÏÛÉÂËÁ ÐÏÌÕÞÅÎÉÑ ÔÅËÕÝÅÊ ÄÉÒÅËÔÏÒÉÉ: %s: %s\n" +msgstr "%s: ошибка Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ каталога: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" +msgstr "%s: неоднозначный указатель заданиÑ" + +#: builtins/common.c:918 +msgid "help not available in this version" msgstr "" -#: builtins/complete.def:277 +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" -msgstr "" +msgstr "%s: недопуÑтимое название дейÑтвиÑ" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" -msgstr "" - -#: builtins/complete.def:697 -msgid "warning: -F option may not work as you expect" -msgstr "" +msgstr "%s: нет Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ" #: builtins/complete.def:699 +msgid "warning: -F option may not work as you expect" +msgstr "предупреждение: параметр -F может работать не так, как ожидаетÑÑ" + +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" -msgstr "" +msgstr "предупреждение: параметр -C может работать не так, как ожидаетÑÑ" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" -msgstr "" +msgstr "ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ðµ выполнÑет функцию завершениÑ" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" -msgstr "ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ ÔÏÌØËÏ × ÆÕÎËÃÉÉ" +msgstr "можно иÑпользовать только внутри функции" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: ÑÑÑ‹Ð»Ð¾Ñ‡Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ может быть маÑÑивом" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: переменные nameref, ÑÑылающиеÑÑ Ñами на ÑебÑ, не допуÑкаютÑÑ" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: ÐºÑ€ÑƒÐ³Ð¾Ð²Ð°Ñ ÑÑылка на имÑ" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: недопуÑтимое название переменной Ð´Ð»Ñ ÑÑылки на имÑ" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" -msgstr "" +msgstr "«-f» Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" -msgstr "%s: ÄÏÓÔÕÐÎÁÑ ÔÏÌØËÏ ÎÁ ÞÔÅÎÉÅ ÆÕÎËÃÉÑ" +msgstr "%s: значение функции можно только Ñчитать" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "%s: ÎÅ ÍÏÇÕ ÕÄÁÌÉÔØ ÐÅÒÅÍÅÎÎÕÀ-ÍÁÓÓÉ× ÔÁËÉÍ ÓÐÏÓÏÂÏÍ" +msgstr "%s: переменные маÑÑива Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶Ð¸Ñ‚ÑŒ таким образом" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "" +msgstr "%s: не удаётÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ аÑÑоциативный маÑÑив в индекÑированный" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" -msgstr "" +msgstr "динамичеÑÐºÐ°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° недоÑтупна" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" -msgstr "" +msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ общий объект %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" +msgstr "не удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ %s в общем объекте %s: %s" + +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:459 +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" -msgstr "" +msgstr "%s: не загружаетÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑки" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" -msgstr "%s: ÎÅ ÍÏÇÕ ÕÄÁÌÉÔØ: %s" +msgstr "%s: не удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" -msgstr "%s: Ñ×ÌÑÅÔÓÑ ÄÉÒÅËÔÏÒÉÅÊ" +msgstr "%s: Ñто каталог" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" -msgstr "%s: ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ" +msgstr "%s: Ñто не обычный файл" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" -msgstr "%s: ÓÌÉÛËÏÍ ÂÏÌØÛÏÊ ÆÁÊÌ" +msgstr "%s: файл Ñлишком велик" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" -msgstr "%s: ÎÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ ÂÉÎÁÒÎÙÊ ÆÁÊÌ" +msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить бинарный файл" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" -msgstr "%s: ÎÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ: %s" +msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" -msgstr "" +msgstr "выход\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" -msgstr "" -"ÏÂÏÌÏÞËÁ ÎÅ Ñ×ÌÑÅÔÓÑ ÚÁÐÕÝÅÎÎÏÊ ÐÏÓÌÅ ×ÈÏÄÁ × ÓÉÓÔÅÍÕ: ÉÓÐÏÌØÚÕÊÔÅ `exit' " +msgstr "не командный процеÑÑор login: иÑпользуйте «exit»" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" -msgstr "åÓÔØ ÐÒÉÏÓÔÁÎÏ×ÌÅÎÎÙÅ ÚÁÄÁÞÉ.\n" +msgstr "ЕÑть оÑтановленные заданиÑ.\n" -#: builtins/exit.def:122 -#, fuzzy, c-format +#: builtins/exit.def:126 +#, c-format msgid "There are running jobs.\n" -msgstr "åÓÔØ ÐÒÉÏÓÔÁÎÏ×ÌÅÎÎÙÅ ÚÁÄÁÞÉ.\n" +msgstr "ЕÑть выполнÑемые заданиÑ.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" -msgstr "ÎÅ ÎÁÛÅÌ ÔÁËÕÀ ËÏÍÁÎÄÕ" +msgstr "команда не найдена" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" -msgstr "" +msgstr "указание журнала команд" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" -msgstr "%s: ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ: %s" +msgstr "%s: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ временный файл: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" -msgstr "" +msgstr "текущий" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" -msgstr "" +msgstr "задание %d запущено без возможноÑти управлениÑ" #: builtins/getopt.c:110 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÏÐÃÉÑ -- %c\n" +msgstr "%s: недопуÑтимый параметр — %c\n" #: builtins/getopt.c:111 #, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "" +msgstr "%s: Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Â â€” %c\n" #: builtins/hash.def:92 msgid "hashing disabled" -msgstr "" +msgstr "Ñ…Ñширование отключено" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" -msgstr "" +msgstr "%s: таблица Ñ…Ñшей пуÑтаÑ\n" -#: builtins/hash.def:245 -#, fuzzy, c-format +#: builtins/hash.def:254 +#, c-format msgid "hits\tcommand\n" -msgstr "ÐÏÓÌÅÄÎÑÑ ËÏÍÁÎÄÁ: %s\n" +msgstr "вызовы\tкоманда\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Команды, ÑоответÑтвующие ключевому Ñлову «" +msgstr[1] "Команды, ÑоответÑтвующие ключевым Ñловам «" +msgstr[2] "Команды, ÑоответÑтвующие ключевым Ñловам «" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" +"нет разделов Ñправки, ÑоответÑтвующих «%s». Попробуйте ввеÑти «help help» или " +"«man -k %s» или «info %s»." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" -msgstr "%s: ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ: %s" +msgstr "%s: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -491,137 +530,151 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" +"Показанные ниже команды определены внутри командного процеÑÑора. Чтобы " +"вывеÑти полный ÑпиÑок, введите «help».\n" +"Чтобы вывеÑти Ñправку по функции «name», введите «help name».\n" +"Чтобы вывеÑти Ñправку по командному процеÑÑору, введите «info bash».\n" +"Чтобы вывеÑти Ñправку по командам, которые отÑутÑтвуют в Ñтом ÑпиÑке, " +"введите «man -k» или «info».\n" +"\n" +"Звёздочка (*) Ñ€Ñдом Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ команды означает, что Ñта команда " +"отключена.\n" +"\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" -msgstr "" +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать больше одного параметра -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" -msgstr "" +msgstr "положение журнала команд" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: недопуÑтимый аргумент" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" -msgstr "" +msgstr "%s: не удалоÑÑŒ раÑширить журнал команд" #: builtins/inlib.def:71 -#, fuzzy, c-format +#, c-format msgid "%s: inlib failed" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ÓÅÒ×ÉÓ" +msgstr "%s: ошибка inlib" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "" +msgstr "Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ «-x» Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ другие параметры" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "" +msgstr "%s: аргументами должны быть идентификаторы процеÑÑов или заданий" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" -msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ" +msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" -msgstr "ÏÖÉÄÁÌÏÓØ ×ÙÒÁÖÅÎÉÅ" +msgstr "ожидаетÑÑ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ" -#: builtins/mapfile.def:172 -#, fuzzy, c-format +#: builtins/mapfile.def:178 +#, c-format msgid "%s: not an indexed array" -msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" +msgstr "%s: Ñто не индекÑированный маÑÑив" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÏÐÉÓÁÎÉÅ ÆÁÊÌÏ×ÏÇÏ ÄÅÓËÒÉÐÔÏÒÁ" +msgstr "%s: недопуÑтимое указание деÑкриптора файла" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "%d: ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ: %s" +msgstr "%d: invalid недопуÑтимый деÑкриптор файла: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 -#, fuzzy, c-format +#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#, c-format msgid "%s: invalid line count" -msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" +msgstr "%s: недопуÑтимое чиÑло Ñтрок" -#: builtins/mapfile.def:287 -#, fuzzy, c-format +#: builtins/mapfile.def:300 +#, c-format msgid "%s: invalid array origin" -msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" +msgstr "%s: недопуÑтимое начало маÑÑива" -#: builtins/mapfile.def:304 -#, fuzzy, c-format +#: builtins/mapfile.def:317 +#, c-format msgid "%s: invalid callback quantum" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ" +msgstr "%s: недопуÑтимый квант обратного вызова" -#: builtins/mapfile.def:336 -#, fuzzy +#: builtins/mapfile.def:350 msgid "empty array variable name" -msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" +msgstr "пуÑтое Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ маÑÑива" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" -msgstr "" +msgstr "требуетÑÑ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° переменных маÑÑива" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" -msgstr "`%s': ÐÒÏÐÕÝÅÎ ÓÉÍ×ÏÌ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ" +msgstr "«%s»: отÑутÑтвует Ñимвол форматированиÑ" -#: builtins/printf.def:456 -#, fuzzy, c-format +#: builtins/printf.def:467 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÓÉÇÎÁÌÁ" +msgstr "«%c»: недопуÑтимое указание формата времени" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" -msgstr "%c': ÎÅÄÏÐÕÓÔÉÍÙÊ ÓÉÍ×ÏÌ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ" +msgstr "«%c»: недопуÑтимый Ñимвол форматированиÑ" -#: builtins/printf.def:684 -#, fuzzy, c-format +#: builtins/printf.def:695 +#, c-format msgid "warning: %s: %s" -msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" +msgstr "предупреждение: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "ошибка анализа формата: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" -msgstr "" +msgstr "отÑутÑтвует шеÑÑ‚Ð½Ð°Ð´Ñ†Ð°Ñ‚ÐµÑ€Ð¸Ñ‡Ð½Ð°Ñ Ñ†Ð¸Ñ„Ñ€Ð° Ð´Ð»Ñ \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" -msgstr "" +msgstr "отÑутÑтвует цифра Юникода Ð´Ð»Ñ \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" -msgstr "ÎÅÔ ÄÒÕÇÏÊ ÄÉÒÅËÔÏÒÉÉ" +msgstr "отÑутÑтвует другой каталог" -#: builtins/pushd.def:354 -#, fuzzy, c-format +#: builtins/pushd.def:360 +#, c-format msgid "%s: invalid argument" -msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" +msgstr "%s: недопуÑтимый аргумент" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" -msgstr "" +msgstr "<отÑутÑтвует текущий каталог>" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" -msgstr "" +msgstr "Ñтек каталогов пуÑÑ‚" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" -msgstr "" +msgstr "Ð¸Ð½Ð´ÐµÐºÑ Ñтека каталогов" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 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,8 +697,26 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" +"Выводит ÑпиÑок запомненных на данный момент каталогов. Каталоги\n" +" помещаютÑÑ Ð² ÑпиÑок командой «pushd». Ð”Ð»Ñ Ð¾Ñ‡Ð¸Ñтки\n" +" ÑпиÑка иÑпользуетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° «popd».\n" +" \n" +" Параметры:\n" +" -c\tочиÑтить Ñтек каталогов, удалив из него вÑе Ñлементы\n" +" -l\tне выводить каталоги, начинающиеÑÑ Ñ Ñ‚Ð¸Ð»ÑŒÐ´Ñ‹ (~),\n" +" \tÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ домашний каталог\n" +" -p\tпоказать Ñтек по одному каталогу в Ñтроке\n" +" -v\tпоказать Ñтек по одному каталогу в Ñтроке\n" +" \tи Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ в Ñтеке\n" +" \n" +" Ðргументы:\n" +" +N\tпоказать N-ÑŽ запиÑÑŒ Ñлева в ÑпиÑке каталогов,\n" +" \tпоказанного при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ.\n" +" \n" +" -N\tпоказать N-ÑŽ запиÑÑŒ Ñправа в ÑпиÑке каталогов,\n" +"\tпоказанного при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -669,8 +740,30 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"ДобавлÑет каталог в начало Ñтека каталогов или выполнÑет\n" +" ротацию Ñтека, Ð¿Ð¾Ð¼ÐµÑ‰Ð°Ñ Ð² начало Ñтека текущий рабочий\n" +" каталог. ЕÑли аргументы не указаны, менÑет меÑтами два первых " +"каталога.\n" +" \n" +" Параметры:\n" +" -n\tпредотвращает обычное изменение каталога при добавлении\n" +" \tкаталогов в Ñтек, чтобы дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑлиÑÑŒ только над Ñтеком.\n" +" \n" +" Ðргументы:\n" +" +N\tвыполнÑет ротацию Ñтека, чтобы N-й каталог (Ñлева\n" +" \tв ÑпиÑке, показанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ)\n" +" \tÑтал первым в Ñтеке.\n" +" \n" +" -N\tвыполнÑет ротацию Ñтека, чтобы N-й каталог (Ñправа\n" +" \tв ÑпиÑке, показанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ)\n" +" \tÑтал первым в Ñтеке.\n" +" \n" +" каталог\tдобавлÑет каталог в начало Ñтека каталогов, Ð´ÐµÐ»Ð°Ñ ÐµÐ³Ð¾\n" +" \tновым текущим каталогом.\n" +" \n" +" Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° dirs показывает Ñтек каталогов." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -690,472 +783,527 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"УдалÑет запиÑи из Ñтека каталогов. ЕÑли аргументы не указаны,\n" +" удалÑет первый каталог из Ñтека и назначает новый первый каталог.\n" +" \n" +" Параметры:\n" +" -n\tпредотвращает обычное изменение каталога при удалении\n" +" \tкаталогов из Ñтека, чтобы дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑлиÑÑŒ только над Ñтеком.\n" +" \n" +" Ðргументы:\n" +" +N\tудалÑет N-ÑŽ Ñлева запиÑÑŒ в ÑпиÑке каталогов,\n" +" \tпоказанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, «popd +0»\n" +" \tудалÑет первый каталог, а «popd +1» — второй каталог.\n" +" \n" +" -N\tудалÑет N-ÑŽ Ñправа запиÑÑŒ в ÑпиÑке каталогов,\n" +" \tпоказанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, «popd -0»\n" +" \tудалÑет поÑледний каталог, а «popd -1» — предпоÑледний каталог.\n" +" \n" +" Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° dirs показывает Ñтек каталогов." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" -msgstr "" +msgstr "%s: недопуÑтимое указание тайм-аута" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" -msgstr "ÏÛÉÂËÁ ÞÔÅÎÉÑ: %d: %s" +msgstr "ошибка чтениÑ: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" -msgstr "" +msgstr "возврат можно выполнить только из функции или иÑходного Ñкрипта" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" -msgstr "" +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ ÑброÑить функцию и переменную" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" -msgstr "%s: ÎÅ ÍÏÇÕ ÓÂÒÏÓÉÔØ" +msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: ÎÅ ÍÏÇÕ ÓÂÒÏÓÉÔØ: ÄÏÓÔÕÐÎÏ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ %s" +msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ: %s доÑтупен только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" -msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" +msgstr "%s: Ñто не Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¼Ð°ÑÑива" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" -msgstr "%s: ÎÅ ÆÕÎËÃÉÑ" +msgstr "%s: Ñто не функциÑ" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "" +msgstr "Ñчётчик Ñмещений" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" -msgstr "" +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ задать и ÑброÑить параметры командного процеÑÑора" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ ÏÐÃÉÉ ÏÂÏÌÏÞËÉ" +msgstr "%s: недопуÑтимое название параметра командного процеÑÑора" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" -msgstr "ÔÒÅÂÕÅÔÓÑ ÁÒÇÕÍÅÎÔ ÉÍÑ ÆÁÊÌÁ" +msgstr "требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ файла" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" -msgstr "%s: ÆÁÊÌ ÎÅ ÎÁÊÄÅÎ" +msgstr "%s: файл не найден" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" -msgstr "" +msgstr "не удаётÑÑ Ð¿Ñ€Ð¸Ð¾Ñтановить" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" -msgstr "" +msgstr "не удаётÑÑ Ð¿Ñ€Ð¸Ð¾Ñтановить командный процеÑÑор login" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "" +msgstr "%s — Ñто пÑевдонимом Ð´Ð»Ñ Â«%s»\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" -msgstr "%s Ñ×ÌÑÅÔÓÑ ËÌÀÞÅ×ÙÍ ÓÌÏ×ÏÍ ÏÂÏÌÏÞËÉ\n" +msgstr "%s — Ñто ключевое Ñлово командного процеÑÑора\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" -msgstr "%s Ñ×ÌÑÅÔÓÑ ÆÕÎËÃÉÅÊ\n" +msgstr "%s — Ñто функциÑ\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s — Ñто вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° bash\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" -msgstr "" +msgstr "%s — Ñто вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° bash\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" -msgstr "" +msgstr "%s ÑвлÑетÑÑ %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" -msgstr "" +msgstr "Ð´Ð»Ñ %s вычиÑлен Ñ…Ñш (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" -msgstr "" +msgstr "%s: недопуÑтимый аргумент ограничениÑ" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" -msgstr "`%c': ÐÌÏÈÁÑ ËÏÍÁÎÄÁ" +msgstr "«%c»: недопуÑÑ‚Ð¸Ð¼Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" -msgstr "" +msgstr "%s: не удаётÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ ограничение: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" -msgstr "" +msgstr "ограничение" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" -msgstr "" +msgstr "%s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ ограничение: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" -msgstr "ÞÉÓÌÏ × ×ÏÓØÍÅÒÉÞÎÏÊ ÓÉÓÔÅÍÅ ÉÓÞÉÓÌÅÎÉÑ" +msgstr "воÑьмеричное чиÑло" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "" +msgstr "«%c»: недопуÑтимый оператор Ñимвольного режима" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "" +msgstr "«%c»: недопуÑтимый знак Ñимвольного режима" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " -msgstr "" +msgstr " Ñтрока " #: error.c:165 #, c-format msgid "last command: %s\n" -msgstr "ÐÏÓÌÅÄÎÑÑ ËÏÍÁÎÄÁ: %s\n" +msgstr "поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: %s\n" #: error.c:173 #, c-format msgid "Aborting..." -msgstr "úÁ×ÅÒÛÁÀ ÒÁÂÏÔÕ..." +msgstr "Прерывание..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" -msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ ËÏÍÁÎÄÙ" +msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° команды" -#: error.c:441 +#: error.c:464 msgid "bad command type" -msgstr "" +msgstr "неверный тип команды" -#: error.c:442 +#: error.c:465 msgid "bad connector" -msgstr "" +msgstr "неверный Ñоединитель" -#: error.c:443 +#: error.c:466 msgid "bad jump" -msgstr "" +msgstr "ошибка перехода" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" -msgstr "" +msgstr "%s: не заданы границы переменной" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" -msgstr "" +msgstr "\\aпревышено Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°: auto-logout\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "" +msgstr "не удаётÑÑ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ Ñтандартный ввод из /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "TIMEFORMAT: «%c»: недопуÑтимый Ñимвол форматированиÑ" + +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2287 -#, fuzzy +#: execute_cmd.c:2377 msgid "pipe error" -msgstr "ÏÛÉÂËÁ ÚÁÐÉÓÉ: %s" +msgstr "ошибка конвейера" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, fuzzy, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "%s: доÑтигнут макÑимальный уровень вложенноÑти функций (%d)" + +#: execute_cmd.c:4508 +#, fuzzy, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: доÑтигнут макÑимальный уровень вложенноÑти функций (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: доÑтигнут макÑимальный уровень вложенноÑти функций (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" +"%s: ограниченный режим: в названиÑÑ… команд Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать коÑую черту «/»" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" -msgstr "%s: ËÏÍÁÎÄÁ ÎÅ ÎÁÊÄÅÎÁ" +msgstr "%s: команда не найдена" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" -msgstr "" +msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" -msgstr "%s: %s: ÐÌÏÈÏÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ" +msgstr "%s: %s: неверный интерпретатор" -#: execute_cmd.c:5280 -#, fuzzy, c-format +#: execute_cmd.c:5545 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: ÎÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ ÂÉÎÁÒÎÙÊ ÆÁÊÌ" +msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить бинарный файл: %s" -#: execute_cmd.c:5352 -#, fuzzy, c-format +#: execute_cmd.c:5623 +#, c-format msgid "`%s': is a special builtin" -msgstr "%s: ÎÅ ×ÓÔÒÏÅÎÎÁ × ÏÂÏÌÏÞËÕ" +msgstr "«%s»: Ñто ÑÐ¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð²ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" -msgstr "ÎÅ ÍÏÇÕ ÄÕÂÌÉÒÏ×ÁÔØ fd %d × fd %d" +msgstr "не удаётÑÑ Ñкопировать файловый деÑкриптор %d в %d" #: expr.c:259 msgid "expression recursion level exceeded" -msgstr "" +msgstr "Ñлишком много вложенных выражений" #: expr.c:283 msgid "recursion stack underflow" -msgstr "" +msgstr "отрицательное переполнение Ñтека вложенных выражений" #: expr.c:431 msgid "syntax error in expression" -msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ×ÙÒÁÖÅÎÉÅ" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в выражении" #: expr.c:475 msgid "attempted assignment to non-variable" -msgstr "ÐÏÐÙÔËÁ ÐÒÉÓ×ÏÅÎÉÑ ÎÅ-ÐÅÒÅÍÅÎÎÏÊ" +msgstr "значение можно приÑвоить только переменной" #: expr.c:495 expr.c:858 msgid "division by 0" -msgstr "ÄÅÌÅÎÉÅ ÎÁ 0" +msgstr "деление на 0" #: expr.c:542 msgid "bug: bad expassign token" -msgstr "" +msgstr "ошибка: недопуÑтимый маркер приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" #: expr.c:595 msgid "`:' expected for conditional expression" -msgstr "" +msgstr "в уÑловном выражении должен быть Ñимвол «:»" #: expr.c:919 msgid "exponent less than 0" -msgstr "" +msgstr "ÑкÑпонента меньше нулÑ" #: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" +"поÑле предварительного инкремента или декремента ожидаетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ " #: expr.c:1002 msgid "missing `)'" -msgstr "ÐÒÏÐÕÝÅÎ `)'" +msgstr "отÑутÑтвует Ñимвол «)»" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" -msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ: ÏÖÉÄÁÅÔÓÑ ÏÐÅÒÁÎÄ" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ожидаетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" -msgstr "" +msgstr "ошибка ÑинтакÑиÑа: недопуÑтимый математичеÑкий оператор" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "" +msgstr "%s%s%s: %s (неверный маркер «%s»)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" -msgstr "" +msgstr "недопуÑтимое математичеÑкое оÑнование" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" -msgstr "" +msgstr "Ñлишком большое значение Ð´Ð»Ñ Ð¾ÑнованиÑ" -#: expr.c:1543 -#, fuzzy, c-format +#: expr.c:1546 +#, c-format msgid "%s: expression error\n" -msgstr "ÏÖÉÄÁÌÏÓØ ×ÙÒÁÖÅÎÉÅ" +msgstr "%s: ошибка выражениÑ\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" -msgstr "" +msgstr "getcwd: нет доÑтупа к родительÑким каталогам" -#: input.c:102 subst.c:5168 -#, fuzzy, c-format +#: input.c:102 subst.c:5858 +#, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "ÎÅ ÍÏÇÕ ÄÕÂÌÉÒÏ×ÁÔØ fd %d × fd %d" +msgstr "не удаётÑÑ ÑброÑить режим nodelay Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð³Ð¾ деÑкриптора %d" #: input.c:271 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" +"не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ новый деÑкриптор Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных bash из файлового " +"деÑкриптора %d" #: input.c:279 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "" +msgstr "save_bash_input: у нового файлового деÑкриптора %d уже еÑть буфер" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" -msgstr "" +msgstr "start_pipeline: pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "" +msgstr "идентификатор дочернего процеÑÑа %d принадлежит запущенному заданию %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "" +msgstr "удаление оÑтановленного Ð·Ð°Ð´Ð°Ð½Ð¸Ñ %d Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¹ процеÑÑа %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" -msgstr "" +msgstr "add_process: процеÑÑ %5ld (%s) в the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" +"add_process: процеÑÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ %5ld (%s) помечен как вÑÑ‘ ещё активный" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" -msgstr "" +msgstr "describe_pid: %ld: нет процеÑÑа Ñ Ñ‚Ð°ÐºÐ¸Ð¼ идентификатором" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" -msgstr "" +msgstr "Сигнал %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" -msgstr "" +msgstr "Завершён" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" -msgstr "" +msgstr "ОÑтановлен" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" -msgstr "" +msgstr "ОÑтановлен (%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" -msgstr "" +msgstr "Запущен" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" -msgstr "" +msgstr "Завершён (%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" -msgstr "" +msgstr "Выход %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" -msgstr "" +msgstr "СоÑтоÑние неизвеÑтно" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " -msgstr "" +msgstr "(Ñтек памÑти Ñброшен на диÑк) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" -msgstr "" +msgstr " (рабочий каталог: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" -msgstr "" +msgstr "дочерний setpgid (%ld к %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" +"wait: процеÑÑ %ld не ÑвлÑетÑÑ Ð´Ð¾Ñ‡ÐµÑ€Ð½Ð¸Ð¼ процеÑÑом Ñтого командного процеÑÑора" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" -msgstr "" +msgstr "wait_for: нет запиÑей процеÑÑа %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "" +msgstr "wait_for_job: задание %d оÑтановлено" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" -msgstr "" +msgstr "%s: выполнение Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½Ð¾" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" -msgstr "" +msgstr "%s: задание %d уже выполнÑетÑÑ Ð² фоновом режиме" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" +"waitchld: включаетÑÑ WNOHANG, чтобы предотвратить поÑвление неопределённого " +"блока" -#: jobs.c:3711 -#, fuzzy, c-format +#: jobs.c:3970 +#, c-format msgid "%s: line %d: " -msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" +msgstr "%s: Ñтрока %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" -msgstr "" +msgstr " (Ñтек памÑти Ñброшен на диÑк)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" -msgstr "" +msgstr "(рабочий каталог: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" -msgstr "" +msgstr "initialize_job_control: ошибка вызова getpgrp " -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" -msgstr "" +msgstr "initialize_job_control: диÑциплина Ñтроки" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" -msgstr "" +msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "" +msgstr "не удаётÑÑ Ð·Ð°Ð´Ð°Ñ‚ÑŒ группу процеÑÑа терминала (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" -msgstr "" +msgstr "Ñтот командный процеÑÑор не может управлÑть заданиÑми" #: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" -msgstr "" +msgstr "malloc: ошибка утверждениÑ: %s\n" #: lib/malloc/malloc.c:312 #, c-format @@ -1163,1140 +1311,1230 @@ msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" +"\\r\n" +"malloc: %s:%d: утверждение не удалоÑÑŒ\\r\n" #: lib/malloc/malloc.c:313 -#, fuzzy msgid "unknown" -msgstr "%s: ÈÏÓÔ ÎÅÉÚ×ÅÓÔÅÎ" +msgstr "неизвеÑтно" #: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" -msgstr "" +msgstr "malloc: блок в ÑпиÑке Ñвободных затёрт" #: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" -msgstr "" +msgstr "free: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ уже оÑвобождённого блока" #: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" -msgstr "" +msgstr "free: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ невыделенного блока" #: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" +"free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " +"диапазона" #: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" -msgstr "" +msgstr "free: размеры начального и конечного блока отличаютÑÑ" #: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" -msgstr "" +msgstr "realloc: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ невыделенного блока" #: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" +"realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " +"диапазона" #: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" -msgstr "" +msgstr "realloc: размеры начального и конечного блока отличаютÑÑ" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "" +msgstr "register_alloc: таблица Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð° запиÑÑми FIND_ALLOC?\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "" +msgstr "register_alloc: %p уже еÑть в таблице как выделенный?\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" -msgstr "" +msgstr "register_free: %p уже еÑть в таблице как Ñвободный?\n" #: lib/sh/fmtulong.c:102 msgid "invalid base" -msgstr "" +msgstr "недопуÑтимое оÑнование" #: lib/sh/netopen.c:168 #, c-format msgid "%s: host unknown" -msgstr "%s: ÈÏÓÔ ÎÅÉÚ×ÅÓÔÅÎ" +msgstr "%s: узел неизвеÑтен" #: lib/sh/netopen.c:175 #, c-format msgid "%s: invalid service" -msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ÓÅÒ×ÉÓ" +msgstr "%s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ñлужба" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "" +msgstr "%s: недопуÑтимое указание Ñетевого пути" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" -msgstr "" +msgstr "Ñетевые операции не поддерживаютÑÑ" #: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "" +msgstr "setlocale: LC_ALL: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s)" #: locale.c:202 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "" +msgstr "setlocale: LC_ALL: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s): %s" #: locale.c:259 #, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "" +msgstr "setlocale: %s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s)" #: locale.c:261 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "" +msgstr "setlocale: %s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s): %s" #: mailcheck.c:439 msgid "You have mail in $_" -msgstr "õ ×ÁÓ ÅÓÔØ ÐÏÞÔÁ × $_" +msgstr "Ð”Ð»Ñ Ð²Ð°Ñ ÐµÑть почта в $_" #: mailcheck.c:464 msgid "You have new mail in $_" -msgstr "õ ×ÁÓ ÅÓÔØ ÎÏ×ÁÑ ÐÏÞÔÁ × $_" +msgstr "Ð”Ð»Ñ Ð²Ð°Ñ ÐµÑть почта в $_" #: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" -msgstr "ðÏÞÔÁ × %s ÂÙÌÁ ÐÒÏÞÉÔÁÎÁ\n" +msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² %s были прочитаны\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" -msgstr "" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: требуетÑÑ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкое выражение" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" -msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ: `;' ÎÅ ÏÖÉÄÁÅÔÓÑ" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ожидаетÑÑ Â«;»" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" -msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ: `((%s))'" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: «((%s))»" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" -msgstr "" +msgstr "make_here_document: недопуÑтимый тип инÑтрукции %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" +"блок here-document в Ñтроке %d разделён знаком конца файла (ожидалÑÑ Â«%s»)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" +"make_redirection: инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Â«%d» вышла за пределы диапазона" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "" +msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «%c»" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" -msgstr "" +msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «]]»" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в уÑловном выражении: неожиданный маркер «%s»" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" -msgstr "" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в уÑловном выражении" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "" +msgstr "неожиданный маркер «%s», ожидалÑÑ Â«)»" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" -msgstr "ÏÖÉÄÁÌÓÑ `)'" +msgstr "ожидаетÑÑ Ñимвол «)»" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "" +msgstr "неожиданный аргумент «%s» Ð´Ð»Ñ ÑƒÑловного унарного оператора" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" -msgstr "" +msgstr "неожиданный аргумент Ð´Ð»Ñ ÑƒÑловного унарного оператора" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "" +msgstr "неожиданный маркер «%s», ожидаетÑÑ ÑƒÑловный бинарный оператор" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" -msgstr "" +msgstr "ожидаетÑÑ ÑƒÑловный бинарный оператор" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "" +msgstr "неожиданный аргумент «%s» Ð´Ð»Ñ ÑƒÑловного бинарного оператора" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" -msgstr "" +msgstr "неожиданный аргумент Ð´Ð»Ñ ÑƒÑловного бинарного оператора" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "" +msgstr "неожиданный маркер «%c» в уÑловной команде" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "" +msgstr "неожиданный маркер «%s» в уÑловной команде" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" -msgstr "" +msgstr "неожиданный маркер %d в уÑловной команде" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ñдом Ñ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¼ маркером «%s»" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" -msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ ÏËÏÌÏ `%s'" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ñдом Ñ Â«%s»" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" -msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ: ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неожиданный конец файла" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" -msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ" +msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "éÓÐÏÌØÚÕÊÔÅ \"%s\", ÞÔÏÂÙ ÚÁ×ÅÒÛÉÔØÓÑ ÒÁÂÏÔÕ Ó ÏÂÏÌÏÞËÏÊ.\n" +msgstr "Ð”Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° из командного процеÑÑора иÑпользуйте «%s».\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" -msgstr "" +msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «)»" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" +msgstr "completion: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Â«%s» не найдена" + +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" msgstr "" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "" +msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "" +msgstr "print_command: неверный Ñоединитель «%d»" -#: print_cmd.c:373 -#, fuzzy, c-format +#: print_cmd.c:375 +#, c-format msgid "xtrace_set: %d: invalid file descriptor" -msgstr "%d: ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ: %s" +msgstr "xtrace_set: %d: недопуÑтимый идентификатор файла" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" -msgstr "" +msgstr "xtrace_set: пуÑтой указатель на файл" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" -msgstr "" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "" +msgstr "cprintf: «%c»: недопуÑтимый Ñимвол форматированиÑ" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" -msgstr "ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÏÐÕÓÔÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ" +msgstr "файловый деÑкриптор за пределами диапазона" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" -msgstr "" +msgstr "%s: неоднозначное перенаправление" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s: ÎÅ ÍÏÇÕ ÐÅÒÅÐÉÓÁÔØ ÕÖÅ ÓÕÝÅÓÔ×ÕÀÝÉÊ ÆÁÊÌ" +msgstr "%s: не удаётÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñать ÑущеÑтвующий файл" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" -msgstr "" +msgstr "%s: ограниченный режим: не удаётÑÑ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ вывод" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" -msgstr "" +msgstr "не удаётÑÑ Ñоздать временный файл Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÐ° here-document: %s" -#: redir.c:195 -#, fuzzy, c-format +#: redir.c:196 +#, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" +msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить файловый деÑкриптор переменной" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" -msgstr "" +msgstr "/dev/(tcp|udp)/host/port не поддерживаетÑÑ Ð±ÐµÐ· Ñети" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" -msgstr "ÏÛÉÂËÁ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÑ: ÎÅ ÍÏÇÕ ÄÕÂÌÉÒÏ×ÁÔØ fd" +msgstr "ошибка перенаправлениÑ: не удаётÑÑ Ñоздать копию файлового деÑкриптора" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" -msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ /tmp, ÐÏÖÁÌÕÊÓÔÁ ÓÏÚÄÁÊÔÅ!" +msgstr "не удалоÑÑŒ найти /tmp; Ñоздайте Ñтот каталог" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" -msgstr "/tmp ÄÏÌÖÎÁ ÂÙÔØ ÄÅÊÓÔ×ÉÔÅÌØÎÙÍ ÉÍÅÎÅÍ ÄÉÒÅËÔÏÒÉÉ" +msgstr "/tmp должен быть допуÑтимым названием каталога" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" -msgstr "%c%c: ÎÅÄÏÐÕÓÔÉÍÁÑ ÏÐÃÉÑ" +msgstr "%c%c: недопуÑтимый параметр" -#: shell.c:1682 -msgid "I have no name!" -msgstr "õ ÍÅÎÑ ÎÅÔ ÉÍÅÎÉ!" +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "не удаётÑÑ ÑброÑить режим nodelay Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð³Ð¾ деÑкриптора %d" -#: shell.c:1827 -#, c-format -msgid "GNU bash, version %s-(%s)\n" +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "не удаётÑÑ ÑброÑить режим nodelay Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð³Ð¾ деÑкриптора %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" msgstr "" -#: shell.c:1828 +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: Ñто каталог" + +#: shell.c:1777 +msgid "I have no name!" +msgstr "Ðе удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ название" + +#: shell.c:1930 +#, c-format +msgid "GNU bash, version %s-(%s)\n" +msgstr "GNU bash, верÑÐ¸Ñ %s-(%s)\n" + +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"éÓÐÏÌØÚÏ×ÁÎÉÅ:\n" -"%s [ÄÌÉÎÎÙÅ ÏÐÃÉÉ Á-ÌÑ `GNU'] [ÏÐÃÉÉ] ...\n" -"\t%s [ÄÌÉÎÎÙÅ ÏÐÃÉÉ Á-ÌÑ `GNU'] [ÏÐÃÉÉ] ÆÁÊÌ_ÓÏ_ÓËÒÉÐÔÏÍ...\n" +"ИÑпользование:\t%s [длинные параметры GNU] [параметры] ...\n" +"\t\t%s [длинные параметры GNU] [параметры] файл_Ñкрипта ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" -msgstr "äÌÉÎÎÙÅ ÏÐÃÉÉ × ÓÔÅÌÅ GNU:\n" +msgstr "Длинные параметры GNU:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" -msgstr "ïÐÃÉÉ ÏÂÏÌÏÞËÉ:\n" +msgstr "Параметры командного процеÑÑора:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" +"\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуÑке)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" -msgstr "\t-%s ÉÌÉ ÏÐÃÉÑ -o\n" +msgstr "\t-%s или -o параметр\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" +"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о параметрах командного процеÑÑора " +"введите «%s -c \"help set\"».\n" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" +"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о вÑтроенных командах введите «%s -c " +"help».\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" +msgstr "Ð”Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ Ñообщений об ошибках иÑпользуйте команду «bashbug».\n" + +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" msgstr "" -#: sig.c:691 +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" -msgstr "" +msgstr "sigprocmask: %d: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ" #: siglist.c:48 msgid "Bogus signal" -msgstr "" +msgstr "Фиктивный Ñигнал" #: siglist.c:51 msgid "Hangup" -msgstr "" +msgstr "Отбой" #: siglist.c:55 msgid "Interrupt" -msgstr "" +msgstr "Прерывание" #: siglist.c:59 msgid "Quit" -msgstr "" +msgstr "Выход" #: siglist.c:63 msgid "Illegal instruction" -msgstr "" +msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑтрукциÑ" #: siglist.c:67 msgid "BPT trace/trap" -msgstr "" +msgstr "ТраÑÑа/ловушка BPT" #: siglist.c:75 msgid "ABORT instruction" -msgstr "" +msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ ABORT" #: siglist.c:79 msgid "EMT instruction" -msgstr "" +msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ EMT" #: siglist.c:83 msgid "Floating point exception" -msgstr "" +msgstr "ИÑключение при обработке чиÑел Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой" #: siglist.c:87 msgid "Killed" -msgstr "" +msgstr "Убит" #: siglist.c:91 -#, fuzzy msgid "Bus error" -msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ" +msgstr "Ошибка шины" #: siglist.c:95 msgid "Segmentation fault" -msgstr "" +msgstr "Ошибка Ñегментации" #: siglist.c:99 msgid "Bad system call" -msgstr "" +msgstr "Ðеверный ÑиÑтемный вызов" #: siglist.c:103 msgid "Broken pipe" -msgstr "" +msgstr "Конвейер не работает" #: siglist.c:107 msgid "Alarm clock" -msgstr "" +msgstr "Сигнал чаÑов" #: siglist.c:111 msgid "Terminated" -msgstr "" +msgstr "Прерван" #: siglist.c:115 msgid "Urgent IO condition" -msgstr "" +msgstr "Срочное Ñобытие ввода/вывода" #: siglist.c:119 msgid "Stopped (signal)" -msgstr "" +msgstr "ОÑтановлен (Ñигналом)" #: siglist.c:127 msgid "Continue" -msgstr "" +msgstr "Продолжение" #: siglist.c:135 msgid "Child death or stop" -msgstr "" +msgstr "Смерть или оÑтановка дочернего процеÑÑа" #: siglist.c:139 msgid "Stopped (tty input)" -msgstr "" +msgstr "ОÑтановлен (ввод Ñ tty)" #: siglist.c:143 msgid "Stopped (tty output)" -msgstr "" +msgstr "ОÑтановлен (вывод на tty)" #: siglist.c:147 msgid "I/O ready" -msgstr "" +msgstr "Готов к вводу/выводу" #: siglist.c:151 msgid "CPU limit" -msgstr "" +msgstr "Ограничение ЦП" #: siglist.c:155 msgid "File limit" -msgstr "" +msgstr "Ограничение величины файла" #: siglist.c:159 msgid "Alarm (virtual)" -msgstr "" +msgstr "Сигнал чаÑов (виртуальный)" #: siglist.c:163 msgid "Alarm (profile)" -msgstr "" +msgstr "Сигнал чаÑов (профиль)" #: siglist.c:167 msgid "Window changed" -msgstr "" +msgstr "Окно изменено" #: siglist.c:171 msgid "Record lock" -msgstr "" +msgstr "ЗапиÑÑŒ блокирована" #: siglist.c:175 msgid "User signal 1" -msgstr "" +msgstr "Сигнал Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ 1" #: siglist.c:179 msgid "User signal 2" -msgstr "" +msgstr "Сигнал Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ 2" #: siglist.c:183 msgid "HFT input data pending" -msgstr "" +msgstr "Ожидание входных данных HFT" #: siglist.c:187 msgid "power failure imminent" -msgstr "" +msgstr "неизбежна ошибка питаниÑ" #: siglist.c:191 msgid "system crash imminent" -msgstr "" +msgstr "неизбежно падение ÑиÑтемы" #: siglist.c:195 msgid "migrate process to another CPU" -msgstr "" +msgstr "процеÑÑ Ð¿ÐµÑ€ÐµÐ½Ð¾ÑитÑÑ Ð½Ð° другой ЦП" #: siglist.c:199 msgid "programming error" -msgstr "" +msgstr "Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" #: siglist.c:203 msgid "HFT monitor mode granted" -msgstr "" +msgstr "УÑтановлен режим монитора HFT" #: siglist.c:207 msgid "HFT monitor mode retracted" -msgstr "" +msgstr "Выход из режима монитора HFT" #: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "" +msgstr "ПоÑледовательноÑть звуков HFT завершена" #: siglist.c:215 msgid "Information request" -msgstr "" +msgstr "Информационный запроÑ" #: siglist.c:223 msgid "Unknown Signal #" -msgstr "" +msgstr "ÐеизвеÑтный номер Ñигнала" #: siglist.c:225 #, c-format msgid "Unknown Signal #%d" -msgstr "" +msgstr "ÐеизвеÑтный номер Ñигнала %d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "" +msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтановка: нет закрывающей «%s» в %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" -msgstr "" +msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить ÑпиÑок Ñлементу маÑÑива" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" -msgstr "" +msgstr "не удаётÑÑ Ñоздать конвейер Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки процеÑÑа" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" -msgstr "" +msgstr "не удаётÑÑ Ñоздать дочерний процеÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" -msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÉÍÅÎÎÏÊ ËÁÎÁÌ %s ÄÌÑ ÞÔÅÎÉÑ" +msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ именованный конвейер %s Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" -msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÉÍÅÎÎÏÊ ËÁÎÁÌ %s ÄÌÑ ÚÁÐÉÓÉ" +msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ именованный конвейер %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" +"не удаётÑÑ Ñкопировать именованный конвейер %s в файловый деÑкриптор %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтановка: нет закрывающей «`» в %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" -msgstr "" +msgstr "не удаётÑÑ Ñоздать конвейер Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команды" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" -msgstr "" +msgstr "не удаётÑÑ Ñоздать дочерний процеÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команды" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" +"command_substitute: не удаётÑÑ Ñкопировать конвейер в файловый деÑкриптор 1" -#: subst.c:5837 subst.c:8050 -#, fuzzy, c-format +#: subst.c:6580 subst.c:8939 +#, c-format msgid "%s: invalid variable name for name reference" -msgstr "%d: ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ: %s" +msgstr "%s: недопуÑтимое название переменной Ð´Ð»Ñ ÑÑылки на имÑ" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: ÐÁÒÁÍÅÔÒ null ÉÌÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" -msgstr "" +msgstr "%s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтановка" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: недопуÑтимое чиÑло Ñтрок" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "«%s»: недопуÑтимый пÑевдоним" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: параметр не задан или пуÑтой" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: заданное подÑтрокой выражение меньше нулÑ" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" -msgstr "" +msgstr "$%s: такое приÑвоение невозможно" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" +"в будущих верÑиÑÑ… командный процеÑÑор оценка будет выполнÑтьÑÑ ÐºÐ°Ðº " +"математичеÑÐºÐ°Ñ Ð¿Ð¾Ð´Ñтановка" -#: subst.c:8421 -#, fuzzy, c-format +#: subst.c:9349 +#, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "ÎÅÔ ÚÁËÒÙ×ÁÀÝÅÇÏ `%c' × %s" +msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтановка: нет закрывающей «`» в %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" -msgstr "ÎÅÔ ÓÏ×ÐÁÄÅÎÉÑ Ó: %s" +msgstr "нет Ñовпадений: %s" #: test.c:147 msgid "argument expected" -msgstr "ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ ÞÔÏ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÁÒÇÕÍÅÎÔ" +msgstr "ожидаетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚" #: test.c:156 #, c-format msgid "%s: integer expression expected" -msgstr "" +msgstr "%s: ожидаетÑÑ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñленное выражение" -#: test.c:264 +#: test.c:265 msgid "`)' expected" -msgstr "ÏÖÉÄÁÅÔÓÑ `)' " +msgstr "ожидаетÑÑ Ñимвол «)»" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "ÏÖÉÄÁÌÓÑ `)', ÎÁÊÄÅÎ %s" +msgstr "ожидаетÑÑ Ñимвол «)», обнаружено %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" -msgstr "%s: ÏÖÉÄÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÕÎÁÒÎÏÇÏ ÏÐÅÒÁÔÏÒÁ" +msgstr "%s: ожидаетÑÑ ÑƒÐ½Ð°Ñ€Ð½Ñ‹Ð¹ оператор" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" -msgstr "%s: ÏÖÉÄÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÂÉÎÁÒÎÏÇÏ ÏÐÅÒÁÔÏÒÁ" +msgstr "%s: ожидаетÑÑ Ð±Ð¸Ð½Ð°Ñ€Ð½Ñ‹Ð¹ оператор" -#: test.c:860 +#: test.c:869 msgid "missing `]'" -msgstr "ÐÒÏÐÕÝÅÎ `]'" +msgstr "отÑутÑтвует Ñимвол «]»" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" -msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÎÏÍÅÒ ÓÉÇÎÁÌÁ" +msgstr "недопуÑтимый номер Ñигнала" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps: неверное значение в trap_list[%d]: %p" -#: trap.c:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" -msgstr "" +msgstr "trap_handler: неверный Ñигнал %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" -msgstr "" +msgstr "ошибка импорта Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ð´Ð»Ñ Â«%s»" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" -msgstr "" +msgstr "Ñлишком выÑокий уровень командного процеÑÑора (%d); ÑбраÑываетÑÑ Ð´Ð¾ 1" -#: variables.c:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%d: ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ: %s" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" -msgstr "" +msgstr "make_local_variable: в текущей облаÑти отÑутÑтвует контекÑÑ‚ функции" -#: variables.c:2247 -#, fuzzy, c-format +#: variables.c:2432 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" +msgstr "%s: переменной не может быть приÑвоено значение" -#: variables.c:3646 -msgid "all_local_variables: no function context at current scope" -msgstr "" - -#: variables.c:3891 +#: variables.c:3043 #, fuzzy, c-format -msgid "%s has null exportstr" -msgstr "%s: ÐÁÒÁÍÅÔÒ null ÉÌÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ" +msgid "%s: assigning integer to name reference" +msgstr "%s: недопуÑтимое название переменной Ð´Ð»Ñ ÑÑылки на имÑ" -#: variables.c:3896 variables.c:3905 +#: variables.c:3940 +msgid "all_local_variables: no function context at current scope" +msgstr "all_local_variables: в текущей облаÑти отÑутÑтвует контекÑÑ‚ функции" + +#: variables.c:4218 +#, c-format +msgid "%s has null exportstr" +msgstr "%s имеет пуÑтую exportstr" + +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" -msgstr "" +msgstr "недопуÑтимый Ñимвол %d в exportstr Ð´Ð»Ñ %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" -msgstr "" +msgstr "отÑутÑтвует «=» в exportstr Ð´Ð»Ñ %s" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" +"pop_var_context: заголовок shell_variables не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñ‚ÐµÐºÑтом функции" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" -msgstr "" +msgstr "pop_var_context: отÑутÑтвует контекÑÑ‚ global_variables" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" +"pop_scope: заголовок shell_variables не ÑвлÑетÑÑ Ð¾Ð±Ð»Ð°Ñтью временного " +"окружениÑ" -#: variables.c:5257 -#, fuzzy, c-format +#: variables.c:5619 +#, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ: %s" +msgstr "%s: %s: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ как ФÐЙЛ" -#: variables.c:5262 -#, fuzzy, c-format +#: variables.c:5624 +#, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "%d: ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ: %s" +msgstr "%s: %s: недопуÑтимое значение Ð´Ð»Ñ Ð´ÐµÑкриптора файла траÑÑировки" -#: variables.c:5307 -#, fuzzy, c-format +#: variables.c:5669 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s ×ÙÈÏÄÉÔ ÚÁ ÐÒÅÄÅÌÙ ÄÏÐÕÓÔÉÍÙÈ ÚÎÁÞÅÎÉÊ" +msgstr "%s: %s: значение ÑовмеÑтимоÑти за пределами диапазона" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "" +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "© Free Software Foundation, Inc, 2013." #: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" +"Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ GPLv3+: GNU GPL верÑии 3 или более поздней \n" #: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" -msgstr "" +msgstr "GNU bash, верÑÐ¸Ñ %s (%s)\n" #: version.c:91 version2.c:91 msgid "This is free software; you are free to change and redistribute it." msgstr "" +"Это Ñвободное программное обеÑпечение. Ð’Ñ‹ можете изменÑть и раÑпроÑтранÑть " +"его." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "" - -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "" +msgstr "ÐИКÐКÐЯ ГÐРÐÐТИЯ не предоÑтавлÑетÑÑ Ð² пределах, допуÑкаемых законом." #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "" +msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ %lu байт (выделено %lu байт)" #: xmalloc.c:93 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "%s: ÎÅ ÍÏÇÕ ÓÏÚÄÁÔØ: %s" +msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ %lu байт" #: xmalloc.c:163 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "" +msgstr "%s: %s:%d: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ %lu байт (выделено %lu байт)" #: xmalloc.c:165 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "%s: ÎÅ ÍÏÇÕ ÓÏÚÄÁÔØ: %s" +msgstr "%s: %s:%d: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ %lu байт" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" -msgstr "" +msgstr "alias [-p] [имÑ[=значение] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" -msgstr "" +msgstr "unalias [-a] Ð¸Ð¼Ñ [Ð¸Ð¼Ñ ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" - -#: builtins.c:54 -msgid "break [n]" -msgstr "" +"bind [-lpvsPSVX] [-m раÑкладка] [-f файл] [-q имÑ] [-u name] [-r " +"поÑлед_клавиш] [-x поÑлед_клавиш:команда_shell] [поÑлед_клавиш:фнкц_readline " +"или команда_readline]" #: builtins.c:56 -msgid "continue [n]" -msgstr "" +msgid "break [n]" +msgstr "break [n]" #: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "" +msgstr "builtin [вÑтр_команда [аргумент ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" -msgstr "" - -#: builtins.c:64 -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "" +msgstr "caller [выражение]" #: builtins.c:66 -msgid "pwd [-LP]" -msgstr "" +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [каталог]" #: builtins.c:68 -msgid ":" -msgstr "" - -#: builtins.c:70 -msgid "true" -msgstr "" - -#: builtins.c:72 -msgid "false" -msgstr "" - -#: builtins.c:74 -msgid "command [-pVv] command [arg ...]" -msgstr "" +msgid "pwd [-LP]" +msgstr "pwd [-LP]" #: builtins.c:76 -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "" +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] команда [аргумент ...]" #: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [имÑ[=значение] ...]" #: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] имÑ[=значение] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." -msgstr "" +msgstr "local [параметр] имÑ[=значение] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" -msgstr "" +msgstr "echo [-neE] [аргумент ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" -msgstr "" - -#: builtins.c:90 -msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "" +msgstr "echo [-n] [аргумент ...]" #: builtins.c:92 -msgid "eval [arg ...]" -msgstr "" +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f файл] [Ð¸Ð¼Ñ ...]" #: builtins.c:94 -msgid "getopts optstring name [arg]" -msgstr "" +msgid "eval [arg ...]" +msgstr "eval [аргумент ...]" #: builtins.c:96 -msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "" +msgid "getopts optstring name [arg]" +msgstr "getopts Ñтрока_параметров Ð¸Ð¼Ñ [аргумент]" #: builtins.c:98 -msgid "exit [n]" -msgstr "" +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a имÑ] [команда] [аргументы ...]] [перенаправление ...]" #: builtins.c:100 -msgid "logout [n]" -msgstr "" +msgid "exit [n]" +msgstr "exit [n]" -#: builtins.c:103 +#: builtins.c:102 +msgid "logout [n]" +msgstr "logout [n]" + +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" +"fc [-e редактор] [-lnr] [перваÑ] [поÑледнÑÑ] или fc -s [шаблон=замена] " +"[команда]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" -msgstr "" +msgstr "fg [задание]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "" +msgstr "bg [задание ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" -msgstr "" +msgstr "hash [-lr] [-p путь] [-dt] [Ð¸Ð¼Ñ ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" -msgstr "" +msgstr "help [-dms] [шаблон ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" +"history [-c] [-d Ñмещение] [n] или history -anrw [файл] или history -ps " +"аргумент [аргумент...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "" +msgstr "jobs [-lnprs] [задание ...] или jobs -x команда [аргументы]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" -msgstr "" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [задание ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" - -#: builtins.c:134 -msgid "let arg [arg ...]" -msgstr "" +"kill [-s назв_Ñигнала | -n номер_Ñигнала | -назв_Ñигнала] ид_процеÑÑа | " +"назв_заданиÑ] ... или kill -l [назв_Ñигнала]" #: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let аргумент [аргумент ...]" + +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" - -#: builtins.c:138 -msgid "return [n]" -msgstr "" +"read [-ers] [-a маÑÑив] [-d разделитель] [-i текÑÑ‚] [-n чиÑло_Ñимволов] [-N " +"чиÑло_Ñимволов] [-p приглашение] [-t тайм-аут] [-u fd] [Ð¸Ð¼Ñ ...]" #: builtins.c:140 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "" +msgid "return [n]" +msgstr "return [n]" #: builtins.c:142 -msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "" +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o параметр] [--] [аргумент ...]" #: builtins.c:144 -msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "" +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [Ð¸Ð¼Ñ ...]" #: builtins.c:146 -msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "" +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [имÑ[=значение ...] или export -p" #: builtins.c:148 -msgid "shift [n]" -msgstr "" +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [имÑ[=значение] ...] или readonly -p" #: builtins.c:150 -#, fuzzy -msgid "source filename [arguments]" -msgstr "ÔÒÅÂÕÅÔÓÑ ÁÒÇÕÍÅÎÔ ÉÍÑ ÆÁÊÌÁ" +msgid "shift [n]" +msgstr "shift [n]" #: builtins.c:152 -#, fuzzy +msgid "source filename [arguments]" +msgstr "source файл [аргументы]" + +#: builtins.c:154 msgid ". filename [arguments]" -msgstr "ÔÒÅÂÕÅÔÓÑ ÁÒÇÕÍÅÎÔ ÉÍÑ ÆÁÊÌÁ" +msgstr ". файл [аргументы]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" -msgstr "" - -#: builtins.c:158 -msgid "test [expr]" -msgstr "" +msgstr "suspend [-f]" #: builtins.c:160 -msgid "[ arg... ]" -msgstr "" +msgid "test [expr]" +msgstr "test [выражение]" #: builtins.c:162 -msgid "times" -msgstr "" - -#: builtins.c:164 -msgid "trap [-lp] [[arg] signal_spec ...]" -msgstr "" +msgid "[ arg... ]" +msgstr "[ аргумент... ]" #: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[аргумент] Ñигнал ...]" + +#: builtins.c:168 msgid "type [-afptP] name [name ...]" -msgstr "" +msgstr "type [-afptP] Ð¸Ð¼Ñ [Ð¸Ð¼Ñ ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "" +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [ограничение]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" -msgstr "" +msgstr "umask [-p] [-S] [режим]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "" +msgstr "wait [-n] [идентификатор ...]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "" - -#: builtins.c:182 -msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "" +msgstr "wait [идентификатор ...]" #: builtins.c:184 -msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" -msgstr "" +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for ИМЯ [in СЛОВÐ... ;] do КОМÐÐДЫ; done" #: builtins.c:186 -msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "" +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( выраж1; выраж2; выраж3 )); do КОМÐÐДЫ; done" #: builtins.c:188 -msgid "time [-p] pipeline" -msgstr "" +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select ИМЯ [in СЛОВР... ;] do КОМÐÐДЫ; done" #: builtins.c:190 -msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "" +msgid "time [-p] pipeline" +msgstr "time [-p] конвейер" #: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case СЛОВО in [ШÐБЛОР[| ШÐБЛОÐ]...) КОМÐÐДЫ ;;]... esac" + +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "" - -#: builtins.c:194 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "" +"if КОМÐÐДЫ; then КОМÐÐДЫ; [ elif КОМÐÐДЫ; then КОМÐÐДЫ; ]... [ else " +"КОМÐÐДЫ; ] fi" #: builtins.c:196 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "" +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while КОМÐÐДЫ; do КОМÐÐДЫ; done" #: builtins.c:198 -msgid "coproc [NAME] command [redirections]" -msgstr "" +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until КОМÐÐДЫ; do КОМÐÐДЫ; done" #: builtins.c:200 -msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "" +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [ИМЯ] команда [перенаправлениÑ]" #: builtins.c:202 -msgid "{ COMMANDS ; }" -msgstr "" +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function ИМЯ { КОМÐÐДЫ ; } или ИМЯ () { КОМÐÐДЫ ; }" #: builtins.c:204 -msgid "job_spec [&]" -msgstr "" +msgid "{ COMMANDS ; }" +msgstr "{ КОМÐÐДЫ ; }" #: builtins.c:206 -#, fuzzy -msgid "(( expression ))" -msgstr "ÏÖÉÄÁÌÏÓØ ×ÙÒÁÖÅÎÉÅ" +msgid "job_spec [&]" +msgstr "задание [&]" #: builtins.c:208 -#, fuzzy -msgid "[[ expression ]]" -msgstr "ÏÖÉÄÁÌÏÓØ ×ÙÒÁÖÅÎÉÅ" +msgid "(( expression ))" +msgstr "(( выражение ))" #: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ выражение ]]" + +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "" +"переменные — имена и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… переменных командного процеÑÑора" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" -msgstr "" +msgstr "pushd [-n] [+N | -N | каталог]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" -msgstr "" +msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" -msgstr "" - -#: builtins.c:224 -msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "" +msgstr "dirs [-clpv] [+N] [-N]" #: builtins.c:226 -msgid "printf [-v var] format [arguments]" -msgstr "" +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [параметр ...]" -#: builtins.c:229 +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v переменнаÑ] формат [аргументы]" + +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o параметр] [-A дейÑтвие] [-G " +"глоб_шаблон] [-W ÑпиÑок_Ñлов] [-F функциÑ] [-C команда] [-X фильтр_шабл] [-" +"P префикÑ] [-S ÑуффикÑ] [Ð¸Ð¼Ñ ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" +"compgen [-abcdefgjksuv] [-o параметр] [-A дейÑтвие] [-G глоб_шабл] [-W " +"ÑпиÑок_Ñлов] [-F функциÑ] [-C команда] [-X фильтр_шабл] [-P префикÑ] [-S " +"ÑуффикÑ] [Ñлово]" -#: builtins.c:237 +#: builtins.c:239 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]" -msgstr "" +msgstr "compopt [-o|+o параметр] [-DE] [Ð¸Ð¼Ñ ...]" #: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n чиÑло] [-O начало] [-s чиÑло] [-t] [-u fd] [-C callback] [-c " +"quantum] [маÑÑив]" + +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" +"readarray [-n чиÑло] [-O начало] [-s чиÑло] [-t] [-u fd] [-C callback] [-c " +"quantum] [маÑÑив]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2308,25 +2546,49 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " "been\n" " defined." msgstr "" +"Определение или отображение пÑевдонимов.\n" +" \n" +" ЕÑли не указать аргументы, alias выводит ÑпиÑок пÑевдонимов\n" +" в виде «alias имÑ=значение» на Ñтандартный вывод.\n" +" \n" +" Ð’ противном Ñлучае каждому имени, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ указано значение, " +"назначаетÑÑ Ð¿Ñевдоним.\n" +" ЕÑли значение в конце Ñодержит пробел, Ñледующее Ñлово будет\n" +" проверÑтьÑÑ Ð½Ð° замену пÑевдонима при его развёртывании.\n" +" \n" +" Параметры:\n" +" -p\tвыводит вÑе определённые пÑевдонимы\n" +" \n" +" СоÑтоÑние выхода:\n" +" alias возвращает иÑтину, еÑли Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ имени был задан\n" +" пÑевдоним." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" +"УдалÑет каждое Ð¸Ð¼Ñ Ð¸Ð· ÑпиÑка определённых пÑевдонимов.\n" +" \n" +" Параметры:\n" +" -a\tудалÑет вÑе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ñевдонимов\n" +" \n" +" Возвращает уÑпех, еÑли Ð¸Ð¼Ñ ÑвÑзано Ñ ÑущеÑтвующим пÑевдонимом." -#: builtins.c:289 +#: builtins.c:291 +#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2360,14 +2622,57 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" +"Определение привÑзок клавиш и переменных readline.\n" +" \n" +" ПривÑзывает поÑледовательноÑть клавиш функции readline или макроÑу\n" +" или задаёт переменную readline. СинтакÑÐ¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð² без параметров " +"аналогичен\n" +" ÑинтакÑиÑу файла ~/.inputrc, но вÑÑ‘ должно передаватьÑÑ Ð² одном " +"аргументе,\n" +" например bind '\"\\C-x\\C-r\": перечитать-init-файл'.\n" +" \n" +" Параметры:\n" +" -m раÑкладка иÑпользовать указанную раÑкладку во Ð²Ñ€ÐµÐ¼Ñ " +"выполнениÑ\n" +" данной команды. ДопуÑтимые раÑкладки: emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" +" vi-command и vi-insert.\n" +" -l вывеÑти Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹\n" +" -P вывеÑти Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ и их привÑзки\n" +" -p вывеÑти функции и их привÑзки в формате\n" +" Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n" +" -S вывеÑти ÑпиÑок поÑледовательноÑтей клавиш, которые\n" +" вызывают макроÑÑ‹, и их значениÑ\n" +" -s вывеÑти ÑпиÑок поÑледовательноÑтей клавиш, которые\n" +" вызывают макроÑÑ‹, и их значениÑ\n" +" в формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n" +" -V вывеÑти Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… и их значениÑ\n" +" -v вывеÑти имена переменных и их значениÑ\n" +" в формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n" +" -q имÑ_функции\t вывеÑти клавиши, вызывающие указанную функцию\n" +" -u имÑ_функции отвÑзать вÑе клавиши, привÑзанные к указанной " +"функции\n" +" -r поÑл-клавиш удалить привÑзку Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑти клавиш\n" +" -f файл прочитать привÑзки из файла\n" +" -x поÑл-клавиш:кмнд-shell выполнить команду bash, еÑли введена\n" +" \t\t\t\tпоÑледовательноÑть клавиш\n" +" -X\t\t вывеÑти поÑледовательноÑти клавиш, привÑзанные Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ -" +"x, и ÑвÑзанные команды\n" +" в формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n" +" \n" +" СоÑтоÑние выхода:\n" +" bind возвращает 0, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2377,8 +2682,16 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"Прерывание цикла for, while или until.\n" +" \n" +" Прерывает цикл for, while или until. ЕÑли указано N, прерывает N " +"вложенных\n" +" циклов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли N не больше или равно 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2388,8 +2701,15 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"Возобновление цикла for, while или until.\n" +" \n" +" ВозобновлÑет Ñледующую итерацию вложенного цикла for, while или until.\n" +" ЕÑли указано N, возобновлÑет N-й вложенный цикл.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли N не больше или равно 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2402,8 +2722,20 @@ msgid "" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." msgstr "" +"Выполнение вÑтроенных команд.\n" +" \n" +" ВыполнÑет вÑтроенную команду bash Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸\n" +" без поиÑка команды. Это полезно, еÑли нужно переопределить вÑтроенную " +"команду\n" +" как функцию командного процеÑÑора, в Ñтой функции нужно выполнить " +"вÑтроенную команду.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние выхода вÑтроенной команды или ложь, еÑли ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ " +"команда bash\n" +" не ÑвлÑетÑÑ Ð²Ñтроенной." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2418,8 +2750,23 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" +"Возвращает контекÑÑ‚ вызова текущей подпрограммы.\n" +" \n" +" ЕÑли выражение не указано, возвращает «$line $filename». ЕÑли выражение " +"указано, возвращает\n" +" «$line $subroutine $filename». Эти дополнительные данные можно\n" +" иÑпользовать Ð´Ð»Ñ Ñ‚Ñ€Ð°ÑÑировки Ñтека.\n" +" \n" +" Значение Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ количеÑтво кадров, которое нужно вызвать\n" +" Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° к текущему кадру. Первый кадр имеет номер 0.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли командный процеÑÑор не выполнÑет функцию, или " +"выражение\n" +" ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым." -#: builtins.c:385 +#: builtins.c:387 +#, fuzzy msgid "" "Change the shell working directory.\n" " \n" @@ -2442,16 +2789,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2463,14 +2810,56 @@ msgid "" "when\n" " -P is used; non-zero otherwise." msgstr "" +"Смена рабочего каталога командного процеÑÑора.\n" +" \n" +" ИзменÑет текущий каталог на указанный каталог. Каталог по умолчанию " +"хранитÑÑ Ð²\n" +" переменной $HOME командного процеÑÑора.\n" +" \n" +" ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $CDPATH определÑет путь поиÑка каталога, Ñодержащего\n" +" указанный каталог. Ðльтернативные каталоги в $CDPATH разделÑÑŽÑ‚ÑÑ " +"двоеточием (:).\n" +" ПуÑтое название каталога ÑоответÑтвует текущему каталогу. ЕÑли каталог " +"начинаетÑÑ\n" +" Ñ ÐºÐ¾Ñой черты (/), Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $CDPATH не иÑпользуетÑÑ.\n" +" \n" +" ЕÑли каталог не найден и задан параметр «cdable_vars»,\n" +" Ñлово ÑчитаетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ переменной. ЕÑли Ñта Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ñодержит " +"значение,\n" +" оно иÑпользуетÑÑ Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°.\n" +" \n" +" Параметры:\n" +" -L\tпереходить по Ñимвольным ÑÑылкам: ÑÑылки раÑкрываютÑÑ \n" +" \tв каталоге поÑле обработки ÑкземплÑров «..»\n" +" -P\tиÑпользовать физичеÑкую Ñтруктуру каталогов без перехода\n" +" \tпо Ñимвольным ÑÑылкам: ÑÑылки раÑкрываютÑÑ Ð² каталоге до\n" +" \tобработки «..»\n" +" -e\tеÑли указан параметр -P, и не удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ текущий\n" +" \tрабочий каталог, команда завершаетÑÑ Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÑоÑтоÑнием\n" +" -@ на ÑиÑтемах, которые Ñто поддерживают, предÑтавлÑет файл Ñ " +"раÑширенными\n" +" атрибутами как каталог, Ñодержащий атрибуты файла\n" +" \n" +" По умолчанию выполнÑетÑÑ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ по Ñимвольным ÑÑылкам (как при указании " +"параметра «-L»).\n" +" «..» обрабатываетÑÑ Ð¿ÑƒÑ‚Ñ‘Ð¼ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ компонента пути до коÑой " +"черты\n" +" или из начала каталога.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли каталог был изменён, и еÑли $PWD был уÑпешно " +"уÑтановлен\n" +" при иÑпользовании параметра -P. Ð’ противном Ñлучае возвращаетÑÑ " +"ненулевое ÑоÑтоÑние." -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2479,9 +2868,20 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" +"Вывод Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ рабочего каталога.\n" +" \n" +" Параметры:\n" +" -L\tпоказать значение $PWD, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ на\n" +" \tтекущий рабочий каталог\n" +" -P\tпоказать название физичеÑкого каталога без Ñимвольных ÑÑылок\n" +" \n" +" По умолчанию pwd работает, как еÑли бы «-L» не был указан.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 0, еÑли был указан допуÑтимый параметр или можно прочитать\n" +" текущий каталог." -#: builtins.c:439 -#, fuzzy +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2490,27 +2890,39 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" -" îÅÔ ËÁËÏÇÏ-ÌÉÂÏ ÜÆÆÅËÔÁ; ËÏÍÁÎÄÁ ÎÉÞÅÇÏ ÎÅ ÄÅÌÁÅÔ. îÕÌØ ×ÏÚ×ÒÁÝÁÅÔÓÑ × " -"ËÁÞÅÓÔ×Å ÒÅÚÕÌØÔÁÔÁ." +"ПуÑÑ‚Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.\n" +" \n" +" Команда не выполнÑет никаких дейÑтвий и ни на что не влиÑет.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Ð’Ñегда возвращает уÑпех." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" " Exit Status:\n" " Always succeeds." msgstr "" +"Возвращает результат уÑпешного выполнениÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Ð’Ñегда возвращает уÑпех." -#: builtins.c:459 -#, fuzzy +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" " Exit Status:\n" " Always fails." -msgstr "÷ÏÚ×ÒÁÝÁÅÔ ÒÅÚÕÌØÔÁÔ: ÎÅÕÄÁÞÁ." +msgstr "" +"Возвращает результат неудачного выполнениÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Ð’Ñегда возвращает ошибку." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2520,16 +2932,34 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" +"Выполнение проÑтой команды или вывод информации о командах.\n" +" \n" +" ВыполнÑет команду Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ без поиÑка функции командного " +"процеÑÑора\n" +" или выводит информацию об указанных командах. Можно иÑпользовать Ð´Ð»Ñ " +"вызова команд\n" +" Ñ Ð´Ð¸Ñка, когда Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует.\n" +" \n" +" Параметры:\n" +" -p\tиÑпользовать значение по умолчанию Ð´Ð»Ñ $PATH, чтобы " +"гарантированно\n" +" \tнайти вÑе Ñтандартные команды\n" +" -v\tвывеÑти опиÑание команды аналогично вÑтроенной команде «type»\n" +" -V\tвывеÑти более подробное опиÑание каждой команды\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние выхода КОМÐÐДЫ или ошибку, еÑли КОМÐÐДРне найдена." -#: builtins.c:487 +#: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2539,9 +2969,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2568,15 +2998,59 @@ msgid "" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." msgstr "" +"Указание значений переменных и атрибутов.\n" +" \n" +" ОбъÑвление переменных и назначение им атрибутов. ЕÑли имена не " +"указаны,\n" +" выводит атрибуты и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñех переменных.\n" +" \n" +" Параметры:\n" +" -f\tограничить дейÑтвие или вывеÑти имена функций и их определениÑ\n" +" -F\tвывеÑти только имена функций (а также номер Ñтроки\n" +" \tв иÑходном файле при отладке)\n" +" -g\tÑоздать глобальные переменные при иÑпользовании в функции " +"командного процеÑÑора; в противном Ñлучае\n" +" \tигнорируетÑÑ\n" +" -p\tвывеÑти атрибуты и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени\n" +" \n" +" Параметры, задающие атрибуты:\n" +" -a\tÑделать имена индекÑированными маÑÑивами (еÑли поддерживаетÑÑ)\n" +" -A\tÑделать имена аÑÑоциативными маÑÑивами (еÑли поддерживаетÑÑ)\n" +" -i\tназначить именам атрибут «integer»\n" +" -l\tперевеÑти имена в нижний региÑтр при назначении\n" +" -n\tÑделать Ð¸Ð¼Ñ ÑÑылкой на переменную Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, ÑоответÑтвующим её " +"значению\n" +" -r\tотключить запиÑÑŒ в имена\n" +" -t\tназначить именам атрибут «trace»\n" +" -l\tперевеÑти имена в верхний региÑтр при назначении\n" +" -x\tÑкÑпортировать имена\n" +" \n" +" Знак «+» вмеÑто «-» отключает указанный атрибут.\n" +" \n" +" Переменные Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ «integer» Ñодержат математичеÑкое выражение (Ñм.\n" +" команду «let»), которое раÑÑчитываетÑÑ Ð¿Ñ€Ð¸ назначении Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ " +"переменной.\n" +" \n" +" При иÑпользовании в функции «declare» делает имена локальными как при " +"иÑпользовании\n" +" данной команды. Параметр «-g» отключает Ñто поведение.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла\n" +" ошибка приÑвоениÑ." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" +"Указание значений переменных и атрибутов.\n" +" \n" +" УÑтарел. См. «help declare»." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2590,8 +3064,23 @@ msgid "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." msgstr "" +"Определение локальных переменных.\n" +" \n" +" Создаёт локальную переменную Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем и приÑваивает ей " +"указанное значение. Параметром может быть\n" +" любой параметр, принимаемый командой «declare».\n" +" \n" +" Локальные переменные можно иÑпользовать только внутри функции. Они " +"видны\n" +" только той функции, в которой они определены, и её дочерним функциÑм.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр, не возникла\n" +" ошибка приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ или командный процеÑÑор не выполнÑет " +"функцию." -#: builtins.c:552 +#: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -2617,15 +3106,50 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Вывод аргументов на Ñтандартный вывод.\n" +" \n" +" Выводит аргументы, разделённые пробелом, добавлÑÑ Ð² конце Ñимвол новой " +"Ñтроки,\n" +" на Ñтандартный вывод.\n" +" \n" +" Параметры:\n" +" -n\tне добавлÑть Ñимвол новой Ñтроки\n" +" -e\tвключить интерпретацию Ñимволов, Ñкранированных обратной коÑой " +"чертой\n" +" -E\tÑвно отключить интерпретацию Ñимволов, Ñкранированных обратной " +"коÑой чертой\n" +" \n" +" echo интерпретирует Ñледующие Ñимволы, Ñкранированные обратной коÑой " +"чертой:\n" +" \\a\tоповещение (звуковой Ñигнал)\n" +" \\b\tbackspace\n" +" \\c\tотключение дальнейшего вывода\n" +" \\e\tÑимвол escape\n" +" \\E\tÑимвол escape\n" +" \\f\tпрогон Ñтраницы\n" +" \\n\tÐ½Ð¾Ð²Ð°Ñ Ñтрока\n" +" \\r\tвозврат каретки\n" +" \\t\tÐ³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑциÑ\n" +" \\v\tÐ²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑциÑ\n" +" \\\\\tÐ¾Ð±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÐºÐ¾ÑÐ°Ñ Ñ‡ÐµÑ€Ñ‚Ð°\n" +" \\0nnn\tÑимвол Ñ ASCII-кодом NNN (воÑьмеричным) NNN может быть " +"длиной\n" +" \tот 0 до 3 воÑьмеричных цифр\n" +" \\xHH\tвоÑьмиразрÑдный Ñимвол, значение которого — HH " +"(шеÑтнадцатеричное) HH\n" +" \tможет быть одной или Ð´Ð²ÑƒÐ¼Ñ ÑˆÐµÑтнадцатеричными цифрами\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли не произошла ошибка запиÑи." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2637,8 +3161,18 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Вывод аргументов на Ñтандартный вывод.\n" +" \n" +" Выводит аргументы на Ñтандартный вывод, добавлÑÑ Ð² конце Ñимвол новой " +"Ñтроки.\n" +" \n" +" Параметры:\n" +" -n\tне добавлÑть Ñимвол новой Ñтроки\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли не произошла ошибка запиÑи." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2664,8 +3198,35 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" +"Включение и отключение вÑтроенных команд командного процеÑÑора.\n" +" \n" +" Включает и отключает команды, вÑтроенные в командный процеÑÑор. " +"Отключение позволит\n" +" выполнить команду Ñ Ð´Ð¸Ñка, название которой Ñовпадает Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ " +"вÑтроенной команды,\n" +" без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ пути к ней.\n" +" \n" +" Параметры:\n" +" -a\tпоказать ÑпиÑок вÑтроенных команд и их ÑоÑтоÑние\n" +" -n\tотключить вÑе указанные имена или вывеÑти ÑпиÑок отключённых " +"команд\n" +" -p\tпоказать ÑпиÑок вÑтроенных команд\n" +" -s\tпоказать только Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð²Ñтроенных команд «special» Posix\n" +" \n" +" Параметры, управлÑющие динамичеÑкой загрузкой:\n" +" -f\tзагрузить вÑтроенную указанную команду из указанного файла\n" +" -d\tудалить вÑтроенную функцию, загруженную Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -f\n" +" \n" +" Без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð² включаютÑÑ Ð²Ñе указанные команды.\n" +" \n" +" Чтобы иÑпользовать команду «test», найденную в переменной $PATH,\n" +" а не вÑтроенную в командный процеÑÑор, введите «enable -n test».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли указанное Ð¸Ð¼Ñ Ð½Ðµ ÑвлÑетÑÑ Ð²Ñтроенной командой или " +"не произошла ошибка." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2676,8 +3237,15 @@ msgid "" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" +"Выполнение аргументов как команды командного процеÑÑора.\n" +" \n" +" ОбъединÑет аргументы в одну Ñтроку, результат передаётÑÑ\n" +" в командный процеÑÑор Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ полученных команд.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние выхода команды или уÑпех, еÑли команда пуÑтаÑ." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2717,8 +3285,52 @@ msgid "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." msgstr "" +"Ðнализ аргументов параметра.\n" +" \n" +" getopts иÑпользуетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°Ð¼Ð¸ командного процеÑÑора Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°\n" +" позиционных параметров.\n" +" \n" +" «Ñтрока_параметров» Ñодержит буквы раÑпознаваемых параметров. ЕÑли поÑле\n" +" буквы идёт двоеточие, ÑчитаетÑÑ, что у параметра еÑть аргумент,\n" +" который должен быть отделён пробелом.\n" +" \n" +" При каждом Ñвоём вызове getopts помеÑтит Ñледующий параметр в " +"переменную\n" +" $имÑ, проинициализировав Ñто имÑ, еÑли оно не ÑущеÑтвует,\n" +" и проиндекÑирует Ñледующий обрабатываемый аргумент в переменной\n" +" $OPTIND. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $OPTIND инициализируетÑÑ Ð¿Ñ€Ð¸ каждом вызове\n" +" командного процеÑÑора или Ñкрипта. Когда Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° нужен аргумент,\n" +" getopts помещает Ñтот аргумент в переменную $OPTARG.\n" +" \n" +" getopts Ñообщает об ошибках Ð´Ð²ÑƒÐ¼Ñ ÑпоÑобами. ЕÑли первый Ñимвол\n" +" в «Ñтроке_параметров» ÑвлÑетÑÑ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸ÐµÐ¼, getopts включает режим " +"молчаниÑ. Ð’ Ñтом\n" +" режиме ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках не выводÑÑ‚ÑÑ. ЕÑли указан неверный\n" +" параметр, getopts помещает Ñимвол параметра в переменную $OPTARG. ЕÑли\n" +" обÑзательный аргумент не найден, getopts помещает «:» в «имÑ»\n" +" и задаёт Ð´Ð»Ñ $OPTARG Ñимвол найденного параметра. ЕÑли getopts не в " +"режиме\n" +" молчаниÑ, и был указан неверный параметр, getopts помещает «?»\n" +" в ÐÐЗВÐÐИЕ и удалÑет переменную OPTARG. ЕÑли обÑзательный аргумент не " +"найден, в ÐÐЗВÐÐИЕ\n" +" помещаетÑÑ Â«?», Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OPTARG удалÑетÑÑ Ð¸ выводитÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑтичеÑкое\n" +" Ñообщение.\n" +" \n" +" ЕÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OPTERR имеет значение 0, getopts отключает\n" +" вывод Ñообщений об ошибках, даже еÑли первый Ñимвол переменной\n" +" OPTSTRING не ÑвлÑетÑÑ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸ÐµÐ¼. По умолчанию Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OPTERR имеет " +"значение 1.\n" +" \n" +" Getopts обычно анализирует позиционные параметры ($0–$9), но еÑли\n" +" задано больше аргументов, анализируютÑÑ Ð¿Ð¾Ñледние.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли найден параметр. Возвращает ошибку, еÑли " +"доÑтигнут\n" +" конец параметров или возникла ошибка." -#: builtins.c:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -2729,8 +3341,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2740,16 +3352,39 @@ msgid "" " Returns success unless COMMAND is not found or a redirection error " "occurs." msgstr "" +"Замена командного процеÑÑора указанной командой.\n" +" \n" +" ВыполнÑет команду, заменÑÑ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ командный процеÑÑор указанной " +"программой.\n" +" Указанные аргументы ÑтановÑÑ‚ÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹. ЕÑли команда не " +"указана,\n" +" вÑе Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ выполнÑтьÑÑ Ð² текущем командном процеÑÑоре.\n" +" \n" +" Параметры:\n" +" -a имÑ\t\tпередать Ð¸Ð¼Ñ ÐºÐ°Ðº нулевой аргумент в команду\n" +" -c\t\tвыполнить команду Ñ Ð¿ÑƒÑтым окружением\n" +" -l\t\tпомеÑтить тире в нулевой аргумент Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹\n" +" \n" +" ЕÑли команду не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ, неинтерактивный командный процеÑÑор\n" +" закроетÑÑ (еÑли только на задан «execfail»).\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли команда не была найдена или не возникла ошибка " +"перенаправлениÑ." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." msgstr "" +"Выход из командного процеÑÑора.\n" +" \n" +" Закрывает командный процеÑÑор Ñ ÑоÑтоÑнием N. ЕÑли N не указан,\n" +" ÑоÑтоÑнием выхода будет ÑоÑтоÑние поÑледней выполненной команды." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2757,8 +3392,12 @@ msgid "" "executed\n" " in a login shell." msgstr "" +"Выход из командного процеÑÑора login.\n" +" \n" +" Закрывает командный процеÑÑор login Ñ ÑоÑтоÑнием выхода N. Возвращает\n" +" ошибку, еÑли выполнÑетÑÑ Ð½Ðµ в командном процеÑÑоре login." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2787,8 +3426,35 @@ msgid "" " Returns success or status of executed command; non-zero if an error " "occurs." msgstr "" +"Отображение или выполнение команд из журнала.\n" +" \n" +" fc выводит ÑпиÑок команд из журнала или позволÑет изменить и повторно " +"выполнить их.\n" +" Ðргументы «перваÑ» и «поÑледнÑÑ» могут быть чиÑлами, определÑющими " +"диапазон.\n" +" Ðргумент «перваÑ» также может быть Ñтрокой, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚\n" +" поÑледнюю команду, начинающуюÑÑ Ñ Ñтой Ñтроки.\n" +" \n" +" Параметры:\n" +" -e редактор\tуказать редактор По умолчанию иÑпользуетÑÑ $FCEDIT, \n" +" \t\tзатем Ñледует $EDITOR, а затем — vi\n" +" -l \tпоказать Ñтроки вмеÑто редактированиÑ\n" +" -n\tне показывать номера Ñтрок в ÑпиÑке\n" +" -r\tинвертировать порÑдок Ñтрок (новые в начале)\n" +" \n" +" При запуÑке в формате «fc -s [шаблон=замена ...] [команда]» команда\n" +" выполнÑетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ поÑле замены ÑтараÑ=новаÑ.\n" +" \n" +" Полезный пÑевдоним Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹Â â€” r='fc -s'. Так еÑли ввеÑти «r cc»,\n" +" будет выполнена поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, начинающаÑÑÑ Ñ Â«cc», а еÑли ввеÑти " +"«r»,\n" +" будет выполнена поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех или ÑоÑтоÑние выполненной команды. Ð’ Ñлучае ошибки " +"возвращает ненулевое ÑоÑтоÑние." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2799,8 +3465,17 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" +"Перевод Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð² интерактивный режим.\n" +" \n" +" Переводит указанное задание в интерактивный режим, делаÑ\n" +" его текущим заданием. ЕÑли задание не указано, иÑпользуетÑÑ\n" +" текущее задание.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние команды, переведённой в интерактивный режим, или " +"ошибку, еÑли возникла ошибка." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2813,8 +3488,18 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"Перевод заданий в фоновый режим.\n" +" \n" +" Переводит указанные Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð² фоновый режим, как еÑли бы\n" +" они были запущены Ñ Â«&». ЕÑли задание не указано, иÑпользуютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ\n" +" текущего заданиÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли не включено управление заданиÑми или не произошла " +"ошибка." -#: builtins.c:784 +#: builtins.c:787 +#, fuzzy msgid "" "Remember or display program locations.\n" " \n" @@ -2823,22 +3508,43 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" +"Запоминание или отображение меÑтоположений программ.\n" +" \n" +" ОпределÑет и запоминает полный путь Ð´Ð»Ñ Ð²Ñех указанных команд. ЕÑли\n" +" аргументы не указаны, выводит информацию о запомненных командах.\n" +" \n" +" Параметры:\n" +" -d\t\tзабыть запомненные меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð²Ñех указанных команд\n" +" -l\t\tотобразить данные в формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n" +" -p путь\t\tиÑпользовать указанный путь как полный путь к команде\n" +" -r\t\tзабыть вÑе запомненные меÑтоположениÑ\n" +" -t\t\tвывеÑти запомненные меÑтоположение вÑех команд,\n" +" \t\tуказав перед каждым из них ÑоответÑтвующее Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹,\n" +" \t\tеÑли указано неÑколько команд.\n" +" Ðргументы:\n" +" ИМЯ\t\tвÑе команды ищутÑÑ Ð² $PATH и добавлÑÑŽÑ‚ÑÑ Ð² ÑпиÑок\n" +" \t\tзапомненных команд.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли команда была найдена или был указан допуÑтимый " +"параметр." -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -2850,7 +3556,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2859,8 +3565,28 @@ msgid "" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" +"Вывод информации о вÑтроенных командах.\n" +" \n" +" Показывает краткую Ñправку о вÑтроенных командах. ЕÑли указан\n" +" шаблон, выводит подробную Ñправку по вÑем командам, удовлетворÑющим " +"шаблону.\n" +" Ð’ противном Ñлучае выводитÑÑ ÑпиÑок разделов Ñправки.\n" +" \n" +" Параметры:\n" +" -d\tпоказать краткое опиÑание каждого раздела\n" +" -m\tпоказать Ñправку по иÑпользованию в формате man\n" +" -s\tпоказать только краткую Ñправку по иÑпользованию Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾\n" +" \tраздела, ÑоответÑтвующего шаблону\n" +" \n" +" Ðргументы:\n" +" ШÐБЛОÐ\tшаблон, определÑющий раздел Ñправки\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был найден шаблон или был указан допуÑтимый " +"параметр." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -2869,23 +3595,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -2893,8 +3619,44 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Отображение или изменение журнала команд.\n" +" \n" +" Выводит журнал команд Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñтрок и звёздочками (*) перед вÑеми\n" +" изменёнными запиÑÑми. С аргументом N показываютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ поÑледние N " +"запиÑей.\n" +" \n" +" Параметры:\n" +" -c\tочиÑтить журнал, удалив из него вÑе запиÑи\n" +" -d Ñмещение\tудалить запиÑÑŒ журнала по указанному Ñмещению\n" +" \n" +" -a\tдобавить журнал текущего ÑеанÑа в файл журнала\n" +" -n\tпрочитать вÑе запиÑи, которые ещё не были прочитаны из файла " +"журнала\n" +" -r\tпрочитать файл журнала и добавить его Ñодержимое\n" +" \tв журнал\n" +" -w\tзапиÑать текущий журнал в файл журнала\n" +" \tи добавить запиÑи в журнал\n" +" \n" +" -p\tдобавить в журнал указанные аргументы и показать результат,\n" +" \tне ÑохранÑÑ ÐµÐ³Ð¾ в журнал\n" +" -s\tдобавить аргументы в журнал как одну запиÑÑŒ\n" +" \n" +" ЕÑли указан файл, он иÑпользуетÑÑ ÐºÐ°Ðº файл журнала. Ð’ противном Ñлучае\n" +" еÑли $HISTFILE Ñодержит значение, иÑпользуетÑÑ Ñтот файл, иначе — файл " +"~/.bash_history.\n" +" \n" +" ЕÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $HISTTIMEFORMAT задана и не ÑвлÑетÑÑ Ð¿ÑƒÑтой, её " +"значение\n" +" иÑпользуетÑÑ ÐºÐ°Ðº Ñтрока Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ strftime(3) Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° метки\n" +" времени Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ показанной запиÑи журнала. Ð’ противном Ñлучае метки " +"времени не будут показаны.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." -#: builtins.c:869 +#: builtins.c:872 +#, fuzzy msgid "" "Display status of jobs.\n" " \n" @@ -2904,7 +3666,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -2917,8 +3679,33 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" +"Отображение ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹.\n" +" \n" +" Выводит ÑпиÑок активных заданий. ЕÑли указан номер заданиÑ, выводитÑÑ " +"только Ñто задание.\n" +" ЕÑли не указать параметры, будет показано ÑоÑтоÑние вÑех активных " +"заданий.\n" +" \n" +" Параметры:\n" +" -l\tпоказать идентификаторы процеÑÑов в дополнение к обычной " +"информации\n" +" -n\tпоказать только те процеÑÑÑ‹, у которых изменилоÑÑŒ ÑоÑтоÑние\n" +" \tÑ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° поÑле поÑледнего уведомлениÑ\n" +" -p\tпоказать только идентификаторы процеÑÑов\n" +" -r\tпоказать только запущенные заданиÑ\n" +" -s\tпоказать только оÑтановленные заданиÑ\n" +" \n" +" ЕÑли указан параметр -x, команда выполнÑетÑÑ Ð¿Ð¾Ñле замены вÑех номеров\n" +" заданий, указанных в аргументах, на идентификатор процеÑÑа\n" +" лидера группы процеÑÑов заданиÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка.\n" +" ЕÑли указан параметр -x, возвращает ÑоÑтоÑние выхода команды." -#: builtins.c:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -2928,14 +3715,28 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"Удаление заданий в текущем командном процеÑÑоре.\n" +" \n" +" УдалÑет вÑе указанные Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¸Ð· ÑпиÑка активных заданий. ЕÑли\n" +" задание не указано, удалÑетÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ задание.\n" +" \n" +" Параметры:\n" +" -a\tудалить вÑе заданиÑ, еÑли не указано конкретное задание\n" +" -h\tпометить вÑе заданиÑ, чтобы им не отправлÑлÑÑ Ñигнал SIGHUP,\n" +" \tеÑли командный процеÑÑор получает Ñигнал SIGHUP\n" +" -r\tудалить только активные заданиÑ\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или задание." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -2947,7 +3748,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -2956,8 +3758,30 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"Отправка Ñигнала заданию.\n" +" \n" +" ОтправлÑет процеÑÑам или заданиÑм Ñигнал Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ названием\n" +" или номером. ЕÑли номер или название Ñигнала\n" +" не указаны, отправлÑетÑÑ Ñигнал SIGTERM.\n" +" \n" +" Параметры:\n" +" -s Ñигнал\tназвание Ñигнала\n" +" -n Ñигнал\tномер Ñигнала\n" +" -l\t\tпоказывает Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов; еÑли поÑле аргументов указано «-" +"l»,\n" +" \tони ÑчитаютÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñигналов, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… необходимо показать " +"названиÑ\n" +" \n" +" kill — Ñто вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, Ð¿Ñ€ÐµÐ´Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ð°Ñ Ð´Ð»Ñ Ð´Ð²ÑƒÑ… задач: " +"иÑпользовать\n" +" номера заданий вмеÑто номеров процеÑÑов и убивать процеÑÑÑ‹\n" +" при доÑтижении предельного чиÑла процеÑÑов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3001,8 +3825,54 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" +"РаÑчёт математичеÑких выражений.\n" +" \n" +" ВыполнÑет раÑчёт вÑех аргументов в математичеÑком выражении. РаÑчёт " +"выполнÑетÑÑ\n" +" Ð´Ð»Ñ Ñ†ÐµÐ»Ñ‹Ñ… чиÑел фикÑированной ширины Ñ Ð±ÐµÐ· проверки на переполнение.\n" +" Однако деление на 0 перехватываетÑÑ Ð¸ выдаётÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Указанные ниже " +"операторы объединены\n" +" в группы Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼ приоритетом. Группы перечиÑлены\n" +" в порÑдке ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð°.\n" +" \n" +" \tid++, id--\tпоÑледующее увеличение и уменьшение переменной\n" +" \t++id, --id\tпредварительное увеличение и уменьшение переменной\n" +" \t-, +\t\tунарный Ð¼Ð¸Ð½ÑƒÑ Ð¸ плюÑ\n" +" \t!, ~\t\tлогичеÑкое и побитовое отрицание\n" +" \t**\t\tвозведение в Ñтепень\n" +" \t*, /, %\t\tумножение, деление, оÑтаток\n" +" \t+, -\t\tÑложение, вычитание\n" +" \t<<, >>\t\tбитовые Ñдвиги влево или вправо\n" +" \t<=, >=, <, >\tÑравнение\n" +" \t==, !=\t\tравенÑтво, неравенÑтво\n" +" \t&\t\tпобитовое И\n" +" \t^\t\tпобитовое иÑключающее ИЛИ\n" +" \t|\t\tпобитовое ИЛИ\n" +" \t&&\t\tлогичеÑкое И\n" +" \t||\t\tлогичеÑкие ИЛИ\n" +" \tвыражение ? выражение : выражение\n" +" \t\t\tуÑловный оператор\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tприÑвоение\n" +" \n" +" в качеÑтве операндов можно иÑпользовать переменные командного " +"процеÑÑора. Ðазвание переменной\n" +" заменÑетÑÑ ÐµÑ‘ значением (приводитÑÑ Ðº целому чиÑлу фикÑированной " +"ширины)\n" +" в выражении. У переменной не должен быть включён атрибут integer,\n" +" чтобы её можно было иÑпользовать в выражении.\n" +" \n" +" Операторы вычиÑлÑÑŽÑ‚ÑÑ Ð² порÑдке ÑтаршинÑтва. Вложенные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²\n" +" Ñкобках вычиÑлÑÑŽÑ‚ÑÑ Ð¿ÐµÑ€Ð²Ñ‹Ð¼Ð¸ и могут переопределить указанные\n" +" выше правила ÑтаршинÑтва.\n" +" \n" +" СоÑтоÑние выхода:\n" +" ЕÑли поÑледний ÐРГУМЕÐТ имеет значение 0, let возвращает 1. Ð’ противном " +"Ñлучае let возвращает 0." -#: builtins.c:983 +#: builtins.c:987 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3023,27 +3893,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3052,8 +3923,62 @@ msgid "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" +"Чтение Ñтроки Ñо Ñтандартного ввода и разделение её на полÑ.\n" +" \n" +" Читает одну Ñтроку Ñо Ñтандартного ввода или из файлового деÑкриптора,\n" +" еÑли указан параметр -u. Строка разделÑетÑÑ Ð½Ð° Ð¿Ð¾Ð»Ñ Ð¿Ð¾ Ñловам.\n" +" Первое Ñлово приÑваиваетÑÑ Ð¿ÐµÑ€Ð²Ð¾Ð¼Ñƒ указанному имени, второе Ñлово — " +"второму\n" +" имени и так далее.\n" +" ОÑтавшиеÑÑ Ñлова приÑваиваютÑÑ Ð¿Ð¾Ñледнему указанному имени. Ð’ качеÑтве " +"разделителей Ñлов иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñимволы\n" +" из переменной $IFS.\n" +" \n" +" ЕÑли имена не указаны, Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока ÑохранÑетÑÑ Ð² переменной " +"$REPLY.\n" +" \n" +" Параметры:\n" +" -a маÑÑив\tпоÑледовательно приÑвоить прочитанные Ñлова указателÑм\n" +" \t\tмаÑÑива, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ\n" +" -d разделитель\tпродолжить до первого разделителÑ,\n" +" \t\tа не до Ñимвола новой Ñтроки\n" +" -e\t\tÑ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ readline получить Ñтроку в интерактивном командном " +"процеÑÑоре\n" +" -i текÑÑ‚\t\tиÑпользовать текÑÑ‚ в качеÑтве иÑходного Ð´Ð»Ñ readline\n" +" -n чиÑло_знаков\tвыполнить возврат поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñла знаков, а не " +"ждать\n" +" \t\tÑимвола новой Ñтроки; учитывать разделитель, еÑли до него было " +"прочитано\n" +" \t\tменьше указанного чиÑла знаков\n" +" -N чиÑло_знаков\tвыполнить возврат только поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ " +"чиÑла знаков,\n" +" \t\tеÑли только не был получен конец Ñтроки или не иÑтекло Ð²Ñ€ÐµÐ¼Ñ " +"ожиданиÑ, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ð²Ñе разделители\n" +" -p приглашение\tпоказать приглашение без Ñимвола новой Ñтроки в конце\n" +" \t\tперед тем как читать\n" +" -r\t\tне выполнÑть Ñкранирование Ñимволами коÑой черты\n" +" -s\t\tне показывать данные, полученные из терминала\n" +" -t тайм-аут\tпрекратить ожидание и вывеÑти ошибку, еÑли Ð¿Ð¾Ð»Ð½Ð°Ñ " +"входнаÑ\n" +" \t\tÑтрока не была прочитана за указанное чиÑло Ñекунд Ð’ переменной " +"$TMOUT хранитÑÑ\n" +" \t\tзначение тайм-аута по умолчанию. Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\n" +" \t\tможет быть дробным чиÑлом. ЕÑли тайм-аут равен 0, read немедленно " +"выполнÑет возврат,\n" +" \t\tне пытаÑÑÑŒ прочитать никакие данные. УÑпех возвращаетÑÑ,\n" +" \t\tтолько еÑли входные данные доÑтупны по указанному файловому " +"деÑкриптору. \n" +" \t\tСоÑтоÑние выхода больше 128, еÑли Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð±Ñ‹Ð»Ð¾ превышено.\n" +" -u fd\t\tчитать из файлового деÑкриптора, а не Ñо Ñтандартного входа\n" +" \n" +" СоÑтоÑние выхода:\n" +" СоÑтоÑние выхода будет нулевым, еÑли не был вÑтречен конец файла, не " +"иÑтекло Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\n" +" (в Ñтом Ñлучае ÑоÑтоÑние выхода будет больше 128), не возникла ошибка " +"приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹\n" +" или не был указан недопуÑтимый файловый деÑкриптор как аргумент Ð´Ð»Ñ -u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3064,8 +3989,18 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" +"Возврат из функции командного процеÑÑора.\n" +" \n" +" ВыполнÑет выход из функции или иÑходного Ñкрипта Ñо значением возврата,\n" +" указанным как N. ЕÑли N не указан, иÑпользуетÑÑ ÑоÑтоÑние возврата\n" +" поÑледней команды, выполненной в функции или Ñкрипте.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает N или ошибку, еÑли командный процеÑÑор не выполнÑет функцию " +"или Ñкрипт." -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3133,7 +4068,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3149,8 +4085,107 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" +"ПриÑвоение или удаление значений параметров командного процеÑÑора и " +"позиционных параметров.\n" +" \n" +" ИзменÑет значение атрибутов командного процеÑÑора и позиционных " +"параметров или\n" +" выводит Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… командного процеÑÑора.\n" +" \n" +" Параметры:\n" +" -a пометить переменные, которые были изменены или Ñозданы Ð´Ð»Ñ " +"ÑкÑпорта\n" +" -b немедленно уведомить о завершении заданиÑ\n" +" -e немедленно выйти, еÑли команда выполнÑет выход Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ " +"ÑоÑтоÑнием\n" +" -f отключить генерацию имён файлов (подÑтановка)\n" +" -h запомнить раÑположение команд, как они выглÑдели ранее\n" +" -k помеÑтить в окружение Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ вÑе аргументы приÑвоениÑ,\n" +" а не только те, что были указаны перед командой\n" +" -m включено управление заданиÑми\n" +" -n прочитать команды, но не выполнÑть их\n" +" -o название-параметра\n" +" Задаёт переменную, ÑоответÑтвующую названию параметра:\n" +" allexport Ñквивалент -a\n" +" braceexpand Ñквивалент -B\n" +" emacs иÑпользовать Ñтиль emacs Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ " +"Ñтрок\n" +" errexit Ñквивалент -e\n" +" errtrace Ñквивалент -E\n" +" functrace Ñквивалент -T\n" +" hashall Ñквивалент -h\n" +" histexpand Ñквивалент -H\n" +" history включить журнал команд\n" +" ignoreeof не закрывать командный процеÑÑор поÑле Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ " +"конца файла\n" +" interactive-comments\n" +" разрешить показ комментариев в интерактивных " +"командах\n" +" keyword Ñквивалент -k\n" +" monitor Ñквивалент -m\n" +" noclobber Ñквивалент -C\n" +" noexec Ñквивалент -n\n" +" noglob Ñквивалент -f\n" +" nolog допуÑкаетÑÑ, но игнорируетÑÑ\n" +" notify Ñквивалент -b\n" +" nounset Ñквивалент -u\n" +" onecmd Ñквивалент -t\n" +" physical Ñквивалент -P\n" +" pipefail возвращаемое значение конвейера ÑвлÑетÑÑ " +"ÑоÑтоÑнием\n" +" поÑледней команды, завершившейÑÑ Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ " +"ÑоÑтоÑнием,\n" +" или нулём, еÑли не было команды, завершившейÑÑ Ñ " +"ненулевым ÑоÑтоÑнием\n" +" posix изменить поведение bash там, где операции\n" +" по умолчанию отличаютÑÑ Ð¾Ñ‚ Ñтандарта Posix, " +"чтобы\n" +" ÑоответÑтвовать Ñтому Ñтандарту\n" +" privileged Ñквивалент -p\n" +" verbose Ñквивалент -v\n" +" vi иÑпользовать Ñтиль vi Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтрок\n" +" xtrace Ñквивалент -x\n" +" -p Включён, когда реальный и Ñффективный идентификаторы Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ " +"не Ñовпадают.\n" +" Отключает обработку файла $ENV и импорт функций командного\n" +" процеÑÑора. ЕÑли отключить Ñтот параметр, Ñффективные UID и GID\n" +" будут назначены реальным UID и GID.\n" +" -t Выйти поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ команды.\n" +" -u Считать незаданные переменные ошибкой при замене.\n" +" -v Выводить входные Ñтроки на Ñкран поÑле их чтениÑ.\n" +" -x Выводить команды и их аргументы во Ð²Ñ€ÐµÐ¼Ñ Ð¸Ñ… выполнениÑ.\n" +" -B Командный процеÑÑор развернёт Ñкобки.\n" +" -C ЕÑли задано, запретить перезапиÑÑŒ ÑущеÑтвующих обычных файлов\n" +" вÑледÑтвие Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð°.\n" +" -E ЕÑли задано, ловушка ERR наÑледуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñми командного " +"процеÑÑора.\n" +" -H Включить замену журнала Ñ Ð¸Ñпользованием !. По умолчанию Ñтот " +"флаг\n" +" уÑтановлен, еÑли командный процеÑÑор интерактивный.\n" +" -P ЕÑли задано, не разрешать Ñимвольные ÑÑылки при выполнении " +"команд,\n" +" таких как cd, которые изменÑÑŽÑ‚ текущий каталог.\n" +" -T ЕÑли задано, ловушка DEBUG наÑледуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñми командного " +"процеÑÑора.\n" +" -- Ðазначить вÑе оÑтавшиеÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ позиционным параметрам.\n" +" ЕÑли аргументов не оÑталоÑÑŒ, позиционные параметры\n" +" удалÑÑŽÑ‚ÑÑ.\n" +" - Ðазначить вÑе оÑтавшиеÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ позиционным параметрам.\n" +" Параметры -x и -v выключены.\n" +" \n" +" ЕÑли вмеÑто - указать +, флаги будут выключены. \n" +" Флаги также можно иÑпользовать до вызова командного процеÑÑора. " +"Текущий\n" +" набор флагов можно проÑмотреть в $-. ОÑтавшиеÑÑ n аргументов ÑвлÑÑŽÑ‚ÑÑ " +"позиционными\n" +" параметрами и назначаютÑÑ Ð² порÑдке $1, $2, .. $n. ЕÑли\n" +" аргументы не указаны, выводÑÑ‚ÑÑ Ð²Ñе переменные командного процеÑÑора.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр." -#: builtins.c:1126 +#: builtins.c:1132 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3160,7 +4195,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3171,8 +4206,28 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" +"Удаление значений и атрибутов переменных и функций командного процеÑÑора.\n" +" \n" +" Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ ÑƒÐ´Ð°Ð»Ñет ÑоответÑтвующую переменную или функцию.\n" +" \n" +" Параметры:\n" +" -f\tÑчитать каждое указанное Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ командного процеÑÑора\n" +" -v\tÑчитать каждое указанное Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ командного процеÑÑора\n" +" -n\tÑчитать каждое указанное Ð¸Ð¼Ñ ÑÑылкой на название и удалить Ñаму " +"переменную,\n" +" \tа не переменную, на которую указывает ÑÑылка\n" +" \n" +" ЕÑли параметры не указаны, unset Ñначала пытаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ переменную. " +"ЕÑли Ñто не удаётÑÑ,\n" +" пытаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ функцию.\n" +" \n" +" Ðекоторые переменные Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ. См. также «readonly».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или указанное Ð¸Ð¼Ñ " +"доÑтупно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3190,8 +4245,24 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"УÑтановка атрибута ÑкÑпорта Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… командного процеÑÑора.\n" +" \n" +" Помечает вÑе имена Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ÑкÑпорта в Ñреду длÑ\n" +" поÑледующих выполнÑемых команд. ЕÑли указано значение, оно " +"приÑваиваетÑÑ Ð¿ÐµÑ€ÐµÐ´ ÑкÑпортом.\n" +" \n" +" Параметры:\n" +" -f\tиÑпользовать функции командного процеÑÑора\n" +" -n\tудалить ÑвойÑтво ÑкÑпорта изо вÑех имён\n" +" -p\tвывеÑти ÑпиÑок вÑех ÑкÑпортированных переменных и функций\n" +" \n" +" Ðргумент «--» отключает дальнейшую обработку параметров.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или имÑ." -#: builtins.c:1167 +#: builtins.c:1173 +#, fuzzy msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3203,17 +4274,35 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"Запрет Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… командного процеÑÑора.\n" +" \n" +" Делает каждое Ð¸Ð¼Ñ Ð´Ð¾Ñтупным только чтениÑ. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтих имён нельзÑ\n" +" будет изменить в будущем. ЕÑли указано значение, приÑваивает Ñто " +"значение\n" +" перед тем, как Ñделать его доÑтупным только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ.\n" +" \n" +" Параметры:\n" +" -a\tÑÑылатьÑÑ Ð½Ð° переменные индекÑированного маÑÑива\n" +" -A\tÑÑылатьÑÑ Ð½Ð° переменные аÑÑоциативного маÑÑива\n" +" -f\tиÑпользовать функции командного процеÑÑора\n" +" -p\tвывеÑти ÑпиÑок вÑех переменных или функций, доÑтупных только Ð´Ð»Ñ " +"чтениÑ,\n" +" в завиÑимоÑти от того, указан ли параметр -f\n" +" \n" +" Ðргумент «--» отключает дальнейшую обработку параметров.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или имÑ." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3223,8 +4312,15 @@ msgid "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." msgstr "" +"Сдвиг позиционных параметров.\n" +" \n" +" Переименовывает позиционные параметры $N+1,$N+2,.. в $1,$2,..\n" +" ЕÑли N не указан, ÑчитаетÑÑ, что указано 1.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли N положительный или меньше $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3237,8 +4333,20 @@ msgid "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." msgstr "" +"Выполнение команд из файла в текущем командном процеÑÑоре.\n" +" \n" +" Читает и выполнÑет команды из указанного файла в текущем командном " +"процеÑÑоре. \n" +" Файла ищетÑÑ Ð² каталогах, указанных в переменной $PATH.\n" +" ЕÑли указаны аргументы, они ÑтановÑÑ‚ÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¼Ð¸ параметрами\n" +" при выполнении файла.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды из файла. Возвращает " +"ошибку,\n" +" еÑли файл не удаётÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3251,8 +4359,23 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"ПриоÑтановка работы командного процеÑÑора.\n" +" \n" +" ПриоÑтанавливает работу текущего командного процеÑÑора до Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ " +"Ñигнала SIGCONT.\n" +" Работу командных процеÑÑоров login можно приоÑтановить только в " +"принудительном режиме.\n" +" \n" +" Параметры:\n" +" -f\tпринудительно приоÑтановить работу, даже еÑли командный " +"процеÑÑор — login\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли не включено управление заданиÑми или не произошла " +"ошибка." -#: builtins.c:1248 +#: builtins.c:1254 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -3316,9 +4439,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3334,16 +4457,109 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" +"РаÑчёт уÑловного выражениÑ.\n" +" \n" +" Возвращает ÑоÑтоÑние 0 (иÑтина) или 1 (ложь) поÑле\n" +" раÑчёта выражениÑ. Ð’Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть унарными или бинарными. " +"Унарные\n" +" Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‡Ð°Ñто иÑпользуютÑÑ Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°. Также\n" +" доÑтупны Ñтоковые операторы и операторы ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñел.\n" +" \n" +" Поведение команды test завиÑит от количеÑтва аргументов. Полное\n" +" опиÑание Ñм. в Ñтранице руководÑтва bash.\n" +" \n" +" Операторы работы Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸:\n" +" \n" +" -a ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует.\n" +" -b ФÐЙЛ ИÑтина, еÑли файл предÑтавлÑет блочное уÑтройÑтво.\n" +" -c ФÐЙЛ ИÑтина, еÑли файл предÑтавлÑет Ñимвольное уÑтройÑтво.\n" +" -d ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼.\n" +" -e ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует.\n" +" -f ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ " +"файлом.\n" +" -g ФÐЙЛ ИÑтина, еÑли Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° уÑтановлен бит SGID.\n" +" -h ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ñимвольной ÑÑылкой.\n" +" -L ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ñимвольной ÑÑылкой.\n" +" -k ФÐЙЛ ИÑтина, еÑли Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° уÑтановлен sticky-бит.\n" +" -p ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ конвейером.\n" +" -r ФÐЙЛ ИÑтина, еÑли вы можете прочитать файл.\n" +" -s ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и не ÑвлÑетÑÑ Ð¿ÑƒÑтым.\n" +" -S ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ñокетом.\n" +" -t ФД ИÑтина, еÑли файловый деÑкриптор ФД открыт в " +"терминале.\n" +" -u ФÐЙЛ ИÑтина, еÑли Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° уÑтановлен бит SUID.\n" +" -w ФÐЙЛ ИÑтина, еÑли вы можете выполнить запиÑÑŒ в файл.\n" +" -x ФÐЙЛ ИÑтина, еÑли вы можете выполнить файл.\n" +" -O ФÐЙЛ ИÑтина, еÑли вы ÑвлÑетеÑÑŒ Ñффективным владельцем " +"файла.\n" +" -G ФÐЙЛ ИÑтина, еÑли ваша группа ÑвлÑетÑÑ Ñффективным " +"владельцем файла.\n" +" -N ФÐЙЛ ИÑтина, еÑли файл был изменён поÑле поÑледнего чтениÑ.\n" +" \n" +" ФÐЙЛ1 -nt ФÐЙЛ2 ИÑтина, еÑли файл1 новее файла2 (ÑоглаÑно\n" +" дате изменениÑ).\n" +" \n" +" ФÐЙЛ1 -ot ФÐЙЛ2 ИÑтина, еÑли файл1 Ñтарее файла2.\n" +" \n" +" ФÐЙЛ1 -ef ФÐЙЛ2 ИÑтина, еÑли файл1 ÑвлÑетÑÑ Ð¶Ñ‘Ñткой ÑÑылкой на " +"файл2.\n" +" \n" +" Строковые операторы:\n" +" \n" +" -z СТРОКРИÑтина, еÑли Ñтрока ÑвлÑетÑÑ Ð¿ÑƒÑтой.\n" +" \n" +" -n СТРОКÐ\n" +" СТРОКРИÑтина, еÑли Ñтрока не ÑвлÑетÑÑ Ð¿ÑƒÑтой.\n" +" \n" +" СТРОКÐ1 = СТРОКÐ2\n" +" ИÑтина, еÑли Ñтроки Ñовпадают.\n" +" СТРОКÐ1 != СТРОКÐ2\n" +" ИÑтина, еÑли Ñтроки не Ñовпадают.\n" +" СТРОКÐ1 < СТРОКÐ2\n" +" ИÑтина, еÑли СТРОКÐ1 ÑортируетÑÑ Ð´Ð¾ СТРОКИ2 " +"лекÑикографичеÑки.\n" +" СТРОКÐ1 > СТРОКÐ2\n" +" ИÑтина, еÑли СТРОКÐ1 ÑортируетÑÑ Ð¿Ð¾Ñле СТРОКИ2 " +"лекÑикографичеÑки.\n" +" \n" +" ОÑтальные операторы:\n" +" \n" +" -o ПÐРÐМЕТР ИÑтина, еÑли параметр командного процеÑÑора включён.\n" +" -v ПЕР\t ИÑтина, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора задана\n" +" -R ПЕР\t ИÑтина, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора задана и " +"ÑвлÑетÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ ÑÑылкой.\n" +" ! ВЫРÐЖ ИÑтина, еÑли выражение возвращает ложь.\n" +" ВЫРÐЖ1 -a ВЫРÐЖ2 ИÑтина, еÑли оба Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‚ иÑтину.\n" +" ВЫРÐЖ1 -o ВЫРÐЖ2 ИÑтина, еÑли Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно из выражений возвращает " +"иÑтину.\n" +" \n" +" арг1 ОП арг2 МатематичеÑкие проверки. ОП может быть одним из " +"Ñледующих: -eq, -ne,\n" +" -lt, -le, -gt или -ge.\n" +" \n" +" МатематичеÑкие бинарные операторы возвращают иÑтину, еÑли ÐРГУМЕÐТ1 " +"равен, не равен,\n" +" меньше, меньше или равен либо больше или равен\n" +" ÐРГУМЕÐТУ2.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли выражение иÑтинно, или ошибку, еÑли выражение " +"ложно\n" +" или указан недопуÑтимый аргумент." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" " This is a synonym for the \"test\" builtin, but the last argument must\n" " be a literal `]', to match the opening `['." msgstr "" +"РаÑчёт уÑловного выражениÑ.\n" +" \n" +" Это Ñиноним вÑтроенной команды test, но поÑледним аргументом должна\n" +" быть Ñкобка «]», ÑоответÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰ÐµÐ¹ «[»." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3354,8 +4570,16 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"Отображение времени процеÑÑа.\n" +" \n" +" Показывает объединённые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ ÑиÑтемы Ð´Ð»Ñ " +"командного\n" +" процеÑÑора и вÑех его дочерних процеÑÑов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Ð’Ñегда возвращает уÑпех." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3398,8 +4622,48 @@ msgid "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." msgstr "" +"Захват Ñигналов и других Ñобытий.\n" +" \n" +" ОпределÑет и активирует обработчики, которые будут выполнÑтьÑÑ, когда\n" +" командный процеÑÑор получает Ñигналы или при других уÑловиÑÑ….\n" +" \n" +" Ðргумент — Ñто команда, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑчитываетÑÑ Ð¸ выполнÑетÑÑ, когда\n" +" командный процеÑÑор получает указанные Ñигнал(Ñ‹). ЕÑли аргумент " +"отÑутÑтвует (и указан один Ñигнал)\n" +" или указано «-», Ð´Ð»Ñ Ð²Ñех указанных Ñигналов воÑÑтанавливаютÑÑ\n" +" иÑходные значениÑ. ЕÑли аргумент — пуÑÑ‚Ð°Ñ Ñтрока, вÑе указанные Ñигналы " +"игнорируютÑÑ\n" +" командным процеÑÑором и вызываемыми им командами.\n" +" \n" +" ЕÑли Ñигнал — EXIT (0), аргумент выполнÑетÑÑ Ð¿Ñ€Ð¸ выходе из командного " +"процеÑÑора. ЕÑли\n" +" Ñигнал — DEBUG, аргумент выполнÑетÑÑ Ð¿ÐµÑ€ÐµÐ´ каждой проÑтой командой. " +"ЕÑли\n" +" Ñигнал — RETURN, аргумент выполнÑетÑÑ ÐºÐ°Ð¶Ð´Ñ‹Ð¹ раз, когда функциÑ\n" +" или Ñкрипт выполнÑетÑÑ Ð² . или иÑходные вÑтроенные команды завершают " +"Ñвою работу. Сигнал\n" +" ERR означает выполнение аргумента каждый раз, когда ошибка команды " +"приведёт\n" +" к выходу из командного процеÑÑора, когда включён параметр -e.\n" +" \n" +" ЕÑли аргументы не указаны, trap выводит ÑпиÑок команд, ÑвÑзанных\n" +" Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¼ Ñигналом.\n" +" \n" +" Параметры:\n" +" -l\tпоказать Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов и их номера\n" +" -p\tпоказать команды trap, ÑвÑзанные Ñ ÐºÐ°Ð¶Ð´Ñ‹Ð¼ Ñигналом\n" +" \n" +" Идентификатор Ñигнала — Ñто название Ñигнала в или номер " +"Ñигнала.\n" +" ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов не завиÑÑÑ‚ от региÑтра, а Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ SIG не ÑвлÑетÑÑ " +"обÑзательным. \n" +" Сигнал можно отправить в командный процеÑÑор командой «kill -signal $$».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый Ñигнал или параметр." -#: builtins.c:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -3408,18 +4672,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3428,8 +4692,39 @@ msgid "" " Returns success if all of the NAMEs are found; fails if any are not " "found." msgstr "" +"Вывод информации о типе команды.\n" +" \n" +" Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ указанного имени показывает, как оно будет интерпретировано " +"при\n" +" иÑпользовании в качеÑтве Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹.\n" +" \n" +" Параметры:\n" +" -a\tпоказать вÑе меÑтоположениÑ, где еÑть иÑполнÑемый файл Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ " +"именем,\n" +" \tÐ²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ñевдонимы, вÑтроенные команды и функции, а также при уÑловии\n" +" \tчто не иÑпользуетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ «-p»\n" +" -f\tне иÑкать функции командного процеÑÑора\n" +" -P\tпринудительно иÑкать в $PATH вÑе указанные имена, даже еÑли Ñто " +"пÑевдоним,\n" +" \tвÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° или функциÑ, и возвращать название файла на диÑке,\n" +" \tкоторый будет запущен\n" +" -p\tвозвращает название файла на диÑке, который будет запущен,\n" +" \tили ничего, еÑли «type -t имÑ» не возвращает «file».\n" +" -t\tвывеÑти одно из Ñлов «alias», «keyword»,\n" +" \t«function», «builtin», «file» или «», еÑли указанное Ð¸Ð¼Ñ ÑвлÑетÑÑ, " +"ÑоответÑтвенно,\n" +" \tпÑевдонимом, зарезервированным Ñловом, функцией, вÑтроенной командой\n" +" \tкомандного процеÑÑора, файлом на диÑке или Ð¸Ð¼Ñ Ð½Ðµ было найдено\n" +" \n" +" Ðргументы:\n" +" ИМЯ\tназвание интерпретируемой команды\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли вÑе указанные имена были найдены, или ошибку в " +"противном Ñлучае." -#: builtins.c:1417 +#: builtins.c:1424 +#, fuzzy msgid "" "Modify shell resource limits.\n" " \n" @@ -3447,6 +4742,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3458,7 +4754,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3475,8 +4772,56 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Изменение ограничений реÑурÑов командного процеÑÑора.\n" +" \n" +" ПозволÑет контролировать реÑурÑÑ‹, доÑтупные командному процеÑÑору и " +"Ñоздаваемым\n" +" им процеÑÑам, в ÑиÑтемах, где возможен такой контроль.\n" +" \n" +" Параметры:\n" +" -S\tиÑпользовать «мÑгкое» ограничение реÑурÑов\n" +" -H\tиÑпользовать «жёÑткое» ограничение реÑурÑов\n" +" -a\tпоказать вÑе текущие ограничениÑ\n" +" -b\tразмер буфера Ñокета\n" +" -c\tмакÑимальный размер Ñоздаваемых core-файлов\n" +" -d\tмакÑимальный размер Ñегмента данных процеÑÑа\n" +" -e\tмакÑимальный приоритет Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ («nice»)\n" +" -f\tмакÑимальный размер файлов, запиÑываемых командным процеÑÑором и " +"его дочерними процеÑÑами\n" +" -i\tмакÑимальное чиÑло ожидающих Ñигналов\n" +" -l\tмакÑимальный объём, который процеÑÑ Ð¼Ð¾Ð¶ÐµÑ‚ заблокировать в памÑти\n" +" -m\tмакÑимальный объём резидентной памÑти\n" +" -n\tмакÑимальное чиÑло открытых файловых деÑкрипторов\n" +" -p\tразмер буфера конвейера\n" +" -q\tмакÑимальное чиÑло байт в очередÑÑ… Ñообщений POSIX\n" +" -r\tмакÑимальный приоритет Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² реальном времени\n" +" -s\tмакÑимальный размер Ñтека\n" +" -t\tмакÑимальный объём процеÑÑорного времени в Ñекундах\n" +" -u\tмакÑимальное количеÑтво пользовательÑких процеÑÑов\n" +" -v\tобъём виртуальной памÑти\n" +" -x\tмакÑимальное чиÑло блокировок файлов\n" +" -T макÑимальное количеÑтво потоков\n" +" \n" +" Ðе вÑе параметры доÑтупны на вÑех платформах.\n" +" \n" +" ЕÑли указано ограничение, оно ÑвлÑетÑÑ Ð½Ð¾Ð²Ñ‹Ð¼ значением Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ " +"реÑурÑа.\n" +" Специальные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Â«soft», «hard» и «unlimited» означают,\n" +" ÑоответÑтвенно, текущее мÑгкое ограничение, текущее жёÑткое ограничение " +"и отÑутÑтвие ограничениÑ.\n" +" Ð’ противном Ñлучае выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение указанного реÑурÑа. ЕÑли\n" +" параметр не указан, подразумеваетÑÑ Ð¸Ñпользование параметра -f.\n" +" \n" +" Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°ÑŽÑ‚ÑÑ Ñ ÑˆÐ°Ð³Ð¾Ð¼ 1024 байт, кроме параметра -t Ñ ÑˆÐ°Ð³Ð¾Ð¼ в " +"Ñекундах,\n" +" параметра -p Ñ ÑˆÐ°Ð³Ð¾Ð¼ 512 байт и параметра -u, предÑтавлÑющего\n" +" количеÑтво процеÑÑов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3493,8 +4838,27 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" +"Отображение или указание маÑки режима Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð².\n" +" \n" +" Задаёт маÑку РЕЖИМ Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñоздаваемых пользователем. ЕÑли РЕЖИМ не " +"указан,\n" +" выводит текущее значение маÑки.\n" +" \n" +" ЕÑли РЕЖИМ начинаетÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹, он интерпретируетÑÑ ÐºÐ°Ðº воÑьмеричное " +"чиÑло.\n" +" Ð’ противном Ñлучае он ÑчитаетÑÑ Ñимвольной Ñтрокой как Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ chmod" +"(1).\n" +" \n" +" Параметры:\n" +" -p\tеÑли РЕЖИМ не указан, вывеÑти маÑку, пригодную Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ " +"иÑпользованиÑ\n" +" -S\tвывеÑти маÑку в Ñимвольном виде, в противном Ñлучае выводитÑÑ " +"воÑьмеричное чиÑло\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый РЕЖИМ или параметр." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3513,8 +4877,24 @@ msgid "" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" +"Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¸ возврат ÑоÑтоÑÐ½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð°.\n" +" \n" +" Ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех процеÑÑов, заданных идентификаторами\n" +" (идентификатор процеÑÑа или номер заданиÑ), и возвращает их ÑоÑтоÑние " +"выхода. ЕÑли идентификатор\n" +" не указан, ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех активных дочерних процеÑÑов\n" +" и возвращает нулевое ÑоÑтоÑние выхода. ЕÑли идентификатор не ÑвлÑетÑÑ " +"номером заданиÑ, ожидает завершениÑ\n" +" вÑех процеÑÑов в конвейере данного заданиÑ.\n" +" \n" +" ЕÑли указан параметр -n, ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñледующего заданиÑ\n" +" возвращает его ÑоÑтоÑние выхода.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледнего идентификатора. Возвращает ошибку, еÑли\n" +" указан недопуÑтимый идентификатор или параметр." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3528,8 +4908,19 @@ msgid "" "invalid\n" " option is given." msgstr "" +"Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа и возврат ÑоÑтоÑÐ½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð°.\n" +" \n" +" Ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех процеÑÑов, заданных идентификаторами (PID), и " +"возвращает их ÑоÑтоÑние выхода.\n" +" ЕÑли идентификатор процеÑÑа не указан, ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех активных\n" +" дочерних процеÑÑов и возвращает нулевое ÑоÑтоÑние выхода. PID должен " +"быть идентификатором процеÑÑа.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледнего идентификатора. Возвращает ошибку, еÑли\n" +" указан недопуÑтимый идентификатор или параметр." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3541,8 +4932,18 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Выполнение команд Ð´Ð»Ñ Ð²Ñех Ñлементов ÑпиÑка.\n" +" \n" +" Цикл «for» выполнÑет поÑледовательноÑть команд Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñлемента\n" +" ÑпиÑка. ЕÑли операнд «in СЛОВР...;» отÑутÑтвует, подразумеваетÑÑ\n" +" операнд «in \"$@\"». Каждому Ñлементу в ÑпиÑке СЛОВРприÑваиваетÑÑ Ð˜ÐœÐ¯ и " +"Ð´Ð»Ñ Ð½ÐµÐ³Ð¾\n" +" выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3558,8 +4959,22 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"МатематичеÑкие операции в циклах.\n" +" \n" +" Эквивалентно\n" +" \t(( ВЫРÐЖ1))\n" +" \twhile (( ВЫРÐЖ2 )); do\n" +" \t\tКОМÐÐДЫ\n" +" \t\t(( ВЫРÐЖ3 ))\n" +" \tdone\n" +" ВЫРÐЖ1, ВЫРÐЖ2 и ВЫРÐЖ3 — Ñто математичеÑкие выражениÑ. ЕÑли любое из " +"выражений\n" +" не указано, ÑчитаетÑÑ, что оно возвращает 1.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3578,8 +4993,30 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Выбор Ñлов из ÑпиÑка и выполнение команд.\n" +" \n" +" СЛОВРразворачиваютÑÑ, Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€ÑƒÑ ÑпиÑок Ñлов. \n" +" Ðабор развёрнутых Ñлов выводитÑÑ Ð² поток ошибок Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸\n" +" в начале Ñтрок. ЕÑли операнд «in СЛОВР...;» отÑутÑтвует, " +"подразумеваетÑÑ\n" +" операнд «in \"$@\"». Затем выводитÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ $PS3 и Ñо Ñтандартного " +"ввода\n" +" ÑчитываетÑÑ Ñтрока. ЕÑли Ñтрока ÑоÑтоит из номера,\n" +" ÑоответÑтвующего одному из показанных Ñлов, Ñтому Ñлову\n" +" приÑваиваетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ðµ имÑ. ЕÑли Ñтрока пуÑтаÑ, будут повторно " +"показаны указанные Ñлова\n" +" и приглашение. ЕÑли прочитан Ñимвол конца файла, команда завершает Ñвою " +"работу. ЕÑли прочитаны\n" +" любые другие значениÑ, указанному имени приÑваиваетÑÑ Ð¿ÑƒÑтое значение. " +"ÐŸÑ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока\n" +" ÑохранÑетÑÑ Ð² переменную $REPLY. Команды выполнÑÑŽÑ‚ÑÑ Ð¿Ð¾Ñле каждой " +"выборки,\n" +" пока не будет выполнена команда прерываниÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3594,8 +5031,22 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" +"Вывод времени, потраченного на выполнение конвейера.\n" +" \n" +" ВыполнÑет конвейер и выводит Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ времени, " +"пользовательÑкого времени\n" +" и ÑиÑтемного времени ЦП, потраченного на Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ð²ÐµÐ¹ÐµÑ€Ð°.\n" +" \n" +" Параметры:\n" +" -p\tпоказать Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ в формате Posix\n" +" \n" +" Ð”Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ переменной " +"$TIMEFORMAT.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращаемое ÑоÑтоÑние ÑоответÑтвует ÑоÑтоÑнию выхода конвейера." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3605,8 +5056,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Выполнение команд ÑоглаÑно шаблону.\n" +" \n" +" ВыполнÑет команды, когда Ñлово ÑоответÑтвует шаблону. \n" +" Ð”Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð² иÑпользуетÑÑ Ð·Ð½Ð°Ðº «|».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3626,8 +5084,23 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Выполнение команд в завиÑимоÑти от уÑловий.\n" +" \n" +" Сначала выполнÑетÑÑ ÑпиÑок «if КОМÐÐДЫ». ЕÑли ÑоÑтоÑние выхода нулевое,\n" +" выполнÑетÑÑ ÑпиÑок «then КОМÐÐДЫ». Ð’ противном Ñлучае выполнÑетÑÑ Ð¿Ð¾ " +"очереди\n" +" вÑе ÑпиÑки «elif КОМÐÐДЫ», и еÑли их ÑоÑтоÑние выхода будет нулевым,\n" +" выполнитÑÑ ÑпиÑок «then КОМÐÐДЫ», и команда if завершитÑÑ. Ð’ противном " +"Ñлучае\n" +" выполнитÑÑ ÑпиÑок «else КОМÐÐДЫ», еÑли он указан. СоÑтоÑние выхода вÑей\n" +" конÑтрукции ÑоответÑтвует ÑоÑтоÑнию выхода поÑледней выполненной команды " +"или будет нулевым,\n" +" еÑли ни одна проверка уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ возвратила иÑтину.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3637,8 +5110,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Выполнение команд до тех пор, пока проверка уÑÐ»Ð¾Ð²Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ иÑтину.\n" +" \n" +" Разворачивает и выполнÑет команды до тех пор, пока поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° в\n" +" командах «while» завершаетÑÑ Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÑоÑтоÑнием.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3648,8 +5128,16 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Выполнение команд до тех пор, пока проверка уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ возвращает иÑтину.\n" +" \n" +" Разворачивает и выполнÑет команды до тех пор, пока поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° в\n" +" командах «until» завершаетÑÑ Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÑоÑтоÑнием.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3659,10 +5147,21 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" +"Создание дополнительного процеÑÑа Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем.\n" +" \n" +" ВыполнÑет команду аÑинхронно, когда Ñтандартный вывод и Ñтандартный\n" +" вход команды подключены через конвейер к деÑкрипторам файлов, которые " +"назначены\n" +" указателÑм 0 и 1 маÑÑива переменных ИМЯ в активном командном " +"процеÑÑоре.\n" +" Ð˜Ð¼Ñ Ð¿Ð¾ умолчанию — «COPROC».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние выхода команды." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3675,8 +5174,19 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is readonly." msgstr "" +"Определение функции командного процеÑÑора.\n" +" \n" +" Создаёт функцию командного процеÑÑора Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем. При запуÑке в " +"качеÑтве проÑтой команды\n" +" ИМЯ выполнÑет КОМÐÐДЫ в контекÑте вызывающего их командного процеÑÑора. " +"При вызове ИМЕÐИ\n" +" аргументы передаютÑÑ Ð² функцию как $1...$n, а Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÑ‚\n" +" название $FUNCNAME.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð˜ÐœÐ¯ доÑтупно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3686,8 +5196,16 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"Группировка команд.\n" +" \n" +" ВыполнÑет набор команд, объединённых в группу. Это единÑтвенный ÑпоÑоб " +"перенаправлениÑ\n" +" вÑего набора команд.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние поÑледней выполненной команды." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3700,8 +5218,20 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" +"Возобновление работы Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð² интерактивном режиме.\n" +" \n" +" Ðналогично аргументу JOB_SPEC Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ «fg». ВозобновлÑет\n" +" работу оÑтановленного или фонового заданиÑ. Через JOB_SPEC можно задать " +"название\n" +" или номер заданиÑ. ЕÑли поÑле номера Ð·Ð°Ð´Ð°Ð½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ «&», задание будет " +"переведено\n" +" в фоновый режим, как еÑли бы идентификатор Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð±Ñ‹Ð» указан как\n" +" аргумент Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ «bg».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает ÑоÑтоÑние возобновлённого заданиÑ." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3711,8 +5241,15 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" +"РаÑчёт арифметичеÑкого выражениÑ.\n" +" \n" +" Выражение раÑÑчитываетÑÑ Ð¿Ð¾ правилам Ð´Ð»Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡ÐµÑких\n" +" выражений. Ðналогично «let выражение».\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает 1, еÑли выражение равно 0, в противном Ñлучае возвращает 0." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3739,8 +5276,35 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" +"Выполнение уÑловной команды.\n" +" \n" +" Возвращает ÑоÑтоÑние 0 или 1 в завиÑимоÑти от результата раÑчёта\n" +" уÑловного выражениÑ. Ð’Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÑоÑтавлÑÑŽÑ‚ÑÑ Ð¸Ð· тех же примитивов, " +"которые иÑпользуютÑÑ\n" +" во вÑтроенной команде «test». Их можно объединить Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñледующих " +"операторов:\n" +" \n" +" ( выражение )\tВозвращает значение выражениÑ\n" +" ! выражение\tВозвращает иÑтину, еÑли выражение ложно, в противном " +"Ñлучае возвращает ложь\n" +" ВЫРÐЖ1 && ВЫРÐЖ2\tВозвращает иÑтину, еÑли оба Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ñтинны, в " +"противном Ñлучае возвращает ложь\n" +" ВЫРÐЖ1 || ВЫРÐЖ2\tВозвращает иÑтину, еÑли Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно из выражений " +"иÑтинно, в противном Ñлучае возвращает ложь\n" +" \n" +" ЕÑли иÑпользуютÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ñ‹ «==» и «!=», Ñтрока Ñправа от\n" +" оператора иÑпользуетÑÑ ÐºÐ°Ðº шаблон, и выполнÑетÑÑ ÑопоÑтавление по " +"шаблону.\n" +" ЕÑли иÑпользуетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ «=~», Ñтрока Ñправа от оператора\n" +" оцениваетÑÑ ÐºÐ°Ðº регулÑрное выражение.\n" +" \n" +" Операторы && и || не раÑÑчитывают ВЫРÐЖ2, еÑли ВЫРÐЖ1 доÑтаточно длÑ\n" +" Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" 0 или 1 в завиÑимоÑти от Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3793,8 +5357,67 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" +"Стандартные имена переменных командного процеÑÑора и их иÑпользование.\n" +" \n" +" BASH_VERSION\tÐомер верÑии bash.\n" +" CDPATH\t\tСпиÑок каталогов, разделённых двоеточиÑми, Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка\n" +" \t\tв них каталогов, указанных как аргументы Ð´Ð»Ñ Â«cd».\n" +" GLOBIGNORE\tСпиÑок шаблонов, разделённых двоеточиÑми и опиÑывающих имена " +"файлов,\n" +" \t\tкоторые будут игнорироватьÑÑ Ð¿Ñ€Ð¸ развёртывании пути.\n" +" HISTFILE\t\tÐ˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°, в котором хранитÑÑ Ð¶ÑƒÑ€Ð½Ð°Ð» команд.\n" +" HISTFILESIZE\tЧиÑло Ñтрок в файле журнала.\n" +" HISTSIZE\t\tЧиÑло Ñтрок журнала, к которым может\n" +" \t\tполучить доÑтуп командный процеÑÑор.\n" +" HOME\t\tПолный путь к вашему домашнему каталогу.\n" +" HOSTNAME\t\tÐ˜Ð¼Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑиÑтемы.\n" +" HOSTTYPE\t\tТип процеÑÑора, на котором работает Ð´Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ bash.\n" +" IGNOREEOF\tУправлÑет дейÑтвием командного процеÑÑора при получении " +"Ñимвола\n" +" \t\tÑимвола конца файла в качеÑтве единÑтвенных входных данных. ЕÑли " +"задано, тогда значение\n" +" \t\tÑвлÑетÑÑ Ñ‡Ð¸Ñлом Ñимволов EOF, которые могут быть\n" +" \t\tпрочитаны подрÑд в пуÑтой Ñтроке, поÑле чего командный процеÑÑор " +"будет закрыт\n" +" \t\t(по умолчанию — 10). ЕÑли не задано, EOF означает конец входных " +"данных.\n" +" MACHTYPE\t\tСтрока Ñ Ð¾Ð¿Ð¸Ñанием текущей ÑиÑтемы, в которой запущен bash.\n" +" MAILCHECK\tКак чаÑто (в Ñекундах) bash проверÑет наличие новой почты.\n" +" MAILPATH\t\tСпиÑок имён файлов, разделённых двоеточиÑми, в которых bash\n" +" \t\tищет почту.\n" +" OSTYPE\t\tВерÑÐ¸Ñ Unix, в которой запущена Ð´Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ bash.\n" +" PATH\t\tСпиÑок каталогов, разделённых двоеточиÑми, Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка\n" +" \t\tвыполнÑемых команд.\n" +" PROMPT_COMMAND\tКоманда, выполнÑÐµÐ¼Ð°Ñ Ð¿ÐµÑ€ÐµÐ´ выводом каждого\n" +" \t\tоÑновного приглашениÑ.\n" +" PS1\t\tОÑÐ½Ð¾Ð²Ð½Ð°Ñ Ñтрока приглашениÑ.\n" +" PS2\t\tÐ”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñтрока приглашениÑ.\n" +" PWD\t\tПолный путь до текущего каталога.\n" +" SHELLOPTS\tСпиÑок включённых параметров командного процеÑÑора, " +"разделённых двоеточиÑми.\n" +" TERM\t\tÐазвание текущего типа терминала.\n" +" TIMEFORMAT\tФормат вывода данных о времени, показываемых\n" +" \t\tкомандой time.\n" +" auto_resume\tÐепуÑтое значение означает Ñлово в Ñтроке запуÑка команды,\n" +" \t\tкоторое Ñначала ищетÑÑ Ð² ÑпиÑке\n" +" \t\tоÑтановленных заданий. ЕÑли команда найдена, задание переводитÑÑ Ð² " +"интерактивный режим.\n" +" \t\tЗначение «exact» означает, что Ñлово команды должно\n" +" \t\tточно Ñовпадать Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ в ÑпиÑке оÑтановленных заданий. \n" +" \t\tЗначение «substring» означает, что Ñлово команды\n" +" \t\tдолжно быть чаÑтью Ñтроки заданиÑ. Ð’Ñе другие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÑŽÑ‚,\n" +" \t\tчто команда должна быть префикÑом оÑтановленного заданиÑ.\n" +" histchars\tСимволы, управлÑющие раÑширением журнала\n" +" \t\tи быÑтрой подÑтановкой. Первый Ñимвол означает\n" +" \t\tподÑтановку журнала. Обычно Ñто «!». Второй Ñимвол\n" +" \t\tозначает «быÑтрую подÑтановку». Обычно Ñто «^». \n" +" \t\tТретий Ñимвол означает примечание журнала. Обычно Ñто «#».\n" +" HISTIGNORE\tСпиÑок шаблонов, разделённых двоеточиÑми и опиÑывающих " +"команды,\n" +" \t\tкоторые должны быть Ñохранены в журнале.\n" -#: builtins.c:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -3804,19 +5427,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3824,8 +5447,37 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Добавление каталогов в Ñтек.\n" +" \n" +" ДобавлÑет каталог в начало Ñтека каталогов или выполнÑет\n" +" ротацию Ñтека, Ð¿Ð¾Ð¼ÐµÑ‰Ð°Ñ Ð² начало Ñтека текущий рабочий\n" +" каталог. ЕÑли аргументы не указаны, менÑет меÑтами два первых " +"каталога.\n" +" \n" +" Параметры:\n" +" -n\tпредотвращает обычное изменение каталога при добавлении\n" +" \tкаталогов в Ñтек, чтобы дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑлиÑÑŒ только над Ñтеком.\n" +" \n" +" Ðргументы:\n" +" +N\tвыполнÑет ротацию Ñтека, чтобы N-й каталог (Ñлева\n" +" \tв ÑпиÑке, показанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ)\n" +" \tÑтал первым в Ñтеке.\n" +" \n" +" -N\tвыполнÑет ротацию Ñтека, чтобы N-й каталог (Ñправа\n" +" \tв ÑпиÑке, показанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ)\n" +" \tÑтал первым в Ñтеке.\n" +" \n" +" каталог\tдобавлÑет каталог в начало Ñтека каталогов, Ð´ÐµÐ»Ð°Ñ ÐµÐ³Ð¾\n" +" \tновым текущим каталогом.\n" +" \n" +" Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° dirs показывает Ñтек каталогов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или удалоÑÑŒ\n" +" перейти в каталог." -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -3834,16 +5486,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3851,8 +5503,32 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"Удаление каталогов из Ñтека.\n" +" \n" +" УдалÑет запиÑи из Ñтека каталогов. ЕÑли аргументы не указаны,\n" +" удалÑет первый каталог из Ñтека и назначает новый первый каталог.\n" +" \n" +" Параметры:\n" +" -n\tпредотвращает обычное изменение каталога при удалении\n" +" \tкаталогов из Ñтека, чтобы дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑлиÑÑŒ только над Ñтеком.\n" +" \n" +" Ðргументы:\n" +" +N\tудалÑет N-ÑŽ Ñлева запиÑÑŒ в ÑпиÑке каталогов,\n" +" \tпоказанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, «popd +0»\n" +" \tудалÑет первый каталог, а «popd +1» — второй каталог.\n" +" \n" +" -N\tудалÑет N-ÑŽ Ñправа запиÑÑŒ в ÑпиÑке каталогов,\n" +" \tпоказанного командой «dirs», Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, «popd -0»\n" +" \tудалÑет поÑледний каталог, а «popd -1» — предпоÑледний каталог.\n" +" \n" +" Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° dirs показывает Ñтек каталогов.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или удалоÑÑŒ\n" +" перейти в каталог." -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -3863,25 +5539,49 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Отображение Ñтека каталогов.\n" +" \n" +" Выводит ÑпиÑок запомненных на данный момент каталогов. Каталоги\n" +" помещаютÑÑ Ð² ÑпиÑок командой «pushd». Ð”Ð»Ñ Ð¾Ñ‡Ð¸Ñтки\n" +" ÑпиÑка иÑпользуетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° «popd».\n" +" \n" +" Параметры:\n" +" -c\tочиÑтить Ñтек каталогов, удалив из него вÑе Ñлементы\n" +" -l\tне выводить каталоги, начинающиеÑÑ Ñ Ñ‚Ð¸Ð»ÑŒÐ´Ñ‹ (~),\n" +" \tÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ домашний каталог\n" +" -p\tпоказать Ñтек по одному каталогу в Ñтроке\n" +" -v\tпоказать Ñтек по одному каталогу в Ñтроке\n" +" \tи Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ в Ñтеке\n" +" \n" +" Ðргументы:\n" +" +N\tпоказать N-ÑŽ запиÑÑŒ Ñлева в ÑпиÑке каталогов,\n" +" \tпоказанного при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ.\n" +" \n" +" -N\tпоказать N-ÑŽ Ñправа в ÑпиÑке каталогов запиÑÑŒ,\n" +" \tпоказанного при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -3901,8 +5601,27 @@ msgid "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." msgstr "" +"УÑтановка и удаление параметров командного процеÑÑора.\n" +" \n" +" ИзменÑет наÑтройки указанных параметров командного процеÑÑора. ЕÑли не " +"указать\n" +" аргумент Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼, выводит вÑе параметры командного процеÑÑора, " +"показываÑ\n" +" какой из них уÑтановлен, а какой нет.\n" +" \n" +" Параметры:\n" +" -o\tограничитьÑÑ Ð´Ð¾ параметров, которые заданы Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «set -o»\n" +" -p\tпоказать вÑе параметры командного процеÑÑора и их ÑоÑтоÑние\n" +" -q\tничего не выводить\n" +" -s\tвключить (set) вÑе указанные параметры\n" +" -u\tотключить (unset) вÑе указанные параметры\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли указанный параметр включён. Возвращает ошибку,\n" +" еÑли был указан недопуÑтимый параметр или параметр отключён." -#: builtins.c:1908 +#: builtins.c:1919 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3919,15 +5638,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -3940,8 +5659,44 @@ msgid "" "assignment\n" " error occurs." msgstr "" +"Форматирует и выводит аргументы ÑоглаÑно указанному формату.\n" +" \n" +" Параметры:\n" +" -v перем\tвыводить в указанную переменную bash, а не\n" +" \t\tна Ñтандартный вывод\n" +" \n" +" ФОРМÐТ — Ñто ÑÐ¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð°Ñ Ñтрока, ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‰Ð°Ñ Ñ‚Ñ€Ð¸ типа объектов: проÑтые\n" +" Ñимволы, которые копируютÑÑ Ð½Ð° Ñтандартный вывод, Ñкранирующие\n" +" поÑледовательноÑти, которые преобразовываютÑÑ Ð¸ копируютÑÑ Ð½Ð° " +"Ñтандартный\n" +" вывод, и Ñпецификации, которые активируют вывод Ñледующего уÑпешного\n" +" аргумента.\n" +" \n" +" Ð’ дополнение к Ñтандартным ÑпецификациÑм формата, опиÑанным в printf" +"(1),\n" +" printf интерпретирует:\n" +" \n" +" %b\tразвёртывание Ñкранирующих поÑледовательноÑтей Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ коÑой " +"чертой в ÑоответÑтвующий аргумент;\n" +" %q\tзаключение аргумента в кавычки, чтобы его можно было повторно " +"иÑпользовать в качеÑтве входных данных Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора;\n" +" %(fmt)T вывод Ñтроки дата-времÑ, полученной поÑле иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ FMT в " +"качеÑтве\n" +" Ñтроки Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ strftime(3)\n" +" \n" +" ЕÑли необходимо задейÑтвовать вÑе аргументы, формат иÑпользуетÑÑ " +"повторно. ЕÑли\n" +" аргументов меньше, чем требуетÑÑ Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ, дополнительные\n" +" Ñпецификации Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð¸Ñ€ÑƒÑŽÑ‚ÑÑ ÐºÐ°Ðº Ñодержащие нулевое\n" +" или пуÑтое значение.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка\n" +" запиÑи или приÑвоениÑ." -#: builtins.c:1942 +#: builtins.c:1953 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3954,11 +5709,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -3967,9 +5722,32 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"Определение количеÑтва аргументов, завершаемых функцией readline.\n" +" \n" +" Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени нужно указать количеÑтво завершаемых аргументов. ЕÑли " +"параметры\n" +" не указаны, выводÑÑ‚ÑÑ ÑущеÑтвующие Ñпецификации Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ\n" +" Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ.\n" +" \n" +" Параметры:\n" +" -p\tвывеÑти ÑущеÑтвующие Ñпецификации Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð² формате Ð´Ð»Ñ " +"повторного иÑпользованиÑ\n" +" -r\tудалить Ñпецификации Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени или,\n" +" \tеÑли имена не указаны, вÑе Ñпецификации\n" +" -D\tприменить Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¸ дейÑÑ‚Ð²Ð¸Ñ ÐºÐ°Ðº Ñтандартные Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´,\n" +" \tÐ´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… не определены завершениÑ\n" +" -E\tприменить Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¸ дейÑÑ‚Ð²Ð¸Ñ Ðº «пуÑтым» командам —\n" +" \tзавершение применÑетÑÑ Ðº пуÑтой Ñтроке\n" +" \n" +" Когда применÑетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ, дейÑÑ‚Ð²Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑÑŽÑ‚ÑÑ Ð² алфавитном порÑдке\n" +" перечиÑленных выше параметров. Параметр -D имеет более\n" +" выÑокий приоритет, чем -E.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." -#: builtins.c:1970 -#, fuzzy +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -3981,13 +5759,18 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"ðÏËÁÚÙ×ÁÅÔ ×ÏÚÍÏÖÎÙÅ ÄÏÐÏÌÎÅÎÉÑ × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÐÃÉÊ. ðÒÅÄÐÏÌÁÇÁÅÔÓÑ,\n" -" ÞÔÏ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ×ÎÕÔÒÉ ÆÕÎËÃÉÊ ËÏÍÁÎÄÎÏÇÏ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ, " -"ÇÅÎÅÒÉÒÕÀÝÅÊ ×ÏÚÍÏÖÎÙÅ ÄÏÐÏÌÎÅÎÉÑ.\n" -" åÓÌÉ ÎÅÏÂÑÚÁÔÅÌØÎÙÊ ÁÒÇÕÍÅÎÔ óìï÷ï ÂÙÌ ÉÓÐÏÌØÚÏ×ÁÎ, ÔÏ ÂÕÄÕÔ " -"ÓÇÅÎÅÒÉÒÏ×ÁÎÙ ÔÏÌØËÏ ÓÏ×ÐÁÄÅÎÉÑ Ó óìï÷ï." +"Вывод возможных завершений в завиÑимоÑти от параметров.\n" +" \n" +" compgen предназначен Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² функциÑÑ… bash, генерирующих\n" +" возможные завершениÑ. ЕÑли указан необÑзательный аргумент Ñлово, " +"выполнÑет\n" +" ÑопоÑтавление Ñо Ñгенерированным Ñловом.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла " +"ошибка." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4017,8 +5800,37 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" +"Изменение или вывод параметров завершениÑ.\n" +" \n" +" ИзменÑет параметры Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени или, еÑли имена\n" +" не указаны, Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ завершениÑ. ЕÑли параметры не указаны, " +"выводит\n" +" параметры Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени или текущую Ñпецификацию " +"завершениÑ.\n" +" \n" +" Параметры:\n" +" \t-o параметр\tзадать параметр Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени\n" +" \t-D\t\tизменить параметры Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ «по умолчанию»\n" +" \t-E\t\tизменить параметры Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Â«Ð¿ÑƒÑтой» команды\n" +" \n" +" ИÑпользование «+o» вмеÑто «-o» отключает указанный параметр.\n" +" \n" +" Ðргументы:\n" +" \n" +" Каждое Ð¸Ð¼Ñ ÑÑылаетÑÑ Ð½Ð° команду, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ уже должна быть определена\n" +" ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ вÑтроенной команды «complete». ЕÑли " +"имена\n" +" не указаны, функциÑ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€ÑƒÐµÑ‚ завершениÑ, должна " +"вызвать\n" +" compopt, и должны изменитьÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾\n" +" генератора завершениÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸\n" +" определена ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ." -#: builtins.c:2015 +#: builtins.c:2026 +#, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4029,20 +5841,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4058,38 +5871,2196 @@ msgid "" "or\n" " not an indexed array." msgstr "" +"Чтение Ñтрок Ñо Ñтандартного ввода в переменную индекÑированного маÑÑива.\n" +" \n" +" Читает Ñтроки Ñо Ñтандартного ввода в переменную указанного " +"индекÑированного маÑÑива\n" +" или из указанного файлового деÑкриптора, еÑли указан параметр -u. " +"ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $MAPFILE\n" +" ÑвлÑетÑÑ Ð¼Ð°ÑÑивом по умолчанию.\n" +" \n" +" Параметры:\n" +" -n чиÑло\tкопировать указанное чиÑло Ñтрок ЕÑли чиÑло равно 0, " +"копируютÑÑ Ð²Ñе Ñтроки.\n" +" -O начало\tначать приÑвоение маÑÑиву, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ " +"По умолчанию указатель равен 0.\n" +" -s чиÑло \tотброÑить указанное чиÑло первых Ñтрок\n" +" -t\t\tудалить завершающие переводы Ñтроки изо вÑех прочитанных Ñтрок\n" +" -u fd\t\tчитать Ñтроки из файлового деÑкриптора, а не Ñо Ñтандартного " +"входа\n" +" -C callback\tоценивать callback при чтении каждой Ñтроки quantum\n" +" -c quantum\tчиÑло Ñтрок, читаемых от каждого вызова до callback\n" +" \n" +" Ðргументы:\n" +" МÐССИВ\t\tназвание переменной маÑÑива, иÑпользуемой Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… файла.\n" +" \n" +" ЕÑли параметр -C указан без -c, quantum по умолчанию равен 5000. Когда\n" +" оцениваетÑÑ callback, он предоÑтавлÑет указатель на Ñледующий " +"приÑваиваемый\n" +" Ñлемента маÑÑива и на Ñтроку, приÑваиваемую Ñтому Ñлементу,\n" +" в качеÑтве дополнительных аргументов.\n" +" \n" +" ЕÑли Ñвно не указано начало, mapfile очиÑтит маÑÑив до\n" +" операции приÑвоениÑ.\n" +" \n" +" СоÑтоÑние выхода:\n" +" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или маÑÑив " +"доÑтупен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи\n" +" и ÑвлÑетÑÑ Ð¸Ð½Ð´ÐµÐºÑированным." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +"Чтение Ñтрок из файла в переменную маÑÑива.\n" +" \n" +" Синоним команды «mapfile»." -#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR," -#~ msgstr "âÅÚ ÷ùòáö ×ÏÚ×ÒÁÝÁÅÔ \"$ÓÔÒÏËÁ $ÉÍÑÆÁÊÌÁ\". ó ÷ùòáö," +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "© Free Software Foundation, Inc, 2013." -#~ msgid "returns \"$line $subroutine $filename\"; this extra information" +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "© Free Software Foundation, Inc, 2012." + +#~ msgid "Missing `}'" +#~ msgstr "Пропущен Ñимвол `}'" + +#~ msgid "brace_expand> " +#~ msgstr "brace_expand> " + +#~ msgid "Attempt to free unknown command type `%d'.\n" #~ msgstr "" -#~ "÷ÏÚ×ÒÁÝÁÅÔ \"$ÓÔÒÏËÁ $ÐÒÏÃÅÄÕÒÁ $ÉÍÑÆÁÊÌÁ\"; ÜÔÁ ÄÏÐÏÌÎÉÔÅÌØÎÁÑ " -#~ "ÉÎÆÏÒÍÁÃÉÑ " +#~ "Попытка оÑвободить памÑть Ñтруктуры команды неизвеÑтного типа `%d'.\n" -#~ msgid "can be used used to provide a stack trace." -#~ msgstr "ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ ÄÌÑ ÓÏÚÄÁÎÉÑ `stack trace'" +#~ msgid "Report this to %s\n" +#~ msgstr "Сообщите об Ñтом по адреÑу %s\n" -#~ msgid "bug: unknown operation" -#~ msgstr "ÏÛÉÂËÁ: ÎÅÉÚ×ÅÓÔÎÁÑ ÏÐÅÒÁÃÉÑ" +#~ msgid "Stopping myself..." +#~ msgstr "Прекращение работы..." -#, fuzzy -#~ msgid "Return a successful result." -#~ msgstr "÷ÏÚ×ÒÁÝÁÅÔ ÒÅÚÕÌØÔÁÔ: ×ÓÅ ÈÏÒÏÛÏ." +#~ msgid "Tell %s to fix this someday.\n" +#~ msgstr "Скажите %s, чтобы он иÑправил Ñто.\n" + +#~ msgid "execute_command: bad command type `%d'" +#~ msgstr "execute_command: неверный тип команды '%d'" + +#~ msgid "real\t" +#~ msgstr "реальное\t" + +#~ msgid "user\t" +#~ msgstr "пользователÑ\t" + +#~ msgid "sys\t" +#~ msgstr "ÑиÑтемное\t" + +#~ msgid "" +#~ "real\t0m0.00s\n" +#~ "user\t0m0.00s\n" +#~ "sys\t0m0.00s\n" +#~ msgstr "" +#~ "реальное\t0m0.00s\n" +#~ "пользователÑ\t0m0.00s\n" +#~ "ÑиÑтемное\t0m0.00s\n" + +#~ msgid "cannot duplicate fd %d to fd 1: %s" +#~ msgstr "невозможно Ñкопировать файловый деÑкриптор %d в 1: %s" + +#~ msgid "%s: output redirection restricted" +#~ msgstr "%s: перенаправление вывода запрещено (ограниченный режим)" + +#~ msgid "Out of memory!" +#~ msgstr "ÐедоÑтаточно памÑти!" + +#~ msgid "You have already added item `%s'\n" +#~ msgstr "Элемент `%s' уже добавлен\n" + +#~ msgid "You have entered %d (%d) items. The distribution is:\n" +#~ msgstr "Создано %d (%d) Ñлементов. РаÑпределение:\n" + +#~ msgid "slot %3d: " +#~ msgstr "Ñлот %3d: " + +#~ msgid "" +#~ msgstr "<неизв>" + +#~ msgid "%s: bg background job?" +#~ msgstr "%s: задача уже фоноваÑ" + +#~ msgid "" +#~ "Redirection instruction from yyparse () '%d' is\n" +#~ "out of range in make_redirection ()." +#~ msgstr "" +#~ "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ yyparse () `%d'\n" +#~ "не может быть обработана make_redirection ()." + +#~ msgid "clean_simple_command () got a command with type %d." +#~ msgstr "функции clean_simple_command () передана команда типа %d." + +#~ msgid "got errno %d while waiting for %d" +#~ msgstr "ошибка %d при ожидании %d" + +#~ msgid "syntax error near unexpected token `%c'" +#~ msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° около неожиданной лекÑемы `%c'" + +#~ msgid "print_command: bad command type `%d'" +#~ msgstr "print_command: неверный тип команды `%d'" + +#~ msgid "cprintf: bad `%%' argument (%c)" +#~ msgstr "cprintf: неверный Ñпецификатор поÑле `%%' (%c)" + +#~ msgid "option `%s' requires an argument" +#~ msgstr "параметр `%s' должен иÑпользоватьÑÑ Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼" + +#~ msgid "%s: unrecognized option" +#~ msgstr "%s: неизвеÑтный параметр" + +#~ msgid "`-c' requires an argument" +#~ msgstr "`-c' должен иÑпользоватьÑÑ Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼" + +#~ msgid "%s: cannot execute directories" +#~ msgstr "%s: каталоги не могут запуÑкатьÑÑ ÐºÐ°Ðº иÑполнÑемые файлы" + +#~ msgid "Bad code in sig.c: sigprocmask" +#~ msgstr "Ðеверный код в sig.c: sigprocmask" + +#~ msgid "can't make pipes for process substitution: %s" +#~ msgstr "невозможно Ñоздать каналы Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки: %s" + +#~ msgid "reading" +#~ msgstr "чтениÑ" + +#~ msgid "writing" +#~ msgstr "запиÑи" + +#~ msgid "process substitution" +#~ msgstr "подÑтановка процеÑÑов" + +#~ msgid "command substitution" +#~ msgstr "подÑтановка команд" + +#~ msgid "Can't reopen pipe to command substitution (fd %d): %s" +#~ msgstr "" +#~ "Ðевозможно вновь открыть канал Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команд (файловый " +#~ "декÑриптор %d): %s" + +#~ msgid "$%c: unbound variable" +#~ msgstr "$%c: не заданы границы" + +#~ msgid "%s: bad arithmetic substitution" +#~ msgstr "%s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸Ñ‡ÐµÑÐºÐ°Ñ Ð¿Ð¾Ð´Ñтановка" + +#~ msgid "-%s: binary operator expected" +#~ msgstr "-%s: ожидаетÑÑ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ" + +#~ msgid "%s[%s: bad subscript" +#~ msgstr "%s[%s: неверный индекÑ" + +#~ msgid "[%s: bad subscript" +#~ msgstr "[%s: неверный индекÑ" + +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "" +#~ "xmalloc: невозможно заново выделить %lu байтов (выделено %lu байтов)" + +#~ msgid "digits occur in two different argv-elements.\n" +#~ msgstr "цифры вÑтречаютÑÑ Ð² двух разных Ñлементах argv.\n" + +#~ msgid "option %c\n" +#~ msgstr "параметр %c\n" + +#~ msgid "option a\n" +#~ msgstr "параметр a\n" + +#~ msgid "option b\n" +#~ msgstr "параметр b\n" + +#~ msgid "option c with value `%s'\n" +#~ msgstr "параметр c Ñо значением `%s'\n" + +#~ msgid "?? sh_getopt returned character code 0%o ??\n" +#~ msgstr "?? sh_getopt вернула код Ñимвола 0%o ??\n" + +#~ msgid "non-option ARGV-elements: " +#~ msgstr "Ñлементы ARGV, не ÑвлÑющиеÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸: " + +#~ msgid "%s: Unknown flag %s.\n" +#~ msgstr "%s: ÐеизвеÑтный флаг %s.\n" + +#~ msgid "Unknown directive `%s'" +#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° `%s'" + +#~ msgid "%s must be inside of a $BUILTIN block" +#~ msgstr "%s должно быть внутри блока $BUILTIN" + +#~ msgid "%s found before $END" +#~ msgstr "%s обнаружено раньше $END" + +#~ msgid "%s already has a function (%s)" +#~ msgstr "Ð’ %s уже еÑть Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ (%s)" + +#~ msgid "%s already had a docname (%s)" +#~ msgstr "Ð’ %s уже еÑть название документации (%s)" + +#~ msgid "%s already has short documentation (%s)" +#~ msgstr "Ð’ %s уже еÑть ÐºÐ¾Ñ€Ð¾Ñ‚ÐºÐ°Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ (%s)" + +#~ msgid "%s already has a %s definition" +#~ msgstr "Ð’ %s уже еÑть определение %s" + +#~ msgid "mkbuiltins: Out of virtual memory!\n" +#~ msgstr "mkbuiltins: Ðе хватает виртуальной памÑти!\n" + +#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]" +#~ msgstr "read [-r] [-p приглашение] [-a маÑÑив] [-e] [Ð¸Ð¼Ñ ...]" + +#~ msgid "%[DIGITS | WORD] [&]" +#~ msgstr "%[ЦИФРЫ | СЛОВО] [&]" + +#~ msgid "variables - Some variable names and meanings" +#~ msgstr "variables -- Имена и ÑмыÑл некоторых переменных" + +#~ msgid "`alias' with no arguments or with the -p option prints the list" +#~ msgstr "`alias' без аргументов или Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -p выводит на Ñтандартный" + +#~ msgid "of aliases in the form alias NAME=VALUE on standard output." +#~ msgstr "вывод ÑпиÑок пÑевдокоманд в виде ИМЯ=ЗÐÐЧЕÐИЕ. Ð’ противном" + +#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." +#~ msgstr "Ñлучае, Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ определÑетÑÑ Ð¿Ñевдокоманда Ñо ЗÐÐЧЕÐИЕМ." + +#~ msgid "A trailing space in VALUE causes the next word to be checked for" +#~ msgstr "" +#~ "ЕÑли на конце ЗÐÐЧЕÐИЯ еÑть пробелы, при разворачивании пÑевдокоманды" + +#~ msgid "alias substitution when the alias is expanded. Alias returns" +#~ msgstr "Ñледующее Ñлово проверÑетÑÑ Ð½Ð° подÑтановку пÑевдокоманд. Alias" + +#~ msgid "true unless a NAME is given for which no alias has been defined." +#~ msgstr "" +#~ "возвращает true, еÑли только не задано ИМЯ, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ нет пÑевдокоманд." + +#~ msgid "" +#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," +#~ msgstr "" +#~ "УдалÑет ИМЕÐРиз ÑпиÑка определённых пÑевдокоманд. ЕÑли задан параметр -a," + +#~ msgid "then remove all alias definitions." +#~ msgstr "удалÑет вÑе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ñевдокоманд." + +#~ msgid "Bind a key sequence to a Readline function, or to a macro. The" +#~ msgstr "" +#~ "СвÑзывает поÑледовательноÑть клавиш Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ Readline или Ñ Ð¼Ð°ÐºÑ€Ð¾Ñом." + +#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" +#~ msgstr "СинтакÑÐ¸Ñ Ñ‚Ð¾Ñ‚ же, что и в ~/.inputrc, но должен передаватьÑÑ" + +#~ msgid "" +#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgstr "одним аргументом: bind '\"\\C-x\\C-r\": re-read-init-file'." + +#~ msgid "Arguments we accept:" +#~ msgstr "Принимаемые аргументы:" + +#~ msgid "" +#~ " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr "" +#~ " -m раÑкладка ИÑпользовать во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ программы указанную" + +#~ msgid " command. Acceptable keymap names are emacs," +#~ msgstr " раÑкладку. ДопуÑтимые имена раÑкладок: emacs," + +#~ msgid "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgstr "" +#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," + +#~ msgid " vi-command, and vi-insert." +#~ msgstr " vi-command и vi-insert." + +#~ msgid " -l List names of functions." +#~ msgstr " -l ВывеÑти ÑпиÑок имён функций." + +#~ msgid " -P List function names and bindings." +#~ msgstr " -P ВывеÑти ÑпиÑок имён функций и ÑвÑзей." + +#~ msgid "" +#~ " -p List functions and bindings in a form that can be" +#~ msgstr " -p ВывеÑти ÑпиÑок имён функций и ÑвÑзей в виде," + +#~ msgid " reused as input." +#~ msgstr " который можно иÑпользовать на входе." + +#~ msgid " -r keyseq Remove the binding for KEYSEQ." +#~ msgstr " -r поÑлед_клавиш Удалить ÑвÑзь Ð´Ð»Ñ `поÑлед_клавиш'." + +#~ msgid " -f filename Read key bindings from FILENAME." +#~ msgstr " -f имÑ_файла ПрочеÑть ÑвÑзи из файла." + +#~ msgid "" +#~ " -q function-name Query about which keys invoke the named function." +#~ msgstr "" +#~ " -q имÑ_функции ЗапроÑ, какие клавиши вызовут указанную функцию." + +#~ msgid " -V List variable names and values" +#~ msgstr " -V ВывеÑти ÑпиÑок имён и значений переменных." + +#~ msgid "" +#~ " -v List variable names and values in a form that can" +#~ msgstr "" +#~ " -v ВывеÑти ÑпиÑок имён и значений переменных в виде," + +#~ msgid " be reused as input." +#~ msgstr " который можно иÑпользовать на входе" + +#~ msgid "" +#~ " -S List key sequences that invoke macros and their " +#~ "values" +#~ msgstr "" +#~ " -S ВывеÑти ÑпиÑок поÑледовательноÑтей клавиш, " +#~ "вызывающих макроÑÑ‹ и их значений." + +#~ msgid "" +#~ " -s List key sequences that invoke macros and their " +#~ "values in" +#~ msgstr "" +#~ " -s ВывеÑти ÑпиÑок поÑледовательноÑтей клавиш, вызывающих " +#~ "макроÑÑ‹" + +#~ msgid " a form that can be reused as input." +#~ msgstr "" +#~ " и их значений в виде, который можно иÑпользовать на " +#~ "входе" + +#~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," +#~ msgstr "Выйти из цикла FOR, WHILE или UNTIL. ЕÑли указано N," + +#~ msgid "break N levels." +#~ msgstr "выйти из N вложенных уровней." + +#~ msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop." +#~ msgstr "Перейти к Ñледующей итерации цикла FOR, WHILE или UNTIL." + +#~ msgid "If N is specified, resume at the N-th enclosing loop." +#~ msgstr "ЕÑли задано N, перейти к N-му обрамлÑющему циклу." + +#~ msgid "Run a shell builtin. This is useful when you wish to rename a" +#~ msgstr "Выполнить вÑтроенную команду оболочки. Это полезно, еÑли вы хотите" + +#~ msgid "shell builtin to be a function, but need the functionality of the" +#~ msgstr "Ñоздать функцию Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ вÑтроенной команды, но хотите Ñохранить" + +#~ msgid "builtin within the function itself." +#~ msgstr "возможноÑть иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ из Ñамой функции" + +#~ msgid "Change the current directory to DIR. The variable $HOME is the" +#~ msgstr "Изменить текущий каталог на заданный. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $HOME Ñодержит" + +#~ msgid "default DIR. The variable $CDPATH defines the search path for" +#~ msgstr "" +#~ "каталог по умолчанию. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $CDPATH определÑет путь, в котором" + +#~ msgid "the directory containing DIR. Alternative directory names in CDPATH" +#~ msgstr "" +#~ "ищетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³, Ñодержащий КÐТÐЛОГ. Ðльтернативные каталоги в CDPATH" + +#~ msgid "are separated by a colon (:). A null directory name is the same as" +#~ msgstr "" +#~ "разделÑÑŽÑ‚ÑÑ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ñ Ð·Ð°Ð¿Ñтой (:). ПуÑтое Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° -- то же Ñамое," + +#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," +#~ msgstr "" +#~ "что текущий каталог, Ñ‚.е. `.'. ЕÑли КÐТÐЛОГ начинаетÑÑ Ñ Ð´Ñ€Ð¾Ð±Ð¸ (/)," + +#~ msgid "then $CDPATH is not used. If the directory is not found, and the" +#~ msgstr "" +#~ "$CDPATh не иÑпользуетÑÑ. ЕÑли каталог не найден, и уÑтановлен параметр" + +#~ msgid "shell option `cdable_vars' is set, then try the word as a variable" +#~ msgstr "" +#~ "оболочки `cdable_vars', делаетÑÑ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° интерпретировать Ñто Ñлово как " +#~ "имÑ" + +#~ msgid "name. If that variable has a value, then cd to the value of that" +#~ msgstr "" +#~ "переменной. ЕÑли Ñта Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð¼ÐµÐµÑ‚ значение, каталог менÑетÑÑ Ð½Ð° Ñто" + +#~ msgid "" +#~ "variable. The -P option says to use the physical directory structure" +#~ msgstr "" +#~ "значение. Параметр -P указывает иÑпользовать физичеÑкую Ñтруктуру " +#~ "каталогов," + +#~ msgid "" +#~ "instead of following symbolic links; the -L option forces symbolic links" +#~ msgstr "" +#~ "а не Ñледовать ÑимволчиеÑким ÑÑылкам, параметр -L заÑтавлÑет Ñледовать" + +#~ msgid "to be followed." +#~ msgstr "ÑимволичеÑким ÑÑылкам." + +#~ msgid "Print the current working directory. With the -P option, pwd prints" +#~ msgstr "" +#~ "ВывеÑти Ð¸Ð¼Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ рабочего каталога. С параметром -P pwd выводит" + +#~ msgid "the physical directory, without any symbolic links; the -L option" +#~ msgstr "" +#~ "физичеÑкий каталог, без ÑимволичеÑких ÑÑылок, параметр -L заÑтавлÑет" + +#~ msgid "makes pwd follow symbolic links." +#~ msgstr "pwd Ñледовать ÑимволичеÑким ÑÑылкам." + +#~ msgid "" +#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "" +#~ "ВыполнÑет КОМÐÐДУ Ñ ÐРГУМЕÐТÐМИ, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ оболочки. ЕÑли у Ð²Ð°Ñ " +#~ "еÑть" + +#~ msgid "function called `ls', and you wish to call the command `ls', you can" +#~ msgstr "" +#~ "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¸ `ls', а вы хотите вызвать команду `ls', можно " +#~ "иÑпользовать" + +#~ msgid "" +#~ "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "" +#~ "\"command ls\". ЕÑли задан параметр -p, иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ $PATH" + +#~ msgid "" +#~ "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgstr "по умолчанию, что гарантирует отыÑкание Ñтандартных утилит. ЕÑли" + +#~ msgid "" +#~ "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgstr "задан параметр -V или -v, выводитÑÑ Ñтрока, опиÑÑ‹Ð²Ð°ÑŽÑ‰Ð°Ñ ÐšÐžÐœÐÐДУ." + +#~ msgid "The -V option produces a more verbose description." +#~ msgstr "Параметр -V Ñоздаёт более подробное опиÑание." + +#~ msgid "Declare variables and/or give them attributes. If no NAMEs are" +#~ msgstr "" +#~ "ОбъÑвлÑет переменные и/или придаёт им атрибуты. ЕÑли не заданы ИМЕÐÐ," + +#~ msgid "given, then display the values of variables instead. The -p option" +#~ msgstr "выводит вмеÑто Ñтого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…. Параметр -p выведет" + +#~ msgid "will display the attributes and values of each NAME." +#~ msgstr "атрибуты и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ." + +#~ msgid "The flags are:" +#~ msgstr "Флаги:" + +#~ msgid " -a\tto make NAMEs arrays (if supported)" +#~ msgstr " -a\tÑчитать ИМЕÐРмаÑÑивами (еÑли поддерживаютÑÑ)" + +#~ msgid " -f\tto select from among function names only" +#~ msgstr " -f\tиÑкать только Ñреди имён функций" + +#~ msgid " -F\tto display function names without definitions" +#~ msgstr " -F\tпоказать имена функций без определений" + +#~ msgid " -r\tto make NAMEs readonly" +#~ msgstr " -r\tÑделать ИМЕÐРпеременными только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" + +#~ msgid " -x\tto make NAMEs export" +#~ msgstr " -x\tпозволить ÑкÑпорт ИМÐÐ" + +#~ msgid " -i\tto make NAMEs have the `integer' attribute set" +#~ msgstr " -i\tпридать ИМЕÐÐМ набор атрибутов `integer' (целочиÑленный)" + +#~ msgid "Variables with the integer attribute have arithmetic evaluation (see" +#~ msgstr "Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ `integer' арифметичеÑкие вычиÑÐ»ÐµÐ½Ð¸Ñ (Ñм." + +#~ msgid "`let') done when the variable is assigned to." +#~ msgstr "`let') выполнÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð¸ приÑвоении переменной значениÑ." + +#~ msgid "When displaying values of variables, -f displays a function's name" +#~ msgstr "При выводе значений переменных -f выводит Ð¸Ð¼Ñ Ð¸ определение" + +#~ msgid "and definition. The -F option restricts the display to function" +#~ msgstr "функции. Параметр -F ограничивает вывод именем" + +#~ msgid "name only." +#~ msgstr "функции." + +#~ msgid "" +#~ "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgstr "ИÑпользование `+' вмеÑто `-' выключает заданный атрибут. При" + +#~ msgid "used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "иÑпользовании в функции делает ИМЕÐа локальными, как команда `local'." -#, fuzzy #~ msgid "Obsolete. See `declare'." -#~ msgstr " ÷ÙÛÅÌ ÉÚ ÕÐÏÔÒÅÂÌÅÎÉÑ. óÍ. `declare'." +#~ msgstr "УÑтарела. См. `declare'." -#, fuzzy -#~ msgid "Logout of a login shell." +#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL" +#~ msgstr "Создать локальную переменную ИМЯ и придать ей ЗÐÐЧЕÐИЕ. LOCAL" + +#~ msgid "have a visible scope restricted to that function and its children." +#~ msgstr "облаÑть видимоÑти ИМЕÐИ Ñтой функцией и её потомками." + +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is" +#~ msgstr "Выводит ÐРГУМЕÐТЫ. ЕÑли задано -n, подавлÑетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°ÑŽÑ‰Ð¸Ð¹ переход" + +#~ msgid "suppressed. If the -e option is given, interpretation of the" #~ msgstr "" -#~ "úÁ×ÅÒÛÅÎÉÑ ÓÅÁÎÓÁ ËÏÍÁÎÄÎÏÇÏ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ ÚÁÐÕÝÅÎÎÏÇÏ ÐÏÓÌÅ ×ÈÏÄÁ × " -#~ "ÓÉÓÔÅÍÕ." +#~ "на новую Ñтроку. ЕÑли задан параметр -e, интерпретируютÑÑ Ñледующие" + +#~ msgid "following backslash-escaped characters is turned on:" +#~ msgstr "Ñкранированные Ñимволы:" + +#~ msgid "\t\\a\talert (bell)" +#~ msgstr "\t\\a\tпредупреждение (звонок)" + +#~ msgid "\t\\b\tbackspace" +#~ msgstr "\t\\b\tзабой (откат)" + +#~ msgid "\t\\c\tsuppress trailing newline" +#~ msgstr "\t\\c\tподавить завершающий переход на новую Ñтроку" + +#~ msgid "\t\\E\tescape character" +#~ msgstr "\t\\E\tÑкранировать Ñимвол" + +#~ msgid "\t\\f\tform feed" +#~ msgstr "\t\\f\tÑдвиг на Ñледующую Ñтроку" + +#~ msgid "\t\\n\tnew line" +#~ msgstr "\t\\n\tÐ½Ð¾Ð²Ð°Ñ Ñтрока" + +#~ msgid "\t\\r\tcarriage return" +#~ msgstr "\t\\r\tвозврат каретки" + +#~ msgid "\t\\t\thorizontal tab" +#~ msgstr "\t\\t\tÐ³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑциÑ" + +#~ msgid "\t\\v\tvertical tab" +#~ msgstr "\t\\v\tÐ²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑциÑ" + +#~ msgid "\t\\\\\tbackslash" +#~ msgstr "\t\\\\\tÐ¾Ð±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÐºÐ¾ÑÐ°Ñ Ñ‡ÐµÑ€Ñ‚Ð°" + +#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." +#~ msgstr "\t\\чиÑло\tÑимвол, воÑьмеричный ASCII-код которого равен ЧИСЛУ" + +#~ msgid "" +#~ "You can explicitly turn off the interpretation of the above characters" +#~ msgstr "Ð’Ñ‹ можете Ñвно выключить интерпретацию вышеприведённых Ñимволов" + +#~ msgid "with the -E option." +#~ msgstr "параметром -E." + +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "" +#~ "Выводит ÐРГУМЕÐТЫ. ЕÑли задано -n, подавлÑетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°ÑŽÑ‰Ð¸Ð¹ переход на " +#~ "новую Ñтроку." + +#~ msgid "Enable and disable builtin shell commands. This allows" +#~ msgstr "Включает и блокирует вÑтроенные команды оболочки. Это позволÑет" + +#~ msgid "you to use a disk command which has the same name as a shell" +#~ msgstr "иÑпользовать внешние команды Ñ Ñ‚ÐµÐ¼Ð¸ же именами, что команды" + +#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" +#~ msgstr "" +#~ "оболочки. При иÑпользовании -n ИМЕÐРблокируютÑÑ, в противном Ñлучае" + +#~ msgid "NAMEs are enabled. For example, to use the `test' found on your" +#~ msgstr "" +#~ "включаютÑÑ. Ðапример, чтобы иÑпользовать файл `test', а не вÑтроенную" + +#~ msgid "path instead of the shell builtin version, type `enable -n test'." +#~ msgstr "в оболочку верÑию, введите enable -n test'. Ðа ÑиÑтемах," + +#~ msgid "On systems supporting dynamic loading, the -f option may be used" +#~ msgstr "поддерживающих динамичеÑкую загрузку можно иÑпользовать параметр -f" + +#~ msgid "to load new builtins from the shared object FILENAME. The -d" +#~ msgstr "" +#~ "чтобы загрузить новые вÑтроенные команды из разделÑемого объекта ФÐЙЛ." + +#~ msgid "option will delete a builtin previously loaded with -f. If no" +#~ msgstr "Параметр -d удалÑет команды, загруженные -f. ЕÑли имена, кроме" + +#~ msgid "non-option names are given, or the -p option is supplied, a list" +#~ msgstr "как в параметрах, не заданы, или еÑли задан параметр -p, выводитÑÑ" + +#~ msgid "of builtins is printed. The -a option means to print every builtin" +#~ msgstr "" +#~ "ÑпиÑок вÑтроенных команд. Параметр -a требует вывеÑти вÑе вÑтроенные" + +#~ msgid "with an indication of whether or not it is enabled. The -s option" +#~ msgstr "команды Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÐ¹, блокированы ли они. Параметр -s выводит" + +#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" +#~ msgstr "только `Ñпециальные' команды Posix.2. Параметр -n выводит ÑпиÑок" + +#~ msgid "option displays a list of all disabled builtins." +#~ msgstr "вÑех блокированных вÑтроенных команд." + +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Читает ÐРГУМЕÐТЫ как входной текÑÑ‚ оболочки и выполнÑет полученные " +#~ "команды." + +#~ msgid "Getopts is used by shell procedures to parse positional parameters." +#~ msgstr "" +#~ "Getopts иÑпользуетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°Ð¼Ð¸ оболочки Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° параметров командной" + +#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" +#~ msgstr "Ñтроки. СТРОКÐ_ПÐРÐМЕТРОВ Ñодержит буквы параметров, которые нужно" + +#~ msgid "is followed by a colon, the option is expected to have an argument," +#~ msgstr "" +#~ "раÑпознать. ЕÑли за буквой Ñледует двоеточие, параметр должен иметь" + +#~ msgid "which should be separated from it by white space." +#~ msgstr "аргумент, отделённый от него промежутком." + +#~ msgid "Each time it is invoked, getopts will place the next option in the" +#~ msgstr "При каждом вызове getopts помещает Ñледующий параметр в переменную" + +#~ msgid "shell variable $name, initializing name if it does not exist, and" +#~ msgstr "оболочки $имÑ, Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÑ Ð¸Ð¼Ñ, еÑли оно не ÑущеÑтвует, а индекÑ" + +#~ msgid "the index of the next argument to be processed into the shell" +#~ msgstr "Ñледующего аргумента в переменную оболочки OPTIND. OPTIND" + +#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" +#~ msgstr "" +#~ "принимает значение 1 при каждом вызове оболочки или Ñкрипта оболочки." + +#~ msgid "a shell script is invoked. When an option requires an argument," +#~ msgstr "ЕÑли параметр требует аргумента, getopts помещает Ñтот аргумент" + +#~ msgid "getopts places that argument into the shell variable OPTARG." +#~ msgstr "в переменную оболочки OPTARG." + +#~ msgid "getopts reports errors in one of two ways. If the first character" +#~ msgstr "" +#~ "getopts Ñообщает об ошибках одним из двух ÑпоÑобов. ЕÑли первый Ñимвол" + +#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" +#~ msgstr "" +#~ "OPTSTRING -- двоеточие, getopts иÑпользует беÑшумный ÑпоÑоб. Ð’ Ñтом" + +#~ msgid "this mode, no error messages are printed. If an illegal option is" +#~ msgstr "Ñлучае ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках не выводÑÑ‚ÑÑ. ЕÑли найден недопуÑтимый" + +#~ msgid "seen, getopts places the option character found into OPTARG. If a" +#~ msgstr "" +#~ "параметр, getopts помещает найденный Ñимвол в OPTARG. ЕÑли не найден" + +#~ msgid "required argument is not found, getopts places a ':' into NAME and" +#~ msgstr "требуемый аргумент, getopts помещает в ИМЯ ':', а в OPTARG --" + +#~ msgid "sets OPTARG to the option character found. If getopts is not in" +#~ msgstr "найденный Ñимвол. ЕÑли getopts работает не в беÑшумном режиме" + +#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" +#~ msgstr "и обнаружен недопуÑтимый параметр, getopts помещает в ИМЯ '?', и" + +#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" +#~ msgstr "ÑбраÑывает OPTARG. ЕÑли не найден требуемый параметр, в ИМЯ" + +#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" +#~ msgstr "помещаетÑÑ '?', OPTARG ÑбраÑываетÑÑ, и выводитÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑтичеÑкое" + +#~ msgid "printed." +#~ msgstr "Ñообщение." + +#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the" +#~ msgstr "ЕÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¸ OPTERR имеет значение 0, getopts блокирует" + +#~ msgid "printing of error messages, even if the first character of" +#~ msgstr "вывод Ñообщений об ошибках, даже еÑли первый Ñимвол OPTSTRING" + +#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default." +#~ msgstr "не двоеточие. По умолчанию OPTERR имеет значение 1." + +#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" +#~ msgstr "Getopts обычно разбирает позиционные параметры ($0 - $9), но еÑли" + +#~ msgid "more arguments are given, they are parsed instead." +#~ msgstr "заданы дополнительные аргументы, вмеÑто Ñтого разбираютÑÑ Ð¾Ð½Ð¸" + +#~ msgid "Exec FILE, replacing this shell with the specified program." +#~ msgstr "ЗапуÑтить ФÐЙЛ, Ð·Ð°Ð¼ÐµÑ‰Ð°Ñ Ñту копию оболочки указанной программой." + +#~ msgid "If FILE is not specified, the redirections take effect in this" +#~ msgstr "ЕÑли ФÐЙЛ не задан, могут быть переназначены файловые деÑкрипторы." + +#~ msgid "shell. If the first argument is `-l', then place a dash in the" +#~ msgstr "ЕÑли первый аргумент `-l', в начало нулевого аргумента, переданного" + +#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option" +#~ msgstr "ФÐЙЛУ, добавлÑетÑÑ `-', как при работе login. ЕÑли задан параметр" + +#~ msgid "is supplied, FILE is executed with a null environment. The `-a'" +#~ msgstr "`-c', ФÐЙЛ выполнÑетÑÑ Ð² пуÑтой Ñреде. Параметр `-a' уÑтанавливает" + +#~ msgid "option means to make set argv[0] of the executed process to NAME." +#~ msgstr "argv[0] запущенного процеÑÑа в ИМЯ." + +#~ msgid "If the file cannot be executed and the shell is not interactive," +#~ msgstr "ЕÑли файл не может быть запущен, а оболочка не интерактивна," + +#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" +#~ msgstr "" +#~ "производитÑÑ Ð²Ñ‹Ñ…Ð¾Ð´ из оболочки, еÑли только не уÑтановлена переменнаÑ" + +#~ msgid "is set." +#~ msgstr "\"no_exit_on_failed_exec\"" + +#~ msgid "is that of the last command executed." +#~ msgstr "Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ таким же, как у поÑледней выполненной команды." + +#~ msgid "" +#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgstr "" +#~ "ПЕРВÐЯ и ПОСЛЕДÐЯЯ могут быть чиÑлами, ограничивающими диапазон, или" + +#~ msgid "string, which means the most recent command beginning with that" +#~ msgstr "же ПЕРВÐЯ может быть Ñтрокой, означающей Ñамую недавнюю команду," + +#~ msgid "string." +#~ msgstr "начинающуюÑÑ Ñ Ñтой Ñтроки." + +#~ msgid "" +#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr "" +#~ " -e ИМЯ_РЕДÐКТОРРвыбирает иÑпользуемый редактор. По умолчанию FCEDIT," + +#~ msgid "" +#~ " then the editor which corresponds to the current readline editing" +#~ msgstr " затем EDITOR, затем редактор, ÑоответÑтвуюший текущему режиму" + +#~ msgid " mode, then vi." +#~ msgstr " Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ readline, затем vi." + +#~ msgid " -l means list lines instead of editing." +#~ msgstr " -l вывеÑти, а не редактировать Ñтроки." + +#~ msgid " -n means no line numbers listed." +#~ msgstr " -n не выводить номера Ñтрок." + +#~ msgid "" +#~ " -r means reverse the order of the lines (making it newest listed " +#~ "first)." +#~ msgstr " -r вывеÑти Ñтроки в обратном порÑдке (в начале Ñамые новые)." + +#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" +#~ msgstr "" +#~ "Ð’ формате `fc -s [шаблон=замена] [команда] команда выполнÑетÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾" + +#~ msgid "re-executed after the substitution OLD=NEW is performed." +#~ msgstr "поÑле того, как произведена подÑтановка." + +#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" +#~ msgstr "ÐŸÐ¾Ð»ÐµÐ·Ð½Ð°Ñ Ð¿Ñевдокоманда -- r='fc -s', так `r cc' выполнÑет поÑледнюю" + +#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" +#~ msgstr "команду, начинающуюÑÑ Ñ `cc', а `r' заново выполнÑет поÑледнюю" + +#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" +#~ msgstr "" +#~ "Возвращает задачу Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером из фонового режима и делает её" + +#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" +#~ msgstr "текущей задачей. ЕÑли номер не задан, иÑпользуетÑÑ Ð¿Ñ€ÐµÐ´Ñтавление" + +#~ msgid "used." +#~ msgstr "оболочки о текущей задаче." + +#~ msgid "Place JOB_SPEC in the background, as if it had been started with" +#~ msgstr "" +#~ "Переводит задачу Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером в фоновый режим, как еÑли бы она" + +#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" +#~ msgstr "" +#~ "была запущена Ñ `&'. ЕÑли номер не задан, иÑпользуетÑÑ Ð¿Ñ€ÐµÐ´Ñтавление" + +#~ msgid "job is used." +#~ msgstr "оболочки о текущей задаче." + +#~ msgid "For each NAME, the full pathname of the command is determined and" +#~ msgstr "Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ определÑÑŽÑ‚ÑÑ Ð¸ запоминаютÑÑ Ð¿Ð¾Ð»Ð½Ñ‹Ðµ пути команды." + +#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" +#~ msgstr "ЕÑли задан параметр -p, в качеÑтве пути иÑпользуетÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¹, а" + +#~ msgid "full pathname of NAME, and no path search is performed. The -r" +#~ msgstr "поиÑк не выполнÑетÑÑ. Параметр -r заÑтавлÑет оболочку очиÑтить" + +#~ msgid "option causes the shell to forget all remembered locations. If no" +#~ msgstr "ÑпиÑок положений в памÑти. ЕÑли аргументы не заданы, выводитÑÑ" + +#~ msgid "" +#~ "arguments are given, information about remembered commands is displayed." +#~ msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ запомненных командах." + +#~ msgid "Display helpful information about builtin commands. If PATTERN is" +#~ msgstr "" +#~ "ВывеÑти полезную информацию о вÑтроенных командах. ЕÑли задан ШÐБЛОÐ," + +#~ msgid "specified, gives detailed help on all commands matching PATTERN," +#~ msgstr "" +#~ "вывеÑти подробную Ñправку по вÑем командам, ÑоответÑтвующим ШÐБЛОÐУ," + +#~ msgid "otherwise a list of the builtins is printed." +#~ msgstr "в противном Ñлучае вывеÑти ÑпиÑок вÑтроенных команд." + +#~ msgid "Display the history list with line numbers. Lines listed with" +#~ msgstr "ВывеÑти иÑторию команд в виде ÑпиÑка Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñтрок. Изменённые" + +#~ msgid "with a `*' have been modified. Argument of N says to list only" +#~ msgstr "" +#~ "Ñтроки помечаютÑÑ Ñимволом `*'. Ðргумент N указывает выводить только" + +#~ msgid "the last N lines. The -c option causes the history list to be" +#~ msgstr "поÑледние N Ñтрок. Параметр -c очищает иÑторию команд, удалÑÑ" + +#~ msgid "" +#~ "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgstr "вÑе Ñтроки. Параметр `-w' запиÑывает текущую иÑторию в указанный" + +#~ msgid "" +#~ "current history to the history file; `-r' means to read the file and" +#~ msgstr "файл; `-r' читает такой файл и дополнÑет его Ñодержимым иÑторию" + +#~ msgid "append the contents to the history list instead. `-a' means" +#~ msgstr "команд. `-a' добавлÑет иÑторию Ñтой ÑеÑÑии к файлу иÑтории" + +#~ msgid "to append history lines from this session to the history file." +#~ msgstr "команд. Ðргумент `-n' читает из файла иÑтории вÑе Ñтроки, не" + +#~ msgid "Argument `-n' means to read all history lines not already read" +#~ msgstr "прочитанные ранее, и добавлÑет их к иÑтории. ЕÑли задан ФÐЙЛ," + +#~ msgid "from the history file and append them to the history list. If" +#~ msgstr "в качеÑтве файла иÑтории команд иÑпользуетÑÑ Ð¾Ð½, иначе, еÑли" + +#~ msgid "FILENAME is given, then that is used as the history file else" +#~ msgstr "переменной $HISTFILE приÑвоено значение, иÑпользуетÑÑ Ð¾Ð½Ð¾, иначе" + +#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." +#~ msgstr "иÑпользуетÑÑ ~/.bash_history. ЕÑли задан параметр -s, ÐРГУМЕÐТЫ," + +#~ msgid "If the -s option is supplied, the non-option ARGs are appended to" +#~ msgstr "ÑвлÑющиеÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸, добавлÑÑŽÑ‚ÑÑ Ðº иÑтории как один Ñлемент." + +#~ msgid "the history list as a single entry. The -p option means to perform" +#~ msgstr "Параметр -p выполнÑет развёртывание каждого ÐРГУМЕÐТРи выводит" + +#~ msgid "" +#~ "history expansion on each ARG and display the result, without storing" +#~ msgstr "результат, не ÑохранÑÑ Ð½Ð¸Ñ‡ÐµÐ³Ð¾ в ÑпиÑке иÑтории команд." + +#~ msgid "anything in the history list." +#~ msgstr " " + +#~ msgid "Lists the active jobs. The -l option lists process id's in addition" +#~ msgstr "Выводит ÑпиÑок активных задач. Параметр -l выводит, кроме того," + +#~ msgid "to the normal information; the -p option lists process id's only." +#~ msgstr "идентификаторы процеÑÑов: параметр -p выодит только идентификаторы." + +#~ msgid "" +#~ "If -n is given, only processes that have changed status since the last" +#~ msgstr "ЕÑли задано -n, выводÑÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ процеÑÑÑ‹, ÑÑ‚Ð°Ñ‚ÑƒÑ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… изменилÑÑ" + +#~ msgid "" +#~ "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "" +#~ "Ñо времени поÑледнего уведомлениÑ. ЕÑли задан номер задачи, выводитÑÑ" + +#~ msgid "-r and -s options restrict output to running and stopped jobs only," +#~ msgstr "только она. Параметры -r и -s выводит только работающие или только" + +#~ msgid "respectively. Without options, the status of all active jobs is" +#~ msgstr "" +#~ "оÑтановленные задачи ÑоответÑтвенно. Без параметров выодитÑÑ ÑтатуÑ" + +#~ msgid "" +#~ "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "" +#~ "вÑех активных задач. ЕÑли задано -x, в КОМÐÐДЕ вмеÑто вÑех ÐРГУМЕÐТОВ" + +#~ msgid "" +#~ "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgstr "(номеров задач) подÑтавлÑетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ лидера ÑоответÑтвующей" + +#~ msgid "process group leader." +#~ msgstr "группы процеÑÑов, и КОМÐÐДРвыполнÑетÑÑ." + +#~ msgid "Removes each JOBSPEC argument from the table of active jobs." +#~ msgstr "" +#~ "УдалÑет вÑе задачи, заданные ÑпецификациÑми в аргументе, из таблицы задач." + +#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" +#~ msgstr "" +#~ "ПоÑылает указанным процеÑÑам (заданным PID или Ñпецификацией) Ñигнал" + +#~ msgid "" +#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgstr "SIGSPEC. ЕÑли отÑутÑтвует SIGSPEC, поÑылаетÑÑ SIGTERM. Ðргументом" + +#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" +#~ msgstr "" +#~ "параметра `-l' Ñлужит ÑпиÑок Ñигналов. ЕÑли он приÑутÑтвует, выводÑÑ‚ÑÑ" + +#~ msgid "be signal numbers for which names should be listed. Kill is a shell" +#~ msgstr "" +#~ "Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов Ñ Ñтими номерами. Kill ÑвлÑетÑÑ Ð²Ñтроенной командой" + +#~ msgid "builtin for two reasons: it allows job IDs to be used instead of" +#~ msgstr "оболочки по двум причинам: она позволÑет иÑпользовать номера задач," + +#~ msgid "process IDs, and, if you have reached the limit on processes that" +#~ msgstr "а не процеÑÑов, и еÑли вы иÑчерпаете лимит Ñозданных процеÑÑов," + +#~ msgid "" +#~ "you can create, you don't have to start a process to kill another one." +#~ msgstr "вы не Ñможете запуÑтить новый процеÑÑ, уничтожающий один из Ñтарых." + +#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" +#~ msgstr "Каждый аргумент раÑÑматриваетÑÑ ÐºÐ°Ðº арифметичеÑкое выражение." + +#~ msgid "is done in long integers with no check for overflow, though division" +#~ msgstr "" +#~ "ВычиÑление производитÑÑ Ð½Ð°Ð´ длинными целыми без ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ," + +#~ msgid "by 0 is trapped and flagged as an error. The following list of" +#~ msgstr "Ñ…Ð¾Ñ‚Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ðµ на ноль отÑлеживаетÑÑ Ð¸ ÑчитаетÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹. Операции в" + +#~ msgid "operators is grouped into levels of equal-precedence operators." +#~ msgstr "Ñледующем ÑпиÑке Ñгруппированы по уровнÑм равного приоритета." + +#~ msgid "The levels are listed in order of decreasing precedence." +#~ msgstr "Уровни перечиÑлены в порÑдке ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð°." + +#~ msgid "\t-, +\t\tunary minus, plus" +#~ msgstr "\t-, +\t\tунарный минуÑ, унарный плюÑ" + +#~ msgid "\t!, ~\t\tlogical and bitwise negation" +#~ msgstr "\t!, ~\t\tлогичеÑкое и побитовое отрицание" + +#~ msgid "\t*, /, %\t\tmultiplication, division, remainder" +#~ msgstr "\t*, /, %\t\tумножение, деление, взÑтие оÑтатка" + +#~ msgid "\t+, -\t\taddition, subtraction" +#~ msgstr "\t+, -\t\tÑложение, вычитание" + +#~ msgid "\t<<, >>\t\tleft and right bitwise shifts" +#~ msgstr "\t<<, >>\t\tлевый и правый побитовый Ñдвиг" + +#~ msgid "\t<=, >=, <, >\tcomparison" +#~ msgstr "\t<=, >=, <, >\tÑравнение" + +#~ msgid "\t==, !=\t\tequality, inequality" +#~ msgstr "\t==, !=\t\tравенÑтво, неравенÑтво" + +#~ msgid "\t&\t\tbitwise AND" +#~ msgstr "\t&\t\tпобитовое И" + +#~ msgid "\t^\t\tbitwise XOR" +#~ msgstr "\t^\t\tпобитовое ИСКЛЮЧÐЮЩЕЕ ИЛИ" + +#~ msgid "\t|\t\tbitwise OR" +#~ msgstr "\t|\t\tпобитовое ИЛИ" + +#~ msgid "\t&&\t\tlogical AND" +#~ msgstr "\t&&\t\tлогичеÑкое И" + +#~ msgid "\t||\t\tlogical OR" +#~ msgstr "\t||\t\tлогичеÑкое ИЛИ" + +#~ msgid "\texpr ? expr : expr" +#~ msgstr "\texpt ? expr : expr" + +#~ msgid "\t\t\tconditional expression" +#~ msgstr "\t\t\tуÑловное выражение" + +#~ msgid "\t=, *=, /=, %=," +#~ msgstr "\t=, *=, /=, %=," + +#~ msgid "\t+=, -=, <<=, >>=," +#~ msgstr "\t+=, -=, <<=, >>=," + +#~ msgid "\t&=, ^=, |=\tassignment" +#~ msgstr "\t&=, ^=, |=\tприÑваивание" + +#~ msgid "is replaced by its value (coerced to a long integer) within" +#~ msgstr "переменной заменÑетÑÑ ÐµÑ‘ значение (преобразованным в длинное" + +#~ msgid "an expression. The variable need not have its integer attribute" +#~ msgstr "целое). Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² выражении Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ обÑзана иметь" + +#~ msgid "turned on to be used in an expression." +#~ msgstr "уÑтановленный целочиÑленный атрибут." + +#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" +#~ msgstr "Операции обрабатываютÑÑ Ð² порÑдке приоритета. ÐŸÐ¾Ð´Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²" + +#~ msgid "parentheses are evaluated first and may override the precedence" +#~ msgstr "Ñкобках вычиÑлÑÑŽÑ‚ÑÑ Ð²Ð½Ð°Ñ‡Ð°Ð»Ðµ, что может не ÑоответÑтвовать правилам" + +#~ msgid "rules above." +#~ msgstr "приоритета." + +#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned" +#~ msgstr "ЕÑли вычиÑление поÑледнего аргумента дало 0, let возвращает 1," + +#~ msgid "otherwise." +#~ msgstr "иначе 0." + +#~ msgid "One line is read from the standard input, and the first word is" +#~ msgstr "Со Ñтандартного ввода ÑчитываетÑÑ Ð¾Ð´Ð½Ð° Ñтрока, первое её Ñлово" + +#~ msgid "" +#~ "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgstr "ÑтановитÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸ÐµÐ¼ первого ИМЕÐИ, второе -- второго ИМЕÐИ и Ñ‚.д." + +#~ msgid "" +#~ "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "" +#~ "ПоÑледнему ИМЕÐИ приÑваиваетÑÑ Ð²ÐµÑÑŒ оÑтаток Ñтроки. РазделителÑми Ñлов" + +#~ msgid "found in $IFS are recognized as word delimiters. The return code is" +#~ msgstr "ÑчитаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñимволы, входÑщие в $IFS. Код возврата равен нулю," + +#~ msgid "" +#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgstr "за иÑключением ÑлучаÑ, еÑли вÑтретилÑÑ ÐºÐ¾Ð½ÐµÑ† файла. ЕÑли ИМЕÐРне" + +#~ msgid "" +#~ "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "" +#~ "заданы, Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока помещаетÑÑ Ð² переменную REPLY. ЕÑли задан" + +#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" +#~ msgstr "" +#~ "параметр -r, Ñто означает `Ñырой' ввод, Ñ‚.е. Ñимвол \\ не Ñкранирует" + +#~ msgid "the `-p' option is supplied, the string supplied as an argument is" +#~ msgstr "" +#~ "Ñимволы. ЕÑли задано `-p', перед чтением на вывод в качеÑтве аргумента" + +#~ msgid "" +#~ "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "" +#~ "подаётÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ñтрока (без завершающего Ñимвола перевода Ñтроки)." + +#~ msgid "" +#~ "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgstr "ЕÑли задано -a, прочитанные Ñлова ÑтановÑÑ‚ÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñми Ñлементов" + +#~ msgid "starting at zero. If -e is supplied and the shell is interactive," +#~ msgstr "" +#~ "МÐССИВÐ, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð³Ð¾. ЕÑли задано -c и оболочка интерактивна," + +#~ msgid "readline is used to obtain the line." +#~ msgstr "чтобы получить Ñтроку иÑпользуетÑÑ readline." + +#~ msgid "" +#~ "Causes a function to exit with the return value specified by N. If N" +#~ msgstr "ЗаÑтавлÑет функцию завершить работу Ñ ÐºÐ¾Ð´Ð¾Ð¼ возврата, заданным N." + +#~ msgid "is omitted, the return status is that of the last command." +#~ msgstr "ЕÑли N опущено, им ÑтановитÑÑ ÐºÐ¾Ð´ возврата поÑледней команды." + +#~ msgid " -a Mark variables which are modified or created for export." +#~ msgstr "" +#~ " -a ЭкÑпортировать переменные, которые изменÑлиÑÑŒ или ÑоздавалиÑÑŒ." + +#~ msgid " -b Notify of job termination immediately." +#~ msgstr " -b Ðемедленно выводить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ завершении задач." + +#~ msgid " -e Exit immediately if a command exits with a non-zero status." +#~ msgstr " -e Завершить работу, еÑли команд возврата команды не равен 0." + +#~ msgid " -f Disable file name generation (globbing)." +#~ msgstr " -f Прекратить раÑширение имён файлов (globbing)." + +#~ msgid " -h Remember the location of commands as they are looked up." +#~ msgstr " -h Запоминать раÑположение обработанных команд." + +#~ msgid "" +#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgstr " -i Сделать оболочку \"интерактивной\". Интерактивные оболочки" + +#~ msgid " always read `~/.bashrc' on startup." +#~ msgstr " читают `~/.bashrc' при каждом запуÑке." + +#~ msgid " -k All assignment arguments are placed in the environment for a" +#~ msgstr " -k Ð’ Ñреду команды помещаютÑÑ Ð²Ñе аргументы приÑваиваниÑ," + +#~ msgid " command, not just those that precede the command name." +#~ msgstr " а не только предшеÑтвующие её имени." + +#~ msgid " -m Job control is enabled." +#~ msgstr " -m Включить управление задачами." + +#~ msgid " -n Read commands but do not execute them." +#~ msgstr " -n Считывать команды, но не выполнÑть их." + +#~ msgid " -o option-name" +#~ msgstr " -o имÑ_параметра" + +#~ msgid " Set the variable corresponding to option-name:" +#~ msgstr " УÑтановить режим в ÑоответÑтвии Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ именем:" + +#~ msgid " allexport same as -a" +#~ msgstr " allexport то же, что -a" + +#~ msgid " braceexpand same as -B" +#~ msgstr " braceexpand то же, что -B" + +#~ msgid " emacs use an emacs-style line editing interface" +#~ msgstr "" +#~ " emacs иÑпользовать Ñтиль Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтрок emacs" + +#~ msgid " errexit same as -e" +#~ msgstr " errexit то же, что -e" + +#~ msgid " hashall same as -h" +#~ msgstr " hashall то же, что -h" + +#~ msgid " histexpand same as -H" +#~ msgstr " histexpand то же, что -H" + +#~ msgid " ignoreeof the shell will not exit upon reading EOF" +#~ msgstr " ignoreeof при чтении EOF оболочка не завершит работу" + +#~ msgid " interactive-comments" +#~ msgstr " interactive-comments" + +#~ msgid "" +#~ " allow comments to appear in interactive commands" +#~ msgstr "" +#~ " допуÑкает комментарии в интерактивных командах" + +#~ msgid " keyword same as -k" +#~ msgstr " keyword то же, что -k" + +#~ msgid " monitor same as -m" +#~ msgstr " monitor то же, что -m" + +#~ msgid " noclobber same as -C" +#~ msgstr " noclobber то же, что -C" + +#~ msgid " noexec same as -n" +#~ msgstr " noexec то же, что -n" + +#~ msgid " noglob same as -f" +#~ msgstr " noglob то же, что -f" + +#~ msgid " notify save as -b" +#~ msgstr " notify то же, что -b" + +#~ msgid " nounset same as -u" +#~ msgstr " nounset то же, что -u" + +#~ msgid " onecmd same as -t" +#~ msgstr " onecmd то же, что -t" + +#~ msgid " physical same as -P" +#~ msgstr " physical то же, что -P" + +#~ msgid "" +#~ " posix change the behavior of bash where the default" +#~ msgstr " posix привеÑти поведение bash, по умолчанию не" + +#~ msgid "" +#~ " operation differs from the 1003.2 standard to" +#~ msgstr " ÑоответÑтвующее Ñтандарту 1003.2, в" + +#~ msgid " match the standard" +#~ msgstr " ÑоответÑтвие Ñ Ð½Ð¸Ð¼" + +#~ msgid " privileged same as -p" +#~ msgstr " privileged то же, что -p" + +#~ msgid " verbose same as -v" +#~ msgstr " verbose то же, что -v" + +#~ msgid " vi use a vi-style line editing interface" +#~ msgstr " vi иÑпользовать Ñтиль Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтрок vi" + +#~ msgid " xtrace same as -x" +#~ msgstr " xtrace то же, что -x" + +#~ msgid "" +#~ " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr "" +#~ " -p ЕÑли реальный и Ñффективный uid не Ñовпадают, включаетÑÑ Ð²Ñегда." + +#~ msgid " Disables processing of the $ENV file and importing of shell" +#~ msgstr " Отключает обработку файла $ENV и импорт функций оболочки." + +#~ msgid "" +#~ " functions. Turning this option off causes the effective uid and" +#~ msgstr "" +#~ " При выключении Ñтого параметра Ñффективные uid и gid ÑтановÑÑ‚ÑÑ" + +#~ msgid " gid to be set to the real uid and gid." +#~ msgstr " равными реальным." + +#~ msgid " -t Exit after reading and executing one command." +#~ msgstr " -t Завершить работу поÑле Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ команды." + +#~ msgid " -u Treat unset variables as an error when substituting." +#~ msgstr "" +#~ " -u При подÑтановке Ñчитать не уÑтановленные переменные ошибками." + +#~ msgid " -v Print shell input lines as they are read." +#~ msgstr " -v Выводить прочитанные Ñтроки входного текÑта оболочки." + +#~ msgid " -x Print commands and their arguments as they are executed." +#~ msgstr " -x Выводить по мере иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ и их аргументы." + +#~ msgid " -B the shell will perform brace expansion" +#~ msgstr " -B оболочка будет производить подÑтановку Ñкобок" + +#~ msgid " -H Enable ! style history substitution. This flag is on" +#~ msgstr " -H Включить !-Ñтиль подÑтановки иÑтории. Включено" + +#~ msgid " by default." +#~ msgstr " по умолчанию." + +#~ msgid " -C If set, disallow existing regular files to be overwritten" +#~ msgstr " -C ЕÑли уÑтановлен, запретить перезапиÑÑŒ ÑущеÑтвующих" + +#~ msgid " by redirection of output." +#~ msgstr " обычных файлов при перенаправлении вывода." + +#~ msgid " -P If set, do not follow symbolic links when executing commands" +#~ msgstr "" +#~ " -P Ðе Ñледовать ÑимволичеÑким ÑÑылкам при выполнении таких команд," + +#~ msgid " such as cd which change the current directory." +#~ msgstr " как cd, Ñ‚.е. изменÑющих текущий каталог." + +#~ msgid "Using + rather than - causes these flags to be turned off. The" +#~ msgstr "ИÑпользование + вмеÑто - отключает флаг. Эти флаги могут также" + +#~ msgid "flags can also be used upon invocation of the shell. The current" +#~ msgstr "" +#~ "иÑпользоватьÑÑ Ð¿Ñ€Ð¸ запуÑке оболочки. Текущий набор флагов ÑодержитÑÑ" + +#~ msgid "" +#~ "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgstr "в $-. ОÑтальные n аргументов -- позиционные параметры, и им, по" + +#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" +#~ msgstr "порÑдку, приÑваиваютÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ $1, $2, ..., $n. ЕÑли аргументы" + +#~ msgid "ARGs are given, all shell variables are printed." +#~ msgstr "не заданы, выводÑÑ‚ÑÑ Ð²Ñе переменные оболочки." + +#~ msgid "For each NAME, remove the corresponding variable or function. Given" +#~ msgstr "Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ удалÑет ÑоответÑтвующую переменную или функцию." + +#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," +#~ msgstr "" +#~ "ЕÑли задано -v, unset влиÑет только на переменные, еÑли -f -- только" + +#~ msgid "unset will only act on functions. With neither flag, unset first" +#~ msgstr "на функции. Без флагов unset в первую очередь пытаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ" + +#~ msgid "tries to unset a variable, and if that fails, then tries to unset a" +#~ msgstr "переменную, еÑли Ñто не удаётÑÑ -- функцию. Ðекоторые переменные" + +#~ msgid "" +#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgstr "(такие как PATH и IFS) не могут быть удалены. См." + +#~ msgid "see readonly." +#~ msgstr "также readonly." + +#~ msgid "NAMEs are marked for automatic export to the environment of" +#~ msgstr "ИМЕÐРавтоматичеÑки ÑкÑпортируютÑÑ Ð² Ñреду выполнÑемых" + +#~ msgid "subsequently executed commands. If the -f option is given," +#~ msgstr "впоÑледÑтвии команд. ЕÑли задан параметр -f, ИМЕÐÐ" + +#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" +#~ msgstr "обозначают функции. ЕÑли ИМЕÐа не заданы, или еÑли задано -p," + +#~ msgid "is given, a list of all names that are exported in this shell is" +#~ msgstr "выводитÑÑ ÑпиÑок вÑех имён, ÑкÑпортированных в Ñту оболочку." + +#~ msgid "printed. An argument of `-n' says to remove the export property" +#~ msgstr "Ðргумент -n указывает убрать заданные имена из ÑпиÑка" + +#~ msgid "from subsequent NAMEs. An argument of `--' disables further option" +#~ msgstr "ÑкÑпортируемых. Ðргумент -- отключает дальнейшую обработку" + +#~ msgid "processing." +#~ msgstr "параметров." + +#~ msgid "" +#~ "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "" +#~ "Заданные ИМЕÐРпомечаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ, и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтих ИМÐРне" + +#~ msgid "not be changed by subsequent assignment. If the -f option is given," +#~ msgstr "" +#~ "могут изменÑтьÑÑ Ð² поÑледующих приÑваиваниÑÑ…. ЕÑли задан параметр -f," + +#~ msgid "then functions corresponding to the NAMEs are so marked. If no" +#~ msgstr "так помечаютÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ ÑоответÑтвующими ИМЕÐÐМИ. ЕÑли аргументы" + +#~ msgid "" +#~ "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgstr "не заданы, или еÑли задано `-p', выводитÑÑ ÑпиÑок имён только длÑ" + +#~ msgid "" +#~ "is printed. An argument of `-n' says to remove the readonly property" +#~ msgstr "чтениÑ. Ðргумент `-n' указывает ÑнÑть ÑвойÑтво `только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ'" + +#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" +#~ msgstr "Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ñ… ИМÐÐ. Параметр `-a' заÑтавлÑет раÑÑматривать каждое ИМЯ" + +#~ msgid "an array variable. An argument of `--' disables further option" +#~ msgstr "как маÑÑив. Ðргумент `--' прекращает дальнейшую обработку" + +#~ msgid "" +#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +#~ msgstr "" +#~ "Позиционные параметры Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ $N+1 переобозначаютÑÑ ÐºÐ°Ðº $1,... ЕÑли" + +#~ msgid "not given, it is assumed to be 1." +#~ msgstr "N не задано, оно предполагаетÑÑ Ñ€Ð°Ð²Ð½Ñ‹Ð¼ 1." + +#~ msgid "Read and execute commands from FILENAME and return. The pathnames" +#~ msgstr "Читает и выполнÑет команды из файла Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ именем и завершает" + +#~ msgid "in $PATH are used to find the directory containing FILENAME." +#~ msgstr "работу. Файл ищетÑÑ Ð² каталогах, перечиÑленных в $PATH." + +#~ msgid "Suspend the execution of this shell until it receives a SIGCONT" +#~ msgstr "ПриоÑтанавливает работу оболочки до Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñигнала" + +#~ msgid "signal. The `-f' if specified says not to complain about this" +#~ msgstr "SIGCONT. `-f', еÑли задан, указывает приоÑтановить работу, даже" + +#~ msgid "being a login shell if it is; just suspend anyway." +#~ msgstr "еÑли Ñто оболочка ÑеÑÑии" + +#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" +#~ msgstr "Завершает работу Ñо ÑтатуÑом 0 (иÑтина) или 1 (ложь) в завиÑимоÑти" + +#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" +#~ msgstr "от Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð’Ð«Ð ÐЖЕÐИЯ. Ð’Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть унарными или бинарными." + +#~ msgid "expressions are often used to examine the status of a file. There" +#~ msgstr "Унарные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‡Ð°Ñто иÑпользуютÑÑ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ ÑоÑтоÑÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°." + +#~ msgid "are string operators as well, and numeric comparison operators." +#~ msgstr "ДопуÑтимы операции как Ñтрокового, так и чиÑленного ÑравнениÑ." + +#~ msgid "File operators:" +#~ msgstr "Файловые операции:" + +#~ msgid " -b FILE True if file is block special." +#~ msgstr " -b ФÐЙЛ ИÑтина, еÑли файл -- Ñпециальный блочный файл." + +#~ msgid " -c FILE True if file is character special." +#~ msgstr "" +#~ " -c ФÐЙл ИÑтина, еÑли файл -- Ñпециальный Ñимвольный файл." + +#~ msgid " -d FILE True if file is a directory." +#~ msgstr " -d ФÐЙЛ ИÑтина, еÑли файл -- каталог." + +#~ msgid " -e FILE True if file exists." +#~ msgstr " -e ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует." + +#~ msgid " -f FILE True if file exists and is a regular file." +#~ msgstr "" +#~ " -f ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ файлом." + +#~ msgid " -g FILE True if file is set-group-id." +#~ msgstr " -g ФÐЙЛ ИÑтина, еÑли у файла уÑтановлен атрибут SGID." + +#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." +#~ msgstr "" +#~ " -h ФÐЙЛ ИÑтина, еÑли файл -- ÑимволичеÑÐºÐ°Ñ ÑÑылка. ИÑпользуйте " +#~ "\"-L\"." + +#~ msgid " -L FILE True if file is a symbolic link." +#~ msgstr " -L ФÐЙЛ ИÑтина, еÑли файл -- ÑимволичеÑÐºÐ°Ñ ÑÑылка." + +#~ msgid " -k FILE True if file has its \"sticky\" bit set." +#~ msgstr "" +#~ " -k ФÐЙЛ ИÑтина, еÑли у файла уÑтанолвен \"бит привÑзчивоÑти\"." + +#~ msgid " -p FILE True if file is a named pipe." +#~ msgstr " -p ФÐЙЛ ИÑтина, еÑли файл -- именованный канал." + +#~ msgid " -r FILE True if file is readable by you." +#~ msgstr " -r ФÐЙЛ ИÑтина, еÑли файл доÑтупен вам Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ." + +#~ msgid " -s FILE True if file exists and is not empty." +#~ msgstr " -s ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и не пуÑÑ‚." + +#~ msgid " -S FILE True if file is a socket." +#~ msgstr " -S ФÐЙЛ ИÑтина, еÑли файл -- Ñокет." + +#~ msgid " -t FD True if FD is opened on a terminal." +#~ msgstr "" +#~ " -t FD ИÑтина, еÑли файл Ñ Ð´ÐµÑкриптором FD ÑвÑзан Ñ " +#~ "терминалом." + +#~ msgid " -u FILE True if the file is set-user-id." +#~ msgstr " -u ФÐЙЛ ИÑтина, еÑли у файла уÑтановлен атрибут SUID." + +#~ msgid " -w FILE True if the file is writable by you." +#~ msgstr " -w ФÐЙЛ ИÑтина, еÑли файл доÑтупен вам Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи" + +#~ msgid " -x FILE True if the file is executable by you." +#~ msgstr " -x ФÐЙЛ ИÑтина, еÑли файл доÑтупен вам Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ." + +#~ msgid " -O FILE True if the file is effectively owned by you." +#~ msgstr " -O ФÐЙЛ ИÑтина, еÑли вы -- Ñффективный владелец файла." + +#~ msgid "" +#~ " -G FILE True if the file is effectively owned by your group." +#~ msgstr "" +#~ " -G ФÐЙЛ ИÑтина, еÑли ваша группа -- ÑÑ„Ñ„ÐµÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° файла." + +#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" +#~ msgstr "" +#~ " ФÐЙЛ1 -nt ФÐЙЛ2 ИÑтина, еÑли файл1 более новый (по дате поÑледнего" + +#~ msgid " modification date) file2." +#~ msgstr " изменениÑ), чем файл2." + +#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2." +#~ msgstr " ФÐЙЛ1 -ot ФÐЙЛ2 ИÑтина, еÑли файл1 более Ñтарый, чем файл2." + +#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2." +#~ msgstr " ФÐЙЛ1 -ef ФÐЙЛ2 ИÑтина, еÑли файл1 -- жёÑÑ‚ÐºÐ°Ñ ÑÑылка на файл2." + +#~ msgid "String operators:" +#~ msgstr "Строковые операции:" + +#~ msgid " -z STRING True if string is empty." +#~ msgstr " -z СТРОКРИÑтина, еÑли Ñтрока пуÑта." + +#~ msgid " -n STRING" +#~ msgstr " -n СТРОКÐ" + +#~ msgid " STRING True if string is not empty." +#~ msgstr " СТРОКРИÑтина, еÑли Ñтркоа не пуÑта." + +#~ msgid " STRING1 = STRING2" +#~ msgstr " СТРОКÐ1 = СТРОКÐ2" + +#~ msgid " True if the strings are equal." +#~ msgstr " ИÑтина, еÑли Ñтроки равны." + +#~ msgid " STRING1 != STRING2" +#~ msgstr " СТРОКÐ1 != СТРОКÐ2" + +#~ msgid " True if the strings are not equal." +#~ msgstr " ИÑтина, еÑли Ñтроки не равны." + +#~ msgid " STRING1 < STRING2" +#~ msgstr " СТРОКÐ1 < СТРОКÐ2" + +#~ msgid "" +#~ " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr "" +#~ " ИÑтина, еÑли СТРОКÐ1 лекÑикографичеÑки Ñтоит раньше " +#~ "СТРОКИ2" + +#~ msgid " STRING1 > STRING2" +#~ msgstr " СТРОКÐ1 > СТРОКÐ2" + +#~ msgid "" +#~ " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr "" +#~ " ИÑтина, еÑли СТРОКÐ1 лекÑикографичеÑки Ñтоит позже " +#~ "СТРОКИ2" + +#~ msgid "Other operators:" +#~ msgstr "Прочие операции:" + +#~ msgid " ! EXPR True if expr is false." +#~ msgstr " ! ВЫРÐЖЕÐИЕ ИÑтина, еÑли выражение ложно." + +#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true." +#~ msgstr " ВЫР1 -a ВЫР2 ИÑтина, еÑли иÑтинны оба выражениÑ." + +#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true." +#~ msgstr " ВЫР1 -o ВЫР2 ИÑтина, еÑли иÑтинно Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно из выражений." + +#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne," +#~ msgstr " арг1 ОП арг2 ÐрифметичеÑÐºÐ°Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ°. ОП -- один из -eq, -ne," + +#~ msgid " -lt, -le, -gt, or -ge." +#~ msgstr " -lt, -le, -gt или -ge." + +#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," +#~ msgstr "" +#~ "Бинарные арифметичеÑкие операции возвращают иÑтину, еÑли ÐРГ1 равен," + +#~ msgid "" +#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgstr "не равен, меньше, меньше или равен, больше или больше или равен" + +#~ msgid "than ARG2." +#~ msgstr "ÐРГ2." + +#~ msgid "This is a synonym for the \"test\" builtin, but the last" +#~ msgstr "Это Ñиноним вÑтроенной команды \"test\", но поÑледним аргументом" + +#~ msgid "argument must be a literal `]', to match the opening `['." +#~ msgstr "должен быть литерал ']'. ÑоответÑтвующий открывающей `['." + +#~ msgid "Print the accumulated user and system times for processes run from" +#~ msgstr "ВывеÑти пользовательÑкое и ÑиÑтемное Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ процеÑÑов," + +#~ msgid "the shell." +#~ msgstr "запущенных из оболочки." + +#~ msgid "The command ARG is to be read and executed when the shell receives" +#~ msgstr "" +#~ "Команда ÐРГ должна быть прочитана и выполнена при получении оболочкой" + +#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" +#~ msgstr "" +#~ "указанного(ых) Ñигнала(ов). ЕÑли ÐРГ не задан, вÑе указанные Ñигналы" + +#~ msgid "reset to their original values. If ARG is the null string each" +#~ msgstr "" +#~ "обрабатываютÑÑ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ°Ð¼Ð¸ по умолчанию. ЕÑли ÐРГ -- пуÑÑ‚Ð°Ñ Ñтрока," + +#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." +#~ msgstr "" +#~ "вÑе указанные Ñигналы будут игнорироватьÑÑ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¾Ð¹ и вызываемыми ей" + +#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" +#~ msgstr "командами. ЕÑли задан Ñигнал EXIT (0), команда ÐРГ выполнÑетÑÑ Ð¿Ñ€Ð¸" + +#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" +#~ msgstr "" +#~ "выходе из оболочки, еÑли DEBUG, ÐРГ выполнÑетÑÑ Ð¿Ñ€Ð¸ выполнении каждой" + +#~ msgid "command. If ARG is `-p' then the trap commands associated with" +#~ msgstr "команды. ЕÑли ÐРГ -- `-p', выводÑÑ‚ÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹, ÑвÑзанные Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸" + +#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" +#~ msgstr "Ñигналами. ЕÑли аргументы не заданы или еÑли задано только `-p'," + +#~ msgid "only `-p' is given, trap prints the list of commands associated with" +#~ msgstr "trap выводит ÑпиÑок команд, ÑвÑзанных Ñо вÑеми Ñигналами. Сигнал" + +#~ msgid "" +#~ "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgstr "задаётÑÑ Ð»Ð¸Ð±Ð¾ Ñвоим именем в , либо номером. `trap -l'" + +#~ msgid "" +#~ "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgstr "выводит ÑпиÑок имён Ñигналов и ÑоответÑтвующих им номеров." + +#~ msgid "corresponding numbers. Note that a signal can be sent to the shell" +#~ msgstr "Заметьте, что оболочке можно поÑлать Ñигнал командой" + +#~ msgid "with \"kill -signal $$\"." +#~ msgstr "\"kill -signal $$\"." + +#~ msgid "For each NAME, indicate how it would be interpreted if used as a" +#~ msgstr "Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ определÑет, как оно будет обрабатыватьÑÑ" + +#~ msgid "If the -t option is used, returns a single word which is one of" +#~ msgstr "ЕÑли задан параметр -t, возвращает Ñлово -- `alias', `keyword'," + +#~ msgid "" +#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgstr "`function', `builtin', `file' или `' -- еÑли, ÑоответÑтвенно, ИМЯ" + +#~ msgid "" +#~ "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgstr "ÑвлÑетÑÑ Ð¿Ñевдокомандой, зарезервированным Ñловом, функцией, или" + +#~ msgid "or unfound, respectively." +#~ msgstr "вÑтроенной командой оболочки, диÑковым файлом или не найдено." + +#~ msgid "If the -p flag is used, either returns the name of the disk file" +#~ msgstr "" +#~ "При иÑпользовании флага -p либо возвращаетÑÑ Ð¸Ð¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñемого диÑкового " +#~ "файла," + +#~ msgid "that would be executed, or nothing if -t would not return `file'." +#~ msgstr "либо ничего, еÑли -t вернуло бы значение, отличное от `file'" + +#~ msgid "If the -a flag is used, displays all of the places that contain an" +#~ msgstr "" +#~ "При иÑпользовании флага -a выводитÑÑ Ñ€Ð°Ñположение вÑех иÑполнÑемых файлов" + +#~ msgid "" +#~ "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "" +#~ "Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем. ЕÑли одновременно не иÑпользуетÑÑ Ñ„Ð»Ð°Ð³ -p и только" + +#~ msgid "only if the -p flag is not also used." +#~ msgstr "тогда, выводÑÑ‚ÑÑ Ñ‚Ð°ÐºÐ¶Ðµ пÑевдокоманды и функции." + +#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t," +#~ msgstr "ВмеÑто -a, -p и -t можно иÑпользовать, ÑоответÑтвенно, -all," + +#~ msgid "respectively." +#~ msgstr "-path и -type." + +#~ msgid "Ulimit provides control over the resources available to processes" +#~ msgstr "ulimit позволÑет управлÑть реÑурÑами, доÑтупными запущенным" + +#~ msgid "started by the shell, on systems that allow such control. If an" +#~ msgstr "оболочкой процеÑÑам (на ÑиÑтемах, допуÑкающих такое управление)." + +#~ msgid "option is given, it is interpreted as follows:" +#~ msgstr "Параметры интерпретируютÑÑ Ñледующим образом:" + +#~ msgid " -S\tuse the `soft' resource limit" +#~ msgstr " -S\tиÑпользовать `мÑгкое' ограничение реÑурÑов" + +#~ msgid " -H\tuse the `hard' resource limit" +#~ msgstr " -H\tиÑпользовать `жёÑткое' ограничение реÑурÑов" + +#~ msgid " -a\tall current limits are reported" +#~ msgstr " -a\tвывеÑти информацию о вÑех текущих ограничениÑÑ…" + +#~ msgid " -c\tthe maximum size of core files created" +#~ msgstr " -c\tмакÑимальный размер Ñоздаваемых файлов Ñлепков памÑти" + +#~ msgid " -d\tthe maximum size of a process's data segment" +#~ msgstr " -d\tмакÑимальный размер Ñегмента данных процеÑÑа" + +#~ msgid " -m\tthe maximum resident set size" +#~ msgstr " -m\tмакÑимальный размер резидентной чаÑти процеÑÑа" + +#~ msgid " -s\tthe maximum stack size" +#~ msgstr " -s\tмакÑимальный размер Ñтека" + +#~ msgid " -t\tthe maximum amount of cpu time in seconds" +#~ msgstr " -t\tмакÑимальное процеÑÑорное Ð²Ñ€ÐµÐ¼Ñ (в Ñекундах)" + +#~ msgid " -f\tthe maximum size of files created by the shell" +#~ msgstr " -f\tмакÑимальный размер Ñоздаваемых оболочкой файлов" + +#~ msgid " -p\tthe pipe buffer size" +#~ msgstr " -p\tразмер буфера конвейера" + +#~ msgid " -n\tthe maximum number of open file descriptors" +#~ msgstr " -n\tмакÑимальное количеÑтво открытых файловых декÑрипторов" + +#~ msgid " -u\tthe maximum number of user processes" +#~ msgstr " -u\tмакÑимальное чиÑло процеÑÑов одного пользователÑ" + +#~ msgid " -v\tthe size of virtual memory" +#~ msgstr " -v\tразмер виртуальной памÑти" + +#~ msgid "If LIMIT is given, it is the new value of the specified resource." +#~ msgstr "" +#~ "ЕÑли задано ОГРÐÐИЧЕÐИЕ, оно задёт новое значение Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ реÑурÑа." + +#~ msgid "Otherwise, the current value of the specified resource is printed." +#~ msgstr "" +#~ "Ð’ противном Ñлучае выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ реÑурÑа." + +#~ msgid "If no option is given, then -f is assumed. Values are in 1k" +#~ msgstr "ЕÑли параметры не заданы, предполагаетÑÑ, что задано -f. ЗначениÑ" + +#~ msgid "increments, except for -t, which is in seconds, -p, which is in" +#~ msgstr "" +#~ "измерÑÑŽÑ‚ÑÑ Ð² КБ, кроме -t, измерÑемого в Ñекундах, -p, единица измерениÑ" + +#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" +#~ msgstr "которого -- 512 байтов, и -u, задающего безразмерное чиÑло" + +#~ msgid "processes." +#~ msgstr "процеÑÑов." + +#~ msgid "" +#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "" +#~ "УÑтанавливает маÑку ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¼ файлов в РЕЖИМ. ЕÑли опущен" + +#~ msgid "" +#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "" +#~ "РЕЖИМ или задан параметр -S выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение маÑки. Параметр" + +#~ msgid "" +#~ "option makes the output symbolic; otherwise an octal number is output." +#~ msgstr "-S делает вывод ÑимволичеÑким, в противном Ñлучае иÑпользуетÑÑ" + +#~ msgid "If MODE begins with a digit, it is interpreted as an octal number," +#~ msgstr "" +#~ "воÑьмеричое чиÑло. ЕÑли РЕЖИм начинаетÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹, он интерпретируетÑÑ" + +#~ msgid "" +#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "" +#~ "как воÑьмеричное чиÑло, в противном Ñлучае как Ñтрока, Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÐµÐ¼Ð°Ñ chmod" +#~ "(1)." + +#~ msgid "" +#~ "Wait for the specified process and report its termination status. If" +#~ msgstr "" +#~ "Подождать Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ процеÑÑа и Ñообщить код завершениÑ. ЕÑли" + +#~ msgid "N is not given, all currently active child processes are waited for," +#~ msgstr "" +#~ "N не задано, ожидаетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ работы вÑех активных дочерних процеÑÑов" + +#~ msgid "and the return code is zero. N may be a process ID or a job" +#~ msgstr "и код возврата равен 0. N может быть идентификатором процеÑÑа" + +#~ msgid "specification; if a job spec is given, all processes in the job's" +#~ msgstr "" +#~ "или Ñпецификацией задачи, еÑли задана ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸, ожидаетÑÑ" + +#~ msgid "pipeline are waited for." +#~ msgstr "завершение работы вÑех процеÑÑов конвейера задачи." + +#~ msgid "and the return code is zero. N is a process ID; if it is not given," +#~ msgstr "" +#~ "и код возврата равен 0. N -- идентификатор процеÑÑа, еÑли он не задан," + +#~ msgid "all child processes of the shell are waited for." +#~ msgstr "ожидаетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ работы вÑех дочерних процеÑÑов оболочки." + +#~ msgid "The `for' loop executes a sequence of commands for each member in a" +#~ msgstr "Цикл `for' выполнÑет поÑледовательноÑть команд Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ члена" + +#~ msgid "" +#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "" +#~ "ÑпиÑка. ЕÑли отÑутÑтвует `in СЛОВР...;', предполагаетÑÑ, что задано" + +#~ msgid "" +#~ "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgstr "`in \"$@\"'. Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ из СЛОВ ИМЕÐИ приÑваиваетÑÑ ÐµÐ³Ð¾ значение" + +#~ msgid "the COMMANDS are executed." +#~ msgstr "и затем выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ." + +#~ msgid "The WORDS are expanded, generating a list of words. The" +#~ msgstr "СЛОВРразворачиваютÑÑ Ð¸ образуют ÑпиÑок Ñлов. Полученный ÑпиÑок" + +#~ msgid "set of expanded words is printed on the standard error, each" +#~ msgstr "" +#~ "выводитÑÑ Ð½Ð° Ñтандартный поток ошибок, каждому припиÑываетÑÑ Ñпереди" + +#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" +#~ msgstr "чиÑло. ЕÑли `in СЛОВÐ' отÑутÑтвует, предполагаетÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼" + +#~ msgid "is assumed. The PS3 prompt is then displayed and a line read" +#~ msgstr "" +#~ "`in \"$@\"'. Затем выводитÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ PS3 и Ñо Ñтандартного ввода" + +#~ msgid "from the standard input. If the line consists of the number" +#~ msgstr "ÑчитываетÑÑ Ñтрока. ЕÑли Ñтрока ÑоÑтоит из чиÑла, ÑоответÑтвующего" + +#~ msgid "corresponding to one of the displayed words, then NAME is set" +#~ msgstr "одному из выведенных Ñлов, ИМЯ уÑтанавливаетÑÑ Ñ€Ð°Ð²Ð½Ñ‹Ð¼ Ñтому" + +#~ msgid "to that word. If the line is empty, WORDS and the prompt are" +#~ msgstr "Ñлову. ЕÑли Ñтрока пуÑта, Ñлова и приглашение выводÑÑ‚ÑÑ ÐµÑ‰Ñ‘ раз." + +#~ msgid "redisplayed. If EOF is read, the command completes. Any other" +#~ msgstr "ЕÑли прочитан Ñимвол конца файла, выполнение команды завершаетÑÑ." + +#~ msgid "value read causes NAME to be set to null. The line read is saved" +#~ msgstr "любое другое значение уÑтанавливает ИМЯ в NULL. ÐŸÑ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока" + +#~ msgid "in the variable REPLY. COMMANDS are executed after each selection" +#~ msgstr "ÑохранÑетÑÑ Ð² переменной REPLY. ПоÑле каждого выбора выполнÑÑŽÑ‚ÑÑ" + +#~ msgid "until a break or return command is executed." +#~ msgstr "" +#~ "КОМÐÐДЫ до тех пор, пока не будет выполнена команда break или return." + +#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" +#~ msgstr "" +#~ "ВыполнÑет КОМÐÐДЫ в завиÑимоÑти от того, какому ШÐБЛОÐУ ÑоответÑтвует" + +#~ msgid "`|' is used to separate multiple patterns." +#~ msgstr "" +#~ "СЛОВО. Ð”Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½ÐµÑкольких допуÑтимых шаблонов иÑпользуетÑÑ `|'." + +#~ msgid "" +#~ "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "" +#~ "ВыполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ, заданные в if. ЕÑли код возврата нулевой, выполнÑÑŽÑ‚ÑÑ" + +#~ msgid "" +#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgstr "КОМÐÐДЫ then, иначе по очереди выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ elif, и еÑли код" + +#~ msgid "" +#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "" +#~ "возврата нулевой, выполнÑÑŽÑ‚ÑÑ ÑоответÑтвующие КОМÐÐДЫ then и выполнение" + +#~ msgid "" +#~ "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "" +#~ "команды if завершаетÑÑ. Ð’ противном Ñлучае выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ else," + +#~ msgid "" +#~ "are executed, if present. The exit status is the exit status of the last" +#~ msgstr "еÑли они приÑутÑтвуют. Код возврата равен коду возврата поÑледней" + +#~ msgid "command executed, or zero if no condition tested true." +#~ msgstr "" +#~ "выполненной команды, либо нулю, еÑли ни одно уÑловие не было иÑтинным." + +#~ msgid "Expand and execute COMMANDS as long as the final command in the" +#~ msgstr "" +#~ "Разворачивает и выполнÑет КОМÐÐДЫ до тех пор, пока поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°" + +#~ msgid "`while' COMMANDS has an exit status of zero." +#~ msgstr "Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ `while' не завершит работу Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ кодом возврата." + +#~ msgid "`until' COMMANDS has an exit status which is not zero." +#~ msgstr "Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ `until' не завершит работу Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ кодом возврата." + +#~ msgid "Create a simple command invoked by NAME which runs COMMANDS." +#~ msgstr "Создаёт проÑтую команду, вызываемую по ИМЕÐИ и выполнÑющую КОМÐÐДЫ." + +#~ msgid "Arguments on the command line along with NAME are passed to the" +#~ msgstr "Ðргументы командной Ñтроки, переданные ИМЕÐИ, передаютÑÑ Ð² функцию" + +#~ msgid "function as $0 .. $n." +#~ msgstr "как $0 .. $n." + +#~ msgid "Run a set of commands in a group. This is one way to redirect an" +#~ msgstr "ВыполнÑет набор команд. Это один из ÑпоÑобов оÑущеÑтвить" + +#~ msgid "entire set of commands." +#~ msgstr "перенаправление Ð´Ð»Ñ Ñ†ÐµÐ»Ð¾Ð³Ð¾ набора команд." + +#~ msgid "This is similar to the `fg' command. Resume a stopped or background" +#~ msgstr "" +#~ "Похоже на команду `fg'. Продолжает выполнение оÑтановленной или фоновой" + +#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" +#~ msgstr "" +#~ "задачи. ЕÑли заданы ЦИФРЫ, иÑпользÑетÑÑ Ð·Ð°Ð´Ð°Ñ‡Ð° Ñ Ñтим номером, а еÑли" + +#~ msgid "" +#~ "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgstr "СЛОВО -- задача, Ð¸Ð¼Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ начинаетÑÑ Ñ Ñтого Ñлова. Завершение" + +#~ msgid "job specification with a `&' places the job in the background." +#~ msgstr "Ñпецификации задачи Ñимволом & переводит задачу в фоновый режим." + +#~ msgid "BASH_VERSION The version numbers of this Bash." +#~ msgstr "BASH_VERSION Ðомер верÑии Bash." + +#~ msgid "CDPATH A colon separated list of directories to search" +#~ msgstr "CDPATH Разделённый запÑтыми ÑпиÑок каталогов, где ищетÑÑ" + +#~ msgid "\t\twhen the argument to `cd' is not found in the current" +#~ msgstr "\t\tаргумент команды `cd', еÑли он не найден в текущем" + +#~ msgid "" +#~ "HISTFILE The name of the file where your command history is stored." +#~ msgstr "HISTFILE Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°, где ÑохранÑетÑÑ Ð¸ÑÑ‚Ð¾Ñ€Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´." + +#~ msgid "HISTFILESIZE The maximum number of lines this file can contain." +#~ msgstr "HISTFILESIZE МакÑимальное чиÑло Ñтрок в Ñтом файле." + +#~ msgid "HISTSIZE The maximum number of history lines that a running" +#~ msgstr "HISTSIZE МакÑимальное чиÑло Ñтрок иÑтории команд, к которым" + +#~ msgid "\t\tshell can access." +#~ msgstr "\t\tимеет доÑтуп оболочка." + +#~ msgid "HOME The complete pathname to your login directory." +#~ msgstr "HOME Полный путь к домашнему каталогу." + +#~ msgid "" +#~ "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "" +#~ "HOSTTYPE Тип процеÑÑора, на котором работает Ñта верÑÐ¸Ñ Bash." + +#~ msgid "" +#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgstr "" +#~ "IGNOREEOF УправлÑет дейÑтвиÑми, Ñовершаемыми оболочкой при вводе" + +#~ msgid "\t\tcharacter as the sole input. If set, then the value" +#~ msgstr "\t\tÑимвола конца файла. ЕÑли уÑтановлена, её значение -- чиÑло" + +#~ msgid "\t\tof it is the number of EOF characters that can be seen" +#~ msgstr "\t\tÑимволов конца файла, которые могут быть вÑтречены подрÑд," + +#~ msgid "\t\tin a row on an empty line before the shell will exit" +#~ msgstr "\t\tв пуÑтой Ñтроке, поÑле чего оболочка завершит работу" + +#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." +#~ msgstr "" +#~ "\t\t(по умолчанию 10). ЕÑли не уÑтановлена, EOF обозначает конец ввода." + +#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." +#~ msgstr "" +#~ "MAILCHECK\tКак чаÑто, в Ñекундах, Bash проверÑет наличие новой почты." + +#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" +#~ msgstr "MAILPATH\tРазделённый запÑтыми ÑпиÑок имён файлов, где Bash" + +#~ msgid "\t\tfor new mail." +#~ msgstr "\t\tпроверÑет наличие новой почты." + +#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on." +#~ msgstr "OSTYPE\t\tВерÑÐ¸Ñ Unix, под которой работает Ñта верÑÐ¸Ñ Bash." + +#~ msgid "PATH A colon-separated list of directories to search when" +#~ msgstr "PATH Разделённый запÑтыми ÑпиÑок каталогов, где ищутÑÑ" + +#~ msgid "\t\tlooking for commands." +#~ msgstr "\t\tкоманды." + +#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each" +#~ msgstr "PROMPT_COMMAND Команда, выполнÑÐµÐ¼Ð°Ñ Ð¿ÐµÑ€ÐµÐ´ выводом каждого" + +#~ msgid "\t\tprimary prompt." +#~ msgstr "\t\tпервичного приглашениÑ." + +#~ msgid "PS1 The primary prompt string." +#~ msgstr "PS1 Строка первичного приглашениÑ." + +#~ msgid "PS2 The secondary prompt string." +#~ msgstr "PS2 Строка вторичного приглашениÑ." + +#~ msgid "TERM The name of the current terminal type." +#~ msgstr "TERM Ð˜Ð¼Ñ Ñ‚Ð¸Ð¿Ð° текущего терминала." + +#~ msgid "auto_resume Non-null means a command word appearing on a line by" +#~ msgstr "" +#~ "auto_resume Ðенулевые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñлов команд, вÑтречающиеÑÑ Ð² Ñтроке" + +#~ msgid "\t\titself is first looked for in the list of currently" +#~ msgstr "\t\tотдельно, Ñначала ищутÑÑ Ð² ÑпиÑке оÑтановленных" + +#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." +#~ msgstr "\t\tв данный момент задач. ЕÑли найдено, задача активируетÑÑ." + +#~ msgid "\t\tA value of `exact' means that the command word must" +#~ msgstr "\t\t`exact' значит, что команда должна в точноÑти" + +#~ msgid "\t\texactly match a command in the list of stopped jobs. A" +#~ msgstr "\t\tÑоответÑтвовать команде в ÑпиÑке оÑтановленных задач." + +#~ msgid "\t\tvalue of `substring' means that the command word must" +#~ msgstr "\t\t`substring' значит, что команда должна быть подÑтрокой" + +#~ msgid "\t\tmatch a substring of the job. Any other value means that" +#~ msgstr "\t\tзадачи. Любые другие Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÑŽÑ‚, что" + +#~ msgid "\t\tthe command must be a prefix of a stopped job." +#~ msgstr "\t\tкоманда должна быть префикÑом оÑтановленной задачи." + +#~ msgid "command_oriented_history" +#~ msgstr "command_oriented_history" + +#~ msgid "" +#~ " Non-null means to save multiple-line commands together on" +#~ msgstr "" +#~ " Ðенулевое значение означает, что многоÑтрочные команды" + +#~ msgid " a single history line." +#~ msgstr " будут ÑохранÑтьÑÑ Ð² одной Ñтроке иÑтории." + +#~ msgid "histchars Characters controlling history expansion and quick" +#~ msgstr "histchars УправлÑющие Ñимволы раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð¸Ñтории и быÑтрой" + +#~ msgid "\t\tsubstitution. The first character is the history" +#~ msgstr "\t\tподÑтановки. Первый Ñимвол -- Ñимвол подÑтановки" + +#~ msgid "\t\tsubstitution character, usually `!'. The second is" +#~ msgstr "\t\tиÑтории, обычно `!'. Второй -- Ñимвол `быÑтрой" + +#~ msgid "\t\tthe `quick substitution' character, usually `^'. The" +#~ msgstr "\t\tподÑтановки', обычно `^'. Третий -- Ñимвол `комментариÑ" + +#~ msgid "\t\tthird is the `history comment' character, usually `#'." +#~ msgstr "\t\tиÑтории', обычно `#'." + +#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" +#~ msgstr "HISTCONTROL\tЕÑли равен `ignorespace', Ñто означает, что Ñтроки," + +#~ msgid "\t\tlines which begin with a space or tab on the history" +#~ msgstr "\t\tначинающиеÑÑ Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð° или знака табулÑции, не попадают" + +#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" +#~ msgstr "\t\tв иÑторию. `ignoredups' означает, что Ñтроки, Ñопадающие" + +#~ msgid "\t\tenter lines which match the last entered line. Set to" +#~ msgstr "\t\tÑ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹, не попадают в иÑторию. `ignoreboth' --" + +#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset," +#~ msgstr "\t\tодновременное дейÑтвие обоих параметров. ЕÑли не" + +#~ msgid "\t\tor set to any other value than those above means to save" +#~ msgstr "\t\tуÑтановлено, или равно другому значению, то в иÑторию" + +#~ msgid "\t\tall lines on the history list." +#~ msgstr "\t\tкоманд попадают вÑе Ñтроки." + +#~ msgid "Adds a directory to the top of the directory stack, or rotates" +#~ msgstr "Помещает каталог на вершину Ñтека каталогов или вращает" + +#~ msgid "the stack, making the new top of the stack the current working" +#~ msgstr "Ñтек так, чтобы на вершине находилÑÑ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ каталог. Без" + +#~ msgid "directory. With no arguments, exchanges the top two directories." +#~ msgstr "аргументов менÑет меÑтами два верхних каталога." + +#~ msgid "+N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "+N\tВращает Ñтек так, чтобы N-й каталог (ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð»ÐµÐ²Ð¾Ð¹ Ñтороны " + +#~ msgid "\tfrom the left of the list shown by `dirs') is at the top." +#~ msgstr "\tÑпиÑка, выводимого `dirs') оказалÑÑ Ð½Ð° вершине Ñтека." + +#~ msgid "-N\tRotates the stack so that the Nth directory (counting" +#~ msgstr "-N\tВращает Ñтек так, чтобы N-й каталог (ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹" + +#~ msgid "\tfrom the right) is at the top." +#~ msgstr "\tÑтороны) оказалÑÑ Ð½Ð° вершине Ñтека." + +#~ msgid "-n\tsuppress the normal change of directory when adding directories" +#~ msgstr "-n\tподавлÑет обычную Ñмену каталога при добавлении каталога" + +#~ msgid "\tto the stack, so only the stack is manipulated." +#~ msgstr "\tв Ñтек, так что менÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñодержимое Ñтека." + +#~ msgid "dir\tadds DIR to the directory stack at the top, making it the" +#~ msgstr "dir\tпомещает DIR на вершину Ñтека и делает его новым" + +#~ msgid "You can see the directory stack with the `dirs' command." +#~ msgstr "ПроÑматривать Ñтек каталогов можно командой `dirs'." + +#~ msgid "Removes entries from the directory stack. With no arguments," +#~ msgstr "УдалÑет Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸Ð· Ñтека каталогов. Без аргументов" + +#~ msgid "removes the top directory from the stack, and cd's to the new" +#~ msgstr "удалÑет из Ñтека каталог на вершине и делает рабочим каталог," + +#~ msgid "+N\tremoves the Nth entry counting from the left of the list" +#~ msgstr "+N\tудалÑет N-й каталог, ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð»ÐµÐ²Ð¾Ð¹ Ñтороны ÑпиÑка," + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd +0'" +#~ msgstr "\tвыводимого `dirs', Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, `popd +0'" + +#~ msgid "\tremoves the first directory, `popd +1' the second." +#~ msgstr "\tудалÑет первый каталог, `popd +1' -- второй." + +#~ msgid "-N\tremoves the Nth entry counting from the right of the list" +#~ msgstr "-N\tудалÑет N-й каталог, ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ Ñтороны ÑпиÑка," + +#~ msgid "\tshown by `dirs', starting with zero. For example: `popd -0'" +#~ msgstr "\tвыводимого `dirs', Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ. Ðапример, `popd -0'" + +#~ msgid "\tremoves the last directory, `popd -1' the next to last." +#~ msgstr "\tудалÑет поÑледний каталог, `popd -1' -- предпоÑледний." + +#~ msgid "" +#~ "-n\tsuppress the normal change of directory when removing directories" +#~ msgstr "-n\tподавлÑет обычную Ñмену каталога при удалении каталогов из" + +#~ msgid "\tfrom the stack, so only the stack is manipulated." +#~ msgstr "\tÑтека, так что менÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñодержимое Ñтека." + +#~ msgid "Display the list of currently remembered directories. Directories" +#~ msgstr "Выводит ÑпиÑок запомненных на данный момент каталогов. Каталоги" + +#~ msgid "find their way onto the list with the `pushd' command; you can get" +#~ msgstr "" +#~ "попадают в ÑпиÑок при иÑпользовании команды `pushd', вы можете забрать" + +#~ msgid "back up through the list with the `popd' command." +#~ msgstr "их из ÑпиÑка командой `popd'." + +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "Флаг -l указывает, что `dirs' не должна выводит Ñокращённые варианты" + +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "каталогов, заданных отноÑительно домашнего. Это означает, что" + +#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" +#~ msgstr "`~/bin' будет отображатьÑÑ ÐºÐ°Ðº `/homes/bfox/bin'. Флаг -v" + +#~ msgid "causes `dirs' to print the directory stack with one entry per line," +#~ msgstr "заÑтавлÑет `dirs' выводить каталоги по одному в Ñтроке, предварÑÑ" + +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "" +#~ "Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° номером его позиции в Ñтеке. Флаг -p делает то же Ñамое," + +#~ msgid "flag does the same thing, but the stack position is not prepended." +#~ msgstr "но не добавлÑÑŽÑ‚ÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð° позиций. Флаг -c очищает Ñтек каталогов," + +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "удалÑÑ Ð²Ñе его Ñлементы." + +#~ msgid "" +#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N\tвыводит N-й каталог, ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð»ÐµÐ²Ð¾Ð¹ Ñтороны ÑпиÑка, выводимого" + +#~ msgid "\tdirs when invoked without options, starting with zero." +#~ msgstr "\tdirs при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ." + +#~ msgid "" +#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N\tвыводит N-й каталог, ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ Ñтороны ÑпиÑка, выводимого" + +#~ msgid "Toggle the values of variables controlling optional behavior." +#~ msgstr "МенÑет значение переменных, управлÑющих поведением оболочки." + +#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" +#~ msgstr "Флаг -s означает включить (уÑтановить) каждое ИМЯ_ПÐРÐМЕТРÐ," + +#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" +#~ msgstr "флаг -u ÑбраÑывает. Флаг -q подавлÑет вывод, уÑтановлен или" + +#~ msgid "status indicates whether each OPTNAME is set or unset. The -o" +#~ msgstr "Ñброшен параметр определÑетÑÑ Ð¿Ð¾ коду возврата. Параметр -o" + +#~ msgid "option restricts the OPTNAMEs to those defined for use with" +#~ msgstr "ограничивает работу параметрами, определёнными Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ" + +#~ msgid "`set -o'. With no options, or with the -p option, a list of all" +#~ msgstr "`set -o'. Без параметров или при заданном параметре -p, выводитÑÑ" + +#~ msgid "settable options is displayed, with an indication of whether or" +#~ msgstr "ÑпиÑок вÑех уÑтановленных параметров и информациÑ, уÑтановлены" + +#~ msgid "not each is set." +#~ msgstr "они или нет." diff --git a/po/sk.gmo b/po/sk.gmo index 626569e0e8a641de8c135575096417fe61f8d5f9..366d2179bc429c798657606bd9859582212177de 100644 GIT binary patch delta 10944 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%0DLLZi(hU!*#{b?w}^*4wEQ}p_D*_Mui zYQTIr2ObAo;AK!P-gAd7cmk9uoe6h?wNMRM3S}owhSI5vq4NCX!v(n zqxpZxPHP|vP(An=jKlk&S~~tWRtIVwS3rq23VnDkl!!M&J^wh=bbb#?=?48a~!~^glhRSPzC-Qs$mB{Ve`#}hmnp!Y57l}bmTRtj#NKsnS(O@#XDT& zBPfe^$WwMGVvd)?g!m)p}9jb$B zNC6^&qIV||DdB@q4?gEO{7<&vEZ{%yGS2L&~GJSPp)aU=(ivGXMQihrNka5oIp5}&_JmC{m|uoo{PDP8%rwU z(xrbBPI7s5YlHsqdx7v0*Jl&3P3Bj;$Iv_-48iRt(jSvJ4X%ez5oQuD zB;7*TOn8HEF4rC)=%?ZIkSwO&nBE`3iwPCKqVebd$6dS`fmhb`Le1d+f+&#rpgzK+EFf!<70k*<1g!s z7oudXCBG#81pF&u8=!UME~a*y0}e z2u4UhKN_^5+@Cd4%5)g5T{# zaDcq`2*8#OzdeTbjTwZFpy;I|3EZ=s9Fx$q6*-z1z~asRhmzmfEzgf)Z` zVFBTMnGVr^EKX84fyEY0wOZsNQp9xzv{`!sKMlHc7 zJ_6pLixt1Uxfc8$Bl0}yJ=}%m758+hp3q7-k?Y42#u49(u#$K+;b7uTgd+$+{odcX z@gNuU+d=&6gdPO_9)_Q|_&CS2xqdV8L9iG6n9xD|7((!Sm20OG^lKw5b#ZfnKaH~g z?-MzYa055z5=Ii=?lRU9@55{u2K7sD{d9OSp%)=S`Y5;p{+4hZ@wcHzs1y194ElsV zHfg>$a#8Qw>VJ`&X_t9#?);hfEiQc)yq$0e;Uw<8=bmhaIj&W?bb#Htc8yD%1qTz( zA!NCJ5!@F}BupWkLwG}q)k)+T!j;5-Mfj@UD_opIh`F14!YHAY=T39iZiNq$-nX-M zV%6@UnWfCM!+k%N$i}1jbT$#s`T4Y;%SWP3ll%Mp%%9F{rybq1v{(I@(!G}tEIqTR z|MW<9U7)>O1Hn@*(*xnygV zzaf!tEZuv>prRj1#nk3hERv0xN)xF}A@8RfOnai~=4R!Hrc)_;NkuJ*2-Rm2nYen} zkVw+#crKbvWRO9QigJl{skkkQ42e`MK{Nd+rlP4TH81fi*V)P5ym&(* z6_-q7iCiX0Rgq*Ol8fgmBy=1SNYl|^G;&q`T9a$MpUEatc?Od@lZl*>g?m0|V>VvM zso_Ro4e4yNo-I;^Y255pH49hPj`!24vSfX#LaY__*HL_SLn0TiG6GTiq!4tHrpJ5= z_2ZFfqwVd6#&j<3n_`t|U7{tPvSroy`7G)oaYb{PNHne{+Kkaifi9bFq~fRK{SE1C zOk-9b_oI#RXp^nQbis5FWvtKT6Zt|uLCZHZ#_f36d(;{~B@-!KRT?=w6J8<-A=G5K zy;eY_Uo0O{x_16PC)$Uy@q8hhq6yhT+%Ke(QrAd%{K~qozHVqt(AiYlj+EbsH0tB= zlxdxlNieRZlg}Q}d3|kdXm~L7TE9H&Zd=^1XKBjP+S0!D!`#d}yqHL7tRkj=k$R1O zeIb#|BQdAvl?pP?st)a7YBwMpW`ddIsPLB_^Zf-4{*sy%D{7Z5W`s<$bD4NF(ZJ-c zG6RB@x@zhYzq%aw1<#4D!V{K|P%MPD&bvZ#&e4Sqs%q>zkhhM?c^ zYz75pv=R+IGbx5`^CPDHLD@3BrtH%D%Z3&MDQZxYX-Y-pIay8yJ!N{6Vh+hJ8=Kc{ zw`WpxS^1Wnlfp&tSF0y1|ZR3A1}&Yt*y>rcQQu983f5F zlFX$|`%N~+yCJNZm(^r67Pee4txh);GC{s2Va5=H5|Kh4?dRf=EK{^RuCm!xejH1r z<|Oh(Sti+bnKG-pVb_5wnc|@NwlihZK%*szV8KC%O=eZGoys>xDh9<$&n+(WBohvb ziBmuJ)Ec|5Dvmo}Rg!Bb%|ldX^3j*I(iy+nt~BGFPDqrtHh-;Fz42D5Xhq)6ha#f( zbBr_VnK8B2q#=~F)*^~Ek{QoB(-d!2j`6PcwSj1K&xuS?Q;kHomK5!>t7L_c?f6+q zWsi&J;@K9|R7F>PVQ7PNc|gi?He*BQY$=*hJdAQM3-c^9$yQC$(W*K;*Es`byzD~K zJxxkCe|zdQG~YQ6dVrQ@WjrWymUUvR;$k$oE`geRov+Nlvu6=olgJd3nu}88Mi$<5 zw$&`a71MW~ThG6k#W*x%M$)N5bA3F^oI%AK5~pb5nT51D9W&P0bQJfC!sP`qXloA~ zKY6n6*T^q%t{J^pZ0gqNG09Y4GJ-F#*w>?p($eqjSGurn_hMx`{rXnSZ8FY+g6Zm( zg?S=w7X|c%dE3yCi|4~8@2=go?Lt#+7Qb%({N=SPDg?muk#HoFi8KAFyXb_J!fZ5T z)6Fy#g=5*z$=)+Ym4cE!nch=Kim4O9q|wUmE~pd@OC+hAt*8N6T(R9lQdvwfYs>j! zHO4%-X6l}-Abrbyp-EQhK|z$QX9lh7@+~c)5b0 zmP|Mk&tl1%%Vo>CNg1IbH={2#%Z@U=2+X>=!Mwl&wRK8)(nWj-DXK=C<-@tK-4gBY zSS}bfl|$KI6oqv)wZsHQ#OQ*l%lui;;Ll&Mur@FP#s{pz=$d^*us(fp98l|SN7EF8 z9T|J{g5@hzmT|Kp_~FR{Zm6-4XphRmuqW|2Pd{jKeI(a-lIu`~9?}}s)!UR+y7xOn zifFWvmlP;fNG35^jJGLUD}zck4KQ7l?9uWZQwhmwO(EKlPc+9T95PYEXFM8Hg)Yj! zYtCqMk&Y%X5w;{Vea%=gMl?bQvVR%WlB2tGS%Gn1j6NX7M5-m-RPKW{K`1yKX|f)Eq`WR$YiJ7A z0=k>A^6^s;XU_PQnJ|T-oxwKDj;w~xxCeputSdya5hgoBLH%rItdU7OFU6GawwpdX zjbtLv#@X}|tJD&<#9k`WeqJHyRVJw9-hf?`&ci)l`?(zL|0 z_1Zsup-iJWZh&wu$CMsgGhmWSTaN{2y}&>n<#h$3Od2W3=nTTp#Y_c*o#m><(W%klI8JP_+u3y4xxZ>GQn|cxIoB{aZK8MOBN0@4 zu8%G!>p49O*J`TB6P#PKaN(SqxyQ017ukClL%wun&Egd+7gb1hmsUmnlMC3NLUVYz z*+^R7%{ql@fgKP%f}Z9#aK>PldsQyk2UXf`8l9+-S6F(qxO>qIOgLP#t40R?ud_oY7@)nxh2-Y*0z^Z&M3{aI$yUWTe(U{?JPkO8cgG*JDZ>;bQ>9KKPG$2;!z!du`_QXZZtlyUOKuphU80!x0jv% zNsr3I+jZp~Lgi30=4J!~J8Yy=d3dYZO^s$Q85geXRtHCn%xk8YR!jEJ+FukS_||r2 zA|!jFW-=Lx@8W8hb2h{tH7CMfI%#tPF^jq6Y04_MX??ohbw5~x?7?g4)7b7s)sL>} zB=VTLIm?&S&h6eLmAhaMG*GsP*)#eoQF?2SSgo$GAh`nAnn_yr?14GMnuDWA8?|L| z8XL5vCq-d>_bXON!nBuVDrgTQQK@vMI_ybfnDe@(U7OBHi1AaFFF5Mxl}j{>%#+$= z7!8lB=~@D5peZM8TbVsL9*wgbM&W(?Y*35#KW2=K0%i*-bJC+G>b$D-mqmLGLOUv& zYR_&vFFpO=J&H-4*LKUo%oZh0p1|>}Fe0_Pp6Y9#j@KJCQv|=)iL_iyw}Z&Lf_2$Q zvn>iYbmgMj#VeK=KBe~#ys+>U`)cGTo8B<^vH}Y|MzDPGw2Hud_ z<7~7#u`bL_b0g@FS`Z8>N5)^3!yE$zd6HpcX1~yf+$_!YZq08Y%hWUBDf~llszc&TT-YO~#; zr&7Z_`}}&|M^-Lcb@jP4XJv8JWqF*FYx7DY7LT&K<8ZaqzRB;rc+!i~h9@BRr9#c;qju$0mt)ZXYjIAC(_`EOwfiU48+bRIk!W{}^)0=Z z8&*SCxfz@-$ffr;@a9qLjTtXDCg_zppE8>yvrX5gOP;WH8Ku;B`t_?UmN#nq_pysi z>8;%UrKOpn`x`T& zCaeXeys5O-KdLN}yVh*yxtM0L@YaTl|9hn<0 z`Go37eH7WPTi=u`w5%bWcBQTHOGjOo?5%_RHSI?&4IS8d}?3+t(&{K`d8p-lk zZU*DwPo6xvbMEF(L%n#{6YrdPV{_j=*1sP6bif}oayJ9N_AZ)bZ+h1IeIX(p+1Y^oM!lKkys?vwcSt2^~oz1SOxSW6>n+HHMQoG*jM+euCcYA&lR!>zYRx# z;dkwcbl&zv)t<#wt@#%ABs8?ieNf@!6Lxj9wQ!ccxa-W-b*n0D$*R_-G&lVv%epom zTeF&(W4@~B>g3}Hy>CeD*vMl$JKXt}8rRabJ(n+Vbm_MkX0lydnj&olqi(rkCcVCE zi=XYB$M88cSK)R_)|?$ zXdV4a#n-z#w(Wik2Cr+ITC~1v8}rI8I|1_p-9{lTzbUfw?ifYeXIxF28`HjfnmV1b zb=dwaipTIuQL+fil8Po=#^WX8TXX69t}Rvm&bwJ37;AsWg^}dW4g@|sm&6L#;pVY? zHl0*E+_x4CioU1Omaky6)VzmiOC;R2_RyHnkV7!4neeLrFVU5zzPbM%yGrTen?na4 z(?X|PsVUMDEBFW|wacUmWMSlEC7(*LDKe{r8z&~5nmf7krB_c2mBQ~-_cxt0e}4GR z^F4N6Q+ocLX`#ubz280bgqF5O^fZPXkQzw0z3IKSAloDj7cUP%hGBNArpSuO{cEyY}1{ENfT{L$1*5i%uIfLU!zhAwwQ#bMR_{5 zrQ2|+{e0JEnU>~sRN^R~U$uwFga#Cme=J;nqAAM+WddWeSaHo{!uYhAB8%T~UuIE6A~1SGIs z8}X&yyH@#r*odKh)0oh(@xGBscvTx-Pa(TwV?lN@VS2%YEK8!jW>n~)(jVR&xTl_V zvxcQ$eJoyj`^{UYi>0SJ!?F`-P(wJAW;NfjQC8lV5(wgkoHokplbs~`iZdK^t;6+6_FAi+ z?I9^EjzlmXxvruX?t(FSyl8V1&XnbrGds{$>dBz5nXnOSg11>aF6=Js3uOf>;x0wd z0n?-u9tg#u1Ew~*L^fnv`9TZPm7k;$OeE8~tCLu+T17>D@^->GV;M`xDrprl51+f!-9qbWmB-7q!!Cxq%ysnJn2p1DuWVe6@Z$0uG*ht3 z55|Xyj0>~NWZrp=@uuX=_MWIWa~fnUh~yj0Q=_EE&+^-nt&Kd63_2J8HPWjn@72r! zcAQIgOaf*N_n0kwY(w*(8j-orvR!%)MPlE+E9d`|^xM^G)Ta4E9is#MONKycI z0OD6~=w5+?{&$xoXY0$wSFBfZJ6qhI$2q3mPX`{fTxRpFjNeuaycz9!(2;agxg+)L z1M+FIMzBbQrX;(#Bs!XI!tS@kanRFc`Ij4?GsB4jQha&Ql3F27w_u>&6;BpfkXRRG zq_lWj?WyQbjWO|ZptPCtmv>z@2d|2p@*w1tYi$Zd(%l|ju*q5CZjjS-tNSw=ZfdTl zihLo)dvq2bz9+>{<_qr8|Nb3~Z4$bo-5X_?LRTzUR6DZ^WRqtDw>5SR){t-ZqBoEX4*DRwz0y|#tG~8 zgDW&(xf~s&671k}Ms))pBNE-kJFp8p4R4GWlS#HCT4Rlj%I?*!RR)@clw1XP;gkJE z+O%rR;dZMjJ7O)ZEosiP&}Y8R=ga3^y!RHFesd70-D1OV8SvOXo zN$D8pMd=pvy!o^9s^HYd%qaxQH#}O-a|pS^v?X2MHt^}UHFujO`Raw_(;PcsAg>M0 z`4L9|XyE#IX}`BeOm|MC+3~xh7E@*ATGrjuplj`qj0)8k7c<}8O6gW#7OzS@VgSt< zm|1q5#lwc!6D^}B@z|0&zHxL%RJI@5tfG^co$|uR z$3l!GlgyqhmbW6+g~@)ms9E4mY2+&#Yg45AcxZBak1?Trq%XWnNi(zZ;pH4Dc5Pw4 z%6Ujd*7Gl?q7<^@{Mr?P*EHF;_TOFQo1wtTup+dApwK#6hg%iNr<=m7)qIM?5N9Jh zF4Pob1kG|+lpm!!w%5p;HKL9Ct7~?gzo2GC-LXM&Vg3P6Jcjj=Nw>KqfXWYvTpt#! zNU z4%wM#vz1G<-x~!AL79P?(RVkjMaGr!#F^4=_rIuLxxk7qj#jnWsja4#KeEXfjS4!u zB{(r;P6po~nHJz$8%G;p_<#Z}s>h zNd`w>AW@uCh>pOm2tK5eYD_EYQzX;PC2XnLLmU4F{n=7(r)rO-V>mHJ@7xh+!rIps z+;}r7?Z(jUgVkR08%>T$_Hw`M(J2K72m7iw;r=-#&A0Z-P1o(++RbulzcSKceDHyh znY3<8q7{X1=2<*#D^l^Dchg%lw^#`?No}#d;DXFHCAd17Fq&6RC75+~C3kmGxC&#Y z85wUsXmn@{mFQf*WEzp4wl(F|+Eo@yr<{emH(Vf|da zleZo@I&@M`)_tACX!4p$f_Z5jf4MI1vm;ZHd4s0K%lT%~1^dO2_63O+*6-tlUXS$JZvOu71?qbmbB>wsj}w}|>q z1DhU8wVFP%X2xUK|KNdSSSA%uGr40UMwCsa{&~e$)nSi7&2#kFSryd5cyc&jsu$T; zamjw8_c?{}2!u+DLUVX^O; ztaC2ML;FE%xX?ywkLq2mY5p!FvGs~^p{Cu7OE`9t=9oD{em+IwIHzLzFR^1`zhq(K z$-g;qJN;(!Ez<<+2|D$i7?hxSpbwago|xL5O>);=DI>Z%>?)Z_>-2&lp~Ym;H%sL? z-uYo^<0xQ3R`r@KE_B9Da4QEJeZa;Bu+CFqrhifQ3|%Jw(iGD{O$rlPFjwuMC< zLgBK=%}+8I6(_J-^(va}tOZ3d%WMl!_n>@dnX!sN&CXSE3W<+W-f~w+|Jb5FZK6xT zart(Cf;;A&Sk^_SHElk=1{K7*Zf#+^*fP^ENJn>`%U;)xzk8<>_xT3R8Od}Lha^hd z0cJZcK``|bk;W7s0M*+Mn%r%@lQ2aYPh&G~#;vF#K2J;V#$VH*xsYSaf-;$xSJSwcvDO@Ya3@hhFdX&Bf-JMn=#&MyxJ;^~6U{yob=1&>ruw zmQ+Y=wVugFk{rGIOVVw)RSaF_S5OS%*0-kfzs@Yq)3?Fq^);4F9#in46aCNZ*tYXr zHN3136?H86@*Af@3%;?k>!d62Lcg+@z;5Q+j~Nu|-%H|b&m0*VRO4O(@(L~zoKf)B zjF-f&F*2XLlBWhfV58TzTnYSdt7bRNnFv2E( z-Kz3dto`Icp%M1q8M2Dc>po=Z?k$cF=Us8ExN(9ItY)0uUoj^c180ow>2O$1celr* zHez>qt+|;ObR@b9w$_kpi?#oIy_NMC!>q4h(V_BpRhWPR|DLs?e5?z{hIaLFM|I|~ zfwC9?e~ z>f9cq+3|njyQ!TWd^L5FvnzZ&we@$)L$y8n=|G?FA|hJ{t_pq9udmxewD*XGPTJb< mq)_edeX7m7=k|q7q53{HZ~K;}(3t\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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "chybný index poľa" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nie je možné previesÅ¥ indexované pole na asociatívne" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neplatný kÄ¾ÃºÄ asociatívneho poľa" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nie je možné priradiÅ¥ nenumerickému indexu" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: pri priraÄovaní asociatívnemu poľu je potrebné použiÅ¥ index" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: nie je možné vytvoriÅ¥: %s" -#: bashline.c:3982 +#: bashline.c:4091 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:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvý znak (okrem bielych znakov) nie je „\"“" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "chýba zatvárajúca „%c“ v %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: chýba oddeľovaÄ dvojbodka" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: neplatný názov aliasu" @@ -90,45 +96,45 @@ msgstr "„%s“: neplatný názov aliasu" msgid "line editing not enabled" msgstr "úpravy riadka nie sú zapnuté" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: neplatný názov klávesovej mapy" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: nie je možné preÄítaÅ¥: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "„%s“: nie je možné zruÅ¡iÅ¥ väzbu (unbind)" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: neznámy názov funkcie" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s nie je zviazaný (bind) s žiadnymi klávesmi.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s je možné vyvolaÅ¥ ako " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "poÄet cyklov" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "dáva zmysel iba v cykle „for“, „while“ alebo „until“" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -138,300 +144,329 @@ msgstr "" " \n" " Bez EXPR, vracia " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME nebola nastavená" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "príliÅ¡ veľa argumentov" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "na nový vrchol zásobníka." + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD nebola nastavená" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "riadok %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "upozornenie: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: použitie " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: voľba vyžaduje argument" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: vyžaduje sa numerický argument" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: nenájdené" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: neplatná voľba" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: neplatný názov voľby" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: nie je platný identifikátor" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "neplatné osmiÄkové Äíslo" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "neplatné Å¡estnástkové Äíslo" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "neplatné Äíslo" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: neplatné urÄenie signálu" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: nie je pid ani platný Å¡pecifikátor úlohy" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: premenná len na Äítanie" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s je mimo rozsahu" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s mimo rozsahu" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: taká úloha neexistuje" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: riadenie úloh nedostupné" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "riadenie úloh nedostupné" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: obmedzené" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "obmedzené" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: nie je vstavaný príkaz (builtin) shellu" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "chyba zapisovania: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "chyba pri nastavovaní atribútov terminálu: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "chyba pri zisÅ¥ovaní atribútov terminálu: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: chyba pri zisÅ¥ovaní aktuálneho adresára: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: nejednoznaÄné urÄenie úlohy" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: neplatný názov akcie" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: chýba Å¡pecifikácia dokonÄovania" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "upozornenie: voľba -F nemusí fungovaÅ¥ tak ako oÄakávate" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "upozornenie: voľba -C nemusí fungovaÅ¥ tak ako oÄakávate" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "momentálne sa nevykonáva funkcia doplňovania" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "je možné použiÅ¥ iba vo funkcii" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, fuzzy, c-format +msgid "%s: circular name reference" +msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "nie je možné použiÅ¥ „-f“ pre tvorbu funkcií" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: funkcia iba na Äítanie" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nie je možné previesÅ¥ asociatívne pole na indexované" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dynamické naÄítavanie nie je dostupné" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "nie je možné otvoriÅ¥ zdieľaný objekt %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "nemožem nájsÅ¥ %s v zdieľanom objekte %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: nie je dynamicky naÄítané" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: nie je možné zmazaÅ¥: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: je adresár" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: nie je obyÄajný súbor" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: súbor je príliÅ¡ veľký" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: nie je možné spustiÅ¥: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "odhlásenie\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "toto nie je login shell: použite „exit“" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Existujú zastavené úlohy.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Existujú bežiace úlohy.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "prákaz nenájdený" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "Å¡pecifikácia histórie" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: nie je možné otvoriÅ¥ odkladací súbor: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "aktuálny" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "úloha %d zaÄala bez riadenia úloh" @@ -450,17 +485,17 @@ msgstr "%s: voľba vyžaduje argument -- %c\n" msgid "hashing disabled" msgstr "haÅ¡ovanie vypnuté" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: haÅ¡ovacia tabuľka je prázdna\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "použití\tpríkaz\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" @@ -468,7 +503,7 @@ msgstr[0] "Príkazy shellu zodpovedajúce kľúÄovému slovu „" msgstr[1] "Príkazy shellu zodpovedajúce kľúÄovým slovám „" msgstr[2] "Príkazy shellu zodpovedajúce kľúÄovým slovám „" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -476,12 +511,12 @@ msgstr "" "pre „%s“ neboli nájdené zodpovedajúce témy pomocníka.\n" "Skúste „help help“ alebo „man -k %s“ alebo „info %s“." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: nie je možné otvoriÅ¥: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -502,15 +537,20 @@ msgstr "" "HviezdiÄka (*) vedľa názvu znamená, že príkaz je vypnutý.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "nie je možné použiÅ¥ viac ako jednu z volieb -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "poloha histórie" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: neplatný argument limitu" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: rozšírenie histórie zlyhalo" @@ -524,113 +564,113 @@ msgstr "%s: inlib zlyhalo" msgid "no other options allowed with `-x'" msgstr "iné voľby prípustné s „-x“" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenty musia byÅ¥ ID procesov alebo úloh" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Neznáma chyba" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "oÄakával sa výraz" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: nie je indexované pole" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neplatná Å¡pecifikácia popisovaÄa súboru" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neplatný popisovaÄ súboru: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: neplatný poÄet riadkov" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: neplatný zaÄiatok poľa" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neplatné kvantum spätného volania" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "názov prázdnej premennej poľa" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "vyžaduje sa podpora premennej poľa" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "„%s“: chýba formátovací znak" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: neplatná Å¡pecifikácia formátu Äasu" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: neplatný formátovací znak" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "upozornenie: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "chýba hexadecimálna Äíslica v \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "chýba Äíslica Unicode pre \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "žiadny iný adresár" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: neplatný argument limitu" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "<žiadny aktuálny adresár>" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "zásobník adresárov je prázdny" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "index zásobníka adresárov" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -672,7 +712,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:711 +#: builtins/pushd.def:718 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" @@ -716,7 +756,7 @@ msgstr "" " \n" " Zásobník adresárov môžete zobraziÅ¥ vstavaným príkazom „dirs“." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -755,145 +795,155 @@ msgstr "" " \n" " Zásobník adresárov môžete zobraziÅ¥ vstavaným príkazom „dirs“." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neplatná Å¡pecifikácia expirácie (timeout)" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "chyba pri Äítaní: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" "návrat („return“) je možné vykonaÅ¥ iba z funkcie alebo skriptu vyvolaného " "pomocou „source“" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "nie je možné zároveň zruÅ¡iÅ¥ funkciu a premennú" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: nie je možné zruÅ¡iÅ¥" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nie je možné zruÅ¡iÅ¥: len na Äítanie %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: nie je premenná poľa" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: nie je funkcia" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: nie je možné zruÅ¡iÅ¥" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "posun o" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 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:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neplatný názov voľby shellu" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "vyžaduje sa argument názov súboru" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: súbor sa nepodarilo nájsÅ¥" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "nie je možné suspendovaÅ¥" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "nie je možné suspendovaÅ¥ login shell" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s má alias „%s“\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je kľúÄové slovo shellu\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s je funkcia\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s je vstavaný príkaz (builtin) shellu\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je vstavaný príkaz (builtin) shellu\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je haÅ¡ovaný (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: neplatný argument limitu" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "„%c“: chybný príkaz" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: nie je možné zistiÅ¥ limit: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "obmedzenie" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: nie je možné zmeniÅ¥ limit: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "osmiÄkové Äíslo" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "„%c“: neplatný operátor symbolického režimu" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "„%c“: neplatný znak symbolického režimu" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " riadok " @@ -907,82 +957,103 @@ msgstr "posledný príkaz: %s\n" msgid "Aborting..." msgstr "Ruší sa..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "chyba neznámeho príkazu" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "chybný typ príkazu" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "chybný konektor" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "chybný skok" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: neviazaná premenná" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: neplatný formátovácí znak" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "chyba rúry" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, 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:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: príkaz nenájdený" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: chybný interpreter" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je vstavaný príkaz (builtin) shellu\n" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nie je možné duplikovaÅ¥ fd %d na fd %d" @@ -1027,37 +1098,37 @@ msgstr "po pre-inkrementácii alebo pre-dekrementácii sa oÄakáva identifikát msgid "missing `)'" msgstr "chýba „)“" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "chyba syntaxe: oÄakáva sa operand" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "chyba syntaxe: neplatný aritmetický operátor" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (chybný token je „%sâ€)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "neplatný aritmetický základ" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "hodnota je ako základ príliÅ¡ veľká" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: chyba výrazu\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: nie je možné pristupovaÅ¥ k rodiÄovským adresárom" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" @@ -1072,148 +1143,148 @@ msgstr "nie je možné alokovaÅ¥ nový popisovaÄ súboru pre vstup bashu z fd % msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: bufer už existuje pre nový fd %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp rúra" -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "mažem zastavenú úlohu %d so skupinou procesu %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) v the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: taký pid neexistuje" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signál %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Hotovo" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Zastavené" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Zastavené(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Beží" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Hotovo(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "UkonÄenie %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Neznámy stav" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(bol uložený výpis pamäte) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid detského procesu (%ld to %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Neexistuje záznam o procese %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: úloha %d je zastavená" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: úloha skonÄila" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: úloha %d už je v pozadí" -#: jobs.c:3220 +#: jobs.c:3455 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:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: riadok %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (bol uložený výpis pamäte)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd teraz: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: funkcia getpgrp zlyhala" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: riadkový systém" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nie je možné nastaviÅ¥ skupinu procesu terminálu (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "v tomto shelli nie je riadenie úloh" @@ -1267,17 +1338,17 @@ msgstr "realloc: bolo detekované podteÄenie; mh_nbytes mimo rozsahu" 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:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, 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" @@ -1301,7 +1372,7 @@ msgstr "%s: neplatná služba" msgid "%s: bad network path specification" msgstr "%s: chybná Å¡pecifikácia sieÅ¥ovej cesty" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "sieÅ¥ové operácie nie sú podporované" @@ -1338,225 +1409,260 @@ msgstr "Máte novú poÅ¡tu v súbore $_" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v súbore %s bola preÄítaná\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "chyba syntaxe: vyžaduje sa aritmetický výraz" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "chyba syntaxe: neoÄakávaná „;“" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "chyba syntaxe: „((%s))“" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: chybný typ inÅ¡trukcie %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" "here-document na riadku %d oddelený znakom konca riadku (oÄakávalo sa „%sâ€)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: inÅ¡trukcia presmerovania „%d“ mimo rozsahu" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, 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:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "neoÄakávaný koniec súboru poÄas hľadania „]]“" -#: parse.y:4175 +#: parse.y:4415 #, 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:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "chyba syntaxe v podmieneÄnom príkaze" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neoÄakávaný token „%s“, oÄakávalo sa `)'" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "oÄakávalo sa `)'" -#: parse.y:4289 +#: parse.y:4529 #, 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:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "neoÄakávaný argument podmieneÄného unárneho operátora" -#: parse.y:4339 +#: parse.y:4579 #, 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:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "oÄakáva sa podmieneÄný binárny operátor" -#: parse.y:4365 +#: parse.y:4605 #, 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:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "neoÄakávaný argument v podmieneÄnom binárnom operátore" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neoÄakávaný token „%c“ v podmieneÄnom príkaze" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neoÄakávaný token „%s“ v podmieneÄnom príkaze" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "neoÄakávaný token %d v podmieneÄnom príkaze" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "chyba syntaxe neÄaleko neoÄakávaného tokenu „%s“" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "chyba syntaxe neÄaleko „%s“" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "chyba syntaxe: neoÄakávaný koniec súboru" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "chyba syntaxe" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Na opustenie shellu použite „%s“.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "neoÄakávaný koniec súboru poÄas hľadania zodpovedajúceho „)“" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "dokonÄovanie: funkcia „%s“ nebola nájdená" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: chybný konektor `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: neplatný popisovaÄ súboru" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: ukazovateľ súboru je NULL" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: neplatný formátovací znak" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "popisovaÄ súboru mimo rozsahu" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: nejednoznaÄné presmerovanie" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nie je možné prepísaÅ¥ existujúci súbor" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ombedzené: nie je možné presmerovaÅ¥ výstup" -#: redir.c:191 +#: redir.c:192 #, 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:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nie je možné priradiÅ¥ popisovaÄ súboru premennej" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nie je podporovaný bez podpory sietí" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "chyba presmerovania: nie je možné duplikovaÅ¥ fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "nenaÅ¡iel sa /tmp, vytvorte ho prosím!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp musí byÅ¥ platný názov adresára" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neplatná voľba" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: je adresár" + +#: shell.c:1777 msgid "I have no name!" msgstr "Nemám meno!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, verzia %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1565,43 +1671,53 @@ msgstr "" "Použitie:\t%s [GNU dlhá voľba] [voľba] ...\n" "\t%s [GNU dlhá voľba] [voľba] súbor-skriptu ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU dlhé voľby:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Voľby shellu:\n" -#: shell.c:1835 +#: shell.c:1938 #, 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s alebo -o voľba\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Na ohlasovanie chýb použite príkaz „bashbug“.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neplatná operácia" @@ -1775,77 +1891,92 @@ msgstr "Neznáme Äíslo signálu" msgid "Unknown Signal #%d" msgstr "Neznámy signál #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "chybná substitúcia: chýba „%s“ v %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nie je možné priradiÅ¥ zoznam položke poľa" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu procesov" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu procesov" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na Äítanie" -#: subst.c:5160 +#: subst.c:5850 #, 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:5178 +#: subst.c:5873 #, 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:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`â€" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu príkazov" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu príkazov" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nie je možné duplikovaÅ¥ rúru ako fd 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parameter je null alebo nenastavený" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: výraz podreÅ¥azca < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: chybná substitúcia" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: neplatný poÄet riadkov" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "„%s“: neplatný názov aliasu" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter je null alebo nenastavený" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: výraz podreÅ¥azca < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nie je možné vykonaÅ¥ priradenie takýmto spôsobom" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1853,12 +1984,12 @@ msgstr "" "budúce verzie shellu budú vynucovaÅ¥ vyhodnocovanie ako aritmetickú " "substitúciu" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`â€" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "bez zhody: %s" @@ -1872,123 +2003,123 @@ msgstr "oÄakával sa argument" msgid "%s: integer expression expected" msgstr "%s: oÄakával sa celoÄíselný výraz" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "oÄakávala sa „)“" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "oÄakávala sa „)“, bolo nájdené %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: oÄakával sa unárny operátor" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: oÄakával sa binárny operátor" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "chýba „]“" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "neplatné Äíslo signálu" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: chybný signál %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "chyba pri importe definície funkcie „%s“" -#: variables.c:780 +#: variables.c:814 #, 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:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru" - -#: variables.c:2228 +#: variables.c:2413 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:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: nie je možné priradiÅ¥ popisovaÄ súboru premennej" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru" + +#: variables.c:3940 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:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s má null exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neplatný znak %d v exportstr %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "žiadne „=“ v exportstr %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: chýba kontext global_variables" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nemožno otvoriÅ¥ ako SÚBOR" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s je mimo rozsahu" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2016,11 +2147,6 @@ msgstr "" "Nie sú poskytované ŽIADNE ZÃRUKY v rozsahu aký povoľuje\n" "aplikovateľné právo.\n" -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2041,15 +2167,15 @@ msgstr "%s: %s:%d: nie je možné alokovaÅ¥ %lu bajtov (%lu bajtov alokovaných) msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: nie je možné alokovaÅ¥ %lu bajtov" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [názov[=hodnota] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] názov [názov ...]" -#: builtins.c:51 +#: builtins.c:53 #, fuzzy msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" @@ -2059,114 +2185,103 @@ msgstr "" "postup_kláv] [-x postup_kláv:príkaz_shellu] [postup_kláv:funkcia_readline " "alebo príkaz-readline]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [vstavaná funcia shellu [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [výraz]" -#: builtins.c:64 +#: builtins.c:66 #, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]]] [adresár]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "pravda" - -#: builtins.c:72 -msgid "false" -msgstr "nepravda" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [názov[=hodnota] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..." -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [voľba] názov[=hodnota] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f názov_súboru] [názov ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts názov_reÅ¥azca_volieb [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a názov] [príkaz [argumenty ...]] [presmerovanie ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e enázov] [-lnr] [prvý] [posledný] alebo fc -s [vzor=opak] [príkaz]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [Å¡pec_úlohy]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [Å¡pec_úlohy ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p cesta] [-dt] [názov ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [vzor ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2174,15 +2289,16 @@ msgstr "" "history [-c] [-d ofset] [n] alebo history -anrw [názov_súboru] alebo history " "-ps arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [Å¡pec_úlohy ...] alebo jobs -x príkaz [argumenty]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [Å¡pec_úlohy ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2190,11 +2306,11 @@ msgstr "" "kill [-s Å¡pec_signálu | -n Äíslo_signálu | -Å¡pec_signálu] pid | " "Å¡pec_úlohy ... alebo kill -l [Å¡pec_signálu]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2202,103 +2318,99 @@ msgstr "" "read [-ers] [-a pole] [-d oddeľovaÄ] [-i text] [-n nznakov] [-N nznakov] [-p " "výzva] [-t zdržadnie] [-u fd] [názov ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o názov_voľby] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [názov ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [názov[=hodnota] ...] alebo export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [názov[=hodnota] ...] alebo readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source názov_súboru [argumenty]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". názov_súboru [argumenty]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [výraz]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "-krát" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] Å¡pec_signálu ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] názov [názov ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [obmedzenie]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [režim]" -#: builtins.c:175 +#: builtins.c:177 #, fuzzy msgid "wait [-n] [id ...]" msgstr "wait [id]" -#: builtins.c:179 +#: builtins.c:181 #, fuzzy msgid "wait [pid ...]" msgstr "wait [id]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NAME [in SLOVà ... ] ; do PRÃKAZY; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( výraz1; výraz2; výraz3 )); do PRÃKAZY; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NÃZOV [in SLOVà ... ;] do PRÃKAZY; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] rúra" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case SLOVO in [VZOR [| VZOR]...) PRÃKAZY ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2306,64 +2418,64 @@ msgstr "" "if PRÃKAZY; then PRÃKAZY; [ elif PRÃKAZY; then PRÃKAZY; ]... [ else " "PRÃKAZY; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while PRÃKAZY; do PRÃKAZY; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until PRÃKAZY; do PRÃKAZY; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NÃZOV] príkaz [presmerovania]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "" "function názov_funkcie { PRÃKAZY ; } alebo názov_funkcie () { PRÃKAZY ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ PRÃKAZY ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "Å¡pec_úlohy [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( výraz ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ výraz ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "premenné - Názvy a významy niektorých premenných shellu" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | adr]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [názov_voľby ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formát [argumenty]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2373,28 +2485,30 @@ msgstr "" "[-W zoznam_slov] [-F funkcia] [-C príkaz] [-X vzor_filtra] [-P predpona] [-S " "prípona] [názov ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o voľba] [-A operácia] [-G glob_vzor] [-W " "zoznam_slov] [-F funkcia] [-C príkaz] [-X vzor_filtra] [-P predpona] [-S " "prípona] [slovo]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o voľba] [-DE] [názov ...]" -#: builtins.c:240 +#: builtins.c:242 +#, fuzzy msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "mapfile [-n poÄet] [-O zaÄiatok] [-s poÄet] [-t] [-u fd] [-C spätné_volanie] " "[-c kvantum] [pole]" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2402,7 +2516,8 @@ msgstr "" "readarray [-n poÄet] [-O zaÄiatok] [-s poÄet] [-t] [-u fd] [-C " "spätné_volanie] [-c kvantum] [pole]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2414,7 +2529,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2438,12 +2553,13 @@ msgstr "" " Vráti vždy pravdu ak nebol zadaný NÃZOV, pre ktorý nie je definovaný " "alias." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2455,7 +2571,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebol zadaný NÃZOV, pre ktorý nie je definovaný alias." -#: builtins.c:289 +#: builtins.c:291 #, fuzzy msgid "" "Set Readline key bindings and variables.\n" @@ -2490,7 +2606,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2534,7 +2651,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2552,7 +2669,7 @@ msgstr "" " Návratová hodnota:\n" " Návratová hodnota je 0 ak N nie je väÄÅ¡ie alebo rovné 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2570,7 +2687,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak N nie je väÄÅ¡ie alebo rovné 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2596,7 +2713,7 @@ msgstr "" "je\n" " vstavaná funkcia shellu." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2623,7 +2740,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak shell nevykonáva funkciu shellu a EXPR nie je neplatný." -#: builtins.c:385 +#: builtins.c:387 #, fuzzy msgid "" "Change the shell working directory.\n" @@ -2647,16 +2764,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2697,13 +2814,14 @@ msgstr "" " Vráti 0 ak bol aktuálny adresár zmenený a ak sa pri použití voľby -P\n" " úspeÅ¡ne nastaví $PWD, inak nenulovú hodnotu." -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2725,7 +2843,7 @@ msgstr "" " Vracia 0 ak nie je zadaná neplatná voľba alebo nie je možné\n" " preÄítaÅ¥ aktuálny adresár." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2741,7 +2859,7 @@ msgstr "" " Návratová hodnota:\n" " Vždy vráti pravda." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2753,7 +2871,7 @@ msgstr "" " Návratová hodnota:\n" " Vždy vráti 0." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2767,7 +2885,8 @@ msgstr "" " Návratová hodnota:\n" " Vždy vráti nepravda." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2777,10 +2896,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2800,7 +2919,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu PRÃKAZu alebo zlyhá ak nenájde PRÃKAZ." -#: builtins.c:487 +#: builtins.c:490 #, fuzzy msgid "" "Set variable values and attributes.\n" @@ -2811,9 +2930,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2874,17 +2993,18 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "NastaviÅ¥ hodnoty a atribúty premenných.\n" " \n" " Zastaralé. Pozri „help declare“." -#: builtins.c:535 +#: builtins.c:538 #, fuzzy msgid "" "Define local variables.\n" @@ -2911,7 +3031,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba, nevyskytla sa chyba a\n" " shell práve nevykonáva funkciu." -#: builtins.c:552 +#: builtins.c:555 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2938,9 +3058,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2973,7 +3093,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nevyskytla sa chyba pri zápise." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2995,7 +3115,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nevyskytla sa chyba pri zápise." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3049,7 +3169,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak NÃZOV nie je vstavaná funkcia shellu a nevyskytla sa chyba." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3068,7 +3188,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu príkazu alebo 0 ak je príkaz prázdny." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3144,7 +3264,8 @@ 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:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3155,8 +3276,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3184,7 +3305,7 @@ msgstr "" " Vráti 0 ak sa nestane, že PRÃKAZ nebol nájdený a nevyskytne sa chyba\n" " presmerovania." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3196,7 +3317,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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3209,7 +3330,7 @@ msgstr "" " UkonÄí login shell s návratovou hodnotou N. Vráti chybu ak nie je\n" " spustený v login shelli." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3265,7 +3386,7 @@ msgstr "" " Vráti 0 alebo stav vykonaného príkazu; nenulovú hodnotu ak sa vyskytne\n" " chyba." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3285,7 +3406,7 @@ msgstr "" " Stav príkazu umiestneného do popredia; nenulovú hodnotu ak sa vyskytne\n" " chyba." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3306,7 +3427,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nie je riadenie úloh vypnuté a nevyskytne sa chyba." -#: builtins.c:784 +#: builtins.c:787 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3316,15 +3437,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3354,7 +3475,8 @@ msgstr "" " Vráti 0 ak sa nestalo, že NÃZOV nebol nájdený a nebola zadaná\n" " neplatná voľba." -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3366,7 +3488,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3394,7 +3516,8 @@ msgstr "" " Vráti 0 ak sa nestalo, že VZOR nebol nájdený a nebola zadaná\n" " neplatná voľba." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3403,23 +3526,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3457,7 +3580,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:869 +#: builtins.c:872 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3468,7 +3591,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3501,7 +3624,8 @@ 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:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3511,7 +3635,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3531,7 +3655,8 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná JOBSPEC." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3543,7 +3668,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3571,7 +3697,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3656,7 +3782,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:983 +#: builtins.c:987 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3678,27 +3804,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3750,7 +3877,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:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3771,7 +3898,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti N alebo zlyhá ak shell nevykonáva funkciu Äi skript." -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3840,7 +3967,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3942,7 +4070,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba." -#: builtins.c:1126 +#: builtins.c:1132 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -3953,7 +4081,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3982,7 +4110,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÃZOV iba na Äítanie a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4017,7 +4145,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÃZOV neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1167 +#: builtins.c:1173 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4030,9 +4158,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4058,7 +4185,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÃZOV neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4076,7 +4203,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je N záporné alebo väÄÅ¡ie ako $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4100,7 +4227,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:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4124,7 +4251,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je vypnuté riadenie úloh a nevyskytla sa chyba." -#: builtins.c:1248 +#: builtins.c:1254 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4189,9 +4316,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4286,7 +4413,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:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4298,7 +4425,7 @@ msgstr "" " Toto je synonymum vsatavanej funkcie „test“, ale posledný\n" " argument musí byÅ¥ literál „]“, ktorý uzatvára otvárajúcu „[“." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4317,7 +4444,7 @@ msgstr "" " Návratová hodnota:\n" " Vždy vráti 0." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4397,7 +4524,8 @@ msgstr "" " Vráti 0 ak sa nestalo, že je SIGSPEC neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -4406,18 +4534,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4452,7 +4580,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak boli nájdené vÅ¡etky NÃZVY; zlyhá ak nie." -#: builtins.c:1417 +#: builtins.c:1424 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4471,6 +4599,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4482,7 +4611,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4540,7 +4670,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4574,7 +4704,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je REŽIM neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1485 +#: builtins.c:1494 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4606,7 +4736,7 @@ msgstr "" " Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná\n" " neplatná voľba." -#: builtins.c:1506 +#: builtins.c:1515 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4632,7 +4762,7 @@ msgstr "" " Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná neplatná\n" " voľba." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4654,7 +4784,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4684,7 +4814,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4719,7 +4849,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4747,7 +4877,7 @@ msgstr "" " Návratová hodnota:\n" " Návratová hodnota je návratová hodnota RÚRY." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4765,7 +4895,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4802,7 +4932,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4820,7 +4950,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4838,7 +4968,8 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4848,7 +4979,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "VytvoriÅ¥ koproces s názvom NÃZOV.\n" " \n" @@ -4860,7 +4991,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu PRÃKAZu." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4885,7 +5016,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je NÃZOV iba na Äítanie." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4903,7 +5034,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4927,7 +5058,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu obnovenej úlohy." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4945,7 +5076,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 1 ak sa VÃRAZ vyhodnotí na 0; inak vráti 0." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -4993,7 +5124,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 alebo 1 v závislosti na hodnote VÃRAZu." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5097,7 +5228,8 @@ 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:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -5107,19 +5239,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5153,7 +5285,8 @@ msgstr "" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" " chyba pri zmene adresára." -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -5162,16 +5295,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5203,7 +5336,8 @@ msgstr "" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" " chyba pri zmene adresára." -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -5214,19 +5348,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5254,7 +5388,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa chyba." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5292,7 +5426,7 @@ msgstr "" " Vráti 0 ak je OPTNAME zapnuté; zlyhá ak bola zadaná\n" " neplatná voľba alebo OPTNAME je vypnuté." -#: builtins.c:1908 +#: builtins.c:1919 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5310,15 +5444,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5357,7 +5491,8 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba pri\n" " zápise Äi priradení." -#: builtins.c:1942 +#: builtins.c:1953 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5370,11 +5505,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5405,7 +5540,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5425,7 +5560,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5481,7 +5616,8 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a NÃZOV nemá definovanú\n" " Å¡pecifikáciu dopĺňania." -#: builtins.c:2015 +#: builtins.c:2026 +#, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5492,20 +5628,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5554,7 +5691,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:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5564,6 +5701,26 @@ msgstr "" " \n" " Synonymum k „mapfile“." +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "pravda" + +#~ msgid "false" +#~ msgstr "nepravda" + +#~ msgid "times" +#~ msgstr "-krát" + +#, fuzzy +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc." + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" @@ -5727,9 +5884,6 @@ msgstr "" #~ msgid "removes the top directory from the stack, and cd's to the new" #~ msgstr "odstráni vrchný adresár zo zásobníka a zmení aktuálny adresár" -#~ msgid "top directory." -#~ msgstr "na nový vrchol zásobníka." - #~ msgid "+N removes the Nth entry counting from the left of the list" #~ msgstr "+N Odstráni N-túä položku (poÄítajúc zľava zoznamu," diff --git a/po/sl.gmo b/po/sl.gmo index 3613894b9a4f81ddab602a3e4d82308285974dac..52935ec884ae642b045ca3cf1244078f205df6e6 100644 GIT binary patch delta 10934 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 delta 29302 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 diff --git a/po/sl.po b/po/sl.po index 58e4236..9c23fad 100644 --- a/po/sl.po +++ b/po/sl.po @@ -9,82 +9,88 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" "PO-Revision-Date: 2012-05-29 16:17+0100\n" "Last-Translator: Klemen KoÅ¡ir \n" "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" +"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:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "slab podpis polja" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: ni mogoÄe pretvoriti zabeleženega polja v povezano polje" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neveljaven kljuÄ povezanega polja" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ni mogoÄe dodeliti v ne-Å¡tevilÄno kazalo" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, 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:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ni mogoÄe ustvariti: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: ni mogoÄe najti tipkovne razvrstitve za ukaz" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvi znak brez presledka ni `\"'" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "brez zakljuÄka `%c' v %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: manjka loÄilnik dvopiÄja" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': neveljaven vzdevek" @@ -93,45 +99,45 @@ msgstr "`%s': neveljaven vzdevek" msgid "line editing not enabled" msgstr "urejanje vrstic ni omogoÄeno" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': neveljavno ime tipkovne razvrstitve" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ni mogoÄe brati: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': ni mogoÄe odvezati" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "`%s': neznano ime funkcije" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ni vezan na nobeno tipko.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s se lahko pokliÄe s pomoÄjo " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "Å¡tevec zanke" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "smiselno samo v `for', `while', ali `until' zanki" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -141,300 +147,329 @@ msgstr "" " \n" " Brez EXPR vrne " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME ni nastavljen" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "preveÄ argumentov" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "ni druge mape" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD ni nastavljen" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "vrstica %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "opozorilo: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: možnost zahteva argument" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: zahtevan je Å¡tevni argument" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: ni mogoÄe najti" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: neveljavna možnost" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: neveljavno ime možnosti" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': neveljavno doloÄilo" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "neveljavno osmiÅ¡ko Å¡tevilo" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "neveljavno Å¡estnajstiÅ¡ko Å¡tevilo" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "neveljavno Å¡tevilo" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: neveljavno doloÄilo signala" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': ni doloÄilo opravila ali neveljavno doloÄilo posla" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: spremenljivka le za branje" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s izven dosega" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s izven dosega" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: ni takÅ¡nega posla" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: ni nadzora posla" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "ni nadzora posla" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: omejeno" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "omejeno" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ni vgrajena lupina" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "napaka med pisanjem: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "napaka med nastavljanjem atributov terminala: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "napaka med pridobivanjem atributov terminala: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: napaka med pridobivanjem trenutne mape: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: dvoumno doloÄilo posla" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: neveljavno ime dejanja" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: ni doloÄila dopolnjevanja" -#: builtins/complete.def:697 +#: builtins/complete.def:699 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:699 +#: builtins/complete.def:701 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:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "trenutno se ne izvaja funkcija dopolnjevanja" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "se lahko uporabi samo v funkciji" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, fuzzy, c-format +msgid "%s: circular name reference" +msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "ni mogoÄe uporabiti `-f' za ustvarjanje funkcij" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija samo za branje" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: ni mogoÄe pretvoriti povezanega polja v zabeleženo polje" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dinamiÄno nalaganje ni na voljo" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "ni mogoÄe odpreti predmeta v souporabi %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "ni mogoÄe najti %s v predmetu v souporabi %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: ni dinamiÄno naloženo" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: ni mogoÄe izbrisati: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: je mapa" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: ni obiÄajna datoteka" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ni mogoÄe izvesti binarne datoteke" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ni mogoÄe izvesti: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "odjava\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "ni prijavna lupina: uporabite `exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Obstajajo ustavljeni posli.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Obstajajo posli, ki se izvajajo.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "najdenega ni nobenega ukaza" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "doloÄilo zgodovine" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ni mogoÄe odpreti zaÄasne datoteke: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "trenutno" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "posel %d se je priÄel brez nadzora" @@ -453,17 +488,17 @@ msgstr "%s: možnost zahteva argument -- %c\n" msgid "hashing disabled" msgstr "razprÅ¡itev je onemogoÄena" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: razprÅ¡itvena razpredelnica je prazna\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "zadetki\tukaz\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" @@ -472,20 +507,20 @@ msgstr[1] "KljuÄna beseda, ki se ujema z ukazi lupine `" msgstr[2] "KljuÄni besedi, ki se ujemata z ukazi lupine `" msgstr[3] "KljuÄne besede, ki se ujemajo z ukazi lupine `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, 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'." +"nobena tema pomoÄi se ne ujema s `%s'. Poskusite `help help' ali `man -k %" +"s' ali `info %s'." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ni mogoÄe odpreti: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -506,15 +541,20 @@ msgstr "" "Zvezdica (*) poleg imena pomeni, da je ukaz onemogoÄen.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "ni mogoÄe uporabiti veÄ kot eno od -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "položaj zgodovine" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: neveljaven argument omejitve" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: razÅ¡iritev zgodovine je spodletela" @@ -528,113 +568,113 @@ msgstr "%s: inlib je spodletel" msgid "no other options allowed with `-x'" msgstr "druge možnosti niso dovoljene z `-x'" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumenti morajo biti doloÄila opravila ali posla" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Neznana napaka" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "izraz je bil priÄakovan" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: ni zabeleženo polje" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neveljavno doloÄilo opisnika datoteke" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neveljaven opisnik datoteke: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: neveljavno Å¡tetje vrstic" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: neveljaven izvor polja" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neveljaven del povratnega klica" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "prazno ime spremenljivke polja" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "potrebna podpora spremenljivke polja" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': manjka znak oblike" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': neveljavno doloÄilo vrste Äasa" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': neveljaven znak oblike" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "opozorilo: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "manjka Å¡estnajstiÅ¡ka Å¡tevka za \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "manjka Å¡tevka s podporo unicode za \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "ni druge mape" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, fuzzy, c-format msgid "%s: invalid argument" msgstr "%s: neveljaven argument omejitve" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "sklad mape je prazen" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "kazalo sklada mape" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -675,7 +715,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:711 +#: builtins/pushd.def:718 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" @@ -721,7 +761,7 @@ msgstr "" " \n" " Ukaz lupine `dirs' prikaže sklad map." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -759,143 +799,153 @@ msgstr "" " \n" " Ukaz lupine `dirs' prikaže sklad map." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neveljavno doloÄilo Äasovne omejitve" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "napaka med branjem: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "ni mogoÄe ponastaviti funkcije in spremenljivke hkrati" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: ni mogoÄe ponastaviti" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ni mogoÄe ponastaviti: samo za branje %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: ni spremenljivka polja" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: ni funkcija" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: ni mogoÄe ponastaviti" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "Å¡tetje premika" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "ni mogoÄe nastaviti in ponastaviti možnosti lupine hkrati" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neveljavno ime možnosti lupine" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "zahtevan je argument imena datoteke" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: datoteke ni mogoÄe najti" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "ni mogoÄe dati v pripravljenost" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "prijavne lupine ni mogoÄe dati v pripravljenost" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s je drugo ime za `%s'\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je kljuÄna beseda lupine\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s je funkcija\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s je vgrajena lupina\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s je vgrajena lupina\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s je razprÅ¡eno (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: neveljaven argument omejitve" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': slab ukaz" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ni mogoÄe dobiti omejitve: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "omejitev" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ni mogoÄe spremeniti omejitve: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "osmiÅ¡ko Å¡tevilo" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "`%c': neveljaven operator simbolnega naÄina" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "`%c': neveljaven znak simbolnega naÄina" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " vrstica " @@ -909,82 +959,103 @@ msgstr "zadnji ukaz: %s\n" msgid "Aborting..." msgstr "Prekinjanje ..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "neznana napaka ukaza" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "slaba vrsta ukaza" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "slab povezovalnik" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "slab skok" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: nedoloÄena spremenljivka" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': neveljaven znak oblike" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "napaka cevi" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: omejeno: ni mogoÄe doloÄiti `/' v imenih ukaza" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: ukaza ni mogoÄe najti" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: slab tolmaÄ" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ni mogoÄe izvesti binarne datoteke" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je vgrajena lupina\n" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "ni mogoÄe podvajati fd %d v fd %d" @@ -1029,37 +1100,37 @@ msgstr "po predhodnem veÄanju ali manjÅ¡anju je priÄakovano doloÄilo" msgid "missing `)'" msgstr "manjka `)'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "skladenjska napaka: priÄakovan operand" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "skladenjska napaka: neveljaven aritmetiÄni operand" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (žeton napake je \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "neveljavna aritmetiÄna zbirka" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "vrednost je prevelika za zbirko" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: napaka izraza\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ni mogoÄe dostopati do nadrejenih map" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ni mogoÄe ponastaviti naÄina brez zakasnitve za fd %d" @@ -1074,148 +1145,148 @@ msgstr "ni mogoÄe dodeliti opisnika novih map za vnos bash iz fd %d" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: medpomnilnik že obstaja za nov fd %d" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: cev pgrp" -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "brisanje ustavljenega posla %d s skupino opravila %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: opravilo %5ld (%s) v the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ni takÅ¡nega doloÄila opravila" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "KonÄano" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Zaustavljeno" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Zaustavljeno(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Se izvaja" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "KonÄano(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "KonÄaj %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Neznano stanje" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(izpis jedra) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "podrejeno opravilo setpgid (%ld v %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: ni zapisov o opravilu %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: posel %d je zaustavljen" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: posel je uniÄen" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: posel %d se že izvaja v ozadju" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: vklop WNOHANG za prepreÄitev nedoloÄenosti bloka" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: vrstica %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (izpis jedra)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd zdaj: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp je spodletel" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: vrstiÄna disciplina" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ni mogoÄe nastaviti skupine opravil terminala (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "brez nadzora posla v tej lupini" @@ -1273,17 +1344,17 @@ msgstr "" "realloc: velikosti zaÄetnih in konÄnih podatkovnih kosov \"chunk\" se " "razlikujejo" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: je %p že v razpredelnici kot prost?\n" @@ -1307,7 +1378,7 @@ msgstr "%s: neveljavna storitev" msgid "%s: bad network path specification" msgstr "%s: slabo doloÄilo omrežne poti" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "omrežno opravilo ni podprto" @@ -1344,224 +1415,259 @@ msgstr "Imate novo poÅ¡to v $_" msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v %s je bila prebrana\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "skladenjska napaka: potreben je aritmetiÄni izraz" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "skladenjska napaka: `;' nepriÄakovano" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "skladenjska napaka: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: slaba vrsta navodila %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, 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:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: navodilo preusmeritve `%d' je izven dosega" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `%c'" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `]]'" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "skladenjska napaka v pogojnem izrazu: nepriÄakovan žeton `%s'" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "skladenjska napaka v pogojnem izrazu" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "nepriÄakovan žeton `%s', priÄakovan je bil `)'" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "priÄakovan `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "nepriÄakovan argument `%s' do pogojnega enoslovnega operatorja" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "nepriÄakovan argument do pogojnega enoslovnega operatorja" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "nepriÄakovan žeton `%s', priÄakovan je binarni pogojni operator" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "priÄakovan je binarni pogojni operator" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "nepriÄakovan argument `%s' do pogojnega binarnega operatorja" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "nepriÄakovan argument do pogojnega binarnega operatorja" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "nepriÄakovan žeton `%c' v pogojnem ukazu" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "nepriÄakovan žeton `%s' v pogojnem ukazu" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "nepriÄakovan žeton %d v pogojnem ukazu" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "skladenjska napaka blizu nepriÄakovanega žetona `%s'" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "skladenjska napaka blizu `%s'" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "skladenjska napaka: nepriÄakovan konec datoteke" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "skladenjska napaka" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Uporabite \"%s\", Äe želite zapustiti lupino.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `)'" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "konÄano: funkcije `%s' ni mogoÄe najti" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: slab povezovalnik `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: neveljaven opisnik datoteke" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: prazen kazalec datoteke NULL" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': neveljaven znak oblike" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "opisnik datoteke je izven dosega" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: dvoumna preusmeritev" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ni mogoÄe prepisati obstojeÄe datoteke" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: omejitev: ni mogoÄe preusmeriti izhoda" -#: redir.c:191 +#: redir.c:192 #, 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:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ni mogoÄe dodeliti fd spremenljivki" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port ni podprt brez omrežja" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "napaka preusmeritve: ni mogoÄe podvajati fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "ni mogoÄe najti /tmp, ustvarite ga!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti veljavno ime mape" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neveljavna možnost" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "ni mogoÄe ponastaviti naÄina brez zakasnitve za fd %d" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "ni mogoÄe ponastaviti naÄina brez zakasnitve za fd %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: je mapa" + +#: shell.c:1777 msgid "I have no name!" msgstr "Ni imena!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, razliÄica %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1570,40 +1676,50 @@ msgstr "" "Uporaba:\t%s [dolga možnost GNU] [možnost] ...\n" "\t%s [dolga možnost GNU] [možnost] skriptni dokument ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Dolge možnosti GNU:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Možnosti lupine:\n" -#: shell.c:1835 +#: shell.c:1938 #, 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:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ali možnost -o\n" -#: shell.c:1856 +#: shell.c:1959 #, 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:1857 +#: shell.c:1960 #, 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:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Uporabite ukaz `bashbug' za poroÄanje hroÅ¡Äev.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neveljavno opravilo" @@ -1777,89 +1893,104 @@ msgstr "Neznan signal #" msgid "Unknown Signal #%d" msgstr "Neznan signal #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "slaba zamenjava: ni zakljuÄka `%s' v %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ni mogoÄe dodeliti seznama Älanu polja" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "ni mogoÄe ustvariti pipe za zamenjavo opravila" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "ni mogoÄe ustvariti podrejenega opravila za zamenjavo opravila" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "ni mogoÄe odpreti imenovane cevi %s za branje" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "ni mogoÄe odpreti imenovane cevi %s za pisanje" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "ni mogoÄe podvajati imenovane cevi %s kot fd %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "slaba zamenjava: ni zakljuÄka \"`\" v %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "ni mogoÄe ustvariti cevi za zamenjavo ukaza" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "ni mogoÄe ustvariti podrejenega opravila za zamenjavo ukaza" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: ni mogoÄe podvajati cevi kot fd 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, fuzzy, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parameter je prazen ali pa ni doloÄen" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: izraz podniza < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: slaba zamenjava" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: neveljavno Å¡tetje vrstic" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "`%s': neveljaven vzdevek" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parameter je prazen ali pa ni doloÄen" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: izraz podniza < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ni mogoÄe dodeliti na tak naÄin" -#: subst.c:7917 +#: subst.c:8802 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:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "slaba zamenjava: ni zakljuÄka \"`\" v %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "ni ujemanja: %s" @@ -1873,123 +2004,123 @@ msgstr "priÄakovan je argument" msgid "%s: integer expression expected" msgstr "%s: priÄakovan je izraz celega Å¡tevila" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "priÄakovan je `)'" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "priÄakovan je `)', najden je %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: priÄakuje se enosnoven operator" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: priÄakuje se binarni operator" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "manjka `]'" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "neveljavna Å¡tevka signala" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: roÄnik signala je SIG_DFL, ponovno poÅ¡iljanje %d (%s) sebi" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: slab signal %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "napaka med uvozom doloÄila funkcije `%s'" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "raven lupine (%d) je previsoka, ponastavljanje na 1" -#: variables.c:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: v trenutnem dosegu ni vsebine funkcije" -#: variables.c:2247 +#: variables.c:2432 #, fuzzy, c-format msgid "%s: variable may not be assigned value" msgstr "%s: ni mogoÄe dodeliti fd spremenljivki" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: v trenutnem dosegu ni vsebine funkcije" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s ima prazen exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neveljaven znak %d v exportstr za %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "ni `=' v exportstr za %s" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: glava shell_variables ni vsebina funkcije" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ni vsebine global_variables" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: glava shell_variables ni trenuten obseg okolja" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ni mogoÄe odpreti kot DATOTEKO" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" -#: variables.c:5307 +#: variables.c:5669 #, fuzzy, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s izven dosega" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." #: version.c:47 version2.c:47 @@ -2015,11 +2146,6 @@ msgstr "To je prosta programska oprema; lahko jo spreminjate in razÅ¡irjate.\n" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Je BREZ KAKRÅ NEKOLI GARANCIJE, v obsegu, ki ga dovoljuje zakonodaja.\n" -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2040,15 +2166,15 @@ msgstr "%s: %s:%d: ni mogoÄe dodeliti %lu bajtov (%lu bajtov dodeljenih)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: ni mogoÄe dodeliti %lu bajtov" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [ime[=vrednost] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] ime [ime ...]" -#: builtins.c:51 +#: builtins.c:53 #, fuzzy msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" @@ -2058,115 +2184,104 @@ msgstr "" "tipk_zaporedje] [-x tipk_zaporedje:ukaz_lupine] [tipk_zaporedje:" "funkcija_brane_vrstice ali ukaz_brane_vrstice]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [vgrajena_lupina [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [izraz]" -#: builtins.c:64 +#: builtins.c:66 #, fuzzy msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]]] [mapa]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "prav" - -#: builtins.c:72 -msgid "false" -msgstr "napak" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "ukaz [-pVv] ukaz [arg ...]" -#: builtins.c:76 +#: builtins.c:78 #, fuzzy msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [ime[=vrednost] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "typeset [-aAfFgilrtux] [-p] ime[=vrednost] ..." -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [možnost] ime[=vrednost] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f ime_datoteke] [ime ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts niz_možnosti ime[arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a ime] [ukaz [argumenti ...]] [preusmeritev ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 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]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [doloÄilo_posla]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [doloÄilo_posla ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p ime_poti] [-dt] [ime ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [vzorec ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2174,15 +2289,16 @@ msgstr "" "history [-c] [-d odmik] [n] ali history -anrw [ime_datoteke] ali history -ps " "arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [doloÄilo_posla ...] ali jobs -x ukaz [argumenti]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [doloÄilo_posla ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2190,11 +2306,11 @@ 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 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2202,166 +2318,162 @@ 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 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o ime_možnosti] [--] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 #, fuzzy msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [ime ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [ime[=vrednost] ...] ali export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [ime[=vrednost] ...] ali readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source ime_datoteke [argumenti]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". ime_datoteke [argumenti]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [izraz]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "krat" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] doloÄilo_signala ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] ime [ime ...]" -#: builtins.c:169 +#: builtins.c:171 #, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [meja]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [naÄin]" -#: builtins.c:175 +#: builtins.c:177 #, fuzzy msgid "wait [-n] [id ...]" msgstr "wait [id]" -#: builtins.c:179 +#: builtins.c:181 #, fuzzy msgid "wait [pid ...]" msgstr "wait [id_opravila]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for IME [in IMENA ... ] ; do UKAZI; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( izraz1; izraz2; izraz3 )); do UKAZI; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select IME [in IMENA ... ;] do UKAZI; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] cevovod" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case IME in [VZOREC [| VZOREC]...) UKAZI ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 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 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while UKAZI; do UKAZI; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until UKAZI; do UKAZI; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [IME] ukaz [preusmeritve]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function ime { UKAZI ; } ali ime () { UKAZI ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ UKAZI ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "doloÄilo_posla [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( izraz ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ izraz ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "spremenljivke - Imena in pomeni nekaterih spremenljivk lupine" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | mapa]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [ime_možnosti ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v spremenljivka] oblika [argumenti]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2371,28 +2483,30 @@ msgstr "" "krajevni_vzorec] [-W seznam_besed] [-F funkcija] [-C ukaz] [-X " "filtrirni_vzorec] [-P predpona] [-S pripona] [ime ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" 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 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o možnost] [-DE] [ime ...]" -#: builtins.c:240 +#: builtins.c:242 +#, fuzzy msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "mapfile [-n Å¡tevec] [-O izvor] [-s Å¡tevec] [-t] [-u fd] [-C povratni_klic] [-" "c del] [polje]" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2400,7 +2514,8 @@ msgstr "" "readarray [-n Å¡tevec] [-O izvor] [-s Å¡tevec] [-t] [-u fd] [-C povratni_klic] " "[-c del] [polje]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2412,7 +2527,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2436,12 +2551,13 @@ msgstr "" " vzdevek vrne pravilno, razen Äe je predloženo IME, za katero ni\n" " bil doloÄen noben vzdevek." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2452,7 +2568,7 @@ msgstr "" " \n" " Vrne pravilno, razen Äe IME ni obstojeÄ vzdevek." -#: builtins.c:289 +#: builtins.c:291 #, fuzzy msgid "" "Set Readline key bindings and variables.\n" @@ -2487,7 +2603,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2532,7 +2649,7 @@ msgstr "" " Status konÄanja:\n" " bind vrne 0, razen, Äe je dana neprepoznana možnost ali se pojavi napaka." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2550,7 +2667,7 @@ msgstr "" " Stanje konÄanja:\n" " Stanje konÄanja je 0, razen Äe N ni veÄji kot ali enak 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2568,7 +2685,7 @@ msgstr "" " Stanje konÄanja:\n" " Stanje konÄanja je 0, razen Äe N ni veÄji kot ali enak 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2592,7 +2709,7 @@ msgstr "" " Vrne stanje konÄanja VGRAJENE_LUPINE ali napak, Äe VGRAJENA_LUPINA\n" " ni vgrajena lupina .." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2620,7 +2737,7 @@ msgstr "" " Vrne 0, razen Äe lupina ne izvrÅ¡uje funkcije lupine ali pa IZRAZ\n" " ni veljaven." -#: builtins.c:385 +#: builtins.c:387 #, fuzzy msgid "" "Change the shell working directory.\n" @@ -2644,16 +2761,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2693,13 +2810,14 @@ 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:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2721,7 +2839,7 @@ msgstr "" " Vrne 0, razen Äe je dana neveljavna možnost ali pa trenutne mape\n" " ni mogoÄe prebrati." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2737,7 +2855,7 @@ msgstr "" " Stanje konÄanja:\n" " Vedno uspeÅ¡no." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2749,7 +2867,7 @@ msgstr "" " Stanje konÄanja:\n" " Vedno uspeÅ¡no." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2761,7 +2879,8 @@ msgstr "" " Stanje konÄanja:\n" " Vedno neuspeÅ¡no." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2771,10 +2890,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2794,7 +2913,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje konÄanja UKAZA ali neuspeÅ¡no, Äe UKAZA ni mogoÄe najti." -#: builtins.c:487 +#: builtins.c:490 #, fuzzy msgid "" "Set variable values and attributes.\n" @@ -2805,9 +2924,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2870,17 +2989,18 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali pride\n" " do napake." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Nastavi vrednosti spremenljivk in atributov.\n" " \n" " Zastarelo. Oglejte si `help declare'." -#: builtins.c:535 +#: builtins.c:538 #, fuzzy msgid "" "Define local variables.\n" @@ -2907,7 +3027,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost, pride\n" " do napake ali pa lupina ne izvaja funkcije." -#: builtins.c:552 +#: builtins.c:555 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2934,9 +3054,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2969,7 +3089,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne uspeÅ¡no, razen Äe pride do napake pri pisanju." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2991,7 +3111,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne uspeÅ¡no, razen Äe pride do napake pri pisanju." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3043,7 +3163,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne uspeÅ¡no, razen Äe IME ni vgrajena lupina ali Äe pride do napake." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3062,7 +3182,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje konÄanja ali uspeÅ¡no, Äe je ukaz prazen." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3140,7 +3260,8 @@ msgstr "" " Vrne uspeÅ¡no, Äe je možnost najdena; neuspeÅ¡no, Äe pride\n" " do konca možnosti ali do napake." -#: builtins.c:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3151,8 +3272,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3179,7 +3300,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne uspeÅ¡no, razen Äe UKAZ ni najden ali pride do napake preusmeritve." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3191,7 +3312,7 @@ msgstr "" " KonÄa lupino s stanjem N. ÄŒe je N izpuÅ¡Äen, se uporabi stanje\n" " konÄanja zadnjega izvrÅ¡enega ukaza." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3204,7 +3325,7 @@ msgstr "" " KonÄa prijavno lupino s stanjem konÄanja N. Vrne napako, Äe se\n" " ne izvede v prijavni lupini." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3258,7 +3379,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne uspeÅ¡no ali stanje izvedenega ukaza; ne-niÄelno, Äe pride do napake." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3279,7 +3400,7 @@ msgstr "" " Stanje ukaza, postavljenega v ospredje, ali neuspeÅ¡no, Äe se\n" " pojavi napaka." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3302,7 +3423,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe nadzor posla ni omogoÄen ali Äe pride\n" " do napake." -#: builtins.c:784 +#: builtins.c:787 #, fuzzy msgid "" "Remember or display program locations.\n" @@ -3312,15 +3433,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3345,7 +3466,8 @@ msgstr "" " Stanje konÄanja:\n" " Vrne uspeÅ¡no, razen Äe IME ni najdeno ali Äe je dana neveljavna možnost." -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3357,7 +3479,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3385,7 +3507,8 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe VZOREC ni najden ali pa je dana neveljavna\n" " možnost." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3394,23 +3517,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3452,7 +3575,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je podana neveljavna možnost ali Äe pride\n" " do napake." -#: builtins.c:869 +#: builtins.c:872 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3463,7 +3586,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3497,7 +3620,8 @@ 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:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3507,7 +3631,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3529,7 +3653,8 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je dano\n" " DOLOÄŒILO_POSLA." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3541,7 +3666,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3570,7 +3696,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do\n" " napake." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3657,7 +3783,7 @@ msgstr "" " Stanje konÄanja\n" " ÄŒe zadnji ARG ovrednoti na 0, let vrne 1; sicer let vrne 0." -#: builtins.c:983 +#: builtins.c:987 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3679,27 +3805,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3749,7 +3876,7 @@ msgstr "" " omejitev prekoraÄena ali Äe je dan neveljaven opisnik datotek kot\n" " argument v -u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3769,7 +3896,7 @@ msgstr "" " Stanje konÄanja\n" " Vrne N ali neuspeÅ¡no, Äe lupina ne izvede funkcije ali skripta." -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3838,7 +3965,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3941,7 +4069,7 @@ msgstr "" " Stanje konÄanja\n" " Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost." -#: builtins.c:1126 +#: builtins.c:1132 #, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" @@ -3952,7 +4080,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3980,7 +4108,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je IME samo\n" " za branje." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4014,7 +4142,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je\n" " neveljavno IME." -#: builtins.c:1167 +#: builtins.c:1173 #, fuzzy msgid "" "Mark shell variables as unchangeable.\n" @@ -4027,9 +4155,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4055,7 +4182,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je\n" " neveljavno IME." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4073,7 +4200,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne uspeÅ¡no, razen Äe je N negativen ali veÄji kot $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4097,7 +4224,7 @@ msgstr "" " Vrne stanje zadnjega izvrÅ¡enega ukaza v IMENU_DATOTEKE; vrne\n" " neuspeÅ¡no, Äe IMENA_DATOTEKE ni mogoÄe brati." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4123,7 +4250,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe nadzor posla ni omogoÄen ali Äe pride do\n" " napake." -#: builtins.c:1248 +#: builtins.c:1254 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4188,9 +4315,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4285,7 +4412,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:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4297,7 +4424,7 @@ msgstr "" " To je sopomenka za vgrajeno lupino \"test\", toda zadnji argument\n" " mora biti dobesedni `]' za ujemanje z uklepajem `['." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4316,7 +4443,7 @@ msgstr "" " Stanje konÄanja:\n" " Vedno uspeÅ¡no." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4396,7 +4523,8 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je SIGSPEC neveljaven ali je dana neveljavna " "možnost." -#: builtins.c:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -4405,18 +4533,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4453,7 +4581,7 @@ msgstr "" " Vrne uspeÅ¡no, Äe so vsa IMENA najdena; vrne neuspeÅ¡no, Äe katero\n" " ni najdeno." -#: builtins.c:1417 +#: builtins.c:1424 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4472,6 +4600,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4483,7 +4612,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4543,7 +4673,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do\n" " napake." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4577,7 +4707,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je NAÄŒIN neveljaven ali Äe je dana neveljavna\n" " možnost." -#: builtins.c:1485 +#: builtins.c:1494 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4610,7 +4740,7 @@ msgstr "" " Vrne stanje ID-ja; vrne neuspeÅ¡no, Äe je ID neveljaven ali Äe je dana\n" " neveljavna možnost." -#: builtins.c:1506 +#: builtins.c:1515 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" @@ -4635,7 +4765,7 @@ msgstr "" " Vrne stanje ID-ja; neuspeÅ¡no, Äe je ID neveljaven ali Äe je dana\n" " neveljavna možnost." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4658,7 +4788,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4689,7 +4819,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4726,7 +4856,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4755,7 +4885,7 @@ msgstr "" " Stanje konÄanja:\n" " Stanje konÄanja je stanje konÄanja CEVOVODA." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4773,7 +4903,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4807,7 +4937,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4825,7 +4955,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4843,7 +4973,8 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4853,7 +4984,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Ustvari soopravilo, imenovano IME.\n" " \n" @@ -4865,7 +4996,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje konÄanja UKAZA." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4889,7 +5020,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne uspeÅ¡no, razen Äe je IME samo za branje." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4907,7 +5038,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4931,7 +5062,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne stanje obnovljenega posla." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4949,7 +5080,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne 1, Äe je IZRAZ enakovreden; sicer vrne 0." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5003,7 +5134,7 @@ msgstr "" " Stanje konÄanja:\n" " 0 ali 1, odvisno od vrednosti IZRAZA." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5107,7 +5238,8 @@ 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:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -5117,19 +5249,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5163,7 +5295,8 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je predložen neveljaven argument ali Äe\n" " sprememba mape spodleti." -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -5172,16 +5305,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5213,7 +5346,8 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je predložen neveljaven argument ali Äe\n" " sprememba mape spodleti." -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -5224,19 +5358,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5264,7 +5398,7 @@ msgstr "" " Stanje konÄanja:\n" " Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do napake." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5301,7 +5435,7 @@ msgstr "" " Vrne uspeÅ¡no, Äe je IME_MOŽNOSTI omogoÄeno; neuspeÅ¡no, Äe je\n" " dana neveljavna možnost ali Äe je IME_MOŽNOSTI onemogoÄeno." -#: builtins.c:1908 +#: builtins.c:1919 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5319,15 +5453,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5367,7 +5501,8 @@ msgstr "" "napake\n" " branja ali dodelitve." -#: builtins.c:1942 +#: builtins.c:1953 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5380,11 +5515,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5418,7 +5553,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali Äe pride\n" " do napake." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5440,7 +5575,7 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali Äe pride\n" " do napake." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5496,7 +5631,8 @@ msgstr "" " Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali pa IME\n" " nima doloÄenega doloÄila dopolnjevanja." -#: builtins.c:2015 +#: builtins.c:2026 +#, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5507,20 +5643,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5572,7 +5709,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:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5582,6 +5719,26 @@ msgstr "" " \n" " Je sopomenka za `mapfile'." +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "prav" + +#~ msgid "false" +#~ msgstr "napak" + +#~ msgid "times" +#~ msgstr "krat" + +#, fuzzy +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n" diff --git a/po/sr.gmo b/po/sr.gmo index 5e4dcd53d16bf51bdbf3c4b7a50b773cc3addfb6..c052db364c6565b7ae37e2363e7e7479bd4eedf2 100644 GIT binary patch delta 17136 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 V+KwcneU>Bs-`*34W;sU0{1+(;X3PKp delta 27768 zcmbuG2Ygh;+VIagn*gDg5UOzKHKBJ90)!3;ML}eQDWVC>^ZFGQAV1UahE`3lsa4ozDZh-aR zW6*|&pfvm*Yy>}sP2f+k1#HmEFgn9jNZZCtIE40%n~2Cro`-|sr%*c3wzuXWC?96Q zws1L=5#0qvVoyTp&?(plo`W{DNpytiE*C**c!SF$urci$Ur7We_B9NoY_xzPx(QGk z^h4>;I@lEMhBBgOp)`CNHiF+nDPOanPN%~9q|>34n+D~(0@xU?gJJ2>E;r*fm!H9g z_%RJB8d;7m{FY}`h%7b^)N<35&crw0&amK+7eg`9)r?AIh3jS z5lTHt*s64>DU<U{F!I|u4sy5 z7{wGw-)0z(!m>LI<4qdM+0ML^9=gLYs`KH#d(m+CEPMkF+G!YTVEtX%72g3xDer@4 z7{MXfob=s$G!H;g^1s3GUx|D|Bn9q$P=9z5$_F1n8~z4m4qG7}ak1T?NTN4Pf+L|! z-6WUu-TWdbY2u9=&5fik&lBPlAaBd;Lrx9@f;0|fz)f%XlyF`uMcHP+CcFW{a`IP0cO(SnNXJX z@B=BPTEEMoc&vXwQJ$Y&HfmxTECWV&C?76>BT4UVY8tQ8(eI$7|JuqlGGN`-x&t$y zNWcfh0WE{#7jA;rGT^O{4u*|}ZB1h~FFHc$Kp0BT?uPQ=372oc1$_7sTuVpBcF+~R z*3mTnNx8G|VI=X_PI}}^x|zyVuZ6Nf*#!}>@fd6X55rcn{zr*)Amc089yUf3JHf$F zM7RKoM3%s2a06@(AA+(>zX;pF4`EA~m})8)-4=?~Tnxp!CPJxq0qhCa!Zg}9o*^O? z{R<9)Nol6?e50WBbP{Y0uYl6Q6;L|18_I~vppq1Bdx z-hd#RKTxwH6lEC-MTFC#h&%+v zI#xoN`yEieD}|zzCt-K^AruMLAEeX$p`^2+Nahwe0&at%E8(|@$Ot}w;wZj?Qc=QS z-B2$mBg%k@&<{tzAe4@kK+*ccP^{t|C_3;xlzQ3^(UO=7<^6If64(NHA2wbfB6IjP z6tieD)HM3TaWD&pVP_bH($G&(bR~s_LbQJb6bVd)!{K5$13u!uH!jwaY5=9fo!~&& z56%?(4-kH1Lo#!$$% z&sYLQIrl=*nK$93@H;390^a*n6BFz&w{%!d~PT!|`wrl!1N&Mf*FB*GhOv zn20FVdMFi@x%>!piITDE|Vte0i-~2 z)x)4jD0~eOaX7a_(f-HW^y^UO^c<9qB~8*D=?_JT=0j1kFcjUm4@$=lLJ{$CC`$d7 zn?3`jqu)a5XyeJI?5@K`FCwCJ{h>5814>6$Lh0B;P&#rHiYI#)iU>VZw4><_2aui* z#cynbGDWXKnF1?QFFJjp)IZPVI;hV7PZJRj_Z<{7YnG)))CP+A4S=F-v!GbXawrXL zhBDHVP^{n|P&O`~Lm6qxRQ>%RDCIAOGKCvqJ$NTf75jf!BJebnhN?}|1v*2K#6Xwx zp-5^Clm;JwADNgJEFgX746RGGE-{Tf(tY8@a3>V&dLK&1K8H16-I>_G6lg+38kz}* z!WD1`dp?k0H|da&4!VL8<5gI13tAXwNkpieFd_FN2T63|MQP{%$Ii z_uHXJ^q9+p`P%1?g7Q8BC&EKeB#;#L>IQniOURfD#UDHg#o@dSXF_v>h9Odb}1C)TmhwHcR?B1OK$pmC`#GpN}WFjHX&UMmHppF zL@GWB#gY6BWsZ6;*4n)Sic&oeMKT{i@dNGiOk)xp2Is@IP(=PYl*OxFzMk4lC?4_} zm@IZd*RO}YY1#bdf^J}Uqo{gkrwa~D587`is$Z-~3S~-e zxrH+vLply+%0}%ljT|`5Wf>e}aba~YQ{ur-?84zNg7x>C#yawyhfL!ibh!Pa*nekU zn5BrYIu54HG`8^K*29cE$uR6=xLDp7okIEe@aEUB4n}bN@22qxBmL@iy~=HWM~n19 zXw#9W;VSBR8zNleiVqkN^}YO|X}mX)y+PO`fmeRTTVIsdX@=dTk1vYile9GlJ5K~3nEoJ99sg^P;2aY29 z6clS{n5MrQ4n?_gUcZak&-DWy9$m-j4pQMjD) zKU`@UeVB@?7F%L1VdMTHdc<6wgac^s+;R%gQ2XmGBOm3Ny%JH=q2sG9<0|;%EtWBq z{C4Xt<3Y;J-()GJN{U#=;GRqWmq}EMo=v>$YnN)w;_4Cpk#xl4Iig~yA z)x!T18A3!dE{9_O*TD!Q-wtJy*u(S~kHHCWB>WLx4u>GucJL0Dhv0ii>MUe-jHA^& zs@}{bkFgtx1Ys7EXjIFiB$d;^6INP(eFKj=o81pZdrP5o>_sRWhfkom z<4HdQW#^RG$fFjkK5!W6JU9I?l-2P=DBq_f>-rWzS)82Yut%B4DKf;ze+Fg!ZrNBj zFc(VtekePgkKjC*oT58g1Ur(x5sG9Ug=67Yuq7PO#ACFDGoZNYrBHO@RyYZ64-=7| zeFm4nzD@N9kHET!>=YDHzuU~C_IN{@dki1xMYuIMmQ6G3Ma#hTWPL?nWW!#*|oJt?SQU!`6ise`@Xi8 zOc=_}=?o0Q0d4e@?STtP{{lO}?6zv)VdEAe((vn0MAyBY7EKWprF;&`j_52DWvkiV zqwWjS;Af<7hQGps4tk{d9raX}!ZGB33h_%uS|=^3Ay6c>6b=*nKS)Fh{0K+D#Ljwz zW1uL{Za5IW;j&&Ak8-W!pzMO@L2;#aN@^uiaH4Z|V`y)`4uXCy% zz(go>z8a2$Ct-Lvk%nm=wdI-yyOVwr${fB2vta)odWvp_izOe5XeadaD2K8M&Lds3 zmlpk%F7JVz$$t&XhT|7_HEiD7qt=40y|I6p(|UdM-1dP|a2CvgOQ2}&J5cuVS$(xA z*TL4LpNBFvAHX)SML%t}!=Q-zW+)Erc_;&WAEv=N{XNRF4(*Tq%iP~e#(cO9-VJ|( z?V&S3cj#FtzWW_m3w{k{PJe~sNO}*{4$KenxW-Z_W_SaXsk$A`ho|ACaL^!a_K`3V zaV%$`EWh;zYbCrHN`og{z6(WbzlG9pzajd&#ZVmAb|`DXt5D`#mPiM*gE9rrKxT#NEKC?l>v!lSm~ z?O`|4nNXDT8YnLN02KST($&sJ5V~*W0Xhj zl5c@xrawY?-)*$+P#B8iIt67wtunMk^Po)8N;p>Re;tt(Wc(e<;c)sGEs-annB_Nc z1ROM0o6prQk3f-F!Z_`aCPNv>1CTwYQ37RZk3&(?@1ZDRkMY`!FN3vd-&jpV=42Bb z0iT2c_$`zQyc6^sZ-UanV^CJTHWPJ+GU05}TcE5JUqEp%6DN6$sc;h%9rzG7fVC%U zt7rwoiDV2VB4#)e4uH8(wErHM0AGMz;0ZVkehWqGdrr}-+(IY~tcEf*kHI`xJ=3E$ z9z}2=>Gz=ck1<)=-|Wr8{uhwZV5*+0B9||^OrECgKL^TGyagM=Hq*5o_l2TN*-#{M z3mgT@ph)T$C{{FUh8}qyl&M$&#fr*iVE^J+z98cY*yR$f#cQDKeC~qzQqX0GnYy6} z6vy%$>;%ui(Xjd~yViIF1c-Af4jPy6^WyPQ4L~FYhtgXmavG#oT1hG2^;t%AJRqiDDZQ(nFYY6Ft zGX!};gw2GJGXLEucm+Y8`2;_4F_(K_W4Fl9uN* z@#hFrh%bY(mz0N_y!gXu-UxHqp`PQATQy@BL2Q|mwR*T)G>#JfLCQzyK)f1k2RA`6 zqfx}=83cdQQKO}scRiGah?Be8H_Gds?z;@`A2?j#5D0q+DTGoA+yJXSN6C1N@HOw= zCfrb|z(L~6-1HtPLugBxY(gU8X3~A(S_1c3>gj?s7jyrhJe=fgBh)3_<`$R-f0GyP z^9$)02`ge5E=$OJgYYV$2H_>b1j2U0zuhu&r|=~4#|U>5Zv=P4k7N$y*$30yxt8<; z@`tB2L45n0gr;s;qUutixA_@Kqe}eMdPgv^4+Yo=0 z_!7bo#ATb+naan)y9j@E%Y8&#u3qFxgVo%)&SB3-e24oo(Jj{r z_UGLv!g+_#Ypk$wyAh7$?7#GfZzOuQKOfCr#FH<`53gv16CwFnOr zPjW{k1!7N4@=^(JlhM6&SP#c6{ddoUX6e!1Ypl{a{ob)6GX|cCOdhnmwDsT;v-I~N z@0;e}()WffHA|b0>S{%7t zf_eUIH-GGeZXN7`!eF*96!Hfa+WtVO$QvM~-v@K;`DtmLNJMU*aB*Zrdd*mcA5ZAs z+VWTzPye9`BB{G!n3 zE%MRT?4UbNJK)Xt<=9iw!;>@8)Hv0jjAg!Tx@nKfoIE*w%4pjgS{}$=R2U2di$i(K zyW30sMT_jBMLroSohr<+gT+M!#YHx$c%G`sACPQhC#AE4`T0^JI~WM~vWsYViQh|i z3j76OpIsERbNzWfJI5EwF7y`^1q(wo9P%#=_;OTT6z~Uf{LF~mQ?=AfD)t6!Z(*T# zxxK_&==Uz5f+^{fGbpK=^r?}^bcPoB^78Z;XV8}%U#_<}ugEPNO0wII%FLRUIjU{s zo4W_pa0i}N`ueQF9y6=7{@fLw(%V80nvp$48IdbCH;ZKc(kl`SG%fvN{@rHjtqV4o zkrp|_BXe^$N50HSkM#8AMjT&XGcEF0-?&I}?x5PbeKn4x$ei4Pb?jgvDpRC$O7G3R zDxoIA@fQ^5F-MVQ3tKt|8=AGli~J!ZvE0ssTJCxNfX@yT=P&RThPtD$zFhw@8KBRb zy~xfF=J<2{uE2bOBED3U<+bN`?UZKQ=_0L##reDv;Z0HXhU{P{ z7fP!c+46m}rrAl^c|LEUDp0vUkv5@bVO>%U16@ZGa&tqzqNE&Oo(~O@X^(xPyW^FH zrHGw5X3X@A8I{zI@4ZRhf&w2p68lI-8?ti?gZb3u57{BH&LEQ;)OCkl`H1SoIuS@h z(Q|BXUS5@IkT<#Va=ERFxb;@_v2rzqx|+&EPzow4?Dn!~5sHgC7csU_yidAIdS+$b zV*Og0w6xIg3MIR^uuvu;HqO|1stzaVyw-e3!5z3;FdT0n)=EKAfv+$(SePHL+qbO1 z8&Fb1a7sl;aN-MWMCVi#^-oTCq{33#u*kXMCRgFK_Za;4P^chl@y-2mU#G6;_>(0mMom*LV+m{#e*(-XaE%1gG&2vXo zNe}6bG^VPWF@AE!n9OOD(`QsT7^Q~V*#)|yQi0;UJn3zSBD5B3M|DYcLT1BT6gjoK zNm%Bu0GSr4CW`#|%8BL|h^q@``>}oP?3C52xpLM{{6&$HS4T$He$yZl4%8^EySQCKY5&V-o4B?fDQ42AY?$jaRrr7!J%$1MHe{#>(k>Yg;K z8QxWlSTrXXaBI|S-R6geRxhppEJ-OHUwTEI(g%;$O^ED&ajbbsXr$#!dG*mpSy}w<>YNnW_EPUU_KeAym&}NL z^yW)fCfoje7B~?r>sIW=B`3Nzu|vh#veIkU=g*D3yZuBvS~_~7arIcv8z)+m^XrLD ziOL^D?B|=74nKLL6-jt`3=V$6%hMWYA&Vj442qfC$RjVe8yn9pN=lmM%MUJ*rMIZi z>&K@pv;)4S%9AS>q$XM=#Vy4@EVgrVk|J$hNvE9!uVnCd&nsh->{02HCXGxVH8HYr zc*|<()25|gniOeus*9OcI`-6yR-|Tm|H$z2C6RsQT_f+7?=B6$_Oe+z?CrX;B|1Z) zVQ;Q7OP@RaRzl>Ccl(yU{O*0V!{X5}&4mGPo+zl-zB0H#_d-cwx_D$U33uCoNA~BS zg=(p>7c954#*dcuY(nP9=~)@0R8hA!y}?+pT-P&xta?w;>Ep*vxnwd*jIjlV`|vkD zm8sqb;swN(SmHu7CPwTF#Oj%mF>SKE#B7T5BVW(CD9qa6UzkL_DmykBX;(R} zgjz~tW%82LN-Kk{G=k6&8{ZOJIa!Z_d3nL5_WabmPSUI8yqcz)Nm3oc0ukeaiaPXi z&3A?N(nWq2YUvj}#>?jANI_}UHGS2UiT=F2$j+XP!s?r%r9oM+Lcu_2u((B*w&2o` z%#uBRwDPu8A&ydgD?3+N09oK;`#ef@S03N}vSK22KNr&+oo0|S@;raOU#|qg&Vg7R zbXR%N<-uY*n_X8n9bz$K4v1tgikJubMK-=sE7J4QnvoF?C*frpmlpnONHr@dsr2cu z`zN+%?8O0D_?4H$@^ba2$PO0BwwAdJ@8dz_vs;bTEvIO_E4hHdXPD45?Drqg++1W zTp$h@6Id<-k(ns+73TW`YKvak?ZiLu*|xY~c^8iPB&AmIjj@l{^h9>o7n~>J)#Tdt zXn#oUbk%l5#%eG01$>3N>COxDf(sVlV!FgXS!CNdAfId*_56l|*}5=YcX#DtN-J?#7l)2RjEw2HZd7gG&$}MO37hJJ$lw-lN{R|Rrvy44RVY|&3R-d)iKacUy8qT z^#OSlGok80Ai~SY98{vAUT|S7=^kG=HG0`b706j$j7*DLuR^h+@};=Rn9j!=Sa3l% z^zxuSjF&2|QYy&RLB1=*ijnKps-nq)Max6}Y<4s9=(;j7zN{*har3}EfL|9A^(gce z6&D8dsv&+|T~7Fvap7o`0;$^_-iZeE)JmmJ%`s<%Q&2|shi*JF{9H=}!ThSLBG%hL zFs{P#8G`)74=e7I^dJj@A^$QR#iLd%mP3JngIq2XVyA4Mouw*|UG7A7+|(j6e@y~TyNI2OD+G1#Q&pUW{w18l7cz*L z)De0?l~PN5g$u;pt0z9sORARg$3_R0!wYj=^nc^+mc_jjHN@Ll=C+esVB0g8Yx;`u zBc*_kj;YbHpJAb6^WZ}+%Iu{Bg<&?mq1Za2WD#3Gq^IthEZf!i6(VyW(rTYEWv0H{ zl1lygvW*Z=!)xV^Dvew@RoM)&GnU>-F?H|3Iun+A5AIIbebF7Qjg@-nXAd8!YmUbMafe*w|Bx=_$41McvJv zzJ^o#30b5H3(-cAFGsEgp(1}#u?#-``4ZdCQs-gqnf0+w4DS352`z*xI*aD(kK#+b zbQD?p*=o4=TjzhT*ZoSHgprlk1GOB)u1(Z}j19Y&CNX^(h23&kVFTOUX0NF>(qich ziAgH-E#&5|P)##aqc;DX_zLC5hufh_Q_OLxkcFCUj_i6x3H0S@Tp}42?TGedOq(XB z#sZtGF4h#xS$PSn(GsgrnOIN9F_mgdWVhi4M|KCXn}doO2nIyM$hULzyzCg{Abfr& zV>hH~>ZBuS?hHvU;tOKD*I5<4)?2N}~=XgUV>HzZxj6+ukk(*Ed-k(Z3sqWIrRB9%?6+OT38BKCZ*Uzt>ej%c&s*wGSs$U}=X zhRc*qEzbE5K2j%9K1r#(C6eOG0^$;(vj27C?&3IuVWuuqz9)4_#koivxa+ENb9Mbn zf|sZtD!SSDaXCJ-e-7BGmD~ePR%SP*kCp0>x!2o1T_7wcI&WS`=`G$xw*DxmKd_|I zNr6VR&MDQw6X-ik)fG9{p~||pe6AEZkmkxy7Sv(4Pj$bj5N1H%6RMK~t4&yJ!JDV5 zD)1JvSw_RKV7`|k`qbg$$UtrEp?rnRLC|jBtGnI4cXvB2&2BIH%-jWnst$DtDPOu* ziLwRN>Koh2Q#r5Q`?9o12d7=+_s80Ea!oA#C;u%mGU$iJ)!prk^HmKqC6f1ja_JjC zyyl6V`>uPd%mtyKTyWFqbbh6o&yNcQEU?+Q0AHuH$cbO<(&N7zvm)#Mvm#RK_h9KY zzgu<6R@64%Npj|-nBKByQ%pOdtbPmg{siYAt14Gv^U9jHHFK?&q2SVh zJvVjH<^1s$@|PoKsDRyET3TA!we8K$rt`NBW_bdW<}2IP(fr*id$EhT&{O73HM^OP zlV(mWtJA|=TQh+x!jQ9dkU7IsSnP8?9c1=&nhrM8YUSkz3a%;)6%{X8RyKXG**h_@ zPikRyZ)e?bGp%3W)SkUld-bw=^%~r3P-@S9J$u&7%1oW+TjH0CRPk~> z2lwvnd^Oy>CS?+*_hRot-cM(x_oG;yLxo)&{|IxgQ$E66VqNBS#-*DXb)$#NSC-!p zEr~u8Jrq4$c3Zl6+A7;M+8pgEt1-@eE#axj=7Wi4XQr7a&9bvI%sOV-_?c!WkF&SA z)y-)=$81qnZH}4csoNpcA=?;A9s8rtMoXMt*O`r+XIGm|%5J&b^z;mGEMG+{hs&=o zUl~0ZEwQ6V%CD!9?BZAx(-5lNMJbA)u?A-gl zl~mU*UuBoC5uuddQGSyXIAWzZhgw?IJ4f%)c&$he>F}NB-CzW34v55Sib&fo2rZ`3Sm=`$@I%XZmUS}qE za0mS)@)9xZr)h>P-)aGhqnFFaExoVlOly_=wOZEIbi*W8#!ci)?icw%U zRMs`kncBi?WKFRh@6%?>7ApH0sfqF>_7o%%E9*=>Y_@IAf`lNM2IlF2o+X(RT60>j zGaF~xQR(r4@-@ulc3pxQuBc|e>LC}YIePk~XJ}&iHY$#NTB&@jQZXi_F7fhARdh%6 zp6FfCtIS zZp609z{LiBQh$&R=5ue|vEKVs#CADa!K8=mEKy^jjA|6!i!3k!WZ7+&{ z8B<=I%f{%v(MT%2alUyGTfaWrOmH$LSoQQh*?E1zqeRQ3VNsDa46sD0@E?n1K&&tP zYF|Z9Vr?R!c#pKP#$?(;{ANk?ur1mmVu~J$E4cG@H|wJADC-vL*@b@YLO<_}Zp6)t zTM-GzO^5oa$Eo+0+1Pmw7tnjRXp5^XH_&l>gZ{yZCivQJU$xeG&a2n(@yM&prir4; zhn$PgnJHaq485SLQiLGZ>N=?^KUaQm{awyi-K?h0+Kllnp}oX&mqt@d-2Zef2+mXfSeNmN0sh}nxC z;swenBT}wgC&Y*jxC47im0G1{k-~9}ah^M1HmW1*hwHb>SBZCR;&k{P7rTC`S;JYe z)T-7{I>Sif^<(A3hgdD0U9VbQoe_VrRyYMuS#6z-C(*YZPnq?~E-Nvwt?oSRn75W4 zJ!JOn6N(aCCTwR2wmw`rF-KbcLMm(@$Q92onE`lG7hv%cSG9vJz@}8B@~rb}zSVey zEGM$4?2K-YZmiO#)Fj5B7T)L~rFsIdzU&P1z?QuvhSj%ZPAF@ zZcrmTeY^se>>RntYL3OqN-+G8)yg^Yyp@=sl6UQ6D!Mxxem0x7WQ-`Oc#wOecg;J$ zE?JK4mDZ$3UImp0}E}j5)Z#AC>5V);Q-5m@S>wSDUpiK5wMak|DP1Z;<`< z(NauF8>OuHN|LfPs$EZNp7;>@+Qjjluo{Hvt!%pVqIcfbrAiaF?D@1ybX|(<(hg|t zyn$Bt%j!_RO`HImY1*UdxW5pO8$F;#sQ$43lHWQ%@LYeF?HrnAc4X~Ex1}?922ppZ zU3TI)#KF$Q$F1gJcjCnyL@yAvyqDr^LssEtv~!W!;(OW9Y**8d^(c8LH-6ZTDUkY5 zFY{XQ#4S=aswK^;l~$h@_?!_nXQpIhg$zm!{60eNQ<;s;wYx*R^tm@@h`leJ>jx*w9M2(mahUJVeGCS6d z*Tqjq(QQupF|$!!-buk6}nAl7#=1Yn{*Ie za+ledMIn{nX`{QHbA9lTTD2=Hc)atsK*@;p$JTn5kr9^RR{+DfSr`^Y)l z(9^te94lRXv7`GHj#J;&b4}pT%|<1S!AfROL;!EL6!N_pU9$VqYR9XT@|xa zNgUEYUpV&ruB0yLoxbmrSNh>*zTy{>3rfchAF?c0HIq!Gh3yS~g z&%YOx{?ng!>sD#M zp!HGwv|FBC%gQxo3#qGmQ!zE#7azpRBF>WUSU;V$} z&Gi~gpLi}Y5HTm>YW(XKIhpr@wtBmcupQbOU{7-+PzM%Af z_e(X0mZ=F=a;iQDl%f64uwclhPWgPTLUP(;Cu55_i0g3X=b3h`N}ksFdY#t2g!*bZ z)_(IK7O>BmSY)iN(#JywZ*+ue0(YvypiyuDc1HD%Glu$vtSwTyQGH)TE*k zsWx?y7W{d?U5i0rUo;}tA+@a`sLhq^B1zcn{A88UMj~4ny^*J^-X7}vE-^o~&L7}D ztH(`dYh|a-@6D~mVd8N`HRNXKdig8I2dRm&dW0&Ejgc&N`)E*YCsmctIN!`h@7z6Q zg)Z^aLB)^V7tG(E{^)%{=|BDP8+AKe9=_iFh)o}Rga4O>gB?RT?xl*-p7$&H1s#k3 zS{~--^62iEtJSup4Pl?m4?=V2=K%XD_oOOP*ZU=zFuBfT^(tS@#|L>ME1jDk+o#LS zG9xlQ`bt^qMfI4RxiS~!_{7+TKqex(jme99e+GvWW#g!(jqlWfhL+S#Al0g4kNgR_eU4rC-(RdOSwuE(5>H(DvRFcge{fn&Jd zpUh;Z{?}$=eRf~`Dj(gc93h)XXXjiq#oX_#A7(Wfqdt+9j(I~;a!;i0Ys3dAn@3Vu zy4t9_#u?v~#QV6!$;va6v&6~DQt4h3>peCds#sr{5%HE(sSblmALL{h8;Hz!yw+t- z{S8)=rqU~_RX;Nz@H-i@>@@c}=3`cq@E=x3&pA*icO!1UqDp?|uhbj5rdImc=|Ue) zDR4kZLU|o=Tp}3mXQQ!QMCvHSxlxV6aaNcuGi8lA|7fT;#W*oJ>Ba=+F6yEJ>bykj za(CelP~;}A`o@~hpsU$e>`S(qHB-OCsM(jvuQ<|VIO|uK_E2}_Qz{_p9*N2o#)Di_ zZgmY%T&Ns~_m^*$U4%H!)oA)5ykhz>t3@ZReW~LZQQV&0g3_Q&x%hi^d*8mw=Ch65 zg4`pMD2C?lshv|tt){U{S!I@Za^BMm?WnN?nKW^+x<3`_QKGh0wJL_0CBtmv!Tg>7 zT*X~VsD-D2^Z0LOvi|q@>;iTivQpZs8(jCOBtzsDAv;HzwfGXe9A|9j(R{Oe&A4*S zPy!rRRe(DX;62ejSlolrTbW~iRf?|F7f6Wre-LJGSD5@e1Fn(OVMy=YMC$tI1y?Wh z>5_elQsOzX*2#jZuKz^|WZI9Y)k)2OI{K;muUP+;V6_TTUhQ%CLTOUGZqX&jZsuv+ zhxPk{CjOuSr84e<;M_XQYCf>Ml8a?j|98U*U(n|NZdmukR7uZd>N3|sGpngfBrZ!H zE*Fuy-d=Pxx?jsi^&bN`EQewDvInQJ-|psYJb}YV)!TV-_50kt{rPpptW_zstdi>f zA$DRc(K;VXYL^f*fB7*+dAIV-G$=PKWGH=)-#j_PKd}<0Yh7ZMRC6ZYD%L7fS=mMH zm*#dcKAf_+3z;IK(Ib^CPA}rl(PArE?T7Wgi5{pQGxR^Vi0-&hH|#+CR~fpkj8RMW zf_eJ`UD0A@Z2DIt_ZQoFs)y>%fJ$7?CdsP*Hp6wFqU*X%+<}(WMl3MG2({xueBE8! zkrwqYyw?x3>NZ9YNKuqP|L~xXNIPHU9|O$Kw}MXAE-w79IBtzCn}4r$F3H>>iH>z> z1xc`GBhMQgQ+~V4y49*Z)Db@^)2HNwF^b@Kpd|8JxjK25Z{xM{EtUUy2l|-i-1D$C zrflQG*8Blw7k^;gp5(MX$9;I_=T-}6>lE(&PoJ}nSkA3qTLop+zP5hwG~i#1o&OIy zoS%QN+Lrz2-_|>3*~ss$$!3E5GlsJDKUkM1I_cFsP0P}Mvwlx3d%)xQ)O2cFGx+x+&ZhQOa#^3|o*_y92PzkM AF#rGn diff --git a/po/sr.po b/po/sr.po index f7275fb..f1af8c7 100644 --- a/po/sr.po +++ b/po/sr.po @@ -1,86 +1,92 @@ # Serbian translation for bash. # Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# МироÑлав Ðиколић , 2014. +# МироÑлав Ðиколић , 2014—2015. msgid "" msgstr "" -"Project-Id-Version: bash-4.3-rc2\n" +"Project-Id-Version: bash-4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2014-02-11 10:22+0200\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-12-23 11:31+0200\n" "Last-Translator: МироÑлав Ðиколић \n" "Language-Team: Serbian <(nothing)>\n" -"Language: Serbian (sr)\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: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "лош Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð°" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: не могу да претворим попиÑани низ у придружив" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: неиÑправан кључ придруживог низа" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не могу да доделим у не-бројевни попиÑ" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: мора кориÑтити Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ додељивања придруживог низа" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не могу да направим: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "баш_изврши_јуникÑ_наредбу: не могу да нађем мапу кључа за наредбу" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: први не-празан знак није \"" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "нема затварајућег „%c“ у %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: недоÑтаје раздвојник двотачке" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "ширење заграде: не могу да доделим меморију за „%s“" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "ширење заграде: ниÑам уÑпео да доделим меморију за %d елемента" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "ширење заграде: ниÑам уÑпео да доделим меморију за „%s“" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "„%s“: неиÑправан назив алијаÑа" @@ -89,45 +95,45 @@ msgstr "„%s“: неиÑправан назив алијаÑа" msgid "line editing not enabled" msgstr "уређивање реда није укључено" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s“: неиÑправан назив мапе кључа" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не могу да читам: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "„%s“: не могу да развежем" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "„%s“: непознат назив функције" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "„%s“ није привезано ни за један кључ.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "„%s“ не може бити призвано путем" -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "број петљи" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "једино има ÑмиÑла у петљи „for“, „while“, или „until“" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -137,300 +143,329 @@ msgstr "" "\n" " Без „EXPR“, иÑпиÑује" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "„HOME“ није подешено" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "превише аргумената" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "нема другог директоријума" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "„OLDPWD“ није подешено" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "%d. ред:" -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "упозорење:" -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: употреба:" -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: опција захтева аргумент" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: потребан је бројевни аргумент" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: не поÑтоји" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: неиÑправна опција" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: неиÑправан назив опције" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s“: није иÑправан одредник" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "неиÑправан октални број" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "неиÑправан хекÑадецимални број" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "неиÑправан број" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: неиÑправна одредба Ñигнала" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "„%s“: није пиб или иÑправна одредба поÑла" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: променљива Ñамо за читање" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: „%s“ је ван опÑега" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "аргумент" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "„%s“ је ван опÑега" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: нема таквог поÑла" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: нема управљања поÑлом" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "нема управљања поÑлом" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: ограничено" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "ограничено" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: није уграђеноÑÑ‚ шкољке" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "грешка пиÑања: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "грешка подешавања оÑобина терминала: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "грешка добављања оÑобина терминала: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: грешка довлачења текућег директоријума: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: нејаÑна одредба поÑла" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "помоћ није доÑтупна у овом издању" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: неиÑправан назив радње" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: нема одредбе довршавања" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "упозорење: опција „-F“ можда неће радити како Ñте очекивали" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "упозорење: опција „-C“ можда неће радити како Ñте очекивали" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "тренутно не обавља функцију довршавања" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "може бити коришћено једино у функцији" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: променљива упуте не може бити низ" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: Ñамоупућивање променљиве упуте назива није дозвољено" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: кружна упута назива" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: неиÑправан назив променљиве за упуту назива" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "не можете кориÑтити „-f“ да направите функције" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: функција Ñамо за читање" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: додела низа цитираног Ñпоја је заÑтарела" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: не могу да уништим променљиве низа на овај начин" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: не могу да претворим придруживи низ у попиÑани" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "променљиво учитавање није доÑтупно" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "не могу да отворим дељени предмет „%s“: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "не могу да нађем „%s“ у дељеном предмету „%s“: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "функција учитавања за „%s“ није уÑпела (%d): није учитано" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: није динамички учитано" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: не могу да обришем: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: је директоријум" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: није обична датотека" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: датотека је превелика" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не могу да извршим бинарну датотеку" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не могу да извршим: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "одјави\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "није шкољка пријављивања: кориÑтите „exit“" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Има зауÑтављених поÑлова.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Има покренутих поÑлова.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "нема такве наредбе" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "одредба иÑторијата" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не могу да отворим привремену датотеку: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "текуће" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "поÑао „%d“ је започет без управљања поÑлом" @@ -449,17 +484,17 @@ msgstr "%s: опција захтева аргумент -- %c\n" msgid "hashing disabled" msgstr "хеширање је иÑкључено" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: хеш табела је празна\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "покреће\tнаредбу\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" @@ -467,20 +502,20 @@ msgstr[0] "Ðаредбе шкољке које одговарају кључн msgstr[1] "Ðаредбе шкољке које одговарају кључним речима `" msgstr[2] "Ðаредбе шкољке које одговарају кључним речима `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -"нема тема помоћи које одговарају „%s“. Покушајте „help help“ или „man -k " -"%s“ или „info %s“." +"нема тема помоћи које одговарају „%s“. Покушајте „help help“ или „man -k %" +"s“ или „info %s“." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не могу да отворим: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -499,15 +534,20 @@ msgstr "" "Звездица (*) поред назива значи да је наредба иÑкључена.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "не могу кориÑтити више од једног „-anrw“" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "положај иÑторијата" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: неиÑправан аргумент" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: није уÑпело ширење иÑторијата" @@ -521,113 +561,113 @@ msgstr "%s: није уÑпело „inlib“" msgid "no other options allowed with `-x'" msgstr "ниÑу допуштене друге опције уз „-x“" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументи морају бити процеÑи или ИБ-ови поÑла" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Ðепозната грешка" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "очекиван је израз" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: није попиÑани низ" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: неиÑправна одредба опиÑника датотеке" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: неиÑправан опиÑник датотеке: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: неиÑправан број реда" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: неиÑправно порекло низа" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: неиÑправна количина опозива" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "празан назив променљиве низа" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "потребна је подршка променљиве низа" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "„%s“: недоÑтаје знак запиÑа" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: неиÑправна одредба запиÑа времена" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: неиÑправан знак запиÑа" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "упозорење: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "проблем обраде запиÑа: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "недоÑтаје хекÑадецимална цифра за \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "недоÑтаје цифра уникода за \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "нема другог директоријума" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: неиÑправан аргумент" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "<нема текућег директоријума>" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "празан Ñпремник директоријума" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "Ð¿Ð¾Ð¿Ð¸Ñ Ñпремника директоријума" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -669,7 +709,7 @@ msgstr "" " -N\tПриказује н-ти ÑƒÐ½Ð¾Ñ Ð¿Ð¾Ñ‡ÐµÐ²ÑˆÐ¸ Ñ Ð´ÐµÑна на ÑпиÑку приказаном\n" "\t директоријумима када Ñе призову без опција, почевши од нуле." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -715,7 +755,7 @@ msgstr "" " \n" " Уграђено „dirs“ приказује Ñпремник директоријума." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -754,143 +794,153 @@ msgstr "" " \n" " Уграђено „dirs“ приказује Ñпремник директоријума." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: неиÑправна одредба временÑког иÑтека" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "грешка читања: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "могу једино да „иÑпишем“ из функције или изворног ÑпиÑа" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "не могу иÑтовремено да раÑподеÑим функцију и променљиву" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: не могу да раÑподеÑим" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не могу да раÑподеÑим: „%s“ је Ñамо за читање" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: није променљива низа" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: није функција" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: не могу да извезем" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "број помака" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "не могу иÑтовремено да подеÑим и да раÑподеÑим опције шкољке" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: неиÑправан назив опције шкољке" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "потребан је аргумент назива датотеке" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: ниÑам пронашао датотеку" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "не могу да обуÑтавим" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "не могу да обуÑтавим шкољку пријављивања" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s је измењен у пÑеудоним „%s“\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "„%s“ је кључна реч шкољке\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s: је функција\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s: је нарочита уграђеноÑÑ‚ шкољке\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s: јеÑте уграђеноÑÑ‚ шкољке\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "„%s“ јеÑте „%s“\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "„%s“ је хеширано (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: неиÑправан аргумент ограничења" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "„%c“: лоша наредба" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не могу да добавим ограничење: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "ограничење" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не могу да изменим ограничење: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "октални број" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "„%c“: неиÑправан оператер Ñимболичког режима" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format 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:348 error.c:350 error.c:352 msgid " line " msgstr " ред " @@ -904,82 +954,103 @@ msgstr "поÑледња наредба: %s\n" msgid "Aborting..." msgstr "Прекидам..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "ПОДÐЦИ: " + +#: error.c:463 msgid "unknown command error" msgstr "непозната грешка наредбе" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "лоша врÑта наредбе" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "лош Ñпајач" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "лош Ñкок" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: неÑвезана променљива" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" -msgstr "\\aиÑтекло је време чекајући на улаз: ÑамоÑтално Ñе одјављујем\n" +msgstr "\aиÑтекло је време чекајући на улаз: Ñам Ñе одјављујем\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не могу да преуÑмерим Ñтандардни улаз из „/dev/null:“: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "ЗÐПИСВРЕМЕÐÐ: „%c“: неиÑправан знак запиÑа" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "грешка Ñпојке" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: премашен је највећи ниво угнежђивања извора (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: премашен је највећи ниво угнежђивања функције (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ограничено: не могу да наведем / у називима наредби" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: нема такве наредбе" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: лош тумач" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не могу да извршим бинарну датотеку: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "„%s“: јеÑте поÑебна уграђеноÑÑ‚" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не могу да удвоÑтручим „fd %d“ у „fd %d“" @@ -1024,37 +1095,37 @@ msgstr "одредник је очекиван након пре-увећања msgid "missing `)'" msgstr "недоÑтаје )" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "Ñадржајна грешка: очекиван је операнд" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "Ñадржајна грешка: неиÑправан аритметички оператор" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (Ñимбол грешке је „%s“)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "неиÑправна аритметичка оÑнова" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "вредноÑÑ‚ је превише велика за оÑнову" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: грешка израза\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: не могу да приÑтупим родитељÑком директоријуму" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не могу да поништим режим без-кашњења за фд „%d“" @@ -1069,148 +1140,148 @@ msgstr "не могу да доделим нови опиÑник датотек msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: већ поÑтоји међумеморија за нови фд „%d“" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: „pgrp“ Ñпојка" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "иÑцепљени пиб „%d“ Ñе јавља у покренутом поÑлу „%d“" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "бришем зауÑтављени поÑао „%d“ Ñа групом процеÑа %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: Ð¿Ñ€Ð¾Ñ†ÐµÑ %5ld (%s) у Ñпојном_реду" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: пиб %5ld (%s) је означен да је још жив" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: нема таквог пиб-а" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Урађен" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "ЗауÑтављен" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "ЗауÑтављен(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Покренут" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Урађен(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Изађи из „%d“" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Ðепознато Ñтање" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(језгрени избачај)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "Ñетпгиб порода (%ld у %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: пиб %ld није пород ове шкољке" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ðема запиÑа о процеÑу %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: поÑао „%d“ је зауÑтављен" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: поÑао је завршио" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: поÑао „%dд је већ у позадини" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: укључујем „WNOHANG“ да избегнем неодређени блок" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: ред %d:" -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (језгрени избачај)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(„wd“ Ñада: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: није уÑпело „getpgrp“" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: диÑциплина реда" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не могу да подеÑим групу процеÑа терминала (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "нема управљања поÑлом у овој шкољци" @@ -1264,17 +1335,17 @@ msgstr "realloc: откривена је недовољноÑÑ‚ тока; mh_n- msgid "realloc: start and end chunk sizes differ" msgstr "realloc: почетна и крајња величина дела Ñе разликују" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: табела доделе је пуна Ñа „FIND_ALLOC“?\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: „%p“ је већ у табели као додељено?\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: „%p“ је већ у табели као Ñлободно?\n" @@ -1298,7 +1369,7 @@ msgstr "%s: неиÑправна уÑлуга" msgid "%s: bad network path specification" msgstr "%s: лоша одредба путање мреже" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "радње мреже ниÑу подржане" @@ -1335,224 +1406,259 @@ msgstr "Имате нову пошту у $_" msgid "The mail in %s has been read\n" msgstr "Пошта у „%s“ је прочитана\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "Ñадржајна грешка: потребан је аритметички израз" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "Ñадржајна грешка: није очекивано „;“" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "Ñадржајна грешка: „((%s))“" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: лоша врÑта упутÑтва „%d“" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "овде-документ у %d. реду је ограничен крајем-датотеке (тражи Ñе „%s“)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: упутÑво преуÑмерења „%d“ је ван опÑега" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "премашен је највећи број „овде-документ“" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "неочекивани крај датотеке приликом тражења поклапања „%c“" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "неочекивани крај датотеке приликом тражења „]]“" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Ñадржајна грешка у уÑловном изразу: неочекивани Ñимбол „%s“" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "Ñадржајна грешка у уÑловном изразу" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочекивани Ñимбол „%s“, очекивана је )" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "очекивана је )" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочекивани аргумент „%s“ уÑловном једночланом оператору" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "неочекивани аргумент уÑловном једночланом оператору" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочекивани Ñимбол „%s“, очекиван је уÑловни двочлани оператор" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "очекиван је уÑловни двочлани оператор" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочекивани аргумент „%s“ уÑловном двочланом оператору" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "неочекивани аргумент уÑловном двочланом оператору" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочекивани Ñимбол „%c“ у уÑловној наредби" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочекивани Ñимбол „%s“ у уÑловној наредби" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочекивани Ñимбол „%d“ у уÑловној наредби" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "Ñадржајна грешка близу неочекиваног Ñимбола „%s“" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "Ñадржајна грешка близу „%s“" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "Ñадржајна грешка: неочекивани крај датотеке" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "Ñадржајна грешка" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "КориÑтите „%s“ да напуÑтите шкољку.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "неочекивани крај датотеке приликом тражења поклапајуће )" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "довршавање: ниÑам нашао функцију „%s“" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: ÐИШТÐÐ’ÐРОДРЕДБÐ_ДОВРШÐÐ’ÐЊÐ" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: лош Ñпајач „%d“" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: неиÑправан опиÑник датотеке" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: ÐИШТÐÐ’ÐРуказивач датотеке" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: неиÑправан знак запиÑа" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "опиÑник датотеке је ван опÑега" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: нејаÑно преуÑмерење" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не могу да препишем поÑтојећу датотеку" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ограничено: не могу да преуÑмерим излаз" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не могу да направим привремену датотеку за документ-овде: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не могу да доделим фд променљивој" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "„/dev/(tcp|udp)/домаћин/прикључник“ није подржано без умрежавања" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "грешка преуÑмерења: не могу да удвоÑтручим фд" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "не могу да нађем „/tmp“, направите га!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "„/tmp“ мора бити иÑправан назив директоријума" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: неиÑправна опција" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "не могу да подеÑим јиб на %d: Ñтварни јиб %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "не могу да подеÑим гиб на %d: Ñтварни гиб %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: је директоријум" + +#: shell.c:1777 msgid "I have no name!" msgstr "Ðемам назив!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "Гну баш, издање %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1561,39 +1667,49 @@ msgstr "" "Употреба:\t%s [Гнуова дуга опција] [опција] ...\n" " \t%s [Гнуова дуга опција] [опција] датотека-ÑпиÑа ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Гнуове дуге опције:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Опције шкољке:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t„-ilrsD“ или наредба „-c“ или -O шопц_опција\t\t(призивање Ñамо)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t„-%s“ или опција „-o“\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Укуцајте „%s -c \"help set\"“ за више података о опцијама шкољке.\n" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "Укуцајте „%s -c help“ за више података о уграђеним наредбама шкољке.\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "КориÑтите наредбу „bashbug“ да извеÑтите о грешкама.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "Матична Ñтраница баша: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "Општа помоћ коришћења Гну Ñофтвера: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: неиÑправна операција" @@ -1767,88 +1883,103 @@ msgstr "Ðепознат Ñигнал #" msgid "Unknown Signal #%d" msgstr "Ðепознат Ñигнал #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "лоша замена: нема затварајуће „%s“ у „%s“" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: не могу да доделим ÑпиÑак члану низа" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "не могу да начиним Ñпојку за замену процеÑа" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "не могу да начиним пород за замену процеÑа" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "не могу да отворим именовану Ñпојку „%s“ за читање" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "не могу да отворим именовану Ñпојку „%s“ за пиÑање" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "не могу да удвоÑтручим именовану Ñпојку „%s“ као фд %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "лоша замена: нема затварајућег „`“ у „%s“" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "не могу да начиним Ñпојку за замену наредбе" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "не могу да начиним пород за замену наредбе" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: не могу да удвоÑтручим Ñпојку као фд 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: неиÑправан назив променљиве за упуту назива" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: параметар је ништаван или није подешен" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: израз подниÑке < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: лоша замена" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: неиÑправно поÑредно ширење" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: неиÑправан назив променљиве" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: параметар је ништаван или није подешен" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: израз подниÑке < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не могу дадоделим на овај начин" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "будућа издања шкољке ће приморати процену као аритметичку замену" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "лоша замена: нема затварајућег „`“ у „%s“" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "нема поклапања: %s" @@ -1862,39 +1993,39 @@ msgstr "очекиван је аргумент" msgid "%s: integer expression expected" msgstr "%s: очекиван је израз целог броја" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "очекивана је )" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "очекивана је ), а пронађена %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: очекиван је једночлани оператор" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: очекиван је двочлани оператор" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "недоÑтаје ]" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "неиÑправан Ñигнални број" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: лоша вредноÑÑ‚ у „trap_list[%d]“: %p" -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1902,84 +2033,85 @@ msgstr "" "run_pending_traps: руковалац Ñигналом је „SIG_DFL“, поново шаљем %d (%s) " "мени Ñамом" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: лош Ñигнал %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "грешка увоза одреднице функције за „%s“" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "ниво шкољке (%d) је превиÑок, поново поÑтављам на 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: кружна упута назива" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: нема Ñадржаја функције на текућем доÑегу" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: вредноÑти не може бити додељена вредноÑÑ‚" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: неиÑправан назив променљиве за упуту назива" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variable: нема Ñадржаја функције на текућем доÑегу" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s има ништавну ниÑку извоза" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "неиÑправан знак %d у ниÑци извоза за „%s“" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "нема = у ниÑци извоза за „%s“" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: глава променљивих шкољке није ÑадржајноÑÑ‚ функције" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: нема Ñадржаја општих променљивих" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: глава променљивих шкољке није привремени доÑег окружења" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не могу да отворим као ДÐТОТЕКУ" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: неиÑправна вредноÑÑ‚ за опиÑник праћења датотеке" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: вреднÑот ÑаглаÑноÑти је ван опÑега" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "ÐуторÑка права (C) 2013 Задужбина Ñлободног Ñофтвера, Доо." +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "ÐуторÑка права (C) 2015 Задужбина Ñлободног Ñофтвера, Доо." #: version.c:47 version2.c:47 msgid "" @@ -2003,10 +2135,6 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Ðема ÐИКÐКВЕ ГÐРÐÐЦИЈЕ у оквирима дозвољеним законом." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "ÐуторÑка права (C) 2012 Задужбина Ñлободног Ñофтвера, Доо." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2027,15 +2155,15 @@ msgstr "%s: %s:%d: не могу да доделим %lu бајта (%lu бај msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не могу да доделим %lu бајта" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [назив[=вредноÑÑ‚] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] назив [назив ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -2044,111 +2172,99 @@ msgstr "" "кључа] [-x низ кључа:наредба-шкољке] [низ кључа:функција-читањареда или " "наредба-читањареда]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [уграђеноÑÑ‚-шкољке [аргумент ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [израз]" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]] [-@]] [дир]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr "%s%c" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "%s%c" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [арг ...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [назив[=вредноÑÑ‚] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] назив[=вредноÑÑ‚] ..." - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] назив[=вредноÑÑ‚] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [опција] назив[=вредноÑÑ‚] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [арг ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [арг ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f датотека] [назив ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [арг ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts ниÑка_опција назив [арг]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a назив] [наредба [аргументи ...]] [преуÑмерење ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e е-назив] [-lnr] [прво] [поÑледње] или fc -s [пут=реп] [наредба]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [одредба_поÑла ...]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [одредба_поÑла ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p путања] [-dt] [назив ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [шаблон ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2156,15 +2272,16 @@ msgstr "" "history [-c] [-d померај] [n] или history -anrw [датотека] или history -ps " "arg [аргумент...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [одредба_поÑла ...] или jobs -x наредба [аргументи]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [одредба_поÑла ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2172,11 +2289,11 @@ msgstr "" "kill [-s одредба-Ñигнала | -n бр.Ñигнала | -sigspec] пиб | одредба_поÑла ... " "или kill -l [одредба_поÑла]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [аргумент ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2184,99 +2301,95 @@ msgstr "" "read [-ers] [-a низ] [-d ограничи] [-i текÑÑ‚] [-n н-знак] [-N н-знак] [-p " "упит] [-t временÑки рок] [-u фд] [назив ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o назив-опције] [--] [арг ...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [назив ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [назив[=вредноÑÑ‚] ...] или export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [назив[=вредноÑÑ‚] ...] или readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source датотека [аргументи]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". датотека [аргументи]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [израз]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ арг... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[арг] одредба_Ñигнала ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] назив [назив ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [ограничење]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ограничење]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [режим]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [иб ...]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [пиб ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for ÐÐЗИВ [у РЕЧИМР... ] ; do ÐÐРЕДБЕ; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( израз1; израз2; израз3 )); do ÐÐРЕДБЕ; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select ÐÐЗИВ [у РЕЧИМР... ;] do ÐÐРЕДБЕ; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] Ñпојни_ред" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case РЕЧ у [ШÐБЛОР[| ШÐБЛОÐ]...) ÐÐРЕДБЕ ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2284,63 +2397,63 @@ msgstr "" "if ÐÐРЕДБЕ; then ÐÐРЕДБЕ; [ elif ÐÐРЕДБЕ; then ÐÐРЕДБЕ; ]... [ else " "ÐÐРЕДБЕ; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while ÐÐРЕДБЕ; do ÐÐРЕДБЕ; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until ÐÐРЕДБЕ; do ÐÐРЕДБЕ; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [ÐÐЗИВ] наредба [преуÑмерења]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function name { ÐÐРЕДБЕ ; } или name () { ÐÐРЕДБЕ ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ ÐÐРЕДБЕ ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "job_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( израз ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ израз ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables — Ðазиви и значења неких променљивих шкољке" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | дир]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [називопције ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v променљива] format [аргументи]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2350,36 +2463,36 @@ msgstr "" "[-W ÑпиÑакречи] [-F функција] [-C наредба] [-X путањауÑлова] [-P префикÑ] [-" "S ÑуфикÑ] [назив ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o опција] [-A радња] [-G општапутања] [-W " -"ÑпиÑакречи] [-F функција] [-C наредба] [-X путањауÑлова] [-P префикÑ] [-S " +"ÑпиÑакречи] [-F функција] [-C наредба] [-X путањауÑлова] [-P префикÑ] [-S " "ÑуфикÑ] [реч]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o опција] [-DE] [назив ...]" -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" -"mapfile [-n број] [-O порекло] [-s број] [-t] [-u фд] [-C опозив] [-c " -"количина] [низ]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d раздвој] [-n број] [-O порекло] [-s број] [-t] [-u фд] [-C " +"опозив] [-c количина] [низ]" + +#: builtins.c:244 +msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" "readarray [-n број] [-O порекло] [-s број] [-t] [-u фд] [-C опозив] [-c " "количина] [низ]" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2391,7 +2504,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2409,29 +2522,29 @@ msgstr "" " проверена за заменом пÑеудонима када је пÑеудоним раширен.\n" " \n" " Опције:\n" -" -p\tИÑпиÑује Ñве одређене пÑеудониме у поново употребљивом облику\n" +" -p\tиÑпиÑује Ñве одређене пÑеудониме у поново употребљивом облику\n" " \n" " Излазно Ñтање:\n" " „alias“ даје тачноÑÑ‚ оÑим ако је доÑтављен ÐÐЗИВ за који ниједан\n" " пÑеудоним није одређен." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Уклања Ñваки ÐÐЗИВ Ñа ÑпиÑка одређених пÑеудонима.\n" " \n" " Опције:\n" -" -a\tуклања Ñве одреднице пÑеудонима.\n" +" -a\tуклања Ñве одреднице пÑеудонима\n" " \n" " Резултат је уÑпешан оÑим ако ÐÐЗИВ није поÑтојећи пÑеудоним." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2465,7 +2578,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2512,7 +2626,7 @@ msgstr "" " -x низ_таÑтера:наредба-шкољке Доводи до извршавања ÐÐРЕДБЕ-ШКОЉКЕ " "приликом уноÑа\n" " \t\t\t ÐИЗÐ_ТÐСТЕРÐ.\n" -" -X\t ИÑпиÑује Ñвезе низова таÑтера Ñа -x и " +" -X ИÑпиÑује Ñвезе низова таÑтера Ñа -x и " "придружене наредбе у облику\n" " који може бити поново коришћен као " "улаз.\n" @@ -2521,7 +2635,7 @@ msgstr "" " „bind“ даје 0 оÑим ако није дата непозната опција или ако не дође до " "грешке." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2540,7 +2654,7 @@ msgstr "" " Излазно Ñтање:\n" " Излазно Ñтање је 0 оÑим ако N није веће или једнако 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2558,7 +2672,7 @@ msgstr "" " Излазно Ñтање:\n" " Излазно Ñтање је 0 оÑим ако N није веће или једнако 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2583,7 +2697,7 @@ msgstr "" "ШКОЉКЕ\n" " није уграђеноÑÑ‚ шкољке." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2611,7 +2725,7 @@ msgstr "" " Даје 0 оÑим ако шкољка не извршава функцију шкољке или ИЗРÐЗ\n" " није иÑправан." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2634,16 +2748,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2693,13 +2807,13 @@ msgstr "" "је\n" " коришћено „-P“; у Ñупротном вредноÑÑ‚ различиту од нуле." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2721,7 +2835,7 @@ msgstr "" " Даје 0 оÑим ако није дата неиÑправна опција или текући директоријум\n" " не може бити прочитан." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2737,7 +2851,7 @@ msgstr "" " Излазно Ñтање:\n" " Увек уÑпешна." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2749,7 +2863,7 @@ msgstr "" " Излазно Ñтање:\n" " Увек уÑпешно." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2761,7 +2875,7 @@ msgstr "" " Излазно Ñтање:\n" " Увек неуÑпешно." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2771,10 +2885,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2787,15 +2901,15 @@ msgstr "" " наредби на диÑку када поÑтоји функција Ñа иÑтим називом.\n" " \n" " Опције:\n" -" -p\tкориÑти оÑновну вредноÑÑ‚ за ПУТÐЊУ којом Ñе оÑигурава налажење\n" -" Ñвих Ñтандардних помагала\n" -" -v\tиÑпиÑује Ð¾Ð¿Ð¸Ñ ÐÐРЕДБЕ Ñлично уграђеноÑти „type“\n" -" -V\tиÑпиÑује опширнији Ð¾Ð¿Ð¸Ñ Ñваке ÐÐРЕДБЕ\n" +" -p кориÑти оÑновну вредноÑÑ‚ за ПУТÐЊУ којом Ñе оÑигурава налажење\n" +" Ñвих Ñтандардних помагала\n" +" -v иÑпиÑује Ð¾Ð¿Ð¸Ñ ÐÐРЕДБЕ Ñлично уграђеноÑти „type“\n" +" -V иÑпиÑује опширнији Ð¾Ð¿Ð¸Ñ Ñваке ÐÐРЕДБЕ\n" " \n" " Излазно Ñтање:\n" " Даје излазно Ñтање ÐÐРЕДБЕ, или неуÑпех ако Ñе ÐÐРЕДБРне пронађе." -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2805,9 +2919,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2871,17 +2985,18 @@ msgstr "" "ако\n" " не дође до грешке доделе променљиве." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Подешава вредноÑти и атрибуте променљиве.\n" " \n" " ЗаÑтарело. Погледајте „help declare“." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2908,7 +3023,7 @@ msgstr "" "дође\n" " до грешке додељивања променљиве, или ако шкољка не извршава функцију." -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2934,9 +3049,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2971,7 +3086,7 @@ msgstr "" " Излазно Ñтање:\n" " Даје позитиван резултат оÑим ако не дође до грешке пиÑања." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2993,7 +3108,7 @@ msgstr "" " Излазно Ñтање:\n" " Даје позитиван резултат оÑим ако не дође до грешке пиÑања." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3045,7 +3160,7 @@ msgstr "" " Даје позитиван резултат оÑим ако ÐÐЗИВ није уграђеноÑÑ‚ шкољке или ако не " "дође до грешке." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3064,7 +3179,7 @@ msgstr "" " Излазно Ñтање:\n" " Даје излазно Ñтање наредбе или уÑпех ако је наредба ништавна." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3148,7 +3263,7 @@ msgstr "" "на\n" " крај опције или ако не дође до грешке." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3159,8 +3274,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3190,7 +3305,7 @@ msgstr "" " Даје позитиван резултат оÑим ако ÐÐРЕДБРније нађена или ако не дође до " "грешке преуÑмеравања." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3202,7 +3317,7 @@ msgstr "" " Ðапушта шкољку Ñа Ñтањем N. Ðко је N изоÑтављено, излазно Ñтање\n" " је оно поÑледње извршене наредбе." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3216,7 +3331,7 @@ msgstr "" "извршено\n" " у шкољци пријављивања." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3273,7 +3388,7 @@ msgstr "" " Даје позитиван резултат или Ñтање извршене наредбе; не-нулу ако дође до " "грешке." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3293,7 +3408,7 @@ msgstr "" " Излазно Ñтање:\n" " Стање наредбе поÑтављене у први план, или неуÑпех ако дође до грешке." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3317,7 +3432,7 @@ msgstr "" " Даје позитиван резултат оÑим ако није укључено управљање поÑлом или ако " "не дође до грешке." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3326,15 +3441,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3346,22 +3461,22 @@ msgstr "" " дати аргументи, приказује Ñе податак о упамћеним наредбама.\n" " \n" " Опције:\n" -" -d\t\tзаборавља запамћено меÑто Ñваког ÐÐЗИВÐ\n" -" -l\t\tприказује у облику који може бити поново коришћен као улаз\n" -" -p путања \tкориÑти ПУТÐЊУ као пуну путању ÐÐЗИВÐ\n" -" -r\t\tзаборавља Ñва запамћена меÑта\n" -" -t\t\tиÑпиÑује запамћено меÑто Ñваког ÐÐЗИВÐ, поÑтављајући\n" -" \t\t одговарајући ÐÐЗИВ иÑпред Ñваког меÑта ако је дато\n" -" \t\t више ÐÐЗИВÐ\n" +" -d\tзаборавља запамћено меÑто Ñваког ÐÐЗИВÐ\n" +" -l\tприказује у облику који може бити поново коришћен као улаз\n" +" -p путања кориÑти ПУТÐЊУ као пуну путању ÐÐЗИВÐ\n" +" -r\tзаборавља Ñва запамћена меÑта\n" +" -t\tиÑпиÑује запамћено меÑто Ñваког ÐÐЗИВÐ, поÑтављајући\n" +" \t\tодговарајући ÐÐЗИВ иÑпред Ñваког меÑта ако је дато\n" +" \t\tвише ÐÐЗИВÐ\n" " Ðргументи:\n" -" ÐÐЗИВ\t\tСваки ÐÐЗИВ Ñе тражи у $ПУТÐЊИ и додаје на ÑпиÑак\n" -" \t\t запамћених наредби.\n" +" ÐÐЗИВ\tСваки ÐÐЗИВ Ñе тражи у $ПУТÐЊИ и додаје на ÑпиÑак\n" +" \t\tзапамћених наредби.\n" " \n" " Излазно Ñтање:\n" " Даје позитиван резултат оÑим ако Ñе ÐÐЗИВ не нађе или ако је дата " "неиÑправна опција." -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3373,7 +3488,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3401,7 +3516,8 @@ msgstr "" " Даје позитиван резултат оÑим ако ШÐБЛОРније пронађен или ако је дата " "неиÑправна опција." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3410,23 +3526,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3455,10 +3571,10 @@ msgstr "" " -s\t додаје ÐРГ-те на ÑпиÑак иÑторијата као један уноÑ\n" " \n" " Ðко је дата ДÐТОТЕКÐ, кориÑти Ñе као датотека иÑторијата. УÑупротном,\n" -" ако $ДÐТОТЕКÐ_ИСТОРИЈÐТРима вредноÑÑ‚, она Ñе кориÑти, другачије „~/." +" ако ДÐТОТЕКÐ_ИСТОРИЈÐТРима вредноÑÑ‚, она Ñе кориÑти, другачије „~/." "bash_history“.\n" " \n" -" Ðко је променљива $ЗÐПИСВРЕМЕÐÐИСТОРИЈÐТРподешена и није ништавна, " +" Ðко је променљива ЗÐПИСВРЕМЕÐÐИСТОРИЈÐТРподешена и није ништавна, " "кориÑти Ñе\n" " њена вредноÑÑ‚ као ниÑка запиÑа за „strftime(3)“ да иÑпиÑше временÑку " "ознаку придружену\n" @@ -3469,8 +3585,7 @@ msgstr "" " Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не " "дође до грешке." -#: builtins.c:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3480,7 +3595,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3516,7 +3631,7 @@ msgstr "" "дође до грешке.\n" " Ðко Ñе кориÑти „-x“, даје излазно Ñтање ÐÐРЕДБЕ." -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3526,7 +3641,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3548,7 +3663,8 @@ msgstr "" " Даје позитиван резултат оÑим ако није дата неиÑправна опција или " "ОДРЕДБÐПОСЛÐ." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3560,7 +3676,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3592,7 +3709,7 @@ msgstr "" " Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не " "дође до грешке." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3676,7 +3793,7 @@ msgstr "" " Излазно Ñтање:\n" " Ðко Ñе поÑледњи ÐРГ процени на 0, иÑпиÑује 1; у Ñупротном даје 0." -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3697,27 +3814,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3743,7 +3861,7 @@ msgstr "" " -d гран\t наÑтавља Ñве док Ñе не прочита први знак ГРÐÐИЧÐИКÐ,\n" " \t\t радије него нови ред\n" " -e\t кориÑти читање реда да добије ред у међудејÑтвеној шкољци\n" -" -i текÑÑ‚\t КориÑти ТЕКСТ као почетни текÑÑ‚ за читање реда\n" +" -i текÑÑ‚\t кориÑти ТЕКСТ као почетни текÑÑ‚ за читање реда\n" " -n n-знака даје резултат након читања знакова N-ЗÐÐКОВРрадије него " "да\n" " \t\t чека на нови ред, али поштује граничника ако је прочитано\n" @@ -3775,7 +3893,7 @@ msgstr "" " или ако Ñе не доÑтави неиÑправан опиÑник датотеке као аргумент опције „-" "u“." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3795,7 +3913,8 @@ msgstr "" " Излазно Ñтање:\n" " Даје N, или неуÑпех ако шкољка не извршава функцију или ÑпиÑ." -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3863,7 +3982,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3966,7 +4086,7 @@ msgstr "" " Излазно Ñтање:\n" " Даје позитиван резултат оÑим ако није дата неиÑправна опција." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3976,7 +4096,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4007,7 +4127,7 @@ msgstr "" " Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако је " "ÐÐЗИВ Ñамо за читање." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4041,7 +4161,7 @@ msgstr "" " Даје позитиван резултат оÑим ако је дата неиÑправна опција или је ÐÐЗИВ " "неиÑправан." -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4053,9 +4173,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4084,7 +4203,7 @@ msgstr "" " Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако је " "ÐÐЗИВ неиÑправан." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4102,7 +4221,7 @@ msgstr "" " Излазно Ñтање:\n" " Резултати Ñу уÑпешни оÑим ако N није негативно иливеће од $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4126,7 +4245,7 @@ msgstr "" " Даје Ñтање поÑледње извршене наредбе у ДÐТОТЕЦИ; не уÑпева\n" " ако назив ДÐТОТЕКЕ не може бити прочитан." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4151,7 +4270,7 @@ msgstr "" " Даје позитиван резултат оÑим ако није укључено управљање поÑлом или ако " "не дође до грешке." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4215,9 +4334,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4295,8 +4414,8 @@ msgstr "" " ОÑтали оператори:\n" " \n" " -o ОПЦИЈРТачно ако је опција шкољке ОПЦИЈРукључена.\n" -" -v ПРОМ\t Тачно ако је променљива шкољке ПРОМ подешена\n" -" -R ПРОМ\t Тачно ако је променљива шкољке ПРОМ подешена и ако " +" -v ПРОМ Тачно ако је променљива шкољке ПРОМ подешена\n" +" -R ПРОМ Тачно ако је променљива шкољке ПРОМ подешена и ако " "је упута назива.\n" " ! ИЗРÐЗ Тачно ако је израз нетачан.\n" " ИЗРÐЗ1 -a ИЗРÐЗ2 Тачно ако је тачан и израз1 И израз2.\n" @@ -4315,7 +4434,7 @@ msgstr "" "ИЗРÐЗ процени\n" " на нетачно или ако је дат неиÑправан аргумент." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4327,7 +4446,7 @@ msgstr "" " Ово је Ñиноним за уграђеноÑÑ‚ „test“, али поÑледњи аргумент мора\n" " бити доÑловна ], да поклопи отворену [." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4346,7 +4465,7 @@ msgstr "" " Излазно Ñтање:\n" " Увек уÑпешно." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4429,7 +4548,7 @@ msgstr "" " Даје позитиван резултат оÑим за неиÑправну ОДРЕДБÐ_СИГÐÐЛРили за " "неиÑправну опцију." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4438,18 +4557,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4489,7 +4608,7 @@ msgstr "" " Даје позитиван резултат ако Ñу пронађени Ñви ÐÐЗИВИ; неуÑпех ако ниједан " "није пронађен." -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4507,6 +4626,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4518,7 +4638,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4550,6 +4671,7 @@ msgstr "" " -e\tнајвећа хитноÑÑ‚ заказивања („фино“)\n" " -f\tнајвећа величина датотеке коју запише шкољка и њен пород\n" " -i\tнајвећи број Ñигнала на чекању\n" +" -k\tнајвећи број к-чекања додељених овом процеÑу\n" " -l\tнајвећа величина коју Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¼Ð¾Ð¶Ðµ да закључа у меморији\n" " -m\tнајвећа величина боравишног Ñкупа\n" " -n\tнајвећи број отворених опиÑника датотеке\n" @@ -4561,7 +4683,8 @@ msgstr "" " -u\tнајвећи број кориÑничких процеÑа\n" " -v\tвеличина виртуелне меморије\n" " -x\tнајвећи број закључавања датотеке\n" -" -T највећи број нити\n" +" -P\tнајвећи број пÑеудотерминала\n" +" -T\tнајвећи број нити\n" " \n" " ÐиÑу Ñве опције доÑтупне на Ñвим платформама.\n" " \n" @@ -4580,7 +4703,7 @@ msgstr "" " Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако " "не дође до грешке." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4614,7 +4737,7 @@ msgstr "" " Даје позитиван резултат оÑим ако је РЕЖИМ неиÑправан или ако је дата " "неиÑправна опција." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4647,7 +4770,7 @@ msgstr "" " ИÑпиÑује Ñтање поÑледњег ИБ-а; неуÑпех ако је ИБ неиÑправан или ако је\n" " дата неиÑправна опција." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4674,7 +4797,7 @@ msgstr "" "дата\n" " неиÑправна опција." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4696,7 +4819,7 @@ msgstr "" " Излазно Ñтање:\n" " ИÑпиÑује Ñтање поÑледње извршене наредбе." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4727,7 +4850,7 @@ msgstr "" " Излазно Ñтање:\n" " ИÑпиÑује Ñтање поÑледње извршене наредбе." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4763,7 +4886,7 @@ msgstr "" " Излазно Ñтање:\n" " ИÑпиÑује Ñтање поÑледње извршене наредбе." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4792,7 +4915,7 @@ msgstr "" " Излазно Ñтање:\n" " Стање резултата јеÑте Ñтање резултата СПОЈÐОГРЕДÐ." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4802,15 +4925,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Execute commands based on pattern matching.\n" +"Извршава наредбе на оÑнову поклапања шаблона.\n" " \n" -" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n" -" `|' is used to separate multiple patterns.\n" +" Изборно извршава ÐÐРЕДБЕ на оÑнову РЕЧИ која поклапа ШÐБЛОÐ.\n" +" | Ñе кориÑти за раздвајање више шаблона.\n" " \n" " Излазно Ñтање:\n" " ИÑпиÑује Ñтање поÑледње извршене наредбе." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4848,7 +4971,7 @@ msgstr "" " Излазно Ñтање:\n" " ИÑпиÑује Ñтање поÑледње извршене наредбе." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4866,7 +4989,7 @@ msgstr "" " Излазно Ñтање:\n" " ИÑпиÑује Ñтање поÑледње извршене наредбе." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4884,7 +5007,8 @@ msgstr "" " Излазно Ñтање:\n" " ИÑпиÑује Ñтање поÑледње извршене наредбе." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4894,7 +5018,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Ствара ÐºÐ¾Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¿Ð¾Ð´ називом ÐÐЗИВ.\n" " \n" @@ -4906,7 +5030,7 @@ msgstr "" " Излазно Ñтање:\n" " Даје излазно Ñтање ÐÐРЕДБЕ." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4932,7 +5056,7 @@ msgstr "" " Излазно Ñтање:\n" " Даје позитиван резултат оÑим ако је ÐÐЗИВ Ñамо за читање." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4950,7 +5074,7 @@ msgstr "" " Излазно Ñтање:\n" " ИÑпиÑује Ñтање поÑледње извршене наредбе." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4974,7 +5098,7 @@ msgstr "" " Излазно Ñтање:\n" " Даје Ñтање наÑтављеног поÑла." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4992,7 +5116,7 @@ msgstr "" " Излазно Ñтање:\n" " Даје 1 ако Ñе ИЗРÐЗ процени на 0; у Ñупротном даје 0." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5045,7 +5169,7 @@ msgstr "" " Излазно Ñтање:\n" " 0 или 1 у завиÑноÑти од вредноÑÑ‚ ИЗРÐЗÐ." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5173,7 +5297,7 @@ msgstr "" " о наредбама које требају бити Ñачуване на ÑпиÑку " "иÑторијата.\n" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5183,19 +5307,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5232,7 +5356,7 @@ msgstr "" "замена\n" " директоријума не уÑпе." -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5241,16 +5365,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5285,7 +5409,7 @@ msgstr "" "измена\n" " директоријума не уÑпе." -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5296,19 +5420,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5340,7 +5464,7 @@ msgstr "" " Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако " "не дође до грешке." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5379,7 +5503,7 @@ msgstr "" "дата\n" " неиÑправна опција или ако је ÐÐЗИВ_ОПЦИЈЕ иÑкључен." -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5396,15 +5520,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5446,7 +5570,7 @@ msgstr "" " Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не\n" " дође до грешке пиÑања или доделе." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5459,11 +5583,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5495,7 +5619,7 @@ msgstr "" " Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако " "не дође до грешке." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5516,7 +5640,7 @@ msgstr "" " Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако " "не дође до грешке." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5572,7 +5696,7 @@ msgstr "" "ÐÐЗИВ\n" " нема одређену одредбу довршавања." -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5583,20 +5707,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5621,21 +5746,23 @@ msgstr "" " јеÑте оÑновни ÐИЗ.\n" " \n" " Опције:\n" +" -d гранич КориÑти ГРÐÐИЧÐИК да оконча редове, умеÑто новог реда\n" " -n број Умножава највише БРОЈ редова. Ðко је БРОЈ 0, умножавају " -"Ñе Ñви редови.\n" +"Ñе Ñви редови\n" " -O порекло Почиње додељивање ÐИЗУ при индекÑу ПОРЕКЛО. ОÑновни " -"Ð¸Ð½Ð´ÐµÐºÑ Ñ˜Ðµ 0.\n" -" -s број Одбацује првих БРОЈ прочитаних редова.\n" -" -t Уклања пратећи нови ред из Ñваког прочитаног реда.\n" +"Ð¸Ð½Ð´ÐµÐºÑ Ñ˜Ðµ 0\n" +" -s број Одбацује првих БРОЈ прочитаних редова\n" +" -t Уклања пратећи ГРÐÐИЧÐИК из Ñваког прочитаног реда " +"(оÑновни нови ред)\n" " -u од Чита редове из опиÑника датотеке ОД умеÑто Ñа Ñтандардног " -"улаза.\n" +"улаза\n" " -C опозив Процењује ОПОЗИВ Ñваког пута када Ñе прочита КОЛИЧИÐÐ " -"редова.\n" +"редова\n" " -c количина Ðаводи број прочитаних редова између Ñваког позива за " -"ОПОЗИВ.\n" +"ОПОЗИВ\n" " \n" " Ðргументи:\n" -" ÐИЗ Ðазив променљиве низа за податке датотеке.\n" +" ÐИЗ Ðазив променљиве низа за податке датотеке\n" " \n" " Ðко је „-C“ доÑтављено без „-c“, оÑновна количина је 5000. Када Ñе\n" " процени ОПОЗИВ, доÑтављен је Ð¸Ð½Ð´ÐµÐºÑ Ñледећег елемента низа који ће\n" @@ -5650,7 +5777,7 @@ msgstr "" "ÐИЗ Ñамо\n" " за читање или није индекÑирани низ." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5659,3 +5786,21 @@ msgstr "" "Чита редове из датотеке у променљиву низа.\n" " \n" " Синоним за „mapfile“." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "ÐуторÑка права (C) 2014 Задужбина Ñлободног Ñофтвера, Доо." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "ÐуторÑка права (C) 2012 Задужбина Ñлободног Ñофтвера, Доо." diff --git a/po/sv.gmo b/po/sv.gmo index fdb68e56b3cf0f70b58538a778c21a56685c55f0..ba977e8daac8592884ed07d414ae2b6e2bef6cfa 100644 GIT binary patch delta 20981 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 ZAotX@I#KSmcGLD`h#1i&YxT$a{{StxnC}1p delta 29508 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 NA^+S%TkO~D{|BEoF;M^j diff --git a/po/sv.po b/po/sv.po index e63def5..7ae3f0d 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1,136 +1,142 @@ # Swedish translation of bash -# Copyright © 2008, 2009, 2010, 2011, 2013, 2014 Free Software Foundation, Inc. +# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Göran Uddeborg , 2008, 2009, 2010, 2011, 2013, 2014. +# Göran Uddeborg , 2008, 2009, 2010, 2011, 2013, 2014, 2015. # -# $Revision: 1.15 $ +# $Revision: 1.20 $ msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2014-01-30 22:41+0100\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-11-01 10:54+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 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "felaktigt vektorindex" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, 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:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ogiltig nyckel till associativ vektor" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: det gÃ¥r inte att tilldela till ickenumeriska index" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: mÃ¥ste använda index vid tilldelning av associativ vektor" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: det gÃ¥r inte att skapa: %s" -#: bashline.c:3982 +#: bashline.c:4091 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:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: första ickeblanka tecknet är inte '\"'" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" -msgstr "ingen avslutande \"%c\" i %s" +msgstr "ingen avslutande â€%c†i %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: kolonseparator saknas" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "klammerexpansion: kan inte allokera minne för %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "klammerexpansion: misslyckades att allokera minne för %d element" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "klammerexpansion: misslyckades att allokera minne för â€%sâ€" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" -msgstr "\"%s\": ogiltigt aliasnamn" +msgstr "â€%sâ€: ogiltigt aliasnamn" #: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "radredigering är inte aktiverat" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" -msgstr "\"%s\": ogiltigt tangentbindningsnamn" +msgstr "â€%sâ€: ogiltigt tangentbindningsnamn" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: det gÃ¥r inte att läsa: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" -msgstr "\"%s\": det gÃ¥r inte att avbinda" +msgstr "â€%sâ€: det gÃ¥r inte att avbinda" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" -msgstr "\"%s\": okänt funktionsnamn" +msgstr "â€%sâ€: okänt funktionsnamn" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s är inte bundet till nÃ¥gra tangenter.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s kan anropas via " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "slingräknare" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "endast meningsfullt i en \"for\"-, \"while\"- eller \"until\"-slinga" +msgstr "endast meningsfullt i en â€forâ€-, â€whileâ€- eller â€untilâ€-slinga" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -140,300 +146,329 @@ msgstr "" " \n" " Utan UTTR, returnerar " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME är inte satt" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "för mÃ¥nga argument" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "ingen annan katalog" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD är inte satt" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "rad %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "varning: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: användning: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: flaggan kräver ett argument" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: numeriskt argument krävs" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: finns inte" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: ogiltig flagga" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: ogiltigt flaggnamn" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" -msgstr "\"%s\": inte en giltig identifierare" +msgstr "â€%sâ€: inte en giltig identifierare" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "ogiltigt oktalt tal" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "ogiltigt hexadecimalt tal" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "ogiltigt tal" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: ogiltig signalspecifikation" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "\"%s\": inte en pid eller giltig jobbspecifikation" +msgstr "â€%sâ€: inte en pid eller giltig jobbspecifikation" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: endast läsbar variabel" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s utanför giltigt intervall" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s utanför giltigt intervall" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: inget sÃ¥dant jobb" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: ingen jobbstyrning" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "ingen jobbstyrning" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: begränsat" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "begränsat" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: inte inbyggt i skalet" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "skrivfel: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "fel när terminalattribut ställdes in: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "fel när terminalattribut hämtades: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: fel när aktuell katalog hämtades: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: tvetydig jobbspecifikation" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "hjälp är inte tillgängligt i denna version" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: ogiltigt Ã¥tgärdsnamn" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: ingen kompletteringsspecifikation" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "varning: flaggan -F fungerar kanske inte som du väntar dig" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "varning: flaggan -C fungerar kanske inte som du väntar dig" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "kör inte en kompletteringsfunktion" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "kan endast användas i en funktion" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: en referensvariabel kan inte vara en vektor" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: att en namnreferensvariabel självrefererar är inte tillÃ¥tet" -#: builtins/declare.def:398 -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:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: cirkulär namnreferens" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: ogiltigt variabelnamn för referens" + +#: builtins/declare.def:463 +msgid "cannot use `-f' to make functions" +msgstr "det gÃ¥r inte att använda â€-f†för att göra funktioner" + +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: endast läsbar funktion" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: citerad sammansatt tilldelning av vektorer undanbedes" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: det gÃ¥r inte att konvertera en associativ vektor till indexerad" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "dynamisk laddning är inte tillgängligt" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "det gÃ¥r inte att öppna delat objekt %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "kan inte hitta %s i det delade objektet %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "inläsningsfunktionen för %s returnerar misslyckande (%d): inte inläst" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: inte dynamiskt laddad" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: kan inte ta bort: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: är en katalog" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: inte en normal fil" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: filen är för stor" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: det gÃ¥r inte att köra binär fil" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: kan inte köra: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "utloggning\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" -msgstr "inte ett inloggningsskal: använd \"exit\"" +msgstr "inte ett inloggningsskal: använd â€exitâ€" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Det finns stoppade jobb.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Det finns körande jobb.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "hittar inget kommando" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "historiespecifikation" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: det gÃ¥r inte att öppna temporärfil: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "aktuell" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "jobb %d startade utan jobbstyrning" @@ -450,39 +485,39 @@ msgstr "%s: flaggan kräver ett argument -- %c\n" #: builtins/hash.def:92 msgid "hashing disabled" -msgstr "hasning avslaget" +msgstr "hashning avslaget" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: hashtabellen tom\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "träffar\tkommando\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Skalkommandon som matchar nyckelordet '" msgstr[1] "Skalkommandon som matchar nyckelorden '" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -"inget hjälpämne matchar \"%s\". Prova \"help help\" eller \"man -k %s\" " -"eller \"info %s\"." +"inget hjälpämne matchar â€%sâ€. Prova â€help help†eller â€man -k %s†eller " +"â€info %sâ€." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: det gÃ¥r inte att öppna: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -493,24 +528,29 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Dessa skalkommandon är definierade internt. Skriv \"help\" för att se\n" -"denna lista. Skriv \"help namn\" för att fÃ¥ reda pÃ¥ mer om funktionen\n" -"\"namn\". Använd \"info bash\" fÃ¥r att fÃ¥ reda pÃ¥ mer om skalet rent\n" -"allmänt. Använd \"man -k\" eller \"info\" för att fÃ¥ reda pÃ¥ mer om\n" +"Dessa skalkommandon är definierade internt. Skriv â€help†för att se\n" +"denna lista. Skriv â€help namn†för att fÃ¥ reda pÃ¥ mer om funktionen\n" +"â€namnâ€. Använd â€info bash†för att fÃ¥ reda pÃ¥ mer om skalet rent\n" +"allmänt. Använd â€man -k†eller â€info†för att fÃ¥ reda pÃ¥ mer om\n" "kommandon som inte är i listan.\n" "\n" "En stjärna (*) bredvid ett namn betyder att det kommandot är avstängt.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "det gÃ¥r inte att använda mer än en av -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "historieposition" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: ogiltigt argument" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: historieexpansionen misslyckades" @@ -522,115 +562,115 @@ msgstr "%s: inlib misslyckades" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "inga andra flaggor är tillÃ¥tna med \"-x\"" +msgstr "inga andra flaggor är tillÃ¥tna med â€-xâ€" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: argument mÃ¥ste vara processer eller job-id:n" +msgstr "%s: argument mÃ¥ste vara processer eller jobb-id:n" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Okänt fel" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "uttryck förväntades" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: inte en indexerad vektor" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "%s: ogiltig filidentifierarspecifikation" +msgstr "%s: ogiltig filbeskrivarspecifikation" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ogiltig filbeskrivare: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: ogiltigt radantal" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: ogiltig vektorstart" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" -msgstr "%s: ogiltigt Ã¥teranropskvanta" +msgstr "%s: ogiltigt kvantum för Ã¥teranrop" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "tomt vektorvariabelnamn" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "stöd för vektorvariabler krävs" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" -msgstr "\"%s\": formateringstecken saknas" +msgstr "â€%sâ€: formateringstecken saknas" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" -msgstr "\"%c\": ogiltig specifikation av tidsformat" +msgstr "â€%câ€: ogiltig specifikation av tidsformat" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" -msgstr "\"%c\": ogiltigt formateringstecken" +msgstr "â€%câ€: ogiltigt formateringstecken" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "varning: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "formattolkningsproblem: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "hexadecimal siffra saknas för \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "unicode-siffra saknas för \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "ingen annan katalog" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: ogiltigt argument" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "katalogstacken är tom" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "katalogstackindex" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 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,8 +694,8 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" "Visa listan av kataloger i minnet just nu. Kataloger hamnar i listan\n" -" med kommandot \"pushd\" command. Du kan komma tillbaka upp genom\n" -" listan med kommandot \"popd\".\n" +" med kommandot â€pushdâ€. Du kan komma tillbaka upp genom listan med\n" +" kommandot â€popdâ€.\n" " \n" " Flaggor:\n" " -c\tnollställ katalogstacken genom att bo bort alla elementen\n" @@ -669,10 +709,10 @@ msgstr "" " +N\tVisa den N:e posten räknat frÃ¥n vänster i listan som visas\n" " \tav dirs när det anropas utan flaggor, räknat frÃ¥n noll.\n" " \n" -" -N\tVisa den N:e posten räkntat frÃ¥n höger i listan som visas\n" +" -N\tVisa den N:e posten räknat frÃ¥n höger i listan som visas\n" "\tav dirs när det anropas utan flaggor, räknat frÃ¥n noll." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -706,19 +746,19 @@ msgstr "" " \n" " Argument:\n" " +N\tRoterar stacken sÃ¥ att den N:e katalogen (räknat frÃ¥n\n" -" \tvänster i listan som visas av \"dirs\", med början pÃ¥ noll) hamnar\n" +" \tvänster i listan som visas av â€dirsâ€, med början pÃ¥ noll) hamnar\n" " \tpÃ¥ toppen.\n" " \n" " -N\tRoterar stacken sÃ¥ att den N:e katalogen (räknat frÃ¥n\n" -" \thöger i listan som visas av \"dirs\", med början pÃ¥ noll) hamnar\n" +" \thöger i listan som visas av â€dirsâ€, med början pÃ¥ noll) hamnar\n" " \tpÃ¥ toppen.\n" " \n" " kat\tLägger till KAT till toppen av katalogstacken, och gör den\n" " \ttill den nya aktuella arbetskatalogen.\n" " \n" -" Den inbyggda \"dirs\" visar katalogstacken." +" Den inbyggda â€dirs†visar katalogstacken." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -747,153 +787,163 @@ msgstr "" " \n" " Arguments:\n" " +N\tTar bort den N:e posten räknat frÃ¥n vänster i listan\n" -" \tsom visas av \"dirs\", med början pÃ¥ noll. Till exempel: \"popd +0\"\n" -" \ttar bort den första katalogen, \"popd +1\" den andra.\n" +" \tsom visas av â€dirsâ€, med början pÃ¥ noll. Till exempel: â€popd +0â€\n" +" \ttar bort den första katalogen, â€popd +1†den andra.\n" " \n" " -N\tTar bort den N:e posten räknat frÃ¥n höger i listan\n" -" \tsom visas av \"dirs\", med början pÃ¥ noll. Till exempel: \"popd -0\"\n" -" \ttar bort den sista katalogen, \"popd -1\" den näst sista.\n" +" \tsom visas av â€dirsâ€, med början pÃ¥ noll. Till exempel: â€popd -0â€\n" +" \ttar bort den sista katalogen, â€popd -1†den näst sista.\n" " \n" -" Den inbyggda \"dirs\" visar katalogstacken." +" Den inbyggda â€dirs†visar katalogstacken." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ogiltig tidsgränsspecifikation" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "läsfel: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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" +"det gÃ¥r bara att göra â€return†frÃ¥n en funktion eller källinläst skript" -#: builtins/set.def:782 +#: builtins/set.def:841 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:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: det gÃ¥r inte att ta bort tilldelning" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, 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:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: inte en vektorvariabel" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: inte en funktion" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: det gÃ¥r inte att exportera" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "skiftantal" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "det gÃ¥r inte att sätta och ta bort skalflaggor samtidigt" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ogiltigt skalflaggsnamn" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "filnamnsargument krävs" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: filen finns inte" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "det gÃ¥r inte att suspendera" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "det gÃ¥r inte att suspendera ett inloggningsskal" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "%s är ett alias för \"%s\"\n" +msgstr "%s är ett alias för â€%sâ€\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s är ett nyckelord i skalet\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s är en funktion\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s är en special inbyggd i skalet\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s är inbyggt i skalet\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s är %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s är hashad (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: ogiltigt gränsargument" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" -msgstr "\"%c\": felaktigt kommando" +msgstr "â€%câ€: felaktigt kommando" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: kan inte avgöra gränsen: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "gräns" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: kan inte ändra gränsen: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "oktalt tal" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "\"%c\": ogiltig operator för symboliskt läge" +msgstr "â€%câ€: ogiltig operator för symboliskt läge" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "\"%c\": ogiltigt tecken för symboliskt läge" +msgstr "â€%câ€: ogiltigt tecken för symboliskt läge" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " rad " @@ -907,82 +957,103 @@ msgstr "senaste kommando: %s\n" msgid "Aborting..." msgstr "Avbryter..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "INFORMATION: " + +#: error.c:463 msgid "unknown command error" msgstr "okänt kommandofel" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "felaktig kommandotyp" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "felaktig anslutning" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "felaktigt hopp" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: obunden variabel" -#: eval.c:189 +#: eval.c:209 #, 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:512 +#: execute_cmd.c:527 #, 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" +msgstr "det gÃ¥r inte att omdirigera standard in frÃ¥n /dev/null: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" -msgstr "TIMEFORMAT: \"%c\": ogiltigt formateringstecken" +msgstr "TIMEFORMAT: â€%câ€: ogiltigt formateringstecken" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "rörfel" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: maximal nästning av eval överskriden (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: maximal nästning av source överskriden (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximal nästning av funktioner överskriden (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s: begränsat: det gÃ¥r inte att ange \"/\" i kommandonamn" +msgstr "%s: begränsat: det gÃ¥r inte att ange â€/†i kommandonamn" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: kommandot finns inte" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: felaktig tolk" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: det gÃ¥r inte att köra binär fil: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "â€%sâ€: är en speciell inbyggd" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "det gÃ¥r inte att duplicera fb %d till fb %d" @@ -1009,11 +1080,11 @@ msgstr "division med 0" #: expr.c:542 msgid "bug: bad expassign token" -msgstr "bug: felaktig expassign-token" +msgstr "fel: felaktig expassign-symbol" #: expr.c:595 msgid "`:' expected for conditional expression" -msgstr "\":\" förväntades i villkorligt uttryck" +msgstr "â€:†förväntades i villkorligt uttryck" #: expr.c:919 msgid "exponent less than 0" @@ -1025,39 +1096,39 @@ msgstr "en identifierare förväntades efter pre-ökning eller pre-minskning" #: expr.c:1002 msgid "missing `)'" -msgstr "\")\" saknas" +msgstr "â€)†saknas" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "syntaxfel: en operand förväntades" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "syntaxfel: ogiltig aritmetisk operator" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s: %s (felsymbol är \"%s\")" +msgstr "%s%s%s: %s (felsymbol är â€%sâ€)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "ogiltig aritmetisk bas" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "värdet är för stort för basen" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: uttrycksfel\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: det gÃ¥r inte att komma Ã¥t föräldrakatalogen" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "det gÃ¥r inte att Ã¥terställa fördröjningsfritt läge för fb %d" @@ -1073,148 +1144,148 @@ msgstr "" 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:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp rör" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "avgrenad pid %d fins i körande jobb %d" +msgstr "avgrenad pid %d finns i körande jobb %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "tar bort stoppat jobb %d med processgrupp %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) i the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ingen sÃ¥dan pid" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Klart" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" -msgstr "Stoppat" +msgstr "Stoppad" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" -msgstr "Stoppat(%s)" +msgstr "Stoppad(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Kör" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Klart(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Avslut %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Okänd status" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(minnesutskrift skapad) " -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (ak: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "barns setpgid (%ld till %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen uppgift om process %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: jobb %d är stoppat" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: jobbet har avslutat" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: jobb %d är redan i bakgrunden" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: slÃ¥r pÃ¥ WNOHANG för att undvika oändlig blockering" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: rad %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (minnesutskrift skapad)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(ak nu: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp misslyckades" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "det gÃ¥r inte att sätta terminalprocessgrupp (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "ingen jobbstyrning i detta skal" @@ -1266,19 +1337,19 @@ msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall" #: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" -msgstr "realloc: start- och slutstycesstorlekar skiljer" +msgstr "realloc: start- och slutstyckesstorlekar skiljer" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p finns redan i tabellen som fritt?\n" @@ -1302,7 +1373,7 @@ msgstr "%s: ogiltig tjänst" msgid "%s: bad network path specification" msgstr "%s: felaktig specifikation av nätverkssökväg" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "nätverksoperationer stöds inte" @@ -1339,225 +1410,260 @@ msgstr "Du har ny post i $_" msgid "The mail in %s has been read\n" msgstr "Posten i %s har lästs\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "syntaxfel: aritmetiskt uttryck krävs" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" -msgstr "syntaxfel: oväntat \";\"" +msgstr "syntaxfel: oväntat â€;â€" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" -msgstr "syntaxfel: \"((%s))\"" +msgstr "syntaxfel: â€((%s))â€" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: felaktig instruktionstyp %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "här-dokument pÃ¥ rad %d avgränsas av filslut (ville ha \"%s\")" +msgstr "här-dokument pÃ¥ rad %d avgränsas av filslut (ville ha â€%sâ€)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -"make_redirection: omdirigeringsinstruktion \"%d\" utanför giltigt intervall" +"make_redirection: omdirigeringsinstruktion â€%d†utanför giltigt intervall" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "maximalt antal av här-dokument överskridet" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "oväntat filslut vid sökning efter matchande \"%c\"" +msgstr "oväntat filslut vid sökning efter matchande â€%câ€" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" -msgstr "oväntat filslut vid sökning efter \"]]\"" +msgstr "oväntat filslut vid sökning efter â€]]â€" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "syntaxfel i villkorligt uttryck: oväntad symbol \"%s\"" +msgstr "syntaxfel i villkorligt uttryck: oväntad symbol â€%sâ€" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "syntaxfel i villkorligt uttryck" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "oväntad symbol \"%s\", \")\" förväntades" +msgstr "oväntad symbol â€%sâ€, â€)†förväntades" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" -msgstr "\")\" förväntades" +msgstr "â€)†förväntades" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "oväntat argument \"%s\" till villkorlig unär operator" +msgstr "oväntat argument â€%s†till villkorlig unär operator" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "oväntat argument till villkorlig unär operator" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "oväntad symbol \"%s\", villkorlig binär operator förväntades" +msgstr "oväntad symbol â€%sâ€, villkorlig binär operator förväntades" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" -msgstr "villkorlig binär operato förväntades" +msgstr "villkorlig binär operator förväntades" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "oväntat argument \"%s\" till villkorlig binär operator" +msgstr "oväntat argument â€%s†till villkorlig binär operator" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "oväntat argument till villkorlig binär operator" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "oväntad symbol \"%c\" i villkorligt kommando" +msgstr "oväntad symbol â€%c†i villkorligt kommando" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "oväntad symbol \"%s\" i villkorligt kommando" +msgstr "oväntad symbol â€%s†i villkorligt kommando" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "oväntad symbol %d i villkorligt kommando" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "syntaxfel nära den oväntade symbolen \"%s\"" +msgstr "syntaxfel nära den oväntade symbolen â€%sâ€" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" -msgstr "syntaxfel nära \"%s\"" +msgstr "syntaxfel nära â€%sâ€" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "syntaxfel: oväntat filslut" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "syntaxfel" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "Använd \"%s\" fär att lämna skalet.\n" +msgstr "Använd â€%s†för att lämna skalet.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" -msgstr "oväntat filslut när matchande \")\" söktes" +msgstr "oväntat filslut när matchande â€)†söktes" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" -msgstr "komplettering: funktion \"%s\" finns inte" +msgstr "komplettering: funktion â€%s†finns inte" + +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "print_command: felaktig anslutning \"%d\"" +msgstr "print_command: felaktig anslutning â€%dâ€" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: ogiltig filbeskrivare" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL-filpekare" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "cprintf: \"%c\": ogiltigt formateringstecken" +msgstr "cprintf: â€%câ€: ogiltigt formateringstecken" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "filbeskrivare utanför giltigt intervall" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: tvetydig omdirigering" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" -msgstr "%s: begränsad: det gÃ¥r inte att skriva över en existerande fil" +msgstr "%s: det gÃ¥r inte att skriva över en existerande fil" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" -msgstr "%s: begränsad: det gÃ¥r inte att omdirigera utdata" +msgstr "%s: begränsat: det gÃ¥r inte att omdirigera utdata" -#: redir.c:191 +#: redir.c:192 #, 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:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: det gÃ¥r inte att tilldela fb till variabel" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port stöds inte utan nätverksfunktion" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "omdirigeringsfel: det gÃ¥r inte att duplicera fb" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "hittade inte /tmp, var god skapa!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp mÃ¥ste vara ett giltigt katalognamn" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ogiltig flagga" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "det gÃ¥r sätta uid till %d: effektiv uid %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "det gÃ¥r inte att sätta gid till %d: effektiv gid %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: är en katalog" + +#: shell.c:1777 msgid "I have no name!" msgstr "Jag har inget namn!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1566,48 +1672,59 @@ msgstr "" "Användning:\t%s [GNU lÃ¥ng flagga] [flagga] ...\n" "\t\t%s [GNU lÃ¥ng flagga] [flagga] skriptfil ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU lÃ¥nga flaggor:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Skalflaggor:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD eller -c kommando eller -O shopt_flagga\t\t(bara uppstart)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s eller -o flagga\n" -#: shell.c:1856 +#: shell.c:1959 #, 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" +msgstr "Skriv â€%s -c 'help set'†för mer information om skalflaggor.\n" -#: shell.c:1857 +#: shell.c:1960 #, 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" +msgstr "Skriv â€%s -c help†för mer information om inbyggda skalkommandon.\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -"Använd kommandot \"bashbug\" för att rapportera fel.\n" +"Använd kommandot â€bashbug†för att rapportera fel.\n" "Skicka synpunkter pÃ¥ översättningen till .\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "bash hemsida: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Allmän hjälp i att använda GNU-program: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ogiltig operation" #: siglist.c:48 msgid "Bogus signal" -msgstr "Felatkig signal" +msgstr "Felaktig signal" #: siglist.c:51 msgid "Hangup" @@ -1739,7 +1856,7 @@ msgstr "strömavbrott omedelbart förestÃ¥ende" #: siglist.c:191 msgid "system crash imminent" -msgstr "systemkrash omedelbart förestÃ¥ende" +msgstr "systemkrasch omedelbart förestÃ¥ende" #: siglist.c:195 msgid "migrate process to another CPU" @@ -1755,11 +1872,11 @@ msgstr "HFT-övervakningsläge givet" #: siglist.c:207 msgid "HFT monitor mode retracted" -msgstr "HFT-överakare borttagen" +msgstr "HFT-övervakare borttagen" #: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "HFT-ljudsekevens har avslutat" +msgstr "HFT-ljudsekvens har avslutat" #: siglist.c:215 msgid "Information request" @@ -1774,93 +1891,108 @@ msgstr "Okänd signal nr " msgid "Unknown Signal #%d" msgstr "Okänd signal nr %d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "felaktig substitution: ingen avslutande \"%s\" i %s" +msgstr "felaktig substitution: ingen avslutande â€%s†i %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: det gÃ¥r inte att tilldela listor till vektormedlemmar" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "det gÃ¥r inte att skapa rör för processubstitution" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "det gÃ¥r inte att skapa barn för processubstitution" -#: subst.c:5158 +#: subst.c:5848 #, 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:5160 +#: subst.c:5850 #, 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:5178 +#: subst.c:5873 #, 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:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "felaktig ersättning: ingen avslutande â€`†i %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "det gÃ¥r inte att skapa rör för kommandosubstitution" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "det gÃ¥r inte att skapa barn för kommandosubstitution" -#: subst.c:5433 +#: subst.c:6153 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:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: ogiltigt variabelnamn för referens" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parametern tom eller inte satt" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: delstränguttryck < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: felaktig substitution" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: felaktig indirekt expansion" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: felaktigt variabelnamn" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametern tom eller inte satt" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: delstränguttryck < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: det gÃ¥r inte att tilldela pÃ¥ detta sätt" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "framtida versioner av skalet kommer att framtvinga evaluering som en " -"aritmetisk substition" +"aritmetisk substitution" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "felaktig ersättning: ingen avslutande \"`\" i %s" +msgstr "felaktig ersättning: ingen avslutande â€`†i %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" -msgstr "ingen match: %s" +msgstr "ingen matchning: %s" #: test.c:147 msgid "argument expected" @@ -1871,39 +2003,39 @@ msgstr "argument förväntades" msgid "%s: integer expression expected" msgstr "%s: heltalsuttryck förväntades" -#: test.c:264 +#: test.c:265 msgid "`)' expected" -msgstr "\")\" förväntades" +msgstr "â€)†förväntades" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "\")\" förväntades, fann %s" +msgstr "â€)†förväntades, fann %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: unär operator förväntades" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: binär operator förväntades" -#: test.c:860 +#: test.c:869 msgid "missing `]'" -msgstr "\"]\" saknas" +msgstr "â€]†saknas" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "ogiltigt signalnummer" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1911,86 +2043,87 @@ msgstr "" "run_pending_traps: signalhanterare är SIG_DFL, skickar om %d (%s) till mig " "själv" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: felaktig signal %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" -msgstr "fel vid import av funktionsdefinition för \"%s\"" +msgstr "fel vid import av funktionsdefinition för â€%sâ€" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skalnivÃ¥ (%d) för hög, Ã¥terställer till 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: cirkulär namnreferens" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funktionskontext i aktuellt sammanhang" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variabeln fÃ¥r inte tilldelas ett värde" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: ogiltigt variabelnamn för referens" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funktionskontext i aktuellt sammanhang" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s har tom exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ogiltigt tecken %d i exportstr för %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" -msgstr "inget \"=\" i exportstr för %s" +msgstr "inget â€=†i exportstr för %s" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ingen kontext global_variables" -#: variables.c:4431 +#: variables.c:4772 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:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: gÃ¥r inte att öppna som FILE" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: ogiltigt värde för spÃ¥rningsfilbeskrivare" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: kompatibilitetsvärde utanför giltigt intervall" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Copyright © 2013 Free Software Foundation, Inc." +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Copyright © 2015 Free Software Foundation, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2008,16 +2141,12 @@ msgstr "GNU bash, version %s (%s)\n" #: version.c:91 version2.c:91 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." +"Detta är fri programvara, du fÃ¥r fritt ändra och vidaredistribuera den." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Det finns INGEN GARANTI, sÃ¥ lÃ¥ngt lagen tillÃ¥ter." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Copyright © 2012 Free Software Foundation, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2038,129 +2167,117 @@ msgstr "%s: %s:%d: det gÃ¥r inte att allokera %lu byte (%lu byte allokerade)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: det gÃ¥r inte att allokera %lu byte" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [namn[=värde] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] namn [namn ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -"bind [-lpvsPVSX] [-m tangentkarta] [-f filenamn] [-q namn] [-u namn] [-r " +"bind [-lpvsPVSX] [-m tangentkarta] [-f filnamn] [-q namn] [-u namn] [-r " "tangentsekv] [-x tangentsekv:skalkommando] [tangentsekv:readline-funktion " "eller readline-kommando]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [skalinbyggd [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [uttr]" -#: builtins.c:64 -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|[-P [-e]] [-@] [kat]" - #: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [kat]" + +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] kommando [arg ...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [namn[=värde] …]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] namn[=värde] ..." - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] namn[=värde] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [flagga] namn[=värde] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 -msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "enable [-a] [-dnps] [-f filenamn] [namn ...]" - #: builtins.c:92 +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f filnamn] [namn ...]" + +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts flgsträng namn [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a namn] [kommando [argument ...]] [omdirigering ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e rnamn] [-lnr] [första] [sista] eller fc -s [mnst=ers] [kommando]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [jobbspec]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [jobbspec ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p sökväg] [-dt] [namn ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [mönster ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2168,15 +2285,16 @@ msgstr "" "history [-c] [-d avstÃ¥nd] [n] eller history -anrw [filnamn] eller history -" "ps arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [jobbspec ...] eller jobs -x kommando [arg]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [jobbspec ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2184,11 +2302,11 @@ msgstr "" "kill [-s sigspec | -n signum | -sigspec] pid | jobbspec ... eller kill -l " "[sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2196,99 +2314,95 @@ msgstr "" "read [-ers] [-a vektor] [-d avgr] [-i text] [-n ntkn] [-N ntkn] [-p prompt] " "[-t tidgräns] [-u fb] [namn ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o flaggnamn] [--] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [namn …]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [namn[=värde] ...] eller export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [namn[=värde] ...] eller readonly -p" -#: builtins.c:148 -msgid "shift [n]" -msgstr "skift [n]" - #: builtins.c:150 +msgid "shift [n]" +msgstr "shift [n]" + +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source filnamn [argument]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". filnamn [argument]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [uttr]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] signalspec ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] namn [namn ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [gräns]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [gräns]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [rättigheter]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [id …]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [pid …]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for NAMN [in ORD ... ] ; do KOMMANDON; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( utr1; utr2; utr3 )); do KOMMANDON; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NAMN [in ORD ... ;] do KOMMANDON; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] rör" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case ORD in [MÖNSTER [| MÖNSTER]...) KOMMANDON ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2296,63 +2410,63 @@ msgstr "" "if KOMMANDON; then KOMMANDON; [ elif KOMMANDON; then KOMMANDON; ]... [ else " "KOMMANDON; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while KOMMANDON; do KOMMANDON; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until KOMMANDON; do KOMMANDON; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [NAMN] kommando [omdirigeringar]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function namn { KOMMANDON ; } or namn () { KOMMANDON ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ KOMMANDON ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "jobbspec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( uttryck ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ uttryck ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variabler - Namn och betydelse av nÃ¥gra skalvariabler" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | kat]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [flgnamn ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [argument]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2362,36 +2476,36 @@ msgstr "" "W ordlista] [-F funktion] [-C kommando] [-X filtermnst] [-P prefix] [-S " "suffix] [namn ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o flagga] [-A Ã¥tgärd] [-G globmnst] [-W " "ordlista] [-F funktion] [-C kommando] [-X filtermnst] [-P prefix] [-S " "suffix] [ord]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o flagga] [-DE] [namn ...]" -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" -"mapfile [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C Ã¥teranrop] [-c " -"kvanta] [vektor]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d avgränsare] [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C " +"Ã¥teranrop] [-c kvanta] [vektor]" + +#: builtins.c:244 +msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" "readarray [-n antal] [-O start] [-s antal] [-t] [-u fb] [-C Ã¥teranrop] [-c " "kvanta] [vektor]" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2403,7 +2517,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2412,38 +2526,38 @@ msgid "" msgstr "" "Definiera eller visa alias.\n" " \n" -" Utan argumen skriver \"alias\" listan pÃ¥ alias pÃ¥ den Ã¥teranvändbara " +" Utan argument skriver â€alias†listan pÃ¥ alias pÃ¥ den Ã¥teranvändbara " "formen\n" -" \"alias NAMN=VÄRDE\" pÃ¥ standard ut.\n" +" â€alias NAMN=VÄRDE†pÃ¥ standard ut.\n" " \n" " Annars är ett alias definierat för varje NAMN vars VÄRDE är angivet.\n" -" Ett avlutande blanktecken i VÄRDE gör att nästa ord undersöks för\n" +" Ett avslutande blanktecken i VÄRDE gör att nästa ord undersöks för\n" " aliassubstitution när aliaset expanderas.\n" " \n" " Flaggor:\n" -" -p\tSkriv alla definerade alias i pÃ¥ en Ã¥teranvändbar form\n" +" -p\tskriv alla definierade alias pÃ¥ en Ã¥teranvändbar form\n" " \n" " Slutstatus:\n" " alias returnerar sant om inte ett NAMN ges för vilket inget alias har\n" " definierats." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Ta bort alla NAMN frÃ¥n listan med definierade alias.\n" " \n" " Flaggor:\n" -" -a\tta bort alla aliasdefinitioner.\n" +" -a\tta bort alla aliasdefinitioner\n" " \n" " Returnerar framgÃ¥ng om inte ett NAMN inte är ett existerande alias." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2477,7 +2591,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2499,20 +2614,21 @@ msgstr "" "move,\n" " vi-command och vi-insert.\n" " -l Lista namnen pÃ¥ funktioner.\n" -" -P List funktionsnamn och bindningar.\n" -" -p List funktioner och bindningar pÃ¥ ett sätt som kan\n" +" -P Lista funktionsnamn och bindningar.\n" +" -p Lista funktioner och bindningar pÃ¥ ett sätt som " +"kan\n" " Ã¥teranvändas som indata.\n" " -S Lista tangentsekvenser som anropar makron och " "deras\n" " värden.\n" -" -s Lista tangentskevenser som anropar makron och " +" -s Lista tangentsekvenser som anropar makron och " "deras\n" " värden pÃ¥ ett sätt som kan Ã¥teranvändas som " "indata.\n" " -V Lista variabelnamn och värden\n" " -v Lista variabelnamn och värden pÃ¥ ett sätt som kan\n" " Ã¥teranvändas som indata.\n" -" -q funktionsnamn FrÃ¥ga efter vilka tangenter som anroper den " +" -q funktionsnamn FrÃ¥ga efter vilka tangenter som anropar den " "namngivna\n" " funktionen\n" " -u funktionsnamn Tag bort alla tangenter som är bundna till den\n" @@ -2521,14 +2637,15 @@ msgstr "" " -f filnamn Läs tangentbindningar frÃ¥n FILNAMN.\n" " -x tangentsekv:skalkommando Gör sÃ¥ att SKALKOMMANDO körs när\n" " \t\t\t\t TANGENTSEKV skrivs.\n" -" -X\t\t Lista tangentsekvenser bundna med -x och tillhörande\n" +" -X Lista tangentsekvenser bundna med -x och " +"tillhörande\n" " kommandon pÃ¥ ett format som kan Ã¥teranvändas som\n" " indata.\n" " \n" " Slutstatus:\n" " bind returnerar 0 om inte en okänd flagga ges eller ett fel inträffar." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2546,7 +2663,7 @@ msgstr "" " Slutstatus:\n" " Returvärdet är 0 förutsatt att N är större eller lika med 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2565,7 +2682,7 @@ msgstr "" " Slutstatus:\n" " Slutstatus är 0 förutsatt att N är större eller lika med 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2587,11 +2704,11 @@ msgstr "" " skalfunktionen.\n" " \n" " Slutstatus:\n" -" Returnerar slutstatus frÃ¥n SKALINBYGGD, eller falkst om SKALINBYGGD " +" Returnerar slutstatus frÃ¥n SKALINBYGGD, eller falskt om SKALINBYGGD " "inte\n" " är inbyggd i skalet." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2608,8 +2725,8 @@ msgid "" msgstr "" "Returnera kontexten för det aktuella funktionsanropet.\n" " \n" -" Utan UTTR, returneras \"$rad $filnamn\". Med UTTR, returneras\n" -" \"$rad $subrutin $filnamn\". Denna extra information kan användas för\n" +" Utan UTTR, returneras â€$rad $filnamnâ€. Med UTTR, returneras\n" +" â€$rad $subrutin $filnamnâ€. Denna extra information kan användas för\n" " att ge en stackspÃ¥rning.\n" " \n" " Värdet pÃ¥ UTTR indikerar hur mÃ¥nga anropsramar att gÃ¥ tillbaka före den\n" @@ -2619,7 +2736,7 @@ msgstr "" " Returnerar 0 om inte skalet inte kör en skalfunktion eller UTTR är\n" " ogiltigt." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2642,16 +2759,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2689,7 +2806,7 @@ msgstr "" "attribut\n" " som en katalog som innehÃ¥ller filattributen\n" " \n" -" Standardvärde är att följa symboliska längar, som om â€-L†vore angivet.\n" +" Standardvärde är att följa symboliska länkar, som om â€-L†vore angivet.\n" " â€..†behandlas genom att ta bort den omedelbart föregÃ¥ende\n" " sökvägskomponenten tillbaka till ett snedstreck eller början av KAT\n" " \n" @@ -2697,13 +2814,13 @@ msgstr "" " Returnerar 0 om katalogen är ändrad, och om $PWD satts korrekt om -P\n" " angetts; skilt frÃ¥n noll annars." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2716,17 +2833,17 @@ msgstr "" " \n" " Flaggor:\n" " -L\tskriv värdet pÃ¥ $PWD om det är namnet pÃ¥ den aktuella\n" -" \tarbetskatalogen\n" +" \t\tarbetskatalogen\n" " -P\tskriv den fysiska katalogen, utan nÃ¥gra symboliska länkar\n" " \n" -" Som standard beter sig \"pwd\" som om \"-L\" vore angivet.\n" +" Som standard beter sig â€pwd†som om â€-L†vore angivet.\n" " \n" " Slutstatus:\n" " Returnerar 0 om inte en ogiltig flagga anges eller den aktuella " "katalogen\n" " inte kan läsas." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2742,7 +2859,7 @@ msgstr "" " Slutstatus:\n" " Lyckas alltid." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2754,7 +2871,7 @@ msgstr "" " Slutstatus:\n" " Lyckas alltid." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2766,7 +2883,7 @@ msgstr "" " Slutstatus:\n" " Misslyckas alltid." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2776,10 +2893,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2791,17 +2908,17 @@ msgstr "" " anropa kommandon pÃ¥ disk när det finns en funktion med samma namn.\n" " \n" " Flaggor:\n" -" -p\tanvänd ett standardvärde pÃ¥ PATH som är garanterat att hitta\n" -" \talla standardverktygen\n" -" -v\tskriv en beskrivning av KOMMANDO liknande den inbyggda \"type\"\n" -" -V\tskriv en mer utförlig beskrivning om varje KOMMANDO\n" +" -p använd ett standardvärde pÃ¥ PATH som är garanterat att hitta\n" +" \t alla standardverktygen\n" +" -v skriv en beskrivning av KOMMANDO liknande den inbyggda â€typeâ€\n" +" -V skriv en mer utförlig beskrivning om varje KOMMANDO\n" " \n" " Slutstatus:\n" " Returnerar slutstatus frÃ¥n KOMMANDO, eller misslyckande om KOMMANDO " "inte\n" " finns." -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2811,9 +2928,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2848,46 +2965,47 @@ msgstr "" " Flaggor:\n" " -f\tbegränsa Ã¥tgärden till att visa funktionsnamn och -definitioner\n" " -F\tbegränsa visandet till endast funktionsnamn (plus radnummer\n" -" \toch källkodsfil vid felsökning)\n" +" \t\toch källkodsfil vid felsökning)\n" " -g\tskapa globala variabler när använt i en skalfunktion, ignoreras\n" -" \ti övrigt\n" +" \t\ti övrigt\n" " -p\tvisa attributen och värden pÃ¥ varje NAMN\n" " \n" " Flaggor som sätter attribut:\n" " -a\tför att göra NAMN till indexerade vektorer (om det stöds)\n" " -A\tför att göra NAMN till associativa vektorer (om det stöds)\n" -" -i\tför att ge NAMN attributet \"heltal\"\n" +" -i\tför att ge NAMN attributet â€heltalâ€\n" " -l\tför att konvertera NAMN till gemena vid tilldelning\n" -" -n\tgör NAMN till en referens till variablen som namnges som värde\n" +" -n\tgör NAMN till en referens till variabeln som namnges som värde\n" " -r\tför att göra NAMN endast läsbart\n" -" -t\tför att ge NAMN attributet \"spÃ¥ra\"\n" +" -t\tför att ge NAMN attributet â€spÃ¥raâ€\n" " -u\tför att konvertera NAMN till versaler vid tilldelning\n" " -x\tför att exportera NAMN\n" " \n" -" Användning av \"+\" istället för \"-\" slÃ¥r av det angivna attributet.\n" +" Användning av â€+†istället för â€-†slÃ¥r av det angivna attributet.\n" " \n" -" För variabler med attributet heltal utförs atitmetisk beräkning (se\n" -" kommandot \"let\") när variabeln tilldelas ett värde.\n" +" För variabler med attributet heltal utförs aritmetisk beräkning (se\n" +" kommandot â€letâ€) när variabeln tilldelas ett värde.\n" " \n" -" Vid användning i en funktion gör \"declare\" NAMN lokala, som med " +" Vid användning i en funktion gör â€declare†NAMN lokala, som med " "kommandot\n" -" \"local\". Flaggan \"-g\" Ã¥sidosätter detta beteende.\n" +" â€localâ€. Flaggan â€-g†åsidosätter detta beteende.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel vid\n" " variabeltilldelning inträffar." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Sätt variabelvärden och -attribut.\n" " \n" -" FörÃ¥ldrat. Se \"help declare\"." +" FörÃ¥ldrat. Se â€help declareâ€." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2912,9 +3030,9 @@ msgstr "" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges, ett fel vid\n" -" variabeltilldelning inträffar eller skalet inte exekverar en funktion." +" variabeltilldelning inträffar eller skalet inte exekverar en funktion." -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2940,9 +3058,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -2970,14 +3088,14 @@ msgstr "" " \\v\tvertikal tabulator\n" " \\\\\tbakstreck\n" " \\0nnn\ttecknet vars ASCII-kod är NNN (oktalt). NNN kan vara\n" -" \t0 till 3 oktala siffror\n" +" \t\t0 till 3 oktala siffror\n" " \\xHH\tdet Ã¥ttabitarstecken vars värde är HH (hexadecimalt). HH\n" -" \tkan vara en eller tvÃ¥ hexadecimala siffror\n" +" \t\tkan vara en eller tvÃ¥ hexadecimala siffror\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte ett skrivfel inträffar." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2999,7 +3117,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte ett skrivfel inträffar." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3036,24 +3154,24 @@ msgstr "" " \taktiverade eller ej\n" " -n\tavaktivera varje NAMN eller visa en lista av avaktiverade\n" " \tkommandon\n" -" -p\tskriv listan av inbyggda kommandon pÃ¥ en Ã¥teranvändningsbar\n" +" -p\tskriv listan av inbyggda kommandon pÃ¥ en Ã¥teranvändbar\n" " \tform\n" -" -s\tskriv endast namnen pÃ¥ Posix \"special\"-inbyggda\n" +" -s\tskriv endast namnen pÃ¥ Posix â€specialâ€-inbyggda\n" " \n" " Flaggor som styr dynamisk inläsning:\n" -" -f\tLäs int inbyggt NAMN frÃ¥n en delad objektfil FILNAMN\n" +" -f\tLäs in inbyggt NAMN frÃ¥n en delad objektfil FILNAMN\n" " -d\tTa bort en inbyggd inläst med -f\n" " \n" " Utan flaggor aktiveras varje NAMN.\n" " \n" -" För att använda den \"test\" som finns i sökvägen istället för den i\n" -" skalet inbyggda versionen, skriv \"enable -n test\".\n" +" För att använda den â€test†som finns i sökvägen istället för den i\n" +" skalet inbyggda versionen, skriv â€enable -n testâ€.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte NAMN inte är inbyggd i skalet eller ett fel\n" " inträffar." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3073,7 +3191,7 @@ msgstr "" " Slutstatus:\n" " Returnerar slutstatus av kommandot eller framgÃ¥ng om kommandot är tomt." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3125,7 +3243,7 @@ msgstr "" " Varje gÃ¥ng det anropas kommer getopts placera nästa flagga i skal-\n" " variabeln $namn, initiera namnet om det inte redan finns, och\n" " index pÃ¥ nästa argument läggas i skalvariabeln OPTIND. OPTIND\n" -" initieras till 1 varje gÃ¥ng skalet eller ett skalskrpt startas. När\n" +" initieras till 1 varje gÃ¥ng skalet eller ett skalskript startas. När\n" " en flagga behöver ett argument placerar getopts det argumentet i\n" " skalvariabeln OPTARG.\n" " \n" @@ -3133,10 +3251,10 @@ msgstr "" " i OPTSTRING är ett kolon använder getopts tyst felrapportering. I\n" " detta läge skrivs inget felmeddelande ut. Om en ogiltig flagga ses\n" " placerar getopts det funna flaggtecknet i OPTARG. Om ett nödvändigt\n" -" argument inte finns placerar getopts ett \":\" i NAMN och sätter OPTARG\n" +" argument inte finns placerar getopts ett â€:†i NAMN och sätter OPTARG\n" " till det funna flaggtecknet. Om getopts inte är i tyst läge och en\n" -" felaktig flagga upptäcks placerar getopts \"?\" i NAMN och tar bort\n" -" OPTARG. Om ett nödvändigt argument inte hittas placeras ett \"?\" i\n" +" felaktig flagga upptäcks placerar getopts â€?†i NAMN och tar bort\n" +" OPTARG. Om ett nödvändigt argument inte hittas placeras ett â€?†i\n" " NAMN, OPTARG tas bort och ett felmeddelande skrivs.\n" " \n" " Om skalvariabeln OPTERR har värdet 0 avaktiverar getopts utskriften\n" @@ -3150,7 +3268,7 @@ msgstr "" " Returnerar framgÃ¥ng om en flagga hittas, misslyckas om slutet av\n" " flaggorna nÃ¥s eller ett fel inträffar." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3161,8 +3279,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3185,13 +3303,13 @@ msgstr "" " -l\tplacera ett streck i det nollte argumentet till KOMMANDO\n" " \n" " Om kommandot inte kan exekveras avslutar ett ickeinteraktivt skal, om\n" -" inte skalflaggan \"execfail\" är satt.\n" +" inte skalflaggan â€execfail†är satt.\n" " \n" -" Sluttatus:\n" +" Slutstatus:\n" " Returnerar framgÃ¥ng om inte KOMMANDO inte finns eller ett fel vid\n" " omdirigering inträffar." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3203,7 +3321,7 @@ msgstr "" " Avslutar skalet med statusen N. Om N utelämnas är slutstatusen den\n" " hos det sist körda kommandot." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3216,7 +3334,7 @@ msgstr "" " Avslutar ett inloggningsskal med slutstatus N. Returnerar ett fel om\n" " det inte körs i ett inloggningsskal." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3259,20 +3377,19 @@ msgstr "" " -n\tutelämna radnummer vid listningen\n" " -r\treversera ordningen pÃ¥ raderna (nyaste listas först)\n" " \n" -" Med formatet \"fc -s [mnst=ers ...] [kommando]\" körs KOMMANDO om efter\n" +" Med formatet â€fc -s [mnst=ers ...] [kommando]†körs KOMMANDO om efter\n" " att substitutionen GAMMALT=NYTT har utförts.\n" " \n" " Ett användbart alias att använda med detta är r=\"fc -s\", sÃ¥ att " "skriva\n" -" \"r cc\" kör senaste kommandot som börjar med \"cc\" och att skriva \"r" -"\" kör\n" +" â€r cc†kör senaste kommandot som börjar med â€cc†och att skriva â€r†kör\n" " om senaste kommandot.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng eller status pÃ¥ exekverat kommando, skilt frÃ¥n noll\n" " om ett fel inträffar." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3293,7 +3410,7 @@ msgstr "" " Status pÃ¥ kommandot som placerades i förgrunden, eller misslyckande om\n" " ett fel inträffar." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3308,10 +3425,9 @@ msgid "" msgstr "" "Flytta jobb till bakgrunden.\n" " \n" -" Placera jobben som idintifieras av varje JOBBSPEC i bakgrunden som om " +" Placera jobben som identifieras av varje JOBBSPEC i bakgrunden som om " "de\n" -" hade startats med \"&\". Om ingen JOBBSPEC finns används skalets " -"begrepp\n" +" hade startats med â€&â€. Om ingen JOBBSPEC finns används skalets begrepp\n" " om det aktuella jobbet.\n" " \n" " Slutstatus:\n" @@ -3319,7 +3435,7 @@ msgstr "" "fel\n" " inträffar." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3328,15 +3444,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3349,20 +3465,20 @@ msgstr "" "minnet.\n" " \n" " Flaggor:\n" -" -d\t\tglöm platsen i minnet för varje NAMN\n" -" -l\t\tvisa i ett format som kan Ã¥teranvändas som indata\n" -" -p sökväg \tanvänd SÖKVÄG som den fullständiga sökvägen till NAMN\n" -" -r\t\tglömm alla platser i minnet\n" -" -t\t\tskriv platsen i minnet för varje NAMN, med NAMN före\n" +" -d\tglöm platsen i minnet för varje NAMN\n" +" -l\tvisa i ett format som kan Ã¥teranvändas som indata\n" +" -p sökväg använd SÖKVÄG som den fullständiga sökvägen till NAMN\n" +" -r\tglöm alla platser i minnet\n" +" -t\tskriv platsen i minnet för varje NAMN, med NAMN före\n" " \t\tvarje motsvarande plats om flera NAMN ges\n" " Argument:\n" -" NAMN\t\tVarje NAMN söks efter i $PATH och läggs till i listan\n" +" NAMN\tVarje NAMN söks efter i $PATH och läggs till i listan\n" " \t\tav kommandon i minnet.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte NAMN inte hittas eller en ogiltig flagga ges." -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3374,7 +3490,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3394,7 +3510,7 @@ msgstr "" " -d\tvisa en kort beskrivning för varje ämne\n" " -m\tvisa användning i lÃ¥tsas-mansideformat\n" " -s\tvisa endast ett kort användningsformat för varje ämne som\n" -" \tmatchar MÖNSTER\n" +" \t\tmatchar MÖNSTER\n" " \n" " Argument:\n" " MÖNSTER\tMönster som anger hjälpämnen\n" @@ -3403,7 +3519,8 @@ msgstr "" " Returnerar framgÃ¥ng om inte MÖNSTER inte finns eller en ogiltig flagga " "ges." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3412,23 +3529,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3439,7 +3556,7 @@ msgstr "" "Visa eller hantera historielistan.\n" " \n" " Visa historielistan med radnummer, inled varje modifierad post med en\n" -" \"*\". Ett argument N listar endast de N senaste posterna.\n" +" â€*â€. Ett argument N listar endast de N senaste posterna.\n" " \n" " Flaggor:\n" " -c\tnollställ historielistan genom att ta bort alla poster\n" @@ -3448,19 +3565,17 @@ msgstr "" " -a\tlägg till historierader frÃ¥n denna session till historiefilen\n" " -n\tläs alla historierader som inte redan lästs frÃ¥n historiefilen\n" " -r\tläs historiefilen och lägg till innehÃ¥llet till historielistan\n" -" -w\tskriv den aktuella historien till hstoriefilen och lägg till\n" -" \tdem till historielistan\n" +" -w\tskriv den aktuella historien till historiefilen och lägg till\n" +" \t\tdem till historielistan\n" " \n" " -p\tutför historieexpansion pÃ¥ varje ARG och visa resultatet utan\n" -" \tatt lagra det i historielistan\n" +" \t\tatt lagra det i historielistan\n" " -s\tlägg till ARG till historielistan som en ensam post\n" " \n" -" Om FILENAMN anges används det som historiefil. Annars, om $HISTFILE " -"har\n" +" Om FILNAMN anges används det som historiefil. Annars, om HISTFILE har\n" " ett värde används det, annars ~/.bash_history.\n" " \n" -" Om variabeln $HISTTIMEFORMAT är satt och inte tom används dess värde " -"som\n" +" Om variabeln HISTTIMEFORMAT är satt och inte tom används dess värde som\n" " en formatsträng till strftime(3) för att skriva tidsstämplar " "tillhörande\n" " varje visad historiepost. Inga tidsstämplar skrivs annars.\n" @@ -3469,8 +3584,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3480,7 +3594,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3501,7 +3615,7 @@ msgstr "" " Flaggor:\n" " -l\tlistar process-id:n utöver den normala informationen\n" " -n\tlistar endast processer som har ändrat status sedan senaste\n" -" \tnotifiering\n" +" notifiering\n" " -p\tlistar endast process-id:n\n" " -r\tbegränsar utdata till körande jobb\n" " -s\tbegränsar utdata till stoppade jobb\n" @@ -3514,7 +3628,7 @@ msgstr "" "inträffar.\n" " Om -x används returneras slutstatus frÃ¥n KOMMANDO." -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3524,7 +3638,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3538,13 +3652,14 @@ msgstr "" " Flaggor:\n" " -a\tta bort alla jobb om JOBBSPEC inte anges\n" " -h\tmärk varje JOBBSPEC sÃ¥ att SIGHUP inte skickas till jobbet om\n" -" \tskalet tar emot en SIGHUP\n" +" \t\tskalet tar emot en SIGHUP\n" " -r\ttar bara bort körande jobb\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga eller JOBBSPEC ges." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3556,7 +3671,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3575,8 +3691,8 @@ msgstr "" " Flaggor:\n" " -s sig\tSIG är ett signalnamn\n" " -n sig\tSIG är ett signalnummer\n" -" -l\tlista signalnamnen. Om argument följer \"-l\" antas de vara\n" -" \tsignalnummer som namn skall listas för\n" +" -l\tlista signalnamnen. Om argument följer â€-l†antas de vara\n" +" \t\tsignalnummer som namn skall listas för\n" " \n" " Kill är inbyggt i skalet av tvÃ¥ skäl: det tillÃ¥ter att jobb-id:n " "används\n" @@ -3588,7 +3704,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga angivits eller ett fel\n" " inträffar." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3646,7 +3762,7 @@ msgstr "" " \t++id, --id\tpreinkrementering av variabel, predekrementering\n" " \t-, +\t\tunärt minus, plus\n" " \t!, ~\t\tlogisk och bitvis negering\n" -" \t**\t\texponentiatiering\n" +" \t**\t\texponentiering\n" " \t*, /, %\t\tmultiplikation, division, rest\n" " \t+, -\t\taddition, subtraktion\n" " \t<<, >>\t\tvänster och höger bitvisa skift\n" @@ -3657,7 +3773,7 @@ msgstr "" " \t|\t\tbitvis ELLER\n" " \t&&\t\tlogiskt OCH\n" " \t||\t\tlogiskt ELLER\n" -" \tuttf ? uttr : uttr\n" +" \tuttr ? uttr : uttr\n" " \t\t\tvillkorlig operator\n" " \t=, *=, /=, %=,\n" " \t+=, -=, <<=, >>=,\n" @@ -3668,7 +3784,7 @@ msgstr "" " uttryck. Variablerna behöver inte ha sina heltalsattribut pÃ¥slagna för\n" " att användas i ett uttryck.\n" " \n" -" Operatorer beräknas i precedensordning. Delutryck i parenteser " +" Operatorer beräknas i precedensordning. Deluttryck i parenteser " "beräknas\n" " först och kan Ã¥sidosätta precedensreglerna ovan.\n" " \n" @@ -3676,7 +3792,7 @@ msgstr "" " Om det sista ARG beräknas till 0, returnerar let 1; let returnerar 0 " "annars." -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3697,27 +3813,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3739,13 +3856,12 @@ msgstr "" " Om inga NAMN anges, lagras den inlästa raden i variabeln REPLY.\n" " \n" " Flaggor:\n" -" -a vektor\ttilldela de inlästa orden till sekvensiella index i " +" -a vektor\ttilldela de inlästa orden till sekventiella index i " "vektor-\n" " \t\tvariabeln VEKTOR, med start frÃ¥n noll\n" " -d avgr\tfortsätt tills det första tecknet i AVGR lästs, istället för\n" " \t\tnyrad\n" -" -e\t\tanvänd Readline för att fÃ¥ in raden i ett interaktivt\n" -" \t\t\tskal\n" +" -e\tanvänd Readline för att fÃ¥ in raden i ett interaktivt skal\n" " -i text\tAnvänd TEXT som starttext för Readline\n" " -n ntkn\treturnera efter att ha läst NTKN tecken istället för att\n" " \t\tvänta pÃ¥ en nyrad, men ta hänsyn till en avgränsare om färre\n" @@ -3756,8 +3872,8 @@ msgstr "" " \t\talla avgränsare\n" " -p prompt\tskriv ut strängen PROMPT utan en avslutande nyrad före\n" " \t\tförsök att läsa\n" -" -r\t\ttillÃ¥t inte bakstreck att skydda nÃ¥gra tecken\n" -" -s\t\teka inte indata som kommer frÃ¥n terminalen\n" +" -r\ttillÃ¥t inte bakstreck att skydda nÃ¥gra tecken\n" +" -s\teka inte indata som kommer frÃ¥n terminalen\n" " -t tidgräns\tsluta vänta och returnera misslyckande om inte en\n" " \t\tkomplett rad lästs inom TIDSGRÄNS sekunder. Värdet pÃ¥ variabeln\n" " \t\tTMOUT är standardvärdet pÃ¥ tidsgränsen. TIDSGRÄNS kan vara ett\n" @@ -3766,7 +3882,7 @@ msgstr "" "bara\n" "\t\tom det finns indata tillgängligt pÃ¥ den angivna filbeskrivaren.\n" " Slutstatus är större än 128 om tidsgränsen överskrids\n" -" -u fb\t\tläs frÃ¥n filbeskrivare FB istället för standard in\n" +" -u fb\tläs frÃ¥n filbeskrivare FB istället för standard in\n" " \n" " Slutstatus:\n" " Returkoden är noll om inte filslut nÃ¥s, läsningens tidsgräns överskrids\n" @@ -3774,7 +3890,7 @@ msgstr "" "eller\n" " en ogiltig filbeskrivare ges som argument till -u." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3795,7 +3911,8 @@ msgstr "" " Returnerar N, eller misslyckande om skalet inte kör en funktion eller\n" " skript." -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3863,7 +3980,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3886,7 +4004,7 @@ msgstr "" " \n" " Flaggor:\n" " -a Markera variabler om ändras eller skapas för export.\n" -" -b Rapportera om avlutade jobb omedelbart.\n" +" -b Rapportera om avslutade jobb omedelbart.\n" " -e Avsluta omedelbart om ett kommando avslutar med nollskild status.\n" " -f Avaktivera filnamnsgenerering (globbing).\n" " -h Kom ihÃ¥g platsen för kommandon när de slÃ¥s upp.\n" @@ -3923,7 +4041,7 @@ msgstr "" " physical samma som -P\n" " pipefail returvärdet av ett rör är status pÃ¥ det sista\n" " kommandot som avslutas med en status skild frÃ¥n\n" -" noll, eller nol om inget kommando avslutas med\n" +" noll, eller noll om inget kommando avslutas med\n" " en status skild frÃ¥n noll\n" " posix ändra beteendet pÃ¥ bash där standardbeteendet\n" " skiljer sig frÃ¥n Posixstandarden till att stämma\n" @@ -3945,7 +4063,7 @@ msgstr "" " -C Om satt tillÃ¥ts inte existerande normala filer att skrivas över\n" " av omdirigering av utdata.\n" " -E Om satt ärvs ERR-fällan av skalfunktioner.\n" -" -H Aktivera historiesubstituion i !-stil. Denna flagga är pÃ¥ som\n" +" -H Aktivera historiesubstitution i !-stil. Denna flagga är pÃ¥ som\n" " standard när skalet är interaktivt.\n" " -P Om satt löses inte symboliska länkar upp när kommandon sÃ¥som cd\n" " körs som ändrar aktuell katalog.\n" @@ -3968,7 +4086,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3978,7 +4096,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3997,7 +4115,7 @@ msgstr "" " -f\tbehandla varje NAMN som en skalfunktion\n" " -v\tbehandla varje NAMN som en skalvariabel\n" " -n\tbehandla varje NAMN som en namnreferens tar bort värdet pÃ¥\n" -" \tvariabeln själv istället för variabeln den refererar\n" +" variabeln själv istället för variabeln den refererar\n" " \n" " Utan flaggor försöker unset först att ta bort en variabel, och, om det\n" " misslyckas, försöker den ta bort en funktion.\n" @@ -4008,7 +4126,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN endast är\n" " läsbart." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4036,12 +4154,12 @@ msgstr "" " -n\tta bort exportegenskapen frÃ¥n varje NAMN\n" " -p\tvisa en lista av alla exporterade variabler och funktioner\n" " \n" -" Ett argument \"--\" avslutar vidare flaggbearbetning.\n" +" Ett argument â€--†avslutar vidare flaggbearbetning.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN är ogiltigt." -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4053,9 +4171,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4070,17 +4187,17 @@ msgstr "" " \n" " Flaggor:\n" " -a\treferera till indexerade vektorvariabler\n" -" -A\trefererar till assoicativa vektorvariabler\n" -" -f\treferara till skalfunktioner\n" +" -A\trefererar till associativa vektorvariabler\n" +" -f\treferera till skalfunktioner\n" " -p\tvisa en lista över alla oföränderliga variabler eller funktioner,\n" -" beroende pÃ¥ huruvida flaggan -f ges\n" +" beroende pÃ¥ huruvida flaggan -f ges\n" " \n" -" Ett argument \"--\" avslutar vidare flaggbearbetning.\n" +" Ett argument â€--†avslutar vidare flaggbearbetning.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN är ogiltigt." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4099,7 +4216,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte N är negativt eller större än $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4123,7 +4240,7 @@ msgstr "" " Returnerar status pÃ¥ det sista kommandot som körs i FILNAMN, misslyckas\n" " om FILNAMN inte kan läsas." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4149,7 +4266,7 @@ msgstr "" "fel\n" " inträffar." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4213,9 +4330,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4249,7 +4366,7 @@ msgstr "" " -d FIL Sant om filen är en katalog.\n" " -e FIL Sant om filen finns.\n" " -f FIL Sant om filen finns, och är en normal fil.\n" -" -g FIL Sant om filen är sätt-gruppid.\n" +" -g FIL Sant om filen är sätt-grupp-id.\n" " -h FIL Sant om filen är en symbolisk länk.\n" " -L FIL Sant om filen är en symbolisk länk.\n" " -k FIL Sant om filen har â€fastbiten†satt.\n" @@ -4258,7 +4375,7 @@ msgstr "" " -s FIL Sant om filen finns och inte är tom.\n" " -S FIL Sant om filen är ett uttag (socket).\n" " -t FB Sant om FB är öppnad mot en terminal.\n" -" -u FIL Sant om filen är sätt-användarid.\n" +" -u FIL Sant om filen är sätt-användar-id.\n" " -w FIL Sant om filen är skrivbar av dig.\n" " -x FIL Sant om filen är exekverbar av dig.\n" " -O FIL Sant om filen ägs av din verksamma användare.\n" @@ -4309,7 +4426,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:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4318,11 +4435,10 @@ msgid "" msgstr "" "Beräkna villkorligt uttryck.\n" " \n" -" Detta är en synonym till det inbyggda \"test\", men det sista " -"argumentet\n" -" mÃ¥ste vara en bokstavlig \"]\", för att matcha den inledande \"[\"." +" Detta är en synonym till det inbyggda â€testâ€, men det sista argumentet\n" +" mÃ¥ste vara en bokstavlig â€]â€, för att matcha den inledande â€[â€." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4342,7 +4458,7 @@ msgstr "" " Slutstatus:\n" " Lyckas alltid." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4392,8 +4508,8 @@ msgstr "" " \n" " ARG är ett kommando som skall läsas och exekveras när skalet tar emot\n" " signalen SIGNALSPEC. Om ARG inte anges (och en ensam SIGNALSPEC ges)\n" -" eller \"-\" Ã¥terställs varje angiven signal till sitt orginalvärde. Om\n" -" ARG är den tomma strängen ingoreras varje SIGNALSPEC av skalet och av\n" +" eller â€-†återställs varje angiven signal till sitt originalvärde. Om\n" +" ARG är den tomma strängen ignoreras varje SIGNALSPEC av skalet och av\n" " kommandon det startar.\n" " \n" " Om en SIGNALSPEC är EXIT (0) exekveras ARG vid avslut frÃ¥n skalet. Om\n" @@ -4401,7 +4517,7 @@ msgstr "" " en SIGNALSPEC är RETURN exekveras ARG varje gÃ¥ng en skalfunktion eller\n" " ett skript kört med den inbyggda . eller source avslutar körningen. En\n" " SIGNALSPEC ERR betyder att köra ARG varje gÃ¥ng ett kommandos felstatus\n" -" skulle fÃ¥tt skalet att avsluta om flaggan -e ovre satt.\n" +" skulle fÃ¥tt skalet att avsluta om flaggan -e vore satt.\n" " \n" " Om inga argument ges skriver trap listan av kommandon som hör till " "varje\n" @@ -4413,14 +4529,14 @@ msgstr "" " \n" " Varje SIGNALSPEC är antingen ett signalnamn i eller ett\n" " signalnummer. Signalnamn är skiftlägesokänsliga och SIG-prefixet är\n" -" frivilligt. En signal kan skickas till skalet med \"kill -signal $$\".\n" +" frivilligt. En signal kan skickas till skalet med â€kill -signal $$â€.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en SIGSPEC är ogiltig eller en ogiltig " "flagga\n" " ges." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4429,18 +4545,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4455,29 +4571,27 @@ msgstr "" " kommandonamn.\n" " \n" " Flaggor:\n" -" -a\tvisa alla platser som innehÃ¥ller ett körbart program med\n" -" \tnamnet NAMN, inklusive alias, inbyggda och funktioner, om och endast\n" -" \tom flaggan \"-p\" inte ocksÃ¥ används\n" +" -a\tvisa alla platser som innehÃ¥ller ett körbart program med namnet\n" +" \t\tNAMN, inklusive alias, inbyggda och funktioner, om och endast\n" +" \t\tom flaggan â€-p†inte ocksÃ¥ används\n" " -f\tutelämna uppslagning av skalfunktioner\n" " -P\tframtvinga en PATH-sökning för varje NAMN, även om det är ett\n" -" \talias, inbyggt eller funktion, och returnera namnet pÃ¥ diskfilen som\n" -" \tskulle blivit exekverad\n" +" \t\talias, inbyggt eller funktion, och returnera namnet pÃ¥ diskfilen\n" +" \t\tsom skulle blivit exekverad\n" " -p\treturnerar antingen namnet pÃ¥ diskfilen som skulle exekverats,\n" -" \teller ingenting om \"type -t NAMN\" inte skulle returnerat \"file\".\n" -" -t\tskriv ut ett ensamt ord som är ett av \"alias\", \"keyword\",\n" -" \t\"function\", \"builtin\", \"file\" eller \"\", om NAMN är ett alias, " -"ett\n" -" \treserverat ord i skalet, en skalfunktion, inbyggt i skalet, en " -"diskfil\n" -" \trespektive inte finns\n" +" \t\teller ingenting om â€type -t NAMN†inte skulle returnerat â€fileâ€.\n" +" -t\tskriv ut ett ensamt ord som är ett av â€aliasâ€, â€keywordâ€,\n" +" \t\tâ€functionâ€, â€builtinâ€, â€file†eller â€â€, om NAMN är ett alias, ett\n" +" \t\treserverat ord i skalet, en skalfunktion, inbyggt i skalet, en\n" +" \t\tdiskfil respektive inte finns\n" " \n" " Argument:\n" -" NAMN\tKomandonamn som skall tolkas.\n" +" NAMN\tKommandonamn som skall tolkas.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om alla NAMNen finns, misslyckas om nÃ¥got inte finns." -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4495,6 +4609,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4506,7 +4621,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4535,29 +4651,31 @@ msgstr "" " -a\talla aktuella gränser rapporteras\n" " -b\tstorleken pÃ¥ uttagsbuffertar\n" " -c\tden maximala storleken pÃ¥ minnesutskrifter som skapas\n" -" -d\tden maximala storleken pÃ¥ en process datasegmen\n" +" -d\tden maximala storleken pÃ¥ en process datasegment\n" " -e\tden maximala schemaläggningsprioriteten (â€niceâ€)\n" " -f\tden maximala storleken pÃ¥ filer som skrivs av skalet och dess\n" " \tbarn\n" " -i\tdet maximala antalet väntande signaler\n" +" -k\tdet maximala antalet kqueue:r allokerade för denna process\n" " -l\tden maximala storleken en process kan lÃ¥sa i minnet\n" " -m\tden maximala residenta mängdstorleken\n" " -n\tdet maximala antalet öppna filbeskrivare\n" " -p\trörbuffertstorleken\n" " -q\tdet maximala antalet byte i POSIX-meddelandeköer\n" -" -r\tden maximala realtidsschemaläggningsprioriteten\n" +" -r\tden maximala prioriteten för realtidsschemaläggning\n" " -s\tden maximala stackstorleken\n" " -t\tden maximala mängden cpu-tid i sekunder\n" " -u\tdet maximala antalet användarprocesser\n" " -v\tstorleken pÃ¥ det virtuella minnet\n" " -x\tdet maximala antalet fillÃ¥s\n" +" -P det maximala antalet pseudoterminaler\n" " -T det maximala antalet trÃ¥dar\n" " \n" " Alla flaggor är inte tillgängliga pÃ¥ alla plattformar.\n" " \n" " Om GRÄNS anges är det ett nytt värde för den specificerade resursen; de\n" " speciella GRÄNS-värdena â€softâ€, â€hard†och â€unlimited†stÃ¥r för den\n" -" aktuella mjuka gränsen, den aktuella hÃ¥rda grÃ¥nsen respektive inge " +" aktuella mjuka gränsen, den aktuella hÃ¥rda gränsen respektive ingen " "gräns.\n" " Annars skrivs det aktuella värdet pÃ¥ den specificerade resursen. Om\n" " ingen flagga ges antas -f.\n" @@ -4570,7 +4688,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga anges eller ett fel " "inträffar." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4606,7 +4724,7 @@ msgstr "" "flagga\n" " ges." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4634,14 +4752,14 @@ msgstr "" "jobbspecifikation, \n" " vänta pÃ¥ alla processer i det jobbets rör.\n" " \n" -" Om flaggan -n ges väntar pÃ¥ nästa jobb att avsluta och retunera dess\n" +" Om flaggan -n ges väntar pÃ¥ nästa jobb att avsluta och returnera dess\n" " slutstatus.\n" " \n" " Slutstatus:\n" " Returnerar status pÃ¥ den sista ID, misslyckas ifall ID är ogiltig\n" " eller en ogiltig flagga ges." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4665,7 +4783,7 @@ msgstr "" " Returnerar status pÃ¥ den sista PID, misslyckas ifall PID är ogiltig\n" " eller en ogiltig flagga ges." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4679,16 +4797,15 @@ msgid "" msgstr "" "Exekvera kommandon för varje medlem i en lista.\n" " \n" -" \"for\"-slingan exekverar en sekvens av kommandon för varje medlem i en\n" -" lista av element. Om \"in ORD ...;\" inte är med antas 'in \"$@\"'. " -"För\n" +" â€forâ€-slingan exekverar en sekvens av kommandon för varje medlem i en\n" +" lista av element. Om â€in ORD ...;†inte är med antas 'in \"$@\"'. För\n" " varje element i ORD sätts NAMN till det elementet, och KOMMANDON\n" " exekveras.\n" " \n" " Slutstatus:\n" " Returnerar status för det sist exekverade kommandot." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4718,7 +4835,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4750,10 +4867,10 @@ msgstr "" " REPLY. KOMMANDON exekveras efter varje val tills ett\n" " break-kommando exekveras.\n" " \n" -" Sluttatus:\n" +" Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4777,12 +4894,12 @@ msgstr "" " Flaggor:\n" " -p\tskriv tidssammanfattningen i det portabla Posix-formatet\n" " \n" -" Värdet pÃ¥ variablen TIMEFORMAT används som utmatningsformat.\n" +" Värdet pÃ¥ variabeln TIMEFORMAT används som utmatningsformat.\n" " \n" " Slutstatus:\n" " Returstatusen är returstatusen frÃ¥n RÖR." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4795,12 +4912,12 @@ msgstr "" "Exekvera kommandon baserat pÃ¥ mönstermatchning.\n" " \n" " Välj att exekvera KOMMANDON baserat pÃ¥ om ORD matchar MÖNSTER. Ett\n" -" \"|\" används för att separera flera mönster.\n" +" â€|†används för att separera flera mönster.\n" " \n" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4820,23 +4937,22 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Exekvera kommndon baserat pÃ¥ ett villkor.\n" +"Exekvera kommandon baserat pÃ¥ ett villkor.\n" " \n" -" Listan \"if KOMMANDON\" exekveras. Om des slutstatus är noll sÃ¥ " +" Listan â€if KOMMANDON†exekveras. Om dess slutstatus är noll sÃ¥ " "exekveras\n" -" listan \"then COMMANDS\". Annars exekveras varje lista \"elif KOMMANDON" -"\"\n" +" listan â€then KOMMANDONâ€. Annars exekveras varje lista â€elif KOMMANDONâ€\n" " i tur och ordning, och om dess slutstatus är noll exekveras motsvarande\n" -" lista \"then COMMANDS\" och if-kommandot avslutar. Annars exekveras " +" lista â€then KOMMANDON†och if-kommandot avslutar. Annars exekveras " "listan\n" -" \"else COMMANDS\" om den finns. Slutstatus av hela konstruktionen är\n" +" â€else KOMMANDON†om den finns. Slutstatus av hela konstruktionen är\n" " slutstatusen pÃ¥ det sist exekverade kommandot, eller noll om inget\n" " villkor returnerade sant.\n" " \n" " Slutstatus:\n" " Returnerar status frÃ¥n det sist exekverade kommandot." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4848,13 +4964,13 @@ msgid "" msgstr "" "Exekvera kommandon sÃ¥ länge ett test lyckas.\n" " \n" -" Expandera och exekvera KOMMANDON sÃ¥ länge det sista kommandont i\n" -" \"while\"-KOMMANDONa har en sluttstatus pÃ¥ noll.\n" +" Expandera och exekvera KOMMANDON sÃ¥ länge det sista kommandot i\n" +" â€whileâ€-KOMMANDONa har en slutstatus pÃ¥ noll.\n" " \n" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4867,12 +4983,13 @@ msgstr "" "Exekvera kommandon sÃ¥ länge ett test inte lyckas.\n" " \n" " Expandera och exekvera KOMMANDON sÃ¥ länge det sista kommandot i\n" -" \"until\"-KOMMANDONa har en slutstatus som inte är noll.\n" +" â€untilâ€-KOMMANDONa har en slutstatus som inte är noll.\n" " \n" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4882,19 +4999,19 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -"Skapa en koprocess med namnet NAMN.\n" +"Skapa en ko-process med namnet NAMN.\n" " \n" " Kör KOMMANDO asynkront, med standard ut och standard in för kommandot\n" -" ansluta via ett rör till fildeskriptorer tilldelade indexen 0 och 1 i\n" +" ansluta via ett rör till filbeskrivare tilldelade indexen 0 och 1 i\n" " en vektorvariabel NAMN i skalet som kör. Standardvärde pÃ¥ NAMN är\n" -" \"COPROC\".\n" +" â€COPROCâ€.\n" " \n" " Slutstatus:\n" " Returnerar statusen frÃ¥n KOMMANDO." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4917,7 +5034,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte NAMN endast är läsbart." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4929,13 +5046,13 @@ msgid "" msgstr "" "Gruppera kommandon som en enhet.\n" " \n" -" Kör ett antal kommandon i en grupp. Detta är ett sätt at omdirigera\n" +" Kör ett antal kommandon i en grupp. Detta är ett sätt att omdirigera\n" " en hel mängd kommandon.\n" " \n" " Slutstatus:\n" -" Returnerar stutusen frÃ¥n det sist exekverade kommandot." +" Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4950,16 +5067,16 @@ msgid "" msgstr "" "Ã…teruppta jobb i förgrunden.\n" " \n" -" Likvärdigt med JOBBSPEC-argumentet till kommandot \"fg\". Ã…teruppta\n" +" Likvärdigt med JOBBSPEC-argumentet till kommandot â€fgâ€. Ã…teruppta\n" " ett stoppat eller bakgrundsjobb. JOBBSPEC kan ange antingen ett\n" -" jobbnamn eller ett jobbnummer. Om JOBBSPEC följs av ett \"&\" placeras\n" +" jobbnamn eller ett jobbnummer. Om JOBBSPEC följs av ett â€&†placeras\n" " jobbet i bakgrunden, som om jobbspecifikationen hade givits som ett\n" -" argument till \"bg\".\n" +" argument till â€bgâ€.\n" " \n" " Slutstatus:\n" " Returnerar statusen pÃ¥ det Ã¥terupptagna jobbet." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4972,12 +5089,12 @@ msgstr "" "Beräkna aritmetiskt uttryck.\n" " \n" " UTTRYCKet beräknas enligt reglerna för aritmetisk beräkning.\n" -" Likvärdigt med \"let UTTRYCK\".\n" +" Likvärdigt med â€let UTTRYCKâ€.\n" " \n" " Slutstatus:\n" " Returnerar 1 om UTTRYCK beräknas till 0, returnerar 0 annars." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5009,7 +5126,7 @@ msgstr "" " Returnerar en status av 0 eller 1 beroende pÃ¥ evalueringen av det\n" " villkorliga uttrycket UTTRYCK. Uttryck är sammansatta av samma " "primitiver\n" -" som används av det inbyggda \"test\", och kan kombineras med följande\n" +" som används av det inbyggda â€testâ€, och kan kombineras med följande\n" " operatorer:\n" " \n" " ( UTTRYCK )\tReturnerar värdet pÃ¥ UTTRYCK\n" @@ -5018,9 +5135,8 @@ msgstr "" " UTTR1 || UTTR2\tSant om antingen UTTR1 eller UTTR2 är sant, annars\n" " falskt\n" " \n" -" När operatorerna \"==\" och \"!=\" används används strängen till höger " -"om\n" -" som ett mönster och mönstermatchning utförs. När operatorn \"=~\" " +" När operatorerna â€==†och â€!=†används används strängen till höger om\n" +" som ett mönster och mönstermatchning utförs. När operatorn â€=~†" "används\n" " matchas strängen till höger om operatorn som ett reguljärt uttryck.\n" " \n" @@ -5030,7 +5146,7 @@ msgstr "" " Slutstatus:\n" " 0 eller 1 beroende pÃ¥ värdet av UTTRYCK." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5087,11 +5203,11 @@ msgstr "" " \n" " BASH_VERSION\tVersionsinformation för denna Bash.\n" " CDPATH\tEn kolonseparerad lista av kataloger att söka i efter\n" -" \t\tkataloger givna som argument till \"cd\".\n" +" \t\tkataloger givna som argument till â€cdâ€.\n" " GLOBIGNORE\tEn kolonseparerad lista av mönster som beskriver filnamn\n" " \t\tatt ignorera vid söknamnsexpansion.\n" " HISTFILE\tNamnet pÃ¥ filen där din kommandohistorik sparas.\n" -" HISTFILESIZE\tDet maximala antalet rade denna fil kan innehÃ¥lla.\n" +" HISTFILESIZE\tDet maximala antalet rader denna fil kan innehÃ¥lla.\n" " HISTSIZE\tDet maximala antalet historierade ett körande skal kan\n" " \t\tkomma Ã¥t.\n" " HOME\tDen fullständiga sökvägen till din inloggningskatalog.\n" @@ -5102,7 +5218,7 @@ msgstr "" " \t\tfilslutstecken som kan ses i rad pÃ¥ en tom rad innan\n" " \t\tskalet avslutar (10 som standard). När den inte är satt\n" " \t\tbetyder filslut slut pÃ¥ indata.\n" -" MACHTYPE\tEn sträng som bexkriver det aktuella systemet Bash kör pÃ¥.\n" +" MACHTYPE\tEn sträng som beskriver det aktuella systemet Bash kör pÃ¥.\n" " MAILCHECK\tHur ofta, i sekunder, Bash tittar efter ny post.\n" " MAILPATH\tEn kolonseparerad lista av filnamn som Bash tittar efter\n" " \t\tny post i.\n" @@ -5117,25 +5233,25 @@ msgstr "" " SHELLOPTS\tEn kolonseparerad lista av aktiverade skalflaggor.\n" " TERM\tNamnet pÃ¥ den aktuella terminaltypen.\n" " TIMEFORMAT\tUtmatningsformatet för tidsstatistik som visas av det\n" -" \t\treserverade ordet \"time\".\n" +" \t\treserverade ordet â€timeâ€.\n" " auto_resume\tOm inte tomt betyder att ett kommandoord som förekommer\n" " \t\tensamt pÃ¥ en rad först letas efter i listan av för tillfället\n" " \t\tstoppade jobb. Om det hittas där läggs det jobbet i\n" -" \t\tförgrunden. Ett värde av \"exact\" betyder att kommandoordet\n" +" \t\tförgrunden. Ett värde av â€exact†betyder att kommandoordet\n" " \t\texakt mÃ¥ste stämma med ett kommando i listan över stoppade\n" -" \t\tjobb. Ett värde av \"substring\" betyder att kommandoordet\n" +" \t\tjobb. Ett värde av â€substring†betyder att kommandoordet\n" " \t\tmÃ¥ste stämma med en delsträng av jobbet. Alla andra värden\n" " \t\tbetyder att kommandot mÃ¥ste vara ett prefix av ett stoppat\n" " \t\tjobb.\n" " histchars\tTecken som styr historieexpansion och snabbsubstitution.\n" " \t\tDet första tecknet är tecknet för historiesubstitution,\n" -" \t\tvanligen \"!\". Det andra tecknet är tecknet för \"snabb\n" -" \t\tsubstitution\", vanligen \"^\". Det tredje är tecknet för\n" -" \t\t\"historiekommentar\", vanligen \"#\".\n" +" \t\tvanligen â€!â€. Det andra tecknet är tecknet för â€snabb\n" +" \t\tsubstitutionâ€, vanligen â€^â€. Det tredje är tecknet för\n" +" \t\tâ€historiekommentarâ€, vanligen â€#â€.\n" " 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:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5145,19 +5261,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5173,27 +5289,27 @@ msgstr "" " \n" " Flaggor:\n" " -n\tUndertryck det normala bytet av katalog när kataloger\n" -" \tläggs till pÃ¥ stacken, sÃ¥ att endast stacken ändras.\n" +" \t\tläggs till pÃ¥ stacken, sÃ¥ att endast stacken ändras.\n" " \n" " Argument:\n" " +N\tRotera stacken sÃ¥ att den N:e katalogen (räknat frÃ¥n\n" -" \tvänster i listan som visas av \"dirs\", med start pÃ¥ noll) hamnar\n" -" \tpÃ¥ toppen.\n" +" \t\tvänster i listan som visas av â€dirsâ€, med start pÃ¥ noll)\n" +" \t\thamnar pÃ¥ toppen.\n" " \n" " -N\tRotera stacken sÃ¥ att den N:e katalogen (räknat frÃ¥n\n" -" \thöger i listan som visas av \"dirs\", med start pÃ¥ noll) hamnar\n" -" \tpÃ¥ toppen.\n" +" \t\thöger i listan som visas av â€dirsâ€, med start pÃ¥ noll)\n" +" \t\thamnar pÃ¥ toppen.\n" " \n" " kat\tLägger till KAT till toppen av katalogstacken, och gör\n" -" \tden till den nya aktuella arbetskatalogen.\n" +" \t\tden till den nya aktuella arbetskatalogen.\n" " \n" -" Den inbyggda \"dirs\" visar katalogstacken.\n" +" Den inbyggda â€dirs†visar katalogstacken.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte ett ogiltigt argument ges eller bytet av\n" " katalog misslyckas." -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5202,16 +5318,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5226,24 +5342,24 @@ msgstr "" " \n" " Flaggor:\n" " -n\tUndertryck det normala bytet av katalog när kataloger\n" -" \ttas bort frÃ¥n stacken, sÃ¥ att endast stacken ändras.\n" +" \t\ttas bort frÃ¥n stacken, sÃ¥ att endast stacken ändras.\n" " \n" " Argument:\n" -" +N\tTar bort den N:e katalogen räknat frÃ¥n vänster i listan\n" -" \tsom visas av \"dirs\", med start pÃ¥ noll. Till exempel: \"popd +0\"\n" -" \ttar bort den första katalogen, \"popd +1\" den andra.\n" +" +N\tTar bort den N:e katalogen räknat frÃ¥n vänster i listan som\n" +" \t\tvisas av â€dirsâ€, med start pÃ¥ noll. Till exempel: â€popd +0â€\n" +" \t\ttar bort den första katalogen, â€popd +1†den andra.\n" " \n" -" -N\tTar bort den N:e katalogen räknat frÃ¥n höger i listan\n" -" \tsom visas av \"dirs\", med start pÃ¥ noll. Till exempel: \"popd -0\"\n" -" \ttar bort den sista katalogen, \"popd -1\" den näst sista.\n" +" -N\tTar bort den N:e katalogen räknat frÃ¥n höger i listan som\n" +" \t\tvisas av â€dirsâ€, med start pÃ¥ noll. Till exempel: â€popd -0â€\n" +" \t\ttar bort den sista katalogen, â€popd -1†den näst sista.\n" " \n" -" Den inbyggda \"dirs\" visar katalogstacken.\n" +" Den inbyggda â€dirs†visar katalogstacken.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte ett ogiltigt argument ges eller bytet av\n" " katalog misslyckas." -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5254,19 +5370,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5274,29 +5390,29 @@ msgstr "" "Visa katalogstacken.\n" " \n" " Visa listan av kataloger i minnet för närvarande. Kataloger kommer\n" -" in pÃ¥ listan med kommandot \"pushd\". Du kan komma tillbaka upp genom\n" -" listan med kommandot \"popd\".\n" +" in pÃ¥ listan med kommandot â€pushdâ€. Du kan komma tillbaka upp genom\n" +" listan med kommandot â€popdâ€.\n" " \n" " Flaggor:\n" " -c\tnollställer katalogstacken genom att ta bort alla element\n" " -l\tskriv inte ut versioner med tildeprefix av kataloger som\n" -" \tär relativa till din hemkatalog\n" +" \t\tär relativa till din hemkatalog\n" " -p\tskriv katalogstacken med en post per rad\n" " -v\tskriv katalogstacken med en post per rad föregÃ¥ngna av\n" -" \tdess position i stacken\n" +" \t\tdess position i stacken\n" " \n" " Argument:\n" " +N\tVisar den N:e posten räknat frÃ¥n vänster i listan som visas\n" -" \tav dirs när det anropas utan flaggor, med början frÃ¥n noll.\n" +" \t\tav dirs när det anropas utan flaggor, med början frÃ¥n noll.\n" " \n" " -N\tVisar den N:e posten räknat frÃ¥n höger i listan som visas\n" -" \tav dirs när det anropas utan fläggor, med början frÃ¥n noll.\n" +" \t\tav dirs när det anropas utan flaggor, med början frÃ¥n noll.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5322,8 +5438,8 @@ msgstr "" " listas alla skalflaggor med en indikation om var och en är satt.\n" " \n" " Flaggor:\n" -" -o\tbegränsa FLGNAMN till de som kan användas med \"set -o\"\n" -" -p\tskriv raje skalflagga med en indikation pÃ¥ dess status\n" +" -o\tbegränsa FLGNAMN till de som kan användas med â€set -oâ€\n" +" -p\tskriv varje skalflagga med en indikation pÃ¥ dess status\n" " -q\tutelämna utmatning\n" " -s\taktivera (slÃ¥ pÃ¥) varje FLGNAMN\n" " -u\tavaktivera (slÃ¥ av) varje FLGNAMN\n" @@ -5332,7 +5448,7 @@ msgstr "" " Returnerar framgÃ¥ng om FLGNAMN är aktiverat, misslyckas om en ogiltig\n" " flagga ges eller FLGNAMN är avaktiverat." -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5349,15 +5465,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5376,12 +5492,11 @@ msgstr "" " -v var\ttilldela utdata till skalvariabeln VAR istället för att\n" " \t\tskriva den pÃ¥ standard ut\n" " \n" -" FORMAT är en teckensträng som innehÃ¥ller tre sortes objekt: vanliga\n" +" FORMAT är en teckensträng som innehÃ¥ller tre sorters objekt: vanliga\n" " tecken, som helt enkelt kopieras till standard ut, teckenstyrsekvenser\n" " som konverteras och kopieras till standard ut och " "formatspecifikationer,\n" " där var och en medför utskrift av det nästföljande argumentet.\n" -" argument.\n" " \n" " Förutom de standardformatspecifikationer som beskrivs a printf(1),\n" " tolkar printf:\n" @@ -5401,7 +5516,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett skriv-\n" " eller tilldelningsfel inträffar." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5414,11 +5529,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5435,13 +5550,13 @@ msgstr "" " \n" " Flaggor:\n" " -p\tskriv existerande kompletteringsspecifikationer pÃ¥ ett\n" -" \tÃ¥teranvändningsbart format\n" +" Ã¥teranvändbart format\n" " -r\tta bort en kompletteringsspecifikation för varje NAMN eller\n" -" \tom inga NAMN är givna, alla kompletteringsinformationer\n" +" om inga NAMN är givna, alla kompletteringsinformationer\n" " -D\tanvänd kompletteringarna och Ã¥tgärderna som standard för\n" -" \tkommandon utan nÃ¥gon särskild komplettering definierad\n" -" -E\tanvänd kompletteringarna och Ã¥tgärderna för \"tomma\" kommandon\n" -" \t-- kompletteringar som försöks pÃ¥ en tom rad\n" +" kommandon utan nÃ¥gon särskild komplettering definierad\n" +" -E\tanvänd kompletteringarna och Ã¥tgärderna för â€tomma†kommandon\n" +" — kompletteringar som försöks pÃ¥ en tom rad\n" " \n" " När komplettering försöker göras försöks Ã¥tgärder i den ordning de\n" " versala flaggorna är uppräknade ovan. Flaggan -D har företräde framför\n" @@ -5451,7 +5566,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5473,7 +5588,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5513,26 +5628,25 @@ msgstr "" " \n" " Flaggor:\n" " \t-o flagga\tSätt kompletteringsflagga FLAGGA för varje NAMN\n" -" \t-D\t Ändra flaggorna för standardkommandokompletteringen\n" -" \t-E\t\tÄndra flaggorna för komplettering av ett tomt kommando\n" +" \t-D\t\tÄndra flaggorna för â€standard†kommandokomplettering\n" +" \t-E\t\tÄndra flaggorna för den â€tomma†kommandokompletteringen\n" " \n" -" Genom att använda \"+o\" istället för \"-o\" slÃ¥s den angivna flaggan " -"av.\n" +" Genom att använda â€+o†istället för â€-o†slÃ¥s den angivna flaggan av.\n" " \n" " Argument:\n" " \n" " Varje NAMN refererar till ett kommando för vilket en kompletterings-\n" -" specifikation mÃ¥ste ha definierats tidigare med det inbyggda \"complete" -"\".\n" +" specifikation mÃ¥ste ha definierats tidigare med det inbyggda " +"â€completeâ€.\n" " Om inget NAMN ges mÃ¥ste compopt anropas av en funktion som just nu\n" " genererar kompletteringar, och flaggorna för den just nu exekverande\n" " kompletteringsgeneratorn modifieras.\n" " \n" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN inte har\n" -" nÃ¥gon kompletteringsspecifikaation definierad." +" nÃ¥gon kompletteringsspecifikation definierad." -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5543,20 +5657,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5579,19 +5694,21 @@ msgstr "" " standard för VEKTOR.\n" " \n" " Flaggor:\n" +" -d avgr Använd AVGR för att avsluta rader, istället för nyrad\n" " -n antal\tKopiera högs ANTAL rader. Om ANTAL är 0 kopieras alla " -"rader.\n" +"rader\n" " -O start\tBörja tilldela till VEKTOR vid index START. Standardindex " -"är 0.\n" -" -s antal \tSläng de första ANTAL inlästa raderna.\n" -" -t\t\tTa bort en avslutande nyrad frÃ¥n varje inläst rad.\n" -" -u fb\t\tLäs rader frÃ¥n filbeskrivare FB istället för standard in.\n" +"är 0\n" +" -s antal \tSläng de första ANTAL inlästa raderna\n" +" -t\tTa bort en avslutande AVGR frÃ¥n varje inläst rad (nyrad som\n" +" standard)\n" +" -u fb\tLäs rader frÃ¥n filbeskrivare FB istället för standard in.\n" " -C Ã¥teranrop\tBeräkna Ã…TERANROP för varje KVANTA rader som läses.\n" -" -c kvanta \tAnge antalet rader att läsa mellan varje anrop av\n" -" \t\t \tÃ…TERANROP.\n" +" -c kvanta Ange antalet rader att läsa mellan varje anrop av\n" +" \t\tÃ…TERANROP.\n" " \n" " Argument:\n" -" VEKTOR\t\tNamn pÃ¥ vektorvariabel att använda för fildata.\n" +" VEKTOR\tNamn pÃ¥ vektorvariabel att använda för fildata\n" " \n" " Om -C ges utan -c är standardkvanta 5000. När Ã…TERANROP evalueras fÃ¥r\n" " den indexet pÃ¥ nästa vektorelement att tilldelas och raden att " @@ -5606,7 +5723,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:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5614,4 +5731,19 @@ msgid "" msgstr "" "Läs rader frÃ¥n en fil till en vektorvariabel.\n" " \n" -" En synonym till \"mapfile\"." +" En synonym till â€mapfileâ€." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Copyright © 2014 Free Software Foundation, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" diff --git a/po/tr.gmo b/po/tr.gmo index 945f7b0988c089a19d432e45f86c89ff6fb1af08..a4a89c6fec3233be83d61a30155211fb0ebfd3e5 100644 GIT binary patch delta 18610 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 delta 26074 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 diff --git a/po/tr.po b/po/tr.po index 85c6303..a144d82 100644 --- a/po/tr.po +++ b/po/tr.po @@ -3,86 +3,92 @@ # This file is distributed under the same license as the bash package. # # Nilgün Belma Bugüner , 2006. -# Volkan Gezer , 2013. +# Volkan Gezer , 2013, 2014. msgid "" msgstr "" -"Project-Id-Version: bash 4.3-pre2\n" +"Project-Id-Version: bash 4.3-rc2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2013-11-07 22:11+0100\n" -"Last-Translator: Volkan Gezer \n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2014-10-24 16:11+0200\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" +"Language: tr\n" "X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "hatalı dizi indisi" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indisli dizi, iliÅŸkisel diziye dönüştürülemez" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: geçersiz iliÅŸkisel dizi anahtarı" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: sayısal olmayan indise atama yapılamaz" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: iliÅŸkisel bir dizi ataması yapılırken indis kullanılmalıdır" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: oluÅŸturulamıyor: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: komut için kısayol bulunamıyor" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: boÅŸluk olmayan ilk karakter `\"' deÄŸil" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "%2$s içinde kapatan `%1$c' yok" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: ikinokta imi eksik" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "destek geniÅŸletme: %s için bellek ayrılamıyor" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +msgstr "destek geniÅŸletme: %d öge için bellek ayrılamıyor" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "destek geniÅŸletme: `%s' için bellek ayrılamıyor" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': geçersiz takma isim" @@ -91,45 +97,45 @@ msgstr "`%s': geçersiz takma isim" msgid "line editing not enabled" msgstr "satır düzenleme etkin deÄŸil" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': kısayol ismi geçersiz" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: okunamıyor: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': kısayol deÄŸiÅŸtirilemiyor" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "`%s': iÅŸlev ismi bilinmiyor" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, 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:320 #, c-format msgid "%s can be invoked via " msgstr "%s bunun üzerinden çaÄŸrılabilir: " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "döngü sayısı" -#: builtins/break.def:137 +#: builtins/break.def:141 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:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -139,300 +145,329 @@ msgstr "" " \n" " İFADE olmadan, ÅŸu döner " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME atanmamış" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "çok fazla argüman" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "yığıtın tepesinde kalan dizine geçer." + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD boÅŸ" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "satır %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "uyarı: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: kullanım: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: seçenek bir argüman gerektirir" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: sayısal argüman gerekli" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s:yok" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: seçenek geçersiz" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: seçenek ismi geçersiz" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': geçerli bir belirteç deÄŸil" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "geçersiz sekizli sayı" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "geçersiz onaltılık sayı" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "geçersiz sayı" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: sinyal belirtimi geçersiz" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': geçerli bir iÅŸ belirtimi veya süreç numarası deÄŸil" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: salt okunur deÄŸiÅŸken" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s aralık dışı" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argüman" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s aralık dışı" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: böyle bir iÅŸ yok" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: iÅŸ denetimi yok" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "iÅŸ denetimi yok" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: kısıtlı" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "kısıtlı" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: bir kabuk yerleÅŸiÄŸi deÄŸil" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "yazma hatası: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "uçbirim nitelikleri ayarlanırken hata: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "uçbirim nitelikleri alınırken hata: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: geçerli dizin alınırken hata: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: iÅŸ belirtimi belirsiz" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, 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:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: tamamlama belirtimi yok" -#: builtins/complete.def:697 +#: builtins/complete.def:699 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:701 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:831 msgid "not currently executing completion function" msgstr "ÅŸuan tamamlama iÅŸlevi çalıştırılmıyor" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "sadece bir iÅŸlevde kullanılabilir" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: referans deÄŸeri bir dizi olamaz" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: nameref deÄŸiÅŸkeninin kendine yaptığı referanslara izin verilmiyor" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: çembersel isim referansı" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: dosya izleme tanımlayıcısı için geçersiz deÄŸer" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "iÅŸlev yapmak için `-f' kullanılamaz" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: salt okunur iÅŸlev" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: dizi deÄŸiÅŸkenleri bu yolla iptal edilemez" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: iliÅŸkisel dizi, indisli diziye dönüştürülemez" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "özdevimli yükleme mümkün deÄŸil" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "%s paylaşımlı nesnesi açılamıyor: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "%2$s paylaşımlı nesnesinde %1$s bulunamıyor: %3$s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: özdevimli olarak yüklenmemiÅŸ" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: silinemiyor: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: bir dizin" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: bir dosya deÄŸil" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: dosya çok büyük" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ikili dosya çalıştırılamıyor" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: çalıştırılamıyor: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "çıkış\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "oturum açma kabuÄŸu deÄŸil: `exit' kullanın" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "DurmuÅŸ iÅŸler var.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Çalışan görevler mevcut.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "komut yok" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "geçmiÅŸ belirtimi" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: geçici dosya açılamıyor: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "ÅŸimdiki" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "%d. iÅŸ, iÅŸ denetimsiz baÅŸlamış" @@ -451,24 +486,24 @@ msgstr "%s: seçenek bir argüman gerektirir -- %c\n" msgid "hashing disabled" msgstr "çitleme iptal edildi" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: çitleme tablosu boÅŸ\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "eÅŸleÅŸme\tkomut\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Bu anahtar sözcükle eÅŸleÅŸen komutlar: `" msgstr[1] "Bu anahtar sözcüklerle eÅŸleÅŸen komutlar: `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -476,12 +511,12 @@ msgstr "" "`%s' ile ilgili bir yardım metni yok. `help help' veya `man -k %s' ya da " "`info %s'.yazmayı deneyebilirsiniz." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: açılamıyor: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -501,15 +536,20 @@ msgstr "" "Bir ismin yanında bir yıldız imi (*) varsa komut iptal edilmiÅŸ demektir.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "tek bir -anrw kullanılabilir" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "geçmiÅŸ konumu" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: geçersiz argüman" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: geçmiÅŸ yorumlaması baÅŸarısız" @@ -523,113 +563,113 @@ msgstr "%s: inlib baÅŸarısız" msgid "no other options allowed with `-x'" msgstr "`-x' ile baÅŸka seçenek kullanılamaz" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argümanlar süreç veya iÅŸ kimlikleri olmalı" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Bilinmeyen hata" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "ifade bekleniyordu" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: bir sıralı dizi deÄŸil" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: dosya tanıtıcı belirtimi geçersiz" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: dosya tanıtıcı geçersiz: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: geçersiz satır sayısı" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: geçersiz dizi kökeni" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: geçersiz geri çağırım niceliÄŸi" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "boÅŸ bir dizi deÄŸiÅŸken adı" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "dizi deÄŸiÅŸken desteÄŸi gerekli" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': biçim karakteri eksik" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': geçersiz zaman biçimi belirtimi" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': biçim karakteri geçersiz" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "uyarı: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "biçim ayıklama sorunu: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "\\x için onaltılık rakam eksik" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "evrensel kod rakamı eksik \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "baÅŸka dizin yok" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: geçersiz argüman" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "dizin yığını boÅŸ" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "dizin yığını indisi" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -671,7 +711,7 @@ msgstr "" " -N\tDizinler tarafından gösterilen listenin sağından baÅŸlayarak\n" "\tN'inci girdiyi gösterir. Seçenek kullanılmadığında sıfırdan baÅŸlar." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -716,7 +756,7 @@ msgstr "" " \n" " Dizin yığıtını `dirs' komutuyla görebilirsiniz." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -754,143 +794,153 @@ msgstr "" " \n" " Dizin yığıtını `dirs' komutuyla görebilirsiniz." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: zamanaşımı belirtimi geçersiz" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "okuma hatası: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "sadece bir iÅŸlev veya betikten kaynaklı olarak `return' yapılabilir" -#: builtins/set.def:782 +#: builtins/set.def:841 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:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: unset yapılamaz" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s:unset yapılamaz: %s salt okunur" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: bir dizi deÄŸiÅŸkeni deÄŸil" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: bir iÅŸlev deÄŸil" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: unset yapılamaz" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "shift sayısı" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: kabuk seçenek ismi geçersiz" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "dosya ismi argüman gerekir" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: dosya yok" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "engellenemez" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "bir oturum açma kabuÄŸu engellenemez" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s `%s' için takma addır\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s bir kabuk anahtar sözcüğüdür\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s bir iÅŸlevdir\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s bir kabuk yerleÅŸiÄŸidir\n" + +#: builtins/type.def:302 #, c-format 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:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s %s'dir\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s çitilmiÅŸ (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: sınırlama argümanı geçersiz" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': hatalı komut" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: sınır alınamıyor: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "sınır" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: sınır deÄŸiÅŸtirilemiyor: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "sekizlik sayı" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "`%c': simgesel kip iÅŸleci geçersiz" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format 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:348 error.c:350 error.c:352 msgid " line " msgstr " satır " @@ -904,82 +954,103 @@ msgstr "son komut: %s\n" msgid "Aborting..." msgstr "Çıkılıyor..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "bilinmeyen komut hatası" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "hatalı komut türü" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "hatalı baÄŸlantı" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "hatalı sıçrama" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: baÄŸlanmamış deÄŸiÅŸken" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\agirdi beklerken zamanaşımı: auto-logout\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "/dev/null'dan standart girdiye yönlendirme yapılamaz: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': biçim karakteri geçersiz" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "iletiÅŸim tüneli hatası" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, fuzzy, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" + +#: execute_cmd.c:4508 +#, fuzzy, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: kısıtlı: komut adında `/' kullanamazsınız" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: komut yok" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: hatalı yorumlayıcı" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ikili dosya çalıştırılamıyor: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "%s: bir kabuk yerleÅŸiÄŸidir" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "fd %d, fd %d olarak yinelenemiyor" @@ -1024,37 +1095,37 @@ msgstr "belirteç ön-arttırım veya ön-eksiltim sonrası bekleniyordu" msgid "missing `)'" msgstr "eksik `)'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "sözdizimi hatası: terim umuluyordu" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "sözdizimi hatası: geçersiz aritmetik iÅŸleci" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (hata belirtisi \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "geçersiz sayı tabanı" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "deÄŸer taban için fazla büyük" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: ifade hatası\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: üst dizinlere eriÅŸilemiyor" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" @@ -1070,148 +1141,148 @@ msgstr "" 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:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp iletiÅŸim tüneli" -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "durdurulan %2$ld süreç gruplu iÅŸ %1$d siliniyor" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: %5ld (%s) süreci iletiÅŸim_tünelinde" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: %5ld (%s) program kimliÄŸi hala canlı olarak iÅŸaretli" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: böyle bir pid yok" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Sinyal %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Bitti" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Durdu" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Durdu(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Çalışıyor" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Bitti(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Çıkış %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Bilinmeyen durum" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(çekirdek döküldü)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "alt setpgid (ÅŸuradan: %ld ÅŸuraya: %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, 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:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: süreç %ld için kayıt yok" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: iÅŸ %d durdu" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: iÅŸ sonlanmış" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: iÅŸ %d zaten artalanda" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: belirsiz blok önlenmek için WNOHANG açılıyor" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: satır %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (çekirdek döküldü)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd artık: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp baÅŸarısız" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: satır düzeni" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "uçbirim süreç grunu (%d) ayarlanamaz" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "bu kabukta iÅŸ denetimi yok" @@ -1265,17 +1336,17 @@ msgstr "realloc: alttan taÅŸma saptandı; mh_nbytes aralık dışında" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: baÅŸlangıç ve son tomar boyutları farklı" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: alloc tablosu FIND_ALLOC ile dolu olabilir mi?\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p zaten ayrılmış olarak tabloda deÄŸil mi?\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format 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" @@ -1299,7 +1370,7 @@ msgstr "%s: geçersiz hizmet" msgid "%s: bad network path specification" msgstr "%s: hatalı aÄŸ yolu belirtimi" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "desteklenmeyen aÄŸ iÅŸlemleri" @@ -1336,224 +1407,259 @@ msgstr "$_'de yeni postanız var" msgid "The mail in %s has been read\n" msgstr "%s'deki posta okundu\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "sözdizimi hatası: aritmetik ifadesi gerekli" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "sözdizimi hatası: `;' beklenmiyordu" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "sözdizimi hatası: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, 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:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "bu belgede %d satırında dosya sonu sonlandırılmış (istenen `%s')" -#: make_cmd.c:759 +#: make_cmd.c:768 #, 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:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "`%c' için eÅŸleÅŸme aranırken beklenmedik dosya sonu" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "`]]' aranırken beklenmedik dosya sonu" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "koÅŸullu ifadede sözdizimi hatası: beklenmedik dizgecik `%s'" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "koÅŸullu ifadede sözdizimi hatası" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "beklenmedik dizgecik `%s', `)' umuluyordu" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "`)' umuluyordu" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "koÅŸullu tek terimli iÅŸlece beklenmedik argüman `%s'" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "koÅŸullu tek terimli iÅŸlece beklenmedik argüman" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "beklenmedik dizgecik `%s', koÅŸullu iki terimli iÅŸleç umuluyordu" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "koÅŸullu iki terimli iÅŸleç umuluyordu" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "koÅŸullu iki terimli iÅŸlece beklenmedik argüman `%s'" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "koÅŸullu iki terimli iÅŸlece beklenmedik argüman" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "koÅŸullu komutta beklenmeyen dizgecik `%c'" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "koÅŸullu komutta beklenmeyen dizgecik `%s'" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "koÅŸullu komutta beklenmeyen dizgecik %d" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "beklenmeyen dizgecik `%s' yakınında sözdizimi hatası" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "`%s' yakınında sözdizimi hatası" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "sözdizimi hatası: beklenmeyen dosya sonu" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "sözdizimi hatası" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "KabuÄŸu bırakmak için \"%s\" kullanın.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "`)' için eÅŸleÅŸme aranırken beklenmedik dosya sonu" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: `%s' iÅŸlevi yok" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: hatalı baÄŸlayıcı `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: geçersiz dosya tanımlayıcısı" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: BOÅž dosya iÅŸaretçisi" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': geçersiz biçim karakteri" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "dosya tanıtıcı aralık dışında" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: belirsiz yönlendirme" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: mevcut dosyanın üzerine yazılamıyor" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: kısıtlı: çıktı yönlendirilemiyor" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "belge için geçici dosya oluÅŸturulamıyor: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: fd deÄŸiÅŸkene atanamıyor" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port aÄŸ olmaksızın desteklenmiyor" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "yönlendirme hatası: fd yinelenemiyor" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "/tmp bulunamadı, lütfen oluÅŸturun!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp geçerli bir dizinin adı olmalıdır" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: geçersiz seçenek" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: bir dizin" + +#: shell.c:1777 msgid "I have no name!" msgstr "Hiç ismim yok!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, sürüm %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1562,44 +1668,54 @@ 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:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU uzun seçenekleri:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Kabuk seçenekleri:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneÄŸi\t\t(sadece çaÄŸrı için)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ya da -o seçeneÄŸi\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' " "yazın.\n" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Kabuk yerleÅŸik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n" -#: shell.c:1858 +#: shell.c:1961 #, 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:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: geçersiz iÅŸlem" @@ -1773,77 +1889,92 @@ msgstr "Bilinmeyen Sinyal #" msgid "Unknown Signal #%d" msgstr "Bilinmeyen Sinyal #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: dizi üyesine liste atanamaz" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "süreç ikamesi için borulama yapılamıyor" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "süreç ikamesi için alt süreç yapılamıyor" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "isimli boru %s okumak için açılamıyor" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "isimli boru %s yazmak için açılamıyor" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "isimli boru %s fd %d olarak yinelenemiyor" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "hatalı ikame: %s içinde kapatan \"`\" yok" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "komut ikamesi için boru yapılamıyor" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "komut ikamesi için alt süreç yapılamıyor" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: boru fd 1 olarak yinelenemiyor" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: dosya izleme tanımlayıcısı için geçersiz deÄŸer" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: parametre boÅŸ ya da deÄŸer atanmamış" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: altdizge ifadesi < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: hatalı ikame" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: geçersiz satır sayısı" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "`%s': geçersiz takma isim" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: parametre boÅŸ ya da deÄŸer atanmamış" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: altdizge ifadesi < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: bu yolla atama yapılmaz" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1851,12 +1982,12 @@ msgstr "" "kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak deÄŸerlendirmeye " "zorlayacak" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "hatalı ikame: %s içinde kapatan \"`\" yok" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "eÅŸleÅŸme yok: %s" @@ -1870,125 +2001,125 @@ msgstr "argüman bekleniyordu" msgid "%s: integer expression expected" msgstr "%s: tamsayı ifadesi bekleniyordu" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "`)' bekleniyordu" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "`)' bekleniyordu, %s bulundu" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: tek terimli iÅŸleci bekleniyordu" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: iki terimli iÅŸleci bekleniyordu" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "eksik `]'" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "geçersiz sinyal numarası" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" "run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler:hatalı sinyal %d" -#: variables.c:382 +#: variables.c:409 #, 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:780 +#: variables.c:814 #, 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:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%s: dosya izleme tanımlayıcısı için geçersiz deÄŸer" - -#: variables.c:2228 +#: variables.c:2413 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:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: deÄŸiÅŸkene deÄŸer atanmamış olabilir" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: dosya izleme tanımlayıcısı için geçersiz deÄŸer" + +#: variables.c:3940 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:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s boÅŸ exportstr içeriyor" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, 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:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s için exportstr içinde `=' yok" -#: variables.c:4344 +#: variables.c:4684 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:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: genel deÄŸiÅŸkenler baÄŸlamı yok" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: kabuk deÄŸiÅŸkenlerinin başı bir geçici ortam etki alanı deÄŸil" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: DOSYA olarak açılamaz" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: dosya izleme tanımlayıcısı için geçersiz deÄŸer" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: uyumlulukdeÄŸeri aralık dışı" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Åž." +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Telif Hakkı (C) 2013 Özgür Yazılım Vakfı A.Åž." #: version.c:47 version2.c:47 msgid "" @@ -2011,10 +2142,6 @@ msgstr "Bu ücretsiz bir yazılımdır; deÄŸiÅŸtirmekte ve dağıtmakta özgürs msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "İzin verilen yasalar kapsamında hiçbir GARANTİSİ BULUNMAMAKTADIR." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Åž." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2035,15 +2162,15 @@ msgstr "%s: %s:%d: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: %lu bayt ayrılamıyor" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [isim[=deÄŸer] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] isim [isim ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -2052,112 +2179,100 @@ msgstr "" "anahtar sırası] [-x keyseq:kabuk-komutu] [keyseq:satırokuma-iÅŸlevi veya " "satırokuma-komutu]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [kabuk-dahili [arg ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [ifade]" -#: builtins.c:64 -#, fuzzy -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|[-P [-e]]] [dizin]" - #: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [dizin]" + +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [isim[=deÄŸer] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." +#: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." msgstr "typeset [-aAfFgilrtux] [-p] isim[=deÄŸer] ..." -#: builtins.c:80 +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [seçenek] isim[=deÄŸer] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [arg ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [arg ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f dosyaadı] [isim ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [arg ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts optstring isim [arg]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a isim] [komut [argümanlar ...]] [yönlendirme ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e ename] [-lnr] [ilk] [son] veya fc -s [pat=rep] [komut]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [görev_tan]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [görev_tan ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p yoladı] [-dt] [isim ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [desen ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2165,15 +2280,16 @@ msgstr "" "history [-c] [-d baÅŸlangıç] [n] veya history -anrw [dosyaadı] veya history -" "ps arg [arg...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [görevtan ...] veya jobs -x komut [argü]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [görevtan ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2181,11 +2297,11 @@ msgstr "" "kill [-s sinspec | -n signum | -sigspec] pid | görevtan ... veya kill -l " "[sigspec]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2193,99 +2309,96 @@ 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 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [isim ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [isim[=deÄŸer] ...] veya export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [isim[=deÄŸer] ...] veya readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source dosyaadı [argümanlar]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". dosyaadı [argümanlar]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [ifade]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ arg... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[arg] sinyal_tan ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] isim [isim ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [sınır]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [kip]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [id ...]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [pid ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for İSİM [in KELİMELER ... ] ; do KOMUTLAR; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( ifade1; ifade2; ifade3 )); do KOMUTLAR; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select İSİM [in KELİMELER ... ;] do KOMUTLAR; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] zamantüneli" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case KELİME in [DESEN [| DESEN]...) KOMUTLAR ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2293,63 +2406,63 @@ msgstr "" "if KOMUTLAR; then KOMUTLAR; [ elif KOMUTLAR; then KOMUTLAR; ]... [ else " "KOMUTLAR; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while KOMUTLAR; do KOMUTLAR; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until KOMUTLAR; do KOMUTLAR; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [isim] command [yönlendirmeler]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function isim { KOMUTLAR ; } veya isim () { KOMUTLAR ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ KOMUTLAR ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "görev_tan [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( ifade ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ ifade ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - Bazı kabuk deÄŸiÅŸkenlerinin isim ve anlamları" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | dizin]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [optname ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] biçim [argümanlar]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2359,28 +2472,30 @@ msgstr "" "W kelimelistesi] [-F iÅŸlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] " "[isim ...]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" 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 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o seçenek] [-DE] [isim ...]" -#: builtins.c:240 +#: builtins.c:242 +#, fuzzy msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" msgstr "" "mapfile [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c " "parçacık] [dizi]" -#: builtins.c:242 +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" @@ -2388,7 +2503,8 @@ msgstr "" "readarray [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c " "parçacık] [dizi]" -#: builtins.c:254 +#: builtins.c:256 +#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2400,7 +2516,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2423,12 +2539,13 @@ msgstr "" " Çıkış Durumu:\n" " Hiçbir ÅŸeyin rumuzu olmayan bir İSİM verilmedikçe alias doÄŸru döndürür." -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2440,7 +2557,8 @@ msgstr "" " İSİM mevcut olmayan bir rumuz olmadığı takdirde doÄŸru\n" " döndür." -#: builtins.c:289 +#: builtins.c:291 +#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2474,7 +2592,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2520,7 +2639,7 @@ msgstr "" " tanınmayan bir seçenek girilmediÄŸi veya bir hata oluÅŸmadığı durumda 0 " "döndürür." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2539,7 +2658,7 @@ msgstr "" " Çıkış Durumu:\n" " N, 1'e eÅŸit veya daha fazla olmadığında çıkış durumu 0'dır." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2557,7 +2676,7 @@ msgstr "" " Çıkış Durumu:\n" " N, 1 veya daha büyük olmadığında çıkış durumu 0'dır." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2582,7 +2701,7 @@ msgstr "" " KABUK-DAHİLİnin çıkış durumunu veya eÄŸer KABUK-DAHİLİ deÄŸilse false " "döndürür." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2611,7 +2730,7 @@ msgstr "" " İFADE geçersiz olmadığı ve bir kabuk iÅŸlevi çalıştırmadığı durumda 0 " "döndürür." -#: builtins.c:385 +#: builtins.c:387 #, fuzzy msgid "" "Change the shell working directory.\n" @@ -2635,16 +2754,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2681,7 +2800,9 @@ msgstr "" " -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" +" -@ destekleyen sistemlerde, dosya niteliklerini içeren bir dizin " +"olarak uzatılmış\n" +" niteliklere sahip bir dosya sun \n" " Öntanımlı olan `-L' tanımlanmış gibi sembolik baÄŸlantıları takip " "etmektir.\n" " \n" @@ -2690,13 +2811,14 @@ msgstr "" "diÄŸer durumda\n" " sıfır olmayan bir deÄŸer döndürür." -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2717,7 +2839,7 @@ msgstr "" " Çıkış Durumu:\n" " Dizin okunamadığı veya geçersiz seçenek verilmediÄŸi takdirde 0 döndürür." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2733,7 +2855,7 @@ msgstr "" " Çıkış Durumu:\n" " Her zaman baÅŸarılıdır." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2745,7 +2867,7 @@ msgstr "" " Çıkış Durumu:\n" " Her zaman baÅŸarılıdır." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2757,7 +2879,8 @@ msgstr "" " Çıkış Durumu:\n" " Her zaman baÅŸarısızdır." -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2767,10 +2890,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2793,7 +2916,8 @@ msgstr "" " Çıkış Durumu:\n" " KOMUTun çıkış durumunu döndürür. KOMUT bulunamazsa baÅŸarısız olur." -#: builtins.c:487 +#: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2803,9 +2927,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2832,18 +2956,59 @@ msgid "" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." msgstr "" +"DeÄŸiÅŸken deÄŸer ve niteliklerini ayarla.\n" +" \n" +" DeÄŸiÅŸkenleri ayarla ve nitelik ver. EÄŸer İSİM verilmemiÅŸse, tüm " +"deÄŸiÅŸkenlerin, niteliklerini ve deÄŸerlerini görüntüle.\n" +" \n" +" Seçenekler:\n" +" -f\teylemi veya iÅŸlev ismi ile tanımları gösterimini kısıtla\n" +" -F\tsadece iÅŸlev isim gösterimlerini kısıtla (ek olarak satır sayısı " +"ve hata ayıklarken\n" +" \tkaynak dosyayı)\n" +" -g\tbir kabuk fonksiyonunda kullanıldığında evrensel deÄŸiÅŸken " +"oluÅŸtur,\n" +" \taksi takdirde yoksayılır\n" +" -p\ther İSİMin deÄŸeri ve niteliklerini görüntüle\n" +" \n" +" Nitelik ayarlayan seçenekler:\n" +" -a\tİSİMleri indisli diziler yapmak için (destekleniyorsa)\n" +" -A\tİSİMleri iliÅŸkisel dizi yapmak için (destekleniyorsa)\n" +" -i\tİSİMleri `integer' niteliÄŸi sahibi yapmak için\n" +" -l\tİSİMleri atamada küçük harfe dönüştürmek için\n" +" -n\tİSİMi deÄŸeriyle isimlendirilmiÅŸ bir deÄŸiÅŸkene referans yapmak " +"için\n" +" -r\tİSİMleri salt okunur yapmak için\n" +" -t\tİSİMlerin `trace' niteliÄŸi sahibi yapmak için\n" +" -u\tİSİMleri atamada büyük harfe dönüştürmek için\n" +" -x\tİSİMleri dışarı çıkarabilir yapmak için\n" +" \n" +" `-' yerine `+' kullanmak belirtilen niteliÄŸi kapatır.\n" +" \n" +" Tamsayı niteliÄŸine sahip deÄŸiÅŸkenler, bir deÄŸere atandıklarında " +"aritmetik deÄŸerlendirmeye tabi tutulurlar (`let' komutuna bakın).\n" +" \n" +" Bir fonksiyonda kullanıldığında, `declare' İSİMleri, `local' komutu\n" +"gibi yerel\n" +" yapar. `-g' seçeneÄŸi bu davranışı iptal eder.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir deÄŸer saÄŸlanmadığı veya deÄŸiÅŸken atama hatası olmadığı " +"sürece\n" +" baÅŸarılı döner." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "DeÄŸiÅŸken isim ve niteliklerini ayarla.\n" " \n" " Kullanılmıyor. Bkz. `help declare'." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2871,7 +3036,7 @@ msgstr "" "veya\n" " kabuk bir iÅŸlev çalıştırmıyorsa baÅŸarılı döner." -#: builtins.c:552 +#: builtins.c:555 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2898,16 +3063,17 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" "Argümanları standart çıktıya yaz.\n" " \n" -" ARGümanları yeni satırla izlenen standart çıktıda görüntüle.\n" +" ARGümanları yeni satırla izlenen standart çıktıda bir boÅŸluk karakteri\n" +" kullandıktan sonra göster.\n" " \n" " Seçenekler:\n" " -n\tyeni satıra baÅŸvurma\n" @@ -2919,6 +3085,7 @@ msgstr "" " \\b\tgerisilme\n" " \\c\tsonraki çıktıları gizle\n" " \\e\tkaçış karakteri\n" +" \\E\tkaçış karakteri\n" " \\f\tform besleme\n" " \\n\tyeni satır\n" " \\r\tsatırbaşı\n" @@ -2934,7 +3101,7 @@ msgstr "" " Çıkış Durumu:\n" " Yazma hatası oluÅŸmadığı takdirde baÅŸarılı döner." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2956,7 +3123,7 @@ msgstr "" " Çıkış Durumu:\n" " Bir hata oluÅŸmadığı sürece baÅŸarılı döner." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2982,8 +3149,32 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" +"Kabuk yerleÅŸiklerini etkinleÅŸtir/devre dışı bırak.\n" +" \n" +" Dahili kabuk komutlarını etkinleÅŸtirir ve devre dışı bırakır. Devre " +"dışı\n" +" bırakmak bir kabuk yerleÅŸiÄŸi ile aynı isme sahip bir disk komutunu tam\n" +" bir yol adı kullanmadan çalıştırmanızı saÄŸlar. \n" +" Seçenekler:\n" +" -a\ttüm yerleÅŸikler listesini etkin olup olmadıkları bilgisi ile " +"yazdır\n" +" -n\ther İSİMi devre dışı bırak veya devre dışı olanları listele\n" +" -p\tyerleÅŸik listesini tekrar kullanılabilir biçimde yazdır\n" +" -s\tsadece Posix `özel' yerleÅŸiklerinin isimlerini yazdır\n" +" \n" +" Hareketli yüklemeyi denetleyen seçenekler:\n" +" -f\tİSİM yerleÅŸiÄŸini paylaşılan DOSYAADI nesnesinden yükle\n" +" -d\t-f ile yüklenmiÅŸ bir yerleÅŸiÄŸi kaldır\n" +" \n" +" Seçenek olmazsa her İSİM etkinleÅŸtirilir.\n" +" \n" +" Kabuk yerleÅŸiÄŸi sürümü yerine $PATH içerisinde bulunan `test' kullanmak\n" +" için `enable -n test' yazın.\n" +" \n" +" Çıktı Durumu:\n" +" İSİM bir kabuk yerleÅŸiÄŸi deÄŸilse ve hata oluÅŸmazsa baÅŸarılı döner." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3003,7 +3194,7 @@ msgstr "" " Çıkış Durumu:\n" " Komutun çıkış durumunu döndürür veya komut boÅŸsa baÅŸarılı döner." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3100,7 +3291,8 @@ msgstr "" "bir hata oluÅŸtuÄŸunda baÅŸarısız döner.\n" " encountered or an error occurs." -#: builtins.c:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -3111,8 +3303,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3140,7 +3332,7 @@ msgstr "" " Çıkış Durumu:\n" " KOMUT bulunduÄŸu ve bir yönlendirme hatası olmadığı sürece baÅŸarılı döner." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3152,7 +3344,7 @@ msgstr "" " N durumu ile dönerek kabuk çıkar. N verilmezse son çalıştırılan komutun\n" " çıkış durumu döner." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3165,7 +3357,7 @@ msgstr "" " 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:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3222,7 +3414,7 @@ msgstr "" " BaÅŸarılı veya çalıştırılan komut durumu döndürülür; hata oluÅŸtuÄŸunda " "sıfır harici deÄŸer döner." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3242,7 +3434,7 @@ msgstr "" " Çıktı Durumu:\n" " Ön plana yerleÅŸtirilmiÅŸ komutun durumu veya hata olduÄŸunda baÅŸarısız." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3264,7 +3456,7 @@ msgstr "" " İş kontrolü etkin olmadığı veya bir hata oluÅŸmadığı sürece baÅŸarılı " "döner." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3273,22 +3465,23 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3300,7 +3493,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3309,8 +3502,27 @@ msgid "" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" +"Dahili komutlar hakkında bilgi görüntüle.\n" +" \n" +" Dahili komutların özetlerini görüntüler. EÄŸer DESEN belirtilmiÅŸse,\n" +" DESEN ile eÅŸleÅŸen tüm komutlar hakkında ayrıntılı bilgi verir, aksi\n" +" halde, yardım konuları yazdırılır.\n" +" \n" +" Seçenekler:\n" +" -d\ther konu için kısa açıklama yazdır\n" +" -m\tkullanımı pseudo-man sayfası biçiminde yazdır\n" +" -s\tsadece DESEN ile eÅŸleÅŸen konular için kısa kullanım\n" +" \tbilgisi yazdır\n" +" \n" +" Argümanlar:\n" +" DESEN\tBir yardım konusunu belirten desen\n" +" \n" +" Çıktı Durumu:\n" +" DESEN bulunmadığı veya geçersiz bir seçenek verilmediÄŸinde baÅŸarılı " +"döner." -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3319,23 +3531,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3375,7 +3587,7 @@ msgstr "" " Geçersiz bir seçenek girilmediÄŸi veya bir hata oluÅŸmadığı takdirde " "baÅŸarılı döner." -#: builtins.c:869 +#: builtins.c:872 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3386,7 +3598,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3422,7 +3634,8 @@ msgstr "" "baÅŸarılı döner.\n" " -x kullanılmışsa, KOMUTun çıkış durumu döndürülür." -#: builtins.c:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -3432,14 +3645,29 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"Görevleri geçerli kabuktan kaldır.\n" +" \n" +" Her İŞTANIMı argümanını etkin görevler tablosundan kaldırır. İŞTANIMı " +"olmadan,\n" +" kabuk geçerli görev kavramını kullanır.\n" +" \n" +" Seçenekler:\n" +" -a\tİŞTANIMı belirtilmemiÅŸse tüm görevleri kaldır\n" +" -h\ther İŞTANIMını iÅŸaretle, böylece kabul bir SIGHUP aldığında göreve " +"SIGHUP\n" +" \tgönderme\n" +" -r\tsadece çalışan görevleri kaldırremove \n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir seçenek veya İŞTANIMı girilmedikçe baÅŸarılı döner." -#: builtins.c:915 +#: builtins.c:918 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3452,7 +3680,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3461,24 +3690,31 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"\rkill [-s SİNYAL | -n SİNYALNUM | -SİNYAL] PID | İŞ_BELİRTİMİ ...\n" -"kill -l [SİNYAL]\n" +"Bir göreve sinyal gönder.\n" +" \n" " PID ile belirtilen süreç kimliÄŸine veya İŞ_BELİRTİMİ ile belirtilen\n" " iÅŸin sürecine SİNYAL veya SİNYALNUM ile belirtilen sinyali gönderir.\n" -" SİNYAL ya harf büyüklüğüne duyarsız olarak SIGINT gibi bir sinyal ismi\n" -" (SIG öneki olmadan da verilebilir) ya da bir sinyal numarası olabilir.\n" -" SİNYALNUM ise bir sinyal numarası olmalıdır. SİNYAL veya SİNYALNUM\n" -" 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" -" 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." +" SİNYAL veya SİNYALNUM verilmezse öntanımlı olarak SIGTERM kullanılır.\n" +" \n" +" Seçenekler:\n" +" -s sig\tSİNYAL bir sinyal\n" +" -n sig\tSİNYAL bir sinyal numarası\n" +" -l\t-l seçeneÄŸi ile sinyal isimleri listelenir.\n" +" Argümanlı -l seçeneÄŸinde argümanların listelenecek\n" +" sinyal isimlerinin numaraları olduÄŸu varsayılır. \n" +" Kill iki sebepten dolayı bir kabuk yerleÅŸiÄŸidir: süreç kimlikleri yerine " +"iÅŸ\n" +" kimliklerinin kullanımını mümkün kılar ve eÄŸer oluÅŸturabileceÄŸiniz " +"süreç\n" +" sayısı sınırını aÅŸarsanız baÅŸka bir süreci öldürecek bir süreci " +"baÅŸlatmak\n" +" zorunda kalmazsınız.\n" +" \n" +" Çıktı Durumu:\n" +" Geçersiz bir seçenek belirtilmediÄŸi veya bir hata oluÅŸmadığında baÅŸarılı " +"döner." -#: builtins.c:938 -#, fuzzy +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3522,47 +3758,49 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -"\rlet İFADE [İFADE ...]\n" -" Her İFADE deÄŸerlendirilecek bir aritmetik ifadesidir. DeÄŸerlendirme\n" +"Aritmetik ifadeleri deÄŸerlendir.\n" +" \n" +" Her ARG deÄŸerlendirilecek bir aritmetik ifadesidir. DeÄŸerlendirme\n" " sabit geniÅŸlikli tamsayılarla, taÅŸma denetimi uygulanmaksızın yapılır,\n" " sıfırla bölme bir hata olarak bayraklanır ve onun için bir sinyal\n" " kapanı vardır. İşleçler için öncelikler ve çaÄŸrışımsallık ve deÄŸerler\n" " C dilindeki ile aynıdır. AÅŸağıdaki iÅŸleçler eÅŸit öncelikli iÅŸleç\n" " düzeylerine göre öbeklenmiÅŸ ve azalan öncelikle listelenmiÅŸlerdir.\n" -"\n" -" id++ id-- sonradan-arttırım ve sonradan-eksiltim\n" -" ++id --id önceden-arttırım ve önceden-eksiltim\n" -" - + tek terimli eksi ve artı imi\n" -" ! ~ mantıksal ve bitseviyesinde olumsuzlama\n" -" ** üs imi\n" -" * / % çarpma, bölme, kalan\n" -" + - toplama, çıkarma\n" -" << >> bitseviyesinde sola ve saÄŸa ötelemeler\n" -" <= >= < > karşılaÅŸtırmalar\n" -" == != eÅŸitlik, eÅŸitsizlik\n" -" & bitseviyesinde VE\n" -" ^ bitseviyesinde ayrıcalıklı VEYA\n" -" | bitseviyesinde VEYA\n" -" && mantıksal VE\n" -" || mantıksal VEYA\n" -" ifade ? ifade : ifade koÅŸullu üç terimlisi\n" -" = *= /= %=\n" -" += -= <<= \n" -" >>= &= ^= |=\n" -" atama iki terimlileri\n" -"\n" +" \n" +" \tid++ id--\tsonradan-arttırım ve sonradan-eksiltim\n" +" \t++id --id\tönceden-arttırım ve önceden-eksiltim\n" +" \t- +\t\ttek terimli eksi ve artı imi\n" +" \t! ~\t\tmantıksal ve bitseviyesinde olumsuzlama\n" +" \t**\t\tüs imi\n" +" \t* / %\t\tçarpma, bölme, kalan\n" +" \t+ -\t\ttoplama, çıkarma\n" +" \t<< >> \tbit seviyesinde sola ve saÄŸa ötelemeler\n" +" \t<= >= < >\tkarşılaÅŸtırmalar\n" +" \t== !=\t\teÅŸitlik, eÅŸitsizlik\n" +" \t&\t\tbit seviyesinde VE\n" +" \t^\t\tbit seviyesinde ayrıcalıklı VEYA\n" +" \t|\tbit seviyesinde VEYA\n" +" \t&&\t\tmantıksal VE\n" +" \t||\t\tmantıksal VEYA\n" +" \tifade ? ifade : ifade\n" +" \t\t\tkoÅŸullu üç terimlisi\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\tatamalar\n" +" \n" " Kabuk deÄŸiÅŸkenleri terim olarak kullanılabilir. İfade içinde deÄŸiÅŸken\n" " ismi deÄŸeriyle deÄŸiÅŸtirilir (sabit geniÅŸlikli tamsayıya zorlanır).\n" " Bir kabuk deÄŸiÅŸkeni ifade içinde kullanılırken tamsayı niteliÄŸinin\n" " etkinleÅŸtirilmesini gerektirmez.\n" -"\n" +" \n" " İşleçler öncelik sırasına göre deÄŸerlendirilir. Parantez içine alınmış\n" " alt ifadeler öncelikle deÄŸerlendirilir. Bu nedenle parantez içine alma\n" " iÅŸleçlerin önceliklerini arttırmak amacıyla kullanılabilir.\n" -"\n" +" \n" +" Çıktı Durumu:\n" " Son ifade'nin sonucu 0 ise dönüş durumu 1 dir, aksi takdirde 0 dır." -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3583,27 +3821,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3613,7 +3852,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3624,8 +3863,16 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" +"Bir kabuk fonksiyonundan dön.\n" +" \n" +" Bir fonksiyon veya kaynak betiÄŸinin N ile belirtilen dönüş deÄŸeri ile\n" +" çıkmasına neden olur. N girilmezse, dönüş durumu fonksiyon veya\n" +" betikte çalıştırılmış en son komutun dönüş durumudur.\n" +" \n" +" Çıkış Durumu:\n" +" N veya kabul bir fonksiyon ya da betik çalıştırmıyorsa baÅŸarısız döner." -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3694,7 +3941,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3710,7 +3958,12 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" -"\rset [--abefhkmnptuvxBCHP] [-o seçenek] [arg ...]\n" +"Kabuk seçenekleri ve konumsal parametrelerin deÄŸerlerini ata veya kaldır\n" +" \n" +" Kabuk nitelikleri veya konumsal parametre deÄŸerlerini deÄŸiÅŸtir veya\n" +" kabuk deÄŸiÅŸkenlerinin isim ve deÄŸerlerini görüntüle.\n" +" \n" +" Seçenekler:\n" " -a Müteakip komutların ortamına aktarılmak üzere deÄŸiÅŸtirilen veya\n" " oluÅŸturulan iÅŸlev ve deÄŸiÅŸkenleri imler.\n" " -b Sonlandırılan artalan iÅŸlerin durumunun anında raporlanmasını " @@ -3789,8 +4042,10 @@ msgstr "" " kabuklarda öntanımlı olarak etkindir.\n" " -P VerildiÄŸinde, örneÄŸin çalışılan dizini deÄŸiÅŸtirmek için cd gibi bir\n" " komut sembolik baÄŸları izlemez.\n" -" -T Etkinse DEBUG ve RETURN üstündeki bir tuzak kabuk iÅŸlevlerince\n" +" -T Etkinse DEBUG üstündeki bir tuzak kabuk iÅŸlevlerince\n" " miras alınır.\n" +" -- Geri kalan argümanları konumsal parametrelere ata. EÄŸer kalan\n" +" argüman yoksa, konumsal parametrelerin ataması kaldırılır.\n" " - Seçeneklerin sonunu belirtir. Kalan tüm argümanlar konumsal\n" " parametrelere ayarlanır. -x ve -v seçenekleri kapatılır.\n" "\n" @@ -3799,9 +4054,11 @@ msgstr "" " kullanılabilir. Seçeneklerin mevcut listesi $- içinde bulunabilir.\n" " Kalan N argüman konumsal parametrelerdir ve $1, $2, ... $N ÅŸeklinde\n" " atanır. Özel parametre # ise N'e ayarlanır. Hiç argüman verilmezse,\n" -" tüm kabuk deÄŸiÅŸkenleri basılır." +" tüm kabuk deÄŸiÅŸkenleri basılır. \n" +" Çıktı Durumu:\n" +" Geçersiz seçenek belirtilmediÄŸi sürece baÅŸarılı döner." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3811,7 +4068,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3823,7 +4080,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3842,7 +4099,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3854,9 +4111,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3864,7 +4120,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3875,7 +4131,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3902,7 +4158,7 @@ msgstr "" " DOSYAİSMİnde çalıştırılan son komutun durumunu döndürür. DOSYAİSMİ\n" " okunamazsa baÅŸarısız döner." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3916,7 +4172,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1248 +#: builtins.c:1254 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -3981,9 +4237,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3999,53 +4255,50 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" -"\rtest [İFADE]\n" -"[ [İFADE] ]\n" +"KoÅŸullu ifade deÄŸerlendir.\n" +" \n" " İFADEnin deÄŸerlendirilmesine baÄŸlı olarak 0 (doÄŸru) veya 1 (yanlış)\n" " durumu ile çıkar. İfadeler tek terimli ya da iki terimli olabilir.\n" " Tek terimli ifadeler çoÄŸunlukla bir dosyanın durumunu saptamakta\n" " kullanılır. Dizge iÅŸleçleri ve sayısal karşılaÅŸtırma iÅŸleçleri de\n" " vardır.\n" -"\n" +" \n" " Dosya iÅŸleçleri:\n" -"\n" -" -a DOSYA DOSYA varsa doÄŸrudur.\n" -" -b DOSYA DOSYA varsa ve bloka özelse doÄŸrudur.\n" -" -c DOSYA DOSYA varsa ve karaktere özelse doÄŸrudur.\n" -" -d DOSYA DOSYA varsa ve bir dizinse doÄŸrudur.\n" -" -e DOSYA DOSYA varsa doÄŸrudur.\n" -" -f DOSYA DOSYA varsa ve normal bir dosyaysa doÄŸrudur.\n" -" -g DOSYA DOSYA varsa ve grup kimliÄŸi biti 1 ise doÄŸrudur.\n" -" -h DOSYA DOSYA varsa ve bir sembolik baÄŸ ise doÄŸrudur.\n" -" -L DOSYA DOSYA varsa ve bir sembolik baÄŸ ise doÄŸrudur.\n" -" -k DOSYA DOSYA dosya varsa ve yapışkan biti 1 ise doÄŸrudur.\n" -" -p DOSYA DOSYA varsa ve bir isimli boru (FIFO) ise doÄŸrudur.\n" -" -r DOSYA DOSYA varsa ve okuyabiliyorsanız doÄŸrudur.\n" -" -s DOSYA DOSYA varsa ve uzunluÄŸu sıfırdan büyükse doÄŸrudur.\n" -" -S DOSYA DOSYA varsa ve bir soketse doÄŸrudur.\n" -" -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" -" -w DOSYA DOSYA dosya varsa ve yazabiliyorsanı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" +" -a DOSYA DOSYA varsa doÄŸrudur.\n" +" -b DOSYA DOSYA varsa ve bloka özelse doÄŸrudur.\n" +" -c DOSYA DOSYA varsa ve karaktere özelse doÄŸrudur.\n" +" -d DOSYA DOSYA varsa ve bir dizinse doÄŸrudur.\n" +" -e DOSYA DOSYA varsa doÄŸrudur.\n" +" -f DOSYA DOSYA varsa ve normal bir dosyaysa doÄŸrudur.\n" +" -g DOSYA DOSYA varsa ve grup kimliÄŸi biti 1 ise doÄŸrudur.\n" +" -h DOSYA DOSYA varsa ve bir sembolik baÄŸ ise doÄŸrudur.\n" +" -L DOSYA DOSYA varsa ve bir sembolik baÄŸ ise doÄŸrudur.\n" +" -k DOSYA DOSYA dosya varsa ve yapışkan biti 1 ise doÄŸrudur.\n" +" -p DOSYA DOSYA varsa ve bir isimli boru (FIFO) ise doÄŸrudur.\n" +" -r DOSYA DOSYA varsa ve okuyabiliyorsanız doÄŸrudur.\n" +" -s DOSYA DOSYA varsa ve uzunluÄŸu sıfırdan büyükse doÄŸrudur.\n" +" -S DOSYA DOSYA varsa ve bir soketse doÄŸrudur.\n" +" -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" +" -w DOSYA DOSYA dosya varsa ve yazabiliyorsanı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" " doÄŸrudur.\n" -"\n" -" DOSYA1 -nt DOSYA2 dosya1, dosya2'den deÄŸiÅŸiklik tarihine göre\n" +" \n" +" DOSYA1 -nt DOSYA2 dosya1, dosya2'den deÄŸiÅŸiklik tarihine göre\n" " daha yeni ise ya da dosya1 mevcutken dosya2 yoksa\n" " doÄŸrudur.\n" -"\n" +" \n" " DOSYA1 -ot DOSYA2 dosya1, dosya2 den daha eski ise ya da dosya2\n" " mevcutken dosya1 yoksa doÄŸrudur.\n" -"\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" +" \n" " Dizge iÅŸleçleri:\n" " \n" " -z DİZGE dizge uzunluÄŸu sıfırsa doÄŸrudur.\n" @@ -4059,24 +4312,28 @@ msgstr "" " önceyse doÄŸrudur.\n" " DİZGE1 > DİZGE2 dizge1 yerele göre sıralamada dizge2'den\n" " sonraysa doÄŸrudur.\n" -"\n" +" \n" " DiÄŸer iÅŸleçler:\n" -"\n" +" \n" " -o SEÇENEK Kabuk seçeneÄŸi SEÇENEK etkinse doÄŸrudur.\n" " ! İFADE İFADE yanlışsa doÄŸrudur.\n" " İFADE1 -a İFADE2 İFADE1 ve İFADE2 her ikisi de doÄŸruysa doÄŸrudur.\n" " İFADE1 -o İFADE2 İFADE1 veya İFADE2 doÄŸruysa doÄŸrudur.\n" -"\n" +" \n" " arg1 İM arg2 Aritmetik sınamalar. İM bunlardan biri " "olmalıdır:\n" " -eq, -ne, -lt, -le, -gt veya -ge.\n" -"\n" +" \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." +" ifadenin sonucu doÄŸrudur. \n" +" Çıktı Durumu:\n" +" EÄŸer İFADE true olursa baÅŸarılı, İFADE false ile sonuçlanırsa veya " +"geçersiz\n" +" argümanda baÅŸarısız döner." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4088,7 +4345,7 @@ msgstr "" " \"test\" yerleÅŸiÄŸi ile aynıdır, fakat son argüman açan `[' ile eÅŸleÅŸen\n" " kapatan `]' olmak zorundadır." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4099,8 +4356,15 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"İşleme süresini görüntüle.\n" +" \n" +" Kabuk ve tüm alt süreçleri için kümülatif kullanıcı ve sistem süresini\n" +" yazdırır.\n" +" \n" +" Çıktı Durumu:\n" +" Her zaman baÅŸarılı döner." -#: builtins.c:1350 +#: builtins.c:1357 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4161,7 +4425,7 @@ msgstr "" " numaraları ile birlikte listelemesini saÄŸlar. KabuÄŸa bir sinyal\n" " göndermek isterseniz \"kill -SİGNAL $$\" sözdizimini kullanabilirsiniz." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4170,18 +4434,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4191,7 +4455,8 @@ msgid "" "found." msgstr "" -#: builtins.c:1417 +#: builtins.c:1424 +#, fuzzy msgid "" "Modify shell resource limits.\n" " \n" @@ -4209,6 +4474,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4220,7 +4486,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4279,7 +4546,7 @@ msgstr "" " Geçersiz bir seçenek girilmediÄŸi veya bir hata oluÅŸmadığı takdirde " "baÅŸarılı döner." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4297,7 +4564,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4332,7 +4599,7 @@ msgstr "" "verilmiÅŸse\n" " baÅŸarısız olur." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4359,7 +4626,7 @@ msgstr "" "verilmiÅŸse\n" " baÅŸarısız olur." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4383,7 +4650,7 @@ msgstr "" " Çıkış Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4414,7 +4681,7 @@ msgstr "" " Çıkış Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4457,8 +4724,7 @@ msgstr "" " Çıktı Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1574 -#, fuzzy +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4473,15 +4739,21 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" -"\rtime [-p] [!] KOMUT1 [| KOMUT2 ...]\n" -" Bir boruhattındaki her komut bir kanal ile sonrakine baÄŸlıdır. Böylece\n" -" her komut bir önceki komutun çıktısını okur. time boruhattındaki iÅŸ\n" -" sonuçlanınca geçen gerçek zaman, kullanıcı ve sistem zamanını basar.\n" -" Dönüş durumu boruhattının dönüş durumudur. -p seçeneÄŸi zaman\n" -" istatistiklerinin biraz farklı bir biçimde basılmasını saÄŸlar; çıktı\n" -" biçimi olarak TIMEFORMAT deÄŸiÅŸkeninin deÄŸerini kullanır." +"Veriyolu çalıştırması tarafından harcanan zamanı bildir.\n" +" \n" +" VERİYOLUnu çalıştır ve sonlandığında kullanıcı iÅŸlemci zamanı ile " +"sistem\n" +" iÅŸlemci zamanını içeren gerçek zamanın bir özetini yazdır.\n" +" \n" +" Seçenekler:\n" +" -p\ttaşınabilir Posix biçiminde zaman özetini yaz\n" +" \n" +" ZAMANBİÇİMİ deÄŸiÅŸkeninin deÄŸeri çıktı biçimi olarak kullanılır.\n" +" \n" +" Çıktı Durumu:\n" +" VERİYOLU döndürme deÄŸerini döndürür." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4499,7 +4771,7 @@ msgstr "" " Çıkış Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1603 +#: builtins.c:1612 #, fuzzy msgid "" "Execute commands based on conditional.\n" @@ -4534,8 +4806,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:1620 -#, fuzzy +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4545,11 +4816,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"\rwhile KOMUTlar; do KOMUTlar; done\n" -" `while KOMUTlar; listesinin çıkış durumu sıfır olduÄŸu sürece\n" -" `do KOMUTlar;' listesi çalıştırılır." +"Testler baÅŸarılı olduÄŸu sürece komutları çalıştırır.\n" +" \n" +" KOMUTLARı, `while' KOMUTLARı sıfır çıktı durumuna sahip oluncaya\n" +" kadar geniÅŸlet ve çalıştır.\n" +" \n" +" Çıktı Durumu:\n" +" En son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4567,7 +4842,7 @@ msgstr "" " Çıktı Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1644 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4577,10 +4852,10 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4594,7 +4869,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4612,7 +4887,7 @@ msgstr "" " Çıktı Durumu:\n" " Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4636,7 +4911,7 @@ msgstr "" " Çıktı Durumu:\n" " Devam edilen görevin durumunu döndürür." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4654,7 +4929,7 @@ msgstr "" " Çıktı Durumu:\n" " İFADE 0 olursa 1; aksi takdirde 0 döndürür." -#: builtins.c:1711 +#: builtins.c:1720 #, fuzzy msgid "" "Execute conditional command.\n" @@ -4697,7 +4972,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:1737 +#: builtins.c:1746 #, fuzzy msgid "" "Common shell variable names and usage.\n" @@ -4818,7 +5093,7 @@ msgstr "" " gerektiÄŸine karar vermek için kullanılan kalıpların\n" " ikinokta imi ayraçlı listesi.\n" -#: builtins.c:1794 +#: builtins.c:1803 #, fuzzy msgid "" "Add directories to stack.\n" @@ -4829,19 +5104,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -4870,7 +5145,7 @@ msgstr "" "\n" " Dizin yığıtını `dirs' komutuyla görebilirsiniz." -#: builtins.c:1828 +#: builtins.c:1837 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -4880,16 +5155,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -4911,7 +5186,7 @@ msgstr "" " engeller, böylece sadece yığıt deÄŸiÅŸtirilmiÅŸ olur. \n" " Dizin yığıtını `dirs' komutuyla görebilirsiniz." -#: builtins.c:1858 +#: builtins.c:1867 #, fuzzy msgid "" "Display directory stack.\n" @@ -4923,19 +5198,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -4957,7 +5232,7 @@ 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:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -4978,7 +5253,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1908 +#: builtins.c:1919 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -4996,15 +5271,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5029,7 +5304,7 @@ 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:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5042,11 +5317,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5056,7 +5331,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5078,7 +5353,7 @@ msgstr "" " Geçersiz bir seçenek girilmediÄŸi veya bir hata oluÅŸmadığı takdirde " "baÅŸarılı döner." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5109,7 +5384,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5120,20 +5395,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5150,7 +5426,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5160,6 +5436,25 @@ msgstr "" " \n" " `mapfile' ile eÅŸanlamlıdır." +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Telif Hakkı (C) 2013 Özgür Yazılım Vakfı A.Åž." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Åž." + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "Telif Hakkı (C) 2009 Free Software Foundation, Inc.\n" @@ -5289,9 +5584,6 @@ msgstr "" #~ msgid "removes the top directory from the stack, and cd's to the new" #~ msgstr "yığıtın en üstündeki dizini yığıttan kaldırır ve" -#~ msgid "top directory." -#~ msgstr "yığıtın tepesinde kalan dizine geçer." - #~ msgid "+N removes the Nth entry counting from the left of the list" #~ msgstr "+N `dirs' tarafından gösterilen listenin solundan saymaya" diff --git a/po/uk.gmo b/po/uk.gmo index f67756d2775e7e5c2b0c13d41ce98cd75ea5965e..466af2cdc9cea8f2c6e897d01ca24cbeb1282beb 100644 GIT binary patch delta 16786 zcmai)2VfON*RW^zhLR8r4yFvZG_x=8r!!u`QcIM2PGiUcMUOZOu)yv_& z3spnbDy}xVQgz_#Rh0UPa&`l$RVuZGQcYnRtO~PXC+LF>;Q<&1FTqOiIxGus!5F9~ zDHRE0VLjLuM!}J=I>V?O3ZYaifXuBPayqPcxEsnqCmj7c6hmAsm8uJ)U}cyL4cG&U z0UlTlX2TkAE{ukcz$S1fY{C5MV+tLqsMyM0QD2yXo(pB77ob>tz~N~q16+gkVYSxw z3fn^QU_U5^O@jPU3;D}{`(R^u&Y_-+0nD%Br2xl3T%wjZTo0S0?}Fli%TOkCwXqFq z46C4bhBe_JC@Y)<#en-^HTX1?`*u6}hcE*DYv_}Xe^QVe>$J5EXb;7pfsQ`M;Tl+# z`pqyA9(3xzg0gb0ojq_2tcBjf(fdN#`#WI`I15I?)$Q=VSiXshSojK*fj))t@GmGU zk8iJ3ZP*7!!E`8w%z`!GLr_-wER+T9g$8^d%DBHmF{pM2rJBKHDEGTN;D3XHmkJqp zEvyJ%g2b8H2W1Psg5sgt1cubNg|ecFPzG8AB?#9!`erEO9fV@wd$1O~4r{`)1YB)c z&qqNfOo3u~A1DK7LJ5|IPW=`rTXGCmhqoM7;Vg=$;-DPAAyDoc4~a9i2-bo7VKn>z zitB%b6`(J)vwcH#C_&K)%0L647LCu4b8umN&7oh~<&rk*|-$kj9Ci^{^wDU33vChJG=qI(a%8X_$ie9@QuS?;csO~EWPbL|D!*~ zkb$ZUU~>AM7^T!rUWEKn+h`kW$r!U8CJe=qdXz7&3su4b~|82SU; z$BI5-t|zH}Y?)HinJ48TrGBAK?O4GCOt^WaQs1F(T}5Eg;i=X3K;_peRYdzO_!69I z64^`?^C$zM|NOX8<+v}G(PzVH@GSfRE`~?f+bMe3Q+Dv(4L@N8)1gnIaP+fwG#0|D z=*wYOxB(u6m!QPJmgnpNUWanu$IyVkLfNufo9xuv7>Y*{p=@1eC|lDT$}t`6Fk=(@ zFCAu3Q5MdJ1K|=l4-b3*D`V-Mo0VEojv(C1`DMkw?P5?E7vQAO-?PV#q2sU{{m#LK zw8y++Z`HF$@EjIwhJ)!p>L_!TQR?}l_+Nr7HV9>J;iIs_X*yGX8b7|rKy%(_l^8Va zL%aj~pSQQ-+y#5<7Js7DD*7$EL{xKM%x5+|P-5vN_$Iu0nK5X8`@;z4SEDFM z2Ac$9;4Ih(J_;Mc!!QnBhGJlNP1_>|tcBhI%4rw|<^Eh43m<}Y;5HZyk3%^nSD~Dy zpI{vGtMFQy^-xKM&Cxwj23i9%#_cxTDX2vf|ASOC0_RC3x!@cC3sreD)q?P$4Us=WrvGmA?UH4^^za$918B+8)Zp zW8fON6g~@$`nDl&LRsN8C^1yEfxY+bpy)lI7@Xy!ARQlq<=`&Z0v?321z$sPWu1na z_1y31a0rwjnh3@9bD*4-Wl&;aGpr5|K?&0LU^Dm)6i-GsvUOh?1*yn|oJX|=%ETLC zDm(=xh^jTVS5OB^0*Qw*U>7J8PJyx_A54WCp%``2;*r%i)Y>Pe{4u-|B2@Hw1CrX48J9j`i4PGc7cmURi>tR>; zDjY87UvFx690kQ?lc42N*dBcu90}imVo03?+u-g{qIn9e0hdBK-y5MAv>i&u`w)s} zuS4=U;-OO_J?_p-^0Q50t$sfMW4lC@J&^6iM?qFl zr;W`xCLDmn-KwgI%U=sSfPz?GD%0lAX*<05d8t7f2 zEZjGqg1B}8lw-0Uii`I;d=ttFPD9D%zd`X(`}Vd=he0{MlO26Elr4P$ieYa;G2{m* zF;usM9c!H+vEk!4m~Gi~C@x;$@L?zxz5vC*<4}U^DwKyw*%W)=WGH)kH?u7QxKO2pge@WgkpJQC!1-oBYG~B47VA|@p>0Zbf1NC z?5;xzuJF$Gsb~%*QT2whusKkoeif8?o`Tl-KSn_Y_y)=imAcq_))Q7n9|UCu_c(kA z%0&B}_K%@#!PgF}ceOp$8OnrX;V&9n1jnOKNVB)%HRzi_#itbRfIYj}d%qG&@IB$^ zSD+lLAE6w_!VXFl&!cM$}w68=fEJ8gf*zQrgGsv2a2gy3x5G?Wsh_5X!Xh{Xz76wW?fy0& zgc3u)IgA^iS-%U0!*0|+=I9rE6r^LLf%dr_3J0Svfa1FMplnUmL3Y1!P+a{Wl<58l z%JB>xY;Rc-6oY3$c?j)$l-STcqm)29;V3oKTkoTyT%AR`g=mz zg4s}l@EIrud;?{mh9m7%nh)74$Ok99sUl*(9F@Ax>wHs zvlMz#5j)1Vcp{YZ`685rau&*fKS0^LdUx6xZ~~NEe;*W&ybL9SegWketFd-4w}Yvu z`B1j*Ww;z_cd;eRuU1l!E!YVq2yem`Fm0UuOK2(_i+&V}%NyTq4?GM?rdtMOFL%Hx z@C=m4ZQ4Ed<8~;N4EY$8JhKDJDLVyya;__kcV4Zac$0_FShyHE@X$+tZc2PIM61*72{DC4e!mLd6^{{G}}*VG6Xk4@Mmgy3Ao@nWLrhZ%sxu=EjDK>dqPYU%(6CT!HyKI*SNPmEB%ahs<0 z)BkKSuW)3*)w?xSOusJ!n);UZCl31T+`Rl%``v5pQ^R-)m|e_kH_=rZ%vEr9Wxv1N6k3nsU>x z>@7`gg_C@La2&9>hSF6fIu2))iWra{s;gUYDkSHqoG{(`HngXLZpFanaNUaH_hAZ# zMOD--mkx=tITbeG{#9@*+yxghP6nUEB)Gq-X^-QJs-;`e+a0FTFayeQ+zaKYbp;ym zHy8<{YwOn5Btbc*y`cnQo>RXTN=&>2J#a6ajECw)>uMAWeXt%2s>Cy=k*?P3oWI0m zUG>5hC)(=j95+OE(5>kI7G5JZj1*mcKzju`h0%VwkFLIFfE!TG|EHsLHG+n;(Y7Hb z9|bD1#|PnRCOpQcwCSw;?p$4s#KUI^pmMY)7V7GC`To~thOUB4@Y`%%9i-zipRSIe zFPW!X50`%T>*_HkItt~(Vdew4j)4v=(yh;HUp{EBxL~PmfDeAk1kb|J?B(KBYzZE? z^d#eRpSDp~A7b#~=X7<2`PHK@+c(bJp{qO$*aRz6Ut_1Po?-=YP|ow)`|Q2_5X#f> zCX@t}K#0rM+yf_LpcnQ)zj)Bz!iI-*>qloh*p2$Tpk%=HP(E&|3lyH>#sPsJoE;X;5`dF!jQ|l^)yX|!_im4-tY@3PuJ$3v)4R@RQBiW72E`eLG^`hJw}H^ z(U(IR@Ke|d#$3^@OgRKfs?LUzQXhvi;29`eGw`ZzJ*MZw4D^?w7#j7Z?SVKS1$kZ% zfbHNSC=(op&Efa3Cyc#jyL2LyOt}Ke!{j{d3!8nVtNY+IC=a0@VFNr@>AG&cxU~9O zx4sRpggLZV{6@Ea7x?a_(3Oe@pajPouo^6XL+A0x4-+^NJ^~+yH{e*f>|0$;fLEck z_xsM~({L*KO@~vyw~y(^4mMHMEznY^(P!X_E&rSOehH}0Od#MMVKtl|0XweHIIsM@K0%g zp}6kCZ@NlDzk16)ZcTr;x8g1+8SZJ=9d3go;15oF-#+Xm<->6vK4>Aez0Xlmz9d|gAx;~;cR#n$`*Qf z#wWnVP{!ZsqfnW`2T=0BRrn~ZU)g0PrUQ_Np!x;M)6W%Q8(ImqIcss|Kf^YorZQzY!~K237&OOa{X&i zVxd~ROWgx!!-?=b6oYy+by?BB8QzUvA;AvD$xx2(PKSCkmnuXb4Ew;>oB3SUTW-Zf zJ0TcQEFJ_CVUbh65lXO~f|B`~HMh_IFevX0i(vXvjd@|+5^yl??cIe zzdD@kOR^_A4`oloTDq*~cvC2Q^*of+dIQRNO>E^-8g%Kr6Hqvhyn}uUF^~_Xk?Ubr*cbX@3avBS`uDRCaJG=QyOwihN;ziM~69mN+Yhfxkfe(I?Rq{=_~J45^f%r8fzJ{{$%?sR^Ivi$a!D--z!X-c0?$j4I2 zC1;&)2`cjcm|zcmo{-L5wQQ&<+!Mk*@&M{qy8a?68zFm;A8C-iZ~c#f%b+(#KLEEP zd~cHP3n~P81&K!Fs*AXhbaZ|iTGtAvtt^ap>dMlx6TNhP^&%B}saR*x!yolqh}z8DDw+kZ9pa=U6Co&J%h;g7D7vI7K%JCen-Y5m5|bF zIEC8uxq&1*m8q~2a~+ZRE2QC0r(qc6i>dXhG#J)Fk{S@*kx?Hs=|All$%FtdHTJiUm6rAe^$_X^em5sEwN@O&r zPc^4as^gFY)HkJWJ^Tf^7b!vH`pJg%sQ%U||3=$`NM-J+Or0;)>6`@{IOXLu6e6D> z(~;Ro1UK+C-uhSW1@KSmIw5l@Z$uhXmM7apqyZw=OGrKL`;7L|YaE5<)E$FW<@?V` z3SS~MoKAcWwyq|0YD{@OS}5gK$RAEyBU1cfq81&>A@@^miws0kkaG0t;`D1o`$g&opm#)KkXMmvhzBXX204YI z(hB$u?N1|V$RFs_+ZHd~2wjO<^WXf-9X)r5H+GAC!+^Z{()aFd9xkIwG@> z?~(fuFCy2c^t}(6Y^&B=RvzUvXP9-h+IwJ?})snJtybyCdzq~3JmrxY>j+@ ztfBsAWG!+QIYZsANFx1OLb=9KzYMm9cOY_Au%Ws+I#Z~xowC#PH>9yLjaQwj$&`0e zt_UZ=cFv6tIPH(Y)lRvh!^QMzfl=SVP~ei2p!)Rq$P3hH-LQUj#Zhj5PLrx%bsQUuerEk8|c`)4Ql$X#pm+}Re0q4U-h(>?i z8UHI;|8yz~=l!Gm+QChOfbM z@G^3cvI{OnG7v2-ixe4enO9eBM?=5rn#w=HwyDT=~?beEr-Dpth&MoxMYHY`?ipD* zML9-cUQt21r})eEr?iBrMR{INhLN6^lb=_Vn_;*M3fwadcVS`H#M~TDuGh%$XL-#TMC*LnB-jTYZ zoWFaY_7PzQS7>NHSBP-YNKiDVHzqe0^(uTsBITP}-v(gQ});FP?)7!tMPXqs` zzU`|x`t7wE{`GyE-R^a~Z%tQXYN-EO-}X^XPq)`wkTs#m>%m3*@!zv9s(APvUBipV zjPBqv$5++L7C$m}rpq63&*T0L)28_&&X)}fEu54$J=d5p)9@#aPx4>vQkKQJ#}B-1 z;{R?gzA?U%Ui|xnm70HPMymg4hTngerBR9`$6jzuyHKce&z7aCA(ChXV6&iV&#^k&Sh0U#g)?fXz3cZDfcaq0& zr+c%edF*z>xMNVaVS{^iHwrw3EIFM%c}3p*BCp}iqqo~D{Rp2}Evk;({P*~7Z25aA zzi}$wm(BjjEcpd_>7K$uqi+vuuiP0KS>CL?Tzg0lCKu$mv)RQ=DM*WDpOj^hxgAi3FNsMqyTNy2n~nw!6^lbG(8}vNE#>wttMA{~t_~SxRRv z2rYHMKh|GRl$)ECJJE7gX~)9<)UnW;m!I$PW&GXK>fSfgNStA06&i&_`T5ydo{VNj z_dx>&qz&vLm5gqAJ=;?YEe?O~oYvWs z>nR{?I0X4d5j#K8=sj=*St!#x-Cf{GF*;51dh=6Sw3t49dh?07Ma}aHCbpR9VbbjU z7F~)jZ_3ij4eT{&=ztWXxZev&dNpgkp`m0Z4~dT9@^XvUyx6InHpSnvxJK-hsYRY5 zIse(&c~;^w2v^p?&e?7(erv}qO&ctoYvvbviZV!n1vy!{?(ExZ8ZM2+AMd=oVsXl= zl|%e@yxB`D@~?XHrP2dDuzR1hp~DP+zqhvBPDeN2n(m+ac1Qn~x2Ke*j;vfck<9FG z@=hy%Qm-=QLqmrT7&KzI;h*@<=TV__ahwNOKUXYc~W1zWV3@3{GnMdp0HfZ6|xZM zWAy0RzwZF+MB9t@dJK}Yr?44eTIeORB>Zwc)1}hi`@}&1!zYGTw&rB73wcr$<$C=$ zPc(=vt@DNs_2lGn#@&Xuz)f(lBi1DTw09%pjV2kMOm|VXw{*<-())^x%nWX2LTi5i z$>X*C$B)MPH@}c%(~=fBg8e{>txH_YXQB>Ysde-oI*NikrPZ zL@S>2!2)f^M<0dw&s}I;T>0Y0@Zve&bS~>Z@Lj{=Ge5?Z320$jU(M`WLCX&8te}O2 z1VSRT&vf&Ps+!NtsHWuyPFK@h6$57s?R==Yy{R@KP$fZ&4QXLa%FE$UyC?pa051*y z78Bfsle&bNU1D8z0)1O(%R{0kW@X6!G|EUZJeiq1kr6%KqJrE)Ba=Ie z3Oq)WMj7!b)?nFr?u@|6R4qv>?*!pE^Y=7ucmv0dNuB~vVn$wik@d1+1s88E=^jsp zCnGSho3<>>{G`7&)ND6EYi@qn$`x+r56~J^oRXcBn?JRn&|5TZ#^At{1GH9U$|WaG z@Oa%V%`-!_=Iz@iCUr<`nPjwVm6F^lF)2AIDQxhd#G#&PS+bJE9vrq5qg7JNHgrmC z*~VzqGNpB^grwGH$6?yN=4->WJHz|)#457(uV_l3&T#E_mszWhYd|1kwDz*g?3$&; z2TqOEiprQ<4(T<_A>*{#=E_d4DuK~%ZBH5VEss{U=`JI9Ft{stxMXh0ir|6ZE~8{_ z@K7)iEDj!`YJPA#%?C?Xs78h6ypdW>bF-#L1lmm0KGe)39`tq5t_ZVo8&`!ur7SH` zGfT3x!IgqLgS&&f7-?5-wI%a{ z`=mQ6^%#K(1}1H%VNY;J$pV8vR)@oM++Om4xuLcm70F=q5KFQ5VcPcu4+Ku;Xa`(@ zho)+ks+&(N)NYnZ92^>4ZBD(Y)eY=hq}A12iJnk%YDc}c8B>7;lwG172)w>T3y%s+ zdRn_0qM3mqo3yD~=nk2hrOXSQeqP&OJJ92})~kHnYOD4TmhLH;&kF4Mg9l}0+v&ek z+*Y#8ytD(4C(PF?nd2VNV|$pvmBH1)HT?Yq|7|l^$IC2I_BlyyEF+-a07 zlx6&DIPqNYKyx!J#AQ7EkX}8UDewqWKa4BJGQL^0v)(8+JCqs3wC(t0AEh1QMtdEW z#b!jP%c!%*kUeLU7s~3GbjR(dZmyX>Q;*6JSC%X$BL3MixTo3QtHq#w^m#z+JirhK zE&JzLJ8ZDMvM+4ep;GsVPwaiQ9}vNSc_dAb47)vZzBP0C(wWWJpkA-ne>1ZnH27qx z|70J6Ea`6#1`jjud}NVj)&cWU9apu^cze(7*$V&f0Rklp7-SE(OE|I})(~c;C-hq8 z;6r+N6&EIe7G3Kx%TJ?dYdn4W{w!->QaG&E$YyJNW7TH}Z zzE=jH3i^W^8F4K!@-*Wr(w z;xc=e(FeGsu(phTpA-Vs%IXW^>YFS_mb9P!#5Os>*d&qbMBH|B!_Ru8IcvFA$!zmE zr9Zpr<;}Ny=;5i{NIc3pc^StBaPclX6Id?bwd?=$wiWOv>L>N;3-Qh~c>XEN_s<0v z2Dhacf$>TDYn8Pr=E^R5lzFnNUcJJUL>Zk(FK%XTxL>bk-u;JOw!D>Z7UCga2Uqn# zbgEvVd=Gc=rw(E);UIuu*Z&LJJRf&B~cdK$-?(bpo=T4JSuLm zqLDmhEmh)YZ)s|^`-|ronE=9n#F+EWfs?I#cR&r~xR|H+3pEpF>OIY= zGxgWaDqFScX1`f_74yBlT7;Q1OTQ5qcdx#+LLh9BKDxY_zCs@s2&~YLN10@-$iN>j z>Wjldcd9WMMHqAT~&>KbkJN!$Q2iA6WwJsY`az7aaPsq(BYf6@zmo8}4V=Y&4 zhlC*SB~}Dk!_u%o9B3X$)1zaTNMOlHkq9GeaqK0g?AI2F7i+Y@8{J)HbqUlc*EnOW zIX6SEZeHx^df5CROEW4E)UdX`a8+wZhCF>q@a- WV0MjlC0F{_3(WAqk7He5h5irg6onfA delta 27329 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, 2009. # Maxim V. Dziumanenko , 2010. -# Yuri Chornoivan , 2011, 2013, 2014. +# Yuri Chornoivan , 2011, 2013, 2014, 2015. msgid "" msgstr "" -"Project-Id-Version: bash 4.3-rc2\n" +"Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2014-01-30 20:45+0200\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-15 21:32+0300\n" "Last-Translator: Yuri Chornoivan \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" "X-Generator: Lokalize 1.5\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "неправильний Ñ–Ð½Ð´ÐµÐºÑ Ð¼Ð°Ñиву" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: неможливо перетворити індекÑований маÑив на аÑоціативний" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: неправильний ключ аÑоціативного маÑиву" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÑ‡Ð¸Ñлових елементів неможливе" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: при означенні аÑоціативних маÑивів Ñлід вказувати ключ" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не вдалоÑÑ Ñтворити: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідне Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ " "команди" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: перший непробільний Ñимвол не Ñ” «\"»" # c-format -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "нема заключної «%c» у %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: пропущено двокрапку-роздільник" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ пам’Ñть Ð´Ð»Ñ %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ об’єм пам’Ñті Ð´Ð»Ñ %d елементів" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ об’єм пам’Ñті Ð´Ð»Ñ Â«%s»" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: некоректна назва замінника" @@ -96,45 +102,45 @@ msgstr "«%s»: некоректна назва замінника" msgid "line editing not enabled" msgstr "Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдку не ввімкнено" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: неправильна назва набору призначень клавіш" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "«%s»: не вдалоÑÑ Ð·Ð½Ñти призначеннÑ" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: невідома назва функції" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s не призначено жодної клавіші.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s можна запуÑтити за допомогою " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "кількіÑть циклів" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "має ÑÐµÐ½Ñ Ð»Ð¸ÑˆÐµ уÑередині циклів `for', `while' та `until'" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -144,300 +150,332 @@ msgstr "" " \n" " Якщо EXPR не вказано, повертає " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "змінну HOME не вÑтановлено" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "забагато аргументів" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "немає іншого каталогу" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "змінну OLDPWD не вÑтановлено" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "Ñ€Ñдок %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "попередженнÑ: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: викориÑтовуйте: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: параметр потребує аргументу" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: потрібен чиÑловий аргумент" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: не знайдено" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: неправильний параметр" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: некоректна назва параметра" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: неправильний ідентифікатор" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "неправильне віÑімкове чиÑло" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "неправильне шіÑтнадцÑткове чиÑло" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "неправильне чиÑло" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: Ñигнал вказано з помилками" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s»: не Ñ” ідентифікатором процеÑу чи завданнÑ" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: змінна призначена лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s виходить за вÑтановлені межі" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "аргумент" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s виходить за вÑтановлені межі" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: нема такого завданнÑ" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми не ввімкнене" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми не ввімкнене" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: заборонено обмеженнÑми" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "заборонено обмеженнÑми" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: не Ñ” вбудованою командою оболонки" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "помилка запиÑу: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "помилка вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² термінала: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² термінала: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ каталогу: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ неоднозначно" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "у цій верÑÑ–Ñ— не можна ÑкориÑтатиÑÑ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¾ÑŽ" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: неправильна назва дії" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: не вказано ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "попередженнÑ: можливо параметр -F працює не так, Ñк ви очікуєте" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "попередженнÑ: можливо параметр -C працює не так, Ñк ви очікуєте" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "наразі Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ñдку не виконуєтьÑÑ" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "може викориÑтовуватиÑÑ Ð»Ð¸ÑˆÐµ уÑередині функції" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: еталонна змінна не може бути маÑивом" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: не можна викориÑтовувати циклічне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñƒ змінній поÑиланнÑ" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: циклічне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: некоректна назва змінної Ð´Ð»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "`-f' не викориÑтовуєтьÑÑ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: незмінна функціÑ" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" +"%s: вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Ð´Ð»Ñ Ñкладеного маÑиву у лапках вважаєтьÑÑ Ð·Ð°Ñтарілим" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: неможливо знищити маÑив таким чином" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: неможливо перетворити аÑоціативний маÑив на індекÑований" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "динамічне Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупне" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ колективний об’єкт %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ %s у колективному об’єкті %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "" +"функцією Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ %s повернуто Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ помилки (%d): не " +"завантажено" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: завантажений не динамічно" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: не вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: це каталог" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: не Ñ” звичайним файлом" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: файл завеликий" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ бінарний файл" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "вихід\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "це не оболонка ÑеанÑу: викориÑтовуйте `exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "ЗалишилиÑÑ Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ñ– завданнÑ.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Фонові Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²Ñе ще виконуютьÑÑ.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "команду не знайдено" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "параметри Ñ–Ñторії" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ тимчаÑовий файл: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "поточне" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d запущене без контролю завдань" @@ -456,17 +494,17 @@ msgstr "%s: параметр потребує аргументу — %c\n" msgid "hashing disabled" msgstr "ÐºÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ðµ" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: в кеші нічого немає\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "влучень\tкоманда\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" @@ -474,20 +512,20 @@ msgstr[0] "Команди оболонки, що відповідають Ñло msgstr[1] "Команди оболонки, що відповідають Ñловам `" msgstr[2] "Команди оболонки, що відповідають Ñловам `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -"«%s» не відповідає жодний розділ довідки. Спробуйте `help help' чи `man -k " -"%s' або `info %s'." +"«%s» не відповідає жодний розділ довідки. Спробуйте `help help' чи `man -k %" +"s' або `info %s'." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -510,15 +548,20 @@ msgstr "" "Зірочка (*) порÑд з назвою команди означає, що команда заборонена.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "-anrw можуть зуÑтрічатиÑÑ Ð»Ð¸ÑˆÐµ один раз" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ Ñƒ Ñ–Ñторії команд" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: некоректний аргумент" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: невдалий пошук по Ñ–Ñторії команд" @@ -532,113 +575,113 @@ msgstr "%s: помилка inlib" msgid "no other options allowed with `-x'" msgstr "не можна викориÑтовувати інші параметри разом з `-x'" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументи мають бути ідентифікаторами завдань чи процеÑів" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Ðевідома помилка" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "очікувавÑÑ Ð²Ð¸Ñ€Ð°Ð·" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: не Ñ” індекÑованим маÑивом" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: неправильно вказаний деÑкриптор файла" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: неправильний деÑкриптор файла: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: неправильна кількіÑть Ñ€Ñдків" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: неправильний початковий індекÑ" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: неправильний крок виклику функції" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° змінної-маÑиву" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "змінні-маÑиви не підтримуютьÑÑ" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "«%s»: пропущено Ñимвол у шаблоні" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: помилкове Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ чаÑу" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: помилковий Ñимвол у шаблоні" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "попередженнÑ: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "проблема з обробкою форматуваннÑ: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "пропущено шіÑтнадцÑткову цифру у \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "пропущено цифру Unicode у \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "немає іншого каталогу" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: некоректний аргумент" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "<немає поточного каталогу>" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "Ñтек каталогів порожній" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "рівень Ñтеку каталогів" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -680,7 +723,7 @@ msgstr "" " -N\tПоказує N-ний з ÐºÑ–Ð½Ñ†Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ у ÑпиÑку, що виводитьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ\n" "\tdirs без аргументів, відлік починаєтьÑÑ Ð· нулÑ." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -726,7 +769,7 @@ msgstr "" " \n" " Вбудована команда `dirs' показує Ñтек каталогів." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -767,146 +810,156 @@ msgstr "" " \n" " Вбудована команда `dirs' показує Ñтек каталогів." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: некоректне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу очікуваннÑ" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "помилка читаннÑ: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "" "`return' працює лише у функції чи Ñкрипті, запущеному за допомогою `source'" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "не можна одночаÑно знищити Ñ– функцію Ñ– змінну" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸: %s лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: не Ñ” маÑивом" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: не Ñ” функцією" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: не вдалоÑÑ ÐµÐºÑпортувати" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "кількіÑть зÑувів" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "не можна одночаÑно вÑтановлювати й ÑкаÑовувати параметри оболонки" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: неправильна назва параметра оболонки" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "потрібна назва файла" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: файл не знайдено" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "не вдалоÑÑ Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½Ð¸Ñ‚Ð¸" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "не можна призупинити оболонку ÑеанÑу" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s Ñ” пÑевдонімом до «%s»\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s — це ключове Ñлово оболонки\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s Ñ” функцією\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s Ñ” Ñпеціальною вбудованою командою оболонки\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s Ñ” вбудованою командою оболонки\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s — це %s\n" # I know the difference between hash and cache, but here, # I think, this is more suitable... -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s знаходитьÑÑ Ð² кеші (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: помилковий аргумент обмеженнÑ" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "«%c»: неправильна команда" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ обмеженнÑ: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "віÑімкове чиÑло" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "«%c»: помилковий оператор у Ñимвольному режимі" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format 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:348 error.c:350 error.c:352 msgid " line " msgstr " Ñ€Ñдок " @@ -920,82 +973,103 @@ msgstr "оÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: %s\n" msgid "Aborting..." msgstr "ПрипиненнÑ..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "ІÐФОРМÐЦІЯ: " + +#: error.c:463 msgid "unknown command error" msgstr "невідома помилка команди" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "неправильний тип команди" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "неправильний з’єднувальний оператор" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "неправильний перехід" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: неозначена змінна" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aÑ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð²Ð¾Ð´Ñƒ вичерпано: автоматичний вихід\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÑпрÑмувати /dev/null на Ñтандартний ввід: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: помилковий Ñимвол шаблону" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "помилка каналу" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: перевищено макÑимальний рівень вкладеноÑті eval (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: перевищено макÑимальний рівень вкладеноÑті джерела (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: перевищено макÑимальний рівень вкладеноÑті функцій (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: обмеженнÑ: не можна вказувати `/' у назві команди" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: команду не знайдено" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: неправильний інтерпретатор" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ бінарний файл: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "%s Ñ” Ñпеціальною вбудованою командою оболонки" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не вдалоÑÑ Ñтворити копію файлового деÑкриптору %d у %d" @@ -1040,37 +1114,37 @@ msgstr "пре-інкремент чи пре-декремент потребу msgid "missing `)'" msgstr "відÑÑƒÑ‚Ð½Ñ `)'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "ÑинтакÑична помилка: очікувавÑÑ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "ÑинтакÑична помилка: помилковий арифметичний оператор" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (позначка помилки \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "некоректна арифметична оÑнова" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "завелике Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ñнови" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: помилка у виразі\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ доÑтуп до каталогів вищого рівнÑ" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ²Ñтановити режим без затримки файлового деÑкриптору %d" @@ -1087,150 +1161,150 @@ msgstr "" msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ файлового деÑкриптору %d вже Ñ–Ñнує буфер" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" "ідентифікатор відгалуженого процеÑу %d знайдено у поточному завданні %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ð¾Ð³Ð¾ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d, що має групу процеÑів %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: Ð¿Ñ€Ð¾Ñ†ÐµÑ %5ld (%s) у the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" "add_process: ідентифікатор процеÑу %5ld (%s) вказує на його працездатніÑть" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ідентифікатор процеÑу не Ñ–Ñнує" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Завершено" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Зупинено" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Зупинено(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Працює" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Зроблено(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Вихід %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Ðевідомий Ñтан" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(збережено знімок оперативної пам’Ñті)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (РД: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "зміна групи дочірнього процеÑу (%ld на %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: Ð¿Ñ€Ð¾Ñ†ÐµÑ %ld не Ñ” відгалуженим від цієї оболонки" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ðема запиÑу Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу %ld" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d зупинене" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ð¾ÑÑ" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d вже працює в фоні" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: увімкнути WNOHANG, щоб уникнути неÑкінченного блокуваннÑ" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: Ñ€Ñдок %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (збережено знімок оперативної пам’Ñті)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(тепер РД: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: помилка getpgrp" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: алгоритм реалізації Ñ€Ñдків" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не вдалоÑÑ Ð²Ñтановити групу процеÑу Ð´Ð»Ñ Ñ‚ÐµÑ€Ð¼Ñ–Ð½Ð°Ð»Ð° (%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "Ñ†Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ° не може керувати завданнÑми" @@ -1288,17 +1362,17 @@ msgstr "" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: розмір у запиÑах на початку та в кінці блоку відрізнÑєтьÑÑ" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: таблицю Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð¾ FIND_ALLOC?\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p вже позначений Ñк виділений у таблиці?\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p вже позначений Ñк вільний у таблиці?\n" @@ -1322,7 +1396,7 @@ msgstr "%s: неправильна Ñлужба" msgid "%s: bad network path specification" msgstr "%s: неправильно вказаний мережевий шлÑÑ…" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "мережеві операції не підтримуютьÑÑ" @@ -1359,226 +1433,261 @@ msgstr "Ðова пошта у $_" msgid "The mail in %s has been read\n" msgstr "Пошту у %s прочитано\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "ÑинтакÑична помилка: потрібен арифметичний вираз" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "ÑинтакÑична помилка: неочікувана `;'" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "ÑинтакÑична помилка: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: неправильний тип інÑтрукції %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document з Ñ€Ñдка %d закінчено кінцем файла (очікувалоÑÑ Â«%s»)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: інÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ð¿ÐµÑ€ÐµÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ `%d' поза межами" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "перевищено макÑимальну можливу кількіÑть here-document" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "файл ÑкінчивÑÑ Ñ€Ð°Ð½Ñ–ÑˆÐµ, ніж було знайдено відповідний «%c»" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "файл ÑкінчивÑÑ Ñ€Ð°Ð½Ñ–ÑˆÐµ, ніж було знайдено `]]'" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "ÑинтакÑична помилка в умовному виразі: неочікувана лекÑема «%s»" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "ÑинтакÑична помилка в умовному виразі" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочікувана лекÑема «%s», очікувалаÑÑ `)'" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "очікувалаÑÑ `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочікуваний аргумент унарного умовного оператора «%s»" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "неочікуваний аргумент унарного умовного оператора" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочікувана лекÑема «%s», очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ умовний оператор" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ умовний оператор" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочікуваний аргумент бінарного умовного оператора «%s»" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "неочікуваний аргумент бінарного умовного оператора" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочікувана лекÑема «%c» в умовній команді" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочікувана лекÑема «%s» в умовній команді" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочікувана лекÑема %d в умовній команді" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "ÑинтакÑична помилка коло неочікуваної лекÑеми «%s»" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "ÑинтакÑична помилка коло «%s»" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "ÑинтакÑична помилка: раптово ÑкінчивÑÑ Ñ„Ð°Ð¹Ð»" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "ÑинтакÑична помилка" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "ВикориÑтовуйте \"%s\", щоб вийти з оболонки.\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "файл ÑкінчивÑÑ, перш ніж було знайдено відповідну `)'" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "завершеннÑ: функцію «%s» не знайдено" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: неправильний з’єднувальний оператор `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: некоректний деÑкриптор файла" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: нульовий вказівник на файл" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -"деÑкриптор файла xtrace (%d) не дорівнює номеру файла у вказівнику xtrace " -"(%d)" +"деÑкриптор файла xtrace (%d) не дорівнює номеру файла у вказівнику xtrace (%" +"d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: неправильний Ñимвол шаблону" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "деÑкриптор файла поза можливими межами" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: неоднозначне переÑпрÑмуваннÑ" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: заборонено перезапиÑувати Ñ–Ñнуючі файли" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: обмеженнÑ: переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ заборонене" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не вдалоÑÑ Ñтворити тимчаÑовий файл Ð´Ð»Ñ here-document: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не вдалоÑÑ Ð½Ð°Ð´Ð°Ñ‚Ð¸ змінній Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑкриптора файла" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port не підтримуєтьÑÑ" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "помилка переÑпрÑмуваннÑ: не вдалоÑÑ Ñтворити копію деÑкриптора файла" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ /tmp, будь лаÑка Ñтворіть його!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp має бути чинною назвою каталогу" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: помилковий параметр" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "не вдалоÑÑ Ð²Ñтановити uid %d: ефективним Ñ” uid %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "не вдалоÑÑ Ð²Ñтановити gid %d: ефективним Ñ” gid %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: це каталог" + +#: shell.c:1777 msgid "I have no name!" msgstr "У мене нема назви!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, верÑÑ–Ñ %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1587,44 +1696,56 @@ msgstr "" "ВикориÑтовуйте:\t%s [довгий параметр GNU] [параметр] ...\n" "\t%s [довгий параметр GNU] [параметр] файл_Ñценарію ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Довгі параметри GNU:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Параметри оболонки:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD чи -c команда чи -O параметр_shopt\t\t(тільки на початку)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s чи -o параметр\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Введіть `%s -c \"help set\"', щоб отримати більше інформації про параметри " "оболонки.\n" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Введіть `%s -c help', щоб отримати більше інформації про вбудовані команди " "оболонки.\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Щоб повідомити про помилку в програмі, викориÑтовуйте команду `bashbug'.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка bash: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Загальна довідкова Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ñ‰Ð¾Ð´Ð¾ викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ " +"GNU: \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: некоректна операціÑ" @@ -1798,79 +1919,94 @@ msgstr "Ðевідомий Ñигнал â„–" msgid "Unknown Signal #%d" msgstr "Ðевідомий Ñигнал â„–%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "неправильна заміна: немає заключної «%s» у %s" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: неможливо означити елемент маÑиву ÑпиÑком" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "не вдалоÑÑ Ñтворити канал Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "не вдалоÑÑ Ñтворити дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ іменований канал %s Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ іменований канал %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ іменований канал %s Ñк fd %d" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "неправильна заміна: немає заключної \"`\" у %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "не вдалоÑÑ Ñтворити канал Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "не вдалоÑÑ Ñтворити дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: не вдалоÑÑ Ñтворити копію каналу із файловим " "деÑкриптором 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: некоректна назва змінної Ð´Ð»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: параметр нульової довжини чи не вказаний" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: підрÑдок коротший за 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: неправильна заміна" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: некоректне непрÑме розгортаннÑ" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: некоректна назва змінної" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: параметр нульової довжини чи не вказаний" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: підрÑдок коротший за 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не можна призначити таким чином" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1878,12 +2014,12 @@ msgstr "" "у наÑтупних верÑÑ–ÑÑ… оболонки буде виконуватиÑÑ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð¼Ñ–Ð½Ð¸ " "арифметичних виразів" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "неправильна заміна: немає заключної \"`\" у %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "нема відповідника: %s" @@ -1897,39 +2033,39 @@ msgstr "очікувавÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚" msgid "%s: integer expression expected" msgstr "%s: очікувавÑÑ Ñ‡Ð¸Ñловий вираз" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "очікувалаÑÑ `)'" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "очікувалаÑÑ `)', отримано %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: очікувавÑÑ ÑƒÐ½Ð°Ñ€Ð½Ð¸Ð¹ оператор" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ оператор" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "відÑÑƒÑ‚Ð½Ñ `]'" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "неправильний номер Ñигналу" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: неправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ trap_list[%d]: %p" -#: trap.c:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1937,86 +2073,87 @@ msgstr "" "run_pending_traps: обробник Ñигналу Ñ” SIG_DFL, %d (%s) повторно надÑилаєтьÑÑ " "Ñобі" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: неправильний Ñигнал %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "помилка Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— «%s»" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "рівень оболонки (%d) занадто виÑокий, перевÑтановлено у 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: циклічне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: немає контекÑту функції у поточній облаÑті" -#: variables.c:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: змінною не може бути значеннÑ, Ñке приймають інші змінні" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: некоректна назва змінної Ð´Ð»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: немає контекÑту функції у поточній облаÑті" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s має нульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ñдка екÑпортуваннÑ" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "Помилковий Ñимвол %d у Ñ€Ñдку екÑпорту Ð´Ð»Ñ %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "немає `=' у Ñ€Ñдку екÑпорту Ð´Ð»Ñ %s" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: перший елемент shell_variables не Ñ” контекÑтом функції" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: немає контекÑту global_variables" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: перший елемент shell_variables не Ñ” тимчаÑовим оточеннÑм виконаннÑ" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ ФÐЙЛ" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑкриптора файла траÑуваннÑ" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑуміÑноÑті не належить припуÑтимому діапазону значень" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "© Free Software Foundation, Inc., 2013" +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "© Free Software Foundation, Inc., 2015" #: version.c:47 version2.c:47 msgid "" @@ -2041,10 +2178,6 @@ msgstr "" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Ðе надаєтьÑÑ ÐІЯКИХ ГÐРÐÐТІЙ у межах, передбачених законом." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "© Free Software Foundation, Inc., 2012" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2065,15 +2198,15 @@ msgstr "%s: %s:%d: не вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %lu байтів (вид msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %lu байтів" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-3] [назва[=значеннÑ] ...]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] назва [назва ...]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -2082,113 +2215,101 @@ msgstr "" "поÑлідовніÑть-клавіш] [-x поÑлідовніÑть-клавіш:команда-оболонки] " "[поÑлідовніÑть-клавіш:функціÑ-readline чи команда-readline]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [вбудована-команда [аргумент ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [вираз]" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]] [-@]] [каталог]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] команда [аргумент ...]" -#: builtins.c:76 +#: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilnrtux] [-p] [назва[=значеннÑ] ...]" -#: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] назва[=значеннÑ] ..." - #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] назва[=значеннÑ] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [параметр] назва[=значеннÑ] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [аргумент ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [аргумент ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f файл] [назва ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [аргумент ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts Ñ€Ñдок-параметрів назва [аргумент]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a назва] [команда [аргументи ...]] [переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "" "fc [-e редактор] [-lnr] [перший] [оÑтанній] чи fc -s [шаблон=заміна] " "[команда]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [завданнÑ]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p шлÑÑ…] [-dt] [назва ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [шаблон ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2196,15 +2317,16 @@ msgstr "" "history [-c] [-d позиціÑ] [n] чи history -anrw [файл] чи history -ps " "аргумент [аргумент ...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ ...] чи jobs -x команда [аргументи]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2212,11 +2334,11 @@ msgstr "" "kill [-s Ñигнал | -n номер-Ñигналу | -Ñигнал] pid | Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ ... чи kill -l " "[Ñигнал]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let аргумент [аргумент ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2225,99 +2347,95 @@ msgstr "" "N кількіÑть-Ñимволів][-p запрошеннÑ] [-t ліміт-чаÑу] [-u деÑкриптор-файла] " "[назва ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o назва-параметра] [--] [аргумент ...]" -#: builtins.c:142 +#: builtins.c:144 msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [-n] [назва ...]" -#: builtins.c:144 +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [назва[=значеннÑ] ...] чи export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonli [-af [назва[=значеннÑ] ...] чи readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source файл [аргументи]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". файл [аргументи]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [вираз]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ аргумент... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[аргумент] Ñигнал ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] назва [назва ...]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvx] [обмеженнÑ]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [обмеженнÑ]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [режим-доÑтупу]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" msgstr "wait [-n] [ідентифікатор]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" msgstr "wait [ідентифікатор-процеÑу ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for ÐÐЗВР[in СЛОВР... ] ; do КОМÐÐДИ; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( вираз1; вираз2; вираз3 )); do КОМÐÐДИ; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select ÐÐЗВР[in СЛОВР...;] do КОМÐÐДИ; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] канал" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case СЛОВО in [ШÐБЛОР[| ШÐБЛОÐ]...) КОМÐÐДИ ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" @@ -2325,63 +2443,63 @@ msgstr "" "if КОМÐÐДИ; then КОМÐÐДИ; [ elif КОМÐÐДИ; then КОМÐÐДИ; ]... [ else " "КОМÐÐДИ; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while КОМÐÐДИ; do КОМÐÐДИ; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until КОМÐÐДИ; do КОМÐÐДИ; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [ÐÐЗВÐ] команда [переÑпрÑмуваннÑ]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function ÐÐЗВР{ КОМÐÐДИ ; } чи ÐÐЗВР() { КОМÐÐДИ ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ КОМÐÐДИ ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( вираз ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ вираз ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - назви та Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑких змінних оболонки" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | каталог]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [назва-параметра ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v змінна] шаблон-Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ [аргументи]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2391,36 +2509,36 @@ msgstr "" "W ÑпиÑок-Ñлів] [-F функціÑ] [-C команда] [-X шаблон-фільтруваннÑ] [-P " "префікÑ] [-S ÑуфікÑ] [назва ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" -"compgen [-abcdefgjksuv] [-o параметр] [-A діÑ] [-G шаблон-оболонки] [-W " +"compgen [-abcdefgjksuv] [-o параметр] [-A діÑ] [-G шаблон-оболонки] [-W " "ÑпиÑок-Ñлів] [-F функціÑ] [-C команда] [-X шаблон-фільтруваннÑ] [-P " "префікÑ] [-S ÑуфікÑ] [Ñлово]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o параметр] [назва ...]" -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" -"mapfile [-n кількіÑть] [-O початок-відліку] [-s кількіÑть] [-t] [-u " -"деÑкриптор] [-C обробник] [-c крок] [маÑив]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d роздільник] [-n кількіÑть] [-O початок-відліку] [-s кількіÑть] [-" +"t] [-u деÑкриптор] [-C обробник] [-c крок] [маÑив]" + +#: builtins.c:244 +msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" "readarray [-n кількіÑть] [-O початок-відліку] [-s кількіÑть] [-t] [-u " "деÑкриптор] [-C обробник] [-c крок] [маÑив]" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2432,7 +2550,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2444,25 +2562,24 @@ msgstr "" " Викликана без аргументів, команда `alias' друкує ÑпиÑок пÑевдонімів у\n" " придатній до подальшого Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ñ– `alias ÐÐЗВÐ=ЗÐÐЧЕÐÐЯ'.\n" " \n" -" Інакше вона додає пÑевдоніми Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ– вказаної ÐÐЗВИ, Ð´Ð»Ñ Ñкої надане\n" +" Інакше вона додає пÑевдоніми Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— вказаної ÐÐЗВИ, Ð´Ð»Ñ Ñкої надане\n" " ЗÐÐЧЕÐÐЯ. Пробіли в кінці ЗÐÐЧЕÐÐЯ дозволÑють увімкнути подальше " "розкриттÑ\n" " пÑевдонімів уÑередині цього пÑевдоніму під Ñ‡Ð°Ñ Ð¹Ð¾Ð³Ð¾ підÑтавлÑннÑ.\n" " \n" " Параметри:\n" -" -p\tÐадрукувати уÑÑ– визначені пÑевдоніми у придатній до Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ " -"формі.\n" +" -p\tвивеÑти уÑÑ– визначені пÑевдоніми у придатній до Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ñ–.\n" " \n" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо було вказано ÐÐЗВУ, Ð´Ð»Ñ Ñкої немає\n" " пÑевдоніма." -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2474,7 +2591,7 @@ msgstr "" " Код завершеннÑ:\n" " ЗавершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВРне Ñ” визначеним пÑевдонімом." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2508,7 +2625,8 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" @@ -2549,10 +2667,10 @@ msgstr "" "поÑлідовноÑті.\n" " -r поÑлідовніÑть СкаÑувати Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐŸÐžÐ¡Ð›Ð†Ð”ÐžÐ’ÐОСТІ.\n" " -f файл Прочитати Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ з ФÐЙЛУ.\n" -" -x поÑлідовніÑть:команда-оболонки\tПри вводі ПОСЛІДОВÐОСТІ буде\n" +" -x поÑлідовніÑть:команда-оболонки\tПри введенні ПОСЛІДОВÐОСТІ буде\n" " \t\t\t\tзапуÑкатиÑÑ ÐšÐžÐœÐÐДÐ-ОБОЛОÐКИ.\n" -" -X\t\t Показати ÑпиÑок поÑлідовноÑтей клавіш, пов’Ñзани з -x та " -"відповідні\n" +" -X Показати ÑпиÑок поÑлідовноÑтей клавіш, пов’Ñзани з -" +"x та відповідні\n" " команди у форматі, Ñким можна ÑкориÑтатиÑÑ Ñк " "вхідними даними\n" " Ð´Ð»Ñ Ñ–Ð½ÑˆÐ¾Ñ— програми.\n" @@ -2561,7 +2679,7 @@ msgstr "" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри та не\n" " виникло помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2579,7 +2697,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо N менше за 1." -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2597,7 +2715,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо N менше 1." -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2621,7 +2739,7 @@ msgstr "" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð’Ð‘Ð£Ð”ÐžÐ’ÐÐОЇ-КОМÐÐДИ або помилку, Ñкщо\n" " ВБУДОВÐÐÐ-КОМÐÐДРне Ñ” вбудованою командою оболонки." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2649,7 +2767,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо оболонка зараз не виконує функцію\n" " або Ñкщо ВИРÐЗ Ñ” неправильним." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2672,16 +2790,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2708,15 +2826,15 @@ msgstr "" " такою назвою Ñ–Ñнуватиме, Ñ—Ñ— Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ викориÑтане заміÑть КÐТÐЛОГУ.\n" " \n" " Параметри:\n" -" -L\tПримуÑово переходити за Ñимволічними поÑиланнÑми: визначати\n" +" -L\tПримуÑово переходити за Ñимволічними поÑиланнÑми: визначати\n" " \tджерело Ñимволічних поÑилань Ñк КÐТÐЛОГ піÑÐ»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ запиÑів `..'.\n" -" -P\tВикориÑтовувати фізичну Ñтруктуру каталогів, не переходити за\n" +" -P\tВикориÑтовувати фізичну Ñтруктуру каталогів, не переходити за\n" " \tÑимволічними поÑиланнÑми: визначати джерело Ñимволічних поÑилань Ñк\n" " \tКÐТÐЛОГ до обробки запиÑів `..'.\n" -" -e\tÑкщо вказано параметр -P Ñ– програмі не вдаÑтьÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ " +" -e\tÑкщо вказано параметр -P Ñ– програмі не вдаÑтьÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ " "поточний\n" " \tробочий каталог, вийти з ненульовим значеннÑм Ñтану.\n" -" -@ у ÑиÑтемах, де передбачено таку підтримку, показати файл з " +" -@ у ÑиÑтемах, де передбачено таку підтримку, показати файл з " "розширеними\n" " атрибутами Ñк каталог, що міÑтить атрибути файла\n" " \n" @@ -2731,13 +2849,13 @@ msgstr "" " $PWD у разі викориÑÑ‚Ð°Ð½Ð½Ñ -P. За інших результатів повертає ненульове " "значеннÑ." -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2758,7 +2876,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи\n" " не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ доÑтуп до поточного робочого каталогу." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2774,7 +2892,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завжди уÑпішна." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2786,7 +2904,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завжди уÑпішна." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2798,7 +2916,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завжди завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2808,10 +2926,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2824,18 +2942,18 @@ msgstr "" " запуÑку команд з диÑку, коли Ñ–Ñнує Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð· такою ж назвою.\n" " \n" " Параметри:\n" -" -p\tВикориÑтовувати Ñтандартне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ PATH, Ñке забезпечує\n" -" \tÐ·Ð½Ð°Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… Ñтандартних утиліт.\n" -" -v\tВивеÑти Ð¾Ð¿Ð¸Ñ ÐšÐžÐœÐÐД, подібний до виводу вбудованої команди " +" -p ВикориÑтовувати Ñтандартне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ PATH, Ñке забезпечує\n" +" Ð·Ð½Ð°Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… Ñтандартних утиліт.\n" +" -v ВивеÑти Ð¾Ð¿Ð¸Ñ ÐšÐžÐœÐÐД, подібний до виводу вбудованої команди " "`type'.\n" -" -V\tВивеÑти більш багатоÑлівний Ð¾Ð¿Ð¸Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— з КОМÐÐД.\n" +" -V ВивеÑти більш багатоÑлівний Ð¾Ð¿Ð¸Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— з КОМÐÐД.\n" " \n" " Код завершеннÑ:\n" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÐšÐžÐœÐÐДИ або помилку, Ñкщо КОМÐÐДУ не " "буде\n" " знайдено." -#: builtins.c:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2845,9 +2963,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2882,9 +3000,9 @@ msgstr "" " Параметри:\n" " -f\tОбмежити поле дії лише назвами та визначеннÑми функцій.\n" " -F\tОбмежити показ лише назвами функцій (Ð¿Ð»ÑŽÑ Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ñдку та\n" -" \tфайл, звідки походить функціÑ, Ñкщо виконуєтьÑÑ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтика).\n" +" \t\tфайл, звідки походить функціÑ, Ñкщо виконуєтьÑÑ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтика).\n" " -g\tÑтворити загальні змінні, Ñкщо викориÑтано у функції оболонки,\n" -" \tÑкщо це не Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¸, буде проігноровано.\n" +" \t\tÑкщо це не Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¸, буде проігноровано.\n" " -p\tПоказати влаÑтивоÑті та Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— з ÐÐЗВ.\n" " \n" " Параметри, що вÑтановлюють влаÑтивоÑті:\n" @@ -2911,17 +3029,18 @@ msgstr "" "виникло\n" " помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Ð’Ñтановлює Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð° влаÑтивоÑті змінних.\n" " \n" " Команда вийшла з ужитку. ДивітьÑÑ `help declare'." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2951,7 +3070,7 @@ msgstr "" " помилка під Ñ‡Ð°Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ñ–Ð¹ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ Ñкщо оболонка не виконує " "функцію." -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2977,9 +3096,9 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." @@ -3009,14 +3128,14 @@ msgstr "" " \\v\tвертикальна табулÑціÑ\n" " \\\\\tÐ·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ñ Ð¿Ð¾Ñ…Ð¸Ð»Ð° риÑка\n" " \\0nnn\tÑимвол з віÑімковим ASCII-кодом NNN. NNN може мати від\n" -" \tÐ½ÑƒÐ»Ñ Ð´Ð¾ трьох віÑімкових цифр\n" +" \t\tÐ½ÑƒÐ»Ñ Ð´Ð¾ трьох віÑімкових цифр\n" " \\xHH\tвоÑьмибітовий Ñимвол із шіÑтнадцÑтковим кодом HH. HH\n" -" \tможе бути одною чи двома шіÑтнадцÑтковими цифрами\n" +" \t\tможе бути одною чи двома шіÑтнадцÑтковими цифрами\n" " \n" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо виникне помилка запиÑу." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3038,7 +3157,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° запиÑу." -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3093,7 +3212,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВРне Ñ” вбудованою командою\n" " оболонки або Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3115,7 +3234,7 @@ msgstr "" "команди\n" " Ñ” порожнім Ñ€Ñдком, команда завершуєтьÑÑ ÑƒÑпішно." -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3201,7 +3320,7 @@ msgstr "" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо знайдено параметр; помилково, Ñкщо\n" " параметри ÑкінчилиÑÑ Ð°Ð±Ð¾ трапилаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3212,8 +3331,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3231,8 +3350,8 @@ msgstr "" " \n" " Параметри:\n" " -a назва\tПередати ÐÐЗВУ Ñк нульовий аргумент КОМÐÐДИ.\n" -" -c\t\tЗапуÑтити КОМÐÐДУ з порожнім оточеннÑм.\n" -" -l\t\tПоклаÑти риÑку до нульового аргументу КОМÐÐДИ.\n" +" -c\tЗапуÑтити КОМÐÐДУ з порожнім оточеннÑм.\n" +" -l\tПоклаÑти риÑку до нульового аргументу КОМÐÐДИ.\n" " \n" " Якщо команду не вдаÑтьÑÑ Ð·Ð°Ð¿ÑƒÑтити, неінтерактивна оболонка " "завершуєтьÑÑ,\n" @@ -3242,7 +3361,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо команду не буде знайдено або Ñкщо\n" " трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° переÑпрÑмуваннÑ." -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3254,7 +3373,7 @@ msgstr "" " Виходить з оболонки, повертаючи ÑÑ‚Ð°Ñ‚ÑƒÑ N. Якщо N не вказано, беретьÑÑ\n" " ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¾Ñтанньої запущеної команди." -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3268,7 +3387,7 @@ msgstr "" "команду\n" " запущено не у оболонці ÑеанÑу." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3323,7 +3442,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð·Ñ– ÑтатуÑом запущених команд, або помилкою, Ñкщо\n" " трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3345,7 +3464,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð·Ñ– ÑтатуÑом Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ, що переведене\n" " у пріоритетний режим, або помилкою, Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3370,7 +3489,7 @@ msgstr "" "Ñкщо\n" " трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." -#: builtins.c:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3379,15 +3498,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3399,15 +3518,14 @@ msgstr "" " ÐÐЗВИ не вказані, показує інформацію про збережені команди.\n" " \n" " Параметри:\n" -" -d\t\tВилучити з кешу Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐÐЗВ.\n" -" -l\t\tПоказувати у форматі, що можна потім виконати.\n" +" -d\tВилучити з кешу Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐÐЗВ.\n" +" -l\tПоказувати у форматі, що можна потім виконати.\n" " -p шлÑÑ…\tвикориÑтовувати ШЛЯХ Ñк повний шлÑÑ… до ÐÐЗВИ.\n" -" -r\t\tСпорожнити кеш.\n" -" -t\t\tВивеÑти збережені Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÐÐЗВ, вказуючи перед " -"розташуваннÑм\n" +" -r\tСпорожнити кеш.\n" +" -t\tВивеÑти збережені Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÐÐЗВ, вказуючи перед розташуваннÑм\n" " \t\tвідповідну ÐÐЗВУ, Ñкщо вказано декілька ÐÐЗВ.\n" " Ðргументи:\n" -" ÐÐЗВÐ\t\tКожна з ÐÐЗВ шукаєтьÑÑ Ñƒ $PATH та додаєтьÑÑ Ð´Ð¾ ÑпиÑку " +" ÐÐЗВÐ\tКожна з ÐÐЗВ шукаєтьÑÑ Ñƒ $PATH та додаєтьÑÑ Ð´Ð¾ ÑпиÑку " "збережених\n" " \t\tкоманд.\n" " \n" @@ -3415,7 +3533,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВУ не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ або Ñкщо\n" " вказано помилковий параметр." -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3427,7 +3545,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3458,7 +3576,8 @@ msgstr "" " помилковий параметр." # WTF??? history list += history + history file ??? -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3467,23 +3586,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3527,8 +3646,7 @@ msgstr "" "виникло\n" " помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." -#: builtins.c:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3538,7 +3656,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3573,7 +3691,7 @@ msgstr "" " виникло помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ. При викориÑтанні -x команда\n" " завершуєтьÑÑ Ð·Ñ– ÑтатуÑом Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÐšÐžÐœÐÐДИ." -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3583,7 +3701,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3598,14 +3716,15 @@ msgstr "" " -a\tВилучити уÑÑ– завданнÑ, Ñкщо ЗÐВДÐÐÐЯ не вказані.\n" " -h\tПозначити ЗÐВДÐÐÐЯ так, щоб вони не отримали SIGHUP, Ñкщо " "оболонка\n" -" \tотримає SIGHUP.\n" +" \t\tотримає SIGHUP.\n" " -r\tВилучати лише поточні завданнÑ.\n" " \n" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи\n" " ЗÐВДÐÐÐЯ." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3617,7 +3736,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3637,7 +3757,7 @@ msgstr "" " -s Ñигнал\tСИГÐÐЛ Ñ” назвою Ñигналу.\n" " -n Ñигнал\tСИГÐÐЛ Ñ” номером Ñигналу.\n" " -l\tПерелічити назви Ñигналів; Ñкщо за -l ідуть іще аргументи, вони\n" -" \tвважаютьÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñигналів, Ñкі треба показати.\n" +" \t\tвважаютьÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñигналів, Ñкі треба показати.\n" " \n" " Kill Ñ” вбудованою командою з двох причин: це дозволÑÑ” вказувати\n" " ідентифікатори завдань заміÑть ідентифікаторів процеÑів та дозволÑÑ”\n" @@ -3647,7 +3767,7 @@ msgstr "" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні аргументи та не\n" " трапилоÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3733,7 +3853,7 @@ msgstr "" " Якщо результатом обчиÑÐ»ÐµÐ½Ð½Ñ Ð¾Ñтаннього ÐРГУМЕÐТУ Ñ” 0, let повертає 1,\n" " інакше — 0." -#: builtins.c:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3754,27 +3874,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3830,7 +3951,7 @@ msgstr "" " вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—, або Ñкщо із -u вказано неправильний " "файловий деÑкриптор." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3851,7 +3972,8 @@ msgstr "" " Код завершеннÑ:\n" " Команда повертає N, або помилку, Ñкщо викликана не у функції чи Ñценарії." -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3919,7 +4041,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -4030,7 +4153,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4040,7 +4163,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4071,7 +4194,7 @@ msgstr "" "ÐÐЗВÐ\n" " доÑтупна лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4105,7 +4228,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та ÐÐЗВИ." -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4117,9 +4240,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4145,7 +4267,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та ÐÐЗВИ." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4163,7 +4285,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо N менше за нуль чи більше за $#." -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4187,7 +4309,7 @@ msgstr "" "або\n" " помилку, Ñкщо ФÐЙЛ не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸." -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4212,7 +4334,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо не ввімкнене ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми чи\n" " Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4276,9 +4398,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4377,7 +4499,7 @@ msgstr "" "вказано\n" " помилковий аргумент чи ВИРÐЗ хибний." -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4390,7 +4512,7 @@ msgstr "" "оÑтаннім\n" " аргументом має бути `]'." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4409,7 +4531,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завжди уÑпішна." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4485,7 +4607,7 @@ msgstr "" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри та " "СИГÐÐЛИ." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4494,18 +4616,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4537,7 +4659,7 @@ msgstr "" "Ñкщо\n" " хоч одне з них не вдаÑтьÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸." -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4555,6 +4677,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4566,7 +4689,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4599,6 +4723,7 @@ msgstr "" " -e\tМакÑимальний пріоритет Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ (`nice').\n" " -f\tМакÑимальний розмір файлів, запиÑаних оболонкою та нащадками.\n" " -i\tМакÑимальна кількіÑть Ñигналів, що очікують обробки.\n" +" -k\tМакÑимальна кількіÑть k-черг, визначених Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ процеÑу\n" " -l\tМакÑимальний розмір, Ñкий Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¼Ð¾Ð¶Ðµ заблокувати в пам’Ñті.\n" " -m\tМакÑимальний розмір резидентного набору.\n" " -n\tМакÑимальна кількіÑть відкритих файлових деÑкрипторів.\n" @@ -4622,7 +4747,7 @@ msgstr "" " вказане, виводитьÑÑ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ð³Ð¾ реÑурÑу. Якщо не вказано\n" " жодного параметра, беретьÑÑ -f.\n" " \n" -" Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ змінюватиÑÑ Ñ–Ð· кроком у 1024 байти, за виключеннÑм -t,\n" +" Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ змінюватиÑÑ Ñ–Ð· кроком у 1024 байти, за винÑтком -t,\n" " що вказуєтьÑÑ Ð² Ñекундах, -p, Ñке має крок 512 байтів та -u, що Ñ”\n" " кількіÑтю процеÑів без кроку.\n" " \n" @@ -4630,7 +4755,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи\n" " трапилаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4664,7 +4789,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильну МÐСКУ та параметри." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4700,7 +4825,7 @@ msgstr "" "вказано\n" " неправильні параметри чи ІДЕÐТИФІКÐТОР." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4729,7 +4854,7 @@ msgstr "" " Повертає код помилки, Ñкщо вказано неправильний ІДЕÐТИФІКÐТОР чи " "параметр." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4750,7 +4875,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4780,7 +4905,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4819,7 +4944,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4847,7 +4972,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð›ÐÐЦЮЖКÐ-КОМÐÐД." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4865,7 +4990,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4898,7 +5023,7 @@ msgstr "" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди або нуль,\n" " Ñкщо жодна з перевірених умов не була Ñ–Ñтинною." -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4916,7 +5041,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4935,7 +5060,8 @@ msgstr "" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." # WTF? How can it return exit code of _asynchronous_ process... -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4945,7 +5071,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Створює ÑÐ¿Ñ–Ð²Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· назвою ÐÐЗВÐ.\n" " \n" @@ -4959,7 +5085,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÐšÐžÐœÐÐДИ." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4985,7 +5111,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВРє незмінною." -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5004,7 +5130,7 @@ msgstr "" " Код завершеннÑ:\n" " КонÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°Ñ” код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди." -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5029,7 +5155,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда повертає ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð¾Ð³Ð¾ завданнÑ." -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5047,7 +5173,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо результат обчиÑÐ»ÐµÐ½Ð½Ñ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -5096,7 +5222,7 @@ msgstr "" " Код завершеннÑ:\n" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо ВИРÐЗ Ñ–Ñтинний." -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5199,7 +5325,7 @@ msgstr "" " HISTIGNORE\tРозділений двокрапкою ÑпиÑок шаблонів, що викориÑтовуютьÑÑ\n" " \t\tпри визначенні, чи зберігати команду у ÑпиÑку Ñ–Ñторії.\n" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5209,19 +5335,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5257,7 +5383,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказаний неправильний аргумент чи\n" " Ñкщо не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ поточну каталог." -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5266,16 +5392,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5309,7 +5435,7 @@ msgstr "" " Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано помилковий аргумент чи Ñкщо\n" " не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ поточний каталог." -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5320,19 +5446,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5363,7 +5489,7 @@ msgstr "" "Ñкщо\n" " трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5399,7 +5525,7 @@ msgstr "" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо ПÐРÐМЕТР ввімкнено; невдало, Ñкщо\n" " вказано неправильні параметри чи ПÐРÐМЕТР вимкнено." -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5416,15 +5542,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5471,7 +5597,7 @@ msgstr "" "або\n" " Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° запиÑу чи приÑвоєннÑ." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5484,11 +5610,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5520,7 +5646,7 @@ msgstr "" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та не\n" " трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5542,7 +5668,7 @@ msgstr "" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри Ñ– не\n" " трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5596,7 +5722,7 @@ msgstr "" " Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та\n" " вказівки завершень Ð´Ð»Ñ ÐÐЗВ Ñ–Ñнують." -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5607,20 +5733,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5645,6 +5772,9 @@ msgstr "" " не вказано, викориÑтовуєтьÑÑ Ð·Ð¼Ñ–Ð½Ð½Ð° MAPFILE.\n" " \n" " Параметри:\n" +" -d роздільник\tВикориÑтати Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ–Ð»Ñƒ на Ñ€Ñдки вказаний роздільник, а " +"не\n" +" Ñимвол розриву Ñ€Ñдка\n" " -n кількіÑть\tПрочитати вказану кількіÑть Ñ€Ñдків. Ðуль означає\n" " \t\t\t«без обмежень».\n" " -O початок\tПочати вÑтавлÑти до маÑиву з вказаного\n" @@ -5675,7 +5805,7 @@ msgstr "" "або\n" " Ñкщо МÐСИВ Ñ” незмінним." -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5685,6 +5815,24 @@ msgstr "" " \n" " Синонім до `mapfile'." +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "© Free Software Foundation, Inc., 2014" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "© Free Software Foundation, Inc., 2012" + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "© Free Software Foundation, Inc., 2009\n" diff --git a/po/vi.gmo b/po/vi.gmo index 21cc850e03b481975931c648f1bcde12cea146f4..9d187c416000a0cf431ca5b86c0846cf9491c712 100644 GIT binary patch delta 21395 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�CfwR?@@6QQ(bczgPothZA2 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 TzuvyX-8@, 2008, 2009, 2010. -# Trần Ngá»c Quân , 2012-2014. # Nguyá»…n Thái Ngá»c Duy , 2012. +# Trần Ngá»c Quân , 2012-2014, 2015. # msgid "" msgstr "" -"Project-Id-Version: bash-4.3-rc2\n" +"Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2014-02-01 13:11+0700\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-18 07:47+0700\n" "Last-Translator: Trần Ngá»c Quân \n" "Language-Team: Vietnamese \n" -"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: Poedit 1.5.5\n" -"X-Poedit-SourceCharset: UTF-8\n" +"X-Generator: Gtranslator 2.91.7\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "sai chỉ số mảng" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, 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:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: khoá mảng liên kết không hợp lệ" +msgstr "%s: khóa mảng liên kết không hợp lệ" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, 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:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: phải sá»­ dụng chỉ số phụ khi gán mảng kết hợp" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: không thể tạo: %s" -#: bashline.c:3982 +#: bashline.c:4091 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" +msgstr "" +"bash_execute_unix_command: không tìm thấy ánh xạ phím (keymap) cho câu lệnh" -#: bashline.c:4069 +#: bashline.c:4189 #, 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:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "thiếu dấu đóng “%c†trong %s" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: thiếu dấu hai chấm phân cách" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "khai triển ngoặc ôm: không thể phân bổ bá»™ nhá»› cho %s" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "khai triển ngoặc ôm: gặp lá»—i khi phân bổ bá»™ nhá»› cho `%d' phần tá»­" +msgstr "khai triển ngoặc ôm: gặp lá»—i khi phân bổ bá»™ nhá»› cho “%d†phần tá»­" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "khai triển ngoặc ôm: gặp lá»—i khi phân bổ bá»™ nhá»› cho `%s'" +msgstr "khai triển ngoặc ôm: gặp lá»—i khi phân bổ bá»™ nhá»› cho “%sâ€" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "“%sâ€: tên bí danh không hợp lệ" @@ -94,45 +100,45 @@ msgstr "“%sâ€: tên bí danh không hợp lệ" msgid "line editing not enabled" msgstr "chưa bật sá»­a đổi dòng" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "“%sâ€: tên sÆ¡ đồ phím không hợp lệ" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: không thể Ä‘á»c: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "“%sâ€: không thể tháo" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "“%sâ€: không hiểu tên hàm" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s không được ràng buá»™c vá»›i bất kỳ phím nào.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s có thể được gá»i thông qua " -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "đếm vòng" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "chỉ có nghÄ©a trong vòng lặp “forâ€, “while†hay “untilâ€" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -142,300 +148,329 @@ msgstr "" "\n" " Nếu không có BTHỨC thì trả vá» " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "Chưa đặt biến môi trưá»ng HOME" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "quá nhiá»u đối số" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "không có thư mục khác" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "Chưa đặt biến môi trưá»ng OLDPWD" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "dòng %d: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "cảnh báo: " -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: cách dùng: " -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: tùy chá»n cần má»™t đối số" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: cần đối số thuá»™c kiểu số" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: không tìm thấy" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: tùy chá»n không hợp lệ" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: tên tùy chá»n không hợp lệ" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "“%sâ€: không phải là định danh hợp lệ" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "số bát phân không hợp lệ" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "số thập lục không hợp lệ" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "số không hợp lệ" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: sai đặc tả tín hiệu" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "“%sâ€: không phải má»™t pid hoặc đặc tả công việc hợp lệ" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: biến chỉ Ä‘á»c" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s nằm ngoài phạm vi" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "đối số" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s nằm ngoài phạm vi" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: không có công việc như vậy" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: không có Ä‘iá»u khiển công việc" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "không có Ä‘iá»u khiển công việc" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: bị hạn chế" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "bị hạn chế" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" -msgstr "%s: không phải là lệnh dá»±ng sẵn trong hệ vá»" +msgstr "%s: không phải là lệnh tích hợp trong hệ vá»" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "lá»—i ghi: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "lá»—i đặt các thuá»™c tính thiết bị cuối: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "lá»—i lấy các thuá»™c tính thiết bị cuối: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: lá»—i lấy thư mục hiện thá»i: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: đặc tả công việc chưa rõ ràng" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "trợ giúp không sẵn có ở phiên bản này" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: tên hành động không hợp lệ" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: không có đặc tả tá»± hoàn thiện" -#: builtins/complete.def:697 +#: builtins/complete.def:699 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:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "cảnh báo: tùy chá»n “-C†có thể không hoạt động như bạn mong đợi" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "hiện thá»i không thá»±c thi chức năng tá»± hoàn thiện" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "chỉ có thể dùng trong má»™t hàm" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: biến tham chiếu không thể là má»™t mảng" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: biến nameref tá»± tham chiếu là không được phép" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: tên tham chiếu quẩn tròn" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: tên biến không hợp lệ cho má»™t tham chiếu tên" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "không thể dùng “-f†để tạo hàm" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: hàm chỉ Ä‘á»c" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: gán mảng phức hợp được trích dẫn đã lạc hậu" + +#: builtins/declare.def:767 #, 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:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: không thể chuyển đổi mảng kết hợp sang mảng chỉ số" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "không có chức năng nạp động" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "không thể mở đối tượng dùng chung %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "không tìm thấy %s trong đối tượng dùng chung %s: %s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "tải hàm cho %s trả vá» lá»—i nghiêm trá»ng (%d): nên không được tải" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" -msgstr "%s không được nạp động" +msgstr "%s không được tải động" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" -msgstr "%s: không thể xoá: %s" +msgstr "%s: không thể xóa: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: là thư mục" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: không phải là tập tin thưá»ng" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: tập tin quá lá»›n" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: không thể thá»±c hiện tập tin nhị phân" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: không thể thá»±c thi: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "đăng xuất\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "không phải hệ vỠđăng nhập: hãy dùng lệnh “exitâ€" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Có công việc bị dừng.\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Có công việc Ä‘ang chạy.\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "không tìm thấy lệnh" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "đặc tả lịch sá»­" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: không thể mở tập tin tạm: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "hiện tại" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "công việc %d đã khởi chạy mà không có Ä‘iá»u khiển công việc" @@ -454,23 +489,23 @@ msgstr "%s: tùy chá»n cần đối số -- %c\n" msgid "hashing disabled" msgstr "tắt băm" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: bảng băm rá»—ng\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "gợi ý\tlệnh\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Câu lệnh hệ vá» tương ứng vá»›i từ khoá `" +msgstr[0] "Câu lệnh hệ vá» tương ứng vá»›i từ khóa “" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." @@ -478,12 +513,12 @@ msgstr "" "không có trợ giúp cho “%sâ€. Hãy chạy lệnh “help help†hoặc “man -k %s†hay " "“info %sâ€." -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: không thể mở: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -503,15 +538,20 @@ msgstr "" "Dấu sao (*) bên cạnh tên nghÄ©a là lệnh bị tắt.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "chỉ có thể dùng má»™t cá»§a những tùy chá»n -anrw" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "vị trí lịch sá»­" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: đối số không hợp lệ" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: gặp lá»—i khi khai triển lịch sá»­" @@ -525,113 +565,113 @@ 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:200 +#: builtins/kill.def:202 #, 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:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Lá»—i không rõ" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "cần biểu thức" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: không phải là mảng chỉ số" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, 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:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, 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:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: sai số lượng dòng" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: gốc mảng không hợp lệ" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: lượng gá»i ngược không hợp lệ" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "tên biến mảng vẫn trống" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "cần há»— trợ biến mảng" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "“%sâ€: thiếu ký tá»± định dạng" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "“%câ€: đặc tả định dạng thá»i gian không đúng" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "“%câ€: ký tá»± định dạng không hợp lệ" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "cảnh báo: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "vấn đỠphân tích cú pháp định dạng: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "thiếu chữ số thập lục phân cho \\x" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "thiếu chữ số unicode cho \\%c" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "không có thư mục khác" -#: builtins/pushd.def:354 +#: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" msgstr "%s: đối số không hợp lệ" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" -msgstr "chồng thư mục trống" +msgstr "ngăn xếp thư mục trống" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" -msgstr "chỉ số chồng thư mục" +msgstr "chỉ số ngăn xếp thư mục" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -658,20 +698,20 @@ msgstr "" " thư mục vào danh sách này. “popd†lấy thư mục khá»i danh sách.\n" "\n" " Tùy chá»n:\n" -" -c\txoá má»i phần tá»­ trong chồng thư mục\n" +" -c\txóa má»i phần tá»­ trong ngăn xếp thư mục\n" " -l\tkhông in phiên bản thư mục có dấu ngã nằm trước\n" " \tmà tương ứng vá»›i thư mục chính cá»§a ngưá»i dùng\n" -" -p\tin chồng thư mục má»—i dòng má»™t mục\n" -" -v\tin chồng thư mục má»—i dòng má»™t mục kèm vị trí trong chồng\n" +" -p\tin ngăn xếp thư mục má»—i dòng má»™t mục\n" +" -v\tin ngăn xếp thư mục má»—i dòng má»™t mục kèm vị trí trong ngăn xếp\n" "\n" " Äối số:\n" -" +N\thiển thị mục thứ N đếm từ bên trái khi gá»i không tuỳ chá»n,\n" +" +N\thiển thị mục thứ N đếm từ bên trái khi gá»i không tùy chá»n,\n" " bắt đầu từ số không.\n" "\n" -" -N\thiển thị mục thứ N đếm từ bên phải khi gá»i không tuỳ chá»n,\n" +" -N\thiển thị mục thứ N đếm từ bên phải khi gá»i không tùy chá»n,\n" " bắt đầu từ số không." -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -695,27 +735,27 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Thêm thư mục vào trên chồng thư mục, hoặc xoay chồng, làm cho thư mục\n" +"Thêm thư mục vào trên ngăn xếp thư mục, hoặc xoay ngăn xếp, làm cho thư mục\n" " hiện thá»i nằm ở trên đầu. Äổi vị trí hai thư mục trên cùng nếu\n" " không có đối số.\n" "\n" " Tùy chá»n:\n" " -n\tngăn thay đổi thư mục bình thưá»ng khi thêm, chỉ thao tác\n" -" \ttrên chồng thư mục.\n" +" \ttrên ngăn xếp thư mục.\n" "\n" " Äối số:\n" -" +N\txoay chồng để thư mục thứ N (đếm từ bên trái “dirsâ€, bắt\n" +" +N\txoay ngăn xếp để thư mục thứ N (đếm từ bên trái “dirsâ€, bắt\n" " \tđầu từ số không) nằm ở đầu.\n" "\n" -" -N\txoay chồng để thư mục thứ N (đếm từ bên phải “dirsâ€, bắt\n" +" -N\txoay ngăn xếp để thư mục thứ N (đếm từ bên phải “dirsâ€, bắt\n" " \tđầu từ số không) nằm ở đầu.\n" "\n" -" THƯ-MỤC\tthêm THƯ-MỤC vào đầu chồng thư mục và dùng làm thư mục\n" +" THƯ-MỤC\tthêm THƯ-MỤC vào đầu ngăn xếp thư mục và dùng làm thư mục\n" " \tlàm việc hiện thá»i.\n" "\n" -" Lệnh “dirs†hiển thị chồng thư mục." +" Lệnh “dirs†hiển thị ngăn xếp thư mục." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 msgid "" "Removes entries from the directory stack. With no arguments, removes\n" " the top directory from the stack, and changes to the new top directory.\n" @@ -735,161 +775,171 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Gỡ bá» thư mục khá»i chồng thư mục. Không đưa ra đối số thì bá» thư mục\n" -" đầu khá»i chồng và chuyển đổi sang thư mục đầu má»›i.\n" +"Gỡ bá» thư mục khá»i ngăn xếp thư mục. Không đưa ra đối số thì bá» thư mục\n" +" đầu khá»i ngăn xếp và chuyển đổi sang thư mục đầu má»›i.\n" "\n" " Tùy chá»n:\n" " -n\tngăn thay đổi thư mục bình thưá»ng khi thêm, chỉ thao tác\n" -"\t\ttrên chồng thư mục.\n" +"\t\ttrên ngăn xếp thư mục.\n" "\n" " Äối số:\n" -" +N\txoay chồng để thư mục thứ N (đếm từ bên trái “dirsâ€. bắt\n" +" +N\txoay ngăn xếp để thư mục thứ N (đếm từ bên trái “dirsâ€. bắt\n" " \tđầu từ số không) nằm ở đầu. Ví dụ “popd +0†bá» thư mục\n" " đầu tiên, “popd +1†bá» thư mục thứ hai.\n" "\n" -" -N\txoay chồng để thư mục thứ N (đếm từ bên phải “dirsâ€. bắt\n" +" -N\txoay ngăn xếp để thư mục thứ N (đếm từ bên phải “dirsâ€. bắt\n" " \tđầu từ số không) nằm ở đầu. Ví dụ “popd -0†bá» thư mục\n" " cuối cùng, “popd -1†bá» thư mục kế cuối.\n" "\n" -" Lệnh “dirs†hiển thị chồng thư mục." +" Lệnh “dirs†hiển thị ngăn xếp thư mục." -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: sai đặc tả thá»i gian chá» tối Ä‘a" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "lá»—i Ä‘á»c: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 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:782 +#: builtins/set.def:841 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:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: không thể há»§y đặt" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: không thể há»§y đặt: %s chỉ Ä‘á»c" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: không phải biến mảng" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: không phải hàm" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: không thể xuất" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "số lượng dịch" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "không thể đồng thá»i đặt và há»§y đặt các tùy chá»n hệ vá»" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: tên tùy chá»n hệ vá» không hợp lệ" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "cần đối số tên tập tin" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: không tìm thấy tập tin" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "không thể ngưng" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "không thể ngưng hệ vỠđăng nhập" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s là bí danh cá»§a “%sâ€\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" -msgstr "%s là từ khoá cá»§a hệ vá»\n" +msgstr "%s là từ khóa cá»§a hệ vá»\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s là má»™t hàm\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s là lệnh tích hợp đặc biệt cá»§a hệ vá»\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" -msgstr "%s là lệnh dá»±ng sẵn hệ vá»\n" +msgstr "%s là lệnh tích hợp hệ vá»\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s là %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s được băm (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: đối số giá»›i hạn không hợp lệ" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "“%câ€: câu lệnh sai" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: không thể lấy giá»›i hạn: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "giá»›i hạn" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: không thể sá»­a đổi giá»›i hạn: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "số bát phân" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "“%câ€: toán tá»­ chế độ ký hiệu không hợp lệ" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" msgstr "“%câ€: ký tá»± chế độ ký hiệu không hợp lệ" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " dòng " @@ -901,84 +951,105 @@ msgstr "lệnh cuối: %s\n" #: error.c:173 #, c-format msgid "Aborting..." -msgstr "Há»§y bá»..." +msgstr "Há»§y bá»â€¦" -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "THBÃO:" + +#: error.c:463 msgid "unknown command error" msgstr "lá»—i lệnh không rõ" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "kiểu lệnh sai" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "bá»™ kết nối sai" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "nhảy sai" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: biến chưa liên kết" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aquá thá»i hạn đợi dữ liệu nhập: tá»± động đăng xuất\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, 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:1233 +#: execute_cmd.c:1275 #, 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:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "lá»—i ống dẫn" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: vượt quá mức độ eval lồng nhau tối Ä‘a (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: vượt quá mức độ nguồn lồng nhau tối Ä‘a (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "%s: vượt quá mức độ tối Ä‘a các hàm lồng nhau (%d)." +msgstr "%s: vượt quá mức độ các hàm lồng nhau tối Ä‘a (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, 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:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: không tìm thấy lệnh" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bá»™ thông dịch sai" -#: execute_cmd.c:5280 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: không thể thá»±c hiện tập tin nhị phân: %s" -#: execute_cmd.c:5352 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" -msgstr "“%sâ€: là lệnh dá»±ng sẵn đặc biệt" +msgstr "“%sâ€: là lệnh tích hợp đặc biệt" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "không thể nhân đôi fd %d thành fd %d" @@ -989,7 +1060,7 @@ msgstr "vượt quá ngưỡng đệ quy cá»§a biểu thức" #: expr.c:283 msgid "recursion stack underflow" -msgstr "tràn ngược đống đệ quy" +msgstr "tràn ngược ngăn xếp đệ quy" #: expr.c:431 msgid "syntax error in expression" @@ -1023,37 +1094,37 @@ msgstr "cần định danh sau tăng/giảm dần trước" msgid "missing `)'" msgstr "thiếu “)â€" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "lá»—i cú pháp: cần toán hạng" -#: expr.c:1392 +#: expr.c:1395 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:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (thẻ bài lá»—i là \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "cÆ¡ số (toán há»c) không hợp lệ" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" msgstr "cÆ¡ số có giá trị quá lá»›n" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: lá»—i biểu thức\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: không thể truy cập thư mục cấp trên" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "không thể đặt lại chế độ “nodelay†cho fd %d" @@ -1069,149 +1140,149 @@ 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:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:893 +#: jobs.c:1035 #, 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:1012 +#: jobs.c:1154 #, 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" +msgstr "Ä‘ang xóa công việc bị dừng chạy %d vá»›i nhóm tiến trình %ld" -#: jobs.c:1117 +#: jobs.c:1258 #, 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:1120 +#: jobs.c:1261 #, 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:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: không có pid như vậy" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Tín hiệu %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Xong" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Bị dừng" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Bị dừng(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "Äang chạy" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Xong(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Thoát %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "Không rõ trạng thái" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(xuất ra core)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid tiến trình con (%ld thành %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld không phải là tiến trình con cá»§a hệ vá» này" -#: jobs.c:2385 +#: jobs.c:2602 #, 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:2694 +#: jobs.c:2929 #, 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:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: công việc bị chấm dứt" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: công việc %d đã Ä‘ang chạy ná»n" -#: jobs.c:3220 +#: jobs.c:3455 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:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: dòng %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (xuất ra core)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd ngay: %s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp bị lá»—i" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: ká»· luật dòng" # NghÄ©a chữ : dừng dịch -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, 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:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "không có Ä‘iá»u khiển công việc trong hệ vá» này" @@ -1267,17 +1338,17 @@ msgstr "realloc: phát hiện sá»± tràn ngược; mh_nbytes nằm ngoài phạm 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:194 +#: lib/malloc/table.c:191 #, 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:203 +#: lib/malloc/table.c:200 #, 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:256 +#: lib/malloc/table.c:253 #, 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" @@ -1301,7 +1372,7 @@ msgstr "%s: dịch vụ không hợp lệ" msgid "%s: bad network path specification" msgstr "%s: đặc tả đưá»ng dẫn mạng sai" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "không há»— trợ thao tác mạng" @@ -1338,268 +1409,314 @@ msgstr "Bạn có thư má»›i trong $_" msgid "The mail in %s has been read\n" msgstr "Äã Ä‘á»c thư trong %s\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "lá»—i cú pháp: cần biểu thức số há»c" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "lá»—i cú pháp: gặp dấu chấm phẩy “;†bất thưá»ng" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "lá»—i cú pháp: “((%s))â€" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: kiểu chỉ lệnh sai %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, 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:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: chỉ dẫn chuyển hướng “%d†nằm ngoài phạm vi" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "vượt quá số lượng tài-liệu-đây tối Ä‘a" + +#: parse.y:3390 parse.y:3748 #, 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:4170 +#: parse.y:4410 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:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "gặp lá»—i cú pháp trong biểu thức Ä‘iá»u kiện: thẻ bài bất thưá»ng “%sâ€" -#: parse.y:4179 +#: parse.y:4419 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:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "gặp thẻ bài bất thưá»ng “%sâ€, cần “)â€" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "cần “)â€" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "đối số bất thưá»ng “%s†cho toán tá»­ má»™t ngôi Ä‘iá»u kiện" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "đối số bất thưá»ng cho toán tá»­ má»™t ngôi Ä‘iá»u kiện" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "thẻ bài bất thưá»ng “%sâ€, cần toán tá»­ hai ngôi Ä‘iá»u kiện" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "cần toán tá»­ hai ngôi Ä‘iá»u kiện" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "đối số bất thưá»ng “%s†cho toán tá»­ hai ngôi Ä‘iá»u kiện" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "đối số bất thưá»ng cho toán tá»­ hai ngôi Ä‘iá»u kiện" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "gặp thẻ bài bất thưá»ng “%c†trong câu lệnh Ä‘iá»u kiện" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "gặp thẻ bài bất thưá»ng “%s†trong câu lệnh Ä‘iá»u kiện" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "gặp thẻ bài bất thưá»ng “%d†trong câu lệnh Ä‘iá»u kiện" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "có lá»—i cú pháp ở gần thẻ bài bất thưá»ng “%sâ€" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "lá»—i cú pháp ở gần “%sâ€" -#: parse.y:5765 +#: parse.y:6024 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:5765 +#: parse.y:6024 msgid "syntax error" msgstr "lá»—i cú pháp" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Dùng \"%s\" để rá»i hệ vá».\n" -#: parse.y:5989 +#: parse.y:6248 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:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "tá»± hoàn thiện: không tìm thấy hàm “%sâ€" +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" + #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: bá»™ kết nối sai “%dâ€" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: sai bá»™ mô tả tập tin" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: con trá» tập tin NULL" # NghÄ©a chữ ? -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: “%câ€: ký tá»± định dạng không hợp lệ" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "bá»™ mô tả tập tin ở ngoại phạm vi" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: chuyển hướng chưa rõ ràng" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: không thể ghi đè lên tập tin đã có" -#: redir.c:186 +#: redir.c:187 #, 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:191 +#: redir.c:192 #, 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:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: không thể gán fd vào biến" -#: redir.c:582 +#: redir.c:586 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:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "lá»—i chuyển hướng: không thể nhân đôi fd" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "không tìm thấy /tmp, hãy tạo má»›i!" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "“/tmp†phải là tên thư mục hợp lệ" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: tùy chá»n không hợp lệ" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "không thể đặt uid thành %d: uid chịu tác động %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "không thể đặt gid thành %d: gid chịu tác động %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: Là má»™t thư mục" + +#: shell.c:1777 msgid "I have no name!" msgstr "Không có tên!" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, phiên bản %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"Cách dùng:\t%s [tùy chá»n GNU dài] [tùy chá»n] ...\n" -"\t%s [tùy chá»n GNU dài] [tùy chá»n] tập-tin-văn-lệnh ...\n" +"Cách dùng:\t%s [tùy chá»n GNU dài] [tùy chá»n] …\n" +"\t\t%s [tùy chá»n GNU dài] [tùy chá»n] tập-tin-văn-lệnh …\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Tùy chá»n dài:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Tùy chá»n:\n" -#: shell.c:1835 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-ilrsD hoặc -c lệnh hay -O tùy-chá»n-ngắn\t\t(chỉ gá»i)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s hoặc -o tùy-chá»n\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "Gõ “%s -c \"help set\"†để xem thông tin vá» các tùy chá»n hệ vá».\n" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "Gõ “%s -c help†để xem thông tin vá» các lệnh hệ vá» dá»±ng sẵn.\n" +msgstr "Gõ “%s -c help†để xem thông tin vá» các lệnh hệ vá» tích hợp.\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Dùng lệnh “bashbug†để thông báo lá»—i.\n" "Báo cáo các lá»—i dịch cho: .\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "Trang chá»§ bash: \n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" +"Trợ giúp chung vá» cách sá»­ dụng phần má»m GNU : \n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: thao tác không hợp lệ" @@ -1773,89 +1890,104 @@ msgstr "Tín hiệu lạ #" msgid "Unknown Signal #%d" msgstr "Tín hiệu lạ #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sai chỉ số phụ: không có đóng “%s†trong %s" -#: subst.c:2847 +#: subst.c:3154 #, 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:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "không thể tạo ống dẫn để thay thế tiến trình" -#: subst.c:5113 +#: subst.c:5798 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:5158 +#: subst.c:5848 #, 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:5160 +#: subst.c:5850 #, 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:5178 +#: subst.c:5873 #, 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:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "sai thay thế: không có \"“\" đóng trong %s" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "không thể tạo ống dẫn để thay thế lệnh" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "không thể tạo tiến trình con để thay thế lệnh" -#: subst.c:5433 +#: subst.c:6153 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:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: tên biến không hợp lệ cho má»™t tham chiếu tên" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: tham số null hoặc chưa được đặt" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: biểu thức chuá»—i con < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: thay thế sai" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: triển khai gián tiếp không hợp lệ" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "“%sâ€: tên biến không hợp lệ" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: tham số null hoặc chưa được đặt" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: biểu thức chuá»—i con < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: không thể gán bằng cách này" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" "phiên bản hệ vá» má»›i sẽ ép buá»™c ước lượng dưới dạng má»™t hàm thay thế số há»c" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "sai thay thế: không có \"`\" đóng trong %s" +msgstr "sai thay thế: không có \"“\" đóng trong %s" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "không khá»›p: %s" @@ -1869,39 +2001,39 @@ msgstr "cần đối số" msgid "%s: integer expression expected" msgstr "%s: cần biểu thức số nguyên" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "cần “)â€" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "cần “)†nhưng lại nhận được %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: cần toán tá»­ má»™t ngôi" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: cần toán tá»­ hai ngôi" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "thiếu “]â€" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "số thứ tá»± tín hiệu không hợp lệ" -#: trap.c:371 +#: trap.c:387 #, 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:375 +#: trap.c:391 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1909,89 +2041,90 @@ 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: tín hiệu sai %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "gặp lá»—i khi nhập vào định nghÄ©a hàm cho “%sâ€" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "cấp hệ vá» (%d) quá cao nên đặt lại thành 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "%s: tên tham chiếu quẩn tròn" - -#: variables.c:2228 +#: variables.c:2413 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:2247 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: không thể gán giá trị cho biến" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: tên biến không hợp lệ cho má»™t tham chiếu tên" + +#: variables.c:3940 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:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s có exportstr null" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "sai ký tá»± %d trong exportstr cho %s" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "không có “=†trong exportstr cho %s" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: đầu cá»§a shell_variables (các biến hệ vá») không phải là ngữ " "cảnh hàm" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "" "pop_var_context: không có ngữ cảnh global_variables (các biến toàn cục)" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: đầu cá»§a shell_variables (các biến hệ vá») không phải là phạm vi " "môi trưá»ng tạm thá»i" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: không thể mở như là TẬP-TIN" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: sai đặt giá trị cho bá»™ mô tả tập tin vết" -#: variables.c:5307 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: giá trị so sánh nằm ngoài phạm vi" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "Tác quyá»n (C) năm 2014 cá»§a Tổ chức Quỹ Phần má»m Tá»± do, Inc." +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "Tác quyá»n (C) năm 2015 cá»§a Tổ chức Quỹ Phần má»m Tá»± do, Inc." #: version.c:47 version2.c:47 msgid "" @@ -2014,10 +2147,6 @@ msgstr "Äây là phần má»m tá»± do; bạn có quyá»n sá»­a đổi và phát msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Ở đây KHÔNG BẢO HÀNH GÃŒ CẢ, vá»›i Ä‘iá»u kiện được pháp luật cho phép." -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "Tác quyá»n (C) năm 2014 cá»§a Tổ chức Quỹ Phần má»m Tá»± do, Inc." - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2038,15 +2167,15 @@ msgstr "%s: %s:%d: không thể cấp phát %lu byte (%lu byte được cấp ph msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: không thể cấp phát %lu byte" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" -msgstr "alias [-p] [TÊN[=GIÃ-TRỊ] ... ]" +msgstr "alias [-p] [TÊN[=GIÃ-TRỊ] … ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" -msgstr "unalias [-a] TÊN [TÊN ...]" +msgstr "unalias [-a] TÊN [TÊN …]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" @@ -2054,303 +2183,288 @@ msgstr "" "bind [-lpvsPVSX] [-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 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "builtin [SHELL-BUILTIN [Äá»I-Sá» ...]]" +msgstr "builtin [SHELL-BUILTIN [Äá»I-SỠ…]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [BTHỨC]" -#: builtins.c:64 +#: builtins.c:66 msgid "cd [-L|[-P [-e]] [-@]] [dir]" msgstr "cd [-L|[-P [-e]]] [-@]] [THƯ-MỤC]" -#: builtins.c:66 +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 -msgid "command [-pVv] command [arg ...]" -msgstr "command [-pVv] LỆNH [Ä.Sá» ...]" - #: builtins.c:76 -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilnrtux] [-p] [TÊN[=GIÃ-TRỊ] ...]" +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] LỆNH [Ä.SỠ…]" #: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] TÊN[=GIÃ-TRỊ] ..." +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [TÊN[=GIÃ-TRỊ] …]" #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] TÊN[=GIÃ-TRỊ] …" + +#: builtins.c:82 msgid "local [option] name[=value] ..." -msgstr "local [tùy_chá»n] TÊN[=GIÃ-TRỊ] ..." +msgstr "local [tùy_chá»n] TÊN[=GIÃ-TRỊ] …" -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" -msgstr "echo [-neE] [Ä.Sá» ...]" +msgstr "echo [-neE] [Ä.SỠ…]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" -msgstr "echo [-n] [Ä.Sá» ...]" - -#: builtins.c:90 -msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "enable [-a] [-dnps] [-f TẬP-TIN] [TÊN ...]" +msgstr "echo [-n] [Ä.SỠ…]" #: builtins.c:92 -msgid "eval [arg ...]" -msgstr "eval [Ä.Sá» ...]" +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f TẬP-TIN] [TÊN …]" #: builtins.c:94 +msgid "eval [arg ...]" +msgstr "eval [Ä.SỠ…]" + +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts CHUá»–I-TÙY-CHỌN TÊN [Ä.Sá»]" -#: builtins.c:96 -msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "exec [-cl] [-a TÊN] [LỆNH [Äá»I-Sá» ...]] [CHUYỂN-HƯỚNG ...]" - #: builtins.c:98 +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a TÊN] [LỆNH [Äá»I-SỠ…]] [CHUYỂN-HƯỚNG …]" + +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e ENAME] [-lnr] [ÄẦU] [CUá»I] hoặc fc -s [MẪU=LẶP_LẠI] [LỆNH]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [ÄTCV]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [ÄTCV ...]" +msgstr "bg [ÄTCV …]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" -msgstr "hash [-lr] [-p ÄÆ¯á»œNG-DẪN] [-dt] [TÊN ...]" +msgstr "hash [-lr] [-p ÄÆ¯á»œNG-DẪN] [-dt] [TÊN …]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" -msgstr "help [-dms] [MẪU ...]" +msgstr "help [-dms] [MẪU …]" -#: builtins.c:121 +#: builtins.c:123 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.TIN] hay history -ps Ä.Sá» " -"[Ä.Sá»...]" +"[Ä.Sá»â€¦]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [ÄTCV ...] hoặc jobs -x LỆNH [Äá»I-Sá»]" +msgstr "jobs [-lnprs] [ÄTCV …] hoặc jobs -x LỆNH [Äá»I-Sá»]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" -msgstr "disown [-h] [-ar] [ÄTCV ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [ÄTCV …]" -#: builtins.c:132 +#: builtins.c:134 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á» ...]" +"kill [-s ÄTTH | -n số_tín_hiệu | -ÄTTH] pid | ÄTCV … hoặc kill -l [ÄTTH]" #: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let Äá»I-Sá» [Äá»I-SỠ…]" + +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" "read [-ers] [-a 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 ...]" +"[-p NHẮC] [-t THỜI-HẠN] [-u fd] [TÊN …]" # nghÄ©a chữ -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 -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] [-n] [name ...]" -msgstr "unset [-f] [-v] [-n] [TÊN ...]" +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [-abefhkmnptuvxBCHP] [-o TÊN-TÙY-CHỌN] [--] [Äá»I-SỠ…]" #: builtins.c:144 -msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "export [-fn] [TÊN[=GIÃ-TRỊ] ...] hoặc export -p" +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [TÊN …]" #: builtins.c:146 -msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "readonly [-aAf] [TÊN[=GIÃ-TRỊ] ...] hay readonly -p" +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [TÊN[=GIÃ-TRỊ] …] hoặc export -p" #: builtins.c:148 +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [TÊN[=GIÃ-TRỊ] …] hay readonly -p" + +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 -msgid "source filename [arguments]" -msgstr "source TẬP-TIN [Äá»I-Sá» ...]" - #: builtins.c:152 -msgid ". filename [arguments]" -msgstr ". TẬP-TIN [Äá»I-Sá» ...]" +msgid "source filename [arguments]" +msgstr "source TẬP-TIN [Äá»I-SỠ…]" -#: builtins.c:155 +#: builtins.c:154 +msgid ". filename [arguments]" +msgstr ". TẬP-TIN [Äá»I-SỠ…]" + +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [BTHỨC]" -#: builtins.c:160 -msgid "[ arg... ]" -msgstr "[ Ä.Sá» ... ]" - #: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 -msgid "trap [-lp] [[arg] signal_spec ...]" -msgstr "trap [-lp] [[Ä.Sá»] ÄTTH ...]" +msgid "[ arg... ]" +msgstr "[ Ä.SỠ… ]" #: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[Ä.Sá»] ÄTTH …]" + +#: builtins.c:168 msgid "type [-afptP] name [name ...]" -msgstr "type [-afptP] TÊN [TÊN ...]" +msgstr "type [-afptP] TÊN [TÊN …]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [GIỚI-HẠN]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [GIỚI-HẠN]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [CHẾ-ÄỘ]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "wait [-n] [id ...]" +msgstr "wait [-n] [id …]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [pid ...]" - -#: builtins.c:182 -msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "for TÊN [in TỪ... ;] do CÃC;CÂU;LỆNH; done" +msgstr "wait [pid …]" #: builtins.c:184 +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for TÊN [in TỪ… ;] do CÃC;CÂU;LỆNH; done" + +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( BTHỨC1; BTHỨC2; BTHỨC3 )); do CÃC;CÂU;LỆNH; done" -#: builtins.c:186 -msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "select TÊN [in CÃC TỪ ... ;] do CÃC;CÂU;LỆNH; done" - #: builtins.c:188 +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select TÊN [in CÃC TỪ … ;] do CÃC;CÂU;LỆNH; done" + +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] á»NG-DẪN" -#: builtins.c:190 -msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "case TỪ in [MẪU [| MẪU]...) CÃC;CÂU;LỆNH;;]... esac" - #: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case TỪ in [MẪU [| MẪU]…) CÃC;CÂU;LỆNH;;]… esac" + +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "" -"if LỆNH; then CÃC;CÂU;LỆNH; [ elif CÃC;CÂU;LỆNH; then CÃC;CÂU;LỆNH; ]... " +"if LỆNH; then CÃC;CÂU;LỆNH; [ elif CÃC;CÂU;LỆNH; then CÃC;CÂU;LỆNH; ]… " "[ else CÃC;CÂU;LỆNH; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while CÃC;CÂU;LỆNH; do CÃC;CÂU;LỆNH; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until CÃC;CÂU;LỆNH; do CÃC;CÂU;LỆNH; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [TÊN] LỆNH [CHUYỂN-HƯỚNG]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function TÊN { CÃC;CÂU;LỆNH; } or TÊN () { CÃC;CÂU;LỆNH; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ CÃC;CÂU;LỆNH ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "ÄTCV [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( BTHỨC ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ BTHỨC ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "biến — tên và nghÄ©a cá»§a má»™t số biến hệ vá»" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | tmục]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 -msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "shopt [-pqsu] [-o] [tên-tùy-chá»n ...]" - #: builtins.c:226 +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [tên-tùy-chá»n …]" + +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v BIẾN] ÄỊNH-DẠNG [CÃC-Äá»I-Sá»]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2358,37 +2472,37 @@ msgid "" 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 ...]" +"HẬU-Tá»] [TÊN …]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" 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Ừ]" +"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 +#: builtins.c:239 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]" +msgstr "compopt [-o|+o TÙY-CHỌN] [-DE] [TÊN …]" #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d delim] [-n Sá»-LƯỢNG] [-O Gá»C] [-s Sá»-LƯỢNG] [-t] [-u fd] [-C " +"GỌI-NGƯỢC] [-c LƯỢNG] [MẢNG]" + +#: builtins.c:244 +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 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2400,7 +2514,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2409,38 +2523,39 @@ msgid "" msgstr "" "Äịnh nghÄ©a hoặc hiển thị bí danh.\n" "\n" -" Không đưa ra đối số thì “alias†in danh sách các bí danh theo mấu\n" +" Không đưa ra đối số thì “alias†in danh sách các bí danh ở dạng dùng lại " +"được\n" " “alias TÊN=GIÃ-TRỊ†trên đầu ra chuẩn.\n" "\n" -" Có đối số thì má»™t bí danh được định nghÄ©a cho má»—i TÊN theo giá trị\n" +" Nếu không thì má»™t bí danh được định nghÄ©a cho má»—i TÊN theo giá trị\n" " đưa ra. Khoảng trắng ở đâu trong GIÃ-TRỊ làm kiểm tra thay thế bí\n" " danh cho từ kế tiếp, khi phân giải bí danh.\n" -"\n" +" \n" " Tùy chá»n:\n" " -p\tin tất cả các bí danh được định nghÄ©a theo định dạng\n" " \tcó thể dùng lại được\n" -"\n" -" Trạng thái thoát:\n" -" alias trả lại thành công trừ khi TÊN đã cho không phải là\n" -" má»™t bí danh đã được định nghÄ©a" +" \n" +" Trạng thái thoát:\n" +" alias trả lại thành công trừ khi TÊN đã cho không phải là\n" +" má»™t bí danh đã được định nghÄ©a" -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" "Gỡ bá» TÊN khá»i danh sách các bí danh.\n" -"\n" +" \n" " Tùy chá»n:\n" " -a\tbá» tất cả các bí danh.\n" -"\n" +" \n" " Trả lại thành công trừ khi TÊN không phải là má»™t bí danh." -#: builtins.c:289 +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2474,19 +2589,20 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" "Äặt các tổ hợp phím và biến Readline.\n" -"\n" +" \n" " Gắn tổ hợp phím vá»›i má»™t chức năng hay vÄ© lệnh Readline, hoặc\n" " đặt biến Readline. Cú pháp đối số không tùy chá»n giống như trong\n" -" ~/.inputrc, nhưng phải được gá»­i dưới dạng đối số đơn. Ví\n" +" ~/.inputrc, nhưng phải được chuyển qua dưới dạng đối số đơn. Ví\n" " dụ: bind “\"\\C-x\\C-r\": re-read-init-fileâ€.\n" -"\n" +" \n" " Tùy chá»n:\n" " -m SÆ -Äá»’-PHÃM dùng sÆ¡_đồ_phím làm sÆ¡ đồ phím khi lệnh này\n" " chạy. Giá trị hợp lệ là emacs, emacs-standard,\n" @@ -2496,11 +2612,10 @@ msgstr "" " -P Liệt kê tên hàm và tổ hợp phím\n" " -p Liệt kê tên hàm 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 mà gá»i vÄ© lệnh và các giá-trị " -"cá»§a chúng\n" -" -s Liệt kê chuá»—i phím mà gá»i vÄ© lệnh và các giá-trị " -"cá»§a chúng\n" -" theo định dạng có thể dùng làm đầu vào\n" +" -S Liệt kê chuá»—i phím mà gá»i vÄ© lệnh và các giá-trị\n" +" cá»§a chúng\n" +" -s Liệt kê chuá»—i phím mà gá»i vÄ© lệnh và các giá-trị\n" +" cá»§a chúng theo định dạng có thể dùng làm đầu vào\n" " -V Liệt kê các biến và giá trị cá»§a chúng\n" " -v Liệt kê các biến và giá trị cá»§a chúng\n" " theo định dạng có thể tái sá»­ dụng làm đầu vào.\n" @@ -2509,13 +2624,14 @@ msgstr "" " -r DÃY-PHÃM Gỡ bá» tổ hợp phím này\n" " -f TẬP-TIN Äá»c tổ hợp phím từ tập tin này\n" " -x DÃY-PHÃM:LỆNH Chạy LỆNH khi nhập DÃY-PHÃM\n" -" -X\t\t Liệt kê dãy phím vá»›i tùy-chá»n -x và các lệnh kết hợp\n" +" -X Liệt kê dãy phím vá»›i tùy-chá»n -x và các lệnh kết " +"hợp\n" " theo dạng có thể dùng làm đầu vào.\n" -"\n" +" \n" " Trạng thái thoát:\n" -" lệnh bind trả vá»i 0 trừ khi đưa ra tùy chá»n không nhận ra hay gặp lá»—i." +" lệnh bind trả vá» 0 trừ khi đưa ra tùy chá»n không nhận ra hay gặp lá»—i." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2533,7 +2649,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:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2551,7 +2667,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:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2564,17 +2680,17 @@ msgid "" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." msgstr "" -"Chạy lệnh dá»±ng sẵn hệ vá».\n" +"Chạy lệnh tích hợp hệ vá».\n" "\n" " Chạy SHELL-BUILTIN vá»›i Äá»I-Sá» mà không thá»±c hiện tìm lệnh. Hữu ích\n" -" khi bạn muốn cài đặt lại lệnh hệ vá» dá»±ng sẵn dạng hàm hệ vá», nhưng\n" -" cần chạy lệnh dá»±ng sẵn trong hàm đó.\n" +" khi bạn muốn cài đặt lại lệnh hệ vá» tích hợp dạng hàm hệ vá», nhưng\n" +" cần chạy lệnh tích hợp trong hàm đó.\n" "\n" " Trạng thái thoát:\n" " 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 hệ vá»." +" SHELL-BUILTIN không phải là má»™t lệnh tích hợp hệ vá»." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2601,7 +2717,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại 0 trừ khi hệ vá» Ä‘ang chạy hàm hệ vá», BTHỨC cÅ©ng hợp lệ." -#: builtins.c:385 +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2624,16 +2740,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2650,8 +2766,9 @@ msgstr "" " Chuyển đổi thư mục hiện thá»i sang THƯ-MỤC. Thư mục mặc định là giá\n" " trị cá»§a biến HOME.\n" " \n" -" Biến CDPATH xác định đưá»ng dẫn tìm kiếm cho thư mục chứa\n" -" THƯ-MỤC. Tên thư mục trong CDPATH được phân cách bằng dấu hai chấm\n" +" Biến CDPATH định nghÄ©a đưá»ng dẫn tìm kiếm cho thư mục chứa\n" +" THƯ-MỤC. Tên thư mục thay thế trong CDPATH được phân cách bằng dấu hai " +"chấm\n" " (:). Tên thư mục trống tương đương vá»›i thư mục hiện tại. Nếu\n" " THƯ-MỤC bắt đầu vá»›i dấu gạch chéo (/) thì không dùng CDPATH.\n" " \n" @@ -2666,9 +2783,9 @@ msgstr "" " \tphân giải liên kết má»m TH.MỤC sau khi xá»­ lý “..â€\n" " -e nếu có tùy chá»n -P và không thể xác định thư mục làm việc\n" " \thiện tại thì thoát vá»›i trạng thái khác không\n" -" -@ trên các hệ thống mà há»— trợ nó, hiện diện má»™t tập tin vá»›i các " -"thuá»™c tính mở rá»™ng\n" -" như là má»™t thư mục chứa các thuá»™c tính tập tin\n" +" -@ trên các hệ thống mà há»— trợ nó, hiện diện má»™t tập tin vá»›i các\n" +" thuá»™c tính mở rá»™ng như là má»™t thư mục chứa các thuá»™c tính tập " +"tin\n" " \n" " Mặc định là theo liên kết má»m, như có mặt tùy chá»n “-Lâ€.\n" " “..†được xá»­ lý bằng cách gỡ bá» phần trước cá»§a đưá»ng dẫn\n" @@ -2678,13 +2795,13 @@ 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:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2696,8 +2813,8 @@ msgstr "" "In tên thư mục hiện tại.\n" " \n" " Tùy chá»n:\n" -" -L\tin $PWD nếu nó chứa tên cá»§a thư mục hiện tại\n" -" -P\tin thư mục vật lý, không liên kết má»m\n" +" -L in giá trị cá»§a $PWD nếu nó chứa tên cá»§a thư mục hiện tại\n" +" -P in thư mục vật lý, không liên kết má»m\n" " \n" " Mặc định “pwd†chạy như có mặt “-Lâ€.\n" " \n" @@ -2705,7 +2822,7 @@ msgstr "" " Trả vá» 0 trừ khi đưa ra tùy chá»n sai hoặc không Ä‘á»c được thư mục hiện " "tại." -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2721,7 +2838,7 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cÅ©ng thành công." -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2733,7 +2850,7 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cÅ©ng thành công." -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2745,7 +2862,7 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cÅ©ng không thành công." -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2755,31 +2872,31 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" "Thá»±c thi má»™t lệnh đơn giản, hoặc hiển thị thông tin vá» lệnh.\n" -"\n" +" \n" " Chạy LỆNH vá»›i các Äá»I-Sá» mà không thá»±c hiện tra cứu hàm hệ vá»,\n" " hoặc hiển thị thông tin vá» LỆNH. Có thể được dùng để gá»i lệnh trên\n" " đĩa khi đã có hàm cùng tên.\n" -"\n" +" \n" " Tùy chá»n:\n" -" -p\tdùng giá trị mặc định cho ÄÆ¯á»œNG_DẪN\n" -" \tmà chắc chắn sẽ tìm má»i tiện ích chuẩn\n" -" -v\tin mô tả vá» LỆNH mà tương tá»± như lệnh dá»±ng sẵn “typeâ€\n" -" -V\tin mô tả chi tiết hÆ¡n cá»§a má»—i LỆNH\n" -"\n" +" -p dùng giá trị mặc định cho ÄÆ¯á»œNG_DẪN\n" +" mà chắc chắn sẽ tìm má»i tiện ích chuẩn\n" +" -v in mô tả vá» LỆNH mà tương tá»± như lệnh tích hợp “typeâ€\n" +" -V in mô tả chi tiết hÆ¡n cá»§a má»—i LỆNH\n" +" \n" " Trạng thái thoát:\n" " 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:487 +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2789,9 +2906,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2824,7 +2941,7 @@ msgstr "" " hiển thị thuá»™c tính và giá trị cá»§a má»i biến.\n" " \n" " Tùy chá»n:\n" -" -f\thạn chế hành động hoặc hiển thị chỉ tên hàm và định nghÄ©a\n" +" -f\thạn chế hành động hoặc hiển thị tên hàm và định nghÄ©a\n" " -F\thạn chế hiển thị chỉ tên hàm mà thôi\n" " \t(và số thứ tá»± dòng và tập tin nguồn khi gỡ lá»—i)\n" " -g\ttạo biến toàn cục khi sá»­ dụng trong hàm hệ vá»; nếu không\n" @@ -2845,25 +2962,26 @@ msgstr "" " Dùng “+†thay cho “-†để tắt thuá»™c tính đưa ra.\n" " \n" " Biến có thuá»™c tính số nguyên thì định giá theo số há»c (xem lệnh\n" -" “letâ€. khi biến được gán.\n" +" “let†khi biến được gán.\n" " \n" " Khi dùng trong hàm, “declare†đặt TÊN là cục bá»™, như khi dùng lệnh\n" " “local†(cục bá»™). Tùy chá»n -g ngăn hành vi này.\n" " \n" " 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." +" Trả lại thành công trừ khi đưa ra tùy chá»n sai hoặc gặp lá»—i khi gán biến." -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "Äặt giá trị và thuá»™c tính cá»§a biến.\n" "\n" " Lệnh này đã lạc hậu. Xem “help declareâ€." -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2889,7 +3007,7 @@ 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 hệ vá» không chạy hàm." -#: builtins.c:552 +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2915,29 +3033,30 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" "Ghi đối số vào đầu ra tiêu chuẩn.\n" " \n" -" Hiển thị các Äá»I-Sá» ra đầu ra tiêu chuẩn, kèm ký tá»± xuống hàng ở cuối.\n" +" Hiển thị các Äá»I-Sá», ngăn cách bằng dấu cách đơn và kèm ký tá»± dòng má»›i\n" +" ra đầu ra tiêu chuẩn .\n" " \n" " Tùy chá»n:\n" -" -n\tđừng thêm ký tá»± xuống hàng\n" +" -n\tđừng thêm ký tá»± dòng má»›i\n" " -e\tbật diá»…n dịch ký tá»± thoát theo sau ký tá»± “\\â€\n" " -E\tchặn diá»…n dịch ký tá»± thoát\n" " \n" " “echo†hiểu những ký tá»± thoát sau:\n" " \\a\ttiếng chuông\n" -" \\b\txoá lùi\n" +" \\b\txóa lùi\n" " \\c\tchặn kết xuất tiếp\n" " \\e\tký tá»± thoát\n" " \\E\tký tá»± thoát\n" -" \\f\tnạp giấy\n" +" \\f\ttải giấy\n" " \\n\tdòng má»›i\n" " \\r\txuống dòng\n" " \\t\ttab đứng\n" @@ -2949,7 +3068,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không gặp lá»—i khi ghi." -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2971,7 +3090,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:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2997,31 +3116,31 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -"Bật và tắt lệnh hệ vá» dá»±ng sẵn.\n" +"Bật và tắt lệnh hệ vá» tích hợp.\n" "\n" -" Bật và tắt các lệnh hệ vá» dá»±ng sẵn. Chức năng tắt cho phép bạn\n" -" chạy má»™t lệnh trên đĩa cùng tên vá»›i má»™t lệnh hệ vá» dá»±ng sẵn mà\n" +" Bật và tắt các lệnh hệ vá» tích hợp. Chức năng tắt cho phép bạn\n" +" chạy má»™t lệnh trên đĩa cùng tên vá»›i má»™t lệnh hệ vá» tích hợp mà\n" " không cần dùng tên đưá»ng dẫn đầy đủ.\n" "\n" " Tùy chá»n:\n" -" -a in danh sách các lệnh dá»±ng sẵn kèm trạng thái bật/tắt\n" +" -a in danh sách các lệnh tích hợp kèm trạng thái bật/tắt\n" " -n tắt TÊN hoặc hiển thị danh sách lệnh bị tắt\n" -" -p in danh sách lệnh dá»±ng sẵn theo định dạng dùng lại được\n" -" -s chỉ in tên các lệnh dá»±ng sẵn Posix “đặc biệtâ€\n" +" -p in danh sách lệnh tích hợp theo định dạng dùng lại được\n" +" -s chỉ in tên các lệnh tích hợp Posix “đặc biệtâ€\n" "\n" -" Tùy chá»n Ä‘iá»u khiển chức năng nạp động:\n" -" -f nạp lệnh dá»±ng sẵn TÊN từ TẬP-TIN\n" -" -d bá» má»™t dá»±ng sẵn được nạp bằng “-fâ€\n" +" Tùy chá»n Ä‘iá»u khiển chức năng tải động:\n" +" -f nạp lệnh tích hợp TÊN từ TẬP-TIN\n" +" -d bá» má»™t tích hợp được nạp bằng “-fâ€\n" "\n" " Không có tùy chá»n thì coi như bật TÊN.\n" "\n" " Äể sá»­ dụng lệnh “test†trên đĩa (nếu tìm thấy trong $PATH) thay\n" -" cho phiên bản hệ vá» dá»±ng sẵn, gõ “enable -n testâ€.\n" +" cho phiên bản hệ vá» tích hợp, gõ “enable -n testâ€.\n" "\n" " 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." +" Trả lại thành công trừ khi TÊN không phải lệnh tích hợp hoặc gặp lá»—i." -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3040,7 +3159,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:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3082,10 +3201,10 @@ msgid "" msgstr "" "Phân tích đối số tùy chá»n.\n" "\n" -" Getopts được hệ vá» dùng để phân tích tham số thành tuỳ chá»n.\n" +" Getopts được hệ vá» dùng để phân tích tham số thành tùy chá»n.\n" "\n" -" CHUá»–I-TUỲ-CHỌN chứa những chữ tùy chá»n cần nhận ra; má»™t chữ có dấu hai\n" -" chấm theo sau thì tùy chá»n cần đối số, cách tuỳ chá»n bằng khoảng\n" +" CHUá»–I-TÙY-CHỌN chứa những chữ tùy chá»n cần nhận ra; má»™t chữ có dấu hai\n" +" chấm theo sau thì tùy chá»n cần đối số, cách tùy chá»n bằng khoảng\n" " trắng.\n" "\n" " Má»—i lần gá»i, getopts sẽ đặt tùy chá»n kế tiếp vào biến hệ vá» $TÊN,\n" @@ -3095,18 +3214,18 @@ msgstr "" " đối số, getopts đặt đối số đó vào biến hệ vá» OPTARG.\n" "\n" " getopts thông báo lá»—i bằng má»™t trong hai cách. Nếu ký tá»± đầu tiên\n" -" cá»§a CHUá»–I-TUỲ-CHỌN là dấu hai chấm, getopts thông báo lá»—i im\n" +" cá»§a CHUá»–I-TÙY-CHỌN là dấu hai chấm, getopts thông báo lá»—i im\n" " lặng. Chế độ này không in ra thông báo nào. Nếu gặp tùy chá»n sai\n" -" thì getopts lưu mã ký tá»± tuỳ chá»n trong biến OPTARG. Không tìm\n" +" thì getopts lưu mã ký tá»± tùy chá»n trong biến OPTARG. Không tìm\n" " thấy đối số cần thiết thì getopts lưu dấu hai chấm trong biến $TÊN\n" -" và đặt lưu mã ký tá»± tuỳ chá»n trong OPTARG. Nếu getopts không trong\n" +" và đặt lưu mã ký tá»± tùy chá»n trong OPTARG. Nếu getopts không trong\n" " chế độ im lặng và gặp tùy chá»n sai, getopts lưu dấu há»i “?†vào\n" -" biến $TÊN và xoá OPTARG. Không tìm thấy tùy chá»n cần thiết thì “?â€\n" +" biến $TÊN và xóa OPTARG. Không tìm thấy tùy chá»n cần thiết thì “?â€\n" " được lưu vào $TÊN, OPTARG bị xlá, và in ra má»™t thông Ä‘iệp chẩn\n" " Ä‘oán.\n" "\n" " Nếu biến hệ vá» OPTERR có giá trị 0, getopts sẽ không in thông báo\n" -" kể cả khi ký tá»± đầu tiên cá»§a CHUá»–I-TUỲ-CHỌN không phải dấu hai\n" +" kể cả khi ký tá»± đầu tiên cá»§a CHUá»–I-TÙY-CHỌN không phải dấu hai\n" " chấm. OPTERR có giá trị mặc định là 1.\n" "\n" " Getopts bình thưá»ng phân tích tham số vị trí ($0 - $9). Tuy nhiên,\n" @@ -3116,7 +3235,7 @@ 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:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3127,8 +3246,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3139,23 +3258,24 @@ msgid "" "occurs." msgstr "" "Thay thế hệ vá» bằng câu lệnh đưa ra.\n" -"\n" +" \n" " Thá»±c thi LỆNH, thay thế hệ vá» này bằng chương trình được chạy.\n" -" Äá»I-Sá» là đối số cá»§a LỆNH. Không xác định LỆNH thì bất cứ chuyển\n" +" Äá»I-Sá» trở thành đối số cá»§a LỆNH. Không định nghÄ©a LỆNH thì bất cứ " +"chuyển\n" " hướng nào sẽ xảy ra trong hệ vá» Ä‘ang chạy.\n" -"\n" +" \n" " Tùy chá»n:\n" " -a TÊN\ttruyá»n TÊN cho LỆNH dạng đối số thứ không\n" " -c\tthá»±c thi LỆNH vá»›i má»™t môi trưá»ng rá»—ng\n" " -l\tđặt má»™t dấu gạch vào đối số thứ không cá»§a LỆNH\n" -"\n" +" \n" " Nếu LỆNH không thể thá»±c thi, hệ vá» không tương tác sẽ thoát, trừ\n" " khi đặt tùy chá»n hệ vỠ“execfailâ€.\n" -"\n" +" \n" " 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:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3167,7 +3287,7 @@ msgstr "" " Thoát khá»i hệ vá» 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:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3180,7 +3300,7 @@ msgstr "" " Thoát khá»i hệ vỠđăng nhập vá»›i trạng thái N. Trả vá» lá»—i nếu không\n" " phải hệ vỠđăng nhập." -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3217,22 +3337,22 @@ msgstr "" "\n" " Tùy chá»n:\n" " -e ENAME\tchá»n trình soạn thảo nào cần dùng.\n" -" \tMặc định là FCEDIT, rồi EDITOR, rồi vi\n" +" \tMặc định là FCEDIT, sau đó là EDITOR, rồi đến vi\n" " -l\tliệt kê thay vì chỉnh sá»­a\n" " -n\tliệt kê không in số thứ tá»± dòng\n" " -r\tđảo ngược thứ tá»± các dòng (má»›i nhất trước)\n" "\n" -" Äịnh dạng “fc -s [mẫu=lần_lập_lại ...] [lệnh]†được dùng để chạy\n" +" Äịnh dạng “fc -s [mẫu=lần_lập_lại …] [lệnh]†được dùng để chạy\n" " lại lệnh sau khi thay thế CŨ=MỚI.\n" "\n" -" Má»™t bí danh hữu ích là r='.c -s' để có thể gõ “r cc†để chạy lệnh\n" +" Má»™t bí danh hữu ích là r=\".c -s\" để có thể gõ “r cc†để chạy lệnh\n" " cuối cùng bắt đầu bằng “cc†và gõ “r†để chạy lại lệnh cuối.\n" "\n" " Trạng thái thoát:\n" " 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:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3245,7 +3365,7 @@ msgid "" msgstr "" "Nâng công việc ná»n lên trước.\n" "\n" -" Nâng lên trước công việc được xác định bởi đặc tả công việc ÄTCV\n" +" Nâng lên trước công việc được định nghÄ©a bởi đặc tả công việc ÄTCV\n" " làm công việc hiện thá»i. Không có ÄTCV thì dùng công việc hiện\n" " thá»i cá»§a hệ vá».\n" "\n" @@ -3253,7 +3373,7 @@ 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:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3268,7 +3388,7 @@ msgid "" msgstr "" "Chuyển công việc xuống chạy ná»n.\n" "\n" -" Chuyển công việc xác định theo đặc tả công việc ÄTCV sang chạy\n" +" Chuyển công việc định nghÄ©a theo đặc tả công việc ÄTCV sang chạy\n" " ná»n, như thể lệnh được chạy vá»›i “&â€. Nếu không có ÄTCV, dùng công\n" " việc hiện thá»i cá»§a hệ vá».\n" "\n" @@ -3276,7 +3396,7 @@ 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:784 +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3285,42 +3405,42 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" "Nhá»› hoặc hiển thị vị trí chương trình.\n" -"\n" +" \n" " Xác định và ghi nhá»› tên đưá»ng dẫn đầy đủ cá»§a má»—i TÊN câu lệnh.\n" " Nếu không đưa ra đối số, hiển thị thông tin vá» các câu lệnh được\n" " ghi nhá»›.\n" -"\n" +" \n" " Tùy chá»n:\n" -" -d\t\tquên vị trí đã nhá»› cá»§a TÊN\n" -" -l\t\thiển thị theo định dạng dùng lại làm đầu vào được\n" +" -d\tquên vị trí đã nhá»› cá»§a TÊN\n" +" -l\thiển thị theo định dạng dùng lại làm đầu vào được\n" " -p\tTÊN_ÄÆ¯á»œNG_DẪN\tdùng TÊN_ÄÆ¯á»œNG_DẪN là tên đưá»ng dẫn đầy đủ cá»§a TÊN\n" -" -r\t\tquên má»i vị trí đã nhá»›\n" -" -t\t\tin vị trí đã nhá»› cá»§a TÊN, in tên trước vị\n" -" trí nếu TÊN tương ứng vá»›i nhiá»u vị trí\n" -"\n" +" -r\tquên má»i vị trí đã nhá»›\n" +" -t\tin vị trí đã nhá»› cá»§a TÊN, in tên trước vị\n" +" \t\ttrí nếu TÊN tương ứng vá»›i nhiá»u vị trí\n" +" \n" " Äối số:\n" -" TÊN\t\tmá»—i TÊN được tìm trong $PATH và được thêm vào\n" +" TÊN\tmá»—i TÊN được tìm trong $PATH và được thêm vào\n" " \t\tdanh sách các câu lệnh được ghi nhá»›.\n" "\n" " 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:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3332,7 +3452,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3341,25 +3461,26 @@ msgid "" " 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" -" Hiển thị bản tóm tắt ngắn vá» các câu lệnh dá»±ng sẵn. Nếu cÅ©ng ghi\n" -" rõ MẪU thì in ra trợ giúp chi tiết vá» tất cả các câu lệnh tương\n" -" ứng vá»›i mẫu đó ; không thì in ra danh sách các chá»§ đỠtrợ giúp.\n" -"\n" +"Hiển thị thông tin vá» lệnh tích hợp.\n" +" \n" +" Hiển thị bản tóm tắt ngắn vá» các câu lệnh tích hợp. Nếu chỉ định\n" +" MẪU thì in ra trợ giúp chi tiết vá» tất cả các câu lệnh tương\n" +" ứng vá»›i mẫu đó; không thì in ra danh sách các chá»§ đỠtrợ giúp.\n" +" \n" " Tùy chá»n:\n" " -d\txuất mô tả ngắn vá» má»—i chá»§ Ä‘á»\n" -" -m\thiệnn cách dùng theo định dạng trang hướng dẫn (man)\n" -" -s\txuất chỉ má»™t bản tóm tắt cách dìng cho má»—i\n" -" \tchá»§ đỠtương ứng vá»›i MẪU\n" -"\n" +" -m\thiện cách dùng theo định dạng trang hướng dẫn (man)\n" +" -s\txuất chỉ má»™t bản tóm tắt cách dùng cho má»—i\n" +" \t\tchá»§ đỠtương ứng vá»›i MẪU\n" +" \n" " Äối số:\n" -" MẪU\tmẫu các định má»™t chá»§ đỠtrợ giúp\n" -"\n" +" MẪU\tmẫu xác định má»™t chá»§ đỠtrợ giúp\n" +" \n" " 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:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3368,23 +3489,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3393,39 +3514,38 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" "Hiển thị hoặc thao tác danh sách lịch sá»­.\n" -"\n" +" \n" " Hiển thị danh sách lịch sá»­ kèm số dòng, “*†ở đầu dòng cho các mục\n" " nhập bị sá»­a đổi. Äối số N thì liệt kê chỉ N mục tin cuối cùng.\n" -"\n" +" \n" " Tùy chá»n:\n" -" -c\txoá sạch danh sách lịch sá»­ bằng cách xoá má»i mục tin\n" -" -d offset\txoá mục tin lịch sá»­ ở vị trí tương đối này\n" -"\n" +" -c\txóa sạch danh sách lịch sá»­ bằng cách xóa má»i mục tin\n" +" -d offset\txóa mục tin lịch sá»­ ở vị trí tương đối này\n" +" \n" " -a\tnối Ä‘uôi lịch sá»­ từ phiên làm việc này vào tập tin\n" " \tlịch sá»­.\n" " -n\tÄ‘á»c má»i dòng lịch sá»­ chưa Ä‘á»c từ tập tin lịch sá»­\n" " -r\tÄ‘á»c tập tin lịch sá»­ và nối thêm vào danh sách lịch sá»­\n" " -w\tghi lịch sá»­ hiện thá»i vào tập tin lịch sá»­,\n" " \tvào nối Ä‘uôi vào danh sách lịch sá»­\n" -"\n" +" \n" " -p\tkhai triển lịch sá»­ vá»›i má»—i Äá»I-Sá» và hiển thị kết quả\n" " \tmà không lưu vào danh sách lịch sá»­\n" " -s\tnối Ä‘uôi Äá»I-Sá» vào danh sách lịch sá»­ làm má»™t mục đơn\n" -"\n" +" \n" " Nếu có TẬP-TIN thì nó được dùng làm tập tin lịch sá»­. Ngược\n" " lại, nếu $HISTFILE có giá trị thì dùng; nếu $HISTFILE không có giá\n" " trị thì dùng “~/.bash_historyâ€.\n" -"\n" +" \n" " Nếu biến $HISTTIMEFORMAT đã được đặt và khác rá»—ng, giá trị đó được\n" " dùng làm chuá»—i định dạng cho strftime(3) để in nhãn thá»i gian\n" " tương ứng vá»›i má»—i mục tin lịch sá»­ được hiển thị. Ngược lại không\n" " in nhãn thá»i gian.\n" -"\n" +" \n" " 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:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3435,7 +3555,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3449,26 +3569,26 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" "Hiển thị trạng thái cá»§a công việc.\n" -"\n" +" \n" " Liệt kê các công việc Ä‘ang chạy. Äặc tả công việc ÄTCV hạn chế chỉ\n" " hiện công việc đó thôi. Không có tùy chá»n thì hiển thị trạng thái\n" " cá»§a má»i công việc Ä‘ang chạy.\n" -"\n" +" \n" " Tùy chá»n:\n" " -l\tliệt kê mã số tiến trình ngoài thông tin bình thưá»ng\n" " -n\tliệt kê chỉ những tiến trình đã thay đổi trạng thái\n" " \tkể từ lần thông báo cuối cùng\n" " -s\tchỉ hiện những công việc Ä‘ang dừng chạy\n" -"\n" +" \n" " Nếu có “-x†thì chạy LỆNH sau khi thay thế tất cả đặc tả công việc\n" " trên đối số bằng mã tiến trình cá»§a trình dẫn đầu nhóm tiến trình\n" " cá»§a công việc đó.\n" -"\n" +" \n" " 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.\n" " ÄÆ°a ra “-x†thì trả lại trạng thái thoát cá»§a LỆNH." -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3478,28 +3598,29 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" "Bá» công việc khá»i hệ vá» Ä‘ang chạy.\n" -"\n" -" Gỡ bá» công việc xác định bởi đặc tả công việc ÄTCV. Không có đối\n" -" số thì dùng công việc hiện thá»i cá»§a hệ vá».\n" -"\n" +" \n" +" Gỡ bá» công việc xác định bởi đặc tả công việc ÄTCV ra khá»i bảng các\n" +" công việc hoạt động. Không có ÄTCV thì dùng công việc hiện thá»i cá»§a hệ " +"vá».\n" +" \n" " Tùy chá»n:\n" " -a\tbá» má»i công việc nếu không có ÄTCV\n" " -h\tđánh dấu ÄTCV để không gá»­i tín hiệu SIGHUP\n" " \tcho công việc khi hệ vá» nhận được SIGHUP\n" " -r\tchỉ bá» những công việc Ä‘ang chạy\n" -"\n" +" \n" " 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\n" -" ÄTCV sai." +" Trả lại thành công nếu không đưa ra tùy chá»n hay ÄTCV sai." -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3511,7 +3632,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3521,25 +3643,25 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" "Gá»­i tín hiệu cho công việc.\n" -"\n" +" \n" " Gá»­i tín hiệu xác định bởi SIGSPEC hoặc SIGNUM cho những tiến trình\n" -" xác định bởi PID hoặc JOBSPEC. Nếu không xác định cả SIGSPEC và\n" -" SIGNUM thì ngầm định SIGTERM.\n" -"\n" +" xác định bởi PID hoặc JOBSPEC. Nếu SIGSPEC và SIGNUM không hiện diện\n" +" thì ngầm định SIGTERM.\n" +" \n" " Tùy chá»n:\n" " -s TTH\tTTH là tên tín hiệu\n" " -n STH\tSTH là mã số tín hiệu\n" " -l\tliệt kê tên tín hiệu; đối số sau “-l†nếu có được coi\n" " \tlà mã số tín hiệu cần hiện tên\n" -"\n" -" Kill là lệnh hệ vá» dá»±ng sẵn vì hai lý do: nó cho phép dùng mã số\n" +" \n" +" Kill là lệnh hệ vá» tích hợp vì hai lý do: nó cho phép dùng mã số\n" " công việc thay cho mã số tiến trình và cho phép giết tiến trình\n" " đạt giá»›i hạn số các tiến trình được phép tạo.\n" -"\n" +" \n" " 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:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3623,7 +3745,7 @@ 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:983 +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3644,27 +3766,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3673,24 +3796,26 @@ msgid "" "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" -"\n" -" Äá»c má»™t dòng từ đầu nhập chuẩn, hoặc từ bá»™ mô tả tập tin FD nếu\n" +"Äá»c má»™t dòng từ đầu vào tiêu chuẩn và tách ra nhiá»u trưá»ng.\n" +" \n" +" Äá»c má»™t dòng từ đầu vào tiêu chuẩn, hoặc từ bá»™ mô tả tập tin FD nếu\n" " dùng tùy chá»n “-uâ€. Dòng được chia ra nhiá»u trưá»ng, trưá»ng đầu\n" " tiên được gán cho biến TÊN đầu tiên, từ thứ hai cho TÊN thứ hai,\n" -" v.v., và từ còn lại nào được gán cho TÊN cuối cùng. Chỉ những ký\n" +" và cứ như vậy, và từ còn lại nào được gán cho TÊN cuối cùng. Chỉ những " +"ký\n" " tá»± trong $IFS được coi là ký tá»± phân cách.\n" -"\n" +" \n" " Không có TÊN thì dòng được Ä‘á»c sẽ lưu vào biến REPLY.\n" -"\n" +" \n" " Tùy chá»n:\n" " -a MẢNG\tlưu các trưá»ng vào biến mảng chỉ số MẢNG theo thứ tá»±,\n" " \tbắt đầu từ không.\n" -" -d DELIM\ttiếp tục đến khi Ä‘á»c ký tá»± đầu tiên cá»§a DELIM thay\n" -" \t\tvì ký tá»± xuống dòng\n" -" -e\t\tdùng Readline để lấy dòng trong hệ vá» tương tác\n" +" -d NGÄ‚N_CÃCH\ttiếp tục đến khi Ä‘á»c ký tá»± đầu tiên cá»§a DELIM thay\n" +" \t\tcho ký tá»± xuống dòng\n" +" -e \tdùng Readline để lấy dòng trong hệ vá» tương tác\n" " -i CHUá»–I\tdùng CHUá»–I làm văn bản đầu tiên cho Readline\n" -" -n nChữ\ttrả vá» sau khi Ä‘á»c số lượng ký tá»± này thay vì Ä‘á»c hết dòng\n" +" -n nChữ\ttrả vá» sau khi Ä‘á»c đủ số lượng ký tá»± này thay vì Ä‘á»c hết " +"dòng\n" " \t\tnhưng nếu gặp chuá»—i phân tách khi ít hÆ¡n Nchữ\n" " \t\tcác ký tá»± được Ä‘á»c trước chuá»—i phân tách\n" " -N N\ttrả vá» chỉ sau khi Ä‘á»c chính xác số lượng ký tá»± này,\n" @@ -3709,12 +3834,12 @@ msgstr "" " \tmô tả tập tin đưa ra. Trạng thái thoát lá»›n hÆ¡n 128\n" " \tnếu vượt quá thá»i hạn này.\n" " -u FD\tÄ‘á»c từ bá»™ mô tả tập tin FD thay cho đầu vào tiêu chuẩn\n" -"\n" +" \n" " Trạng thái thoát:\n" " Mã trả lại là số không, nếu không gặp kết thúc tập tin, hay chá» quá\n" " lâu, hoặc đưa ra bá»™ mô tả tập tin sai làm đối số cho “-uâ€." -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3735,7 +3860,8 @@ msgstr "" " Trả lại N, hoặc bị lá»—i nếu hệ vá» không Ä‘ang chạy má»™t hàm hay văn\n" " lệnh." -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3803,7 +3929,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3819,7 +3946,7 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" -"Äặt hay huá»· giá trị cá»§a tùy chá»n hệ vá» và tham số vị trí.\n" +"Äặt hay há»§y giá trị cá»§a tùy chá»n hệ vá» và tham số vị trí.\n" " \n" " Sá»­a đổi giá trị cá»§a thuá»™c tính hệ vá» và tham số vị trí,\n" " hoặc hiển thị tên và giá trị cá»§a biến hệ vá».\n" @@ -3906,7 +4033,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ phi gặp tùy chá»n sai." -#: builtins.c:1126 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3916,7 +4043,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3927,25 +4054,25 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -"Xoá giá trị và thuá»™c tính biến và hàm hệ vá».\n" +"Xóa giá trị và thuá»™c tính cá»§a biến hệ vá» và các hàm.\n" " \n" " Äối vá»›i má»—i TÊN, gỡ bá» biến hay hàm tương ứng.\n" " \n" " Tùy chá»n:\n" -" -f\tÄ‘á»c TÊN dạng hàm hệ vá»\n" -" -v\tÄ‘á»c TÊN dạng biến hệ vá»\n" -" -n\tcoi TÊN như là tên tham chiếu và bỠđặt biến tá»± tham chiếu\n" +" -f\tcoi má»—i TÊN là hàm hệ vá»\n" +" -v\tcoi má»—i TÊN là biến hệ vá»\n" +" -n\tcoi TÊN như là tên tham chiếu và bỠđặt biến đó thay vì\n" +" biến mà nó tham chiếu đến\n" " \n" -" Không có tùy chá»n thì sẽ thá»­ xoá biến, và nếu không thành công,\n" -" sau đó thá»­ xoá hàm.\n" +" Không có tùy chá»n thì sẽ thá»­ xóa biến, và nếu không thành công,\n" +" sau đó thá»­ xóa hàm.\n" " \n" " Má»™t số biến không thể gỡ bá»; nên xem “readonlyâ€.\n" " \n" -" \n" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chá»n sai hay TÊN chỉ-Ä‘á»c." -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3973,12 +4100,12 @@ msgstr "" " -n\tgỡ bá» thuá»™c tính xuất khẩu khá»i TÊN\n" " -p\thiển thị danh sách các biến và hàm được xuất ra\n" "\n" -" Äối số “--†ngừng phân tích tuỳ chá»n cho các tham số còn lại.\n" +" Äối số “--†ngừng phân tích tùy chá»n cho các tham số còn lại.\n" "\n" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chá»n hay TÊN sai," -#: builtins.c:1167 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3990,9 +4117,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -4000,24 +4126,24 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" "Äánh dấu biến hệ vá» là không thể thay đổi.\n" -"\n" -" Äánh dấu TÊN là chỉ Ä‘á»c; giá trị những biến này không được thay\n" +" \n" +" Äánh dấu TÊN là chỉ Ä‘á»c; giá trị những TÊN này không được thay\n" " đổi trong các phép gán sau. Nếu có GIÃ-TRỊ thì gán GIÃ-TRỊ trước\n" " khi đánh dấu là chỉ Ä‘á»c.\n" -"\n" +" \n" " Tùy chá»n:\n" " -a\ttham chiếu đến biến kiểu mảng chỉ số\n" " -A\ttham chiếu đến biến kiểu mảng kết hợp\n" " -f\ttham chiếu đến hàm hệ vá»\n" " -p\thiển thị danh sách biến và hàm chỉ Ä‘á»c, tùy thuá»™c vào\n" -" có tùy chá»n -f hay không\n" -" \n" -" Äối số “--†ngừng phân tích tuỳ chá»n cho các tham số còn lại.\n" -"\n" +" \t\tcó tùy chá»n -f hay không\n" +" \n" +" Äối số “--†ngừng phân tích tùy chá»n cho các tham số còn lại.\n" +" \n" " 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." +" Trả lại thành công nếu không đưa ra tùy chá»n sai hay TÊN không hợp lệ." -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4029,13 +4155,13 @@ msgid "" msgstr "" "Dịch vị trí đối số.\n" "\n" -" Thay đổi tên cá»§a đối số vị trí $N+1,$N+2 ... thành $1,$2 ...\n" +" Thay đổi tên cá»§a đối số vị trí $N+1,$N+2 … thành $1,$2 …\n" " N là 1 nếu không chỉ định.\n" "\n" " 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:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4058,7 +4184,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:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4083,7 +4209,7 @@ msgstr "" " Trả lại thành công trừ khi chức năng Ä‘iá»u khiển công việc không\n" " được bật hoặc gặp lá»—i." -#: builtins.c:1248 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4147,9 +4273,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4167,7 +4293,7 @@ msgid "" msgstr "" "Äịnh giá biểu thức Ä‘iá»u kiện.\n" " \n" -" Thoát vá»›i trạng thái 0 (đúng) hoặc 1 (sai), tuỳ kết quả định giá\n" +" Thoát vá»›i trạng thái 0 (đúng) hoặc 1 (sai), tùy kết quả định giá\n" " BTHỨC. Biểu thức có thể kiểu má»™t ngôi hoặc hai ngôi. Biểu thức\n" " má»™t ngôi thưá»ng dùng để kiểm tra trạng thái tập tin. Ngoài ra còn\n" " có toán tá»­ chuá»—i và so sánh số.\n" @@ -4188,8 +4314,8 @@ msgstr "" " -L TẬP-TIN Äúng nếu tập tin là liên kết má»m.\n" " -k TẬP-TIN Äúng nếu tập tin có bit “stickyâ€.\n" " -p TẬP-TIN Äúng nếu tập tin là ống dẫn có tên.\n" -" -r TẬP-TIN Äúng nếu tập tin Ä‘á»c được (bởi bạn).\n" -" -s TẬP-TIN Äúng nếu tập tin tồn tại và khác rá»—ng.\n" +" -r TẬP-TIN Äúng nếu tập tin bạn Ä‘á»c được.\n" +" -s TẬP-TIN Äúng nếu tập tin tồn tại và không rá»—ng.\n" " -S TẬP-TIN Äúng nếu tập tin là socket.\n" " -t FD Äúng nếu FD được mở trên thiết bị cuối.\n" " -u TẬP-TIN Äúng nếu tập tin là set-user-id.\n" @@ -4216,7 +4342,7 @@ msgstr "" " -n CHUá»–I\n" " CHUá»–I Äúng nếu chuá»—i khác rá»—ng.\n" " \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 bằ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" @@ -4225,24 +4351,24 @@ msgstr "" " Toán tá»­ khác:\n" " \n" " -o TÙY_CHỌN Äúng nếu tùy chá»n hệ vá» này được bật.\n" -" -v BIẾN Äúng nếu BIẾN được đặt\n" -" -R BIẾN Äúng nếu BIẾN được đặt là là tham chiếu tên.\n" +" -v BIẾN Äúng nếu BIẾN hệ vá» này được đặt\n" +" -R BIẾN Äúng nếu BIẾN hệ vá» này được đặt là tham chiếu tên.\n" " ! BTHỨC Äúng nếu biểu thức này không đúng.\n" " BTHỨC1 -a BTHỨC2 Äúng nếu cả hai biểu thức là đúng.\n" -" BTHỨC1 -o BTHỨC2 Äúng nếu má»™t cá»§a hai biểu thức đúng.\n" +" BTHỨC1 -o BTHỨC2 Äúng nếu má»™t hoặc hai biểu thức đúng.\n" " \n" " Äá»I-Sá»1 OP Äá»I-Sá»2\n" -" Phép thá»­ số há»c. OP là má»™t trong -eq, -ne,\n" +" Phép thá»­ số há»c. OP (toán tá»­) là má»™t trong -eq, -ne,\n" " -lt, -le, -gt, or -ge.\n" " \n" " Phép toán số há»c hai ngôi trả vỠđúng nếu Äá»I-Sá»1 bằng, khác, nhá»\n" " hÆ¡n, nhá» hÆ¡n hoặc bằng, lá»›n hÆ¡n, lá»›n hÆ¡n hoặc bằng Äá»I-Sá»2.\n" -"\n" +" \n" " Trạng thái thoát:\n" " 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:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4251,10 +4377,10 @@ msgid "" msgstr "" "Äịnh giá biểu thức Ä‘iá»u kiện.\n" " \n" -" Lệnh này cùng chức năng lệnh dá»±ng sẵn \"test\", nhưng đối số cuối\n" +" Lệnh này cùng chức năng lệnh tích hợp \"test\", nhưng đối số cuối\n" " cùng phải là ký tá»± “]†để khá»›p vá»›i “[†ở đầu." -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4273,7 +4399,7 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cÅ©ng thành công." -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4350,7 +4476,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra ÄTTH sai hay tùy chá»n\n" " sai." -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4359,18 +4485,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4379,34 +4505,35 @@ msgid "" " 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" +"Hiển thị thông tin vá» kiểu câu lệnh.\n" +" \n" " Äối vá»›i má»—i TÊN, chỉ ra cách thông dịch lệnh khi được thá»±c thi\n" " theo tên lệnh.\n" -"\n" +" \n" " Tùy chá»n:\n" " -a\thiển thị má»i vị trí chứa tập tin thá»±c thi được có TÊN;\n" " \tkhông đặt tùy chá»n “-p†thì bao gồm các bí danh, lệnh\n" -" \tdá»±ng sẵn và hàm.\n" +" \ttích hợp và hàm.\n" " -f\tngăn tra cứu hàm hệ vá»\n" " -P\tbuá»™c tìm kiếm PATH đối vá»›i má»—i TÊN, thậm chí nếu nó là\n" -" \tbí danh, lệnh dá»±ng sẵn hay hàm, và trả lại tên cá»§a tập\n" +" \tbí danh, lệnh tích hợp hay hàm, và trả lại tên cá»§a tập\n" " \ttin trên đĩa mà sẽ được thá»±c thi\n" " -p\ttrả vá» hoặc tên cá»§a tập tin trên đĩa mà sẽ được thá»±c\n" " \t\tthi, hoặc gì cả “type -t TÊN†sẽ không trả vỠ“fileâ€\n" " \t\t(tập tin).\n" -" -t\txuất má»™t trong những từ đơn “aliasâ€, “keywordâ€, “functionâ€,\n" +" -t\txuất má»™t trong những từ đơn “aliasâ€, “keywordâ€, “functionâ€,\n" " \t“builtinâ€, “file†hoặc “â€, nếu TÊN tương ứng là bí danh,\n" -" \ttừ khoá,hàm, lệnh hệ vá» dá»±ng sẵn, tập tin\n" +" \ttừ khóa,hàm, lệnh hệ vá» tích hợp, tập tin\n" " \ttrên đĩa, hoặc không tìm thấy.\n" -"\n" +" \n" " Äối số:\n" " TÊN\ttên câu lệnh cần giải thích.\n" -"\n" +" \n" " 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." +" Trả lại thành công nếu tìm thấy tất cả các TÊN; bị lá»—i nếu không tìm " +"thấy." -#: builtins.c:1417 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4424,6 +4551,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4435,7 +4563,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4467,7 +4596,8 @@ msgstr "" " -e\tmức ưu tiên lập lịch cao nhất (“niceâ€)\n" " -f\tkích cỡ tập tin tối Ä‘a được ghi bởi hệ vá» và tiến trình con\n" " -i\tsố tín hiệu bị hoãn tối Ä‘a\n" -" -l\tkích cỡ tối Ä‘a mà tiến trình có thể khoá vào bá»™ nhá»›\n" +" -k\tsố lượng kqueues được phân bổ tối Ä‘a cho tiến trình này\n" +" -l\tkích cỡ tối Ä‘a mà tiến trình có thể khóa vào bá»™ nhá»›\n" " -m\tkích cỡ tập ná»™i trú (RSS) tối Ä‘a\n" " -n\tsố bá»™ mô tả tập tin tối Ä‘a được mở\n" " -p\tkích thước vùng đệm ống dẫn\n" @@ -4477,7 +4607,8 @@ msgstr "" " -t\tlượng thá»i gian cpu tối Ä‘a theo giây\n" " -u\tsố tiến trình ngưá»i dùng tối Ä‘a\n" " -v\tkích cỡ cá»§a bá»™ nhá»› ảo\n" -" -x\tsố khoá tập tin tối Ä‘a\n" +" -x\tsố khóa tập tin tối Ä‘a\n" +" -P\tsố lượng thiết bị cuối ảo tối Ä‘a\n" " -T\tsố lượng tuyến trình tối Ä‘a\n" " \n" " Không phải tất cả các tùy-chá»n này Ä‘á»u sẵn sàng trên má»i ná»n tảng.\n" @@ -4486,7 +4617,7 @@ msgstr "" " giá trị GIỚI_HẠN đặc biệt “softâ€, “hard†và “unlimited†tương ứng\n" " là giá»›i hạn má»m hiện tại, giá»›i hạn cứng hiện tại và không giá»›i\n" " hạn. Không có thì in giá trị hiện thá»i cá»§a tài nguyên được ghi.\n" -" Ngầm định “-f†nếu không chỉ định tuỳ chá»n.\n" +" Ngầm định “-f†nếu không chỉ định tùy chá»n.\n" " \n" " Giá trị tính theo khối 1024 byte, trừ -t tính theo giây, -p theo\n" " khối 512 byte và -u theo số tiến trình.\n" @@ -4494,7 +4625,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không đưa ra tùy chá»n sai hay có lá»—i phát sinh." -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4527,7 +4658,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không có CHẾ_ÄỘ sai hay tùy chá»n sai." -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4562,7 +4693,7 @@ msgstr "" " Trả vá» trạng thái cá»§a ID cuối; không thành công nếu ID sai hoặc đưa\n" " ra tùy chá»n sai." -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4586,7 +4717,7 @@ msgstr "" " Trả lại trạng thái cá»§a PID; không thành công nếu PID sai, hoặc nếu\n" " đưa ra tùy chá»n sai." -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4602,14 +4733,14 @@ msgstr "" "\n" " Vòng lặp “for†thá»±c thi lệnh cho từng phần tá»­ nằm trong danh sách. " "Không\n" -" ghi “in TỪ ...†thì ngầm định “in \"$@\"â€. Äối vá»›i má»—i phần tá»­ trong\n" +" ghi “in TỪ …†thì ngầm định “in \"$@\"â€. Äối vá»›i má»—i phần tá»­ trong\n" " danh sách, đặt giá trị phần tá»­ đó cho biến TÊN rồi thá»±c thi CÃC;CÂU;" "LỆNH.\n" "\n" " 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:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4639,7 +4770,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:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4663,7 +4794,7 @@ msgstr "" " TỪ được triển khai, phát sinh danh sách từ. Tập hợp các từ kết quả được\n" " in ra đầu ra lá»—i chuẩn vá»›i má»™t con số ở phía trước. Ngầm định “in\n" " \"$@\"†nếu không có “in TỪâ€. Dấu nhắc PS3 được hiển thị và má»™t dòng\n" -" được Ä‘á»c từ đầu nhập chuẩn. Nếu dòng bao gồm số tương ứng vá»›i từ\n" +" được Ä‘á»c từ đầu vào tiêu chuẩn. Nếu dòng bao gồm số tương ứng vá»›i từ\n" " hiển thị thì đặt từ đó vào biến TÊN. Nếu dòng rá»—ng thì hiển thị\n" " lại TỪ và dấu nhắc. Nếu gặp EOF thì kết thúc. Äặt TÊN là rá»—ng vá»›i\n" " các giá trị khác. Dòng Ä‘á»c được lưu vào biến REPLY. LỆNH được thá»±c\n" @@ -4673,7 +4804,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:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4702,7 +4833,7 @@ msgstr "" " Trạng thái thoát:\n" " Trạng thái trả vá» là trạng thái trả vá» cá»§a á»NG-DẪN." -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4720,7 +4851,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:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4755,7 +4886,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:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4774,7 +4905,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:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4793,7 +4924,8 @@ 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:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4803,7 +4935,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "Tạo tiến trình phụ tên TÊN.\n" "\n" @@ -4814,7 +4946,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái thoát cá»§a câu LỆNH." -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4831,13 +4963,13 @@ msgstr "" "\n" " Tạo hàm hệ vá» tên TÊN. Khi được gá»i dưới dạng má»™t câu lệnh đơn\n" " giản, TÊN chạy LỆNH trong ngữ cảnh cá»§a hệ vá» gá»i. Khi TÊN được\n" -" gá»i, các đối số được gá»­i cho hàm dạng $1...$n, và tên hàm nằm\n" +" gá»i, các đối số được gá»­i cho hàm dạng $1…$n, và tên hàm nằm\n" " trong $FUNCNAME.\n" "\n" " 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:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4855,7 +4987,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:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4878,7 +5010,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:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4896,7 +5028,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại 1 nếu BTHỨC tính là 0; không thì trả lại 0." -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -4925,8 +5057,8 @@ msgid "" msgstr "" "Thá»±c thi câu lệnh có Ä‘iá»u kiện.\n" "\n" -" Trả vá» trạng thái 0 hoặc 1 tuỳ vào phép tính biểu thức Ä‘iá»u kiện\n" -" BTHỨC. Biểu thức bao gồm các thành phần dùng trong lệnh dá»±ng sẵn\n" +" Trả vá» trạng thái 0 hoặc 1 tùy vào phép tính biểu thức Ä‘iá»u kiện\n" +" BTHỨC. Biểu thức bao gồm các thành phần dùng trong lệnh tích hợp\n" " “test†và có thể được tổ hợp bằng các toán tá»­ sau:\n" " \n" " ( BTHỨC )\t\tTrả vá» giá trị cá»§a BTHỨC\n" @@ -4945,7 +5077,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:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5049,7 +5181,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:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5059,19 +5191,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5079,31 +5211,31 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"Thêm thư mục vào chồng.\n" -"\n" -" Thêm thư mục vào đầu cá»§a chồng thư mục, hoặc xoay chồng, làm cho\n" -" thư mục má»›i đầu chồng là thư mục làm việc hiện thá»i. Không có đối\n" +"Thêm thư mục vào ngăn xếp.\n" +" \n" +" Thêm thư mục vào đỉnh cá»§a ngăn xếp thư mục, hoặc xoay ngăn xếp, làm cho\n" +" thư mục má»›i đầu ngăn xếp là thư mục làm việc hiện thá»i. Không có đối\n" " số thì trao đổi hai thư mục đầu.\n" -"\n" -" -n\tNgăn chuyển đổi bình thưá»ng khi thêm thư mục\n" -" \tvào chồng, để thao tác chỉ chồng.\n" -"\n" -" +N\tXoay chồng để thư mục thứ N (đếm từ trái danh sách\n" +" \n" +" -n\tNgăn chuyển đổi bình thưá»ng khi thêm thư mục\n" +" \tvào ngăn xếp, để thao tác chỉ ngăn xếp.\n" +" \n" +" +N\tXoay ngăn xếp để thư mục thứ N (đếm từ trái danh sách\n" " \t“dirs†(bắt đầu từ số không) dá»i lên đầu.\n" -"\n" -" -N\tXoay chồng để thư mục thứ N (đếm từ phải danh sách\n" +" \n" +" -N\tXoay ngăn xếp để thư mục thứ N (đếm từ phải danh sách\n" " \t“dirs†(bắt đầu từ số không) dá»i lên đầu.\n" -"\n" -" dir\tThêm THMỤC vào đầu chồng thư mục, cho nó làm thư mục\n" +" \n" +" dir\tThêm THMỤC vào đầu ngăn xếp thư mục, cho nó làm thư mục\n" " \tlàm việc hiện thá»i má»›i.\n" -"\n" -" Lệnh dá»±ng sẵn “dirs†hiển thị chồng thư mục.\n" -"\n" +" \n" +" Lệnh tích hợp “dirs†hiển thị ngăn xếp thư mục.\n" +" \n" " Trạng thái thoát:\n" " 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:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5112,16 +5244,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5129,29 +5261,29 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"Gỡ bá» thư mục khá»i chồng.\n" -"\n" -" Gỡ bá» thư mục khá»i chồng thư mục. Không có đối số thì gỡ bá» thư\n" -" mục đầu khá»i chồng và “cd†sang thư mục đầu má»›i.\n" -"\n" +"Gỡ bá» thư mục khá»i ngăn xếp.\n" +" \n" +" Gỡ bá» thư mục khá»i ngăn xếp thư mục. Không có đối số thì gỡ bá» thư\n" +" mục đầu khá»i ngăn xếp và “cd†sang thư mục đầu má»›i.\n" +" \n" " -n\tNgăn chuyển đổi bình thưá»ng khi gỡ bá» thư mục\n" -" \tkhá»i chồng, để thao tác chỉ chồng.\n" -"\n" +" \tkhá»i ngăn xếp, để thao tác chỉ ngăn xếp.\n" +" \n" " +N\tGỡ bá» thư mục thứ N (đếm từ trái danh sách\n" " \t“dirs†(bắt đầu từ số không). Ví dụ: “popd +0†bá»\n" " \tthư mục cuối cùng, “popd +1†bá» thư mục thứ hai.\n" -"\n" +" \n" " -N\tGỡ bá» thư mục thứ N (đếm từ phải danh sách\n" " \t“dirs†(bắt đầu từ số không). Ví dụ: “popd -0†bá»\n" " \tthư mục cuối cùng, “popd -1†bá» thư mục giáp cuối.\n" -"\n" -" Lệnh dá»±ng sẵn “dirs†hiển thị đống thư mục.\n" -"\n" +" \n" +" Lệnh tích hợp “dirs†hiển thị ngăn xếp thư mục.\n" +" \n" " Trạng thái thoát:\n" " 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:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5162,35 +5294,35 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"Hiển thị chồng thư mục.\n" +"Hiển thị ngăn xếp thư mục.\n" " \n" -" Hiển thị danh sách các thư mục được nhá»› hiện thá»i. Lệnh “pushdâ€\n" -" thêm thư mục vào danh sách; lệnh “popd†lấy thư mục khá»i danh\n" -" sách.\n" +" Hiển thị danh sách các thư mục được nhá»› hiện thá»i. Các thư mục\n" +" tìm thấy chá»— cá»§a chúng trong danh sách vá»›i lệnh “pushdâ€;\n" +" bạn có thể lấy bản sao dá»± phòng thông qua danh sách vá»›i lệnh “popdâ€.\n" " \n" " Tùy chá»n:\n" -" -c\txoá má»i phần tá»­ trong chồng thư mục\n" +" -c\txóa má»i phần tá»­ trong ngăn xếp thư mục\n" " -l\tđừng in phiên bản thư mục có dấu ngã\n" " \t(tương đối so vá»›i thư mục chính cá»§a ngưá»i dùng)\n" -" -p\tin chồng thư mục, má»—i dòng má»™t mục\n" -" -v\tin chồng thư mục, má»—i dòng má»™t mục kèm vị trí trong chồng\n" +" -p\tin ngăn xếp thư mục, má»—i dòng má»™t mục\n" +" -v\tin ngăn xếp thư mục, má»—i dòng má»™t mục kèm vị trí trong ngăn xếp\n" " \n" " Äối số:\n" " +N\thiển thị mục thứ N bắt đầu từ bên trái danh sách\n" @@ -5204,7 +5336,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả vá» thành công nếu không đưa ra tùy chá»n sai hay gặp lá»—i." -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5241,7 +5373,7 @@ msgstr "" " Trả lại thành công nếu TÊN_TÙY_CHỌN được bật; không thành công nếu\n" " đưa ra tùy chá»n sai hay TÊN_TÙY_CHỌN bị tắt." -#: builtins.c:1908 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5258,15 +5390,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5294,7 +5426,7 @@ msgstr "" " Ngoài đặc tả định dạng chuẩn được dùng trong printf(1) và printf(3),\n" " printf được hiểu những đặc tả sau:\n" " \n" -" %b\tbung dãy thoát gạch chéo ngược trong đối số tương ứng\n" +" %b\tkhai triển dãy thoát gạch chéo ngược trong đối số tương ứng\n" " %q\ttrích dẫn đối số theo cách dùng lại làm dữ liệu đầu vào hệ vá»\n" " %(fmt)T\txuất chuá»—i ngày tháng theo định dạng FMT từ strftime(3)\n" " \n" @@ -5307,7 +5439,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra tùy chá»n sai hay gặp lá»—i khi ghi\n" " hay gán." -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5320,11 +5452,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5334,27 +5466,27 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" "Chỉ định cách tá»± hoàn thiện đối số bằng Readline.\n" -"\n" +" \n" " Äối vá»›i má»—i TÊN, ghi rõ các đối số sẽ được tá»± hoàn thiện như thế nào.\n" " Không đưa ra tùy chá»n thì in ra các đặc tả tá»± hoàn thiện bằng má»™t cách\n" " cho phép dùng lại đặc tả làm dữ liệu nhập vào.\n" -"\n" +" \n" " Tùy chá»n:\n" " -p\tin đặc tả tá»± hoàn thiện đã tồn tại theo định dạng dùng lại được\n" " -r\tgỡ bỠđặc tả tá»± hoàn thiện cho má»—i TÊN,\n" " \thoặc nếu có TÊN thì gỡ bá» tất cả các đặc tả tá»± hoàn thiện\n" " -D\táp dụng các sá»± hoàn thành và hành động làm mặc định\n" -"\t\tcho câu lệnh mà không xác định sá»± hoàn thành riêng\n" +" \tcho câu lệnh mà không xác định sá»± hoàn thành riêng\n" " -E\táp dụng các sá»± hoàn thành và hành động cho câu lệnh “trốngâ€\n" -"\t\t(empty) -- thá»­ hoàn thành trên dòng trắng\n" -"\n" +" \t(empty) -- thá»­ hoàn thành trên dòng trắng\n" +" \n" " Khi chức năng tá»± hoàn thiện được thá»­, những hành động được làm theo thứ\n" -" tá»± cá»§a những tùy chá»n chữ HOA bên trên.\n" -"\n" +" tá»± cá»§a những tùy chá»n chữ HOA bên trên. Tùy chá»n -D có quyá»n ưu tiên\n" +" hÆ¡n -E. \n" " 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:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5375,7 +5507,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:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5422,7 +5554,7 @@ msgstr "" " Äối số:\n" "\n" " Má»—i TÊN tham chiếu đến má»™t câu lệnh cho đó má»™t đặc tả tá»± hoàn thiện\n" -" phải được xác định trước dùng dá»±ng sẵn “completeâ€. Nếu không đưa\n" +" phải được xác định trước dùng tích hợp “completeâ€. Nếu không đưa\n" " ra TÊN để áp dụng, thì “compopt†phải được gá»i bởi má»™t hàm Ä‘ang\n" " tạo việc tá»± hoàn thiện, và các tùy chá»n vá» hàm tạo việc tá»± hoàn thiện " "Ä‘ang\n" @@ -5432,7 +5564,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra tùy chá»n sai, hoặc TÊN có má»™t\n" " đặc tả tá»± hoàn thiện được xác định." -#: builtins.c:2015 +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5443,20 +5575,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5473,37 +5606,38 @@ msgid "" " 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" -"\n" +" \n" " Äá»c các dòng từ đầu vào tiêu chuẩn vào biến mảng MẢNG, hoặc từ bá»™\n" " mô tả tập tin FD nếu đưa ra tùy chá»n -u. Biến MAPFILE là MẢNG mặc\n" " định.\n" -"\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" +" -d ngăn_cách\tDùng NGÄ‚N_CÃCH chấm dứt dòng, thay cho ký tá»± dòng má»›i\n" +" -n Sá»\tsao chép nhiá»u nhất Sá» dòng. Nếu là 0 thì sao chép má»i dòng.\n" " -O Gá»C\tbắt đầu gán cho MẢNG ở chỉ số Gá»C. Chỉ số 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" +" -t\tgỡ bá» má»™t ký tá»± NGÄ‚N_CÃCH theo sau khá»i má»—i dòng được Ä‘á»c\n" +" \t(mặc định là ký tá»± dòng má»›i).\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_NGƯỢC.\n" -"\n" +" \n" " Äối số:\n" " MẢNG\ttên biến mảng cần dùng cho dữ liệu tập tin.\n" -"\n" +" \n" " Nếu đưa ra -C mà không có -c thì lượng mặc định là 5000. Khi ước\n" " lượng lá»i GỌI_NGƯỢC thì nó nhận chỉ số cá»§a phần tá»­ mảng kế tiếp\n" " được gán dưới dạng má»™t đối số bổ sung.\n" -"\n" -" Không đưa ra má»™t Gá»C dứt khoát thì mapfile (tập tin sÆ¡ đồ) sẽ xoá\n" +" \n" +" Không đưa ra má»™t Gá»C rõ ràng thì mapfile (tập tin sÆ¡ đồ) sẽ xóa\n" " sạch MẢNG trước khi gán cho nó.\n" -"\n" +" \n" " Trạng thái thoát:\n" " 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:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5511,7 +5645,25 @@ msgid "" msgstr "" "Äá»c các dòng từ má»™t tập tin vào má»™t biến mảng.\n" " \n" -" Giống chức năng cá»§a “mapfileâ€." +" Giống vá»›i “mapfileâ€." + +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "Tác quyá»n (C) năm 2014 cá»§a Tổ chức Quỹ Phần má»m Tá»± do, Inc." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "Tác quyá»n (C) năm 2014 cá»§a Tổ chức Quỹ Phần má»m Tá»± do, Inc." #~ 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" @@ -5539,7 +5691,7 @@ msgstr "" #~ " current one; the top frame is frame 0." #~ msgstr "" #~ "; thông tin thêm này có thể được sá»­ dụng\n" -#~ "\tđể cung cấp má»™t vết đống (stack trace).\n" +#~ "\tđể cung cấp má»™t vết ngăn xếp (stack trace).\n" #~ "\n" #~ "\tGiá trị cá»§a BTHỨC ngụ ý bao nhiêu khung gá»i cần lùi lại\n" #~ "\ttương đối vá»›i cái hiện thá»i; khung trên cùng là khung 0." diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index 42fb5ce5d760afe520db129f3caca13ecb19d196..5eda361f22bfda50059558d77955da26e22d18ca 100644 GIT binary patch literal 147592 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 Z?*+*fgz*M5qTK_wq=nDNlAL}0{{@jMH5>o{ delta 16771 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 diff --git a/po/zh_CN.po b/po/zh_CN.po index b0757a6..8b6bb9d 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -4,85 +4,94 @@ # Xin Ye , 2010. # Aron Xu , 2011. # Anthony Fok , 2013. +# Wylmer Wang , 2014. +# Mingye Wang , 2015. # msgid "" msgstr "" -"Project-Id-Version: bash 4.3-pre2\n" +"Project-Id-Version: bash 4.4-beta1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-0500\n" -"PO-Revision-Date: 2013-09-02 05:15+0800\n" -"Last-Translator: Anthony Fok \n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-10-26 00:32-0400\n" +"Last-Translator: Mingye Wang (Arthur2e5) \n" "Language-Team: Chinese (simplified) \n" -"Language: zh_CN\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\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" +"X-Generator: Poedit 1.8.5\n" -#: arrayfunc.c:51 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "æ•°ç»„ä¸‹æ ‡ä¸æ­£ç¡®" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" +msgstr "" + +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: æ— æ³•å°†ç´¢å¼•æ•°ç»„è½¬åŒ–ä¸ºå…³è”æ•°ç»„" -#: arrayfunc.c:539 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: æ— æ•ˆçš„å…³è”æ•°ç»„é”®" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: æ— æ³•ä¸ºéžæ•°å­—的索引赋值" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: ä¸ºå…³è”æ•°ç»„赋值时必须使用下标" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: 无法创建: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: 无法为命令找到键映射" -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 第一个éžç©ºå­—ç¬¦ä¸æ˜¯ `\"'" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "%2$s 中没有闭åˆçš„ `%1$c'" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: 缺少冒å·åˆ†éš”符" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "大括å·å±•开: 无法为 %s 分é…内存" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +msgstr "大括å·å±•开: 为 %d 个元素分é…内存失败" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "大括å·å±•开: 为 `%s' 分é…内存失败" -#: builtins/alias.def:132 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': 无效的别å" @@ -91,45 +100,45 @@ msgstr "`%s': 无效的别å" msgid "line editing not enabled" msgstr "未å¯ç”¨è¡Œç¼–辑" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': 无效的键映射å" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: 无法读å–: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': 无法解除绑定" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "`%s': 未知函数å" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s 未与任何键绑定。\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s å¯ä»¥è¢«è°ƒç”¨ï¼Œé€šè¿‡" -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "循环计数" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "仅在`for', `while', 或者`until' 循环中有æ„义" +msgstr "仅在 `for', `while', 或者`until' 循环中有æ„义" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" @@ -139,300 +148,329 @@ msgstr "" " \n" " ä¸å¸¦ EXPR 时,返回" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME 未设定" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "傿•°å¤ªå¤š" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "无其他目录" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD 未设定" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "第 %d 行:" -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "警告:" -#: builtins/common.c:153 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: 用法:" -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: 选项需è¦ä¸€ä¸ªå‚æ•°" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: éœ€è¦æ•°å­—傿•°" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: 未找到" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: 无效选项" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: 无效的选项å" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': 䏿˜¯æœ‰æ•ˆçš„æ ‡è¯†ç¬¦" -#: builtins/common.c:238 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "无效的八进制数" -#: builtins/common.c:240 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "无效的å六进制数" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "无效数字" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: 无效的信å·å£°æ˜Ž" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': 䏿˜¯æœ‰æ•ˆçš„è¿›ç¨‹å·æˆ–者任务声明" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: åªè¯»å˜é‡" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s 越界" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "傿•°" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s 越界" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: 无此任务" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: 无任务控制" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "无任务控制" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: å—é™çš„" -#: builtins/common.c:304 +#: builtins/common.c:312 msgid "restricted" msgstr "å—é™çš„" -#: builtins/common.c:312 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: 䏿˜¯ shell 内建" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "写错误: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "设定终端属性时出错: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "获å–终端属性时出错: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: 获å–当å‰ç›®å½•时出错: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: 模糊的任务声明" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "此版本内帮助ä¸å¯ç”¨" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: 无效的动作å" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: 没有补全声明" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "警告: -F 选项å¯èƒ½ä¸åƒæ‚¨é¢„期的那样工作" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "警告: -C 选项å¯èƒ½ä¸åƒæ‚¨é¢„期的那样工作" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" -msgstr "当剿œªæ‰§è¡Œè¡¥å®ŒåŠŸèƒ½" +msgstr "当剿œªæ‰§è¡Œè¡¥å…¨åŠŸèƒ½" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "åªèƒ½åœ¨å‡½æ•°ä¸­ä½¿ç”¨" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: 引用å˜é‡ä¸èƒ½ä¸ºæ•°ç»„" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: ä¸å…许å称引用å˜é‡å¼•用自身" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: 循环å˜é‡å引用" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: 无效的引用å˜é‡å" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "无法用 `-f' 生æˆå‡½æ•°" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: åªè¯»å‡½æ•°" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "%s: 引å·å†…çš„å¤åˆæ•°ç»„赋值已被弃用" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: æ— æ³•ä»¥è¿™ç§æ–¹å¼é”€æ¯æ•°ç»„å˜é‡" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: æ— æ³•å°†å…³è”æ•°ç»„转化为索引数组" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" msgstr "动æ€åŠ è½½ä¸å¯ç”¨" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" msgstr "无法打开共享对象 %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" msgstr "无法在共享对象 %2$s 中找到 %1$s: %3$s" -#: builtins/enable.def:459 +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" +msgstr "为 %s 载入函数失败 (%d): 未载入" + +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" msgstr "%s: æœªä»¥åŠ¨æ€æ–¹å¼åŠ è½½" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" msgstr "%s: 无法删除: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: 是一个目录" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: 䏿˜¯å¸¸è§„文件" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: 文件太大" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: 无法执行二进制文件" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: 无法执行: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "注销\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "䏿˜¯ç™»å½• shell: 使用 `exit'" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "æœ‰åœæ­¢çš„任务。\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "有è¿è¡Œä¸­çš„任务。\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" msgstr "未找到命令" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "历å²å£°æ˜Ž" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: 无法打开临时文件: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "当å‰" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "在ä¸å¸¦ä»»åŠ¡æŽ§åˆ¶çš„æƒ…å†µä¸‹å¯åŠ¨äº†ä»»åŠ¡ %d" @@ -451,35 +489,35 @@ msgstr "%s: 选项需è¦ä¸€ä¸ªå‚æ•° -- %c\n" msgid "hashing disabled" msgstr "å·²ç¦ç”¨å“ˆå¸Œ" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: 哈希表为空\n" -#: builtins/hash.def:245 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "命中\t命令\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell 命令匹é…关键字 `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" "没有与 `%s' 匹é…的帮助主题。å°è¯• `help help' 或 `man -k %s' 或 `info %s'。" -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: 无法打开: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -498,15 +536,20 @@ msgstr "" "åç§°æ—边的星å·(*)表示该命令被ç¦ç”¨ã€‚\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "最多åªèƒ½ä½¿ç”¨ -anrw 选项中的一个" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" msgstr "历å²ä½ç½®" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: æ— æ•ˆå‚æ•°" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: åŽ†å²æ‰©å±•失败" @@ -520,113 +563,113 @@ msgstr "%s: inlib 失败" msgid "no other options allowed with `-x'" msgstr "其他选项ä¸èƒ½ä¸Ž `-x' åŒæ—¶ä½¿ç”¨" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: 傿•°å¿…须是进程或任务 ID" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "未知错误" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "需è¦è¡¨è¾¾å¼" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" msgstr "%s: 䏿˜¯ä¸€ä¸ªç´¢å¼•数组" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 无效的文件æè¿°ç¬¦å£°æ˜Ž" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 无效的文件æè¿°ç¬¦: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: 无效的行数" -#: builtins/mapfile.def:287 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: 无效的数组基数" -#: builtins/mapfile.def:304 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: 无效的回调é‡å­" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "空数组å˜é‡å" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "éœ€è¦æ•°ç»„å˜é‡æ”¯æŒ" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': 缺少格å¼å­—符" -#: builtins/printf.def:456 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': 无效的时间格å¼å£°æ˜Ž" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': 无效格å¼å­—符" -#: builtins/printf.def:684 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "æ ¼å¼è§£æžé—®é¢˜: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" -msgstr "使用了 \\x 但缺少å六进制数" +msgstr "使用了 \\x 但缺少å六进制ä½" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "使用了 \\%c 但缺少 unicode æ•°" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" msgstr "无其他目录" -#: builtins/pushd.def:354 -#, fuzzy, c-format +#: builtins/pushd.def:360 +#, c-format msgid "%s: invalid argument" -msgstr "%s: 无效的 limit 傿•°" +msgstr "%s: æ— æ•ˆå‚æ•°" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" msgstr "<无当å‰ç›®å½•>" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "目录栈为空" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "目录栈索引" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -668,7 +711,7 @@ msgstr "" " -N\t以 dirs ä¸å¸¦é€‰é¡¹è¾“å‡ºçš„é¡ºåºæ˜¾ç¤ºåˆ—表从å³èµ·ç¬¬N个项目,\n" "\t从 0 开始。" -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 msgid "" "Adds a directory to the top of the directory stack, or rotates\n" " the stack, making the new top of the stack the current working\n" @@ -714,7 +757,7 @@ msgstr "" " \n" " `dirs' 内建命令显示目录栈." -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -752,143 +795,153 @@ msgstr "" " \n" " `dirs' 内建å˜é‡æ˜¾ç¤ºç›®å½•栈。" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: 无效的超时声明" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "读错误: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "åªèƒ½ä»Žå‡½æ•°æˆ–者æºè„šæœ¬è¿”å›ž(`return')" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "æ— æ³•åŒæ—¶å–消设定一个函数和一个å˜é‡" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: æ— æ³•å–æ¶ˆè®¾å®š" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: æ— æ³•å–æ¶ˆè®¾å®š: åªè¯» %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: 䏿˜¯æ•°ç»„å˜é‡" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: 䏿˜¯å‡½æ•°" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, c-format +msgid "%s: cannot export" +msgstr "%s: 无法导出" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" msgstr "ä½ç§»è®¡æ•°" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "æ— æ³•åŒæ—¶è®¾å®šå’Œå–消设定 shell 选项" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 无效的 shell 选项å" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" msgstr "éœ€è¦æ–‡ä»¶å傿•°" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: 文件未找到" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" msgstr "无法挂起" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" msgstr "无法挂起一个登录 shell" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s 是 `%s' 的别å\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s 是 shell 关键字\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s 是函数\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s 是特殊 shell 内建\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s 是 shell 内建\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s 是 %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" -msgstr "%s å·²ç»å“ˆå¸Œæ“作(%s)\n" +msgstr "%s 已被录入哈希表 (%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: 无效的 limit 傿•°" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': 命令错误" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: æ— æ³•èŽ·å– limit 值: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: 无法修改 limit 值: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" msgstr "八进制数" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" msgstr "`%c': 无效的符å·çжæ€è¿ç®—符" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format 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:348 error.c:350 error.c:352 msgid " line " msgstr "行" @@ -902,82 +955,103 @@ msgstr "上一个命令: %s\n" msgid "Aborting..." msgstr "中止..." -#: error.c:440 +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " +msgstr "" + +#: error.c:463 msgid "unknown command error" msgstr "未知的命令错误" -#: error.c:441 +#: error.c:464 msgid "bad command type" msgstr "错误的命令类型" -#: error.c:442 +#: error.c:465 msgid "bad connector" msgstr "错误的æ¡ä»¶è¿žæŽ¥ç¬¦" -#: error.c:443 +#: error.c:466 msgid "bad jump" msgstr "错误的跳转" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: 未绑定的å˜é‡" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a 等待输入超时:自动注销\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "无法从 /dev/null é‡å®šå‘标准输入: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "æ—¶é—´æ ¼å¼: `%c': 无效的格å¼å­—符" -#: execute_cmd.c:2287 +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" +msgstr "" + +#: execute_cmd.c:2377 msgid "pipe error" msgstr "管é“错误" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "eval: 超出最大 eval 嵌套层数 (%d)" + +#: execute_cmd.c:4508 +#, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: 超出最大 source 嵌套层数 (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: 超出最大函数嵌套层数 (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: å—é™çš„: 无法在命令å中使用 `/'" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: 未找到命令" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 解释器错误" -#: execute_cmd.c:5280 -#, fuzzy, c-format +#: execute_cmd.c:5545 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: 无法执行二进制文件" +msgstr "%s: 无法执行二进制文件: %s" -#: execute_cmd.c:5352 -#, fuzzy, c-format +#: execute_cmd.c:5623 +#, c-format msgid "`%s': is a special builtin" -msgstr "%s 是 shell 内建\n" +msgstr "`%s': 特殊内建" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "无法å¤åˆ¶æ–‡ä»¶æè¿°ç¬¦ %d 到文件æè¿°ç¬¦ %d" @@ -1000,7 +1074,7 @@ msgstr "å°è¯•ç»™éžå˜é‡èµ‹å€¼" #: expr.c:495 expr.c:858 msgid "division by 0" -msgstr "除0" +msgstr "除以 0" #: expr.c:542 msgid "bug: bad expassign token" @@ -1012,7 +1086,7 @@ msgstr "æ¡ä»¶è¡¨è¾¾å¼éœ€è¦ `:'" #: expr.c:919 msgid "exponent less than 0" -msgstr "指数å°äºŽ0" +msgstr "指数å°äºŽ 0" #: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" @@ -1022,37 +1096,37 @@ msgstr "预增符或预å‡ç¬¦åŽåº”跟有标识符" msgid "missing `)'" msgstr "缺少 `)'" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "语法错误: éœ€è¦æ“作数" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "语法错误: 无效的算术è¿ç®—符" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (é”™è¯¯ç¬¦å·æ˜¯ \"%s\")" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" -msgstr "无效的算数进制" +msgstr "无效的算术进制" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" -msgstr "数值太大ä¸å¯ä¸ºç®—数进制的基" +msgstr "数值太大ä¸å¯ä¸ºç®—术进制的基" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: 表达å¼é”™è¯¯\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: 无法访问父目录" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "无法为文件æè¿°ç¬¦ %d é‡ç½®nodelay模å¼" @@ -1067,148 +1141,148 @@ msgstr "无法从文件æè¿°ç¬¦ %d 为 bash 的输入获å–一个新的文件 msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: å·²ç»å­˜åœ¨æ–°çš„æ–‡ä»¶æè¿°ç¬¦ %d 的缓冲区" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: 进程组管é“" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "生æˆçš„è¿›ç¨‹å· %d 显示为è¿è¡Œä¸­çš„任务 %d" +msgstr "å‰åˆ† (fork) å‡ºçš„çš„è¿›ç¨‹å· %d 出现在è¿è¡Œä¸­çš„任务 %d 中" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "删除进程组 %2$ld ä¸­å·²åœæ­¢çš„任务 %1$d" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: 进程 %5ld(%s) 进入 the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: è¿›ç¨‹å· %5ld(%s) æ ‡æ³¨ä¸ºä»æ´»ç€" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: 无此进程å·" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "ä¿¡å· %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "已完æˆ" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "å·²åœæ­¢" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "å·²åœæ­¢(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" msgstr "è¿è¡Œä¸­" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "已完æˆ(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "退出 %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" msgstr "未知状æ€" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(核心已转储)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (工作目录: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "å­è¿›ç¨‹ setpgid (%ld 到 %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: è¿›ç¨‹å· %ld 䏿˜¯å½“å‰ shell çš„å­è¿›ç¨‹" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wiat_for: 没有进程 %ld 的记录" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: 任务 %d å·²åœæ­¢" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: 任务已ç»ç»ˆæ­¢" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: 任务 %d 已在åŽå°" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 打开 WNOHANG 以é¿å…æ— é™é˜»å¡ž" -#: jobs.c:3711 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: 行 %d: " -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (核心已转储)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(当å‰å·¥ä½œç›®å½•:%s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp 失败" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: 行规则" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "无法设定终端进程组(%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "æ­¤ shell 中无任务控制" @@ -1262,17 +1336,17 @@ msgstr "realloc: 检测到下溢;mh_nbytes 越界" msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 其实和末尾å—大å°ä¸ä¸€è‡´" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: 分é…表已ç»å……满了 FIND_ALLOC?\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p 在表中显示为已分é…?\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p 在表中显示为已释放?\n" @@ -1296,7 +1370,7 @@ msgstr "%s: 无效的æœåŠ¡" msgid "%s: bad network path specification" msgstr "%s: 错误的网络路径声明" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "䏿”¯æŒç½‘络æ“作" @@ -1333,224 +1407,259 @@ msgstr "您在 $_ 中有新邮件" msgid "The mail in %s has been read\n" msgstr "%s 中的邮件已被阅读\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" -msgstr "语法错误: 需è¦ç®—数表达å¼" +msgstr "语法错误: 需è¦ç®—术表达å¼" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "语法错误: éœ€è¦ `;'" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "语法错误: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: 错误的指令类型 %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "ç«‹å³æ–‡æ¡£åœ¨ç¬¬ %d 行被文件结æŸç¬¦åˆ†éš” (éœ€è¦ `%s')" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: é‡å®šå‘指令 `%d' 越界" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "è¶…å‡ºæœ€å¤§ç«‹å³æ–‡æ¡£æ•°é‡" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "寻找匹é…çš„ `%c' 是é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "寻找 `]]' 是é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æœ‰è¯­æ³•错误: æœªé¢„æœŸçš„ç¬¦å· `%s'" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æœ‰è¯­æ³•错误" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "æœªé¢„æœŸçš„ç¬¦å· `%s' ï¼Œéœ€è¦ `)'" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" msgstr "éœ€è¦ `)'" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "一元æ¡ä»¶è¿ç®—ç¬¦ä½¿ç”¨äº†æœªé¢„æœŸçš„å‚æ•° `%s'" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "一元æ¡ä»¶è¿ç®—ç¬¦ä½¿ç”¨äº†æœªé¢„æœŸçš„å‚æ•°" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "æœªé¢„æœŸçš„ç¬¦å· `%s',需è¦äºŒå…ƒæ¡ä»¶è¿ç®—符" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "需è¦äºŒå…ƒæ¡ä»¶è¿ç®—符" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "二元æ¡ä»¶è¿ç®—ç¬¦ä½¿ç”¨äº†æœªé¢„æœŸçš„å‚æ•° `%s'" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "二元æ¡ä»¶è¿ç®—ç¬¦ä½¿ç”¨äº†æœªé¢„æœŸçš„å‚æ•°" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„æœŸçš„ç¬¦å· `%c'" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„æœŸçš„ç¬¦å· `%s'" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„æœŸçš„ç¬¦å· %d" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "æœªé¢„æœŸçš„ç¬¦å· `%s' 附近有语法错误" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "`%s' 附近有语法错误" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "语法错误: 未预期的文件结尾" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "语法错误" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "使用 \"%s\" 退出 shell 。\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "寻找匹é…çš„ `)' æ—¶é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" -msgstr "补完: 未找到函数 `%s'" +msgstr "补全: 未找到函数 `%s'" + +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" +msgstr "" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "progcomp_insert: %s: 空的补完声明" +msgstr "progcomp_insert: %s: 空的补全声明" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: 错误的æ¡ä»¶è¿žæŽ¥ç¬¦ `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: 无效的文件æè¿°ç¬¦" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: 空的文件指针" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': 无效的格å¼å­—符" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "文件æè¿°ç¬¦è¶…出范围" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 模糊的é‡å®šå‘" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 无法覆盖已存在的文件" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: å—é™çš„: 无法é‡å®šå‘输出" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "æ— æ³•ä¸ºç«‹å³æ–‡æ¡£åˆ›å»ºä¸´æ—¶æ–‡ä»¶: %s" -#: redir.c:195 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: 无法将文件æè¿°ç¬¦èµ‹å€¼ç»™å˜é‡" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "æ²¡æœ‰ç½‘ç»œæ—¶ä¸æ”¯æŒ /dev/(tcp|udp)/host/port" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "é‡å®šå‘错误: 无法å¤åˆ¶æ–‡ä»¶æè¿°ç¬¦" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "无法找到 /tmp ,请创建" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp 必须为有效的目录å" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: 无效的选项" -#: shell.c:1682 +#: shell.c:1282 +#, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "无法将 uid 设为 %d: 有效 uid %d" + +#: shell.c:1289 +#, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "无法将 gid 设为 %d: 有效 gid %d" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, c-format +msgid "%s: Is a directory" +msgstr "%s: 是一个目录" + +#: shell.c:1777 msgid "I have no name!" msgstr "没有åå­—ï¼" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash,版本 %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1559,40 +1668,49 @@ msgstr "" "用法:\t%s [GNU 长选项] [选项] ...\n" "\t%s [GNU 长选项] [选项] 脚本文件 ...\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" -msgstr "GNU 常选项:\n" +msgstr "GNU 长选项:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Shell 选项:\n" -#: shell.c:1835 -#, fuzzy +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-irsD 或 -c 命令 或 -O shopt选项\t\t(仅适åˆè°ƒç”¨)\n" +msgstr "\t-irsD 或 -c <命令> 或 -O \t\t(仅适åˆè°ƒç”¨)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" -msgstr "\t-%s 或 -o 选项\n" +msgstr "\t-%s 或 -o <选项>\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "请输入`%s -c \"help set\"' 以获得关于 shell 选项的更多信æ¯\n" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信æ¯.\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "请使用`bashbug' å‘½ä»¤æ¥æŠ¥å‘Šé”™è¯¯.\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "bash 首页:\n" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "使用 GNU 软件的通用帮助:\n" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: 无效的æ“作" @@ -1701,10 +1819,10 @@ msgstr "文件é™åˆ¶" msgid "Alarm (virtual)" msgstr "报警(虚拟)" +# Personally I treat this as something coming from alarm() by a profiler. #: siglist.c:163 -#, fuzzy msgid "Alarm (profile)" -msgstr "报警(总结)" +msgstr "报警(分æž)" #: siglist.c:167 msgid "Window changed" @@ -1767,88 +1885,103 @@ msgstr "æœªçŸ¥ä¿¡å· #" msgid "Unknown Signal #%d" msgstr "æœªçŸ¥ä¿¡å· #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "错误的替æ¢: 在 %2$s 中没有闭åˆçš„ `%1$s'" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: 无法将链表赋值给数组æˆå‘˜" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "无法为进程替æ¢åˆ›å»ºç®¡é“" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "无法为进程替æ¢åˆ›å»ºå­è¿›ç¨‹" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" -msgstr "无法打开命åç®¡é“ %s 进行读å–" +msgstr "无法打开命åç®¡é“ %s è¿›readline-" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" msgstr "无法打开命åç®¡é“ %s 进行写入" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "无法将命åç®¡é“ %s 作为文件æè¿°ç¬¦ %d å¤åˆ¶" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "错误的替æ¢: 在 %s 中没有闭åˆçš„ \"`\"" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "无法为命令替æ¢åˆ›å»ºç®¡é“" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "无法为命令替æ¢åˆ›å»ºå­è¿›ç¨‹" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "command_substitute: 无法将管é“å¤åˆ¶ä¸ºæ–‡ä»¶æè¿°ç¬¦1" +msgstr "command_substitute: 无法将管é“å¤åˆ¶ä¸ºæ–‡ä»¶æè¿°ç¬¦ 1" -#: subst.c:5837 subst.c:8050 -#, fuzzy, c-format +#: subst.c:6580 subst.c:8939 +#, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: %s: 追踪文件æè¿°ç¬¦çš„值无效" +msgstr "%s: 无效的引用å˜é‡å" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "%s: 傿•°ä¸ºç©ºæˆ–未设置" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "%s: å­ä¸²è¡¨è¾¾å¼ < 0" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" msgstr "%s: 错误的替æ¢" -#: subst.c:7583 +#: subst.c:6800 +#, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: 无效的间接展开" + +#: subst.c:6807 +#, c-format +msgid "%s: invalid variable name" +msgstr "%s: 无效的å˜é‡å" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: 傿•°ä¸ºç©ºæˆ–未设置" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: å­ä¸²è¡¨è¾¾å¼ < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: 无法这样赋值" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -msgstr "未æ¥ç‰ˆæœ¬çš„ shell 会强制估值为算数替æ¢" +msgstr "未æ¥ç‰ˆæœ¬çš„ shell 会强制估值为算术替æ¢" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "错误的替æ¢: 在 %s 中没有闭åˆçš„ \"`\"" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "无匹é…: %s" @@ -1862,123 +1995,123 @@ msgstr "需è¦å‚æ•°" msgid "%s: integer expression expected" msgstr "%s: éœ€è¦æ•´æ•°è¡¨è¾¾å¼" -#: test.c:264 +#: test.c:265 msgid "`)' expected" msgstr "éœ€è¦ `)'" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" msgstr "需è¦`)',得到 %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: 需è¦ä¸€å…ƒè¡¨è¾¾å¼" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: 需è¦äºŒå…ƒè¡¨è¾¾å¼" -#: test.c:860 +#: test.c:869 msgid "missing `]'" msgstr "缺少 `]'" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" msgstr "æ— æ•ˆçš„ä¿¡å·æ•°" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] 中的错误值: %p" -#: trap.c:375 +#: trap.c:391 #, 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:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: é”™è¯¯çš„ä¿¡å· %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "`%s' 函数定义导入错误" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell 层次 (%d) 太高,é‡ç½®ä¸º 1" -#: variables.c:1865 -#, fuzzy, c-format -msgid "%s: circular name reference" -msgstr "%s: %s: 追踪文件æè¿°ç¬¦çš„值无效" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 当å‰ä½œç”¨åŸŸä¸­æ²¡æœ‰å‡½æ•°ä¸Šä¸‹æ–‡" -#: variables.c:2247 -#, fuzzy, c-format +#: variables.c:2432 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s: 无法将文件æè¿°ç¬¦èµ‹å€¼ç»™å˜é‡" +msgstr "%s: å˜é‡ä¸å¯èµ‹å€¼" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: 无效的引用å˜é‡å" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 当å‰ä½œç”¨åŸŸä¸­æ²¡æœ‰å‡½æ•°ä¸Šä¸‹æ–‡" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s 有空的 exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s çš„ exportstr 中有无效的字符 %1$d" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s çš„ exportstr 中没有 `='" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables çš„å¤´éƒ¨ä¸æ˜¯å‡½æ•°ä¸Šä¸‹æ–‡" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: 没有 global_variables 上下文" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables çš„å¤´éƒ¨ä¸æ˜¯ä¸´æ—¶çŽ¯å¢ƒä½œç”¨åŸŸ" -#: variables.c:5257 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: 无法作为文件打开" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: 追踪文件æè¿°ç¬¦çš„值无效" -#: variables.c:5307 -#, fuzzy, c-format +#: variables.c:5669 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s: %s 越界" +msgstr "%s: %s: 兼容版本数值越界" -#: version.c:46 +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "ç‰ˆæƒæ‰€æœ‰ (C) 2011 自由软件基金会" +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "ç‰ˆæƒæ‰€æœ‰ (C) 2015 自由软件基金会." #: version.c:47 version2.c:47 msgid "" @@ -1994,24 +2127,17 @@ msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash,版本 %s (%s)\n" #: version.c:91 version2.c:91 -#, fuzzy msgid "This is free software; you are free to change and redistribute it." -msgstr "本软件是自由软件,您å¯ä»¥è‡ªç”±åœ°æ›´æ”¹å’Œé‡æ–°å‘布。\n" +msgstr "本软件是自由软件,您å¯ä»¥è‡ªç”±åœ°æ›´æ”¹å’Œé‡æ–°å‘布。" #: version.c:92 version2.c:92 -#, fuzzy msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "在法律许å¯çš„æƒ…å†µä¸‹ç‰¹æ­¤æ˜Žç¤ºï¼Œæœ¬è½¯ä»¶ä¸æä¾›ä»»ä½•æ‹…ä¿ã€‚\n" - -#: version2.c:46 -#, fuzzy -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "ç‰ˆæƒæ‰€æœ‰ (C) 2011 自由软件基金会" +msgstr "在法律许å¯çš„æƒ…å†µä¸‹ç‰¹æ­¤æ˜Žç¤ºï¼Œæœ¬è½¯ä»¶ä¸æä¾›ä»»ä½•æ‹…ä¿ã€‚" #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s: æ— æ³•åˆ†é… %lu 字节(å·²åˆ†é… %lu 字节)" +msgstr "%s: æ— æ³•åˆ†é… %lu 字节 (å·²åˆ†é… %lu 字节)" #: xmalloc.c:93 #, c-format @@ -2021,137 +2147,122 @@ msgstr "%s: æ— æ³•åˆ†é… %lu 字节" #: xmalloc.c:163 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "%s: %s:%d: æ— æ³•åˆ†é… %lu 字节(å·²åˆ†é… %lu 字节)" +msgstr "%s: %s:%d: æ— æ³•åˆ†é… %lu 字节 (å·²åˆ†é… %lu 字节)" #: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: æ— æ³•åˆ†é… %lu 字节" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" msgstr "alias [-p] [åç§°[=值] ... ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] åç§° [åç§° ...]" -#: builtins.c:51 -#, fuzzy +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" -"bind [-lpvsPVS] [-m 键映射] [-f 文件å] [-q åç§°] [-u åç§°] [-r é”®åºåˆ—] [-x " -"é”®åºåˆ—:shell命令] [é”®åºåˆ—:行读å–函数 或 行读å–命令]" +"bind [-lpvsPSVX] [-m 键映射] [-f 文件å] [-q åç§°] [-u åç§°] [-r é”®åºåˆ—] [-x " +"é”®åºåˆ—:shell-命令] [é”®åºåˆ—:readline-函数 或 readline-命令]" -#: builtins.c:54 +#: builtins.c:56 msgid "break [n]" msgstr "break [n]" -#: builtins.c:56 +#: builtins.c:58 msgid "continue [n]" msgstr "continue [n]" -#: builtins.c:58 +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" msgstr "builtin [shell 内建 [傿•° ...]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" msgstr "caller [表达å¼]" -#: builtins.c:64 -#, fuzzy -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "cd [-L|[-P [-e]]] [目录]" - #: builtins.c:66 +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [目录]" + +#: builtins.c:68 msgid "pwd [-LP]" msgstr "pwd [-LP]" -#: builtins.c:68 -msgid ":" -msgstr ":" - -#: builtins.c:70 -msgid "true" -msgstr "true" - -#: builtins.c:72 -msgid "false" -msgstr "false" - -#: builtins.c:74 +#: builtins.c:76 msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] 命令 [傿•° ...]" -#: builtins.c:76 -#, fuzzy -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrtux] [-p] [åç§°[=值] ...]" - #: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "typeset [-aAfFgilrtux] [-p] åç§°[=值] ..." +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [åç§°[=值] ...]" #: builtins.c:80 +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilnrtux] [-p] åç§°[=值] ..." + +#: builtins.c:82 msgid "local [option] name[=value] ..." msgstr "local [option] åç§°[=值] ..." -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" msgstr "echo [-neE] [傿•° ...]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" msgstr "echo [-n] [傿•° ...]" -#: builtins.c:90 +#: builtins.c:92 msgid "enable [-a] [-dnps] [-f filename] [name ...]" msgstr "enable [-a] [-dnps] [-f 文件å] [åç§° ...]" -#: builtins.c:92 +#: builtins.c:94 msgid "eval [arg ...]" msgstr "eval [傿•° ...]" -#: builtins.c:94 +#: builtins.c:96 msgid "getopts optstring name [arg]" msgstr "getopts 选项字符串 åç§° [傿•°]" -#: builtins.c:96 +#: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" msgstr "exec [-cl] [-a åç§°] [命令 [傿•° ...]] [é‡å®šå‘ ...]" -#: builtins.c:98 +#: builtins.c:100 msgid "exit [n]" msgstr "exit [n]" -#: builtins.c:100 +#: builtins.c:102 msgid "logout [n]" msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" msgstr "fc [-e 编辑器å] [-lnr] [èµ·å§‹] [终结] 或 fc -s [模å¼=替æ¢ä¸²] [命令]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" msgstr "fg [任务声明]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" msgstr "bg [任务声明 ...]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" msgstr "hash [-lr] [-p 路径å] [-dt] [åç§° ...]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [æ¨¡å¼ ...]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" @@ -2159,15 +2270,16 @@ msgstr "" "history [-c] [-d åç§»é‡] [n] 或 history -anrw [文件å] 或 history -ps 傿•° " "[傿•°...]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "jobs [-lnprs] [任务声明 ...] 或 jobs -x 命令 [傿•°]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [任务声明 ...]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" @@ -2175,11 +2287,11 @@ msgstr "" "kill [-s ä¿¡å·å£°æ˜Ž | -n ä¿¡å·ç¼–å· | -ä¿¡å·å£°æ˜Ž] è¿›ç¨‹å· | 任务声明 ... 或 kill -" "l [ä¿¡å·å£°æ˜Ž]" -#: builtins.c:134 +#: builtins.c:136 msgid "let arg [arg ...]" msgstr "let 傿•° [傿•° ...]" -#: builtins.c:136 +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" @@ -2187,165 +2299,157 @@ msgstr "" "read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读å–字符数] [-N 读å–å­—" "符数] [-p æç¤ºç¬¦] [-t è¶…æ—¶] [-u 文件æè¿°ç¬¦] [åç§° ...]" -#: builtins.c:138 +#: builtins.c:140 msgid "return [n]" msgstr "return [n]" -#: builtins.c:140 +#: builtins.c:142 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o 选项å] [--] [傿•° ...]" -#: builtins.c:142 -#, fuzzy -msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "unset [-f] [-v] [åç§° ...]" - #: builtins.c:144 +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [åç§° ...]" + +#: builtins.c:146 msgid "export [-fn] [name[=value] ...] or export -p" msgstr "export [-fn] [åç§°[=值] ...] 或 export -p" -#: builtins.c:146 +#: builtins.c:148 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" msgstr "readonly [-aAf] [åç§°[=值] ...] 或 readonly -p" -#: builtins.c:148 +#: builtins.c:150 msgid "shift [n]" msgstr "shift [n]" -#: builtins.c:150 +#: builtins.c:152 msgid "source filename [arguments]" msgstr "source 文件å [傿•°]" -#: builtins.c:152 +#: builtins.c:154 msgid ". filename [arguments]" msgstr ". 文件å [傿•°]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" msgstr "suspend [-f]" -#: builtins.c:158 +#: builtins.c:160 msgid "test [expr]" msgstr "test [表达å¼]" -#: builtins.c:160 +#: builtins.c:162 msgid "[ arg... ]" msgstr "[ 傿•°... ]" -#: builtins.c:162 -msgid "times" -msgstr "times" - -#: builtins.c:164 +#: builtins.c:166 msgid "trap [-lp] [[arg] signal_spec ...]" msgstr "trap [-lp] [[傿•°] ä¿¡å·å£°æ˜Ž ...]" -#: builtins.c:166 +#: builtins.c:168 msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] åç§° [åç§° ...]" -#: builtins.c:169 -#, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "ulimit [-SHacdefilmnpqrstuvx] [é™åˆ¶]" +#: builtins.c:171 +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [é™åˆ¶]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [模å¼]" -#: builtins.c:175 -#, fuzzy +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "wait [ç¼–å·]" +msgstr "wait [-n] [ç¼–å· ...]" -#: builtins.c:179 -#, fuzzy +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "wait [进程å·]" +msgstr "wait [è¿›ç¨‹å· ...]" -#: builtins.c:182 +#: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" msgstr "for åç§° [in è¯è¯­ ... ] ; do 命令; done" -#: builtins.c:184 +#: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" msgstr "for (( 表达å¼1; 表达å¼2; 表达å¼3 )); do 命令; done" -#: builtins.c:186 +#: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" msgstr "select NAME [in è¯è¯­ ... ;] do 命令; done" -#: builtins.c:188 +#: builtins.c:190 msgid "time [-p] pipeline" msgstr "time [-p] 管é“" -#: builtins.c:190 +#: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case è¯ in [æ¨¡å¼ [| 模å¼]...) 命令 ;;]... esac" -#: builtins.c:192 +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" msgstr "if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi" -#: builtins.c:194 +#: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" msgstr "while 命令; do 命令; done" -#: builtins.c:196 +#: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" msgstr "until 命令; do 命令; done" -#: builtins.c:198 +#: builtins.c:200 msgid "coproc [NAME] command [redirections]" msgstr "coproc [åç§°] 命令 [é‡å®šå‘]" -#: builtins.c:200 +#: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" msgstr "function åç§° { 命令 ; } 或 name () { 命令 ; }" -#: builtins.c:202 +#: builtins.c:204 msgid "{ COMMANDS ; }" msgstr "{ 命令 ; }" -#: builtins.c:204 +#: builtins.c:206 msgid "job_spec [&]" msgstr "job_spec [&]" -#: builtins.c:206 +#: builtins.c:208 msgid "(( expression ))" msgstr "(( è¡¨è¾¾å¼ ))" -#: builtins.c:208 +#: builtins.c:210 msgid "[[ expression ]]" msgstr "[[ è¡¨è¾¾å¼ ]]" -#: builtins.c:210 +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" msgstr "variables - 一些 shell å˜é‡çš„åç§°å’Œå«ä¹‰" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" msgstr "pushd [-n] [+N | -N | 目录]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" msgstr "dirs [-clpv] [+N] [-N]" -#: builtins.c:224 +#: builtins.c:226 msgid "shopt [-pqsu] [-o] [optname ...]" msgstr "shopt [-pqsu] [-o] [选项å ...]" -#: builtins.c:226 +#: builtins.c:228 msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] æ ¼å¼ [傿•°]" -#: builtins.c:229 +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " @@ -2354,35 +2458,35 @@ msgstr "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o 选项] [-A 动作] [-G 全局模å¼] [-W è¯" "语列表] [-F 函数] [-C 命令] [-X 过滤模å¼] [-P å‰ç¼€] [-S åŽç¼€] [åç§° ...]" -#: builtins.c:233 +#: builtins.c:235 msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" "compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模å¼] [-W è¯è¯­åˆ—表] [-" "F 函数] [-C 命令] [-X 过滤模å¼] [-P å‰ç¼€] [-S åŽç¼€] [è¯è¯­]" -#: builtins.c:237 +#: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o 选项] [-DE] [åç§° ...]" -#: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" -"mapfile [-n 计数] [-O èµ·å§‹åºå·] [-s 计数] [-t] [-u fd] [-C 回调] [-c é‡å­] " -"[数组]" - #: builtins.c:242 msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-d 分隔符] [-n 计数] [-O èµ·å§‹åºå·] [-s 计数] [-t] [-u fd] [-C 回调] " +"[-c é‡å­] [数组]" + +#: builtins.c:244 +msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" "readarray [-n 计数] [-O èµ·å§‹åºå·] [-s 计数] [-t] [-u fd] [-C 回调] [-c é‡å­] " "[数组]" -#: builtins.c:254 +#: builtins.c:256 msgid "" "Define or display aliases.\n" " \n" @@ -2394,7 +2498,7 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " @@ -2407,8 +2511,7 @@ msgstr "" " `alias åç§°=值'在标准输出设备上打å°åˆ«å列表。\n" " \n" " å¦åˆ™ï¼Œå¯¹äºŽæ¯ä¸ªç»™å®šå€¼çš„å称定义一个别å。\n" -" 值末尾的空格会使下一个è¯è¢«æ£€æµ‹\n" -" ä½œä¸ºåˆ«åæ›¿æ¢å±•开。\n" +" 值末尾的空格会使下一个è¯è¢«æ£€æµ‹ä½œä¸ºåˆ«å替æ¢å±•开。\n" " \n" " 选项:\n" " -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°æ‰€æœ‰çš„已定义的别å\n" @@ -2417,12 +2520,12 @@ msgstr "" " 除éžä¸€ä¸ªæ²¡æœ‰å®šä¹‰çš„åå­—è¢«ä½œä¸ºå‚æ•°æä¾›ï¼Œå¦åˆ™ alias \n" " 返回值为真。" -#: builtins.c:276 +#: builtins.c:278 msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" @@ -2433,8 +2536,7 @@ msgstr "" " \n" " 返回æˆåŠŸï¼Œé™¤éžâ€œåå­—â€œä¸æ˜¯ä¸€ä¸ªå·²å­˜åœ¨çš„别å。" -#: builtins.c:289 -#, fuzzy +#: builtins.c:291 msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2468,45 +2570,44 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -"设定行读å–键绑定和å˜é‡ã€‚\n" +"设定 Readline 键绑定和å˜é‡ã€‚\n" " \n" -" 绑定一个键åºåˆ—到一个行读å–函数或者å®ï¼Œæˆ–者设定一个\n" -" 行读å–å˜é‡ã€‚éžé€‰é¡¹å‚数的语法和 ~/.inputrc 文件中的等\n" +" 绑定一个键åºåˆ—到一个 Readline 函数或者å®ï¼Œæˆ–者设定一个\n" +" Readline å˜é‡ã€‚éžé€‰é¡¹å‚数的语法和 ~/.inputrc 文件中的等\n" " åŒï¼Œä½†æ˜¯å¿…é¡»ä½œä¸ºä¸€ä¸ªå‚æ•°è¢«ä¼ é€’,\n" " 例如,bind '\"\\C-x\\C-r\": re-read-init-file'.\n" " \n" " 选项:\n" -" -m 键映射 在此命令执行过程中使用指定的键映射。\n" -" å¯ä»¥è¢«æŽ¥å—的键映射å字有 emacsã€\n" -" emacs-standardã€emacs-metaã€emacs-ctlxã€viã€\n" -" vi-moveã€vi-commandã€å’Œ vi-insert。\n" -" -l 列出函数å称。\n" -" -P 列出函数å称和绑定。\n" -" -p 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出函数åç§°å’Œ\n" -" 绑定。\n" -" -S 列出å¯ä»¥å¯åЍå®çš„é”®åºåˆ—以åŠå®ƒä»¬çš„值\n" -" -s 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出å¯ä»¥å¯åЍå®\n" -" 的键以åŠå®ƒä»¬çš„值。\n" -" -V 列出å˜é‡åæˆå’Œå®ƒä»¬çš„值\n" -" -v 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出å˜é‡çš„åç§°\n" -" 和它们的值\n" -" -q å‡½æ•°å æŸ¥è¯¢æŒ‡å®šçš„函数å¯ä»¥ç”±å“ªäº›é”®å¯åŠ¨ã€‚\n" -" -u 函数å å绑定所有绑定至指定函数的键。\n" -" -r é”®åºåˆ— å–æ¶ˆæŒ‡å®šé”®åºåˆ—的绑定。\n" -" -f 文件å 从指定文件中读å–键绑定。\n" -" -x é”®åºåˆ—:shell命令\t当指定的键åºåˆ—被输入时,执行\n" -" \t\t\t\t指定的shell命令\n" +" -m 键映射 在此命令执行过程中使用指定的键映射。\n" +" å¯è¢«æŽ¥å—的键映射å字有 emacsã€emacs-standardã€emacs-" +"metaã€\n" +" emacs-ctlxã€viã€vi-moveã€vi-commandã€å’Œ vi-insert。\n" +" -l 列出函数å称。\n" +" -P 列出函数å称和绑定。\n" +" -p 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出函数å称和绑定。\n" +" -S 列出å¯ä»¥å¯åЍå®çš„é”®åºåˆ—以åŠå®ƒä»¬çš„值\n" +" -s 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出å¯ä»¥å¯åЍå®çš„键以åŠå®ƒä»¬çš„" +"值。\n" +" -V 列出å˜é‡åæˆå’Œå®ƒä»¬çš„值\n" +" -v 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出å˜é‡çš„å称和它们的值\n" +" -q å‡½æ•°å æŸ¥è¯¢æŒ‡å®šçš„函数å¯ä»¥ç”±å“ªäº›é”®å¯åŠ¨ã€‚\n" +" -u 函数å å绑定所有绑定至指定函数的键。\n" +" -r é”®åºåˆ— å–æ¶ˆæŒ‡å®šé”®åºåˆ—的绑定。\n" +" -f 文件å 从指定文件中读å–键绑定。\n" +" -x é”®åºåˆ—:shell命令\t当指定的键åºåˆ—被输入时,执行指定的 shell 命令。\n" +" -X 以å¯è¢«é‡ç”¨çš„å½¢å¼åˆ—出用 -x 绑定的键åºåˆ—和命令。\n" " \n" " 退出状æ€ï¼š\n" " 除éžä½¿ç”¨äº†æ— æ³•辨认的选项或者错误å‘生,å¦åˆ™è¿”回0." -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2516,7 +2617,7 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -"退出 forã€whileã€æˆ– until 循环\n" +"退出 forã€while 或 until 循环\n" " \n" " 退出一个 FORã€WHILE 或 UNTIL 循环。如果指定了N,则跳出Né‡\n" " 循环\n" @@ -2524,7 +2625,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 退出状æ€ä¸º0é™¤éž N ä¸å¤§äºŽæˆ–等于 1。" -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2534,7 +2635,7 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -"ç»§ç»­ forã€whileã€æˆ– until 循环。\n" +"ç»§ç»­ forã€while 或 until 循环。\n" " \n" " ç»§ç»­å½“å‰ FORã€WHILE 或 UNTIL 循环的下一步。\n" " 如果指定了 N, 则继续当å‰çš„第 N é‡å¾ªçŽ¯ã€‚\n" @@ -2542,7 +2643,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 退出状æ€ä¸º 0 é™¤éž N ä¸å¤§äºŽæˆ–等于1。" -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2566,7 +2667,7 @@ msgstr "" "shell 内建时\n" " 为å‡ã€‚." -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2594,8 +2695,7 @@ msgstr "" " é™¤éž shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ª shell 函数或者 EXPR 无效,å¦åˆ™è¿”回结\n" " 果为0。" -#: builtins.c:385 -#, fuzzy +#: builtins.c:387 msgid "" "Change the shell working directory.\n" " \n" @@ -2618,16 +2718,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2644,33 +2744,38 @@ msgstr "" " 改å˜å½“å‰ç›®å½•至 DIR 目录。默认的 DIR 目录是 shell å˜é‡ HOME\n" " 的值。\n" " \n" -" å˜é‡ CDPATH å®šä¹‰äº†å«æœ‰ DIR 的目录的æœç´¢è·¯å¾„。\n" -" CDPATH å˜é‡ä¸­ä¸åŒçš„目录å称由分å·(:)分隔。\n" -" 一个空的目录å称和当å‰ç›®å½•是一样的。如果 DIR å˜é‡ç”±\n" -" æ–œæ (/) 打头,则 CDPATH å˜é‡ä¸ä¼šè¢«ä½¿ç”¨ã€‚\n" +" å˜é‡ CDPATH å®šä¹‰äº†å«æœ‰ DIR 的目录的æœç´¢è·¯å¾„,其中ä¸åŒçš„目录åç§°ç”±å†’å· (:)" +"分隔。\n" +" 一个空的目录å称表示当å‰ç›®å½•。如果è¦åˆ‡æ¢åˆ°çš„ DIR ç”±æ–œæ  (/) 开头,则 " +"CDPATH\n" +" å˜é‡ä¸ä¼šè¢«ä½¿ç”¨ã€‚\n" " \n" -" 如果路径找ä¸åˆ°ï¼Œå¹¶ä¸” shell 选项`cdable_vars' 被设定,\n" -" åˆ™å‚æ•°è¯è¢«å‡å®šä¸ºä¸€ä¸ªå˜é‡å。如果该å˜é‡æœ‰å€¼ï¼Œåˆ™å®ƒçš„值\n" -" 被当作 DIR 目录。\n" +" 如果路径找ä¸åˆ°ï¼Œå¹¶ä¸” shell 选项 `cdable_vars' è¢«è®¾å®šï¼Œåˆ™å‚æ•°è¯è¢«å‡å®šä¸ºä¸€" +"个\n" +" å˜é‡å。如果该å˜é‡æœ‰å€¼ï¼Œåˆ™å®ƒçš„值被当作 DIR 目录。\n" " \n" " 选项:\n" -" -L\t强制跟éšç¬¦å·é“¾æŽ¥ã€‚\n" -" -P\t使用物ç†ç›®å½•结构而ä¸è·Ÿéšç¬¦å·é“¾æŽ¥\n" -" -e\t如果使用了 -P 傿•°ï¼Œä½†ä¸èƒ½æˆåŠŸç¡®å®šå½“å‰å·¥ä½œç›®å½•时,\n" -" \t返回éžé›¶çš„返回值。 \n" +" -L\t强制跟éšç¬¦å·é“¾æŽ¥: åœ¨å¤„ç† `..' 之åŽè§£æž DIR 中的符å·é“¾æŽ¥ã€‚\n" +" -P\t使用物ç†ç›®å½•结构而ä¸è·Ÿéšç¬¦å·é“¾æŽ¥: åœ¨å¤„ç† `..' 之å‰è§£æž DIR 中的符" +"å·é“¾æŽ¥ã€‚\n" +" -e\t如果使用了 -P 傿•°ï¼Œä½†ä¸èƒ½æˆåŠŸç¡®å®šå½“å‰å·¥ä½œç›®å½•时,返回éžé›¶çš„返回" +"值。\n" +" -@\tåœ¨æ”¯æŒæ‹“展属性的系统上,将一个有这些属性的文件当作有文件属性的目" +"录。\n" " \n" " 默认情况下跟éšç¬¦å·é“¾æŽ¥ï¼Œå¦‚åŒæŒ‡å®š `-L'。\n" +" `..' 使用移除å‘å‰ç›¸é‚»ç›®å½•åæˆå‘˜ç›´åˆ° DIR 开始或一个斜æ çš„æ–¹å¼å¤„ç†ã€‚\n" " \n" " 退出状æ€ï¼š\n" -" 如果目录改å˜ï¼Œæˆ–在使用 -P 选项时 $PWD 修改æˆåŠŸæ—¶è¿”å›ž0,å¦åˆ™éžé›¶ã€‚" +" 如果目录改å˜ï¼Œæˆ–在使用 -P 选项时 $PWD 修改æˆåŠŸæ—¶è¿”å›ž 0,å¦åˆ™éžé›¶ã€‚" -#: builtins.c:422 +#: builtins.c:425 msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2682,17 +2787,15 @@ msgstr "" "打å°å½“å‰å·¥ä½œç›®å½•çš„å字。\n" " \n" " 选项:\n" -" -L\tæ‰“å° $PWD å˜é‡çš„值,如果它命å了当å‰çš„\n" -" \t工作目录\n" +" -L\tæ‰“å° $PWD å˜é‡çš„值,如果它包å«äº†å½“å‰çš„工作目录\n" " -P\t打å°å½“å‰çš„物ç†è·¯å¾„,ä¸å¸¦æœ‰ä»»ä½•的符å·é“¾æŽ¥\n" " \n" " 默认情况下,`pwd' 的行为和带 `-L' 选项一致\n" " \n" " 退出状æ€ï¼š\n" -" 除éžä½¿ç”¨äº†æ— æ•ˆé€‰é¡¹æˆ–者当å‰ç›®å½•ä¸å¯è¯»ï¼Œå¦åˆ™\n" -" 返回状æ€ä¸º0。" +" 除éžä½¿ç”¨äº†æ— æ•ˆé€‰é¡¹æˆ–者当å‰ç›®å½•ä¸å¯è¯»ï¼Œå¦åˆ™è¿”回状æ€ä¸º0。" -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2708,7 +2811,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 总是æˆåŠŸã€‚" -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" @@ -2720,7 +2823,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 总是æˆåŠŸ" -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2732,7 +2835,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 总是失败。" -#: builtins.c:468 +#: builtins.c:471 msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2742,10 +2845,10 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." @@ -2757,16 +2860,14 @@ msgstr "" " 情况下被用于å¯åЍç£ç›˜ä¸Šçš„命令。\n" " \n" " 选项:\n" -" -p\t使用 PATH å˜é‡çš„ä¸€ä¸ªé»˜è®¤å€¼ä»¥ç¡®ä¿æ‰€æœ‰çš„æ ‡å‡†å·¥å…·\n" -" \t都能被找到。\n" +" -p\t使用 PATH å˜é‡çš„ä¸€ä¸ªé»˜è®¤å€¼ä»¥ç¡®ä¿æ‰€æœ‰çš„æ ‡å‡†å·¥å…·éƒ½èƒ½è¢«æ‰¾åˆ°ã€‚\n" " -v\tæ‰“å° COMMAND 命令的æè¿°ï¼Œå’Œ `type' 内建相似\n" " -V\tæ‰“å°æ¯ä¸ª COMMAND 命令的详细æè¿°\n" " \n" " 退出状æ€\n" " 返回 COMMAND 命令的返回状æ€ï¼Œæˆ–者当找ä¸åˆ° COMMAND 命令时失败。" -#: builtins.c:487 -#, fuzzy +#: builtins.c:490 msgid "" "Set variable values and attributes.\n" " \n" @@ -2776,9 +2877,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2811,16 +2912,17 @@ msgstr "" " 则显示所有å˜é‡çš„属性和值。\n" " \n" " 选项:\n" -" -f\té™åˆ¶åŠ¨ä½œæˆ–æ˜¾ç¤ºå‡½æ•°å称和定义\n" -" -F\té™åˆ¶ä»…显示函数åç§°(以åŠè¡Œå·å’Œè°ƒè¯•æ—¶\n" -" \tæºæ–‡ä»¶å)\n" +" -f\té™åˆ¶åŠ¨ä½œæˆ–æ˜¾ç¤ºä¸ºåªå‡½æ•°å称和定义\n" +" -F\té™åˆ¶ä»…显示函数åç§° (以åŠè¡Œå·å’Œæºæ–‡ä»¶å,当调试时)\n" +" -g\t当用于 shell 函数内时创建全局å˜é‡; å¦åˆ™å¿½ç•¥\n" " -p\t显示æ¯ä¸ª NAME å˜é‡çš„属性和值\n" " \n" " 设定属性的选项:\n" -" -a\t使 NAME æˆä¸ºä¸‹æ ‡æ•°ç»„(如果支æŒ)\n" +" -a\t使 NAME æˆä¸ºä¸‹æ ‡æ•°ç»„ (如果支æŒ)\n" " -A\t使 NAME æˆä¸ºå…³è”数组 (如果支æŒ)\n" " -i\t使 NAME 带有 `integer' (æ•´æ•°)属性\n" " -l\tå°† NAME 在赋值时转为å°å†™\n" +" -n\t使 NAME æˆä¸ºæŒ‡å‘一个以其值为åç§°çš„å˜é‡çš„引用\n" " -r\tå°† NAME å˜ä¸ºåªè¯»\n" " -t\t使 NAME 带有 `trace' (追踪)属性\n" " -u\tå°† NAME 在赋值时转为大写\n" @@ -2832,23 +2934,23 @@ msgstr "" " `let' 命令)\n" " \n" " 在函数中使用时,`declare' 使 NAME æˆä¸ºæœ¬åœ°å˜é‡ï¼Œå’Œ `local'\n" -" 命令一致。\n" +" 命令一致。`-g' 选项抑制此行为。\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸé™¤éžä½¿ç”¨äº†æ— æ•ˆé€‰é¡¹æˆ–者å‘生错误。" -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" "设置å˜é‡çš„值和属性。\n" " \n" " 废弃。å‚è§ `help declare'。" -#: builtins.c:535 -#, fuzzy +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2871,11 +2973,10 @@ msgstr "" " 部以åŠå­å‡½æ•°ä¸­å¯è§ã€‚\n" " \n" " 退出状æ€ï¼š\n" -" 返回æˆåŠŸé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项ã€å‘生了错误或者 shell ä¸åœ¨\n" -" 执行一个函数。" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项ã€å‘生了赋值错误或者 shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ªå‡½" +"数。" -#: builtins.c:552 -#, fuzzy +#: builtins.c:555 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2901,16 +3002,16 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" "将傿•°å†™åˆ°æ ‡å‡†è¾“出。\n" " \n" -" 在标准输出上显示 ARG 傿•°åŽè·Ÿä¸€ä¸ªæ¢è¡Œã€‚\n" +" 在标准输出上,显示用空格分割的 ARG 傿•°åŽè·Ÿä¸€ä¸ªæ¢è¡Œã€‚\n" " \n" " 选项:\n" " -n\tä¸è¦è¿½åŠ æ¢è¡Œ\n" @@ -2922,21 +3023,20 @@ msgstr "" " \\b\t退格\n" " \\c\t抑制更多的输出\n" " \\e\t转义字符\n" -" \\f\tæ ¼å¼æä¾›\n" +" \\f\tæ¢é¡µå­—符\n" " \\n\tæ¢è¡Œ\n" " \\r\t回车\n" " \\t\t横å‘制表符\n" " \\v\t纵å‘制表符\n" " \\\\\tåæ–œæ \n" -" \\0nnn\t以 NNN (八进制)为 ASCII ç çš„字符。 NNN å¯ä»¥æ˜¯\n" -" \t0到3个八进制数字\n" -" \\xHH\t以 HH (å六进制)为值的八比特字符。HHå¯ä»¥æ˜¯\n" -" \t一个或两个å六进制数字\n" +" \\0nnn\t以 NNN (八进制)为 ASCII ç çš„字符。 NNN å¯ä»¥æ˜¯ 0 到 3 个八进制" +"ä½\n" +" \\xHH\t以 HH (å六进制)为值的八按ä½å­—符。HHå¯ä»¥æ˜¯ä¸€ä¸ªæˆ–两个å六进制ä½\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸé™¤éžæœ‰å†™é”™è¯¯å‘生。" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2958,7 +3058,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 除éžå†™é”™è¯¯å‘生,å¦åˆ™è¿”回æˆåŠŸã€‚" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3008,7 +3108,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éž NAME 䏿˜¯ä¸€ä¸ª shell 内建或者有错误å‘生。" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3027,7 +3127,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 以命令的状æ€é€€å‡ºï¼Œæˆ–者在命令为空的情况下返回æˆåŠŸã€‚" -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -3105,7 +3205,7 @@ msgstr "" " 如果一个选项被找到则返回æˆåŠŸï¼›å¦‚æžœé‡åˆ°äº†é€‰é¡¹çš„结尾或者\n" " 有错误å‘生则返回失败。" -#: builtins.c:685 +#: builtins.c:688 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3116,8 +3216,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -3144,7 +3244,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸé™¤éž COMMAND 命令没有找到或者出现一个é‡å®šå‘错误。" -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" @@ -3156,7 +3256,7 @@ msgstr "" " ä»¥çŠ¶æ€ N 退出 shell。 如果 N 被çœç•¥ï¼Œåˆ™é€€å‡ºçжæ€\n" " 为最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的退出状æ€ã€‚" -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -3169,7 +3269,7 @@ msgstr "" " ä»¥çŠ¶æ€ N 退出一个登录 shell。如果ä¸åœ¨ç™»å½• shell 中执行,则\n" " 返回一个错误。" -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3222,7 +3322,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œæˆ–è€…æ‰§è¡Œçš„å‘½ä»¤çš„çŠ¶æ€ï¼›å¦‚果错误å‘生则返回éžé›¶ã€‚" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -3242,7 +3342,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 放至å‰å°çš„命令状æ€ï¼Œæˆ–者当错误å‘生时为失败。" -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -3264,8 +3364,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸé™¤éžä»»åŠ¡ç®¡ç†æ²¡æœ‰å¯ç”¨æˆ–者错误å‘生。" -#: builtins.c:784 -#, fuzzy +#: builtins.c:787 msgid "" "Remember or display program locations.\n" " \n" @@ -3274,15 +3373,15 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" @@ -3290,11 +3389,11 @@ msgid "" msgstr "" "è®°ä½æˆ–显示程åºä½ç½®ã€‚\n" " \n" -" ç¡®å®šå¹¶è®°ä½æ¯ä¸€ä¸ªç»™å®š NAME å称的命令的完整路径。如果\n" -" 䏿供傿•°ï¼Œåˆ™æ˜¾ç¤ºå·²ç»è®°ä½çš„命令的信æ¯ã€‚\n" +" ç¡®å®šå¹¶è®°ä½æ¯ä¸€ä¸ªç»™å®š NAME å称的命令的完整路径。\n" +" å¦‚æžœä¸æä¾›å‚æ•°ï¼Œåˆ™æ˜¾ç¤ºå·²ç»è®°ä½çš„命令的信æ¯ã€‚\n" " \n" " 选项:\n" -" -d\t\t忘记æ¯ä¸€ä¸ªå·²ç»è®°ä½çš„命令的ä½ç½®\n" +" -d\t\t忘记æ¯ä¸€ä¸ªå·²ç»è®°ä½çš„ NAME çš„ä½ç½®\n" " -l\t\t以å¯ä½œä¸ºè¾“å…¥é‡ç”¨çš„æ ¼å¼æ˜¾ç¤º\n" " -p pathname\t使用 pathname 路径作为 NAME 命令的全路径\n" " -r\t\t忘记所有记ä½çš„ä½ç½®\n" @@ -3302,13 +3401,14 @@ msgstr "" " \t\tNAME å称,则æ¯ä¸ªä½ç½®å‰é¢ä¼šåŠ ä¸Šç›¸åº”çš„ NAME åç§°\n" " \t\t\n" " 傿•°ï¼š\n" -" NAME\t\tæ¯ä¸ª NAME å称会在 $PATH 路径å˜é‡ä¸­è¢«æœç´¢ï¼Œå¹¶\n" -" \t\t且添加到记ä½çš„命令的列表中。\n" +" NAME\t\tæ¯ä¸ª NAME å称会在 $PATH 路径å˜é‡ä¸­è¢«æœç´¢ï¼Œå¹¶ä¸”添加到记ä½çš„命" +"令\n" +" 列表中。\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éž NAME 命令没有找到或者使用了无效的选项。" -#: builtins.c:809 +#: builtins.c:812 msgid "" "Display information about builtin commands.\n" " \n" @@ -3320,7 +3420,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -3347,7 +3447,8 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éž PATTERN æ¨¡å¼æ²¡æœ‰æ‰¾åˆ°æˆ–者使用了无效选项。" -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3356,23 +3457,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -3392,12 +3493,9 @@ msgstr "" " -a\t将当å‰ä¼šè¯çš„历å²è¡Œè¿½åŠ åˆ°åŽ†å²æ–‡ä»¶ä¸­\n" " -n\tä»ŽåŽ†å²æ–‡ä»¶ä¸­è¯»å–所有未被读å–的行\n" " -r\t读å–åŽ†å²æ–‡ä»¶å¹¶å°†å†…容追加到历å²åˆ—表中\n" -" \t中\n" -" -w\t将当å‰åކå²å†™å…¥åˆ°åކ岿–‡ä»¶ä¸­\n" -" \t并追加到历å²åˆ—表中\n" +" -w\t将当å‰åކå²å†™å…¥åˆ°åކ岿–‡ä»¶ä¸­ï¼Œå¹¶è¿½åŠ åˆ°åŽ†å²åˆ—表中\n" " \n" -" -p\t对æ¯ä¸€ä¸ª ARG 傿•°å±•开历å²å¹¶æ˜¾ç¤ºç»“æžœ\n" -" \t而ä¸å­˜å‚¨åˆ°åކå²åˆ—表中\n" +" -p\t对æ¯ä¸€ä¸ª ARG 傿•°å±•开历å²å¹¶æ˜¾ç¤ºç»“果,而ä¸å­˜å‚¨åˆ°åކå²åˆ—表中\n" " -s\t以啿¡è®°å½•追加 ARG 到历å²åˆ—表中\n" " \n" " 如果给定了 FILENAME 文件åï¼Œåˆ™å®ƒå°†è¢«ä½œä¸ºåŽ†å²æ–‡ä»¶ã€‚å¦åˆ™\n" @@ -3410,8 +3508,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者å‘生错误。" -#: builtins.c:869 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3421,7 +3518,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -3436,12 +3533,12 @@ msgid "" msgstr "" "显示任务状æ€ã€‚\n" " \n" -" 列出活动的任务。JPBSPEC é™åˆ¶ä»…输出指定的任务。\n" +" 列出活动的任务。JOBSPEC é™åˆ¶ä»…输出指定的任务。\n" " ä¸å¸¦é€‰é¡¹æ—¶ï¼Œæ‰€æœ‰æ´»åŠ¨ä»»åŠ¡çš„çŠ¶æ€éƒ½ä¼šæ˜¾ç¤ºã€‚\n" " \n" " 选项:\n" " -l\t在正常信æ¯åŸºç¡€ä¸Šåˆ—出进程å·\n" -" -n\tåˆ—å‡ºä¸Šæ¬¡é€šå‘Šä¹‹åŽæ”¹å˜äº†çжæ€çš„进程\n" +" -n\tä»…åˆ—å‡ºä¸Šæ¬¡é€šå‘Šä¹‹åŽæ”¹å˜äº†çжæ€çš„进程\n" " -p\t仅列出进程å·\n" " -r\té™åˆ¶ä»…输出è¿è¡Œä¸­çš„任务\n" " -s\té™åˆ¶ä»…è¾“å‡ºåœæ­¢çš„任务\n" @@ -3451,9 +3548,9 @@ msgstr "" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者有错误å‘生。\n" -" 如果使用 -x选项,则返回 COMMAND 命令的退出状æ€ã€‚" +" 如果使用 -x 选项,则返回 COMMAND 命令的退出状æ€ã€‚" -#: builtins.c:896 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3463,7 +3560,7 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" @@ -3477,13 +3574,14 @@ msgstr "" " 选项:\n" " -a\tå¦‚æžœä¸æä¾› JOBSPEC 傿•°ï¼Œåˆ™åˆ é™¤æ‰€æœ‰ä»»åŠ¡\n" " -h\t标识æ¯ä¸ª JOBSPEC 任务,从而当 shell 接收到 SIGHUP\n" -" \tä¿¡å·æ—¶ä¸å‘é€ SIGHUP 给指定任务\n" +" \t\tä¿¡å·æ—¶ä¸å‘é€ SIGHUP 给指定任务\n" " -r\t仅删除è¿è¡Œä¸­çš„任务\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 JOBSPEC 声明。" -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -3495,7 +3593,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -3514,7 +3613,7 @@ msgstr "" " -s sig\tSIG 是信å·åç§°\n" " -n sig\tSIG 是信å·ç¼–å·\n" " -l\t列出信å·åç§°ï¼›å¦‚æžœå‚æ•°åŽè·Ÿ `-l'则被å‡è®¾ä¸ºä¿¡å·ç¼–å·ï¼Œ\n" -" \t而相应的信å·å称会被列出\n" +" \t\t而相应的信å·å称会被列出\n" " \n" " Kill æˆä¸º shell 内建有两个ç†ç”±ï¼šå®ƒå…许使用任务编å·è€Œä¸æ˜¯è¿›ç¨‹å·ï¼Œ\n" " 并且在å¯ä»¥åˆ›å»ºçš„进程数上é™è¾¾åˆ°æ˜¯å…è®¸è¿›ç¨‹è¢«æ€æ­»ã€‚\n" @@ -3522,8 +3621,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者有错误å‘生。" -#: builtins.c:938 -#, fuzzy +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3567,27 +3665,27 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -"估值算数表达å¼ã€‚\n" +"估值算术表达å¼ã€‚\n" " \n" -" å°†æ¯ä¸ª ARG å‚èµ›ä½œä¸ºç®—æ•°è¡¨è¾¾å¼æ¥ä¼°å€¼ã€‚估值的计算以等宽的整\n" +" å°†æ¯ä¸ª ARG å‚èµ›ä½œä¸ºç®—æœ¯è¡¨è¾¾å¼æ¥ä¼°å€¼ã€‚估值的计算以定宽的整\n" " 数完æˆï¼Œä¸å¸¦æº¢å‡ºæ£€æµ‹ï¼Œä¸è¿‡é™¤ 0 是被置陷阱的并且会报一个错\n" -" 误。下列æ“作符被按照相åŒçš„算数优先级组åˆã€‚åˆ—è¡¨çš„é¡ºåºæŒ‰ç…§\n" +" 误。下列æ“作符被按照相åŒçš„算术优先级组åˆã€‚åˆ—è¡¨çš„é¡ºåºæŒ‰ç…§\n" " 优先级从高至低。\n" " \n" " \n" " \tid++, id--\tå˜é‡åŽç½®åŠ ï¼ŒåŽç½®å‡\n" " \t++id, --id\tå˜é‡å‰ç½®åŠ ï¼Œå‰ç½®å‡\n" " \t-, +\t\tä¸€å…ƒå‡æ³•,一元加法\n" -" \t!, ~\t\t逻辑和比特å–å\n" +" \t!, ~\t\t逻辑和ä½å–å\n" " \t**\t\t指数\n" " \t*, /, %\t\t乘法,除法,å–余数\n" " \t+, -\t\t增加,å‡å°‘\n" -" \t<<, >>\t\tå‘左和å‘峿¯”特移ä½\n" +" \t<<, >>\t\tå‘左和å‘峿Œ‰ä½ç§»ä½\n" " \t<=, >=, <, >\t比较\n" " \t==, !=\t\t等于,ä¸ç­‰äºŽ\n" -" \t&\t\t比特与\n" -" \t^\t\t比特异或\n" -" \t|\t\t比特或\n" +" \t&\t\t按ä½ä¸Ž\n" +" \t^\t\t按ä½å¼‚或\n" +" \t|\t\tæŒ‰ä½æˆ–\n" " \t&&\t\t逻辑与\n" " \t||\t\t逻辑或\n" " \texpr ? expr : expr\n" @@ -3596,20 +3694,16 @@ msgstr "" " \t+=, -=, <<=, >>=,\n" " \t&=, ^=, |=\t赋值\n" " \n" -" Shell å˜é‡å…许作为æ“作数。表达å¼ä¸­çš„å˜é‡çš„å称会被å–代\n" -" 以值(强制转æ¢ä¸ºç­‰å®½çš„æ•´æ•°)。表达å¼ä¸­çš„å˜é‡ä¸éœ€è¦æ‰“å¼€\n" -" 整数属性。\n" -" \n" -" \n" -" æ“作符按照优先级进行估值。括å·ä¸­çš„å­è¡¨è¾¾å¼å°†è¢«å…ˆä¼°å€¼ï¼Œ\n" -" 并有å¯èƒ½é‡è½½ä¸Šè¿°çš„表达å¼è§„则。\n" +" Shell å˜é‡å…许作为æ“作数。表达å¼ä¸­çš„å˜é‡çš„å称会被å–代以值\n" +" (强制转æ¢ä¸ºå®šå®½çš„æ•´æ•°)。表达å¼ä¸­çš„å˜é‡ä¸éœ€è¦æ‰“开整数属性。\n" " \n" +" æ“作符按照优先级进行估值。括å·ä¸­çš„å­è¡¨è¾¾å¼å°†è¢«å…ˆä¼°å€¼ï¼Œå¹¶å¯å–代上述表达å¼" +"规则。\n" " \n" " 退出状æ€ï¼š\n" -" 如果最åŽä¸€ä¸ª ARG 傿•°ä¼°å€¼ä¸º0,则 let 返回1ï¼› å¦åˆ™ let 返回0。" +" 如果最åŽä¸€ä¸ª ARG 傿•°ä¼°å€¼ä¸º 0,则 let 返回 1ï¼› å¦åˆ™ let 返回 0。" -#: builtins.c:983 -#, fuzzy +#: builtins.c:987 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3630,27 +3724,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3661,42 +3756,43 @@ msgid "" msgstr "" "从标准输入读å–一行并将其分为ä¸åŒçš„域。\n" " \n" -" 从标准输入读å–å•独的一行,或者如果使用了 -u 选项,从文件æ\n" -" è¿° FD 中读å–。该行被分割æˆåŸŸï¼Œå¦‚åŒè¯è¯­åˆ†å‰²ä¸€æ ·ï¼Œå¹¶ä¸”\n" -" 第一个è¯è¢«èµ‹å€¼ç»™ç¬¬ä¸€ä¸ª NAME å˜é‡ï¼Œç¬¬äºŒä¸ªè¯è¢«èµ‹å€¼ç»™ç¬¬äºŒä¸ª\n" -" NAME å˜é‡ï¼Œå¦‚此继续,直到剩下所有的è¯è¢«èµ‹å€¼ç»™æœ€åŽä¸€ä¸ª\n" -" NAME å˜é‡ã€‚åªæœ‰ $IFS å˜é‡ä¸­çš„字符被认作是è¯è¯­åˆ†éš”符。\n" +" 从标准输入读å–å•独的一行,或者如果使用了 -u 选项,从文件æè¿°ç¬¦ FD 中读" +"å–。\n" +" 该行被分割æˆåŸŸï¼Œå¦‚åŒè¯è¯­åˆ†å‰²ä¸€æ ·ï¼Œå¹¶ä¸”第一个è¯è¢«èµ‹å€¼ç»™ç¬¬ä¸€ä¸ª NAME å˜é‡ï¼Œ" +"第二\n" +" 个è¯è¢«èµ‹å€¼ç»™ç¬¬äºŒä¸ª NAME å˜é‡ï¼Œå¦‚此继续,直到剩下所有的è¯è¢«èµ‹å€¼ç»™æœ€åŽä¸€ä¸ª " +"NAME\n" +" å˜é‡ã€‚åªæœ‰ $IFS å˜é‡ä¸­çš„字符被认作是è¯è¯­åˆ†éš”符。\n" " \n" " 如果没有æä¾› NAME å˜é‡ï¼Œåˆ™è¯»å–的行被存放在 REPLY å˜é‡ä¸­ã€‚\n" " \n" " 选项:\n" -" -a array\tå°†è¯è¯­èµ‹å€¼ç»™ ARRAY 数组å˜é‡çš„åºåˆ—下标æˆå‘˜ï¼Œä»Ž\n" -" \t\t零开始。\n" -" -d delim\tæŒç»­è¯»å–直到读入 DELIM å˜é‡ä¸­çš„ç¬¬ä¸€ä¸ªå­—ç¬¦ï¼Œè€Œä¸æ˜¯\n" -" \t\tæ¢è¡Œç¬¦\n" -" -e\t\tåœ¨ä¸€ä¸ªäº¤äº’å¼ shell 中使用 readline 获å–行\n" -" -i text\t使用 TEXT 文本作为 readline çš„åˆå§‹æ–‡å­—\n" -" -n nchars\tè¯»å– nchars 个字符之åŽè¿”å›žï¼Œè€Œä¸æ˜¯ç­‰åˆ°è¯»å–\n" -" \t\tæ¢è¡Œç¬¦ï¼Œä½†æ˜¯åˆ†éš”符ä»ç„¶æœ‰æ•ˆï¼Œå¦‚æžœé‡åˆ°åˆ†éš”符之å‰è¯»\n" -" \t\tå–了ä¸è¶³ nchars 个字符\n" -" -N nchars\t在准确读å–了 nchars 个字符之åŽè¿”回,除éžé‡åˆ°\n" -" \t\t了文件结æŸç¬¦æˆ–者读超时,任何的分隔符都被忽略\n" +" -a array\tå°†è¯è¯­èµ‹å€¼ç»™ ARRAY 数组å˜é‡çš„åºåˆ—下标æˆå‘˜ï¼Œä»Žé›¶å¼€å§‹ã€‚\n" +" -d delim\tæŒç»­è¯»å–直到读入 DELIM å˜é‡ä¸­çš„ç¬¬ä¸€ä¸ªå­—ç¬¦ï¼Œè€Œä¸æ˜¯æ¢è¡Œç¬¦\n" +" -e\tåœ¨ä¸€ä¸ªäº¤äº’å¼ shell 中使用 Readline 获å–行\n" +" -i text\t使用 TEXT 文本作为 Readline çš„åˆå§‹æ–‡å­—\n" +" -n nchars\tè¯»å– nchars 个字符之åŽè¿”å›žï¼Œè€Œä¸æ˜¯ç­‰åˆ°è¯»å–æ¢è¡Œç¬¦ã€‚\n" +" \t\t但是分隔符ä»ç„¶æœ‰æ•ˆï¼Œå¦‚æžœé‡åˆ°åˆ†éš”符之å‰è¯»å–了ä¸è¶³ nchars 个字符。\n" +" -N nchars\t在准确读å–了 nchars 个字符之åŽè¿”回,除éžé‡åˆ°æ–‡ä»¶ç»“æŸç¬¦æˆ–者读" +"超时,\n" +" \t\t任何的分隔符都被忽略\n" " -p prompt\t在å°è¯•读å–之å‰è¾“出 PROMPT æç¤ºç¬¦å¹¶ä¸”ä¸å¸¦\n" " \t\tæ¢è¡Œç¬¦\n" -" -r\t\tä¸å…è®¸åæ–œæ è½¬ä¹‰ä»»ä½•字符\n" -" -s\t\t䏿˜¾ç¤ºç»ˆç«¯çš„任何输入\n" -" -t timeout\t如果在 TIMEOUT 秒内没有读å–一个完整的行则\n" -" \t\t超时并且返回失败。TMOUT å˜é‡çš„值是默认的超时时间。\n" -" \t\tTIMEOUT å¯ä»¥æ˜¯å°æ•°ã€‚如果 TIMEOUT 是0,那么仅当在\n" -" \t\t指定的文件æè¿°ç¬¦ä¸Šè¾“入有效的时候,read æ‰è¿”回æˆåŠŸã€‚\n" -" \t\t如果超过了超时时间,则返回状æ€ç å¤§äºŽ128\n" -" -u fd\t\t从文件æè¿°ç¬¦ FD 中读å–ï¼Œè€Œä¸æ˜¯æ ‡å‡†è¾“å…¥\n" +" -r\tä¸å…è®¸åæ–œæ è½¬ä¹‰ä»»ä½•字符\n" +" -s\t䏿˜¾ç¤ºç»ˆç«¯çš„任何输入\n" +" -t timeout\t如果在 TIMEOUT 秒内没有读å–一个完整的行则超时并且返回失" +"败。\n" +" \t\tTMOUT å˜é‡çš„值是默认的超时时间。\n" +" \t\tTIMEOUT å¯ä»¥æ˜¯å°æ•°ã€‚如果 TIMEOUT 是 0,那么仅当在指定的文件æè¿°ç¬¦ä¸Š\n" +" \t\t输入有效的时候,read æ‰è¿”回æˆåŠŸã€‚\n" +" \t\t如果超过了超时时间,则返回状æ€ç å¤§äºŽ 128\n" +" -u fd\t从文件æè¿°ç¬¦ FD 中读å–ï¼Œè€Œä¸æ˜¯æ ‡å‡†è¾“å…¥\n" " \n" " 退出状æ€ï¼š\n" " 返回ç ä¸ºé›¶ï¼Œé™¤éžé‡åˆ°äº†æ–‡ä»¶ç»“æŸç¬¦ï¼Œè¯»è¶…时,或者无效的文\n" " ä»¶æè¿°ç¬¦ä½œä¸ºå‚数传递给了 -u 选项。" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3716,7 +3812,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回 N,或者如果 shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ªå‡½æ•°æˆ–引用脚本时,失败。" -#: builtins.c:1041 +#: builtins.c:1047 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3785,7 +3881,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3836,11 +3933,12 @@ msgstr "" " noexec 与 -n 相åŒ\n" " noglob 与 -f 相åŒ\n" " nolog ç›®å‰å¯æŽ¥å—但是被忽略\n" -" notify 与-b 相åŒ\n" +" notify 与 -b 相åŒ\n" " nounset 与 -u 相åŒ\n" " onecmd 与 -t 相åŒ\n" " physical 与 -P 相åŒ\n" -" pipefail 管é“的返值是最åŽä¸€ä¸ªéžé›¶è¿”回值的命令的返回结果,\n" +" pipefail 管é“的返回值是最åŽä¸€ä¸ªéžé›¶è¿”回值的命令的返回结" +"果,\n" " 或者当所有命令都返回零是也为零。\n" " posix 改å˜é»˜è®¤æ—¶å’Œ Posix 标准ä¸åŒçš„ bash 行为\n" " ä»¥åŒ¹é…æ ‡å‡†\n" @@ -3877,8 +3975,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„傿•°ã€‚" -#: builtins.c:1126 -#, fuzzy +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3888,7 +3985,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3904,18 +4001,19 @@ msgstr "" " 对æ¯ä¸€ä¸ª NAME å称,删除对应的å˜é‡æˆ–函数。\n" " \n" " 选项:\n" -" -f\tå°†æ¯ä¸ª NAME å称当作函数对待\n" -" -v\tå°†æ¯ä¸ª NAME å称当作å˜é‡å¯¹å¾…\n" +" -f\tå°†æ¯ä¸ª NAME 视为函数\n" +" -v\tå°†æ¯ä¸ª NAME 视为å˜é‡\n" +" -n\tå°†æ¯ä¸ª NAME 视为å称引用,åªå–消其本身而éžå…¶æŒ‡å‘çš„å˜é‡\n" " \n" -" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œunset 首先å°è¯•å–æ¶ˆè®¾å®šä¸€ä¸ªå˜é‡ï¼Œå¦‚æžœ\n" -" 失败,å†å°è¯•å–æ¶ˆè®¾å®šä¸€ä¸ªå‡½æ•°ã€‚\n" +" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œunset 首先å°è¯•å–æ¶ˆè®¾å®šä¸€ä¸ªå˜é‡ï¼Œå¦‚果失败,å†å°è¯•å–æ¶ˆè®¾å®šä¸€ä¸ª" +"函数。\n" " \n" -" æŸäº›å˜é‡ä¸å¯ä»¥è¢«å–消设定;请查看 `readonly'。\n" +" æŸäº›å˜é‡ä¸å¯ä»¥è¢«å–消设定;å‚è§ `readonly'。\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称为åªè¯»ã€‚" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3948,8 +4046,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称。" -#: builtins.c:1167 -#, fuzzy +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3961,9 +4058,8 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" @@ -3979,14 +4075,14 @@ msgstr "" " -a\t指下标数组å˜é‡\n" " -A\tæŒ‡å…³è”æ•°ç»„æ ‡é‡\n" " -f\t指 shell 函数\n" -" -p\t显示åªè¯»å˜é‡å’Œå‡½æ•°åˆ—表\n" +" -p\t显示åªè¯»å˜é‡æˆ–函数列表,å–å†³äºŽæ˜¯å¦æä¾›äº† -f 选项\n" " \n" " `--' çš„å‚æ•°ç¦ç”¨è¿›ä¸€æ­¥çš„选项处ç†ã€‚\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称。" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4004,7 +4100,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éž N 为负或者大于 $#。" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4026,7 +4122,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回 FILENAME 文件中最åŽä¸€ä¸ªå‘½ä»¤çš„状æ€ï¼›å¦‚æžœ FILENAME 文件ä¸å¯è¯»åˆ™å¤±è´¥ã€‚" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4050,8 +4146,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžæ²¡æœ‰å¯ç”¨ä»»åŠ¡æŽ§åˆ¶æˆ–è€…æœ‰é”™è¯¯å‘生。" -#: builtins.c:1248 -#, fuzzy +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4115,9 +4210,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4135,7 +4230,7 @@ msgid "" msgstr "" "对æ¡ä»¶è¡¨è¾¾å¼è¿›è¡Œä¼°å€¼ã€‚\n" " \n" -" æ ¹æ® EXPR 表达å¼çš„估值以状æ€0(真)或1(伪)退出。\n" +" æ ¹æ® EXPR 表达å¼çš„ä¼°å€¼ä»¥çŠ¶æ€ 0 (真) 或 1 (伪) 退出。\n" " 表达å¼å¯ä»¥æ˜¯ä¸€å…ƒæˆ–者二元的。一元表达å¼é€šå¸¸ç”¨äºŽæ£€æµ‹\n" " 文件状æ€ã€‚åŒæ—¶è¿˜æœ‰å­—符串æ“作符和数字比较æ“作符。\n" " \n" @@ -4150,12 +4245,12 @@ msgstr "" " -g 文件 如果文件的组属性设置打开则为真。\n" " -h 文件 如果文件为符å·é“¾æŽ¥åˆ™ä¸ºçœŸã€‚\n" " -L 文件 如果文件为符å·é“¾æŽ¥åˆ™ä¸ºçœŸã€‚\n" -" -k 文件 如果文件的粘滞ä½è®¾å®šåˆ™ä¸ºçœŸã€‚\n" +" -k 文件 如果文件的粘滞 (sticky) ä½è®¾å®šåˆ™ä¸ºçœŸã€‚\n" " -p 文件 如果文件为命å管é“则为真。\n" " -r 文件 如果文件对于您是å¯è¯»çš„则为真。\n" " -s 文件 如果文件存在且ä¸ä¸ºç©ºåˆ™ä¸ºçœŸã€‚\n" " -S 文件 如果文件是套接字则为真。\n" -" -t 文件æè¿°ç¬¦ 如果文件æè¿°ç¬¦åœ¨ä¸€ä¸ªç»ˆç«¯ä¸Šæ‰“开则为真。\n" +" -t 文件æè¿°ç¬¦ 如果文件æè¿°ç¬¦åœ¨ä¸€ä¸ªç»ˆç«¯ä¸Šæ‰“开则为真。\n" " -u 文件 如果文件的用户数行设置打开则为真。\n" " -w 文件 如果文件对您是å¯å†™çš„则为真\n" " -x 文件 å¦‚æžœæ–‡ä»¶å¯¹æ‚¨æ˜¯å¯æ‰§è¡Œçš„则为真。\n" @@ -4188,22 +4283,24 @@ msgstr "" " \n" " å…¶ä»–æ“作符:\n" " \n" -" -o 选项 如果指定 shell 选项å¯ç”¨åˆ™ä¸ºçœŸã€‚\n" -" ! EXPR å¦‚æžœè¡¨è¾¾å¼ expr 为å‡åˆ™ä¸ºçœŸã€‚\n" +" -o 选项 如果指定 shell 选项å¯ç”¨åˆ™ä¸ºçœŸã€‚\n" +" -v VAR 如果指定 Shell å˜é‡ VAR 已赋值则为真。\n" +" -R VAR 如果指定 Shell å˜é‡ VAR 已赋值且为å称引用则为真。\n" +" ! EXPR å¦‚æžœè¡¨è¾¾å¼ expr 为å‡åˆ™ä¸ºçœŸã€‚\n" " EXPR1 -a EXPR2 如果 expr1 å’Œ expr2 都为真则为真。\n" " EXPR1 -o EXPR2 如果 expr1 å’Œ expr2 有一个为真则为真。\n" " \n" -" arg1 OP arg2 算数测试。OPæ“作符å¯ä»¥æ˜¯ -eqã€-neã€\n" +" arg1 OP arg2 算术测试。OPæ“作符å¯ä»¥æ˜¯ -eqã€-neã€\n" " -ltã€-leã€-gtã€æˆ– -ge 中的一个。\n" " \n" -" 二元算数æ“作返回真,如果 ARG1 傿•°ç­‰äºŽã€ä¸ç­‰äºŽã€\n" +" 二元算术æ“作返回真,如果 ARG1 傿•°ç­‰äºŽã€ä¸ç­‰äºŽã€\n" " å°äºŽã€å°äºŽç­‰äºŽã€å¤§äºŽã€æˆ–者大于等于 ARG2 傿•°ã€‚\n" " \n" " 退出状æ€ï¼š\n" " 如果 EXPR 表达å¼ä¼°å€¼ä¸ºçœŸåˆ™è¿”回æˆåŠŸï¼›å¦‚æžœ EXPR 表达å¼ä¼°å€¼\n" " ä¸ºå‡æˆ–è€…ä½¿ç”¨äº†æ— æ•ˆçš„å‚æ•°åˆ™è¿”回失败。" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4215,7 +4312,7 @@ msgstr "" " 是内建命令 \"test\" çš„åŒä¹‰è¯ï¼Œä½†æ˜¯æœ€åŽä¸€ä¸ªå‚数必须是\n" " 字符 `]',以匹é…èµ·å§‹çš„ `['。" -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -4234,8 +4331,9 @@ msgstr "" " 退出状æ€\n" " 总是æˆåŠŸã€‚" -#: builtins.c:1350 -#, fuzzy +# EXIT and DEBUG should be as-is. Use before you translate, please. +# The -signal is only an example; Read carefully. +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -4283,29 +4381,30 @@ msgstr "" " 定义一个处ç†å™¨ï¼Œåœ¨ shell 接收到信å·å’Œå…¶ä»–æ¡ä»¶ä¸‹æ‰§è¡Œã€‚\n" " \n" " ARG 傿•°æ˜¯å½“ shell 接收到 SIGNAL_SPEC ä¿¡å·æ—¶è¯»å–和执行的命令。\n" -" 如果没有指定 ARG 傿•°(并且åªç»™å‡ºä¸€ä¸ª SIGNAL_SPEC ä¿¡å·)或者\n" -" 或者 ARG 傿•°ä¸º `-',æ¯ä¸€ä¸ªæŒ‡å®šçš„傿•°ä¼šè¢«é‡ç½®ä¸ºåŽŸå§‹å€¼ã€‚å¦‚æžœ ARG 傿•°\n" -" 是一个空串,则æ¯ä¸€ä¸ª SIGNAL_SPEC ä¿¡å·ä¼šè¢« shell 和它å¯åŠ¨çš„å‘½ä»¤å¿½ç•¥ã€‚\n" +" 如果没有指定 ARG 傿•° (并且åªç»™å‡ºä¸€ä¸ª SIGNAL_SPEC ä¿¡å·) 或者\n" +" ARG 傿•°ä¸º\n" +" `-',æ¯ä¸€ä¸ªæŒ‡å®šçš„傿•°ä¼šè¢«é‡ç½®ä¸ºåŽŸå§‹å€¼ã€‚å¦‚æžœ ARG 傿•°æ˜¯ä¸€ä¸ªç©ºä¸²ï¼Œåˆ™æ¯ä¸€" +"个\n" +" SIGNAL_SPEC ä¿¡å·ä¼šè¢« shell 和它å¯åŠ¨çš„å‘½ä»¤å¿½ç•¥ã€‚\n" " \n" -" 如果一个 SIGNAL_SPEC ä¿¡å·æ˜¯â€œé€€å‡ºâ€ (0) ,则 ARG 命令会在 shell 退出时被\n" -" 执行。如果一个 SIGNAL_SPEC ä¿¡å·æ˜¯â€œè°ƒè¯•“,则 ARG命令会在æ¯ä¸€ä¸ªç®€å•命\n" +" 如果一个 SIGNAL_SPEC ä¿¡å·æ˜¯ EXIT (0) ,则 ARG 命令会在 shell 退出时被\n" +" 执行。如果一个 SIGNAL_SPEC ä¿¡å·æ˜¯ DEBUG,则 ARG命令会在æ¯ä¸€ä¸ªç®€å•命\n" " 令之剿‰§è¡Œã€‚\n" " \n" -" å¦‚æžœä¸æä¾›å‚æ•°ï¼Œtrap 打å°åˆ—表显示æ¯ä¸€ä¸ªä¸Žæ¯ä¸€ä¸ªä¿¡å·ç›¸å…³è”çš„\n" -" 命令。\n" +" å¦‚æžœä¸æä¾›å‚æ•°ï¼Œtrap 打å°åˆ—表显示æ¯ä¸€ä¸ªä¸Žæ¯ä¸€ä¸ªä¿¡å·ç›¸å…³è”的命令。\n" " \n" " 选项:\n" " -l\t打å°ä¸€ä¸ªä¿¡å·å称和它们对应的编å·çš„列表\n" " -p\t打å°ä¸Žæ¯ä¸ª SIGNAL_SPEC ä¿¡å·ç›¸å…³è”的陷阱命令\n" " \n" -" æ¯ä¸€ä¸ª SIGNAL_SPEC ä¿¡å·å¯ä»¥æ˜¯ 中的信å·å称或者\n" -" ä¿¡å·ç¼–å·ã€‚ä¿¡å·å称大å°å†™æ•感且å¯ä»¥ä½¿ç”¨ SIG å‰ç¼€ã€‚ä¿¡å·å¯ä»¥ç”¨\n" -" \"kill -signal $$\" å‘é€ç»™ shell。\n" +" æ¯ä¸€ä¸ª SIGNAL_SPEC ä¿¡å·å¯ä»¥æ˜¯ 中的信å·å称或者信å·ç¼–å·ã€‚\n" +" ä¿¡å·å称大å°å†™æ•感且å¯ä»¥ä½¿ç”¨ SIG å‰ç¼€ã€‚ä¿¡å·å¯ç”¨ \"kill -ä¿¡å· $$\"\n" +" å‘é€ç»™ shell。\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 SIGSPEC。" -#: builtins.c:1386 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4314,18 +4413,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -4340,14 +4439,14 @@ msgstr "" " \n" " 选项:\n" " -a\t显示所有包å«å称为 NAME çš„å¯æ‰§è¡Œæ–‡ä»¶çš„ä½ç½®ï¼›\n" -" \t包括别åã€å†…建和函数。仅当 `-p' 选项没有使用时\n" +" \t\t包括别åã€å†…建和函数。仅当 `-p' 选项没有使用时\n" " -f\t抑制 shell 函数查询\n" " -P\t为æ¯ä¸ª NAME å称惊醒 PATH 路径æœç´¢ï¼Œå³ä½¿å®ƒæ˜¯åˆ«åã€\n" -" \t内建或函数,并且返回将被执行的ç£ç›˜ä¸Šæ–‡ä»¶çš„å称。\n" +" \t\t内建或函数,并且返回将被执行的ç£ç›˜ä¸Šæ–‡ä»¶çš„å称。\n" " -p\t返回将被执行的ç£ç›˜ä¸Šæ–‡ä»¶çš„å称,或者当 `type -t NAME'\n" " \tä¸è¿”回 `file' 时,ä¸è¿”回任何值。\n" -" -t\t返回下列è¯ä¸­çš„任何一个`alias'ã€`keyword'ã€\n" -" \t`function'ã€`builtin'ã€`file'或者`',如果 NAME 是相应的\n" +" -t\t返回下列è¯ä¸­çš„任何一个 `alias'ã€`keyword'ã€\n" +" \t`function'ã€`builtin'ã€`file' 或者 `',相应地如果 NAME 是\n" " \t一个别åã€shell ä¿ç•™å­—ã€shell 函数ã€shell 内建ã€\n" " \tç£ç›˜æ–‡ä»¶æˆ–没有找到。\n" " \n" @@ -4355,10 +4454,9 @@ msgstr "" " NAME\tå°†è¦è§£æžçš„命令。\n" " \n" " 退出状æ€ï¼š\n" -" 如果所有的 NAME 命令都找到则返回æˆåŠŸï¼›ä»»ä½•æ‰¾ä¸åˆ°åˆ™å¤±è´¥ã€‚" +" 如果所有的 NAME 命令都找到则返回æˆåŠŸï¼›ä»»ä½•ä¸€ä¸ªæ‰¾ä¸åˆ°åˆ™å¤±è´¥ã€‚" -#: builtins.c:1417 -#, fuzzy +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" @@ -4376,6 +4474,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -4387,7 +4486,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -4410,15 +4510,16 @@ msgstr "" " 资æºçš„æŽ§åˆ¶ã€‚\n" " \n" " 选项:\n" -" -S\t使用 `soft'(软)资æºé™åˆ¶\n" -" -H\t使用 `hard'(硬)资æºé™åˆ¶\n" +" -S\t使用软 (`soft') 资æºé™åˆ¶\n" +" -H\t使用硬 (`hard') 资æºé™åˆ¶\n" " -a\t所有当å‰é™åˆ¶éƒ½è¢«æŠ¥å‘Š\n" " -b\t套接字缓存尺寸\n" " -c\t创建的核文件的最大尺寸\n" " -d\t一个进程的数æ®åŒºçš„æœ€å¤§å°ºå¯¸\n" -" -e\t最高的调度优先级(`nice')\n" +" -e\t最高的调度优先级 (`nice')\n" " -f\t有 shell åŠå…¶å­è¿›ç¨‹å¯ä»¥å†™çš„æœ€å¤§æ–‡ä»¶å°ºå¯¸\n" " -i\t最多的å¯ä»¥æŒ‚èµ·çš„ä¿¡å·æ•°\n" +" -k\t分é…给此进程的最大 kqueue æ•°é‡\n" " -l\t一个进程å¯ä»¥é”定的最大内存尺寸\n" " -m\t最大的内存进驻尺寸\n" " -n\t最多的打开的文件æè¿°ç¬¦ä¸ªæ•°\n" @@ -4429,19 +4530,23 @@ msgstr "" " -t\t最大的CPU时间,以秒为å•ä½\n" " -u\t最大用户进程数\n" " -v\t虚拟内存尺寸\n" -" -x\tæœ€å¤§çš„é”æ•°é‡\n" +" -x\tæœ€å¤§çš„æ–‡ä»¶é”æ•°é‡\n" +" -P\t最大伪终端数é‡\n" +" -T\t最大线程数é‡\n" +" \n" +" å¹¶éžæ‰€æœ‰é€‰é¡¹åœ¨æ‰€æœ‰ç³»ç»Ÿä¸Šå¯ç”¨ã€‚\n" " \n" " 如果æä¾›äº† LIMIT å˜é‡ï¼Œåˆ™å®ƒä¸ºæŒ‡å®šèµ„æºçš„æ–°çš„值;特别的 LIMIT 值为\n" " `soft'ã€`hard'å’Œ`unlimited',分别表示当å‰çš„软é™åˆ¶ï¼Œç¡¬é™åˆ¶å’Œæ— é™åˆ¶ã€‚\n" " å¦åˆ™æ‰“å°æŒ‡å®šèµ„æºçš„当å‰é™åˆ¶å€¼ï¼Œä¸å¸¦é€‰é¡¹åˆ™å‡å®šä¸º -f\n" " \n" -" å–值都是1024字节为å•ä½ï¼Œé™¤äº† -t 以秒为å•ä½ï¼Œ-p 以512字节为å•ä½ï¼Œ\n" -" -u 以无范围的进程数é‡ã€‚\n" +" å–值都是 1024 字节为å•ä½ï¼Œé™¤äº† -t 以秒为å•ä½ï¼Œ-p 以 512 字节递增,\n" +" -u 为无范围的进程数é‡ã€‚\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者错误å‘生。" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4463,18 +4568,17 @@ msgstr "" " 设定用户文件创建掩ç ä¸º MODE 模å¼ã€‚如果çœç•¥äº† MODE,则\n" " 打å°å½“剿ީç çš„值。\n" " \n" -" 如果MODE 模å¼ä»¥æ•°å­—开头,则被当作八进制数解æžï¼›å¦åˆ™æ˜¯ä¸€ä¸ª\n" +" 如果 MODE 模å¼ä»¥æ•°å­—开头,则被当作八进制数解æžï¼›å¦åˆ™æ˜¯ä¸€ä¸ª\n" " chmod(1) å¯æŽ¥æ”¶çš„ç¬¦å·æ¨¡å¼ä¸²ã€‚\n" " \n" " 选项:\n" -" -p\t如果çœç•¥ MDOE 模å¼ï¼Œä»¥å¯é‡ç”¨ä¸ºè¾“入的格å¼è¾“å…¥\n" +" -p\t如果çœç•¥ MODE 模å¼ï¼Œä»¥å¯é‡ç”¨ä¸ºè¾“入的格å¼è¾“å…¥\n" " -S\t以符å·å½¢å¼è¾“出,å¦åˆ™ä»¥å…«è¿›åˆ¶æ•°æ ¼å¼è¾“出\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„ MODE æ¨¡å¼æˆ–者选项。" -#: builtins.c:1485 -#, fuzzy +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4500,11 +4604,12 @@ msgstr "" " 进程,并且返回状æ€ä¸ºé›¶ã€‚如果 ID 是任务声明,等待任务管é“中的\n" " 所有进程。\n" " \n" +" 若给定了 -n 选项,等待下一个任务完æˆå¹¶è¿”回其状æ€ã€‚\n" +" \n" " 退出状æ€ï¼š\n" -" 返回 ID 进程的状æ€ï¼›å¦‚果使用了无效的 ID 或者选项则失败。" +" 返回最åŽä¸€ä¸ª ID 进程的状æ€ï¼›å¦‚果使用了无效的 ID 或者选项则失败。" -#: builtins.c:1506 -#, fuzzy +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4520,15 +4625,13 @@ msgid "" msgstr "" "等待进程完æˆå¹¶ä¸”返回退出状æ€ã€‚\n" " \n" -" 等待指定进程并报告它的终止状æ€ã€‚如果\n" -" 没有æä¾›PIDï¼Œåˆ™å½“å‰æ‰€æœ‰çš„æ´»è·ƒå­è¿›ç¨‹éƒ½ä¼šè¢«ç­‰å¾…,\n" -" 并且返回ç ä¸ºé›¶ã€‚PID必须为进程å·ã€‚\n" +" 等待指定进程并报告它的终止状æ€ã€‚如果没有æä¾› PIDï¼Œåˆ™å½“å‰æ‰€æœ‰çš„æ´»è·ƒ\n" +" å­è¿›ç¨‹éƒ½ä¼šè¢«ç­‰å¾…,并且返回ç ä¸ºé›¶ã€‚PID 必须为进程å·ã€‚\n" " \n" " 退出状æ€ï¼š\n" -" 返回进程ID的状æ€ï¼›å¦‚æžœIDæ˜¯æ— æ•ˆçš„è¿›ç¨‹å·æˆ–者指定了无效\n" -" 的选项则失败。" +" 返回进程 ID 的状æ€ï¼›å¦‚æžœ PID æ˜¯æ— æ•ˆçš„è¿›ç¨‹å·æˆ–者指定了无效的选项则失败。" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4549,7 +4652,7 @@ msgstr "" " 退出状æ€ï¼š\n" " è¿”å›žæœ€åŽæ‰§è¡Œçš„命令的状æ€ã€‚" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4579,7 +4682,7 @@ msgstr "" " 退出状æ€ï¼š\n" " è¿”å›žæœ€åŽæ‰§è¡Œçš„命令的状æ€ã€‚" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4612,7 +4715,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4640,7 +4743,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回状æ€å³PIPELINE 的返回状æ€ã€‚" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4658,7 +4761,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4689,7 +4792,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4707,7 +4810,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4725,7 +4828,8 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4735,7 +4839,7 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" "创建一个以 NAME 为å的副进程。\n" " \n" @@ -4747,7 +4851,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回 COMMAND 命令的退出状æ€ã€‚" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -4770,7 +4874,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸé™¤éž NAME 为åªè¯»ã€‚" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4788,7 +4892,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚" -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4812,7 +4916,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回被继续的任务的状æ€ã€‚" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4830,7 +4934,7 @@ msgstr "" " 退出状æ€\n" " 如果表达å¼ä¼°å€¼ä¸º0则返回 1ï¼›å¦åˆ™è¿”回0。" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -4878,7 +4982,7 @@ msgstr "" " 退出状æ€ï¼š\n" " æ ¹æ® EXPRESSION 的值为0或1。" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4973,7 +5077,7 @@ msgstr "" " HISTIGNORE\tç”¨äºŽå†³å®šå“ªäº›å‘½ä»¤è¢«å­˜å…¥åŽ†å²æ–‡ä»¶çš„æ¨¡å¼\n" " \t\t列表,以冒å·åˆ†éš”。\n" -#: builtins.c:1794 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -4983,19 +5087,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5013,10 +5117,10 @@ msgstr "" " \t进行æ“作。\n" " \n" " 傿•°ï¼š\n" -" +N\t旋转栈从而第 N 个目录(`dirs' 显示的列表中左起,从零开始)\n" +" +N\t旋转栈从而第 N 个目录 (`dirs' 显示的列表中左起,从零开始)\n" " \t将移动到栈顶。\n" " \n" -" -N\t旋转栈从而第 N 个目录(`dirs' 显示的列表中å³èµ·ï¼Œä»Žé›¶å¼€å§‹)\n" +" -N\t旋转栈从而第 N 个目录 (`dirs' 显示的列表中å³èµ·ï¼Œä»Žé›¶å¼€å§‹)\n" " \t将移动到栈顶。\n" " \n" " dir\tå°† DIR 目录添加到栈顶,并且使其æˆä¸ºå½“å‰å·¥ä½œç›®å½•。\n" @@ -5026,7 +5130,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„傿•°æˆ–者目录转æ¢å¤±è´¥ã€‚" -#: builtins.c:1828 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5035,16 +5139,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -5062,18 +5166,18 @@ msgstr "" " \t进行æ“作。\n" " \n" " 傿•°ï¼š\n" -" +N\t删除第 N 个目录(`dirs' 显示的目录列表中左起,从零开始)。\n" -" \t例如: `popd +0' 删除第一个目录,popd +1' 删除第二个。\n" +" +N\t删除第 N 个目录 (`dirs' 显示的目录列表中左起,从零开始)。\n" +" \t例如: `popd +0' 删除第一个目录,`popd +1' 删除第二个。\n" " \n" -" -N\t删除第 N 个目录(`dirs' 显示的目录列表中å³èµ·ï¼Œä»Žé›¶å¼€å§‹)。\n" -" \t例如: `popd -0'删除最åŽä¸€ä¸ªç›®å½•,,`popd -1' 删除倒数第二个。\n" +" -N\t删除第 N 个目录 (`dirs' 显示的目录列表中å³èµ·ï¼Œä»Žé›¶å¼€å§‹)。\n" +" \t例如: `popd -0' 删除最åŽä¸€ä¸ªç›®å½•,,`popd -1' 删除倒数第二个。\n" " \n" " `dirs' 内建显示目录栈。\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„傿•°æˆ–è€…ç›®å½•å˜æ¢å¤±è´¥ã€‚" -#: builtins.c:1858 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5084,19 +5188,19 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." @@ -5104,7 +5208,7 @@ msgstr "" "显示目录栈。\n" " \n" " 显示当å‰è®°ä½çš„目录列表。通过 `pushd' 命令å¯ä»¥å°†ç›®å½•存入列表\n" -" 中;`popd' 命令å¯ç”¨äºŽé历列表。\n" +" 中;`popd' 命令å¯ç”¨äºŽé历弹出列表。\n" " \n" " 选项:\n" " -c\t删除所有元素以清空目录栈\n" @@ -5122,7 +5226,7 @@ msgstr "" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者å‘生错误。" -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -5159,8 +5263,7 @@ msgstr "" " 如果 OPTNAME 选项被å¯ç”¨åˆ™è¿”回æˆåŠŸï¼›å¦‚æžœæ˜¯\n" " 无效的选项或OPTNAME 被ç¦ç”¨åˆ™å¤±è´¥ã€‚" -#: builtins.c:1908 -#, fuzzy +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5177,15 +5280,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -5198,24 +5301,25 @@ msgid "" "assignment\n" " error occurs." msgstr "" -"在 FORMAT å˜é‡çš„æŽ§åˆ¶ä¸‹æ ¼å¼åŒ–å¹¶æ‰“å° ARGUMENTS 傿•°ã€‚\n" +"在 FORMAT 的控制下格å¼åŒ–å¹¶æ‰“å° ARGUMENTS 傿•°ã€‚\n" " \n" " 选项:\n" " -v var\t将输出赋值给 shell å˜é‡ VAR è€Œä¸æ˜¾ç¤ºåœ¨æ ‡å‡†è¾“出上\n" " \n" -" FORMAT å˜é‡æ˜¯åŒ…å«ä¸‰ç§å¯¹è±¡çš„字符串:简å•地被拷è´åˆ°æ ‡å‡†è¾“出的普通字符;\n" -" è¢«å˜æ¢ä¹‹åŽæ‹·è´åˆ°æ ‡å‡†è¾“å…¥çš„è½¬ä¹‰å­—ç¬¦ï¼›ä»¥åŠæ¯ä¸ªéƒ½ä¼šå½±å“åˆ°ä¸‹ä¸ªå‚æ•°çš„æ‰“å°" -"çš„ æ ¼å¼åŒ–声明。\n" +" FORMAT 是包å«ä¸‰ç§å¯¹è±¡çš„字符串:简å•地被拷è´åˆ°æ ‡å‡†è¾“出的普通字符;\n" +" è¢«å˜æ¢ä¹‹åŽæ‹·è´åˆ°æ ‡å‡†è¾“å…¥çš„è½¬ä¹‰å­—ç¬¦ï¼›ä»¥åŠæ¯ä¸ªéƒ½ä¼šå½±å“åˆ°ä¸‹ä¸ªå‚æ•°çš„æ‰“å°çš„æ ¼" +"å¼åŒ–声明。\n" +" \n" +" 在 printf(1) 中æè¿°çš„æ ‡å‡†æŽ§åˆ¶å£°æ˜Žä¹‹å¤–,printf è§£æžï¼š\n" " \n" -" 在 printf(1)ã€printf(3) 中æè¿°çš„æ ‡å‡†æŽ§åˆ¶å£°æ˜Žä¹‹å¤–,printfè§£æžï¼š\n" -"〠\n" " %b\tæ‰©å±•å¯¹åº”å‚æ•°ä¸­çš„åæ–œæ è½¬ä¹‰åºåˆ—\n" " %q\t以å¯ä½œä¸º shell 输入的格å¼å¼•ç”¨å‚æ•°\n" +" %(fmt)T\t以 FMT 为供给 strftime(3) 的格å¼è¾“出日期时间字符串\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者写或赋值错误å‘生。" -#: builtins.c:1942 +#: builtins.c:1953 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5228,11 +5332,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -5244,22 +5348,22 @@ msgstr "" "声明 readline 如何完æˆè¯»å–傿•°ã€‚\n" " \n" " 声明对于æ¯ä¸€ä¸ª NAME å称如何完æˆè¯»å–傿•°ã€‚如果ä¸å¸¦é€‰é¡¹ï¼Œ\n" -" 现有的补完声明会以å¯ä»¥é‡ç”¨ä¸ºè¾“å…¥çš„æ ¼å¼æ‰“å°å‡ºæ¥ã€‚\n" +" 现有的补全声明会以å¯ä»¥é‡ç”¨ä¸ºè¾“å…¥çš„æ ¼å¼æ‰“å°å‡ºæ¥ã€‚\n" " \n" " 选项:\n" -" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°çŽ°æœ‰çš„è¡¥å®Œå£°æ˜Žã€‚\n" -" -r\tr对于æ¯ä¸ª NAME å称删除补完声明,或者如果没有æä¾› NAME\n" -" \tå称,删除所有的补完声明。\n" -" -D\t对于没有补完声明定义的命令,设定默认的补完动作\n" -" -E\t对于 \"empty\" 命令设定补完动作,—— 对于空行的补完。\n" +" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°çŽ°æœ‰çš„è¡¥å…¨å£°æ˜Žã€‚\n" +" -r\t对于æ¯ä¸ª NAME å称删除补全声明,或者如果没有æä¾› NAME\n" +" \tå称,删除所有的补全声明。\n" +" -D\t对于没有补全声明定义的命令,设定默认的补全动作\n" +" -E\t对于 \"empty\" 命令设定补全动作,—— 对于空行的补全。\n" " \n" -" å°è¯•补完时,按照上述大写字æ¯é€‰é¡¹çš„顺åºè¿›è¡ŒåŠ¨ä½œã€‚-D 选项优先\n" +" å°è¯•补全时,按照上述大写字æ¯é€‰é¡¹çš„顺åºè¿›è¡ŒåŠ¨ä½œã€‚-D 选项优先\n" " 级高于 -E 选项。\n" " \n" " 退出状æ€ï¼š\n" " 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者错误å‘生。" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5271,17 +5375,16 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"便®é€‰é¡¹æ˜¾ç¤ºå¯èƒ½çš„补完。\n" +"便®é€‰é¡¹æ˜¾ç¤ºå¯èƒ½çš„补全。\n" " \n" -" æ„图在能产生å¯èƒ½çš„补完的 shell 函数内部使用。\n" +" æ„图在能产生å¯èƒ½çš„补全的 shell 函数内部使用。\n" " 如果æä¾›äº†å¯é€‰çš„ WORD 傿•°ï¼Œåˆ™äº§ç”ŸæŒ‰ç…§ WORD\n" " 进行的匹é…。\n" " \n" " 退出状æ€ï¼š\n" " 除éžä½¿ç”¨äº†æ— æ•ˆé€‰é¡¹æˆ–者错误å‘生,å¦åˆ™è¿”回æˆåŠŸã€‚" -#: builtins.c:1985 -#, fuzzy +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -5311,30 +5414,29 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" -"修改或显示补完选项。\n" +"修改或显示补全选项。\n" " \n" -" 修改æ¯ä¸ª NAME å称的补完选项,或者如果没有æä¾› NAME å称,\n" -" 执行当å‰çš„补完。如果ä¸å¸¦é€‰é¡¹ï¼Œæ‰“å°æ¯ä¸ª NAME å称的补完选项或\n" -" 当å‰çš„补完声明。\n" +" 修改æ¯ä¸ª NAME å称的补全选项,或如果没有æä¾› NAME å称,执行当å‰çš„è¡¥" +"全。\n" +" 如果ä¸å¸¦é€‰é¡¹ï¼Œæ‰“å°æ¯ä¸ª NAME å称的补全选项或当å‰çš„补全声明。\n" " \n" " 选项:\n" -" \t-o option\t为æ¯ä¸ª NAME å称设定补完选项 option\n" -" \t-D\t\t为 \"default\" 命令补完改å˜é€‰é¡¹\n" -" \t-E\t\t为 \"empty\" 命令补完改å˜é€‰é¡¹\n" +" \t-o option\t为æ¯ä¸ª NAME å称设定补全选项 option\n" +" \t-D\t\t为 \"default\" 命令补全改å˜é€‰é¡¹\n" +" \t-E\t\t为 \"empty\" 命令补全改å˜é€‰é¡¹\n" " \n" " 使用 `+o' è€Œä¸æ˜¯ `-o' å¯ä»¥å…³é—­æŒ‡å®šçš„选项。\n" " \n" " 傿•°ï¼š\n" " \n" -" æ¯ä¸ª NAME å称都对应一个之å‰ä»¥é€šè¿‡ `complete' 内建定义了补完声明的\n" -" å‘½ä»¤ã€‚å¦‚æžœä¸æä¾› NAME å称,当å‰ç”Ÿæˆè¡¥å®Œçš„函数必须调用 compopt,\n" -" 并䏔当剿‰§è¡Œçš„补完生æˆå™¨é€‰é¡¹ä¼šè¢«ä¿®æ”¹ã€‚\n" +" æ¯ä¸ª NAME å称都对应一个之å‰ä»¥é€šè¿‡ `complete' 内建定义了的补全声明的\n" +" å‘½ä»¤ã€‚å¦‚æžœä¸æä¾› NAME å称,当å‰ç”Ÿæˆè¡¥å…¨çš„函数必须调用 compopt,\n" +" 并䏔当剿‰§è¡Œçš„补全生æˆå™¨é€‰é¡¹ä¼šè¢«ä¿®æ”¹ã€‚\n" " \n" " 退出状æ€ï¼š\n" -" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称没有定义补完声明。" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称没有定义补全声明。" -#: builtins.c:2015 -#, fuzzy +#: builtins.c:2026 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5345,20 +5447,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -5374,32 +5477,33 @@ msgid "" "or\n" " not an indexed array." msgstr "" -"从标准输入读å–行到下表数组å˜é‡ä¸­ã€‚\n" +"从标准输入读å–行到下标数组å˜é‡ä¸­ã€‚\n" " \n" -" 从标准输入读å–行到下表数组å˜é‡ ARRAY 中,或者如果使用了 -u 选项,\n" +" 从标准输入读å–行到下标数组å˜é‡ ARRAY 中,或者如果使用了 -u 选项,\n" " 从文件æè¿°ç¬¦ FD 中读å–。MAPFILE å˜é‡æ˜¯é»˜è®¤çš„ ARRAY å˜é‡ã€‚\n" " \n" " 选项:\n" -" -n count\tæœ€å¤šæ‹·è´ COUNT 行,如果 COUNT 为0ï¼Œåˆ™æ‹·è´æ‰€æœ‰è¡Œã€‚\n" -" -O origin\t从下表 ORIGIN 开始 赋值给 ARRAY å˜é‡ã€‚默认下表是0.\n" +" -d delim\t使用 DELIM è€Œéžæ¢è¡Œç¬¦æ–­è¡Œ\n" +" -n count\tæœ€å¤šæ‹·è´ COUNT 行,如果 COUNT 为 0ï¼Œåˆ™æ‹·è´æ‰€æœ‰è¡Œã€‚\n" +" -O origin\t从下标 ORIGIN 开始 赋值给 ARRAY å˜é‡ã€‚默认下标是0.\n" " -s count \t丢弃最先读å–çš„ COUNT 行。\n" " -t\t\t从读å–çš„æ¯è¡Œæœ«å°¾åˆ é™¤ä¸€ä¸ªæ¢è¡Œç¬¦ã€‚\n" " -u fd\t\t从文件æè¿°ç¬¦ FD 中读å–è¡Œè€Œä¸æ˜¯æ ‡å‡†è¾“入。\n" -" -C callback\tæ¯æ¬¡ QUANTUM 行读å–之åŽå¯¹ CALLBACK 回调进行估值。\n" +" -C callback\tæ¯ QUANTUM 次读行之åŽå¯¹ CALLBACK 回调进行估值。\n" " -c quantum\tå®šä¹‰æ¯æ¬¡è°ƒç”¨ CALLBACK 回调之间读å–的行数。\n" " \n" " 傿•°ï¼š\n" " ARRAY\t\t存储数æ®ä½¿ç”¨çš„æ•°ç»„å˜é‡\n" " \n" -" 如果使用了-C而没有-c,默认的é‡å­æ˜¯5000。当对 CALLBACK 估值时,\n" +" 如果使用了 -C 而没有 -c,默认的é‡å­æ˜¯5000。当对 CALLBACK 估值时,\n" " 下一个将被赋值的数组元素的下标作为é¢å¤–傿•°è¢«ä¼ é€’。\n" " \n" -" å¦‚æžœæ²¡æœ‰æ˜¾å¼æŒ‡å®šèµ·å§‹ä¸‹æ ‡ï¼Œmapfileå°†åœ¨èµ‹å€¼å‰æ¸…空 ARRAY å˜é‡ã€‚\n" +" å¦‚æžœæ²¡æœ‰æ˜¾å¼æŒ‡å®šèµ·å§‹ä¸‹æ ‡ï¼Œmapfile å°†åœ¨èµ‹å€¼å‰æ¸…空 ARRAY å˜é‡ã€‚\n" " \n" " 退出状æ€ï¼š\n" -" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者 ARRAY å˜é‡æ˜¯åªè¯»æˆ–è€…ä¸æ˜¯ä¸‹æ ‡æ•°ç»„。" +" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者 ARRAY å˜é‡åªè¯»æˆ–䏿˜¯ä¸‹æ ‡æ•°ç»„。" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5409,6 +5513,24 @@ msgstr "" " \n" " 一个 `mapfile'çš„åŒä¹‰è¯ã€‚" +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "ç‰ˆæƒæ‰€æœ‰ (C) 2014 自由软件基金会." + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "ç‰ˆæƒæ‰€æœ‰ (C) 2013 自由软件基金会." + #~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" #~ msgstr "ç‰ˆæƒæ‰€æœ‰ (C) 2009 自由软件基金会\n" diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index 0c0a4f07a974801b30123fe8c8e02f73c8797e64..6e07b8db68a0842930071bbc7f12948ec293c28e 100644 GIT binary patch literal 93961 zcmcGX2Vh@Ub^o84k=Y>$o4y1)ma*j(!mzVEoayZ4jF!?tp+L(lyO5tO{h`o8DW$aK|M{MC@B6)PpZ2~a^;jHc_(-kcqI4~coO&(a02+s zsYx;(oC&@fJPCXmcn0`(a3y#YcrN%y;HBU(;9l@(@M*9P{2KT=@cZHUF9N=-!PCDD zRQ>M)-v*uzz6LCUDL4SC-reBq!B2y403QI~0)7Fk2P@!o@YU0jWDa-=sCJwO&IWG= zMc;P<{xhh2N08|_a3-ksG=t(-Cn$O@1y2BP2UGCd;PK#Z1Ew>)-qQna0@eP{27DT% zs^n{+`1YciUf;2x=ve^15nKbRJ^i5Sy%JP=?*m2O=fZUbd@a|%1(k06EYDXDs@?@4 zq$M8;*Ov#p1w4}bkAko&`9iq=8&K_i6^&H6?*!ij&I#A6K=p4sD863`icdFzqWdB6 zSnx}r%K14s8GOaNlH|?ciJ;oK0#yAQK$UYI_?Yrr_s6l~(}~mE`3o2KfN> z{B%&|b%3t|KMum$WG5*8Jrl0K1B&ifyxa3n0bj%QDdBn)?4&Djs{s+LL!E(S$K=I*5@YUd-gOZ!CgRm(19VmWHf3MTM z1U!oC4)7J=M?s~(3{=0|52~C$1x3$S!DGN5fbRo;4ZZ`M&V}wbfv*G4236kq;G!2N z$#zhD_}h~l{{htVe+CzhOOpQtRnLM`{CN}jO0HW$rRxDTuFns6DX4zD5z2hy@+{?bf@{IaXC%qJ)W2;>l1xDlowy=NmTjqIWOY&+|vYUvfQV4Sn%a#?*(AMXq15K1qH9-UYsxa&K#;P0H7X%u(Mbi=Hp( zK&SBhSKvKh=h;c}Ey_KnD@itS{qr(1N51xRX(LzyzX|>n+zx)O*Y)BVeJ&?wf|8SR zz{^3&`5oXF!N)=M$Ho1g{zg#g9|lwKE1>xMPoVVNe}Zc7O9q_JM}e>B`t1Q{h5HLZ zrC$Lq16PBufpL4mskGzKElF}R_>=Q!3(t?GG3wXt;5-_5Jt#hZ=OW4ge+a67XIz{l z{|3KK0>z&bw>dw5OyjTOdhjyjgmjy)aC{b2KfY{7lKchOw3CD9Z{Fp6EP>+3M(`B) zd>MEu<^R>y&u#_P{Jd99 z-wDdD{q_d$rwO0(@i`rQBlnjEYzI%|`s1MTJp#_-`lWl4Dd0We`WGe1li=ml|F*qe&c4qk z$uQ|216AIw`&>Ug0?Ho$4JbOk4ZaQ>2Hy_;4x9+SnZYyxJPn)#7D1J>6IAXcd z3BDQpI;i}=0FMPI0JkHoCXepD(C3CT_3#*Jc8>I zC^|QR(wmooqVG;nbbT3AdwvXxKfeN%Z`?hu|Hgx=ZzhQ9O3ngR-ZkJg;2ogqf8V`s z=R3d?xc&@S2Yw4wyZ-@H`~Dq#75LWsJl#7%(ftwdWbmV419$)wy~CjDuiNkR%mm-b z^#=o91WxAqzJT8b)ekSa-?1J{xn2g&1k2z%z+1!hpM%G9{Top7`1S`}4w}KYa@`7w z?yUiD17~yn`SASrp!)Hx4|+ZC0cUdkLGTXna!~cnc*xt)42u8fgRcZ{4cGU9O7}HT z?fnh-a`2BHc7I|LIF0Mop!jtucrHujc-Lfv175der4&87R6}gGYgFpvu_-s-C@|+VLcK8u$ZH^!(9d z&d&x={CYpAelCK_e+{U1|4Dd01ggC+e%znW0@Y9Jz!~7B;Jd-cz!l)n!Fur2C%m2x zP;zkz_*!s3_$KgAz*E8RfX(2WpY-Qt@Mx~Lf}(df_+IdK@J#Ugpz43u0jF~fDEYhy zd;|CyP<%N6ijKbmj|Bf26dzyml=JKLpz5gyj{{Eum9GGv2$sO*;O*e+z<&w&vZv9F zT)z?2xOzMIMz9_f9dkj+O931Yb_VPRr*Qpo@O|Lj;2f|5N)C^G#^q!oD7k6_Ujbee za2Ke0ZUo;3J`ASd-+^xie+8;NuYT6~I00P5^@*U`{W0*Z;7(BOybBax9s||>zXnC$ zKZ0)o-}EP*?nLliT+aj5o=xBa@IvrZ@Gn8h&CCDPU!dqJeU7;Rcmb$!{C#jb_?ka+c{&w5f$L6C^7Ls?a`6~A3;Y47 zetg~MoxamS(cd5NbEPv6ucf(`yU6z*YAR&_cx&W;dOuM_;&DkuBU(}gDXMt=Soogyc?VZelA@9 zKT!QS?ysD#w}X?pJ_CF^H~>xnuLUI+Pk^H9E1>xM-GDy_Mc=qDIDHd9$=7M1>ir0) zdIrFW;MJh?!Q-Ix#zF8s;L(5WdSEFi{$C7=zmI|M1cyQK@2D?2&IKj^CGZ{KUEs^X zFN31@o8TXTKLd{iU->1M|7qa6xjr3KJ3ahke-0}BtN+IPrxAP& z*ULfCzb@cTQ1u)D_5Ayw`2CLokN&dr52Pk_=_&w|p|-vU$cr=aBIm4EB}uLs9-eJZGQ?*~=hM?mH81Em+P0M&1| zgX*u(fojJOLDBaM@MYjpf9Lt%0!qGSfGKzeDEaFGCxh33v%sf8_4_}88t=z^&C{O= zs-8`to?jd8KMB5`>+gb+^Iw3H$GWfkc&Z1da9sfF!JVM;KMGC*zZdWo-*7r-2V4#+ zUmK`?y%Ln%+#jBQ9TeY&1HSZ|PUo@UQQV&gsy|kP;@f%PG2qpp`u$E&^nMXk`U)s{ z`uA`>@msD}XM<|r8KC&J4pjO}L6v`FxPAtF1J_>zUkm;eRQdk_itopK+wac=b$=eH zc6~TppAV|M-JsGx0jl1wgRcXJK$ZXR;rhtG_x4TzmA(;Fxh?$@t`~zw7bv=SgQDkt@KxYn zhWp)%`A`Or=K7=HjpV-u zMD-`r{}Xw5DRW(L57%!ZXz)AmQSe9LgD)9p^U!NvIxd+{xtm@#E`fyPz!Bq;b<}%j z-8iGK?iJ&bM=1C6uN;@`;{JKB9cT5AKXP313DO@0ehd5zxC8v-*N-zk9C6e*tw4*&;bHH-I%R!~T0~CKB1CInh4~oCv0>$qihv&Zp#oyn9 z;?v8H8JDaFUkjc~JNm#sq8*htjZ3D0FMZ3nq@U+A-|BSi1uw^7JqfCu#tGw+v%n>w z%G(P*0l)4C`^kUyq;UydlKilqd|ZEX@;LL)3KYJK`*(q7asRjA*TJTSaTZ^wpYG+A zLA7fO_%7(X6kJUC2WE{+21)1FR7 zXY%mIfYU&Ymjxh6l9k|8t}lO|=YI^;IQvuZP2k^y$AG^A&j82I9+z~H?@X|f>pz<_ zF8P<2AcH53v-rV(o#r@q?l>Da7lYCt*MMr*?ExPEMc*^v8t|*2#{X0X)pT$PsORSg z`~+AJA8rA+Q2!Sect6iyI4=1I(lvpSgA-5p_AUa|&X0hShb~ZZcRu)5@On`8=wVRy z={w>2#f$v;WKiv22#T&2P<+@Lo?j12FFg!S28Y47fv;ce_09y9|5Q-*odv!Z+z8G9 z_k*&RKLXze{vMQkz3=_br_;bUa=kQQJE(E}@qpKXYVX~k+V>1N6Z|sxZZJ8+%Y6^1 zeCL9y8J_XKz%_&reN9{B;sS)iV;1WyJB!27|6!t=J3PS?et^!0t9 z>iKI>`Mw3J|Nb46J$+M?_upJl{9Oc!ubV;1*FB*4_>F)=pycUyAZj@|vf26iMo{;s zf$IN8Q29OrYMh=6svS3h;@dOfdI;2bIbzkgIWy1ncFzY@|2ps#uoqN6JOIuHe*}u&x2$&gm<6i*R#1M`RiNbJDNz0J z&*6H~2gfBT*B=HYA0GwPzS}_2^%YR<{~@ z;PK!YAM*C~g5uk?pyc;qQ1$#ZD0;sGs-KTo99{|;! zD?sU$2SLgEmq3+29Pl@wT{e_~+nJV8{A#Ndf#QI1BtCDE)e5tMhR__#Up$1=XK- zf|9e(flB|2@cg(o*E1giRnHDk{jwXB{N4(_AN(dLc|5l0xnBlV|L+1$ zZTI|ZLG|C&pvr#&6rcVKls@??n1a6oB}YeX@cUChrCSzo4JiI}fYMu6g6iKdgW}V3 zp!ocv4)3Q~p!#!JxIPCI9os;qzb{;W2^7D71-=%1S*PP0K-FIlD&L8qq>wP!n>%fa_@y))onfa25d1I{?d+f@L?$IAjf3M$`EK#lLWcDbHC z9TdIGK+#hGHLflKmF_d3?8cWt@iXam`~L<|<7pNs`RxLg|0+;=?IBS8^J7qY{GY)$gnK(UpBK)jg3oZh zjzfPR=6DVF=GqnWu#oOY;A-xDnL|2aEk~JS*;) z9*)~|!rvD-F5_Ujko>9g@OLf8-*SFA_<4?3aQu|(UNHWBg6r)ZzX~^`=az-@H*$Xi zhit%kp#Hwj@m0=0%kdb;-*GM957#5v!*M(3FN4D8P+$+0gyzZ=x}e>cZ_xc?N#OF141 z&mRW=gkwdx7PN7orjn~c$WD&u9CeW}WbN->{(X#NKG%hC?-N|#5Y9gp@HFuK;r!Wv z|3JFG;rvAuEPbQDuW46@O)9gS>Ve^ z^B0!VV{GBn;Qxh-Bfte5b4mX>j(_H8;rgFITn77lHUBpFsr`F8|E}QKN5L0^KLT&y zxG$vt7qFA-FNW(oIR8G!ja>g4dlr{*9xDLw_FvzX9F~ z{uTHS;r^4H{{`p2;3#mezi)BA6a1}R;U94QY0h!OtTV3wo5Hgm@Byyn2dw9KwbJl+ zBgc0*hIA4B&IjMc^XtO(=Q-aU&QAv4z|qIO3Rn+*oFo1%k88 z2KeT1elIxex0COJo47tEJk#w{!?TUtJBjlzglGR6?jHeNcX00nt_L`t=6nu#9>>=> z|1H&5$1R*c$nh)ANB(_}8w)wQ!h<8hb2$E(v=@hakAi>A_1ks*^8U{5Vq01s=ubBl zI{Q0I8`Ac2Z`xVv8R(y#76$su4PE68JRYCaHB9VFdDc))%RT*_<&ti7cJ=lxu)D2k zYq`6-P@*u>EKmD7NVU#W*45Q_mNu4K3(A(3OI=$gk567TzPr%XRc@V~PVAdKv5ngL z`ii}lVtu*4wWHYfs_{vh)^Fm`#JiqF%1$a>;&-#JR zE;w9G=(o=)ZrN1sZOd+Vbr$-lvcH_ROzfK!Z&NcIN$cT6yrm|uFAu3|h<@U65g~z_|B$B`W-a>0J z9nm*g!QBIW{pmnoG3^^z?;V$J>M#P-|B_)Oq1@U@p|@9pU~M!xi_#+DEA$uB ziCqKf`YruMb-WQI`8Z@Ex*(=cO@1i?aa7hq_xjEa1Lc9f^z8Ebw6CYwI^uS3v8}VW z*xK*6dp8Vp7fbzpskH}b>*+1G7W-_Fser``oFehQRP0Ac&Picthn3vf-s!{1%2Ephpt;k?oadW=3)^cehTBD}N$z$mlFV)Tu z#m4k8fhZVLSYrC#A{{KT$k*Cd>|z*uldL_A?v8{l)Gc8+Ide>glL^Fn&{SCoL#$ zrZdfUjA#SQGwq#k*FdSS=p!Jo*lx^Dl~$%9qq(!Ub)c)zo0baQMV_`7dyA#kz@lJk zqypQe0<8j9ZYZeU&f-Rq(>l;gp8nKFUAcFQnxI2Ua<&FUFXK%%$+G%g(>mzJ{&G2` zdQ+gYT^H3>*WTHS2unIQb-;zb9_g&sjsm(16)E+q^ex9tvdW~u(|!$x6ejm?@yf7M z49zVfrBE_T+6(Z|+tX2&o-3VGDsS=;-PzSu+)(HWb}VgZNGG;>Ii01h&h=?7uaxx$ zsK~c5KmMc6g;up+JT@}3`$0R6xT&#P?(N*r83+o7b<_}&Evm`dimqH=Xgw!Acc4(} zALy=mI6~2nq2MA}Ce{ovSDiJ5m_N{pFt~8V9MR^}-?g_!w;A_iV`q@CnAUBy7cxc; z><#@PRbQ)+V|KY$GN^}65!Hl?xs2Z!@{TMOs#0vtmW7yzg6q<_*&-by_HO9SMuQT_ zUqKeT(J)c*8=GX|td#D;=FaYc?#ySw(D+F1DsC*w&1o$b+sy9>Hmu?Jl$863?co~sq;Z1ifE*HOmM zwRY%!xJLJ9`){<|0J4&WF}G7)Nxxw2&5>08p4>60YGaSkC- za*JzjO|L{Qr^-%BXIOy)hw*R*O70xjv~ZxWumQVmnd5`B8>J?esgdTKAn@jkCiV6C zS|?9VYUUtm!sLXUn`BaO%cq%@u;IHVc4Xh$WO`e1)M?YEC3D-_YBY)*vHp%C(4%>SPOH`Q^`ls(YFgJ@?njUGjZgVgn((B%aE|&% zcS^-g`9ds#J%}XAizTrYkySA*O;^);7?KTuzNu0^9h$(P!UAddz!_bgMdmsp#Qs@s zGrPXoc9EtHrMe~%zfpeWQ~`V zXVTl*gRY?ya}>>u?tP?b%CfqZ&c9rC3heJF;0V*gWpE%?y+yNKOj$-#dvCehQgs#E zZEmL==0h{l-h}dJ2$8vO(p2?|b+k#8F{JLiVsCk}Xbn}-&pA@z*Z&S}I0ha6`^3?# zIuqChi&w_}sPf50tlF-r^oNOKr*YNWFR>gUfmK%LIMEDKosDs}PO`q9uEG`D*-tnml2hr#T_ZiDO-~M=EcsN}V+o zh2EyK6Bu)vC1=D{^=uylb8)-H7OFQ9BP*)R1Ot(un!@Py#g4*8MhosnXS;3`r9Y)B z)L}Do9B$mq(v$^EE-x(c|z(IAAWPTRC(-il_A4@@UY(38y5 z)OSlCGZ*IUU0un%@&<}fAfUiSuSGg~I(v%AJZ_ttpUhve%I84Id^n0mWs27!{e~~z zlgwvsA#cQDHkpkugJdi-6OwDuytz$_)}7h7vT5=1Wp!s3d(DgQEYZc?9`CY%h5}Oa zm;!jl`3qLeZC+G2m*(L{H3T;bBVZ#sr=5Zd>MIs{TRTGMs=O$OdcJ`uhecm9nImn~n}c$f+aEZ{-V4;~9+PD&&Yar1UZiL6shYy-L!QqeeyMwq!n zI(+)#H7;7*)T~fYoyL~a&{?X|a+v(F=2#Ajq>%OwloUn^{B}uD!G%`EXF|ElmpV zL4qai9_VJy*jDWIGQ8s(moKcF?_RWzv@q=p-4Z4_CEU~2B5_bLmgbTxu%J4t)r5jh z?JJ{+EK2Mu0&jDw9w^dLbmu8#r6@)`#OXn`-zd8}SJp!qFBT(UeZ^uaWQKk8MtKuf zR|MI_*}9x`38=N8J`FY`5V> z5k-ZqAyi>+=iAb`^A{QK=OU5je&z;-YK`3$bkE2xCP4X0BEs3iD@XTEqn zDqZ0%XScKq!)wI=xWnTbo|c6EYEdX-5*k8L z5*}*J!t2l~(K_xEqODtIv0B*CUBnbUBazxJtx$fU!s7@W{B`0YSq33LlMdvBVW~OOl1uSCma5^96Ko#=L0snsC9K} zXN!?gvpzCu%u+rQO38TCiOdFqT4L+OHJtRZOL#|cx#YOKaF>gvEL$yUBZ}BoL`kB? z0}Y{%aEpiy;Ht_z;%Q^8d`Lv9GÐla22z4HT0FbR^58TH)$K20R{@pD@oS0z~AV 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

      e#f$x2D8d>Pn1Ej!#m!V#ipud19P5#y1U3 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 diff --git a/po/zh_TW.po b/po/zh_TW.po index 8a7a34a..b276ceb 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1,481 +1,520 @@ -# Chinese translations for bash package. +# Traditional Chinese translations for bash package. # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Zi-You Dai , 2008. +# Mingye Wang (Arthur2e5) , 2015. +# Wei-Lun Chao , 2015. # msgid "" msgstr "" -"Project-Id-Version: bash-3.2\n" +"Project-Id-Version: bash 4.3-rc2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-11 11:19-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" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2015-08-27 13:36+0800\n" +"Last-Translator: Wei-Lun Chao \n" +"Language-Team: Chinese (traditional) \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 +#: arrayfunc.c:54 msgid "bad array subscript" +msgstr "é™£åˆ—ä¸‹æ¨™ä¸æ­£ç¢º" + +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 +#, c-format +msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:356 builtins/declare.def:566 +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "" +msgstr "%s: 無法將索引陣列轉化為關è¯é™£åˆ—" -#: arrayfunc.c:539 -#, fuzzy, c-format +#: arrayfunc.c:578 +#, c-format msgid "%s: invalid associative array key" -msgstr "%s:無效的功能å稱" +msgstr "%s: 無效的關è¯é™£åˆ—éµå€¼" -#: arrayfunc.c:541 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" -msgstr "" +msgstr "%s: ç„¡æ³•æŒ‡æ´¾ç‚ºéžæ•¸å­—的索引" -#: arrayfunc.c:586 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "" +msgstr "%s: %s: 指派為關è¯é™£åˆ—時必須使用下標" -#: bashhist.c:388 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" -msgstr "" +msgstr "%s: 無法建立: %s" -#: bashline.c:3982 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "" +msgstr "bash_execute_unix_command: 無法為命令找到éµå°æ˜ " -#: bashline.c:4069 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" -msgstr "" +msgstr "%s: 第一個éžç©ºå­—å…ƒä¸æ˜¯ã€Œ\"ã€" -#: bashline.c:4098 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" -msgstr "" +msgstr "%2$s 中沒有閉åˆçš„「%1$cã€" -#: bashline.c:4132 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" -msgstr "" +msgstr "%s: 缺少冒號分隔符" -#: braces.c:321 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "" +msgstr "大括號展開: 無法為 %s 分é…記憶體" -#: braces.c:413 +#: braces.c:427 #, c-format msgid "brace expansion: failed to allocate memory for %d elements" -msgstr "" +msgstr "大括號展開: 為 %d 個元素分é…記憶體失敗" -#: braces.c:452 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "" +msgstr "大括號展開: 為「%sã€åˆ†é…記憶體失敗" -#: builtins/alias.def:132 -#, fuzzy, c-format +#: builtins/alias.def:133 +#, c-format msgid "`%s': invalid alias name" -msgstr "%s:無效的功能å稱" +msgstr "「%sã€: 無效的別å" #: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" -msgstr "" +msgstr "未啟用列編輯" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" -msgstr "" +msgstr "「%sã€: 無效的éµå°æ˜ å" -#: builtins/bind.def:251 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s:ä¸èƒ½è®€å–: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:270 #, c-format msgid "`%s': cannot unbind" -msgstr "" +msgstr "「%sã€: 無法解除繫çµ" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" -msgstr "`%s':未知函數å稱" - -#: builtins/bind.def:312 -#, c-format -msgid "%s is not bound to any keys.\n" -msgstr "" +msgstr "「%sã€ï¼šä¸æ˜Žå‡½æ•¸å稱" #: builtins/bind.def:316 #, c-format +msgid "%s is not bound to any keys.\n" +msgstr "%s 未與任何éµç¹«çµã€‚\n" + +#: builtins/bind.def:320 +#, c-format msgid "%s can be invoked via " -msgstr "" +msgstr "%s å¯ä»¥è¢«å‘¼å«ï¼Œè—‰ç”±" -#: builtins/break.def:77 builtins/break.def:117 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" -msgstr "" +msgstr "迴圈計數" -#: builtins/break.def:137 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "" +msgstr "僅在「forã€ï¼Œã€Œwhileã€ï¼Œ 或者「untilã€è¿´åœˆä¸­æœ‰æ„義" -#: builtins/caller.def:134 +#: builtins/caller.def:136 msgid "" "Returns the context of the current subroutine call.\n" " \n" " Without EXPR, returns " msgstr "" +"回傳當å‰å­ä¾‹ç¨‹å‘¼å«çš„語境\n" +" \n" +" ä¸å¸¶ EXPR 時,回傳" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME 沒有設置" -#: builtins/cd.def:327 builtins/common.c:166 test.c:876 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "太多引數" -#: builtins/cd.def:338 +#: builtins/cd.def:336 +#, fuzzy +msgid "null directory" +msgstr "無其他目錄" + +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD 沒有設置" -#: builtins/common.c:101 +#: builtins/common.c:102 #, c-format msgid "line %d: " -msgstr "" +msgstr "第 %d 列:" -#: builtins/common.c:139 error.c:265 -#, fuzzy, c-format +#: builtins/common.c:140 error.c:265 +#, c-format msgid "warning: " -msgstr "%s:警告:" +msgstr "警告:" -#: builtins/common.c:153 -#, fuzzy, c-format +#: builtins/common.c:154 +#, c-format msgid "%s: usage: " -msgstr "%s:警告:" +msgstr "%s: 用法:" -#: builtins/common.c:191 shell.c:506 shell.c:788 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s:é¸é …需è¦ä¸€å€‹å¼•數" -#: builtins/common.c:198 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" -msgstr "%s:數字引數必須" +msgstr "%sï¼šéœ€è¦æ•¸å­—引數" -#: builtins/common.c:205 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s:沒有找到" -#: builtins/common.c:214 shell.c:801 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s:無效é¸é …" -#: builtins/common.c:221 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" -msgstr "%s:無效é¸é …å" +msgstr "%s:無效é¸é …å稱" -#: builtins/common.c:228 general.c:235 general.c:240 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" -msgstr "`%s'ï¼šä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„識別符" +msgstr "「%sã€ï¼šä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„識別符" -#: builtins/common.c:238 -#, fuzzy +#: builtins/common.c:246 msgid "invalid octal number" -msgstr "無效信號數" +msgstr "ç„¡æ•ˆçš„å…«é€²ä½æ•¸å­—" -#: builtins/common.c:240 -#, fuzzy +#: builtins/common.c:248 msgid "invalid hex number" -msgstr "%s:無效的號碼" +msgstr "無效的å六進使•¸å­—" -#: builtins/common.c:242 expr.c:1470 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" -msgstr "" +msgstr "無效數字" -#: builtins/common.c:250 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%sï¼šç„¡æ•ˆçš„ä¿¡è™Ÿè¦æ ¼" -#: builtins/common.c:257 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "`%s'ï¼šä¸æ˜¯ä¸€å€‹ pid æˆ–æœ‰æ•ˆçš„å·¥ä½œè¦æ ¼" +msgstr "「%sã€ï¼šä¸æ˜¯ä¸€å€‹ pid æˆ–æœ‰æ•ˆçš„å·¥ä½œè¦æ ¼" -#: builtins/common.c:264 error.c:488 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" -msgstr "%s:åªè®€è®Šæ•¸" +msgstr "%s:唯讀的變數" -#: builtins/common.c:272 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s:%s 超出範åœ" -#: builtins/common.c:272 builtins/common.c:274 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "引數" -#: builtins/common.c:274 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s 超出範åœ" -#: builtins/common.c:282 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" -msgstr "%s:沒有此類的工作" +msgstr "%s:沒有此類工作" -#: builtins/common.c:290 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s:沒有工作控制" -#: builtins/common.c:292 +#: builtins/common.c:300 msgid "no job control" msgstr "沒有工作控制" -#: builtins/common.c:302 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" -msgstr "%s:有é™çš„" - -#: builtins/common.c:304 -msgid "restricted" -msgstr "有é™çš„" +msgstr "%s:å—é™çš„" #: builtins/common.c:312 +msgid "restricted" +msgstr "å—é™çš„" + +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%sï¼šä¸æ˜¯ä¸€å€‹å…§å»º shell" -#: builtins/common.c:321 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "寫入錯誤: %s" -#: builtins/common.c:329 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" -msgstr "" +msgstr "設定終端屬性時出錯: %s" -#: builtins/common.c:331 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" -msgstr "" +msgstr "ç²å–終端屬性時出錯: %s" -#: builtins/common.c:563 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s:錯誤檢索當å‰ç›®éŒ„: %s: %s\n" -#: builtins/common.c:629 builtins/common.c:631 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s:å«ç³Šçš„å·¥ä½œè¦æ ¼" +msgstr "%s:模稜兩å¯çš„å·¥ä½œè¦æ ¼" -#: builtins/complete.def:277 +#: builtins/common.c:918 +msgid "help not available in this version" +msgstr "" + +#: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s:無效的功能å稱" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s:沒有完æˆçš„è¦æ ¼" -#: builtins/complete.def:697 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "警告: -F é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ" -#: builtins/complete.def:699 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "警告: -C é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ" -#: builtins/complete.def:828 +#: builtins/complete.def:831 msgid "not currently executing completion function" -msgstr "" +msgstr "ç•¶å‰æœªåŸ·è¡Œè£œå®ŒåŠŸèƒ½" -#: builtins/declare.def:126 +#: builtins/declare.def:127 msgid "can only be used in a function" -msgstr "åªèƒ½ç”¨åœ¨ä¸€å€‹å‡½æ•¸" +msgstr "åªèƒ½ç”¨åœ¨å‡½æ•¸ä¸­" -#: builtins/declare.def:315 builtins/declare.def:509 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: 引用變數ä¸èƒ½ç‚ºé™£åˆ—" -#: builtins/declare.def:324 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "" +msgstr "%s: ä¸å…許å稱引用變數引用自身" -#: builtins/declare.def:398 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 +#, c-format +msgid "%s: circular name reference" +msgstr "%s: 迴圈變數å引用" + +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, fuzzy, c-format +msgid "`%s': invalid variable name for name reference" +msgstr "%s: 無效的引用變數å" + +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" -msgstr "" +msgstr "無法用「-fã€ç”Ÿæˆå‡½æ•¸" -#: builtins/declare.def:410 execute_cmd.c:5361 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" -msgstr "%s:åªè®€å‡½æ•¸" +msgstr "%s:唯讀函數" -#: builtins/declare.def:553 +#: builtins/declare.def:753 +#, c-format +msgid "%s: quoted compound array assignment deprecated" +msgstr "" + +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" -msgstr "" +msgstr "%s: 無法以這種方å¼éŠ·æ¯€é™£åˆ—è®Šæ•¸" -#: builtins/declare.def:560 builtins/read.def:733 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "" +msgstr "%s: 無法將關è¯é™£åˆ—轉化為索引陣列" -#: builtins/enable.def:137 builtins/enable.def:145 +#: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" -msgstr "" +msgstr "動態載入ä¸å¯ç”¨" -#: builtins/enable.def:312 +#: builtins/enable.def:343 #, c-format msgid "cannot open shared object %s: %s" -msgstr "" +msgstr "無法開啟共享物件 %s: %s" -#: builtins/enable.def:335 +#: builtins/enable.def:369 #, c-format msgid "cannot find %s in shared object %s: %s" +msgstr "無法在共享物件 %2$s 中找到 %1$s: %3$s" + +#: builtins/enable.def:387 +#, c-format +msgid "load function for %s returns failure (%d): not loaded" msgstr "" -#: builtins/enable.def:459 +#: builtins/enable.def:512 #, c-format msgid "%s: not dynamically loaded" -msgstr "" +msgstr "%s: 未以動態方å¼è¼‰å…¥" -#: builtins/enable.def:474 +#: builtins/enable.def:538 #, c-format msgid "%s: cannot delete: %s" -msgstr "" +msgstr "%s: 無法刪除: %s" -#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5208 -#: shell.c:1481 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" -msgstr "" +msgstr "%s: 是一個目錄" -#: builtins/evalfile.c:146 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" -msgstr "" +msgstr "%s: 䏿˜¯å¸¸è¦æª”案" -#: builtins/evalfile.c:155 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" -msgstr "" +msgstr "%s: 檔案太大" -#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" -msgstr "" +msgstr "%s: ç„¡æ³•åŸ·è¡ŒäºŒé€²ä½æª”案" -#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" -msgstr "" +msgstr "%s: 無法執行: %s" -#: builtins/exit.def:65 +#: builtins/exit.def:67 #, c-format msgid "logout\n" -msgstr "" +msgstr "登出\n" -#: builtins/exit.def:88 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" -msgstr "" +msgstr "䏿˜¯ç™»å…¥ shell: 使用「exitã€" -#: builtins/exit.def:120 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" -msgstr "" +msgstr "æœ‰åœæ­¢çš„工作。\n" -#: builtins/exit.def:122 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" -msgstr "" +msgstr "有執行中的工作。\n" -#: builtins/fc.def:262 +#: builtins/fc.def:269 msgid "no command found" -msgstr "" +msgstr "未找到命令" -#: builtins/fc.def:320 builtins/fc.def:369 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" -msgstr "" +msgstr "æ­·å²è¨˜éŒ„è¦æ ¼" -#: builtins/fc.def:390 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" -msgstr "" +msgstr "%s: 無法開啟臨時檔案: %s" -#: builtins/fg_bg.def:149 builtins/jobs.def:282 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" -msgstr "" +msgstr "ç•¶å‰" -#: builtins/fg_bg.def:158 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" -msgstr "" +msgstr "在ä¸å¸¶å·¥ä½œæŽ§åˆ¶çš„æƒ…æ³ä¸‹å•Ÿå‹•了工作 %d" #: builtins/getopt.c:110 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "" +msgstr "%s: éžæ³•é¸é … -- %c\n" #: builtins/getopt.c:111 #, c-format msgid "%s: option requires an argument -- %c\n" -msgstr "" +msgstr "%s: é¸é …需è¦ä¸€å€‹å¼•數 -- %c\n" #: builtins/hash.def:92 msgid "hashing disabled" -msgstr "" +msgstr "å·²åœç”¨é›œæ¹Š" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" -msgstr "" +msgstr "%s: 雜湊表為空\n" -#: builtins/hash.def:245 -#, fuzzy, c-format +#: builtins/hash.def:254 +#, c-format msgid "hits\tcommand\n" -msgstr "最後的命令: %s\n" +msgstr "命中\t命令\n" -#: builtins/help.def:130 +#: builtins/help.def:135 #, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "" +msgstr[0] "Shell 命令,匹é…é—œéµè©ž `" -#: builtins/help.def:182 +#: builtins/help.def:187 #, c-format msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" +"沒有與「%sã€åŒ¹é…的說明主題。嘗試「help helpã€æˆ–「man -k %sã€æˆ–「info %sã€ã€‚" -#: builtins/help.def:199 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" -msgstr "" +msgstr "%s: 無法開啟: %s" -#: builtins/help.def:485 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -486,136 +525,148 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" +"這些 shell 命令是內部定義的。請輸入「helpã€ä»¥ç²å–一個列表。\n" +"輸入「help å稱ã€ä»¥å¾—到有關函數「å稱ã€çš„æ›´å¤šè³‡è¨Šã€‚\n" +"使用「info bashã€ä¾†ç²å¾—關於 shell 的更多一般性資訊。\n" +"使用「man -kã€æˆ–「infoã€ä¾†ç²å–ä¸åœ¨åˆ—表中命令的更多資訊。\n" +"\n" +"å稱æ—邊的星號(*)表示該命令被åœç”¨ã€‚\n" +"\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" -msgstr "" +msgstr "最多能使用 -anrw é¸é …之一" -#: builtins/history.def:186 +#: builtins/history.def:187 msgid "history position" -msgstr "" +msgstr "æ­·å²è¨˜éŒ„ä½ç½®" -#: builtins/history.def:366 +#: builtins/history.def:264 +#, fuzzy, c-format +msgid "%s: invalid timestamp" +msgstr "%s: 無效引數" + +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" -msgstr "" +msgstr "%s: æ­·å²è¨˜éŒ„擴充套件失敗" #: builtins/inlib.def:71 -#, fuzzy, c-format +#, c-format msgid "%s: inlib failed" -msgstr "%s:無效æœå‹™" +msgstr "%s: inlib 失敗" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" -msgstr "" +msgstr "å…¶ä»–é¸é …ä¸èƒ½èˆ‡ã€Œ-xã€åŒæ™‚使用" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "" +msgstr "%s: 引數必須是行程或工作 ID" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" -msgstr "" +msgstr "䏿˜ŽéŒ¯èª¤" -#: builtins/let.def:95 builtins/let.def:120 expr.c:583 expr.c:598 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" -msgstr "" +msgstr "需è¦è¡¨ç¤ºå¼" -#: builtins/mapfile.def:172 +#: builtins/mapfile.def:178 #, c-format msgid "%s: not an indexed array" -msgstr "" +msgstr "%s: 䏿˜¯ä¸€å€‹ç´¢å¼•陣列" -#: builtins/mapfile.def:259 builtins/read.def:302 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "" +msgstr "%s: 無效的檔案æè¿°ç¬¦è¦æ ¼" -#: builtins/mapfile.def:267 builtins/read.def:309 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "" +msgstr "%d: 無效的檔案æè¿°ç¬¦: %s" -#: builtins/mapfile.def:276 builtins/mapfile.def:314 -#, fuzzy, c-format +#: builtins/mapfile.def:289 builtins/mapfile.def:327 +#, c-format msgid "%s: invalid line count" -msgstr "%s:無效é¸é …" +msgstr "%s: 無效的列數" -#: builtins/mapfile.def:287 -#, fuzzy, c-format +#: builtins/mapfile.def:300 +#, c-format msgid "%s: invalid array origin" -msgstr "%s:無效é¸é …" +msgstr "%s: 無效的陣列原點" -#: builtins/mapfile.def:304 -#, fuzzy, c-format +#: builtins/mapfile.def:317 +#, c-format msgid "%s: invalid callback quantum" -msgstr "%s:無效的功能å稱" +msgstr "%s: 無效的回呼定é‡" -#: builtins/mapfile.def:336 +#: builtins/mapfile.def:350 msgid "empty array variable name" -msgstr "" +msgstr "空陣列變數å" -#: builtins/mapfile.def:357 +#: builtins/mapfile.def:371 msgid "array variable support required" -msgstr "" +msgstr "需è¦é™£åˆ—變數支æ´" -#: builtins/printf.def:402 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" -msgstr "" +msgstr "「%sã€: 缺少格å¼å­—å…ƒ" -#: builtins/printf.def:456 -#, fuzzy, c-format +#: builtins/printf.def:467 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%sï¼šç„¡æ•ˆçš„ä¿¡è™Ÿè¦æ ¼" +msgstr "「%cã€: 無效的時間格å¼è¦æ ¼" -#: builtins/printf.def:658 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" -msgstr "" +msgstr "「%cã€: 無效格å¼å­—å…ƒ" -#: builtins/printf.def:684 -#, fuzzy, c-format +#: builtins/printf.def:695 +#, c-format msgid "warning: %s: %s" -msgstr "%s:警告:" +msgstr "警告: %s: %s" -#: builtins/printf.def:768 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "æ ¼å¼è§£æžå•題: %s" -#: builtins/printf.def:865 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" -msgstr "" +msgstr "使用了 \\x 但缺少å六進使•¸å­—" -#: builtins/printf.def:880 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" -msgstr "" +msgstr "使用了 \\%c 但缺少è¬åœ‹ç¢¼æ•¸å­—" -#: builtins/pushd.def:195 +#: builtins/pushd.def:199 msgid "no other directory" -msgstr "" +msgstr "無其他目錄" -#: builtins/pushd.def:354 -#, fuzzy, c-format +#: builtins/pushd.def:360 +#, c-format msgid "%s: invalid argument" -msgstr "%s:無效é¸é …" +msgstr "%s: 無效引數" -#: builtins/pushd.def:468 +#: builtins/pushd.def:475 msgid "" -msgstr "" +msgstr "<ç„¡ç•¶å‰ç›®éŒ„>" -#: builtins/pushd.def:512 +#: builtins/pushd.def:519 msgid "directory stack empty" -msgstr "" +msgstr "目錄堆疊為空" -#: builtins/pushd.def:514 +#: builtins/pushd.def:521 msgid "directory stack index" -msgstr "" +msgstr "目錄堆疊索引" -#: builtins/pushd.def:689 +#: builtins/pushd.def:696 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,8 +689,26 @@ msgid "" "by\n" "\tdirs when invoked without options, starting with zero." msgstr "" +"顯示當å‰è¨˜ä½çš„目錄列表。 目錄\n" +" 藉由「pushdã€å‘½ä»¤åŠ å…¥é€™å€‹åˆ—è¡¨ï¼›æ‚¨å¯ä»¥\n" +" 使用「popdã€å‘½ä»¤å°åˆ—è¡¨é€²è¡Œéæ­·ã€‚\n" +" \n" +" é¸é …:\n" +" -c\t刪除所有元素以清除目錄堆疊\n" +" -l\tä¸å°å‡ºèˆ‡å®¶ç›®éŒ„相關的以波浪號\n" +" \t為字首的目錄\n" +" -p\tæ¯åˆ—一個æ¢ç›®å°å‡ºç›®éŒ„堆疊\n" +" -v\t以堆疊ä½ç½®ç‚ºå­—首,æ¯åˆ—一個æ¢ç›®\n" +" \tå°å‡ºç›®éŒ„堆疊\n" +" \n" +" 引數:\n" +" +N\t以 dirs ä¸å¸¶é¸é …輸出的順åºï¼Œå¾žå·¦èµ·ç¬¬ N 個æ¢ç›®é¡¯ç¤ºåˆ—表,\n" +" \t從 0 開始。\n" +" \n" +" -N\t以 dirs ä¸å¸¶é¸é …輸出的順åºï¼Œå¾žå³èµ·ç¬¬ N 個項目顯示列表,\n" +"\t從 0 開始。" -#: builtins/pushd.def:711 +#: builtins/pushd.def:718 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" @@ -663,8 +732,29 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"在目錄堆疊頂部加入一個目錄,或者論詢\n" +" 目錄堆疊,是當å‰å·¥ä½œç›®éŒ„æˆç‚ºæ–°çš„堆疊頂端\n" +" ä¸å¸¶å¼•數時,交æ›å †ç–Šé ‚端的兩個目錄。\n" +" \n" +" é¸é …:\n" +" -n\t抑制增加堆疊中目錄時通常變更目錄的æ“作,\n" +" \tå¾žè€Œåªæœ‰å †ç–Šè¢«æ“作。\n" +" \n" +" 引數:\n" +" +N\t輪轉堆疊使得第 N 個目錄(「dirsã€çš„\n" +" \t輸出列表中左起,從 0 é–‹å§‹)\n" +" \tå‡è‡³å †ç–Šé ‚端。\n" +" \n" +" -N\t輪轉堆疊使得第 N 個目錄(「dirsã€çš„\n" +" \t輸出列表中å³èµ·ï¼Œå¾ž 0 é–‹å§‹)\n" +" \tå‡è‡³å †ç–Šé ‚端\n" +" \n" +" dir\t新增目錄至堆疊頂端,並\n" +" \t使其æˆç‚ºæ–°çš„ç•¶å‰å·¥ä½œç›®éŒ„。\n" +" \n" +" 「dirsã€å…§å»ºå‘½ä»¤é¡¯ç¤ºç›®éŒ„堆疊。" -#: builtins/pushd.def:736 +#: builtins/pushd.def:743 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" @@ -684,146 +774,173 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" +"從目錄堆疊中刪除æ¢ç›®ã€‚ä¸å¸¶å¼•數時,刪除\n" +" 堆疊頂端目錄並變更至新的堆疊頂端目錄。\n" +" \n" +" é¸é …:\n" +" -n\t抑制從堆疊中刪除目錄時通常變更目錄æ“作,\n" +" \tå¾žè€Œåªæœ‰å †ç–Šè¢«æ“作。\n" +" \n" +" 引數:\n" +" +N\t從「dirsã€è¼¸å‡ºçš„列表中,\n" +" \t刪除左起第 N 個æ¢ç›®ï¼Œè¨ˆæ•¸å¾ž 0 開始。例如:「popd +0ã€\n" +" \t刪除第一個目錄,「popd +1ã€åˆªé™¤ç¬¬äºŒå€‹ã€‚\n" +" \n" +" -N\t從「dirsã€è¼¸å‡ºçš„列表中,\n" +" \t刪除å³èµ·ç¬¬ N 個æ¢ç›®ï¼Œè¨ˆæ•¸å¾ž 0 開始,例如:「popd -0ã€\n" +" \t刪除最後一個æ¢ç›®ï¼Œã€Œpopd -1ã€åˆªé™¤å€’數第二個。\n" +" \n" +" 「dirsã€å…§å»ºè®Šæ•¸é¡¯ç¤ºç›®éŒ„堆疊。" -#: builtins/read.def:275 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" -msgstr "" +msgstr "%s: ç„¡æ•ˆçš„é€¾æ™‚è¦æ ¼" -#: builtins/read.def:678 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" -msgstr "" +msgstr "讀å–錯誤: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" -msgstr "" +msgstr "åªèƒ½å¾žå‡½æ•¸æˆ–者原始指令稿「returnã€" -#: builtins/set.def:782 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" -msgstr "" +msgstr "ç„¡æ³•åŒæ™‚å–æ¶ˆè¨­å®šä¸€å€‹å‡½æ•¸å’Œä¸€å€‹è®Šæ•¸" -#: builtins/set.def:826 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" -msgstr "" +msgstr "%s: ç„¡æ³•å–æ¶ˆè¨­å®š" -#: builtins/set.def:843 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "" +msgstr "%s: ç„¡æ³•å–æ¶ˆè¨­å®š: 唯讀 %s" -#: builtins/set.def:854 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" -msgstr "" +msgstr "%s: 䏿˜¯é™£åˆ—變數" -#: builtins/setattr.def:187 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" -msgstr "" +msgstr "%s: 䏿˜¯å‡½æ•¸" -#: builtins/shift.def:71 builtins/shift.def:77 +#: builtins/setattr.def:196 +#, fuzzy, c-format +msgid "%s: cannot export" +msgstr "%s: ç„¡æ³•å–æ¶ˆè¨­å®š" + +#: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "" +msgstr "ä½ç§»è¨ˆæ•¸" -#: builtins/shopt.def:279 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" -msgstr "" +msgstr "ç„¡æ³•åŒæ™‚è¨­å®šå’Œå–æ¶ˆè¨­å®š shell é¸é …" -#: builtins/shopt.def:346 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" -msgstr "" +msgstr "%s: 無效的 shell é¸é …å稱" -#: builtins/source.def:130 +#: builtins/source.def:131 msgid "filename argument required" -msgstr "" +msgstr "éœ€è¦æª”å引數" -#: builtins/source.def:155 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" -msgstr "" +msgstr "%s: 檔案未找到" -#: builtins/suspend.def:101 +#: builtins/suspend.def:102 msgid "cannot suspend" -msgstr "" +msgstr "無法懸置" -#: builtins/suspend.def:111 +#: builtins/suspend.def:112 msgid "cannot suspend a login shell" -msgstr "" +msgstr "無法將登入 shell 懸置" -#: builtins/type.def:234 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" -msgstr "" +msgstr "%s 是「%sã€çš„別å\n" -#: builtins/type.def:255 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" -msgstr "" +msgstr "%s 是 shell é—œéµå­—\n" -#: builtins/type.def:274 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" -msgstr "" +msgstr "%s 是一個函數\n" -#: builtins/type.def:296 +#: builtins/type.def:300 +#, fuzzy, c-format +msgid "%s is a special shell builtin\n" +msgstr "%s 是 shell 內建\n" + +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" -msgstr "" +msgstr "%s 是 shell 內建\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" -msgstr "" +msgstr "%s 是 %s\n" -#: builtins/type.def:337 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" -msgstr "" +msgstr "%s 已進行雜湊æ“作(%s)\n" -#: builtins/ulimit.def:383 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" -msgstr "" +msgstr "%s: 無效的 limit 引數" -#: builtins/ulimit.def:409 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" -msgstr "`%c':壞的命令" +msgstr "「%cã€ï¼šä¸ç•¶çš„命令" -#: builtins/ulimit.def:438 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" -msgstr "%s:ä¸èƒ½å¾—到 limit: %s" +msgstr "%s:ä¸èƒ½å¾—到 limit: %s" -#: builtins/ulimit.def:464 +#: builtins/ulimit.def:479 msgid "limit" -msgstr "" +msgstr "limit" -#: builtins/ulimit.def:476 builtins/ulimit.def:776 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" -msgstr "%s:ä¸èƒ½ä¿®æ”¹ limit: %s" +msgstr "%s:ä¸èƒ½ä¿®æ”¹ limit: %s" -#: builtins/umask.def:114 +#: builtins/umask.def:115 msgid "octal number" -msgstr "八進制數" +msgstr "八進使•¸å­—" -#: builtins/umask.def:227 +#: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "" +msgstr "「%cã€: 無效的符號狀態é‹ç®—å­" -#: builtins/umask.def:282 +#: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "" +msgstr "「%cã€: 無效的符號狀態字元" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " -msgstr "" +msgstr " 列 " #: error.c:165 #, c-format @@ -833,323 +950,343 @@ msgstr "最後的命令: %s\n" #: error.c:173 #, c-format msgid "Aborting..." +msgstr "中止…" + +#. TRANSLATORS: this is a prefix for informational messages. +#: error.c:288 +#, c-format +msgid "INFORM: " msgstr "" -#: error.c:440 +#: error.c:463 msgid "unknown command error" -msgstr "未知命令錯誤" +msgstr "䏿˜Žå‘½ä»¤éŒ¯èª¤" -#: error.c:441 +#: error.c:464 msgid "bad command type" -msgstr "壞的命令類型" +msgstr "ä¸ç•¶çš„命令類型" -#: error.c:442 +#: error.c:465 msgid "bad connector" -msgstr "壞的連接器" +msgstr "ä¸ç•¶çš„連接器" -#: error.c:443 +#: error.c:466 msgid "bad jump" -msgstr "" +msgstr "錯誤的跳轉" -#: error.c:481 +#: error.c:504 #, c-format msgid "%s: unbound variable" -msgstr "" +msgstr "%s: 未繫çµçš„變數" -#: eval.c:189 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" -msgstr "" +msgstr "\a 等待輸入逾時:自動登出\n" -#: execute_cmd.c:512 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "" +msgstr "無法從 /dev/null é‡å®šå‘標準輸入: %s" -#: execute_cmd.c:1233 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" +msgstr "時間格å¼:「%cã€: 無效的格å¼å­—å…ƒ" + +#: execute_cmd.c:2273 +#, c-format +msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2287 -#, fuzzy +#: execute_cmd.c:2377 msgid "pipe error" -msgstr "寫入錯誤: %s" +msgstr "管é“錯誤" -#: execute_cmd.c:4386 +#: execute_cmd.c:4496 +#, fuzzy, c-format +msgid "eval: maximum eval nesting level exceeded (%d)" +msgstr "%s: 超出最大函數巢狀層數 (%d)" + +#: execute_cmd.c:4508 +#, fuzzy, c-format +msgid "%s: maximum source nesting level exceeded (%d)" +msgstr "%s: 超出最大函數巢狀層數 (%d)" + +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" +msgstr "%s: 超出最大函數巢狀層數 (%d)" -#: execute_cmd.c:4884 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "" +msgstr "%s: å—é™çš„: 無法在命令å稱中使用「/ã€" -#: execute_cmd.c:4973 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s:命令找ä¸åˆ°" -#: execute_cmd.c:5206 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" -msgstr "" +msgstr "%s: %s" -#: execute_cmd.c:5243 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" -msgstr "" +msgstr "%s: %s: ä¸ç•¶çš„直譯器" -#: execute_cmd.c:5280 -#, fuzzy, c-format +#: execute_cmd.c:5545 +#, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s:ä¸èƒ½å¾—到 limit: %s" +msgstr "%s: ç„¡æ³•åŸ·è¡ŒäºŒé€²ä½æª”案: %s" -#: execute_cmd.c:5352 -#, fuzzy, c-format +#: execute_cmd.c:5623 +#, c-format msgid "`%s': is a special builtin" -msgstr "%sï¼šä¸æ˜¯ä¸€å€‹å…§å»º shell" +msgstr "「%sã€: 特殊內建" -#: execute_cmd.c:5404 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" -msgstr "" +msgstr "無法複製檔案æè¿°ç¬¦ %d 到檔案æè¿°ç¬¦ %d" #: expr.c:259 msgid "expression recursion level exceeded" -msgstr "" +msgstr "表示å¼éžè¿´å±¤æ¬¡è¶…出範åœ" #: expr.c:283 msgid "recursion stack underflow" -msgstr "" +msgstr "éžè¿´å †ç–Šä¸‹é™æº¢ä½" #: expr.c:431 msgid "syntax error in expression" -msgstr "表é”語法錯誤" +msgstr "表示å¼èªžæ³•錯誤" #: expr.c:475 msgid "attempted assignment to non-variable" -msgstr "" +msgstr "嘗試指派給éžè®Šæ•¸" #: expr.c:495 expr.c:858 msgid "division by 0" -msgstr "" +msgstr "除 0" #: expr.c:542 msgid "bug: bad expassign token" -msgstr "" +msgstr "錯誤:ä¸ç•¶çš„表示å¼å­—組" #: expr.c:595 msgid "`:' expected for conditional expression" -msgstr "" +msgstr "æ¢ä»¶è¡¨ç¤ºå¼éœ€è¦ã€Œ:ã€" #: expr.c:919 msgid "exponent less than 0" -msgstr "" +msgstr "æŒ‡æ•¸å°æ–¼ 0" #: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "" +msgstr "é å¢žç¬¦æˆ–é æ¸›ç¬¦å¾Œæ‡‰è·Ÿæœ‰æ¨™è­˜ç¬¦" #: expr.c:1002 msgid "missing `)'" -msgstr "" +msgstr "缺少「)ã€" -#: expr.c:1053 expr.c:1390 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" -msgstr "" +msgstr "語法錯誤: 需è¦é‹ç®—å…ƒ" -#: expr.c:1392 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" -msgstr "" +msgstr "語法錯誤: 無效的算術é‹ç®—å­" -#: expr.c:1416 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "" +msgstr "%s%s%s: %s (錯誤字組是「%sã€)" -#: expr.c:1474 +#: expr.c:1477 msgid "invalid arithmetic base" -msgstr "" +msgstr "無效的算術進ä½" -#: expr.c:1494 +#: expr.c:1497 msgid "value too great for base" -msgstr "" +msgstr "數值太大ä¸å¯ç‚ºç®—術進ä½çš„基底" -#: expr.c:1543 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" -msgstr "" +msgstr "%s: 表示å¼éŒ¯èª¤\n" -#: general.c:62 +#: general.c:68 msgid "getcwd: cannot access parent directories" -msgstr "" +msgstr "getcwd: 無法訪å•上層目錄" -#: input.c:102 subst.c:5168 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "" +msgstr "無法為檔案æè¿°ç¬¦ %d é‡ç½®ç„¡å»¶é²æ¨¡å¼" #: input.c:271 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "" +msgstr "無法從檔案æè¿°ç¬¦ %d 為 bash 的輸入ç²å–一個新的檔案æè¿°ç¬¦" #: input.c:279 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" -msgstr "" +msgstr "save_bash_input: 已經存在新的檔案æè¿°ç¬¦ %d 的緩è¡å€" -#: jobs.c:471 +#: jobs.c:527 msgid "start_pipeline: pgrp pipe" -msgstr "" +msgstr "start_pipeline: 行程群組管é“" -#: jobs.c:893 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "" +msgstr "生æˆçš„行程識別號 %d 顯示為執行中的工作 %d" -#: jobs.c:1012 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "" +msgstr "刪除行程群組 %2$ld ä¸­å·²åœæ­¢çš„工作 %1$d" -#: jobs.c:1117 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" -msgstr "" +msgstr "add_process: 行程 %5ld(%s) 進入 the_pipeline" -#: jobs.c:1120 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "" +msgstr "add_process: 行程識別號 %5ld(%s) æ¨™è¨»ç‚ºä»æ´»è‘—" -#: jobs.c:1435 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" -msgstr "" +msgstr "describe_pid: %ld: 無此行程識別號" -#: jobs.c:1450 +#: jobs.c:1605 #, c-format msgid "Signal %d" -msgstr "" +msgstr "訊號 %d" -#: jobs.c:1464 jobs.c:1489 +#: jobs.c:1619 jobs.c:1645 msgid "Done" -msgstr "" +msgstr "已完æˆ" -#: jobs.c:1469 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" -msgstr "" +msgstr "å·²åœæ­¢" -#: jobs.c:1473 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" -msgstr "" +msgstr "å·²åœæ­¢(%s)" -#: jobs.c:1477 +#: jobs.c:1632 msgid "Running" -msgstr "" +msgstr "執行中" -#: jobs.c:1491 +#: jobs.c:1649 #, c-format msgid "Done(%d)" -msgstr "" +msgstr "已完æˆ(%d)" -#: jobs.c:1493 +#: jobs.c:1651 #, c-format msgid "Exit %d" -msgstr "" +msgstr "退出 %d" -#: jobs.c:1496 +#: jobs.c:1654 msgid "Unknown status" -msgstr "" +msgstr "䏿˜Žç‹€æ…‹" -#: jobs.c:1583 +#: jobs.c:1741 #, c-format msgid "(core dumped) " -msgstr "" +msgstr "(核心已傾å°)" -#: jobs.c:1602 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" -msgstr "" +msgstr " (工作目錄: %s)" -#: jobs.c:1819 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" -msgstr "" +msgstr "å­è¡Œç¨‹ setpgid (%ld 到 %ld)" -#: jobs.c:2138 nojobs.c:605 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" -msgstr "" +msgstr "wait: 行程識別號 %ld 䏿˜¯ç•¶å‰ shell çš„å­è¡Œç¨‹" -#: jobs.c:2385 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" -msgstr "" +msgstr "wiat_for: 沒有行程 %ld 的記錄" -#: jobs.c:2694 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "" +msgstr "wait_for_job: 工作 %d å·²åœæ­¢" -#: jobs.c:2986 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" -msgstr "" +msgstr "%s: 工作已經終止" -#: jobs.c:2995 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" -msgstr "" +msgstr "%s: 工作 %d 已在背景執行" -#: jobs.c:3220 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" +msgstr "waitchld: 開啟 WNOHANG 以é¿å…ç„¡é™é˜»å¡ž" -#: jobs.c:3711 -#, fuzzy, c-format +#: jobs.c:3970 +#, c-format msgid "%s: line %d: " -msgstr "%s:警告:" +msgstr "%s: 第 %d 列:" -#: jobs.c:3725 nojobs.c:843 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" -msgstr "" +msgstr " (核心已傾å°)" -#: jobs.c:3737 jobs.c:3750 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" -msgstr "" +msgstr "(ç•¶å‰å·¥ä½œç›®éŒ„:%s)\n" -#: jobs.c:3782 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" -msgstr "" +msgstr "initialize_job_control: getpgrp 失敗" -#: jobs.c:3843 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" -msgstr "" +msgstr "initialize_job_control: 列è¦å¾‹" -#: jobs.c:3853 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" -msgstr "" +msgstr "initialize_job_control: setpgid" -#: jobs.c:3874 jobs.c:3883 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "" +msgstr "無法設定終端行程群組(%d)" -#: jobs.c:3888 +#: jobs.c:4149 msgid "no job control in this shell" -msgstr "" +msgstr "æ­¤ shell 中無工作控制" #: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" -msgstr "" +msgstr "malloc: 主張失敗: %s\n" #: lib/malloc/malloc.c:312 #, c-format @@ -1157,67 +1294,68 @@ msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" +"\r\n" +"malloc: %s:%d: 主張已修補\r\n" #: lib/malloc/malloc.c:313 -#, fuzzy msgid "unknown" -msgstr "%s:主機未知" +msgstr "䏿˜Ž" #: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" -msgstr "" +msgstr "malloc: 空閒串列中的å€å¡Šæå£ž" #: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" -msgstr "" +msgstr "free: 用已經釋放的å€å¡Šåšç‚ºå‘¼å«å¼•數" #: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" -msgstr "" +msgstr "free: 用未分é…çš„å€å¡Šåšç‚ºå‘¼å«å¼•數" #: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "free: æª¢æ¸¬åˆ°ä¸‹é™æº¢ä½ï¼›mh_nbytes 超出範åœ" #: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" -msgstr "" +msgstr "free: 啟始和末尾å€å¡Šå¤§å°ä¸ä¸€è‡´" #: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" -msgstr "" +msgstr "realloc: 用未分é…çš„å€å¡Šåšç‚ºå‘¼å«å¼•數" #: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "" +msgstr "realloc: æª¢æ¸¬åˆ°ä¸‹é™æº¢ä½ï¼›mh_nbytes 超出範åœ" #: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" -msgstr "" +msgstr "realloc: 啟始和末尾å€å¡Šå¤§å°ä¸ä¸€è‡´" -#: lib/malloc/table.c:194 +#: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "" +msgstr "register_alloc: 分é…表已經充滿了 FIND_ALLOC?\n" -#: lib/malloc/table.c:203 +#: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "" +msgstr "register_alloc: %p 在表中顯示為已分é…?\n" -#: lib/malloc/table.c:256 +#: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" -msgstr "" +msgstr "register_free: %p 在表中顯示為已釋放?\n" #: lib/sh/fmtulong.c:102 msgid "invalid base" -msgstr "" +msgstr "無效的基底" #: lib/sh/netopen.c:168 #, c-format msgid "%s: host unknown" -msgstr "%s:主機未知" +msgstr "%sï¼šä¸æ˜Žçš„主機" #: lib/sh/netopen.c:175 #, c-format @@ -1227,31 +1365,31 @@ msgstr "%s:無效æœå‹™" #: lib/sh/netopen.c:306 #, c-format msgid "%s: bad network path specification" -msgstr "%sï¼šå£žçš„ç¶²è·¯è·¯å¾‘è¦æ ¼" +msgstr "%s:ä¸ç•¶çš„ç¶²è·¯è·¯å¾‘è¦æ ¼" -#: lib/sh/netopen.c:346 +#: lib/sh/netopen.c:347 msgid "network operations not supported" msgstr "䏿”¯æŒç¶²è·¯æ“作" #: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "" +msgstr "setlocale: LC_ALL: 無法變更語å€é¸é … (%s)" #: locale.c:202 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "" +msgstr "setlocale: LC_ALL: 無法變更語å€é¸é … (%s): %s" #: locale.c:259 #, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "" +msgstr "setlocale: %s: 無法變更語å€é¸é … (%s)" #: locale.c:261 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "" +msgstr "setlocale: %s: 無法變更語å€é¸é … (%s): %s" #: mailcheck.c:439 msgid "You have mail in $_" @@ -1266,1029 +1404,1089 @@ msgstr "您有新郵件在 $_" msgid "The mail in %s has been read\n" msgstr "郵件在 %s 已閱讀\n" -#: make_cmd.c:323 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" -msgstr "語法錯誤:必須算術表é”" +msgstr "語法錯誤:需è¦ç®—å¼" -#: make_cmd.c:325 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" -msgstr "語法錯誤: `;' æ„外" +msgstr "語法錯誤:「;ã€æ„外" -#: make_cmd.c:326 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" -msgstr "語法錯誤: `((%s))'" +msgstr "語法錯誤:「((%s))ã€" -#: make_cmd.c:578 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" -msgstr "make_here_document:壞的指示類型 %d" +msgstr "make_here_document:ä¸ç•¶çš„æŒ‡ç¤ºé¡žåž‹ %d" -#: make_cmd.c:662 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "" +msgstr "ç«‹å³æ–‡ä»¶åœ¨ç¬¬ %d åˆ—è¢«æª”æ¡ˆçµæŸç¬¦åˆ†éš” (需è¦ã€Œ%sã€)" -#: make_cmd.c:759 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "make_redirectionï¼šé‡æ–°å°Žå‘指示 `%d' 超出範åœ" +msgstr "make_redirectionï¼šé‡æ–°å°Žå‘指示「%dã€è¶…出範åœ" -#: parse.y:3278 parse.y:3561 +#: parse.y:2324 +#, c-format +msgid "" +"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " +"truncated" +msgstr "" + +#: parse.y:2700 +msgid "maximum here-document count exceeded" +msgstr "" + +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "" +msgstr "尋找匹é…的「%cã€æ™‚é‡åˆ°äº†æœªé æœŸçš„æª”æ¡ˆçµæŸç¬¦" -#: parse.y:4170 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" -msgstr "" +msgstr "尋找「]]ã€æ™‚é‡åˆ°äº†æœªé æœŸçš„æª”æ¡ˆçµæŸç¬¦" -#: parse.y:4175 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "" +msgstr "æ¢ä»¶è¡¨ç¤ºå¼ä¸­æœ‰èªžæ³•錯誤: æœªé æœŸçš„字組「%sã€" -#: parse.y:4179 +#: parse.y:4419 msgid "syntax error in conditional expression" -msgstr "語法錯誤,在有æ¢ä»¶çš„表é”" +msgstr "語法錯誤,在有æ¢ä»¶çš„表示å¼" -#: parse.y:4257 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "" +msgstr "æœªé æœŸçš„字組「%sã€ï¼Œéœ€è¦ã€Œ)ã€" -#: parse.y:4261 +#: parse.y:4501 msgid "expected `)'" -msgstr "é æœŸ `)'" +msgstr "é æœŸã€Œ)ã€" -#: parse.y:4289 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "" +msgstr "一元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„引數「%sã€" -#: parse.y:4293 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" -msgstr "" +msgstr "一元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„引數" -#: parse.y:4339 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" -msgstr "" +msgstr "æœªé æœŸçš„字組「%sã€ï¼Œéœ€è¦äºŒå…ƒæ¢ä»¶é‹ç®—å­" -#: parse.y:4343 +#: parse.y:4583 msgid "conditional binary operator expected" -msgstr "" +msgstr "需è¦äºŒå…ƒæ¢ä»¶é‹ç®—å­" -#: parse.y:4365 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "" +msgstr "二元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„引數「%sã€" -#: parse.y:4369 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" -msgstr "" +msgstr "二元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„引數" -#: parse.y:4380 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "" +msgstr "æ¢ä»¶å‘½ä»¤ä¸­æœ‰æœªé æœŸçš„字組「%cã€" -#: parse.y:4383 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "" +msgstr "æ¢ä»¶å‘½ä»¤ä¸­æœ‰æœªé æœŸçš„字組「%sã€" -#: parse.y:4387 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" -msgstr "" +msgstr "æ¢ä»¶å‘½ä»¤ä¸­æœ‰æœªé æœŸçš„字組 %d" -#: parse.y:5737 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" -msgstr "" +msgstr "æœªé æœŸçš„字組「%sã€é™„近有語法錯誤" -#: parse.y:5755 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" -msgstr "" +msgstr "「%sã€é™„近有語法錯誤" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error: unexpected end of file" -msgstr "" +msgstr "語法錯誤: æœªé æœŸçš„æª”案çµå°¾" -#: parse.y:5765 +#: parse.y:6024 msgid "syntax error" msgstr "語法錯誤" -#: parse.y:5827 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" -msgstr "" +msgstr "使用「%sã€é€€å‡º shell 。\n" -#: parse.y:5989 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" -msgstr "" +msgstr "尋找匹é…的「)ã€æ™‚é‡åˆ°äº†æœªé æœŸçš„æª”æ¡ˆçµæŸç¬¦" -#: pcomplete.c:1094 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" +msgstr "補完: 未找到函數「%sã€" + +#: pcomplete.c:1646 +#, c-format +msgid "programmable_completion: %s: possible retry loop" msgstr "" #: pcomplib.c:182 #, c-format msgid "progcomp_insert: %s: NULL COMPSPEC" -msgstr "" +msgstr "progcomp_insert: %s: ç©ºçš„è£œå®Œè¦æ ¼" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "" +msgstr "print_command: 錯誤的æ¢ä»¶é€£æŽ¥ç¬¦ã€Œ%dã€" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" -msgstr "" +msgstr "xtrace_set: %d: 無效的檔案æè¿°ç¬¦" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" -msgstr "" +msgstr "xtrace_set: 空的檔案指標" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" -msgstr "" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1518 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "" +msgstr "cprintf:「%cã€: 無效的格å¼å­—å…ƒ" -#: redir.c:123 redir.c:170 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" -msgstr "" +msgstr "檔案æè¿°ç¬¦è¶…出範åœ" -#: redir.c:177 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" -msgstr "" +msgstr "%s: 模稜兩å¯çš„é‡å®šå‘" -#: redir.c:181 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" -msgstr "" +msgstr "%s: 無法覆寫已存在的檔案" -#: redir.c:186 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" -msgstr "" +msgstr "%s: å—é™çš„: 無法é‡å®šå‘輸出" -#: redir.c:191 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" -msgstr "" +msgstr "ç„¡æ³•ç‚ºç«‹å³æ–‡ä»¶å»ºç«‹è‡¨æ™‚檔案: %s" -#: redir.c:195 -#, fuzzy, c-format +#: redir.c:196 +#, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s:åªè®€è®Šæ•¸" +msgstr "%s: 無法將檔案æè¿°ç¬¦æŒ‡æ´¾çµ¦è®Šæ•¸" -#: redir.c:582 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" -msgstr "" +msgstr "æ²’æœ‰ç¶²è·¯æ™‚ä¸æ”¯æ´ /dev/(tcp|udp)/host/port" -#: redir.c:861 redir.c:973 redir.c:1034 redir.c:1199 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" -msgstr "" +msgstr "é‡å®šå‘錯誤: 無法複製檔案æè¿°ç¬¦" -#: shell.c:339 +#: shell.c:347 msgid "could not find /tmp, please create!" -msgstr "" +msgstr "無法找到 /tmp ,請建立" -#: shell.c:343 +#: shell.c:351 msgid "/tmp must be a valid directory name" -msgstr "" +msgstr "/tmp 必須為有效的目錄å稱" -#: shell.c:890 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c:無效é¸é …" -#: shell.c:1682 +#: shell.c:1282 +#, fuzzy, c-format +msgid "cannot set uid to %d: effective uid %d" +msgstr "無法為檔案æè¿°ç¬¦ %d é‡ç½®ç„¡å»¶é²æ¨¡å¼" + +#: shell.c:1289 +#, fuzzy, c-format +msgid "cannot set gid to %d: effective gid %d" +msgstr "無法為檔案æè¿°ç¬¦ %d é‡ç½®ç„¡å»¶é²æ¨¡å¼" + +#: shell.c:1458 +msgid "cannot start debugger; debugging mode disabled" +msgstr "" + +#: shell.c:1566 +#, fuzzy, c-format +msgid "%s: Is a directory" +msgstr "%s: 是一個目錄" + +#: shell.c:1777 msgid "I have no name!" msgstr "我沒有åå­—ï¼" -#: shell.c:1827 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" -msgstr "" +msgstr "GNU bash,版本 %s-(%s)\n" -#: shell.c:1828 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -"用法:\t%s [GNU é•·é¸é …] [é¸é …] ...\n" -"\t%s [GNU é•·é¸é …] [é¸é …] script-file ...\n" +"用法:\t%s [GNU é•·é¸é …] [é¸é …] …\n" +"\t%s [GNU é•·é¸é …] [é¸é …] 指令稿檔案 …\n" -#: shell.c:1830 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU é•·é¸é …:\n" -#: shell.c:1834 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Shell é¸é …:\n" -#: shell.c:1835 -#, fuzzy +#: shell.c:1938 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" +msgstr "\t-irsD 或 -c <命令> 或 -O \t\t(僅é©åˆå‘¼å«)\n" -#: shell.c:1850 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o é¸é …\n" -#: shell.c:1856 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "輸入 `%s -c \"help set\"' 更多訊æ¯é—œæ–¼ shell é¸é …。\n" +msgstr "輸入「%s -c \"help set\"ã€æ›´å¤šé—œæ–¼ shell é¸é …的訊æ¯ã€‚\n" -#: shell.c:1857 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "輸入 `%s -c help' 更多訊æ¯é—œæ–¼å…§å»º shell 命令。\n" +msgstr "輸入「%s -c helpã€æ›´å¤šé—œæ–¼å…§å»º shell 命令的訊æ¯ã€‚\n" -#: shell.c:1858 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "使用 `bashbug' 命令報告臭蟲。\n" +msgstr "使用「bashbugã€å‘½ä»¤é€šå ±ç¨‹å¼éŒ¯èª¤ã€‚\n" -#: sig.c:691 +#: shell.c:1963 +#, c-format +msgid "bash home page: \n" +msgstr "" + +#: shell.c:1964 +#, c-format +msgid "General help using GNU software: \n" +msgstr "" + +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d:無效æ“作" #: siglist.c:48 msgid "Bogus signal" -msgstr "" +msgstr "å½è¨Šè™Ÿ" #: siglist.c:51 msgid "Hangup" -msgstr "" +msgstr "çµæŸé€šè©±" #: siglist.c:55 msgid "Interrupt" -msgstr "" +msgstr "中斷" #: siglist.c:59 msgid "Quit" -msgstr "" +msgstr "退出" #: siglist.c:63 msgid "Illegal instruction" -msgstr "" +msgstr "éžæ³•的指令" #: siglist.c:67 msgid "BPT trace/trap" -msgstr "" +msgstr "斷點追蹤/陷阱" #: siglist.c:75 msgid "ABORT instruction" -msgstr "" +msgstr "放棄指令" #: siglist.c:79 msgid "EMT instruction" -msgstr "" +msgstr "模擬器陷阱指令" #: siglist.c:83 msgid "Floating point exception" -msgstr "" +msgstr "浮點數異常" #: siglist.c:87 msgid "Killed" -msgstr "" +msgstr "å·²ç é™¤" #: siglist.c:91 -#, fuzzy msgid "Bus error" -msgstr "語法錯誤" +msgstr "åŒ¯æµæŽ’éŒ¯èª¤" #: siglist.c:95 msgid "Segmentation fault" -msgstr "" +msgstr "倿®µéŒ¯èª¤" #: siglist.c:99 msgid "Bad system call" -msgstr "" +msgstr "錯誤的系統呼å«" #: siglist.c:103 msgid "Broken pipe" -msgstr "" +msgstr "管é“中斷" #: siglist.c:107 msgid "Alarm clock" -msgstr "" +msgstr "鬧é˜" #: siglist.c:111 -#, fuzzy msgid "Terminated" -msgstr "有é™çš„" +msgstr "已終止" #: siglist.c:115 msgid "Urgent IO condition" -msgstr "" +msgstr "緊急 I/O ç‹€æ³" #: siglist.c:119 msgid "Stopped (signal)" -msgstr "" +msgstr "å·²åœæ­¢(訊號)" #: siglist.c:127 msgid "Continue" -msgstr "" +msgstr "繼續" #: siglist.c:135 msgid "Child death or stop" -msgstr "" +msgstr "å­è¡Œç¨‹å·²æ­»æˆ–è€…åœæ­¢" #: siglist.c:139 msgid "Stopped (tty input)" -msgstr "" +msgstr "å·²åœæ­¢(tty 輸入)" #: siglist.c:143 msgid "Stopped (tty output)" -msgstr "" +msgstr "å·²åœæ­¢(tty 輸出)" #: siglist.c:147 msgid "I/O ready" -msgstr "" +msgstr "I/O 就緒" #: siglist.c:151 msgid "CPU limit" -msgstr "" +msgstr "CPU é™åˆ¶" #: siglist.c:155 msgid "File limit" -msgstr "" +msgstr "檔案é™åˆ¶" #: siglist.c:159 msgid "Alarm (virtual)" -msgstr "" +msgstr "警報(虛擬)" #: siglist.c:163 msgid "Alarm (profile)" -msgstr "" +msgstr "警報(å´å¯«)" #: siglist.c:167 msgid "Window changed" -msgstr "" +msgstr "視窗已變更" #: siglist.c:171 msgid "Record lock" -msgstr "" +msgstr "記錄鎖" #: siglist.c:175 msgid "User signal 1" -msgstr "" +msgstr "使用者訊號 1" #: siglist.c:179 msgid "User signal 2" -msgstr "" +msgstr "使用者訊號 2" #: siglist.c:183 msgid "HFT input data pending" -msgstr "" +msgstr "HFT 待輸入資料" #: siglist.c:187 msgid "power failure imminent" -msgstr "" +msgstr "å³å°‡åœæ­¢é›»æº" #: siglist.c:191 msgid "system crash imminent" -msgstr "" +msgstr "系統å³å°‡å´©æ½°" #: siglist.c:195 msgid "migrate process to another CPU" -msgstr "" +msgstr "é·ç§»è¡Œç¨‹è‡³å¦ä¸€å€‹ CPU" #: siglist.c:199 msgid "programming error" -msgstr "" +msgstr "程å¼è¨­è¨ˆéŒ¯èª¤" #: siglist.c:203 msgid "HFT monitor mode granted" -msgstr "" +msgstr "已授予 HFT 監視模å¼" #: siglist.c:207 msgid "HFT monitor mode retracted" -msgstr "" +msgstr "已撤銷 HFT 監視模å¼" #: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "" +msgstr "å·²å®Œæˆ HFT è²éŸ³åºåˆ—" #: siglist.c:215 msgid "Information request" -msgstr "" +msgstr "資訊請求" #: siglist.c:223 msgid "Unknown Signal #" -msgstr "" +msgstr "䏿˜Žè¨Šè™Ÿ #" #: siglist.c:225 #, c-format msgid "Unknown Signal #%d" -msgstr "" +msgstr "䏿˜Žè¨Šè™Ÿ #%d" -#: subst.c:1362 subst.c:1520 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "" +msgstr "錯誤的替æ›: 在 %2$s 中沒有閉åˆçš„「%1$sã€" -#: subst.c:2847 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" -msgstr "" +msgstr "%s: 無法將串列指派給陣列æˆå“¡" -#: subst.c:5065 subst.c:5081 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" -msgstr "" +msgstr "無法為行程替æ›å»ºç«‹ç®¡é“" -#: subst.c:5113 +#: subst.c:5798 msgid "cannot make child for process substitution" -msgstr "" +msgstr "無法為行程替æ›å»ºç«‹å­è¡Œç¨‹" -#: subst.c:5158 +#: subst.c:5848 #, c-format msgid "cannot open named pipe %s for reading" -msgstr "" +msgstr "無法開啟命åç®¡é“ %s 進 readline-" -#: subst.c:5160 +#: subst.c:5850 #, c-format msgid "cannot open named pipe %s for writing" -msgstr "" +msgstr "無法開啟命åç®¡é“ %s 進行寫入" -#: subst.c:5178 +#: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "" +msgstr "無法將命åç®¡é“ %s åšç‚ºæª”案æè¿°ç¬¦ %d 複製" -#: subst.c:5376 +#: subst.c:5959 +#, fuzzy +msgid "command substitution: ignored null byte in input" +msgstr "錯誤的替æ›: 在 %s 中沒有閉åˆçš„「`ã€" + +#: subst.c:6083 msgid "cannot make pipe for command substitution" -msgstr "" +msgstr "無法為命令替æ›å»ºç«‹ç®¡é“" -#: subst.c:5414 +#: subst.c:6127 msgid "cannot make child for command substitution" -msgstr "" +msgstr "無法為命令替æ›å»ºç«‹å­è¡Œç¨‹" -#: subst.c:5433 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "" +msgstr "command_substitute: 無法將管é“複製為檔案æè¿°ç¬¦ 1" -#: subst.c:5837 subst.c:8050 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "" +msgstr "%s: 無效的引用變數å" -#: subst.c:6048 -#, c-format -msgid "%s: parameter null or not set" -msgstr "" - -#: subst.c:6320 subst.c:6335 -#, c-format -msgid "%s: substring expression < 0" -msgstr "" - -#: subst.c:7506 +#: subst.c:6666 subst.c:8351 subst.c:8371 #, c-format msgid "%s: bad substitution" -msgstr "" +msgstr "%s: 錯誤的替æ›" -#: subst.c:7583 +#: subst.c:6800 +#, fuzzy, c-format +msgid "%s: invalid indirect expansion" +msgstr "%s: 無效的列數" + +#: subst.c:6807 +#, fuzzy, c-format +msgid "%s: invalid variable name" +msgstr "「%sã€: 無效的別å" + +#: subst.c:6854 +#, c-format +msgid "%s: parameter null or not set" +msgstr "%s: åƒæ•¸ç‚ºç©ºæˆ–未設定" + +#: subst.c:7089 subst.c:7104 +#, c-format +msgid "%s: substring expression < 0" +msgstr "%s: å­ä¸²è¡¨ç¤ºå¼ < 0" + +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" -msgstr "" +msgstr "$%s: 無法如此指派" -#: subst.c:7917 +#: subst.c:8802 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -msgstr "" +msgstr "未來版本的 shell æœƒå¼·åˆ¶ä»¥ç®—è¡“æ›¿æ›æ±‚值" -#: subst.c:8421 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "" +msgstr "錯誤的替æ›: 在 %s 中沒有閉åˆçš„「`ã€" -#: subst.c:9322 +#: subst.c:10298 #, c-format msgid "no match: %s" -msgstr "" +msgstr "無匹é…: %s" #: test.c:147 msgid "argument expected" -msgstr "" +msgstr "需è¦å¼•數" #: test.c:156 #, c-format msgid "%s: integer expression expected" -msgstr "" +msgstr "%s: éœ€è¦æ•´æ•¸è¡¨ç¤ºå¼" -#: test.c:264 +#: test.c:265 msgid "`)' expected" -msgstr "" +msgstr "需è¦ã€Œ)ã€" -#: test.c:266 +#: test.c:267 #, c-format msgid "`)' expected, found %s" -msgstr "" +msgstr "需è¦ã€Œ)ã€ï¼Œå¾—到 %s" -#: test.c:281 test.c:742 test.c:745 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" -msgstr "" +msgstr "%s: 需è¦ä¸€å…ƒè¡¨ç¤ºå¼" -#: test.c:468 test.c:785 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" -msgstr "" +msgstr "%s: 需è¦äºŒå…ƒè¡¨ç¤ºå¼" -#: test.c:860 +#: test.c:869 msgid "missing `]'" -msgstr "" +msgstr "缺少「]ã€" -#: trap.c:217 +#: trap.c:224 msgid "invalid signal number" -msgstr "無效信號數" +msgstr "無效信號數字" -#: trap.c:371 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" -msgstr "" +msgstr "run_pending_traps: trap_list[%d] 中的錯誤值: %p" -#: trap.c:375 +#: trap.c:391 #, 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" +msgstr "run_pending_traps: ä¿¡è™Ÿè™•ç†æ˜¯ SIG_DFL,resending %d (%s) to myself" -#: trap.c:428 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" -msgstr "trap_handler:壞的信號 %d" +msgstr "trap_handler:ä¸ç•¶çš„信號 %d" -#: variables.c:382 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" -msgstr "錯誤,輸入的函數定義為 `%s'" +msgstr "錯誤,輸入的函數定義為「%sã€" -#: variables.c:780 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" -msgstr "" +msgstr "shell 層次 (%d) 太高,é‡ç½®ç‚º 1" -#: variables.c:1865 -#, c-format -msgid "%s: circular name reference" -msgstr "" - -#: variables.c:2228 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" -msgstr "" +msgstr "make_local_variable: ç•¶å‰ä½œç”¨åŸŸä¸­æ²’有函數語境" -#: variables.c:2247 -#, fuzzy, c-format +#: variables.c:2432 +#, c-format msgid "%s: variable may not be assigned value" -msgstr "%s:åªè®€è®Šæ•¸" +msgstr "%s: 變數ä¸å¯æŒ‡æ´¾å€¼" -#: variables.c:3646 +#: variables.c:3043 +#, fuzzy, c-format +msgid "%s: assigning integer to name reference" +msgstr "%s: 無效的引用變數å" + +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" -msgstr "" +msgstr "all_local_variables: ç•¶å‰ä½œç”¨åŸŸä¸­æ²’有函數語境" -#: variables.c:3891 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" -msgstr "" +msgstr "%s 有空的 exportstr" -#: variables.c:3896 variables.c:3905 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" -msgstr "" +msgstr "%2$s çš„ exportstr 中有無效的字元 %1$d" -#: variables.c:3911 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" -msgstr "" +msgstr "%s çš„ exportstr 中沒有「=ã€" -#: variables.c:4344 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "" +msgstr "pop_var_context: shell_variables çš„å‰ç«¯ä¸æ˜¯å‡½æ•¸èªžå¢ƒ" -#: variables.c:4357 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" -msgstr "" +msgstr "pop_var_context: 沒有 global_variables 語境" -#: variables.c:4431 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "" +msgstr "pop_scope: shell_variables çš„å‰ç«¯ä¸æ˜¯è‡¨æ™‚環境作用域" -#: variables.c:5257 -#, fuzzy, c-format +#: variables.c:5619 +#, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s:ä¸èƒ½è®€å–: %s" +msgstr "%s: %s: 無法åšç‚ºæª”案開啟" -#: variables.c:5262 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "" +msgstr "%s: %s: 追蹤檔案æè¿°ç¬¦çš„值無效" -#: variables.c:5307 -#, fuzzy, c-format +#: variables.c:5669 +#, c-format msgid "%s: %s: compatibility value out of range" -msgstr "%s:%s 超出範åœ" +msgstr "%s: %s: 相容版本數值超出範åœ" -#: version.c:46 -msgid "Copyright (C) 2013 Free Software Foundation, Inc." -msgstr "" +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2016 Free Software Foundation, Inc." +msgstr "著作權所有 (C) 2013 自由軟體基金會" #: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" +"許å¯è­‰ GPLv3+: GNU GPL 許å¯è­‰ç¬¬ä¸‰ç‰ˆæˆ–者更新版本 \n" #: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" -msgstr "" +msgstr "GNU bash,版本 %s (%s)\n" #: version.c:91 version2.c:91 msgid "This is free software; you are free to change and redistribute it." -msgstr "" +msgstr "本軟體是自由軟體,您å¯ä»¥è‡ªç”±åœ°æ›´æ”¹å’Œé‡æ–°ç™¼å¸ƒã€‚" #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." -msgstr "" - -#: version2.c:46 -msgid "Copyright (C) 2012 Free Software Foundation, Inc." -msgstr "" +msgstr "在法律許å¯çš„æƒ…æ³ä¸‹ç‰¹æ­¤æ˜Žç¤ºï¼Œæœ¬è»Ÿé«”ä¸æä¾›ä»»ä½•æ“”ä¿ã€‚" #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "" +msgstr "%s: ç„¡æ³•åˆ†é… %lu ä½å…ƒçµ„ (å·²åˆ†é… %lu ä½å…ƒçµ„)" #: xmalloc.c:93 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "%s:ä¸èƒ½è®€å–: %s" +msgstr "%s: ç„¡æ³•åˆ†é… %lu ä½å…ƒçµ„" #: xmalloc.c:163 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "" +msgstr "%s: %s:%d: ç„¡æ³•åˆ†é… %lu ä½å…ƒçµ„ (å·²åˆ†é… %lu ä½å…ƒçµ„)" #: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "" +msgstr "%s: %s:%d: ç„¡æ³•åˆ†é… %lu ä½å…ƒçµ„" -#: builtins.c:43 +#: builtins.c:45 msgid "alias [-p] [name[=value] ... ]" -msgstr "" +msgstr "alias [-p] [å稱[=值] … ]" -#: builtins.c:47 +#: builtins.c:49 msgid "unalias [-a] name [name ...]" -msgstr "" +msgstr "unalias [-a] å稱 [å稱 …]" -#: builtins.c:51 +#: builtins.c:53 msgid "" "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" "x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" - -#: builtins.c:54 -msgid "break [n]" -msgstr "" +"bind [-lpvsPSVX] [-m éµå°æ˜ ] [-f 檔å] [-q å稱] [-u å稱] [-r éµåºåˆ—] [-x éµ" +"åºåˆ—:shell- 命令] [éµåºåˆ—:readline- 函數 或 readline- 命令]" #: builtins.c:56 -msgid "continue [n]" -msgstr "" +msgid "break [n]" +msgstr "break [n]" #: builtins.c:58 +msgid "continue [n]" +msgstr "continue [n]" + +#: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "" +msgstr "builtin [shell 內建 [引數 …]]" -#: builtins.c:61 +#: builtins.c:63 msgid "caller [expr]" -msgstr "" - -#: builtins.c:64 -msgid "cd [-L|[-P [-e]] [-@]] [dir]" -msgstr "" +msgstr "caller [表示å¼]" #: builtins.c:66 -msgid "pwd [-LP]" -msgstr "" +msgid "cd [-L|[-P [-e]] [-@]] [dir]" +msgstr "cd [-L|[-P [-e]] [-@]] [目錄]" #: builtins.c:68 -msgid ":" -msgstr "" - -#: builtins.c:70 -msgid "true" -msgstr "" - -#: builtins.c:72 -msgid "false" -msgstr "" - -#: builtins.c:74 -msgid "command [-pVv] command [arg ...]" -msgstr "" +msgid "pwd [-LP]" +msgstr "pwd [-LP]" #: builtins.c:76 -msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" -msgstr "" +msgid "command [-pVv] command [arg ...]" +msgstr "command [-pVv] 命令 [引數 …]" #: builtins.c:78 -msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [å稱[=值] …]" #: builtins.c:80 +#, fuzzy +msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..." +msgstr "typeset [-aAfFgilrtux] [-p] å稱[=值] …" + +#: builtins.c:82 msgid "local [option] name[=value] ..." -msgstr "" +msgstr "local [option] å稱[=值] …" -#: builtins.c:83 +#: builtins.c:85 msgid "echo [-neE] [arg ...]" -msgstr "" +msgstr "echo [-neE] [引數 …]" -#: builtins.c:87 +#: builtins.c:89 msgid "echo [-n] [arg ...]" -msgstr "" - -#: builtins.c:90 -msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "" +msgstr "echo [-n] [引數 …]" #: builtins.c:92 -msgid "eval [arg ...]" -msgstr "" +msgid "enable [-a] [-dnps] [-f filename] [name ...]" +msgstr "enable [-a] [-dnps] [-f 檔å] [å稱 …]" #: builtins.c:94 -msgid "getopts optstring name [arg]" -msgstr "" +msgid "eval [arg ...]" +msgstr "eval [引數 …]" #: builtins.c:96 -msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "" +msgid "getopts optstring name [arg]" +msgstr "getopts é¸é …字串 å稱 [引數]" #: builtins.c:98 -msgid "exit [n]" -msgstr "" +msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" +msgstr "exec [-cl] [-a å稱] [命令 [引數 …]] [é‡å®šå‘ …]" #: builtins.c:100 +msgid "exit [n]" +msgstr "exit [n]" + +#: builtins.c:102 msgid "logout [n]" -msgstr "" +msgstr "logout [n]" -#: builtins.c:103 +#: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "" +msgstr "fc [-e 編輯器å] [-lnr] [èµ·å§‹] [終çµ] 或 fc -s [模å¼=替æ›ä¸²] [命令]" -#: builtins.c:107 +#: builtins.c:109 msgid "fg [job_spec]" -msgstr "" +msgstr "fg [å·¥ä½œè¦æ ¼]" -#: builtins.c:111 +#: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "" +msgstr "bg [å·¥ä½œè¦æ ¼ …]" -#: builtins.c:114 +#: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" -msgstr "" +msgstr "hash [-lr] [-p 路徑å] [-dt] [å稱 …]" -#: builtins.c:117 +#: builtins.c:119 msgid "help [-dms] [pattern ...]" -msgstr "" +msgstr "help [-dms] [æ¨¡å¼ â€¦]" -#: builtins.c:121 +#: builtins.c:123 msgid "" "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " "[arg...]" msgstr "" +"history [-c] [-d åç§»é‡] [n] 或 history -anrw [檔å] 或 history -ps 引數 [åƒ" +"數…]" -#: builtins.c:125 +#: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "" +msgstr "jobs [-lnprs] [å·¥ä½œè¦æ ¼ …] 或 jobs -x 命令 [引數]" -#: builtins.c:129 -msgid "disown [-h] [-ar] [jobspec ...]" -msgstr "" +#: builtins.c:131 +#, fuzzy +msgid "disown [-h] [-ar] [jobspec ... | pid ...]" +msgstr "disown [-h] [-ar] [å·¥ä½œè¦æ ¼ …]" -#: builtins.c:132 +#: builtins.c:134 msgid "" "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " "[sigspec]" msgstr "" - -#: builtins.c:134 -msgid "let arg [arg ...]" -msgstr "" +"kill [-s è¨Šè™Ÿè¦æ ¼ | -n 訊號編號 | - è¨Šè™Ÿè¦æ ¼] 行程識別號 | å·¥ä½œè¦æ ¼ … 或 " +"kill -l [è¨Šè™Ÿè¦æ ¼]" #: builtins.c:136 +msgid "let arg [arg ...]" +msgstr "let 引數 [引數 …]" + +#: builtins.c:138 msgid "" "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " "prompt] [-t timeout] [-u fd] [name ...]" msgstr "" - -#: builtins.c:138 -msgid "return [n]" -msgstr "" +"read [-ers] [-a 陣列] [-d 分隔符] [-i ç·©è¡å€æ–‡å­—] [-n 讀å–字元數] [-N 讀å–å­—" +"符數] [-p æç¤ºç¬¦] [-t 逾時] [-u 檔案æè¿°ç¬¦] [å稱 …]" #: builtins.c:140 -msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "" +msgid "return [n]" +msgstr "return [n]" #: builtins.c:142 -msgid "unset [-f] [-v] [-n] [name ...]" -msgstr "" +msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" +msgstr "set [--abefhkmnptuvxBCHP] [-o é¸é …å] [--] [引數 …]" #: builtins.c:144 -msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "" +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [å稱 …]" #: builtins.c:146 -msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "" +msgid "export [-fn] [name[=value] ...] or export -p" +msgstr "export [-fn] [å稱[=值] …] 或 export -p" #: builtins.c:148 -msgid "shift [n]" -msgstr "" +msgid "readonly [-aAf] [name[=value] ...] or readonly -p" +msgstr "readonly [-aAf] [å稱[=值] …] 或 readonly -p" #: builtins.c:150 -msgid "source filename [arguments]" -msgstr "" +msgid "shift [n]" +msgstr "shift [n]" #: builtins.c:152 -#, fuzzy +msgid "source filename [arguments]" +msgstr "source 檔å [引數]" + +#: builtins.c:154 msgid ". filename [arguments]" -msgstr "太多引數" +msgstr "。檔å [引數]" -#: builtins.c:155 +#: builtins.c:157 msgid "suspend [-f]" -msgstr "" - -#: builtins.c:158 -msgid "test [expr]" -msgstr "" +msgstr "suspend [-f]" #: builtins.c:160 -msgid "[ arg... ]" -msgstr "" +msgid "test [expr]" +msgstr "test [表示å¼]" #: builtins.c:162 -msgid "times" -msgstr "" - -#: builtins.c:164 -msgid "trap [-lp] [[arg] signal_spec ...]" -msgstr "" +msgid "[ arg... ]" +msgstr "[ 引數… ]" #: builtins.c:166 +msgid "trap [-lp] [[arg] signal_spec ...]" +msgstr "trap [-lp] [[引數] è¨Šè™Ÿè¦æ ¼ …]" + +#: builtins.c:168 msgid "type [-afptP] name [name ...]" -msgstr "" +msgstr "type [-afptP] å稱 [å稱 …]" -#: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "" +#: builtins.c:171 +#, fuzzy +msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]" +msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [é™åˆ¶]" -#: builtins.c:172 +#: builtins.c:174 msgid "umask [-p] [-S] [mode]" -msgstr "" +msgstr "umask [-p] [-S] [模å¼]" -#: builtins.c:175 +#: builtins.c:177 msgid "wait [-n] [id ...]" -msgstr "" +msgstr "wait [-n] [編號 …]" -#: builtins.c:179 +#: builtins.c:181 msgid "wait [pid ...]" -msgstr "" - -#: builtins.c:182 -msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "" +msgstr "wait [行程識別號 …]" #: builtins.c:184 -msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" -msgstr "" +msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" +msgstr "for å稱 [in 字詞 … ] ; do 命令 ; done" #: builtins.c:186 -msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "" +msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" +msgstr "for (( 表示å¼1; 表示å¼2; 表示å¼3 )); do 命令 ; done" #: builtins.c:188 -msgid "time [-p] pipeline" -msgstr "" +msgid "select NAME [in WORDS ... ;] do COMMANDS; done" +msgstr "select NAME [in 字詞 … ;] do 命令 ; done" #: builtins.c:190 -msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "" +msgid "time [-p] pipeline" +msgstr "time [-p] 管é“" #: builtins.c:192 +msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" +msgstr "case 詞 in [æ¨¡å¼ [| 模å¼]…) 命令 ;;]… esac" + +#: builtins.c:194 msgid "" "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " "COMMANDS; ] fi" -msgstr "" - -#: builtins.c:194 -msgid "while COMMANDS; do COMMANDS; done" -msgstr "" +msgstr "if 命令 ; then 命令 ; [ elif 命令 ; then 命令 ; ]… [ else 命令 ; ] fi" #: builtins.c:196 -msgid "until COMMANDS; do COMMANDS; done" -msgstr "" +msgid "while COMMANDS; do COMMANDS; done" +msgstr "while 命令 ; do 命令 ; done" #: builtins.c:198 -msgid "coproc [NAME] command [redirections]" -msgstr "" +msgid "until COMMANDS; do COMMANDS; done" +msgstr "until 命令 ; do 命令 ; done" #: builtins.c:200 -msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "" +msgid "coproc [NAME] command [redirections]" +msgstr "coproc [å稱] 命令 [é‡å®šå‘]" #: builtins.c:202 -msgid "{ COMMANDS ; }" -msgstr "" +msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" +msgstr "function å稱 { 命令 ; } 或 name () { 命令 ; }" #: builtins.c:204 -msgid "job_spec [&]" -msgstr "" +msgid "{ COMMANDS ; }" +msgstr "{ 命令 ; }" #: builtins.c:206 -msgid "(( expression ))" -msgstr "" +msgid "job_spec [&]" +msgstr "job_spec [&]" #: builtins.c:208 -msgid "[[ expression ]]" -msgstr "" +msgid "(( expression ))" +msgstr "(( è¡¨ç¤ºå¼ ))" #: builtins.c:210 +msgid "[[ expression ]]" +msgstr "[[ è¡¨ç¤ºå¼ ]]" + +#: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "" +msgstr "variables - 一些 shell 變數的å稱和å«ç¾©" -#: builtins.c:213 +#: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" -msgstr "" +msgstr "pushd [-n] [+N | -N | 目錄]" -#: builtins.c:217 +#: builtins.c:219 msgid "popd [-n] [+N | -N]" -msgstr "" +msgstr "popd [-n] [+N | -N]" -#: builtins.c:221 +#: builtins.c:223 msgid "dirs [-clpv] [+N] [-N]" -msgstr "" - -#: builtins.c:224 -msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "" +msgstr "dirs [-clpv] [+N] [-N]" #: builtins.c:226 -msgid "printf [-v var] format [arguments]" -msgstr "" +msgid "shopt [-pqsu] [-o] [optname ...]" +msgstr "shopt [-pqsu] [-o] [é¸é …å …]" -#: builtins.c:229 +#: builtins.c:228 +msgid "printf [-v var] format [arguments]" +msgstr "printf [-v var] æ ¼å¼ [引數]" + +#: builtins.c:231 msgid "" "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-" "W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " "suffix] [name ...]" msgstr "" +"complete [-abcdefgjksuv] [-pr] [-DE] [-o é¸é …] [-A 動作] [-G 全域模å¼] [-W 詞" +"語列表] [-F 函數] [-C 命令] [-X éŽæ¿¾æ¨¡å¼] [-P 字首] [-S å­—å°¾] [å稱 …]" -#: builtins.c:233 +#: builtins.c:235 +#, fuzzy msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " "[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" +"compgen [-abcdefgjksuv] [-o é¸é …] [-A 動作] [-G 全域模å¼] [-W 字詞列表] [-" +"F 函數] [-C 命令] [-X éŽæ¿¾æ¨¡å¼] [-P 字首] [-S å­—å°¾] [字詞]" -#: builtins.c:237 +#: builtins.c:239 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]" -msgstr "" +msgstr "compopt [-o|+o é¸é …] [-DE] [å稱 …]" #: builtins.c:242 +#, fuzzy +msgid "" +"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " +"callback] [-c quantum] [array]" +msgstr "" +"mapfile [-n 計數] [-O èµ·å§‹åºè™Ÿ] [-s 計數] [-t] [-u fd] [-C 回呼] [-c 定é‡] " +"[陣列]" + +#: builtins.c:244 msgid "" "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " "quantum] [array]" msgstr "" +"readarray [-n 計數] [-O èµ·å§‹åºè™Ÿ] [-s 計數] [-t] [-u fd] [-C 回呼] [-c 定é‡] " +"[陣列]" -#: builtins.c:254 +#: builtins.c:256 #, fuzzy msgid "" "Define or display aliases.\n" @@ -2301,31 +2499,48 @@ msgid "" " alias substitution when the alias is expanded.\n" " \n" " Options:\n" -" -p\tPrint all defined aliases in a reusable format\n" +" -p\tprint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" " alias returns true unless a NAME is supplied for which no alias has " "been\n" " defined." msgstr "" -"`alias' with no arguments or with the -p option prints the list\n" -" of aliases in the form alias NAME=VALUE on standard output.\n" -" Otherwise, an alias is defined for each NAME whose VALUE is given.\n" -" A trailing space in VALUE causes the next word to be checked for\n" -" alias substitution when the alias is expanded. Alias returns\n" -" true unless a NAME is given for which no alias has been defined." +"定義或顯示別å。\n" +" \n" +" ä¸å¸¶å¼•數時,「aliasã€ä»¥å¯é‡ç”¨çš„æ ¼å¼\n" +" 「alias å稱=值ã€åœ¨æ¨™æº–輸出è£ç½®ä¸Šå°å‡ºåˆ¥å列表。\n" +" \n" +" å¦å‰‡ï¼Œå°æ–¼æ¯å€‹çµ¦å®šå€¼çš„å稱定義一個別å。\n" +" 值末尾的空格會使下一個字詞被檢測\n" +" åšç‚ºåˆ¥å替æ›å±•開。\n" +" \n" +" é¸é …:\n" +" -p\t以å¯é‡ç”¨çš„æ ¼å¼å°å‡ºæ‰€æœ‰çš„已定義別å\n" +" \n" +" 退出狀態:\n" +" 除éžä¸€å€‹æ²’有定義的å字被åšç‚ºå¼•數æä¾›ï¼Œå¦å‰‡ alias \n" +" 回傳值為真。" -#: builtins.c:276 +#: builtins.c:278 +#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" " Options:\n" -" -a\tremove all alias definitions.\n" +" -a\tremove all alias definitions\n" " \n" " Return success unless a NAME is not an existing alias." msgstr "" +"從別å定義列表中刪除æ¯ä¸€å€‹ NAME。\n" +" \n" +" é¸é …:\n" +" -a\t刪除所有的別å定義。\n" +" \n" +" 回傳æˆåŠŸï¼Œé™¤éž NAME 䏿˜¯ä¸€å€‹å·²å­˜åœ¨çš„別å。" -#: builtins.c:289 +#: builtins.c:291 +#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2359,14 +2574,45 @@ msgid "" " -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" +" -X List key sequences bound with -x and associated " +"commands\n" " in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" +"設定 Readline éµç¹«çµå’Œè®Šæ•¸ã€‚\n" +" \n" +" 繫çµä¸€å€‹éµåºåˆ—到一個 Readline 函數或者巨集,或者設定一個\n" +" Readline 變數。éžé¸é …引數的語法和 ~/.inputrc 檔案中的等\n" +" åŒï¼Œä½†æ˜¯å¿…é ˆåšç‚ºä¸€å€‹å¼•數被傳éžï¼Œ\n" +" 例如,bind '\"\\C-x\\C-r\": re-read-init-file'。\n" +" \n" +" é¸é …:\n" +" -m éµå°æ˜  在此命令執行éŽç¨‹ä¸­ä½¿ç”¨æŒ‡å®šçš„éµå°æ˜ ã€‚\n" +" å¯è¢«æŽ¥å—çš„éµå°æ˜ å字有 emacsã€emacs-standardã€emacs-" +"metaã€\n" +" emacs-ctlxã€viã€vi-moveã€vi-commandã€å’Œ vi-insert。\n" +" -l 列出函數å稱。\n" +" -P 列出函數å稱和繫çµã€‚\n" +" -p 以å¯ä»¥é‡æ–°ç”¨ä½œè¼¸å…¥çš„æ ¼å¼åˆ—出函數å稱和繫çµã€‚\n" +" -S 列出å¯ä»¥å•Ÿå‹•巨集的éµåºåˆ—以åŠå®ƒå€‘的值\n" +" -s 以å¯ä»¥é‡æ–°ç”¨ä½œè¼¸å…¥çš„æ ¼å¼åˆ—出å¯ä»¥å•Ÿå‹•巨集的éµä»¥åŠå®ƒå€‘çš„" +"值。\n" +" -V 列出變數å稱和它們的值\n" +" -v 以å¯ä»¥é‡æ–°ç”¨ä½œè¼¸å…¥çš„æ ¼å¼åˆ—出變數的å稱和它們的值\n" +" -q å‡½æ•¸å æŸ¥è©¢æŒ‡å®šçš„函數å¯ä»¥ç”±å“ªäº›éµå•Ÿå‹•。\n" +" -u 函數å åç¹«çµæ‰€æœ‰ç¹«çµè‡³æŒ‡å®šå‡½æ•¸çš„éµã€‚\n" +" -r éµåºåˆ— å–æ¶ˆæŒ‡å®šéµåºåˆ—的繫çµã€‚\n" +" -f 檔å 從指定檔案中讀å–éµç¹«çµã€‚\n" +" -x éµåºåˆ—:shell 命令\t當指定的éµåºåˆ—被輸入時,執行指定的 shell 命" +"令。\n" +" -X 以å¯è¢«é‡ç”¨çš„å½¢å¼åˆ—出用 -x 繫çµçš„éµåºåˆ—和命令。\n" +" \n" +" 退出狀態:\n" +" 除éžä½¿ç”¨äº†ç„¡æ³•辨èªçš„é¸é …或者錯誤發生,å¦å‰‡å›žå‚³ 0。" -#: builtins.c:328 +#: builtins.c:330 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2376,8 +2622,15 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"退出 forã€while 或 until 迴圈\n" +" \n" +" 退出一個 FORã€WHILE 或 UNTIL 迴圈。如果指定了 N,則跳出 N é‡\n" +" 迴圈\n" +" \n" +" 退出狀態:\n" +" 退出狀態為 0 é™¤éž N ä¸å¤§æ–¼æˆ–等於 1。" -#: builtins.c:340 +#: builtins.c:342 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2387,8 +2640,15 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" +"繼續 forã€while 或 until 迴圈。\n" +" \n" +" ç¹¼çºŒç•¶å‰ FORã€WHILE 或 UNTIL 迴圈的下一步。\n" +" 如果指定了 N, 則繼續當å‰çš„第 N é‡è¿´åœˆã€‚\n" +" \n" +" 退出狀態:\n" +" 退出狀態為 0 é™¤éž N ä¸å¤§æ–¼æˆ–等於 1。" -#: builtins.c:352 +#: builtins.c:354 msgid "" "Execute shell builtins.\n" " \n" @@ -2401,8 +2661,18 @@ msgid "" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." msgstr "" +"執行 shell 內建。\n" +" \n" +" 帶引數 ARGs 執行 SHELL-BUILTIN 內建,並且ä¸åšå‘½ä»¤æŸ¥è©¢\n" +" 在希望以 shell 函數的形å¼ä¾†é‡æ–°å¯¦ç¾ shell 內建,\n" +" 並且希望在函數之內執行該 shell 內建的情æ³ä¸‹æœ‰ç”¨è™•。\n" +" \n" +" 退出狀態:\n" +" 以 SHELL-BUILTIN 內建的退出狀態為準,或者如果 SHELL-BUILTIN 䏿˜¯ä¸€å€‹ " +"shell 內建時\n" +" 為å‡ã€‚。" -#: builtins.c:367 +#: builtins.c:369 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2417,8 +2687,21 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" +"回傳當å‰å­å‘¼å«çš„語境。\n" +" \n" +" ä¸å¸¶æœ‰ EXPR 時,回傳「$line $filenameã€ã€‚帶有 EXPR 時,回傳\n" +" 「$line $subroutine $filenameã€ï¼›é€™å€‹é¡å¤–的資訊å¯ä»¥è¢«ç”¨æ–¼æä¾›\n" +" 堆疊追蹤。\n" +" \n" +" EXPR 的值顯示了到當å‰å‘¼å«æ¡†æ ¼éœ€è¦å›žåŽ»å¤šå°‘å€‹å‘¼å«æ¡†æ ¼ï¼›é ‚部框格\n" +" 是第 0 框格。\n" +" \n" +" 退出狀態:\n" +" é™¤éž shell ä¸åœ¨åŸ·è¡Œä¸€å€‹ shell 函數或者 EXPR 無效,å¦å‰‡å›žå‚³çµ\n" +" 果為 0。" -#: builtins.c:385 +#: builtins.c:387 +#, fuzzy msgid "" "Change the shell working directory.\n" " \n" @@ -2441,16 +2724,16 @@ msgid "" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" -" -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" -" -e\tif the -P option is supplied, and the current working directory\n" -" \tcannot be determined successfully, exit with a non-zero status\n" -" -@ on systems that support it, present a file with extended " -"attributes\n" -" as a directory containing the file attributes\n" +" -L\tforce symbolic links to be followed: resolve symbolic\n" +" \t\tlinks in DIR after processing instances of `..'\n" +" -P\tuse the physical directory structure without following\n" +" \t\tsymbolic links: resolve symbolic links in DIR before\n" +" \t\tprocessing instances of `..'\n" +" -e\tif the -P option is supplied, and the current working\n" +" \t\tdirectory cannot be determined successfully, exit with\n" +" \t\ta non-zero status\n" +" -@\ton systems that support it, present a file with extended\n" +" \t\tattributes as a directory containing the file attributes\n" " \n" " The default is to follow symbolic links, as if `-L' were specified.\n" " `..' is processed by removing the immediately previous pathname " @@ -2462,14 +2745,44 @@ msgid "" "when\n" " -P is used; non-zero otherwise." msgstr "" +"變更 shell 工作目錄。\n" +" \n" +" 變更當å‰ç›®éŒ„至 DIR 目錄。é è¨­çš„ DIR 目錄是 shell 變數 HOME\n" +" 的值。\n" +" \n" +" 變數 CDPATH å®šç¾©äº†å«æœ‰ DIR 的目錄æœå°‹è·¯å¾‘,其中ä¸åŒçš„目錄å稱由冒號 (:)分" +"隔。\n" +" 一個空的目錄å稱表示當å‰ç›®éŒ„。如果è¦åˆ‡æ›åˆ°çš„ DIR 由斜線 (/) 開頭,則 " +"CDPATH\n" +" è®Šæ•¸ä¸æœƒè¢«ä½¿ç”¨ã€‚\n" +" \n" +" 如果路徑找ä¸åˆ°ï¼Œä¸¦ä¸” shell é¸é …「cdable_varsã€è¢«è¨­å®šï¼Œå‰‡å¼•數詞被å‡å®šç‚ºä¸€" +"個\n" +" 變數åã€‚å¦‚æžœè©²è®Šæ•¸æœ‰å€¼ï¼Œå‰‡å®ƒçš„å€¼è¢«ç•¶åš DIR 目錄。\n" +" \n" +" é¸é …:\n" +" -L\t強制跟隨符號éˆçµ: 在處ç†ã€Œ..ã€ä¹‹å¾Œè§£æž DIR 中的符號éˆçµã€‚\n" +" -P\tä½¿ç”¨å¯¦é«”ç›®éŒ„çµæ§‹è€Œä¸è·Ÿéš¨ç¬¦è™Ÿéˆçµ: 在處ç†ã€Œ..ã€ä¹‹å‰è§£æž DIR 中的符" +"號éˆçµã€‚\n" +" -e\t如果使用了 -P 引數,但ä¸èƒ½æˆåŠŸç¢ºå®šç•¶å‰å·¥ä½œç›®éŒ„時,回傳éžé›¶çš„回傳" +"值。\n" +" -@\tåœ¨æ”¯æ´æ“´å±•å±¬æ€§çš„ç³»çµ±ä¸Šï¼Œå°‡ä¸€å€‹æœ‰é€™äº›å±¬æ€§çš„æª”æ¡ˆç•¶åšæœ‰æª”案屬性的目" +"錄。\n" +" \n" +" é è¨­æƒ…æ³ä¸‹è·Ÿéš¨ç¬¦è™Ÿéˆçµï¼Œå¦‚åŒæŒ‡å®šã€Œ-Lã€ã€‚\n" +" 「..ã€ä½¿ç”¨ç§»é™¤å‘å‰ç›¸é„°ç›®éŒ„åæˆå“¡ç›´åˆ° DIR 開始或一個斜線的方å¼è™•ç†ã€‚\n" +" \n" +" 退出狀態:\n" +" 如果目錄變更,或在使用 -P é¸é …時 $PWD 修改æˆåŠŸæ™‚å›žå‚³ 0,å¦å‰‡éžé›¶ã€‚" -#: builtins.c:422 +#: builtins.c:425 +#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" " Options:\n" " -L\tprint the value of $PWD if it names the current working\n" -" \tdirectory\n" +" \t\tdirectory\n" " -P\tprint the physical directory, without any symbolic links\n" " \n" " By default, `pwd' behaves as if `-L' were specified.\n" @@ -2478,8 +2791,18 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" +"å°å‡ºç•¶å‰å·¥ä½œç›®éŒ„çš„å字。\n" +" \n" +" é¸é …:\n" +" -L\tå°å‡º $PWD 變數的值,如果它包å«äº†ç•¶å‰çš„工作目錄\n" +" -P\tå°å‡ºç•¶å‰çš„實體路徑,ä¸å¸¶æœ‰ä»»ä½•的符號éˆçµ\n" +" \n" +" é è¨­æƒ…æ³ä¸‹ï¼Œã€Œpwdã€çš„行為和帶「-Lã€é¸é …一致\n" +" \n" +" 退出狀態:\n" +" 除éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者當å‰ç›®éŒ„ä¸å¯è®€ï¼Œå¦å‰‡å›žå‚³ç‹€æ…‹ç‚º 0。" -#: builtins.c:439 +#: builtins.c:442 msgid "" "Null command.\n" " \n" @@ -2488,24 +2811,39 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"空的命令。\n" +" \n" +" 沒有效果; 此命令ä¸åšä»»ä½•æ“作。\n" +" \n" +" 退出狀態:\n" +" 一律æˆåŠŸã€‚" -#: builtins.c:450 +#: builtins.c:453 msgid "" "Return a successful result.\n" " \n" " Exit Status:\n" " Always succeeds." msgstr "" +"回傳一個æˆåŠŸçµæžœã€‚\n" +" \n" +" 退出狀態:\n" +" 一律æˆåŠŸã€‚" -#: builtins.c:459 +#: builtins.c:462 msgid "" "Return an unsuccessful result.\n" " \n" " Exit Status:\n" " Always fails." msgstr "" +"å›žå‚³ä¸€å€‹ä¸æˆåŠŸçš„çµæžœã€‚\n" +" \n" +" 退出狀態:\n" +" 一律失敗。" -#: builtins.c:468 +#: builtins.c:471 +#, fuzzy msgid "" "Execute a simple command or display information about commands.\n" " \n" @@ -2515,16 +2853,30 @@ msgid "" " on disk when a function with the same name exists.\n" " \n" " Options:\n" -" -p\tuse a default value for PATH that is guaranteed to find all of\n" -" \tthe standard utilities\n" -" -v\tprint a description of COMMAND similar to the `type' builtin\n" -" -V\tprint a more verbose description of each COMMAND\n" +" -p use a default value for PATH that is guaranteed to find all of\n" +" the standard utilities\n" +" -v print a description of COMMAND similar to the `type' builtin\n" +" -V print a more verbose description of each COMMAND\n" " \n" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" +"執行一個簡單命令或者顯示命令的相關資訊。\n" +" \n" +" 帶 ARGS 引數執行 COMMAND 命令且抑制 shell 函數查詢,或顯示\n" +" 指定的 COMMAND 命令的資訊。å¯ä»¥åœ¨å­˜åœ¨ç›¸åŒå稱函數定義的\n" +" 情æ³ä¸‹è¢«ç”¨æ–¼å•Ÿå‹•ç£ç¢Ÿä¸Šçš„命令。\n" +" \n" +" é¸é …:\n" +" -p\t使用 PATH 變數的一個é è¨­å€¼ä»¥ç¢ºä¿æ‰€æœ‰çš„æ¨™æº–工具都能被找到。\n" +" -v\tå°å‡º COMMAND 命令的æè¿°ï¼Œå’Œã€Œtypeã€å…§å»ºç›¸ä¼¼\n" +" -V\tå°å‡ºæ¯å€‹ COMMAND 命令的詳細æè¿°\n" +" \n" +" 退出狀態:\n" +" 回傳 COMMAND 命令的回傳狀態,或者當找ä¸åˆ° COMMAND 命令時失敗。" -#: builtins.c:487 +#: builtins.c:490 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2534,9 +2886,9 @@ msgid "" " Options:\n" " -f\trestrict action or display to function names and definitions\n" " -F\trestrict display to function names only (plus line number and\n" -" \tsource file when debugging)\n" +" \t\tsource file when debugging)\n" " -g\tcreate global variables when used in a shell function; otherwise\n" -" \tignored\n" +" \t\tignored\n" " -p\tdisplay the attributes and value of each NAME\n" " \n" " Options which set attributes:\n" @@ -2563,15 +2915,51 @@ msgid "" " Returns success unless an invalid option is supplied or a variable\n" " assignment error occurs." msgstr "" +"設定變數值和屬性。\n" +" \n" +" è¦æ ¼è®Šæ•¸ä¸¦ä¸”賦予它們屬性。如果沒用給定å稱,\n" +" 則顯示所有變數的屬性和值。\n" +" \n" +" é¸é …:\n" +" -f\té™åˆ¶å‹•ä½œæˆ–é¡¯ç¤ºç‚ºåªæœ‰å‡½æ•¸å稱和定義\n" +" -F\té™åˆ¶åƒ…顯示函數å稱 (以åŠåˆ—è™Ÿå’ŒåŽŸå§‹æª”åæ–¼åµéŒ¯æ™‚)\n" +" -g\t當用於 shell 函數內時建立全域變數 ; å¦å‰‡å¿½ç•¥\n" +" -p\t顯示æ¯å€‹ NAME 變數的屬性和值\n" +" \n" +" 設定屬性的é¸é …:\n" +" -a\t使 NAME æˆç‚ºç´¢å¼•陣列 (如果支æ´)\n" +" -A\t使 NAME æˆç‚ºé—œè¯é™£åˆ— (如果支æ´)\n" +" -i\t使 NAME 帶有「integerã€(整數)屬性\n" +" -l\tå°‡ NAME 在指派時轉為å°å¯«\n" +" -n\t使 NAME æˆç‚ºæŒ‡å‘一個以其值為å稱的變數引用\n" +" -r\tå°‡ NAME 變為唯讀\n" +" -t\t使 NAME 帶有「traceã€(追蹤)屬性\n" +" -u\tå°‡ NAME 在指派時轉為大寫\n" +" -x\tå°‡ NAME 匯出\n" +" \n" +" 用「+ã€ä»£æ›¿ã€Œ-ã€æœƒé—œé–‰æŒ‡å®šé¸é …。\n" +" \n" +" 帶有整數屬性的變數在指派時將使用算術求值(見\n" +" 「letã€å‘½ä»¤)\n" +" \n" +" 在函數中使用時,「declareã€ä½¿ NAME æˆç‚ºæœ¬åœ°è®Šæ•¸ï¼Œå’Œã€Œlocalã€\n" +" 命令一致。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者發生錯誤。" -#: builtins.c:527 +#: builtins.c:530 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" -" Obsolete. See `help declare'." +" A synonym for `declare'. See `help declare'." msgstr "" +"設定變數的值和屬性。\n" +" \n" +" 廢棄。åƒè¦‹ã€Œhelp declareã€ã€‚" -#: builtins.c:535 +#: builtins.c:538 msgid "" "Define local variables.\n" " \n" @@ -2585,8 +2973,20 @@ msgid "" " Returns success unless an invalid option is supplied, a variable\n" " assignment error occurs, or the shell is not executing a function." msgstr "" +"定義本地變數。\n" +" \n" +" 建立一個以 NAME 為å稱的變數,並且將 VALUE 指派給它。\n" +" OPTION é¸é …å¯ä»¥æ˜¯ä»»ä½•能被「declareã€æŽ¥å—çš„é¸é …。\n" +" \n" +" 本地變數åªèƒ½åœ¨å‡½æ•¸å…§éƒ¨è¢«ä½¿ç”¨ï¼Œå®ƒå€‘åªèƒ½åœ¨å®šç¾©å®ƒå€‘的函數內\n" +" 部以åŠå­å‡½æ•¸ä¸­å¯è¦‹ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …ã€ç™¼ç”Ÿäº†æŒ‡æ´¾éŒ¯èª¤æˆ–者 shell ä¸åœ¨åŸ·è¡Œä¸€å€‹å‡½" +"數。" -#: builtins.c:552 +#: builtins.c:555 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" @@ -2612,15 +3012,42 @@ msgid "" " \\v\tvertical tab\n" " \\\\\tbackslash\n" " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n" -" \t0 to 3 octal digits\n" +" \t\t0 to 3 octal digits\n" " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" -" \tcan be one or two hex digits\n" +" \t\tcan be one or two hex digits\n" " \n" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"將引數寫入標準輸出。\n" +" \n" +" 在標準輸出上,顯示用空格分割的 ARG 引數後跟一個æ›åˆ—。\n" +" \n" +" é¸é …:\n" +" -n\tä¸è¦è¿½åŠ æ›åˆ—\n" +" -e\tå•Ÿç”¨ä¸‹åˆ—åæ–œç·šé€¸å‡ºçš„解釋\n" +" -E\t顯å¼åœ°æŠ‘åˆ¶å°æ–¼å斜線逸出的解釋\n" +" \n" +" 「echoã€å°ä¸‹åˆ—åæ–œç·šå­—元進行逸出:\n" +" \\a\t警告(響鈴)\n" +" \\b\t退格\n" +" \\c\t抑制更多的輸出\n" +" \\e\t逸出字元\n" +" \\f\tæ›é å­—å…ƒ\n" +" \\n\tæ›åˆ—\n" +" \\r\t輸入éµ\n" +" \\t\tæ©«å‘製表符\n" +" \\v\t縱å‘製表符\n" +" \\\\\tåæ–œç·š\n" +" \\0nnn\t以 NNN (八進ä½)為 ASCII 碼的字元。 NNN å¯ä»¥æ˜¯ 0 到 3 個八進使•¸" +"å­—\n" +" \\xHH\t以 HH (å六進ä½)為值的八進ä½å­—元。HH å¯ä»¥æ˜¯ä¸€å€‹æˆ–兩個å六進使•¸" +"å­—\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éžæœ‰å¯«å…¥éŒ¯èª¤ç™¼ç”Ÿã€‚" -#: builtins.c:588 +#: builtins.c:591 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2632,8 +3059,17 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"寫入引數至標準輸出è£ç½®ã€‚\n" +" \n" +" 在標準輸出è£ç½®ä¸Šé¡¯ç¤º ARGs 引數和一個æ›åˆ—。\n" +" \n" +" é¸é …:\n" +" -n\tä¸é™„加æ›åˆ—\n" +" \n" +" 退出狀態:\n" +" 除éžå¯«éŒ¯èª¤ç™¼ç”Ÿï¼Œå¦å‰‡å›žå‚³æˆåŠŸã€‚" -#: builtins.c:603 +#: builtins.c:606 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2659,8 +3095,31 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" +"啟用和åœç”¨ shell 內建。\n" +" \n" +" 啟用和åœç”¨ shell 的內建命令。åœç”¨ä½¿æ‚¨èƒ½å¤ åŸ·è¡Œä¸€å€‹å’Œå…§å»º\n" +" 命令åŒåç£ç¢Ÿä¸Šçš„命令,而無須使用完整的路徑å。\n" +" \n" +" \n" +" é¸é …:\n" +" -a\tå°å‡ºä¸€å€‹å…§å»ºçš„列表,並顯示其中æ¯ä¸€å€‹æ˜¯å¦å•Ÿç”¨\n" +" -n\tåœç”¨æ¯ä¸€å€‹ NAME 內建或者顯示一個被åœç”¨çš„內建列表\n" +" -p\t以å¯é‡ç”¨çš„æ ¼å¼å°å‡ºä¸€å€‹å…§å»ºçš„列表\n" +" -s\t僅å°å‡º Posix「special〠內建的å稱\n" +" \n" +" 控制動態載入的é¸é …:\n" +" -f\t從共享物件 FILENAME 檔案中載入 NAME 內建\n" +" -d\t刪除以 -f é¸é …載入的內建\n" +" \n" +" ä¸å¸¶é¸é …時,æ¯ä¸€å€‹ NAME 內建都被啟用。\n" +" \n" +" 如果è¦ä½¿ç”¨ $PATH 中找到的「testã€è€Œä¸æ˜¯ shell 內建的版本,\n" +" 輸入「enable -n testã€ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éž NAME 䏿˜¯ä¸€å€‹ shell 內建或者有錯誤發生。" -#: builtins.c:631 +#: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2671,8 +3130,15 @@ msgid "" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" +"將引數åšç‚º shell 命令執行。\n" +" \n" +" å°‡ ARGs åˆæˆä¸€å€‹å­—ä¸²ï¼Œç”¨çµæžœåšç‚º shell 的輸入,\n" +" 並且執行得到的命令。\n" +" \n" +" 退出狀態:\n" +" 以命令的狀態退出,或者在命令為空的情æ³ä¸‹å›žå‚³æˆåŠŸã€‚" -#: builtins.c:643 +#: builtins.c:646 msgid "" "Parse option arguments.\n" " \n" @@ -2712,8 +3178,46 @@ msgid "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." msgstr "" +"è§£æžé¸é …引數。\n" +" \n" +" Getopts 被 shell éŽç¨‹ç”¨æ–¼è§£æžå¯å®šä½çš„åƒæ•¸åšç‚ºé¸é …。\n" +" \n" +" \n" +" OPTSTRING 字串包å«å¾…識別的é¸é …å­—æ¯ï¼›å¦‚果一個字æ¯å¾Œé¢è·Ÿ\n" +" 著分號,則該é¸é …需è¦ä¸€å€‹å¼•數,而該引數應用空格與é¸é …分開。\n" +" \n" +" \n" +" æ¯æ¬¡å•Ÿå‹•時,getopts 會將下一個é¸é …放到 shell 變數 $name\n" +" 中,如果 name 變數ä¸å­˜åœ¨å‰‡å…ˆå°‡å…¶åˆå§‹åŒ–,而下一個待處\n" +" ç†çš„引數åºè™Ÿæ”¾å…¥ shell 變數 OPTIND 中。OPTIND 變數在æ¯\n" +" 次 shell 或者 shell 指令稿啟動時都被åˆå§‹åŒ–為 1。當一個é¸é …è¦\n" +" 求有一個引數時,getopts 將引數放入 shell 變數 OPTARG\n" +" 中。\n" +" \n" +" getopts 有兩種通報錯誤的方法。如果 OPTSTRING 變數的第\n" +" 一個字元是冒號,getopts 使用沉默錯誤通報。在這種模å¼\n" +" ä¸‹ï¼Œä¸æœƒå°å‡ºéŒ¯èª¤è¨Šæ¯ã€‚如果看到了一個無效的é¸é …,\n" +" getopts 將找到的é¸é …字元放至 OPTARG 變數中。如果一個必\n" +" 須的é¸é …沒有找到,getopts 放一個「:ã€åˆ° NAME 變數中並且設\n" +" ç½® OPTARG 變數為找到的é¸é …字元。如果 getopts ä¸åœ¨æ²‰é»˜æ¨¡\n" +" å¼ä¸­ï¼Œä¸¦ä¸”é‡åˆ°äº†ä¸€å€‹ç„¡æ•ˆçš„é¸é …,getopts 放置一個「?ã€åˆ° NAME \n" +" è®Šæ•¸ä¸­ä¸¦ä¸”å–æ¶ˆè¨­å®š OPTARG 變數。如果必須的é¸é …沒有找到,\n" +" 一個「?ã€æœƒè¢«æ”¾å…¥ NAME 變數中,OPTARG å°‡è¢«å–æ¶ˆè¨­å®šï¼Œä¸¦ä¸”會\n" +" å°å‡ºä¸€å€‹è¨ºæ–·è³‡è¨Šã€‚\n" +" \n" +" 如果 shell 變數 OPTERR 的值為 0,getopts åœç”¨\n" +" 錯誤資訊的å°å‡ºï¼Œå³ä½¿ OPTSTRING è®Šæ•¸çš„ç¬¬ä¸€å€‹å­—å…ƒä¸æ˜¯ä¸€\n" +" 個冒號。OPTERR çš„é è¨­å€¼ç‚º 1。\n" +" \n" +" Getopts 通常解æžå¯å®šä½çš„引數($0 - $9),ä¸éŽå¦‚æžœæä¾›äº†\n" +" 更多的引數,它們å而會被解æžã€‚\n" +" \n" +" 退出狀態:\n" +" 如果一個é¸é …被找到則回傳æˆåŠŸï¼›å¦‚æžœé‡åˆ°äº†é¸é …çš„çµå°¾æˆ–者\n" +" 有錯誤發生則回傳失敗。" -#: builtins.c:685 +#: builtins.c:688 +#, fuzzy msgid "" "Replace the shell with the given command.\n" " \n" @@ -2724,8 +3228,8 @@ msgid "" " \n" " Options:\n" " -a name\tpass NAME as the zeroth argument to COMMAND\n" -" -c\t\texecute COMMAND with an empty environment\n" -" -l\t\tplace a dash in the zeroth argument to COMMAND\n" +" -c\texecute COMMAND with an empty environment\n" +" -l\tplace a dash in the zeroth argument to COMMAND\n" " \n" " If the command cannot be executed, a non-interactive shell exits, " "unless\n" @@ -2735,16 +3239,36 @@ msgid "" " Returns success unless COMMAND is not found or a redirection error " "occurs." msgstr "" +"ä½¿ç”¨æŒ‡å®šå‘½ä»¤æ›¿æ› shell。\n" +" \n" +" 執行 COMMAND å‘½ä»¤ï¼Œä»¥æŒ‡å®šçš„ç¨‹å¼æ›¿æ›é€™å€‹ shell。\n" +" ARGUMENTS 引數æˆç‚º COMMAND 命令的引數。如果\n" +" 沒有指定 COMMAND 命令,則任何的é‡å®šå‘åœ¨ç•¶å‰ shell 中生效。\n" +" \n" +" é¸é …:\n" +" -a å稱\tåšç‚ºç¬¬ 0 個引數傳éžçµ¦ COMMAND 命令\n" +" -c\t\t在空環境中執行 COMMAND 命令\n" +" -l\t\t在 COMMAND 命令的第 0 個引數中加一個短線\n" +" \n" +" 如果命令ä¸èƒ½è¢«åŸ·è¡Œï¼Œå‰‡é€€å‡ºä¸€å€‹éžäº’å‹•å¼çš„ shell,除éž\n" +" shell é¸é …「execfailã€å·²ç¶“設定。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éž COMMAND 命令沒有找到或者出ç¾ä¸€å€‹é‡å®šå‘錯誤。" -#: builtins.c:706 +#: builtins.c:709 msgid "" "Exit the shell.\n" " \n" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." msgstr "" +"退出 shell。\n" +" \n" +" 以狀態 N 退出 shell。 如果 N 被çœç•¥ï¼Œå‰‡é€€å‡ºç‹€æ…‹\n" +" 為最後一個執行命令的退出狀態。" -#: builtins.c:715 +#: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" @@ -2752,8 +3276,12 @@ msgid "" "executed\n" " in a login shell." msgstr "" +"退出一個登入 shell。\n" +" \n" +" 以狀態 N 退出一個登入 shell。如果ä¸åœ¨ç™»å…¥ shell 中執行,則\n" +" 回傳一個錯誤。" -#: builtins.c:725 +#: builtins.c:728 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2782,8 +3310,31 @@ msgid "" " Returns success or status of executed command; non-zero if an error " "occurs." msgstr "" +"從歷å²è¨˜éŒ„列表中顯示或者執行命令。\n" +" \n" +" fc 被用於從歷å²è¨˜éŒ„åˆ—è¡¨ä¸­åˆ—å‡ºæˆ–è€…é‡æ–°ç·¨è¼¯ä¸¦åŸ·è¡Œå‘½ä»¤ã€‚\n" +" FIRST å’Œ LAST 變數å¯ä»¥æ˜¯æ•¸å­—用於指定範åœï¼Œæˆ–者 FIRST å¯ä»¥æ˜¯\n" +" 字串,æ„味著以這個字串開頭的最近一個命令。\n" +" \n" +" \n" +" é¸é …:\n" +" -e ENAME\t鏿“‡ä½¿ç”¨å“ªå€‹ç·¨è¼¯å™¨ã€‚é è¨­çš„æ˜¯ FCEDIT,然後是 EDITOR,\n" +" \t\t然後是 vi\n" +" -l \t列出列而ä¸ç·¨è¼¯\n" +" -n\t列舉時çœç•¥åˆ—號\n" +" -r\tå轉列的順åº(最新列在å‰)\n" +" \n" +" 用「fc -s [模å¼=æ›¿æ› â€¦] [命令]ã€çš„æ ¼å¼ï¼ŒCOMMAND 命令會在 OLD=NEW\n" +" 替æ›ä¹‹å¾Œè¢«é‡æ–°åŸ·è¡Œã€‚\n" +" \n" +" r=「fc -sã€æ˜¯ä¸€å€‹æœ‰ç”¨çš„別å,這樣的話輸入「r ccã€æœƒåŸ·è¡Œæœ€å¾Œä¸€å€‹ä»¥ã€Œccã€\n" +" 開頭的命令,輸入「rã€æœƒé‡æ–°åŸ·è¡Œæœ€å¾Œä¸€å€‹å‘½ä»¤ã€‚\n" +" \n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œæˆ–è€…åŸ·è¡Œå‘½ä»¤çš„ç‹€æ…‹ï¼›å¦‚æžœéŒ¯èª¤ç™¼ç”Ÿå‰‡å›žå‚³éžé›¶ã€‚" -#: builtins.c:755 +#: builtins.c:758 msgid "" "Move job to the foreground.\n" " \n" @@ -2794,8 +3345,16 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" +"將工作移至å‰è‡ºã€‚\n" +" \n" +" 將以 JOB_SPEC 標識的工作放至å‰è‡ºï¼Œä½¿å…¶æˆç‚º\n" +" ç•¶å‰å·¥ä½œã€‚如果 JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 觀念中的當å‰å·¥ä½œ \n" +" 將被使用。\n" +" \n" +" 退出狀態:\n" +" 放至å‰è‡ºçš„命令狀態,或者當錯誤發生時為失敗。" -#: builtins.c:770 +#: builtins.c:773 msgid "" "Move jobs to the background.\n" " \n" @@ -2808,8 +3367,17 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"移動工作至後臺。\n" +" \n" +" å°‡ JOB_SPEC 標識的工作放至後臺,就åƒå®ƒå€‘\n" +" 是帶「&ã€å•Ÿå‹•的一樣。如果 JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 觀念中的\n" +" ç•¶å‰å·¥ä½œå°‡æœƒè¢«ä½¿ç”¨ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éžå·¥ä½œç®¡ç†æ²’有啟用或者錯誤發生。" -#: builtins.c:784 +#: builtins.c:787 +#, fuzzy msgid "" "Remember or display program locations.\n" " \n" @@ -2818,22 +3386,43 @@ msgid "" "displayed.\n" " \n" " Options:\n" -" -d\t\tforget the remembered location of each NAME\n" -" -l\t\tdisplay in a format that may be reused as input\n" +" -d\tforget the remembered location of each NAME\n" +" -l\tdisplay in a format that may be reused as input\n" " -p pathname\tuse PATHNAME as the full pathname of NAME\n" -" -r\t\tforget all remembered locations\n" -" -t\t\tprint the remembered location of each NAME, preceding\n" +" -r\tforget all remembered locations\n" +" -t\tprint the remembered location of each NAME, preceding\n" " \t\teach location with the corresponding NAME if multiple\n" " \t\tNAMEs are given\n" " Arguments:\n" -" NAME\t\tEach NAME is searched for in $PATH and added to the list\n" +" NAME\tEach NAME is searched for in $PATH and added to the list\n" " \t\tof remembered commands.\n" " \n" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." msgstr "" +"è¨˜ä½æˆ–顯示程å¼ä½ç½®ã€‚\n" +" \n" +" ç¢ºå®šä¸¦è¨˜ä½æ¯ä¸€å€‹çµ¦å®š NAME å稱命令的完整路徑。\n" +" å¦‚æžœä¸æä¾›å¼•æ•¸ï¼Œå‰‡é¡¯ç¤ºå·²ç¶“è¨˜ä½å‘½ä»¤çš„資訊。\n" +" \n" +" é¸é …:\n" +" -d\t\t忘記æ¯ä¸€å€‹å·²ç¶“記ä½çš„ NAME çš„ä½ç½®\n" +" -l\t\t以å¯åšç‚ºè¼¸å…¥é‡ç”¨çš„æ ¼å¼é¡¯ç¤º\n" +" -p pathname\t使用 pathname 路徑åšç‚º NAME 命令的全路徑\n" +" -r\t\t忘記所有記ä½çš„ä½ç½®\n" +" -t\t\tå°å‡ºè¨˜ä½çš„æ¯ä¸€å€‹ NAME å稱的ä½ç½®ï¼Œå¦‚果指定了多個\n" +" \t\tNAME å稱,則æ¯å€‹ä½ç½®å‰é¢æœƒåŠ ä¸Šç›¸æ‡‰çš„ NAME å稱\n" +" \t\t\n" +" 引數:\n" +" NAME\t\tæ¯å€‹ NAME å稱會在 $PATH 路徑變數中被æœå°‹ï¼Œä¸¦ä¸”新增到記ä½çš„命" +"令\n" +" 列表中。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éž NAME 命令沒有找到或者使用了無效的é¸é …。" -#: builtins.c:809 +#: builtins.c:812 +#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -2845,7 +3434,7 @@ msgid "" " -d\toutput short description for each topic\n" " -m\tdisplay usage in pseudo-manpage format\n" " -s\toutput only a short usage synopsis for each topic matching\n" -" \tPATTERN\n" +" \t\tPATTERN\n" " \n" " Arguments:\n" " PATTERN\tPattern specifiying a help topic\n" @@ -2854,8 +3443,26 @@ msgid "" " Returns success unless PATTERN is not found or an invalid option is " "given." msgstr "" +"顯示內建命令的相關資訊。\n" +" \n" +" 顯示內建命令的簡略資訊。如果指定了 PATTERN 模å¼ï¼Œ\n" +" çµ¦å‡ºæ‰€æœ‰åŒ¹é… PATTERN 模å¼å‘½ä»¤çš„詳細說明,å¦å‰‡å°å‡º\n" +" 一個說明主題列表\n" +" \n" +" é¸é …:\n" +" -d\t輸出æ¯å€‹ä¸»é¡Œçš„簡短æè¿°\n" +" -m\tä»¥å½ man 手冊的格å¼é¡¯ç¤ºä½¿ç”¨æ–¹æ³•\n" +" -s\t為æ¯ä¸€å€‹åŒ¹é… PATTERN 模å¼çš„主題僅顯示一個用法\n" +" \t簡介\n" +" \n" +" 引數:\n" +" PATTERN\tPattern æ¨¡å¼æŒ‡å®šä¸€å€‹èªªæ˜Žä¸»é¡Œ\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éž PATTERN æ¨¡å¼æ²’有找到或者使用了無效é¸é …。" -#: builtins.c:833 +#: builtins.c:836 +#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -2864,23 +3471,23 @@ msgid "" " \n" " Options:\n" " -c\tclear the history list by deleting all of the entries\n" -" -d offset\tdelete the history entry at offset OFFSET.\n" +" -d offset\tdelete the history entry at position OFFSET.\n" " \n" " -a\tappend history lines from this session to the history file\n" " -n\tread all history lines not already read from the history file\n" +" \t\tand append them to the history list\n" " -r\tread the history file and append the contents to the history\n" -" \tlist\n" +" \t\tlist\n" " -w\twrite the current history to the history file\n" -" \tand append them to the history list\n" " \n" " -p\tperform history expansion on each ARG and display the result\n" -" \twithout storing it in the history list\n" +" \t\twithout storing it in the history list\n" " -s\tappend the ARGs to the history list as a single entry\n" " \n" " If FILENAME is given, it is used as the history file. Otherwise,\n" -" if $HISTFILE has a value, that is used, else ~/.bash_history.\n" +" if HISTFILE has a value, that is used, else ~/.bash_history.\n" " \n" -" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" +" 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" @@ -2888,8 +3495,35 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"顯示或æ“縱歷å²è¨˜éŒ„列表。\n" +" \n" +" 帶列號顯示歷å²è¨˜éŒ„列表,將æ¯å€‹è¢«ä¿®æ”¹çš„æ¢ç›®åŠ ä¸Šå­—é¦–ã€Œ*ã€ã€‚\n" +" 引數 N 會僅列出最後的 N 個æ¢ç›®ã€‚\n" +" \n" +" é¸é …:\n" +" -c\t刪除所有æ¢ç›®å¾žè€Œæ¸…空歷å²è¨˜éŒ„列表。\n" +" -d åç§»é‡\t從指定ä½ç½®åˆªé™¤æ­·å²è¨˜éŒ„列表。\n" +" \n" +" -a\tå°‡ç•¶å‰æœƒè©±çš„æ­·å²è¨˜éŒ„列追加到歷å²è¨˜éŒ„檔案中\n" +" -n\t從歷å²è¨˜éŒ„æª”æ¡ˆä¸­è®€å–æ‰€æœ‰æœªè¢«è®€å–的列\n" +" -r\tè®€å–æ­·å²è¨˜éŒ„檔案並將內容追加到歷å²è¨˜éŒ„列表中\n" +" -w\tå°‡ç•¶å‰æ­·å²è¨˜éŒ„寫入到歷å²è¨˜éŒ„檔案中,並追加到歷å²è¨˜éŒ„列表中\n" +" \n" +" -p\tå°æ¯ä¸€å€‹ ARG 引數展開歷å²è¨˜éŒ„ä¸¦é¡¯ç¤ºçµæžœï¼Œè€Œä¸å„²å­˜åˆ°æ­·å²è¨˜éŒ„列表中\n" +" -s\t以單æ¢è¨˜éŒ„追加 ARG 到歷å²è¨˜éŒ„列表中\n" +" \n" +" 如果給定了 FILENAME 檔å,則它將被åšç‚ºæ­·å²è¨˜éŒ„檔案。å¦å‰‡\n" +" 如果 $HISTFILE 變數有值的話使用之,ä¸ç„¶ä½¿ç”¨ ~/.bash_history 檔案。\n" +" \n" +" 如果 $HISTTIMEFORMAT 變數被設定並且ä¸ç‚ºç©ºï¼Œå®ƒçš„值會被用於\n" +" strftime(3) 的格å¼å­—串來å°å‡ºèˆ‡æ¯ä¸€å€‹é¡¯ç¤ºçš„æ­·å²è¨˜éŒ„æ¢ç›®æƒ³é—œè¯çš„æ™‚\n" +" 間戳,å¦å‰‡ä¸å°å‡ºæ™‚間戳。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生錯誤。" -#: builtins.c:869 +#: builtins.c:872 +#, fuzzy msgid "" "Display status of jobs.\n" " \n" @@ -2899,7 +3533,7 @@ msgid "" " Options:\n" " -l\tlists process IDs in addition to the normal information\n" " -n\tlists only processes that have changed status since the last\n" -" \tnotification\n" +" \t\tnotification\n" " -p\tlists process IDs only\n" " -r\trestrict output to running jobs\n" " -s\trestrict output to stopped jobs\n" @@ -2912,8 +3546,27 @@ msgid "" " Returns success unless an invalid option is given or an error occurs.\n" " If -x is used, returns the exit status of COMMAND." msgstr "" +"顯示工作狀態。\n" +" \n" +" 列出活動的工作。JOBSPEC é™åˆ¶åƒ…輸出指定的工作。\n" +" ä¸å¸¶é¸é …時,所有活動工作的狀態都會顯示。\n" +" \n" +" é¸é …:\n" +" -l\t在正常資訊基礎上列出行程識別號\n" +" -n\t僅列出上次通告之後變更了狀態的行程\n" +" -p\t僅列出行程識別號\n" +" -r\té™åˆ¶åƒ…輸出執行中的工作\n" +" -s\té™åˆ¶åƒ…è¼¸å‡ºåœæ­¢çš„工作\n" +" \n" +" 如果使用了 -x é¸é …,ARG å¼•æ•¸ä¸­çš„æ‰€æœ‰å·¥ä½œè¦æ ¼æœƒè¢«æ›¿æ›ç‚ºè©²å·¥ä½œ\n" +" 的行程群組首領的行程識別號,然後執行 COMMAND 命令。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者有錯誤發生。\n" +" 如果使用 -x é¸é …,則回傳 COMMAND 命令的退出狀態。" -#: builtins.c:896 +#: builtins.c:899 +#, fuzzy msgid "" "Remove jobs from current shell.\n" " \n" @@ -2923,14 +3576,28 @@ msgid "" " Options:\n" " -a\tremove all jobs if JOBSPEC is not supplied\n" " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n" -" \tshell receives a SIGHUP\n" +" \t\tshell receives a SIGHUP\n" " -r\tremove only running jobs\n" " \n" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" +"å¾žç•¶å‰ shell 中刪除工作。\n" +" \n" +" 從活動工作表中刪除æ¯ä¸€å€‹ JOBSPEC 引數。ä¸å¸¶ä»»ä½•\n" +" JOBSPEC 引數時,shell 使用觀念中的當å‰å·¥ä½œã€‚\n" +" \n" +" é¸é …:\n" +" -a\tå¦‚æžœä¸æä¾› JOBSPEC 引數,則刪除所有工作\n" +" -h\t標識æ¯å€‹ JOBSPEC 工作,從而當 shell 接收到 SIGHUP\n" +" \t訊號時ä¸å‚³é€ SIGHUP 給指定工作\n" +" -r\t僅刪除執行中的工作\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 JOBSPEC è¦æ ¼ã€‚" -#: builtins.c:915 +#: builtins.c:918 +#, fuzzy msgid "" "Send a signal to a job.\n" " \n" @@ -2942,7 +3609,8 @@ msgid "" " -s sig\tSIG is a signal name\n" " -n sig\tSIG is a signal number\n" " -l\tlist the signal names; if arguments follow `-l' they are\n" -" \tassumed to be signal numbers for which names should be listed\n" +" \t\tassumed to be signal numbers for which names should be listed\n" +" -L\tsynonym for -l\n" " \n" " Kill is a shell builtin for two reasons: it allows job IDs to be used\n" " instead of process IDs, and allows processes to be killed if the limit\n" @@ -2951,8 +3619,25 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" +"å‘一個工作傳é€ä¸€å€‹è¨Šè™Ÿã€‚\n" +" \n" +" å‘以 PID 行程識別號或者 JOBSPEC å·¥ä½œè¦æ ¼æŒ‡å®šçš„行程傳é€ä¸€å€‹ä»¥\n" +" SIGSPEC è¨Šè™Ÿè¦æ ¼æˆ– SIGNUM 訊號編號命å的訊號。如果沒有指定\n" +" SIGSPEC 或 SIGNUM,那麼å‡å®šå‚³é€ SIGTERM 訊號。\n" +" \n" +" é¸é …:\n" +" -s sig\tSIG 是訊號å稱\n" +" -n sig\tSIG 是訊號編號\n" +" -l\t列出訊號å稱;如果引數後跟「-lã€å‰‡è¢«å‡è¨­ç‚ºè¨Šè™Ÿç·¨è™Ÿï¼Œ\n" +" \t而相應的訊號å稱會被列出\n" +" \n" +" Kill æˆç‚º shell 內建有兩個ç†ç”±ï¼šå®ƒå…è¨±ä½¿ç”¨å·¥ä½œç·¨è™Ÿè€Œä¸æ˜¯è¡Œç¨‹è­˜åˆ¥è™Ÿï¼Œ\n" +" 並且在å¯ä»¥å»ºç«‹çš„行程數上é™é”到時å…許行程被ç é™¤ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者有錯誤發生。" -#: builtins.c:938 +#: builtins.c:942 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -2996,8 +3681,46 @@ msgid "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" +"求值算術表示å¼ã€‚\n" +" \n" +" å°‡æ¯å€‹ ARG åƒè³½åšç‚ºç®—術表示å¼ä¾†æ±‚值。求值的計算以定寬的整\n" +" 數完æˆï¼Œä¸å¸¶æº¢ä½æª¢æ¸¬ï¼Œä¸éŽé™¤ 0 是被置陷阱的並且會報一個錯\n" +" 誤。下列é‹ç®—å­è¢«æŒ‰ç…§ç›¸åŒçš„算術優先順åºçµ„åˆã€‚åˆ—è¡¨çš„é †åºæŒ‰ç…§\n" +" 優先順åºå¾žé«˜è‡³ä½Žã€‚\n" +" \n" +" \n" +" \tid++, id--\t變數後置加,後置減\n" +" \t++id, --id\t變數å‰ç½®åŠ ï¼Œå‰ç½®æ¸›\n" +" \t-, +\t\t一元減法,一元加法\n" +" \t!, ~\t\té‚輯和ä½å–å\n" +" \t**\t\t指數\n" +" \t*, /, %\t\t乘法,除法,å–餘數\n" +" \t+, -\t\t增加,減少\n" +" \t<<, >>\t\tå‘左和å‘峿Œ‰ä½ç§»ä½\n" +" \t<=, >=, <, >\t比較\n" +" \t==, !=\t\t等於,ä¸ç­‰æ–¼\n" +" \t&\t\t按ä½èˆ‡\n" +" \t^\t\t按ä½ç•°æˆ–\n" +" \t|\t\tæŒ‰ä½æˆ–\n" +" \t&&\t\té‚輯與\n" +" \t||\t\té‚輯或\n" +" \texpr ? expr : expr\n" +" \t\t\tæ¢ä»¶é‹ç®—å­\n" +" \t=, *=, /=, %=,\n" +" \t+=, -=, <<=, >>=,\n" +" \t&=, ^=, |=\t指派\n" +" \n" +" Shell 變數å…許åšç‚ºé‹ç®—元。表示å¼ä¸­çš„變數å稱會以值å–代\n" +" (強制轉æ›ç‚ºå®šå¯¬çš„æ•´æ•¸)。表示å¼ä¸­çš„變數ä¸éœ€è¦é–‹å•Ÿæ•´æ•¸å±¬æ€§ã€‚\n" +" \n" +" é‹ç®—å­æŒ‰ç…§å„ªå…ˆé †åºé€²è¡Œæ±‚值。括號中的å­è¡¨ç¤ºå¼å°‡è¢«å…ˆæ±‚值,並å¯å–代上述表示" +"å¼è¦å‰‡ã€‚\n" +" \n" +" 退出狀態:\n" +" 如果最後一個 ARG 引數求值為 0,則 let 回傳 1ï¼› å¦å‰‡ let 回傳 0。" -#: builtins.c:983 +#: builtins.c:987 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3018,27 +3741,28 @@ msgid "" " \t\tvariable ARRAY, starting at zero\n" " -d delim\tcontinue until the first character of DELIM is read, rather\n" " \t\tthan newline\n" -" -e\t\tuse Readline to obtain the line in an interactive shell\n" -" -i text\tUse TEXT as the initial text for Readline\n" +" -e\tuse Readline to obtain the line in an interactive shell\n" +" -i text\tuse TEXT as the initial text for Readline\n" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" -" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" -" \t\tcharacters are read before the delimiter\n" +" \t\tfor a newline, but honor a delimiter if fewer than\n" +" \t\tNCHARS characters are read before the delimiter\n" " -N nchars\treturn only after reading exactly NCHARS characters, " "unless\n" -" \t\tEOF is encountered or read times out, ignoring any delimiter\n" +" \t\tEOF is encountered or read times out, ignoring any\n" +" \t\tdelimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" -" -r\t\tdo not allow backslashes to escape any characters\n" -" -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" -" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" -" \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" -" \t\texit status is greater than 128 if the timeout is exceeded\n" -" -u fd\t\tread from file descriptor FD instead of the standard input\n" +" -r\tdo not allow backslashes to escape any characters\n" +" -s\tdo not echo input coming from a terminal\n" +" -t timeout\ttime out and return failure if a complete line of\n" +" \t\tinput is not read within TIMEOUT seconds. The value of the\n" +" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n" +" \t\tfractional number. If TIMEOUT is 0, read returns\n" +" \t\timmediately, without trying to read any data, returning\n" +" \t\tsuccess only if input is available on the specified\n" +" \t\tfile descriptor. The exit status is greater than 128\n" +" \t\tif the timeout is exceeded\n" +" -u fd\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" " The return code is zero, unless end-of-file is encountered, read times " @@ -3047,8 +3771,45 @@ msgid "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" +"從標準輸入讀å–一列並將其分為ä¸åŒçš„å€åŸŸã€‚\n" +" \n" +" 從標準輸入讀å–å–®ç¨çš„一列,或者如果使用了 -u é¸é …,從檔案æè¿°ç¬¦ FD 中讀" +"å–。\n" +" 該列被分割æˆå€åŸŸï¼Œå¦‚åŒå­—詞分割一樣,並且第一個字詞被指派給第一個 NAME 變" +"數,第二\n" +" 個字詞被指派給第二個 NAME 變數,如此繼續,直到剩下所有的字詞被指派給最後" +"一個 NAME\n" +" è®Šæ•¸ã€‚åªæœ‰ $IFS 變數中的字元被èªåšæ˜¯å­—è©žåˆ†éš”ç¬¦ã€‚\n" +" \n" +" 如果沒有æä¾› NAME 變數,則讀å–的列被存放在 REPLY 變數中。\n" +" \n" +" é¸é …:\n" +" -a array\t將字詞指派給 ARRAY 陣列變數的åºåˆ—索引æˆå“¡ï¼Œå¾žé›¶é–‹å§‹ã€‚\n" +" -d delim\tæŒçºŒè®€å–直到讀入 DELIM è®Šæ•¸ä¸­çš„ç¬¬ä¸€å€‹å­—å…ƒï¼Œè€Œä¸æ˜¯æ›åˆ—符\n" +" -e\tåœ¨äº’å‹•å¼ shell 中使用 Readline ç²å–列\n" +" -i text\t使用 TEXT 文字åšç‚º Readline çš„åˆå§‹æ–‡å­—\n" +" -n nchars\tè®€å– nchars å€‹å­—å…ƒä¹‹å¾Œå›žå‚³ï¼Œè€Œä¸æ˜¯ç­‰åˆ°è®€å–æ›åˆ—符。\n" +" \t\t但是分隔符ä»ç„¶æœ‰æ•ˆï¼Œå¦‚æžœé‡åˆ°åˆ†éš”符之å‰è®€å–了ä¸è¶³ nchars 個字元。\n" +" -N nchars\t在準確讀å–了 nchars 個字元之後回傳,除éžé‡åˆ°æª”æ¡ˆçµæŸç¬¦æˆ–者讀" +"å–逾時,\n" +" \t\t任何的分隔符都被忽略\n" +" -p prompt\t在嘗試讀å–之å‰è¼¸å‡º PROMPT æç¤ºç¬¦ä¸¦ä¸”ä¸å¸¶\n" +" \t\tæ›åˆ—符\n" +" -r\tä¸å…è¨±åæ–œç·šé€¸å‡ºä»»ä½•å­—å…ƒ\n" +" -s\tä¸é¡¯ç¤ºçµ‚端的任何輸入\n" +" -t timeout\t如果在 TIMEOUT 秒內沒有讀å–一個完整的列則逾時並且回傳失" +"敗。\n" +" \t\tTMOUT 變數的值是é è¨­é€¾æ™‚時間。\n" +" \t\tTIMEOUT å¯ä»¥æ˜¯å°æ•¸ã€‚如果 TIMEOUT 是 0,那麼僅當在指定的檔案æè¿°ç¬¦ä¸Š\n" +" \t\t輸入有效的時候,read æ‰å›žå‚³æˆåŠŸã€‚\n" +" \t\t如果超éŽäº†é€¾æ™‚時間,則回傳狀態碼大於 128\n" +" -u fd\t從檔案æè¿°ç¬¦ FD 中讀å–ï¼Œè€Œä¸æ˜¯æ¨™æº–輸入\n" +" \n" +" 退出狀態:\n" +" 回傳碼為零,除éžé‡åˆ°äº†æª”æ¡ˆçµæŸç¬¦ï¼Œè®€å–逾時,或者無效的文\n" +" ä»¶æè¿°ç¬¦åšç‚ºå¼•數傳éžçµ¦äº† -u é¸é …。" -#: builtins.c:1028 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3059,8 +3820,17 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" +"從一個 shell 函數回傳。\n" +" \n" +" 使一個函數或者被引用的指令稿以指定的回傳值 N 退出。\n" +" 如果 N 被çœç•¥ï¼Œå‰‡å›žå‚³ç‹€æ…‹å°±æ˜¯\n" +" 函數或指令稿中的最後一個執行命令的狀態。\n" +" \n" +" 退出狀態:\n" +" 回傳 N,或者如果 shell ä¸åœ¨åŸ·è¡Œä¸€å€‹å‡½æ•¸æˆ–引用指令稿時,失敗。" -#: builtins.c:1041 +#: builtins.c:1047 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3128,7 +3898,8 @@ msgid "" " by default when the shell is interactive.\n" " -P If set, do not resolve symbolic links when executing commands\n" " such as cd which change the current directory.\n" -" -T If set, the DEBUG trap is inherited by shell functions.\n" +" -T If set, the DEBUG and RETURN traps are inherited by shell " +"functions.\n" " -- Assign any remaining arguments to the positional parameters.\n" " If there are no remaining arguments, the positional parameters\n" " are unset.\n" @@ -3144,8 +3915,84 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" +"è¨­å®šæˆ–å–æ¶ˆè¨­å®š shell é¸é …å’Œä½ç½®åƒæ•¸çš„值。\n" +" \n" +" 變更 shell é¸é …å’Œä½ç½®å¼•數的值,或者顯示 shell 變數的\n" +" å稱和值。\n" +" \n" +" é¸é …:\n" +" -a 標記修改或者建立的變數為匯出。\n" +" -b ç«‹å³é€šå‘Šå·¥ä½œçµ‚çµã€‚\n" +" -e 如果一個命令以éžé›¶ç‹€æ…‹é€€å‡ºï¼Œå‰‡ç«‹å³é€€å‡ºã€‚\n" +" -f åœç”¨æª”å生æˆ(模å¼åŒ¹é…)。\n" +" -h 當查詢命令時記ä½å®ƒå€‘çš„ä½ç½®\n" +" -k 所有的指派引數被放在命令的環境中,而ä¸åƒ…僅是\n" +" 命令å稱之å‰çš„引數。\n" +" -m 啟用工作控制。\n" +" -n 讀å–命令但ä¸åŸ·è¡Œ\n" +" -o é¸é …å\n" +" 設定與é¸é …åå°æ‡‰çš„變數:\n" +" allexport 與 -a 相åŒ\n" +" braceexpand 與 -B 相åŒ\n" +" emacs 使用 emacs 風格的列編輯介é¢\n" +" errexit 與 -e 相åŒ\n" +" errtrace 與 -E 相åŒ\n" +" functrace 與 -T 相åŒ\n" +" hashall 與 -h 相åŒ\n" +" histexpand 與 -H 相åŒ\n" +" history 啟用命令歷å²è¨˜éŒ„\n" +" ignoreeof shell è®€å–æª”æ¡ˆçµæŸç¬¦æ™‚䏿œƒé€€å‡º\n" +" interactive-comments\n" +" å…許在互動å¼å‘½ä»¤ä¸­é¡¯ç¤ºè¨»é‡‹\n" +" keyword 與 -k 相åŒ\n" +" monitor 與 -m 相åŒ\n" +" noclobber 與 -C 相åŒ\n" +" noexec 與 -n 相åŒ\n" +" noglob 與 -f 相åŒ\n" +" nolog ç›®å‰å¯æŽ¥å—但是被忽略\n" +" notify 與 -b 相åŒ\n" +" nounset 與 -u 相åŒ\n" +" onecmd 與 -t 相åŒ\n" +" physical 與 -P 相åŒ\n" +" pipefail 管é“的回傳值是最後一個éžé›¶å›žå‚³å€¼å‘½ä»¤çš„å›žå‚³çµæžœï¼Œ\n" +" 或者當所有命令都回傳零時也為零。\n" +" posix 變更é è¨­æ™‚å’Œ Posix 標準ä¸åŒçš„ bash 行為\n" +" ä»¥åŒ¹é…æ¨™æº–\n" +" privileged 與 -p 相åŒ\n" +" verbose 與 -v 相åŒ\n" +" vi 使用 vi 風格的列編輯介é¢\n" +" xtrace 與 -x 相åŒ\n" +" -p 無論何時當真實的有效使用者身分ä¸åŒ¹é…時開啟。\n" +" åœç”¨å° $ENV 檔案的處ç†ä»¥åŠåŒ¯å…¥ shell 函數。\n" +" 關閉此é¸é …會導致有效的使用者編號和群組編號設定\n" +" 為真實的使用者編號和群組編號\n" +" -t 讀å–並執行一個命令之後退出。\n" +" -u æ›¿æ›æ™‚將為設定的變數當åšéŒ¯èª¤å°å¾…。\n" +" -v è®€å– shell 輸入列時將它們å°å‡ºã€‚\n" +" -x 執行命令時å°å‡ºå®ƒå€‘以åŠå¼•數。\n" +" -B shell 將執行大括號擴充套件。\n" +" -C è¨­å®šä¹‹å¾Œç¦æ­¢ä»¥é‡å®šå‘輸出的方å¼è¦†è“‹å¸¸\n" +" è¦æª”案。\n" +" -E 設定之後 ERR 陷阱會被 shell 函數繼承。\n" +" -H 啟用 ! 風格的歷å²è¨˜éŒ„替æ›ã€‚ç•¶ shell 是互動å¼çš„\n" +" 時候這個標識ä½é è¨­é–‹å•Ÿã€‚\n" +" -P 設定之後類似 cd 的會變更當å‰ç›®éŒ„的命令ä¸\n" +" 追蹤符號éˆçµã€‚\n" +" -T 設定之後 DEBUG 陷阱會被 shell 函數繼承。\n" +" - 任何剩餘的引數會被指派給ä½ç½®å¼•數。\n" +" -x å’Œ -v é¸é …已關閉。\n" +" \n" +" 使用 + è€Œä¸æ˜¯ - 會使標誌ä½è¢«é—œé–‰ã€‚標誌ä½ä¹Ÿå¯ä»¥åœ¨\n" +" shell 被啟動時使用。當å‰çš„æ¨™èªŒä½è¨­å®šå¯ä»¥åœ¨ $- 變\n" +" é‡ä¸­æ‰¾åˆ°ã€‚剩餘的 ARG 引數是ä½ç½®å¼•數並且是按照\n" +" $1,$2,.。$n 的順åºè¢«æŒ‡æ´¾çš„。如果沒有給定 ARG\n" +" 引數,則å°å‡ºæ‰€æœ‰çš„ shell 變數。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„引數。" -#: builtins.c:1126 +#: builtins.c:1132 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3155,7 +4002,7 @@ msgid "" " -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" +" \t\trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3166,8 +4013,24 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" +"å–æ¶ˆè¨­å®š shell 變數和函數的值和屬性。\n" +" \n" +" å°æ¯ä¸€å€‹ NAME åç¨±ï¼Œåˆªé™¤å°æ‡‰çš„變數或函數。\n" +" \n" +" é¸é …:\n" +" -f\tå°‡æ¯å€‹ NAME 視為函數\n" +" -v\tå°‡æ¯å€‹ NAME 視為變數\n" +" -n\tå°‡æ¯å€‹ NAME 視為å稱引用,åªå–消其本身而éžå…¶æŒ‡å‘的變數\n" +" \n" +" ä¸å¸¶é¸é …時,unset é¦–å…ˆå˜—è©¦å–æ¶ˆè¨­å®šä¸€å€‹è®Šæ•¸ï¼Œå¦‚果失敗,å†å˜—è©¦å–æ¶ˆè¨­å®šä¸€å€‹" +"函數。\n" +" \n" +" æŸäº›è®Šæ•¸ä¸å¯ä»¥è¢«å–消設定;åƒè¦‹ã€Œreadonlyã€ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 NAME å稱為唯讀。" -#: builtins.c:1148 +#: builtins.c:1154 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3185,8 +4048,23 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"為 shell 變數設定匯出屬性。\n" +" \n" +" 標記æ¯å€‹ NAME å稱為自動匯出到後續命令執行的環境。如果æä¾›äº† VALUE\n" +" 則匯出å‰å°‡ VALUE åšç‚ºæŒ‡æ´¾ã€‚\n" +" \n" +" é¸é …:\n" +" -f\t指 shell 函數\n" +" -n\t刪除æ¯å€‹ NAME å稱的匯出屬性\n" +" -p\t顯示所有匯出的變數和函數的列表\n" +" \n" +" 「--ã€çš„引數åœç”¨é€²ä¸€æ­¥çš„é¸é …處ç†ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 NAME å稱。" -#: builtins.c:1167 +#: builtins.c:1173 +#, fuzzy msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3198,17 +4076,31 @@ msgid "" " -a\trefer to indexed array variables\n" " -A\trefer to associative array variables\n" " -f\trefer to shell functions\n" -" -p\tdisplay a list of all readonly variables or functions, depending " -"on\n" -" whether or not the -f option is given\n" +" -p\tdisplay a list of all readonly variables or functions,\n" +" \t\tdepending on whether or not the -f option is given\n" " \n" " An argument of `--' disables further option processing.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" +"標記 shell 變數為ä¸å¯è®Šæ›´ã€‚\n" +" \n" +" 標記æ¯ä¸€å€‹ NAME å稱為唯讀;這些 NAME 變數的值將ä¸å¯ä»¥è¢«å¾ŒçºŒçš„æŒ‡æ´¾\n" +" æ“作所變更。如果æä¾›äº† VALUE,則在標記為唯讀之å‰å°‡ VALUE 值指派給變數。\n" +" \n" +" é¸é …:\n" +" -a\t指索引陣列變數\n" +" -A\t指關è¯é™£åˆ—變數\n" +" -f\t指 shell 函數\n" +" -p\té¡¯ç¤ºå”¯è®€è®Šæ•¸æˆ–å‡½æ•¸åˆ—è¡¨ï¼Œå–æ±ºæ–¼æ˜¯å¦æä¾›äº† -f é¸é …\n" +" \n" +" 「--ã€çš„引數åœç”¨é€²ä¸€æ­¥çš„é¸é …處ç†ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 NAME å稱。" -#: builtins.c:1189 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3218,8 +4110,15 @@ msgid "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." msgstr "" +"ç§»ä½ä½ç½®åƒæ•¸ã€‚\n" +" \n" +" 釿–°å‘½åä½ç½®å¼•數 $N+1ã€$N+2 … 到 $1ã€$2 … 如果沒有給定 N,\n" +" 則å‡è¨­ç‚º 1。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éž N 為負或者大於 $#。" -#: builtins.c:1201 builtins.c:1216 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3232,8 +4131,16 @@ msgid "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." msgstr "" +"åœ¨ç•¶å‰ shell 中執行一個檔案中的命令。\n" +" \n" +" åœ¨ç•¶å‰ shell 中讀å–並執行 FILENAME 檔案中的命令。$PATH 變數中的\n" +" æ¢ç›®è¢«ç”¨æ–¼å°‹æ‰¾åŒ…å« FILENAME 檔案的目錄。如果æä¾›äº†ä»»ä½•çš„ ARGUMENTS\n" +" 引數,則它們將æˆç‚º FILENAME 檔案執行時的ä½ç½®åƒæ•¸ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳 FILENAME 檔案中最後一個命令的狀態;如果 FILENAME 檔案ä¸å¯è®€å‰‡å¤±æ•—。" -#: builtins.c:1232 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3246,8 +4153,19 @@ msgid "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" +"懸置 shell 執行。\n" +" \n" +" 懸置 shell 的執行直到收到 SIGCONT 訊號。\n" +" 登入 shell ä¸å¯ä»¥è¢«æ‡¸ç½®ï¼Œé™¤éžå¼·åˆ¶åŸ·è¡Œã€‚\n" +" \n" +" é¸é …:\n" +" -f\t強制懸置,å³ä½¿æ˜¯ç™»å…¥ shell。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžæ²’有啟用工作控制或者有錯誤發生。" -#: builtins.c:1248 +#: builtins.c:1254 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -3311,9 +4229,9 @@ msgid "" " Other operators:\n" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" -" -v VAR\t True if the shell variable VAR is set\n" -" -R VAR\t True if the shell variable VAR is set and is a name " -"reference.\n" +" -v VAR True if the shell variable VAR is set.\n" +" -R VAR True if the shell variable VAR is set and is a name\n" +" reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3329,16 +4247,91 @@ msgid "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." msgstr "" +"å°æ¢ä»¶è¡¨ç¤ºå¼é€²è¡Œæ±‚值。\n" +" \n" +" 根據 EXPR 表示å¼çš„æ±‚值以狀態 0 (真) 或 1 (å½) 退出。\n" +" 表示å¼å¯ä»¥æ˜¯ä¸€å…ƒæˆ–者二元的。一元表示å¼é€šå¸¸ç”¨æ–¼æª¢æ¸¬\n" +" æª”æ¡ˆç‹€æ…‹ã€‚åŒæ™‚還有字串é‹ç®—å­å’Œæ•¸å­—比較é‹ç®—å­ã€‚\n" +" \n" +" 檔案é‹ç®—å­ï¼š\n" +" \n" +" -a 檔案 如果檔案存在則為真。\n" +" -b 檔案 如果檔案為å€å¡Šç‰¹æ®Šæª”案則為真。\n" +" -c 檔案 如果檔案為字元特殊檔案則為真。\n" +" -d 檔案 如果檔案為目錄則為真。\n" +" -e 檔案 如果檔案存在則為真。\n" +" -f 檔案 å¦‚æžœæª”æ¡ˆå­˜åœ¨ä¸”ç‚ºå¸¸è¦æª”案則為真。\n" +" -g 檔案 如果檔案的群組屬性設定開啟則為真。\n" +" -h 檔案 如果檔案為符號éˆçµå‰‡ç‚ºçœŸã€‚\n" +" -L 檔案 如果檔案為符號éˆçµå‰‡ç‚ºçœŸã€‚\n" +" -k 檔案 如果檔案的粘著ä½å…ƒå·²è¨­å®šå‰‡ç‚ºçœŸã€‚\n" +" -p 檔案 如果檔案為命å管é“則為真。\n" +" -r 檔案 å¦‚æžœæª”æ¡ˆå°æ–¼æ‚¨æ˜¯å¯è®€çš„則為真。\n" +" -s 檔案 如果檔案存在且ä¸ç‚ºç©ºå‰‡ç‚ºçœŸã€‚\n" +" -S 檔案 如果檔案是套接字則為真。\n" +" -t 檔案æè¿°ç¬¦ 如果檔案æè¿°ç¬¦åœ¨çµ‚端上開啟則為真。\n" +" -u 檔案 如果檔案的使用者數列設定開啟則為真。\n" +" -w 檔案 å¦‚æžœæª”æ¡ˆå°æ‚¨æ˜¯å¯å¯«çš„則為真\n" +" -x 檔案 å¦‚æžœæª”æ¡ˆå°æ‚¨æ˜¯å¯åŸ·è¡Œçš„則為真。\n" +" -O 檔案 如果檔案是您所有的則為真。\n" +" -G 檔案 如果檔案是您的群組所有則為真。\n" +" -N 檔案 如果檔案上次被讀å–之後修改éŽå‰‡ç‚ºçœŸã€‚\n" +" \n" +" FILE1 -nt FILE2 如果 file1 檔案新於 file2 檔案則為真(根據\n" +" 修改日期)。\n" +" \n" +" FILE1 -ot FILE2 如果 file1 檔案舊於 file2 檔案則為真。\n" +" \n" +" FILE1 -ef FILE2 如果 file1 檔案是 file2 檔案的硬å¼éˆçµå‰‡ç‚ºçœŸã€‚\n" +" \n" +" 字串é‹ç®—å­\n" +" \n" +" -z 字串 如果字串為空則為真。\n" +" \n" +" -n 字串\n" +" 字串 如果字串ä¸ç‚ºç©ºå‰‡ç‚ºçœŸã€‚\n" +" \n" +" STRING1 = STRING2\n" +" 如果 string1 å’Œ string2 字串相åŒå‰‡ç‚ºçœŸã€‚\n" +" STRING1 != STRING2\n" +" 如果 string1 å’Œ string2 字串ä¸ç›¸åŒå‰‡ç‚ºçœŸã€‚\n" +" STRING1 < STRING2\n" +" å¦‚æžœæŒ‰å­—å…¸æŽ’åº string1 在 string2 串之å‰å‰‡ç‚ºçœŸã€‚\n" +" STRING1 > STRING2\n" +" å¦‚æžœæŒ‰å­—å…¸æŽ’åº string1 在 string2 串之å‰å‰‡ç‚ºçœŸã€‚\n" +" \n" +" å…¶ä»–é‹ç®—å­ï¼š\n" +" \n" +" -o é¸é … 如果指定 shell é¸é …啟用則為真。\n" +" -v VAR\t 如果指定 Shell 變數 VAR 已指派則為真。\n" +" -R VAR\t 如果指定 Shell 變數 VAR 已指派且為å稱引用則為真。\n" +" ! EXPR å¦‚æžœè¡¨ç¤ºå¼ expr 為å‡å‰‡ç‚ºçœŸã€‚\n" +" EXPR1 -a EXPR2 如果 expr1 å’Œ expr2 都為真則為真。\n" +" EXPR1 -o EXPR2 如果 expr1 å’Œ expr2 有一個為真則為真。\n" +" \n" +" arg1 OP arg2 算術測試。OP é‹ç®—å­å¯ä»¥æ˜¯ -eqã€-neã€\n" +" -ltã€-leã€-gtã€æˆ– -ge 之一。\n" +" \n" +" 二元算術é‹ç®—回傳真,如果 ARG1 引數等於ã€ä¸ç­‰æ–¼ã€\n" +" å°æ–¼ã€å°æ–¼ç­‰æ–¼ã€å¤§æ–¼ã€æˆ–者大於等於 ARG2 引數。\n" +" \n" +" 退出狀態:\n" +" 如果 EXPR è¡¨ç¤ºå¼æ±‚值為真則回傳æˆåŠŸï¼›å¦‚æžœ EXPR è¡¨ç¤ºå¼æ±‚值\n" +" ç‚ºå‡æˆ–者使用了無效的引數則回傳失敗。" -#: builtins.c:1329 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" " This is a synonym for the \"test\" builtin, but the last argument must\n" " be a literal `]', to match the opening `['." msgstr "" +"求值æ¢ä»¶è¡¨ç¤ºå¼ã€‚\n" +" \n" +" 是內建命令「testã€çš„åŒç¾©è©žï¼Œä½†æ˜¯æœ€å¾Œä¸€å€‹å¼•數必須是\n" +" 字元「]ã€ï¼Œä»¥åŒ¹é…起始的「[ã€ã€‚" -#: builtins.c:1338 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" @@ -3349,8 +4342,15 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" +"顯示行程時間\n" +" \n" +" å°å‡º shell åŠå…¶æ‰€æœ‰å­è¡Œç¨‹çš„累計使用者空間和\n" +" 系統空間執行時間。\n" +" \n" +" 退出狀態:\n" +" 一律æˆåŠŸã€‚" -#: builtins.c:1350 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" @@ -3393,8 +4393,36 @@ msgid "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." msgstr "" +"å°è¨Šè™Ÿå’Œå…¶ä»–事件設陷阱。\n" +" \n" +" 定義一個處ç†å™¨ï¼Œåœ¨ shell 接收到訊號和其他æ¢ä»¶ä¸‹åŸ·è¡Œã€‚\n" +" \n" +" ARG 引數是當 shell 接收到 SIGNAL_SPEC 訊號時讀å–和執行的命令。\n" +" 如果沒有指定 ARG 引數 (並且åªçµ¦å‡ºä¸€å€‹ SIGNAL_SPEC 訊號) 或者\n" +" ARG 引數為\n" +" 「-ã€ï¼Œæ¯ä¸€å€‹æŒ‡å®šçš„引數會被é‡ç½®ç‚ºåŽŸå§‹å€¼ã€‚å¦‚æžœ ARG 引數是一個空串,則æ¯ä¸€" +"個\n" +" SIGNAL_SPEC 訊號會被 shell 和它啟動的命令忽略。\n" +" \n" +" 如果一個 SIGNAL_SPEC 訊號是 EXIT (0) ,則 ARG 命令會在 shell 退出時被\n" +" 執行。如果一個 SIGNAL_SPEC 訊號是 DEBUG,則 ARG 命令會在æ¯ä¸€å€‹ç°¡å–®å‘½\n" +" 令之å‰åŸ·è¡Œã€‚\n" +" \n" +" å¦‚æžœä¸æä¾›å¼•æ•¸ï¼Œtrap å°å‡ºåˆ—表顯示æ¯ä¸€å€‹èˆ‡æ¯ä¸€å€‹è¨Šè™Ÿç›¸é—œè¯çš„命令。\n" +" \n" +" é¸é …:\n" +" -l\tå°å‡ºä¸€å€‹è¨Šè™Ÿåç¨±å’Œå®ƒå€‘å°æ‡‰çš„編號列表\n" +" -p\tå°å‡ºèˆ‡æ¯å€‹ SIGNAL_SPEC 訊號相關è¯çš„陷阱命令\n" +" \n" +" æ¯ä¸€å€‹ SIGNAL_SPEC 訊號å¯ä»¥æ˜¯ 中的訊號å稱或者訊號編號。\n" +" 訊號å稱大å°å¯«ç›¸ç¬¦ä¸”å¯ä»¥ä½¿ç”¨ SIG 字首。訊號å¯ç”¨ã€Œkill - 訊號 $$ã€\n" +" 傳é€çµ¦ shell。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 SIGSPEC。" -#: builtins.c:1386 +#: builtins.c:1393 +#, fuzzy msgid "" "Display information about command type.\n" " \n" @@ -3403,18 +4431,18 @@ msgid "" " \n" " Options:\n" " -a\tdisplay all locations containing an executable named NAME;\n" -" \tincludes aliases, builtins, and functions, if and only if\n" -" \tthe `-p' option is not also used\n" +" \t\tincludes aliases, builtins, and functions, if and only if\n" +" \t\tthe `-p' option is not also used\n" " -f\tsuppress shell function lookup\n" " -P\tforce a PATH search for each NAME, even if it is an alias,\n" -" \tbuiltin, or function, and returns the name of the disk file\n" -" \tthat would be executed\n" +" \t\tbuiltin, or function, and returns the name of the disk file\n" +" \t\tthat would be executed\n" " -p\treturns either the name of the disk file that would be executed,\n" -" \tor nothing if `type -t NAME' would not return `file'.\n" +" \t\tor nothing if `type -t NAME' would not return `file'\n" " -t\toutput a single word which is one of `alias', `keyword',\n" -" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" -" \treserved word, shell function, shell builtin, disk file, or not\n" -" \tfound, respectively\n" +" \t\t`function', `builtin', `file' or `', if NAME is an alias,\n" +" \t\tshell reserved word, shell function, shell builtin, disk file,\n" +" \t\tor not found, respectively\n" " \n" " Arguments:\n" " NAME\tCommand name to be interpreted.\n" @@ -3423,8 +4451,31 @@ msgid "" " Returns success if all of the NAMEs are found; fails if any are not " "found." msgstr "" +"顯示命令類型的資訊。\n" +" \n" +" å°æ–¼æ¯ä¸€å€‹ NAME å稱,指示如果åšç‚ºå‘½ä»¤å®ƒå°‡å¦‚何被解釋。\n" +" \n" +" é¸é …:\n" +" -a\t顯示所有包å«å稱為 NAME çš„å¯åŸ·è¡Œæª”案的ä½ç½®ï¼›\n" +" \t包括別åã€å…§å»ºå’Œå‡½æ•¸ã€‚僅當「-pã€é¸é …沒有使用時\n" +" -f\t抑制 shell 函數查詢\n" +" -P\t為æ¯å€‹ NAME å稱驚醒 PATH 路徑æœå°‹ï¼Œå³ä½¿å®ƒæ˜¯åˆ¥åã€\n" +" \t內建或函數,並且回傳將被執行的ç£ç¢Ÿä¸Šæª”案的å稱。\n" +" -p\t回傳將被執行的ç£ç¢Ÿä¸Šæª”案的å稱,或者當「type -t NAMEã€\n" +" \tä¸å›žå‚³ã€Œfileã€æ™‚,ä¸å›žå‚³ä»»ä½•值。\n" +" -t\t回傳下列詞中的任何一個「aliasã€ã€ã€Œkeywordã€ã€\n" +" \t「functionã€ã€ã€Œbuiltinã€ã€ã€Œfileã€æˆ–者「ã€ï¼Œå¦‚æžœ NAME 是相應的\n" +" \t一個別åã€shell ä¿ç•™å­—ã€shell 函數ã€shell 內建ã€\n" +" \tç£ç¢Ÿæª”案或沒有找到。\n" +" \n" +" 引數:\n" +" NAME\tå°‡è¦è§£æžçš„命令。\n" +" \n" +" 退出狀態:\n" +" 如果所有的 NAME 命令都找到則回傳æˆåŠŸï¼›ä»»ä½•æ‰¾ä¸åˆ°å‰‡å¤±æ•—。" -#: builtins.c:1417 +#: builtins.c:1424 +#, fuzzy msgid "" "Modify shell resource limits.\n" " \n" @@ -3442,6 +4493,7 @@ msgid "" " -e\tthe maximum scheduling priority (`nice')\n" " -f\tthe maximum size of files written by the shell and its children\n" " -i\tthe maximum number of pending signals\n" +" -k\tthe maximum number of kqueues allocated for this process\n" " -l\tthe maximum size a process may lock into memory\n" " -m\tthe maximum resident set size\n" " -n\tthe maximum number of open file descriptors\n" @@ -3453,7 +4505,8 @@ 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" +" -P\tthe maximum number of pseudoterminals\n" +" -T\tthe maximum number of threads\n" " \n" " Not all options are available on all platforms.\n" " \n" @@ -3470,8 +4523,48 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"修改 shell 資æºé™åˆ¶ã€‚\n" +" \n" +" 在å…許此類控制的系統上,æä¾›å°æ–¼ shell åŠå…¶å»ºç«‹çš„行程所å¯ç”¨çš„\n" +" 資æºçš„æŽ§åˆ¶ã€‚\n" +" \n" +" é¸é …:\n" +" -S\t使用軟 (「softã€) 資æºé™åˆ¶\n" +" -H\t使用硬 (「hardã€) 資æºé™åˆ¶\n" +" -a\t所有當å‰é™åˆ¶éƒ½è¢«é€šå ±\n" +" -b\t套接字快å–尺寸\n" +" -c\t建立核心檔案的最大尺寸\n" +" -d\tä¸€å€‹è¡Œç¨‹çš„è³‡æ–™å€æœ€å¤§å°ºå¯¸\n" +" -e\tæœ€é«˜çš„æŽ’ç¨‹å„ªå…ˆé †åº (「niceã€)\n" +" -f\t有 shell åŠå…¶å­è¡Œç¨‹å¯ä»¥å¯«å…¥çš„æœ€å¤§æª”案尺寸\n" +" -i\t最多å¯ä»¥æ‡¸ç½®çš„訊號數\n" +" -l\t一個行程å¯ä»¥éŽ–å®šçš„æœ€å¤§è¨˜æ†¶é«”å°ºå¯¸\n" +" -m\t最大的記憶體進é§å°ºå¯¸\n" +" -n\t最多開啟的檔案æè¿°ç¬¦å€‹æ•¸\n" +" -p\t管é“ç·©è¡å€å°ºå¯¸\n" +" -q\tPOSIX 資訊佇列的最大ä½å…ƒçµ„數\n" +" -r\t實時排程的最大優先順åº\n" +" -s\t最大堆疊尺寸\n" +" -t\t最大的 CPU 時間,以秒為單ä½\n" +" -u\t最大使用者行程數\n" +" -v\t虛擬記憶體尺寸\n" +" -x\t最大的檔案鎖數é‡\n" +" -T\t最大執行緒數é‡\n" +" \n" +" ä¸¦éžæ‰€æœ‰é¸é …在所有系統上å¯ç”¨ã€‚\n" +" \n" +" 如果æä¾›äº† LIMIT 變數,則它為指定資æºçš„æ–°å€¼ï¼›ç‰¹åˆ¥çš„ LIMIT 值為\n" +" 「softã€ã€ã€Œhardã€å’Œã€Œunlimitedã€ï¼Œåˆ†åˆ¥è¡¨ç¤ºç•¶å‰çš„軟é™åˆ¶ï¼Œç¡¬é™åˆ¶å’Œç„¡é™" +"制。\n" +" å¦å‰‡å°å‡ºæŒ‡å®šè³‡æºçš„ç•¶å‰é™åˆ¶å€¼ï¼Œä¸å¸¶é¸é …則å‡å®šç‚º -f\n" +" \n" +" å–值都是 1024 ä½å…ƒçµ„為單ä½ï¼Œé™¤äº† -t 以秒為單ä½ï¼Œ-p 以 512 ä½å…ƒçµ„éžå¢žï¼Œ\n" +" -u 為無尺度的行程數é‡ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者錯誤發生。" -#: builtins.c:1465 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3488,8 +4581,22 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" +"顯示或設定檔案模å¼é®ç½©ã€‚\n" +" \n" +" 設定使用者檔案建立é®ç½©ç‚º MODE 模å¼ã€‚如果çœç•¥äº† MODE,則\n" +" å°å‡ºç•¶å‰é®ç½©çš„值。\n" +" \n" +" 如果 MODE 模å¼ä»¥æ•¸å­—開頭,則被當åšå…«é€²ä½æ•¸å­—è§£æžï¼›å¦å‰‡æ˜¯ä¸€å€‹\n" +" chmod(1) å¯æŽ¥æ”¶çš„ç¬¦è™Ÿæ¨¡å¼ä¸²ã€‚\n" +" \n" +" é¸é …:\n" +" -p\t如果çœç•¥ MDOE 模å¼ï¼Œä»¥å¯é‡ç”¨ç‚ºè¼¸å…¥çš„æ ¼å¼è¼¸å…¥\n" +" -S\t以符號形å¼è¼¸å‡ºï¼Œå¦å‰‡ä»¥å…«é€²ä½æ•¸å­—æ ¼å¼è¼¸å‡º\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„ MODE æ¨¡å¼æˆ–者é¸é …。" -#: builtins.c:1485 +#: builtins.c:1494 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3508,8 +4615,19 @@ msgid "" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" +"等待工作完æˆä¸¦å›žå‚³é€€å‡ºç‹€æ…‹ã€‚\n" +" \n" +" 等待以 ID 編號識別的行程,其中 ID å¯ä»¥æ˜¯è¡Œç¨‹ç·¨è™Ÿæˆ–è€…å·¥ä½œè¦æ ¼ï¼Œ\n" +" 並通報它的終止狀態。如果 ID æ²’æœ‰çµ¦å‡ºï¼Œå‰‡ç­‰å¾…æ‰€æœ‰çš„ç•¶å‰æ´»èºå­\n" +" 行程,並且回傳狀態為零。如果 ID æ˜¯å·¥ä½œè¦æ ¼ï¼Œç­‰å¾…工作管é“中的\n" +" 所有行程。\n" +" \n" +" 若給定了 -n é¸é …,等待下一個工作完æˆä¸¦å›žå‚³å…¶ç‹€æ…‹ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個 ID 行程的狀態;如果使用了無效的 ID 或者é¸é …則失敗。" -#: builtins.c:1506 +#: builtins.c:1515 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -3523,8 +4641,16 @@ msgid "" "invalid\n" " option is given." msgstr "" +"等待行程完æˆä¸¦ä¸”回傳退出狀態。\n" +" \n" +" 等待指定行程並通報它的終止狀態。如果沒有æä¾› PIDï¼Œå‰‡ç•¶å‰æ‰€æœ‰çš„æ´»èº\n" +" å­è¡Œç¨‹éƒ½æœƒè¢«ç­‰å¾…,並且回傳碼為零。PID 必須為行程識別號。\n" +" \n" +" 退出狀態:\n" +" 回傳行程 ID 的狀態;如果 PID 是無效的行程識別號或者指定了無效的é¸é …則失" +"敗。" -#: builtins.c:1521 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3536,8 +4662,16 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"為列表中的æ¯å€‹æˆå“¡åŸ·è¡Œå‘½ä»¤ã€‚\n" +" \n" +" 「forã€è¿´åœˆç‚ºåˆ—表中的æ¯å€‹æˆå“¡åŸ·è¡Œä¸€ç³»åˆ—的命令。如果沒有\n" +" 「in WORDS ...;ã€å‰‡å‡å®šä½¿ç”¨ã€Œin \"$@\"ã€ã€‚å°æ–¼ WORDS 中的æ¯\n" +" 個元素,NAME 被設定為該元素,並且執行 COMMANDS 命令。\n" +" \n" +" 退出狀態:\n" +" 回傳最後執行命令的狀態。" -#: builtins.c:1535 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3553,8 +4687,21 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"ç®—è¡“ for 迴圈。\n" +" \n" +" 等價於\n" +" \t(( EXP1 ))\n" +" \twhile (( EXP2 )); do\n" +" \t\tCOMMANDS\n" +" \t\t(( EXP3 ))\n" +" \tdone\n" +" EXP1ã€EXP2 å’Œ EXP3 都是算術表示å¼ã€‚如果çœç•¥ä»»ä½•表示å¼ï¼Œ\n" +" å‰‡ç­‰åŒæ–¼ä½¿ç”¨äº†æ±‚值為 1 的表示å¼ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳最後執行命令的狀態。" -#: builtins.c:1553 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3573,8 +4720,21 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"從列表中é¸å–詞並且執行命令。\n" +" \n" +" WORDS 變數被展開,生æˆä¸€å€‹å­—詞的列表。展開的字詞集åˆè¢«å°å‡º\n" +" 在標準錯誤輸出è£ç½®ä¸Šï¼Œæ¯å€‹ä»¥ä¸€å€‹æ•¸å­—åšå­—首。如果沒有「in WORDSã€\n" +" 則å‡å®šä½¿ç”¨ã€Œin \"$@\"ã€ã€‚PS3 æç¤ºç¬¦æœƒè¢«é¡¯ç¤ºä¸¦ä¸”從標準輸入讀入一列\n" +" å¦‚æžœè©²åˆ—ç”±è¢«é¡¯ç¤ºå­—è©žå°æ‡‰çš„æ•¸å­—組æˆï¼Œå‰‡ NAME 變數被設定為相應\n" +" 的字詞。如果列為空,則 WORDS 變數和æç¤ºç¬¦è¢«é‡æ–°é¡¯ç¤ºã€‚如果讀å–了\n" +" æª”æ¡ˆçµæŸç¬¦ï¼Œå‰‡å‘½ä»¤å®Œæˆã€‚讀入任何其他的值會導致 NAME 變數被設定\n" +" 為空。讀入的列被存放在變數 REPLY 中。COMMANDS å‘½ä»¤åœ¨æ¯æ¬¡é¸æ“‡\n" +" 之後執行直到執行一個 break 命令。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行命令的狀態。" -#: builtins.c:1574 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3589,8 +4749,20 @@ msgid "" " Exit Status:\n" " The return status is the return status of PIPELINE." msgstr "" +"通報管é“執行的消耗時間。\n" +" \n" +" 執行 PIPELINE 並且å°å‡º PIPELINE çµ‚çµæ™‚實際時間ã€ä½¿ç”¨è€… CPU 時間和系統\n" +" CPU 時間的總çµã€‚\n" +" \n" +" é¸é …:\n" +" -p\t用å¯ç§»æ¤çš„ POSIX æ ¼å¼å°å‡ºç”¨æ™‚總çµã€‚\n" +" \n" +" TIMEFORMAT 變數的值被åšç‚ºè¼¸å‡ºæ ¼å¼ã€‚\n" +" \n" +" 退出狀態:\n" +" å›žå‚³ç‹€æ…‹å³ PIPELINE 的回傳狀態。" -#: builtins.c:1591 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3600,8 +4772,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"基於模å¼åŒ¹é…來執行命令。\n" +" \n" +" 基於 PATTERN 模å¼åŒ¹é…的字詞 WORDï¼Œæœ‰é¸æ“‡çš„執行 COMMANDS 命令。\n" +" 「|ã€ç”¨æ–¼åˆ†éš”多個模å¼ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行命令的狀態。" -#: builtins.c:1603 +#: builtins.c:1612 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3621,8 +4800,18 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"根據æ¢ä»¶åŸ·è¡Œå‘½ä»¤ã€‚\n" +" \n" +" 「if COMMANDSã€åˆ—表被執行。如果退出狀態為零,則執行「then COMMANDSã€\n" +" 列表。å¦å‰‡æŒ‰é †åºåŸ·è¡Œæ¯å€‹ã€Œelif COMMANDSã€åˆ—表,並且如果它的退出狀態為\n" +" é›¶ï¼Œå‰‡åŸ·è¡Œå°æ‡‰çš„「then COMMANDSã€åˆ—表並且 if 命令終止。å¦å‰‡å¦‚果存在的\n" +" 情æ³ä¸‹ï¼ŒåŸ·è¡Œã€Œelse COMMANDSã€åˆ—è¡¨ã€‚æ•´å€‹çµæ§‹çš„退出狀態是最後一個執行\n" +" 命令的狀態,或者如果沒有æ¢ä»¶æ¸¬è©¦ç‚ºçœŸçš„話,則為零。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行命令的狀態。" -#: builtins.c:1620 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3632,8 +4821,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"åªè¦æ¸¬è©¦æˆåŠŸå³åŸ·è¡Œå‘½ä»¤ã€‚\n" +" \n" +" åªè¦åœ¨ã€Œwhileã€COMMANDS ä¸­çš„æœ€çµ‚å‘½ä»¤å›žå‚³çµæžœç‚º 0,則\n" +" 展開並執行 COMMANDS 命令。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行命令的狀態。" -#: builtins.c:1632 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3643,8 +4839,16 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"當測試ä¸åŒéŽæ™‚執行命令。\n" +" \n" +" 「untilã€COMMANDS 命令的最終命令回傳狀態ä¸ç‚º 0 時,\n" +" 展開並執行 COMMANDS 命令。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行命令的狀態。" -#: builtins.c:1644 +#: builtins.c:1653 +#, fuzzy msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3654,10 +4858,19 @@ msgid "" " The default NAME is \"COPROC\".\n" " \n" " Exit Status:\n" -" Returns the exit status of COMMAND." +" The coproc command returns an exit status of 0." msgstr "" +"建立一個以 NAME 為å的副行程。\n" +" \n" +" éžåŒæ­¥åŸ·è¡Œ COMMANDS 命令,在執行 shell 中的陣列變數 NAME\n" +" çš„ 0 號和 1 號元素åšç‚ºæª”案æè¿°ç¬¦ï¼Œä»¥ä¸€å€‹ç®¡é“連接命令\n" +" 分別åšç‚ºå‘½ä»¤çš„æ¨™æº–輸出和輸入è£ç½®ã€‚\n" +" é è¨­çš„ NAME 是「COPROCã€ã€‚\n" +" \n" +" 退出狀態:\n" +" 回傳 COMMAND 命令的退出狀態。" -#: builtins.c:1658 +#: builtins.c:1667 msgid "" "Define shell function.\n" " \n" @@ -3670,8 +4883,17 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is readonly." msgstr "" +"定義 shell 函數。\n" +" \n" +" 建立一個以 NAME 為åçš„ shell 函數。當åšç‚ºä¸€å€‹ç°¡å–®çš„命令啟用時,\n" +" NAME å‡½æ•¸åŸ·è¡Œå‘¼å« shell 語境中的 COMMANDs 命令。當 NAME\n" +" 被啟用時,引數åšç‚º $1…$n 被傳éžçµ¦å‡½æ•¸ï¼Œå‡½æ•¸çš„å字儲存在變數\n" +" $FUNCNAME 中。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸé™¤éž NAME 為唯讀。" -#: builtins.c:1672 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3681,8 +4903,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" +"將命令組åˆç‚ºä¸€å€‹å–®å…ƒã€‚\n" +" \n" +" 執行群組中的命令集åˆã€‚é€™æ˜¯å°æ•´å€‹å‘½ä»¤é›†åˆ\n" +" åšé‡å®šå‘的方法之一。\n" +" \n" +" 退出狀態:\n" +" 回傳最後一個執行命令的狀態。" -#: builtins.c:1684 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3695,8 +4924,18 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" +"在å‰è‡ºç¹¼çºŒå·¥ä½œ\n" +" \n" +" å°æ–¼ JOB_SPEC 引數來說和「fgã€å‘½ä»¤ç­‰åŒã€‚繼續一個\n" +" åœæ­¢çš„æˆ–者後臺工作。JOB_SPEC å¯ä»¥æŒ‡å®šä¸€å€‹å·¥ä½œ\n" +" å字或工作號。在 JOB_SPEC 後加上一個「&ã€å°‡æœƒæŠŠ\n" +" 工作放至後臺,就åƒå·¥ä½œè¦æ ¼è¢«åšç‚ºã€Œbgã€å‘½ä»¤çš„引數\n" +" 執行一樣。\n" +" \n" +" 退出狀態:\n" +" 回傳被繼續的工作狀態。" -#: builtins.c:1699 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3706,8 +4945,15 @@ msgid "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" +"求值算術表示å¼ã€‚\n" +" \n" +" è¡¨ç¤ºå¼æŒ‰ç…§ç®—術法則進行求值。\n" +" 等價於「let 表示å¼ã€ã€‚\n" +" \n" +" 退出狀態:\n" +" å¦‚æžœè¡¨ç¤ºå¼æ±‚值為 0 則回傳 1ï¼›å¦å‰‡å›žå‚³ 0。" -#: builtins.c:1711 +#: builtins.c:1720 msgid "" "Execute conditional command.\n" " \n" @@ -3734,8 +4980,28 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" +"執行æ¢ä»¶å‘½ä»¤ã€‚\n" +" \n" +" 根據æ¢ä»¶è¡¨ç¤ºå¼ EXPRESSION 的求值回傳狀態 0 或 1ã€‚è¡¨ç¤ºå¼æŒ‰ç…§\n" +" 「testã€å…§å»ºçš„ç›¸åŒæ¢ä»¶çµ„æˆï¼Œæˆ–者å¯ä»¥æœ‰ä¸‹åˆ—é‹ç®—å­é€£æŽ¥è€Œæˆï¼š\n" +" \n" +" ( EXPRESSION )\t回傳 EXPRESSION 表示å¼çš„值\n" +" ! EXPRESSION\t\t如果 EXPRESSION 表示å¼ç‚ºå‡å‰‡ç‚ºçœŸï¼Œå¦å‰‡ç‚ºå‡\n" +" EXPR1 && EXPR2\t如果 EXPR1 å’Œ EXPR2 表示å¼å‡ç‚ºçœŸå‰‡ç‚ºçœŸï¼Œå¦å‰‡ç‚ºå‡\n" +" EXPR1 || EXPR2\t如果 EXPR1 å’Œ EXPR2 表示å¼ä¸­æœ‰ä¸€å€‹ç‚ºçœŸå‰‡ç‚ºçœŸï¼Œå¦å‰‡ç‚º" +"å‡\n" +" \n" +" 當使用「==ã€å’Œã€Œ!=ã€é‹ç®—å­æ™‚,é‹ç®—å­å³é‚Šçš„字串被用作模å¼ä¸¦ä¸”執行一個\n" +" 匹é…。當使用「=~ã€é‹ç®—å­æ™‚,é‹ç®—å­å³é‚Šçš„å­—ä¸²è¢«ç•¶åšæ­£å‰‡è¡¨ç¤ºå¼ä¾†é€²è¡Œ\n" +" 匹é…。\n" +" \n" +" é‹ç®—å­ && å’Œ || å°‡ä¸å° EXPR2 表示å¼é€²è¡Œæ±‚值,如果 EXPR1 表示å¼è¶³å¤ ç¢ºå®š\n" +" 整個表示å¼çš„值。\n" +" \n" +" 退出狀態:\n" +" 根據 EXPRESSION 的值為 0 或 1。" -#: builtins.c:1737 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3788,8 +5054,50 @@ msgid "" " HISTIGNORE\tA colon-separated list of patterns used to decide which\n" " \t\tcommands should be saved on the history list.\n" msgstr "" +"常用 shell 變數å稱和使用。\n" +" \n" +" BASH_VERSION\tç•¶å‰ Bash 的版本資訊。\n" +" CDPATH\t用於「cdã€å‘½ä»¤å¼•數æœå°‹åˆ†è™Ÿåˆ†éš”的目錄列表\n" +" GLOBIGNORE\t路徑擴充套件時忽略的檔ååŒ¹é…æ¨¡å¼åˆ—表,\n" +" \t\t以分號分隔。\n" +" HISTFILE\t您的命令歷å²è¨˜éŒ„存放的檔案å稱。\n" +" HISTFILESIZE\tæ­·å²è¨˜éŒ„檔案最多å¯ä»¥å„²å­˜çš„列數。\n" +" HISTSIZE\t一個執行的 shell 最多å¯ä»¥è¨ªå•的歷å²è¨˜éŒ„命令列數。\n" +" HOME\t您登入目錄的完整路徑。\n" +" HOSTNAME\tç•¶å‰ä¸»æ©Ÿçš„主機å。\n" +" HOSTTYPE\tç•¶å‰ç‰ˆæœ¬çš„ BASH 在其之上執行的 CPU 類型。\n" +" IGNOREEOF\t控制 shell æ”¶åˆ°æª”æ¡ˆçµæŸç¬¦åšç‚ºå–®ä¸€è¼¸å…¥å¾Œçš„\n" +" \t\t動作。如果設定這個變數,則它的值是 shell 退出之å‰åœ¨\n" +" \t\t一個空列上å¯ä»¥é€£çºŒçœ‹åˆ°çš„æª”æ¡ˆçµæŸç¬¦æ•¸é‡(é è¨­ç‚º 10)。\n" +" \t\tæœªè¨­å®šæ™‚ï¼Œæª”æ¡ˆçµæŸç¬¦æ¨™èªŒè‘—è¼¸å…¥çš„çµæŸã€‚\n" +" MACHTYPE\tæè¿°ç•¶å‰åŸ·è¡Œ Bash 的系統字串。\n" +" MAILCHECK\tBash 檢測新郵件的頻率,以秒為單ä½ã€‚\n" +" MAILPATH\tBash 從中檢測新郵件的檔案列表,以分號分隔。\n" +" OSTYPE\t執行 Bash çš„ Unix 版本。\n" +" PATH\t當尋找命令時æœå°‹çš„目錄列表,以冒號分隔。\n" +" PROMPT_COMMAND\tå°å‡ºæ¯ä¸€å€‹ä¸»æç¤ºç¬¦ä¹‹å‰åŸ·è¡Œçš„命\n" +" \t\t令。\n" +" PS1\t\t主æç¤ºç¬¦å­—串。\n" +" PS2\t\t從æç¤ºç¬¦å­—串。\n" +" PWD\t\tç•¶å‰ç›®éŒ„的完整路徑。\n" +" SHELLOPTS\t已啟用的 shell é¸é …列表,以冒號分隔。\n" +" TERM\tç•¶å‰çµ‚端類型的å稱。\n" +" TIMEFORMAT\t以關éµå‰‡ã€Œtimeã€é¡¯ç¤ºçš„æ™‚間統計資訊的輸出\n" +" \t\tæ ¼å¼ã€‚\n" +" auto_resume\téžç©ºæ™‚,一個單ç¨çš„命令詞會首先被在當å‰\n" +" \t\tåœæ­¢çš„工作列表中æœç´¢ã€‚如果找到則該工作被置於å‰è‡ºã€‚\n" +" \t\t如果值為「exactã€å‰‡æ„味著命令詞必須精確匹é…åœæ­¢å·¥ä½œ\n" +" \t\t列表中的命令。如果值為「substringã€å‰‡æ„味著命令詞必\n" +" \t\t須匹é…工作的一個å­å­—串。任何其他的值æ„味著命令詞\n" +" \t\tå¿…é ˆæ˜¯åœæ­¢å·¥ä½œçš„一個字首。\n" +" histchars\t控制歷å²è¨˜éŒ„展開和快速替æ›çš„字元。第一個字元是\n" +" \t\tæ­·å²è¨˜éŒ„替æ›å­—元,通常是「!ã€ã€‚第二個字元是快速替æ›å­—元,\n" +" \t\t通常是「^ã€ã€‚第三個是歷å²è¨˜éŒ„註釋字元,通常是「#ã€ã€‚\n" +" HISTIGNORE\t用於決定哪些命令被存入歷å²è¨˜éŒ„檔案的模å¼\n" +" \t\t列表,以冒號分隔。\n" -#: builtins.c:1794 +#: builtins.c:1803 +#, fuzzy msgid "" "Add directories to stack.\n" " \n" @@ -3799,19 +5107,19 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when adding\n" -" \tdirectories to the stack, so only the stack is manipulated.\n" +" \t\tdirectories to the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the left of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the left of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " -N\tRotates the stack so that the Nth directory (counting\n" -" \tfrom the right of the list shown by `dirs', starting with\n" -" \tzero) is at the top.\n" +" \t\tfrom the right of the list shown by `dirs', starting with\n" +" \t\tzero) is at the top.\n" " \n" " dir\tAdds DIR to the directory stack at the top, making it the\n" -" \tnew current working directory.\n" +" \t\tnew current working directory.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3819,8 +5127,29 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"從堆疊中刪除目錄。\n" +" \n" +" 從目錄堆疊中刪除æ¢ç›®ã€‚ä¸å¸¶å¼•數時,刪除堆疊頂端目錄,並變更至新的堆疊\n" +" 頂端目錄。\n" +" \n" +" é¸é …:\n" +" -n\tæŠ‘åˆ¶å¾žå †ç–Šä¸­åˆªé™¤ç›®éŒ„æ™‚é€šå¸¸çš„ç›®éŒ„è®Šæ›æ“作,從而僅å°å †ç–Š\n" +" \t進行æ“作。\n" +" \n" +" 引數:\n" +" +N\t刪除第 N 個目錄 (「dirsã€é¡¯ç¤ºçš„目錄列表中左起,從零開始)。\n" +" \t例如:「popd +0ã€åˆªé™¤ç¬¬ä¸€å€‹ç›®éŒ„,「popd +1ã€åˆªé™¤ç¬¬äºŒå€‹ã€‚\n" +" \n" +" -N\t刪除第 N 個目錄 (「dirsã€é¡¯ç¤ºçš„目錄列表中å³èµ·ï¼Œå¾žé›¶é–‹å§‹)。\n" +" \t例如:「popd -0ã€åˆªé™¤æœ€å¾Œä¸€å€‹ç›®éŒ„,,「popd -1ã€åˆªé™¤å€’數第二個。\n" +" \n" +" 「dirsã€å…§å»ºé¡¯ç¤ºç›®éŒ„堆疊。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„引數或者目錄變æ›å¤±æ•—。" -#: builtins.c:1828 +#: builtins.c:1837 +#, fuzzy msgid "" "Remove directories from stack.\n" " \n" @@ -3829,16 +5158,16 @@ msgid "" " \n" " Options:\n" " -n\tSuppresses the normal change of directory when removing\n" -" \tdirectories from the stack, so only the stack is manipulated.\n" +" \t\tdirectories from the stack, so only the stack is manipulated.\n" " \n" " Arguments:\n" " +N\tRemoves the Nth entry counting from the left of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd +0'\n" -" \tremoves the first directory, `popd +1' the second.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd +0'\n" +" \t\tremoves the first directory, `popd +1' the second.\n" " \n" " -N\tRemoves the Nth entry counting from the right of the list\n" -" \tshown by `dirs', starting with zero. For example: `popd -0'\n" -" \tremoves the last directory, `popd -1' the next to last.\n" +" \t\tshown by `dirs', starting with zero. For example: `popd -0'\n" +" \t\tremoves the last directory, `popd -1' the next to last.\n" " \n" " The `dirs' builtin displays the directory stack.\n" " \n" @@ -3846,8 +5175,29 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" +"從堆疊中刪除目錄。\n" +" \n" +" 從目錄堆疊中刪除æ¢ç›®ã€‚ä¸å¸¶å¼•數時,刪除堆疊頂端目錄,並變更至新的堆疊\n" +" 頂端目錄。\n" +" \n" +" é¸é …:\n" +" -n\tæŠ‘åˆ¶å¾žå †ç–Šä¸­åˆªé™¤ç›®éŒ„æ™‚é€šå¸¸çš„ç›®éŒ„è®Šæ›æ“作,從而僅å°å †ç–Š\n" +" \t進行æ“作。\n" +" \n" +" 引數:\n" +" +N\t刪除第 N 個目錄 (「dirsã€é¡¯ç¤ºçš„目錄列表中左起,從零開始)。\n" +" \t例如:「popd +0ã€åˆªé™¤ç¬¬ä¸€å€‹ç›®éŒ„,「popd +1ã€åˆªé™¤ç¬¬äºŒå€‹ã€‚\n" +" \n" +" -N\t刪除第 N 個目錄 (「dirsã€é¡¯ç¤ºçš„目錄列表中å³èµ·ï¼Œå¾žé›¶é–‹å§‹)。\n" +" \t例如:「popd -0ã€åˆªé™¤æœ€å¾Œä¸€å€‹ç›®éŒ„,,「popd -1ã€åˆªé™¤å€’數第二個。\n" +" \n" +" 「dirsã€å…§å»ºé¡¯ç¤ºç›®éŒ„堆疊。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„引數或者目錄變æ›å¤±æ•—。" -#: builtins.c:1858 +#: builtins.c:1867 +#, fuzzy msgid "" "Display directory stack.\n" " \n" @@ -3858,25 +5208,45 @@ msgid "" " Options:\n" " -c\tclear the directory stack by deleting all of the elements\n" " -l\tdo not print tilde-prefixed versions of directories relative\n" -" \tto your home directory\n" +" \t\tto your home directory\n" " -p\tprint the directory stack with one entry per line\n" " -v\tprint the directory stack with one entry per line prefixed\n" -" \twith its position in the stack\n" +" \t\twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" +N\tDisplays the Nth entry counting from the left of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" -" \tdirs when invoked without options, starting with zero.\n" +" -N\tDisplays the Nth entry counting from the right of the list\n" +" \t\tshown by dirs when invoked without options, starting with\n" +" \t\tzero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"顯示目錄堆疊。\n" +" \n" +" 顯示當å‰è¨˜ä½çš„目錄列表。藉由「pushdã€å‘½ä»¤å¯ä»¥å°‡ç›®éŒ„存入列表\n" +" 中;「popdã€å‘½ä»¤å¯ç”¨æ–¼é歷彈出列表。\n" +" \n" +" é¸é …:\n" +" -c\t刪除所有元素以清空目錄堆疊\n" +" -l\tä¸å°å‡ºèˆ‡ä¸»ç›®éŒ„相關的波浪號字首的目錄\n" +" -p\tæ¯åˆ—一個æ¢ç›®å°å‡ºç›®éŒ„堆疊\n" +" -v\tæ¯åˆ—一個æ¢ç›®ï¼Œä»¥å †ç–Šä¸­ä½ç½®ç‚ºå­—首å°å‡ºç›®éŒ„堆疊\n" +" \n" +" 引數:\n" +" +N\t顯示 dirs ä¸å¸¶é¸é …啟動時顯示的目錄列表左起中第\n" +" \tN 個目錄,從零開始。\n" +" \n" +" -N\t顯示 dirs ä¸å¸¶é¸é …啟動時顯示的目錄列表å³èµ·ä¸­ç¬¬\n" +" \tN 個目錄,從零開始。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生錯誤。" -#: builtins.c:1887 +#: builtins.c:1898 msgid "" "Set and unset shell options.\n" " \n" @@ -3896,8 +5266,25 @@ msgid "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." msgstr "" +"è¨­å®šå’Œå–æ¶ˆè¨­å®š shell é¸é …。\n" +" \n" +" 變更æ¯å€‹ shell é¸é … OPTNAME 的設定。ä¸å¸¶å¼•數\n" +" 時,列出所有 shell é¸é …並標註æ¯ä¸€å€‹é¸é …是å¦è¢«\n" +" 設定。\n" +" \n" +" é¸é …:\n" +" -o\té™åˆ¶ OPTNAME 為定義用於「set -oã€çš„é¸é …\n" +" -p\tå°å‡ºæ¯å€‹ shell é¸é …並標註它的狀態。\n" +" -q\t抑制輸出\n" +" -s\t啟用(設定)æ¯å€‹ OPTNAME é¸é …\n" +" -u\tåœç”¨(å–æ¶ˆè¨­å®š)æ¯å€‹ OPTNAME é¸é …\n" +" \n" +" 退出狀態:\n" +" 如果 OPTNAME é¸é …被啟用則回傳æˆåŠŸï¼›å¦‚æžœæ˜¯\n" +" 無效的é¸é …或 OPTNAME 被åœç”¨å‰‡å¤±æ•—。" -#: builtins.c:1908 +#: builtins.c:1919 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3914,15 +5301,15 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in " -"printf(1),\n" +" In addition to the standard format specifications described in printf" +"(1),\n" " printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " +" %(fmt)T\toutput the date-time string resulting from using FMT as a " "format\n" -" string for strftime(3)\n" +" \t string for strftime(3)\n" " \n" " The format is re-used as necessary to consume all of the arguments. If\n" " there are fewer arguments than the format requires, extra format\n" @@ -3935,8 +5322,25 @@ msgid "" "assignment\n" " error occurs." msgstr "" +"在 FORMAT 的控制下格å¼åŒ–並å°å‡º ARGUMENTS 引數。\n" +" \n" +" é¸é …:\n" +" -v var\t將輸出指派給 shell 變數 VAR 而ä¸é¡¯ç¤ºåœ¨æ¨™æº–輸出上\n" +" \n" +" FORMAT 是包å«ä¸‰ç¨®ç‰©ä»¶çš„字串:簡單地被複製到標準輸出的普通字元;\n" +" 被變æ›ä¹‹å¾Œè¤‡è£½åˆ°æ¨™æº–è¼¸å…¥çš„é€¸å‡ºå­—å…ƒï¼›ä»¥åŠæ¯å€‹éƒ½æœƒå½±éŸ¿åˆ°ä¸‹å€‹å¼•數的å°å‡ºæ ¼å¼" +"åŒ–è¦æ ¼ã€‚\n" +" \n" +" 在 printf(1) 中æè¿°çš„æ¨™æº–æŽ§åˆ¶è¦æ ¼ä¹‹å¤–,printf è§£æžï¼š\n" +"〠\n" +" %b\tæ“´å……å¥—ä»¶å°æ‡‰å¼•æ•¸ä¸­çš„åæ–œç·šé€¸å‡ºåºåˆ—\n" +" %q\t以å¯åšç‚º shell 輸入的格å¼å¼•用引數\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生寫入或指派錯誤。" -#: builtins.c:1942 +#: builtins.c:1953 +#, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3949,11 +5353,11 @@ msgid "" " Options:\n" " -p\tprint existing completion specifications in a reusable format\n" " -r\tremove a completion specification for each NAME, or, if no\n" -" \tNAMEs are supplied, all completion specifications\n" +" \t\tNAMEs are supplied, all completion specifications\n" " -D\tapply the completions and actions as the default for commands\n" -" \twithout any specific completion defined\n" +" \t\twithout any specific completion defined\n" " -E\tapply the completions and actions to \"empty\" commands --\n" -" \tcompletion attempted on a blank line\n" +" \t\tcompletion attempted on a blank line\n" " \n" " When completion is attempted, the actions are applied in the order the\n" " uppercase-letter options are listed above. The -D option takes\n" @@ -3962,8 +5366,25 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"è¦æ ¼ readline 如何完æˆè®€å–引數。\n" +" \n" +" è¦æ ¼å°æ–¼æ¯ä¸€å€‹ NAME å稱如何完æˆè®€å–引數。如果ä¸å¸¶é¸é …,\n" +" ç¾æœ‰çš„è£œå®Œè¦æ ¼æœƒä»¥å¯ä»¥é‡ç”¨ç‚ºè¼¸å…¥çš„æ ¼å¼å°å‡ºã€‚\n" +" \n" +" é¸é …:\n" +" -p\t以å¯é‡ç”¨çš„æ ¼å¼å°å‡ºç¾æœ‰çš„è£œå®Œè¦æ ¼ã€‚\n" +" -r\tå°æ–¼æ¯å€‹ NAME åç¨±åˆªé™¤è£œå®Œè¦æ ¼ï¼Œæˆ–者如果沒有æä¾› NAME\n" +" \tåç¨±ï¼Œåˆªé™¤æ‰€æœ‰çš„è£œå®Œè¦æ ¼ã€‚\n" +" -D\tå°æ–¼æ²’æœ‰è£œå®Œè¦æ ¼å®šç¾©çš„命令,設定é è¨­çš„補完動作\n" +" -E\tå°æ–¼ã€Œemptyã€å‘½ä»¤è¨­å®šè£œå®Œå‹•作,—— å°æ–¼ç©ºåˆ—的補完。\n" +" \n" +" 嘗試補完時,按照上述大寫字æ¯é¸é …的順åºé€²è¡Œå‹•作。-D é¸é …優先\n" +" 級高於 -E é¸é …。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者錯誤發生。" -#: builtins.c:1970 +#: builtins.c:1981 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -3975,8 +5396,16 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" +"便“šé¸é …顯示å¯èƒ½çš„補完。\n" +" \n" +" æ„圖在能產生å¯èƒ½çš„補完 shell 函數內部使用。\n" +" 如果æä¾›äº†å¯é¸çš„ WORD 引數,則產生按照 WORD\n" +" 進行的匹é…。\n" +" \n" +" 退出狀態:\n" +" 除éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者錯誤發生,å¦å‰‡å›žå‚³æˆåŠŸã€‚" -#: builtins.c:1985 +#: builtins.c:1996 msgid "" "Modify or display completion options.\n" " \n" @@ -4006,8 +5435,30 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" +"修改或顯示補完é¸é …。\n" +" \n" +" 修改æ¯å€‹ NAME å稱的補完é¸é …,或如果沒有æä¾› NAME å稱,執行當å‰çš„補" +"完。\n" +" 如果ä¸å¸¶é¸é …,å°å‡ºæ¯å€‹ NAME å稱的補完é¸é …或當å‰çš„è£œå®Œè¦æ ¼ã€‚\n" +" \n" +" é¸é …:\n" +" \t-o option\t為æ¯å€‹ NAME å稱設定補完é¸é … option\n" +" \t-D\t\t為「defaultã€å‘½ä»¤è£œå®Œè®Šæ›´é¸é …\n" +" \t-E\t\t為「emptyã€å‘½ä»¤è£œå®Œè®Šæ›´é¸é …\n" +" \n" +" 使用「+oã€è€Œä¸æ˜¯ã€Œ-oã€å¯ä»¥é—œé–‰æŒ‡å®šçš„é¸é …。\n" +" \n" +" 引數:\n" +" \n" +" æ¯å€‹ NAME åç¨±éƒ½å°æ‡‰ä¸€å€‹ä¹‹å‰ä»¥è—‰ç”±ã€Œcompleteã€å…§å»ºå®šç¾©äº†è£œå®Œè¦æ ¼çš„\n" +" å‘½ä»¤ã€‚å¦‚æžœä¸æä¾› NAME å稱,當å‰ç”Ÿæˆè£œå®Œçš„å‡½æ•¸å¿…é ˆå‘¼å« compopt,\n" +" 並且當å‰åŸ·è¡Œçš„補完生æˆå™¨é¸é …會被修改。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 NAME åç¨±æ²’æœ‰å®šç¾©è£œå®Œè¦æ ¼ã€‚" -#: builtins.c:2015 +#: builtins.c:2026 +#, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4018,20 +5469,21 @@ msgid "" " is the default ARRAY.\n" " \n" " Options:\n" +" -d delim\tUse DELIM to terminate lines, instead of newline\n" " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" +"copied\n" " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" -" -s count \tDiscard the first COUNT lines read.\n" -" -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" -" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +"index is 0\n" +" -s count\tDiscard the first COUNT lines read\n" +" -t\tRemove a trailing DELIM from each line read (default newline)\n" +" -u fd\tRead lines from file descriptor FD instead of the standard " +"input\n" +" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n" +" -c quantum\tSpecify the number of lines read between each call to\n" +" \t\t\tCALLBACK\n" " \n" " Arguments:\n" -" ARRAY\t\tArray variable name to use for file data.\n" +" ARRAY\tArray variable name to use for file data\n" " \n" " If -C is supplied without -c, the default quantum is 5000. When\n" " CALLBACK is evaluated, it is supplied the index of the next array\n" @@ -4047,19 +5499,65 @@ msgid "" "or\n" " not an indexed array." msgstr "" +"從標準輸入讀å–列到索引陣列變數中。\n" +" \n" +" 從標準輸入讀å–列到索引陣列變數 ARRAY 中,或者如果使用了 -u é¸é …,\n" +" 從檔案æè¿°ç¬¦ FD 中讀å–。MAPFILE 變數是é è¨­çš„ ARRAY 變數。\n" +" \n" +" é¸é …:\n" +" -n count\t最多複製 COUNT 列,如果 COUNT 為 0,則複製所有列。\n" +" -O origin\t從索引 ORIGIN é–‹å§‹ 指派給 ARRAY 變數。é è¨­ç´¢å¼•是 0。\n" +" -s count \t丟棄最先讀å–çš„ COUNT 列。\n" +" -t\t\t從讀å–çš„æ¯åˆ—末尾刪除一個æ›åˆ—符。\n" +" -u fd\t\t從檔案æè¿°ç¬¦ FD 中讀å–åˆ—è€Œä¸æ˜¯æ¨™æº–輸入。\n" +" -C callback\tæ¯ QUANTUM æ¬¡è®€åˆ—ä¹‹å¾Œå° CALLBACK 回呼求值。\n" +" -c quantum\tå®šç¾©æ¯æ¬¡å‘¼å« CALLBACK 回呼之間讀å–的列數。\n" +" \n" +" 引數:\n" +" ARRAY\t\t儲存資料使用的陣列變數\n" +" \n" +" 如果使用了 -C 而沒有 -c,é è¨­çš„å®šé‡æ˜¯ 5000ã€‚ç•¶å° CALLBACK 求值時,\n" +" 下一個將被指派的陣列元素索引åšç‚ºé¡å¤–引數被傳éžã€‚\n" +" \n" +" å¦‚æžœæ²’æœ‰é¡¯å¼æŒ‡å®šèµ·å§‹ç´¢å¼•,mapfile å°‡åœ¨æŒ‡æ´¾å‰æ¸…空 ARRAY 變數。\n" +" \n" +" 退出狀態:\n" +" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …,或者 ARRAY è®Šæ•¸å”¯è®€æˆ–ä¸æ˜¯ç´¢å¼•陣列。" -#: builtins.c:2049 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +"從一個檔案中讀å–列到陣列變數中\n" +" \n" +" 一個「mapfileã€çš„åŒç¾©è©žã€‚" + +#, fuzzy +#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc." +#~ msgstr "著作權所有 (C) 2013 自由軟體基金會" + +#~ msgid ":" +#~ msgstr ":" + +#~ msgid "true" +#~ msgstr "true" + +#~ msgid "false" +#~ msgstr "false" + +#~ msgid "times" +#~ msgstr "times" + +#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc." +#~ msgstr "著作權所有 (C) 2013 自由軟體基金會。" #~ msgid "requesting resize" #~ msgstr "è¦æ±‚調整" #~ msgid "just resized" -#~ msgstr "åªæ˜¯å¤§å°" +#~ msgstr "åªæ˜¯èª¿æ•´å¤§å°" #~ msgid "bug: unknown operation" -#~ msgstr "bug:未知æ“作" +#~ msgstr "bugï¼šä¸æ˜Žæ“作" diff --git a/print_cmd.c b/print_cmd.c index ea63dca..5a1ec5f 100644 --- a/print_cmd.c +++ b/print_cmd.c @@ -1,6 +1,6 @@ /* print_command -- A way to make readable commands from a command tree. */ -/* Copyright (C) 1989-2011 Free Software Foundation, Inc. +/* Copyright (C) 1989-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -41,6 +41,7 @@ #include "shell.h" #include "flags.h" #include /* use <...> so we pick it up from the build directory */ +#include "input.h" #include "shmbutil.h" @@ -51,6 +52,7 @@ extern int printf __P((const char *, ...)); /* Yuck. Double yuck. */ #endif extern int indirection_level; +extern int posixly_correct; static int indentation; static int indentation_amount = 4; @@ -513,7 +515,11 @@ xtrace_print_assignment (name, value, assign_list, xflags) fflush (xtrace_fp); } -/* A function to print the words of a simple command when set -x is on. */ +/* A function to print the words of a simple command when set -x is on. Also + used to print the word list in a for or select command header; in that case, + we suppress quoting the words because they haven't been expanded yet. + XTFLAGS&1 means to print $PS4; XTFLAGS&2 means to suppress quoting the + words in LIST. */ void xtrace_print_word_list (list, xtflags) WORD_LIST *list; @@ -524,7 +530,7 @@ xtrace_print_word_list (list, xtflags) CHECK_XTRACE_FP; - if (xtflags) + if (xtflags&1) fprintf (xtrace_fp, "%s", indirection_level_string ()); for (w = list; w; w = w->next) @@ -532,6 +538,8 @@ xtrace_print_word_list (list, xtflags) t = w->word->word; if (t == 0 || *t == '\0') fprintf (xtrace_fp, "''%s", w->next ? " " : ""); + else if (xtflags & 2) + fprintf (xtrace_fp, "%s%s", t, w->next ? " " : ""); else if (sh_contains_shell_metas (t)) { x = sh_single_quote (t); @@ -574,7 +582,7 @@ xtrace_print_for_command_head (for_command) CHECK_XTRACE_FP; fprintf (xtrace_fp, "%s", indirection_level_string ()); fprintf (xtrace_fp, "for %s in ", for_command->name->word); - xtrace_print_word_list (for_command->map_list, 0); + xtrace_print_word_list (for_command->map_list, 2); } static void @@ -632,7 +640,7 @@ xtrace_print_select_command_head (select_command) CHECK_XTRACE_FP; fprintf (xtrace_fp, "%s", indirection_level_string ()); fprintf (xtrace_fp, "select %s in ", select_command->name->word); - xtrace_print_word_list (select_command->map_list, 0); + xtrace_print_word_list (select_command->map_list, 2); } static void @@ -802,7 +810,7 @@ print_if_command (if_command) newline ("fi"); } -#if defined (DPAREN_ARITHMETIC) +#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) void print_arith_command (arith_cmd_list) WORD_LIST *arith_cmd_list; @@ -1275,7 +1283,11 @@ print_function_def (func) REDIRECT *func_redirects; func_redirects = NULL; - cprintf ("function %s () \n", func->name->word); + /* When in posix mode, print functions as posix specifies them. */ + if (posixly_correct == 0) + cprintf ("function %s () \n", func->name->word); + else + cprintf ("%s () \n", func->name->word); add_unwind_protect (reset_locals, 0); indent (indentation); @@ -1334,7 +1346,11 @@ named_function_string (name, command, flags) deferred_heredocs = 0; if (name && *name) - cprintf ("%s ", name); + { + if (find_reserved_word (name) >= 0) + cprintf ("function "); + cprintf ("%s ", name); + } cprintf ("() "); diff --git a/quit.h b/quit.h index 704a847..db8a776 100644 --- a/quit.h +++ b/quit.h @@ -41,7 +41,7 @@ extern volatile sig_atomic_t terminating_signal; #define CHECK_ALRM \ do { \ if (sigalrm_seen) \ - longjmp (alrmbuf, 1); \ + sh_longjmp (alrmbuf, 1); \ } while (0) #define SETINTERRUPT interrupt_state = 1 @@ -50,6 +50,8 @@ extern volatile sig_atomic_t terminating_signal; #define ADDINTERRUPT interrupt_state++ #define DELINTERRUPT interrupt_state-- +#define ISINTERRUPT interrupt_state != 0 + /* The same sort of thing, this time just for signals that would ordinarily cause the shell to terminate. */ @@ -63,8 +65,8 @@ extern volatile sig_atomic_t terminating_signal; #define CHECK_WAIT_INTR \ do { \ - if (wait_signal_received && this_shell_builtin && (this_shell_builtin == wait_builtin)) \ - longjmp (wait_intr_buf, 1); \ + if (wait_intr_flag && wait_signal_received && this_shell_builtin && (this_shell_builtin == wait_builtin)) \ + sh_longjmp (wait_intr_buf, 1); \ } while (0) #define RESET_SIGTERM \ diff --git a/redir.c b/redir.c index e514976..25488ea 100644 --- a/redir.c +++ b/redir.c @@ -1,6 +1,6 @@ /* redir.c -- Functions to perform input and output redirection. */ -/* Copyright (C) 1997-2012 Free Software Foundation, Inc. +/* Copyright (C) 1997-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -52,6 +52,7 @@ extern int errno; #include "flags.h" #include "execute_cmd.h" #include "redir.h" +#include "trap.h" #if defined (BUFFERED_INPUT) # include "input.h" @@ -115,9 +116,9 @@ redirection_error (temp, error) int oflags; allocname = 0; - if (temp->rflags & REDIR_VARASSIGN) + if ((temp->rflags & REDIR_VARASSIGN) && error < 0) filename = allocname = savestring (temp->redirector.filename->word); - else if (temp->redirector.dest < 0) + else if ((temp->rflags & REDIR_VARASSIGN) == 0 && temp->redirector.dest < 0) /* This can happen when read_token_word encounters overflow, like in exec 4294967297>x */ filename = _("file descriptor out of range"); @@ -324,7 +325,7 @@ write_here_string (fd, redirectee) /* Now that we've changed the variable search order to ignore the temp environment, see if we need to change the cached IFS values. */ sv_ifs ("IFS"); - herestr = expand_string_to_string (redirectee->word, 0); + herestr = expand_string_unsplit_to_string (redirectee->word, 0); expanding_redir = 0; /* Now we need to change the variable search order back to include the temp environment. We force the temp environment search by forcing @@ -410,8 +411,11 @@ write_here_document (fd, redirectee) may need to be reconsidered later. */ if ((fd2 = dup (fd)) < 0 || (fp = fdopen (fd2, "w")) == NULL) { + old = errno; if (fd2 >= 0) close (fd2); + dispose_words (tlist); + errno = old; return (errno); } errno = 0; @@ -905,7 +909,10 @@ do_redirection_internal (redirect, flags) } } else if ((fd != redirector) && (dup2 (fd, redirector) < 0)) - return (errno); + { + close (fd); /* dup2 failed? must be fd limit issue */ + return (errno); + } #if defined (BUFFERED_INPUT) /* Do not change the buffered stream for an implicit redirection @@ -1373,11 +1380,30 @@ redir_varvalue (redir) w = redir->redirector.filename->word; /* shorthand */ /* XXX - handle set -u here? */ #if defined (ARRAY_VARS) - if (vr = valid_array_reference (w)) - v = array_variable_part (w, &sub, &len); + if (vr = valid_array_reference (w, 0)) + { + v = array_variable_part (w, &sub, &len); + } else #endif - v = find_variable (w); + { + v = find_variable (w); +#if defined (ARRAY_VARS) + if (v == 0) + { + v = find_variable_last_nameref (w, 0); + if (v && nameref_p (v)) + { + w = nameref_cell (v); + if (vr = valid_array_reference (w, 0)) + v = array_variable_part (w, &sub, &len); + else + v = find_variable (w); + } + } +#endif + } + if (v == 0 || invisible_p (v)) return -1; diff --git a/shell.c b/shell.c index 2fd8179..45b77f9 100644 --- a/shell.c +++ b/shell.c @@ -1,6 +1,6 @@ /* shell.c -- GNU's idea of the POSIX shell specification. */ -/* Copyright (C) 1987-2012 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -38,7 +38,9 @@ #include #include #include "filecntl.h" -#include +#if defined (HAVE_PWD_H) +# include +#endif #if defined (HAVE_UNISTD_H) # include @@ -57,6 +59,9 @@ #if defined (JOB_CONTROL) #include "jobs.h" +#else +extern int initialize_job_control __P((int)); +extern int get_tty_state __P((void)); #endif /* JOB_CONTROL */ #include "input.h" @@ -100,6 +105,7 @@ extern char *dist_version, *release_status; extern int patch_level, build_version; extern int shell_level; extern int subshell_environment; +extern int running_in_background; extern int last_command_exit_value; extern int line_number; extern int expand_aliases; @@ -159,6 +165,7 @@ int autocd = 0; This is a superset of the information provided by interactive_shell. */ int startup_state = 0; +int reading_shell_script = 0; /* Special debugging helper. */ int debugging_login_shell = 0; @@ -192,7 +199,7 @@ int have_devfd = 0; #endif /* The name of the .(shell)rc file. */ -static char *bashrc_file = "~/.bashrc"; +static char *bashrc_file = DEFAULT_BASHRC; /* Non-zero means to act more like the Bourne shell on startup. */ static int act_like_sh; @@ -260,7 +267,7 @@ static const struct { #if defined (RESTRICTED_SHELL) { "restricted", Int, &restricted, (char **)0x0 }, #endif - { "verbose", Int, &echo_input_at_read, (char **)0x0 }, + { "verbose", Int, &verbose_flag, (char **)0x0 }, { "version", Int, &do_version, (char **)0x0 }, #if defined (WORDEXP_OPTION) { "wordexp", Int, &wordexp_only, (char **)0x0 }, @@ -389,9 +396,7 @@ main (argc, argv, env) xtrace_init (); #if defined (USING_BASH_MALLOC) && defined (DEBUG) && !defined (DISABLE_MALLOC_WRAPPERS) -# if 1 - malloc_set_register (1); -# endif + malloc_set_register (1); /* XXX - change to 1 for malloc debugging */ #endif check_dev_tty (); @@ -414,7 +419,7 @@ main (argc, argv, env) mcheck (programming_error, (void (*) ())0); #endif /* USE_GNU_MALLOC_LIBRARY */ - if (setjmp (subshell_top_level)) + if (setjmp_sigs (subshell_top_level)) { argc = subshell_argc; argv = subshell_argv; @@ -460,7 +465,7 @@ main (argc, argv, env) /* Find full word arguments first. */ arg_index = parse_long_options (argv, arg_index, argc); - + if (want_initial_help) { show_shell_usage (stdout, 1); @@ -473,6 +478,8 @@ main (argc, argv, env) exit (EXECUTION_SUCCESS); } + echo_input_at_read = verbose_flag; /* --verbose given */ + /* All done with full word options; do standard shell option parsing.*/ this_command_name = shell_name; /* for error reporting */ arg_index = parse_shell_options (argv, arg_index, argc); @@ -511,8 +518,6 @@ main (argc, argv, env) } this_command_name = (char *)NULL; - cmd_init(); /* initialize the command object caches */ - /* First, let the outside world know about our interactive status. A shell is interactive if the `-i' flag was given, or if all of the following conditions are met: @@ -568,24 +573,45 @@ main (argc, argv, env) set_default_locale_vars (); /* - * M-x term -> TERM=eterm EMACS=22.1 (term:0.96) (eterm) - * M-x shell -> TERM=dumb EMACS=t (no line editing) - * M-x terminal -> TERM=emacs-em7955 EMACS= (line editing) + * M-x term -> TERM=eterm-color INSIDE_EMACS='251,term:0.96' (eterm) + * M-x shell -> TERM='dumb' INSIDE_EMACS='25.1,comint' (no line editing) + * + * Older versions of Emacs may set EMACS to 't' or to something like + * '22.1 (term:0.96)' instead of (or in addition to) setting INSIDE_EMACS. + * They may set TERM to 'eterm' instead of 'eterm-color'. They may have + * a now-obsolete command that sets neither EMACS nor INSIDE_EMACS: + * M-x terminal -> TERM='emacs-em7955' (line editing) */ if (interactive_shell) { - char *term, *emacs; + char *term, *emacs, *inside_emacs;; + int emacs_term, in_emacs; term = get_string_value ("TERM"); emacs = get_string_value ("EMACS"); + inside_emacs = get_string_value ("INSIDE_EMACS"); + + if (inside_emacs) + { + emacs_term = strstr (inside_emacs, ",term:") != 0; + in_emacs = 1; + } + else if (emacs) + { + /* Infer whether we are in an older Emacs. */ + emacs_term = strstr (emacs, " (term:") != 0; + in_emacs = emacs_term || STREQ (emacs, "t"); + } + else + in_emacs = emacs_term = 0; /* Not sure any emacs terminal emulator sets TERM=emacs any more */ - no_line_editing |= term && (STREQ (term, "emacs")); - no_line_editing |= emacs && emacs[0] == 't' && emacs[1] == '\0' && STREQ (term, "dumb"); + no_line_editing |= STREQ (term, "emacs"); + no_line_editing |= in_emacs && STREQ (term, "dumb"); /* running_under_emacs == 2 for `eterm' */ - running_under_emacs = (emacs != 0) || (term && STREQN (term, "emacs", 5)); - running_under_emacs += term && STREQN (term, "eterm", 5) && emacs && strstr (emacs, "term"); + running_under_emacs = in_emacs || STREQN (term, "emacs", 5); + running_under_emacs += emacs_term && STREQN (term, "eterm", 5); if (running_under_emacs) gnu_error_format = 1; @@ -597,7 +623,7 @@ main (argc, argv, env) /* Give this shell a place to longjmp to before executing the startup files. This allows users to press C-c to abort the lengthy startup. */ - code = setjmp (top_level); + code = setjmp_sigs (top_level); if (code) { if (code == EXITPROG || code == ERREXIT) @@ -682,6 +708,9 @@ main (argc, argv, env) } #endif + cmd_init (); /* initialize the command object caches */ + uwp_init (); + if (command_execution_string) { arg_index = bind_args (argv, arg_index, argc, 0); @@ -708,20 +737,27 @@ main (argc, argv, env) arg_index++; } else if (interactive == 0) - /* In this mode, bash is reading a script from stdin, which is a - pipe or redirected file. */ + { + /* In this mode, bash is reading a script from stdin, which is a + pipe or redirected file. */ #if defined (BUFFERED_INPUT) - default_buffered_input = fileno (stdin); /* == 0 */ + default_buffered_input = fileno (stdin); /* == 0 */ #else - setbuf (default_input, (char *)NULL); + setbuf (default_input, (char *)NULL); #endif /* !BUFFERED_INPUT */ + read_from_stdin = 1; + } + else if (arg_index == argc) + /* "If there are no operands and the -c option is not specified, the -s + option shall be assumed." */ + read_from_stdin = 1; set_bash_input (); /* Bind remaining args to $1 ... $n */ arg_index = bind_args (argv, arg_index, argc, 1); - if (debugging_mode && locally_skip_execution == 0 && running_setuid == 0 && dollar_vars[1]) + if (debugging_mode && locally_skip_execution == 0 && running_setuid == 0 && (reading_shell_script || interactive_shell == 0)) start_debugger (); /* Do the things that should be done only for interactive shells. */ @@ -942,10 +978,12 @@ exit_shell (s) if (interactive_shell && login_shell && hup_on_exit) hangup_all_jobs (); - /* If this shell is interactive, terminate all stopped jobs and - restore the original terminal process group. Don't do this if we're - in a subshell and calling exit_shell after, for example, a failed - word expansion. */ + /* If this shell is interactive, or job control is active, terminate all + stopped jobs and restore the original terminal process group. Don't do + this if we're in a subshell and calling exit_shell after, for example, + a failed word expansion. We want to do this even if the shell is not + interactive because we set the terminal's process group when job control + is enabled regardless of the interactive status. */ if (subshell_environment == 0) end_job_control (); #endif /* JOB_CONTROL */ @@ -963,6 +1001,7 @@ sh_exit (s) #if defined (MALLOC_DEBUG) && defined (USING_BASH_MALLOC) if (malloc_trace_at_exit) trace_malloc_stats (get_name_for_error (), (char *)NULL); + /* mlocation_write_table (); */ #endif exit (s); @@ -1235,8 +1274,20 @@ uidget () void disable_priv_mode () { - setuid (current_user.uid); - setgid (current_user.gid); + int e; + + if (setuid (current_user.uid) < 0) + { + e = errno; + sys_error (_("cannot set uid to %d: effective uid %d"), current_user.uid, current_user.euid); +#if defined (EXIT_ON_SETUID_FAILURE) + if (e == EAGAIN) + exit (e); +#endif + } + if (setgid (current_user.gid) < 0) + sys_error (_("cannot set gid to %d: effective gid %d"), current_user.gid, current_user.egid); + current_user.euid = current_user.uid; current_user.egid = current_user.gid; } @@ -1396,12 +1447,21 @@ start_debugger () { #if defined (DEBUGGER) && defined (DEBUGGER_START_FILE) int old_errexit; + int r; old_errexit = exit_immediately_on_error; exit_immediately_on_error = 0; - maybe_execute_file (DEBUGGER_START_FILE, 1); - function_trace_mode = 1; + r = force_execute_file (DEBUGGER_START_FILE, 1); + if (r < 0) + { + internal_warning (_("cannot start debugger; debugging mode disabled")); + debugging_mode = 0; + } + error_trace_mode = function_trace_mode = debugging_mode; + + set_shellopts (); + set_bashopts (); exit_immediately_on_error += old_errexit; #endif @@ -1444,7 +1504,7 @@ open_shell_script (script_name) { e = errno; file_error (filename); - exit ((e == ENOENT) ? EX_NOTFOUND : EX_NOINPUT); + sh_exit ((e == ENOENT) ? EX_NOTFOUND : EX_NOINPUT); } free (dollar_vars[0]); @@ -1455,6 +1515,17 @@ open_shell_script (script_name) exec_argv0 = (char *)NULL; } + if (file_isdir (filename)) + { +#if defined (EISDIR) + errno = EISDIR; +#else + errno = EINVAL; +#endif + file_error (filename); + sh_exit (EX_NOINPUT); + } + #if defined (ARRAY_VARS) GET_ARRAY_FROM_VAR ("FUNCNAME", funcname_v, funcname_a); GET_ARRAY_FROM_VAR ("BASH_SOURCE", bash_source_v, bash_source_a); @@ -1487,7 +1558,14 @@ open_shell_script (script_name) { e = errno; if ((fstat (fd, &sb) == 0) && S_ISDIR (sb.st_mode)) - internal_error (_("%s: is a directory"), filename); + { +#if defined (EISDIR) + errno = EISDIR; + file_error (filename); +#else + internal_error (_("%s: Is a directory"), filename); +#endif + } else { errno = e; @@ -1547,6 +1625,8 @@ open_shell_script (script_name) init_interactive_script (); free (filename); + + reading_shell_script = 1; return (fd); } @@ -1640,6 +1720,9 @@ init_interactive () { expand_aliases = interactive_shell = startup_state = 1; interactive = 1; +#if defined (HISTORY) + remember_on_history = enable_history_list = 1; /* XXX */ +#endif } static void @@ -1663,6 +1746,9 @@ init_interactive_script () { init_noninteractive (); expand_aliases = interactive_shell = startup_state = 1; +#if defined (HISTORY) + remember_on_history = enable_history_list = 1; /* XXX */ +#endif } void @@ -1693,7 +1779,9 @@ get_current_user_info () current_user.shell = savestring ("/bin/sh"); current_user.home_dir = savestring ("/"); } +#if defined (HAVE_GETPWENT) endpwent (); +#endif } } @@ -1703,6 +1791,7 @@ static void shell_initialize () { char hostname[256]; + int should_be_restricted; /* Line buffer output for stderr and stdout. */ if (shell_initialized == 0) @@ -1741,11 +1830,15 @@ shell_initialize () /* Initialize our interface to the tilde expander. */ tilde_initialize (); +#if defined (RESTRICTED_SHELL) + should_be_restricted = shell_is_restricted (shell_name); +#endif + /* Initialize internal and environment variables. Don't import shell functions from the environment if we are running in privileged or restricted mode or if the shell is running setuid. */ #if defined (RESTRICTED_SHELL) - initialize_shell_variables (shell_environment, privileged_mode||restricted||running_setuid); + initialize_shell_variables (shell_environment, privileged_mode||restricted||should_be_restricted||running_setuid); #else initialize_shell_variables (shell_environment, privileged_mode||running_setuid); #endif @@ -1763,8 +1856,8 @@ shell_initialize () running in privileged or restricted mode or if the shell is running setuid. */ #if defined (RESTRICTED_SHELL) - initialize_shell_options (privileged_mode||restricted||running_setuid); - initialize_bashopts (privileged_mode||restricted||running_setuid); + initialize_shell_options (privileged_mode||restricted||should_be_restricted||running_setuid); + initialize_bashopts (privileged_mode||restricted||should_be_restricted||running_setuid); #else initialize_shell_options (privileged_mode||running_setuid); initialize_bashopts (privileged_mode||running_setuid); @@ -1793,13 +1886,14 @@ shell_reinitialize () /* Things that get 0. */ login_shell = make_login_shell = interactive = executing = 0; debugging = do_version = line_number = last_command_exit_value = 0; - forced_interactive = interactive_shell = subshell_environment = 0; + forced_interactive = interactive_shell = 0; + subshell_environment = running_in_background = 0; expand_aliases = 0; /* XXX - should we set jobs_m_flag to 0 here? */ #if defined (HISTORY) - bash_history_reinit (0); + bash_history_reinit (enable_history_list = 0); #endif /* HISTORY */ #if defined (RESTRICTED_SHELL) @@ -1808,7 +1902,7 @@ shell_reinitialize () /* Ensure that the default startup file is used. (Except that we don't execute this file for reinitialized shells). */ - bashrc_file = "~/.bashrc"; + bashrc_file = DEFAULT_BASHRC; /* Delete all variables and functions. They will be reinitialized when the environment is parsed. */ @@ -1865,6 +1959,9 @@ show_shell_usage (fp, extra) fprintf (fp, _("Type `%s -c \"help set\"' for more information about shell options.\n"), shell_name); fprintf (fp, _("Type `%s -c help' for more information about shell builtin commands.\n"), shell_name); fprintf (fp, _("Use the `bashbug' command to report bugs.\n")); + fprintf (fp, "\n"); + fprintf (fp, _("bash home page: \n")); + fprintf (fp, _("General help using GNU software: \n")); } } diff --git a/shell.h b/shell.h index 3cf25df..ce08879 100644 --- a/shell.h +++ b/shell.h @@ -82,7 +82,8 @@ extern int EOF_Reached; #define MATCH_GLOBREP 0x010 #define MATCH_QUOTED 0x020 -#define MATCH_STARSUB 0x040 +#define MATCH_ASSIGNRHS 0x040 +#define MATCH_STARSUB 0x080 /* Some needed external declarations. */ extern char **shell_environment; @@ -129,6 +130,8 @@ extern struct user_info current_user; # define USE_VAR(x) #endif +#define HEREDOC_MAX 16 + /* Structure in which to save partial parsing state when doing things like PROMPT_COMMAND and bash_execute_unix_command execution. */ @@ -169,7 +172,10 @@ typedef struct _sh_parser_state_t { int expand_aliases; int echo_input_at_read; int need_here_doc; + int here_doc_first_line; + /* structures affecting the parser */ + REDIRECT *redir_stack[HEREDOC_MAX]; } sh_parser_state_t; typedef struct _sh_input_line_state_t { diff --git a/sig.c b/sig.c index 8bc45c1..ad01631 100644 --- a/sig.c +++ b/sig.c @@ -1,6 +1,6 @@ /* sig.c - interface for shell signal handlers and signal initialization. */ -/* Copyright (C) 1994-2013 Free Software Foundation, Inc. +/* Copyright (C) 1994-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -57,6 +57,7 @@ extern int last_command_exit_value; extern int last_command_exit_signal; extern int return_catch_flag; +extern int running_trap; extern int loop_level, continuing, breaking, funcnest; extern int executing_list; extern int comsub_ignore_return; @@ -66,10 +67,15 @@ extern int history_lines_this_session; #endif extern int no_line_editing; extern int wait_signal_received; +extern int wait_intr_flag; extern sh_builtin_func_t *this_shell_builtin; extern void initialize_siglist (); +#if !defined (JOB_CONTROL) +extern void initialize_job_signals __P((void)); +#endif + /* Non-zero after SIGINT. */ volatile sig_atomic_t interrupt_state = 0; @@ -388,7 +394,7 @@ top_level_cleanup () run_unwind_protects (); loop_level = continuing = breaking = funcnest = 0; - executing_list = comsub_ignore_return = return_catch_flag = 0; + executing_list = comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; } /* What to do when we've been interrupted, and it is safe to handle it. */ @@ -412,13 +418,17 @@ throw_to_top_level () (last_command_exit_value - 128) : 0; last_command_exit_value |= 128; - /* Run any traps set on SIGINT. */ - run_interrupt_trap (); + /* Run any traps set on SIGINT, mostly for interactive shells */ + if (signal_is_trapped (SIGINT)) + run_interrupt_trap (1); /* Clean up string parser environment. */ while (parse_and_execute_level) parse_and_execute_cleanup (); + if (running_trap > 0) + run_trap_cleanup (running_trap - 1); + #if defined (JOB_CONTROL) give_terminal_to (shell_pgrp, 0); #endif /* JOB_CONTROL */ @@ -442,7 +452,7 @@ throw_to_top_level () run_unwind_protects (); loop_level = continuing = breaking = funcnest = 0; - executing_list = comsub_ignore_return = return_catch_flag = 0; + executing_list = comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; if (interactive && print_newline) { @@ -464,7 +474,7 @@ void jump_to_top_level (value) int value; { - longjmp (top_level, value); + sh_longjmp (top_level, value); } sighandler @@ -558,7 +568,7 @@ termsig_handler (sig) /* I don't believe this condition ever tests true. */ if (sig == SIGINT && signal_is_trapped (SIGINT)) - run_interrupt_trap (); + run_interrupt_trap (0); #if defined (HISTORY) /* If we don't do something like this, the history will not be saved when @@ -569,6 +579,9 @@ termsig_handler (sig) maybe_save_shell_history (); #endif /* HISTORY */ + if (this_shell_builtin == read_builtin) + read_tty_cleanup (); + #if defined (JOB_CONTROL) if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB)))) hangup_all_jobs (); @@ -581,7 +594,7 @@ termsig_handler (sig) /* Reset execution context */ loop_level = continuing = breaking = funcnest = 0; - executing_list = comsub_ignore_return = return_catch_flag = 0; + executing_list = comsub_ignore_return = return_catch_flag = wait_intr_flag = 0; run_exit_trap (); /* XXX - run exit trap possibly in signal context? */ set_signal_handler (sig, SIG_DFL); @@ -603,8 +616,9 @@ sigint_sighandler (sig) ADDINTERRUPT; /* We will get here in interactive shells with job control active; allow - an interactive wait to be interrupted. */ - if (this_shell_builtin && this_shell_builtin == wait_builtin) + an interactive wait to be interrupted. wait_intr_flag is only set during + the execution of the wait builtin and when wait_intr_buf is valid. */ + if (wait_intr_flag) { last_command_exit_value = 128 + sig; wait_signal_received = sig; diff --git a/sig.h b/sig.h index 12552ab..4e5b464 100644 --- a/sig.h +++ b/sig.h @@ -25,9 +25,7 @@ #include "stdc.h" -#if !defined (SIG_DFL) -# include /* for sig_atomic_t */ -#endif +#include /* for sig_atomic_t */ #if !defined (SIGABRT) && defined (SIGIOT) # define SIGABRT SIGIOT diff --git a/stringlib.c b/stringlib.c index 9509299..745e536 100644 --- a/stringlib.c +++ b/stringlib.c @@ -184,7 +184,7 @@ char * strcreplace (string, c, text, do_glob) char *string; int c; - char *text; + const char *text; int do_glob; { char *ret, *p, *r, *t; diff --git a/subst.c b/subst.c index 3958237..f1a4df1 100644 --- a/subst.c +++ b/subst.c @@ -4,7 +4,7 @@ /* ``Have a little faith, there's magic in the night. You ain't a beauty, but, hey, you're alright.'' */ -/* Copyright (C) 1987-2013 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -37,6 +37,8 @@ # include #endif +#define NEED_FPURGE_DECL + #include "bashansi.h" #include "posixstat.h" #include "bashintl.h" @@ -52,6 +54,9 @@ #include "mailcheck.h" #include "shmbutil.h" +#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR) +# include /* mbschr */ +#endif #include "typemax.h" #include "builtins/getopt.h" @@ -85,12 +90,6 @@ extern int errno; #define ST_SQUOTE 0x04 /* unused yet */ #define ST_DQUOTE 0x08 /* unused yet */ -/* Flags for the `pflags' argument to param_expand() */ -#define PF_NOCOMSUB 0x01 /* Do not perform command substitution */ -#define PF_IGNUNBOUND 0x02 /* ignore unbound vars even if -u set */ -#define PF_NOSPLIT2 0x04 /* same as W_NOSPLIT2 */ -#define PF_ASSIGNRHS 0x08 /* same as W_ASSIGNRHS */ - /* These defs make it easier to use the editor. */ #define LBRACE '{' #define RBRACE '}' @@ -104,10 +103,13 @@ extern int errno; #define WRPAREN L')' #endif +#define DOLLAR_AT_STAR(c) ((c) == '@' || (c) == '*') +#define STR_DOLLAR_AT_STAR(s) (DOLLAR_AT_STAR ((s)[0]) && (s)[1] == '\0') + /* Evaluates to 1 if C is one of the shell's special parameters whose length can be taken, but is also one of the special expansion characters. */ #define VALID_SPECIAL_LENGTH_PARAM(c) \ - ((c) == '-' || (c) == '?' || (c) == '#') + ((c) == '-' || (c) == '?' || (c) == '#' || (c) == '@') /* Evaluates to 1 if C is one of the shell's special parameters for which an indirect variable reference may be made. */ @@ -120,9 +122,24 @@ extern int errno; /* Evaluates to 1 if this is one of the shell's special variables. */ #define SPECIAL_VAR(name, wi) \ - ((DIGIT (*name) && all_digits (name)) || \ + (*name && ((DIGIT (*name) && all_digits (name)) || \ (name[1] == '\0' && (sh_syntaxtab[(unsigned char)*name] & CSPECVAR)) || \ - (wi && name[2] == '\0' && VALID_INDIR_PARAM (name[1]))) + (wi && name[2] == '\0' && VALID_INDIR_PARAM (name[1])))) + +/* This can be used by all of the *_extract_* functions that have a similar + structure. It can't just be wrapped in a do...while(0) loop because of + the embedded `break'. The dangling else accommodates a trailing semicolon; + we could also put in a do ; while (0) */ + + +#define CHECK_STRING_OVERRUN(oind, ind, len, ch) \ + if (ind >= len) \ + { \ + oind = len; \ + ch = 0; \ + break; \ + } \ + else \ /* An expansion function that takes a string and a quoted flag and returns a WORD_LIST *. Used as the type of the third argument to @@ -146,6 +163,9 @@ size_t ifs_firstc_len; unsigned char ifs_firstc; #endif +/* If non-zero, command substitution inherits the value of errexit option */ +int inherit_errexit = 0; + /* Sentinel to tell when we are performing variable assignments preceding a command name and putting them into the environment. Used to make sure we use the temporary environment when looking up variable values. */ @@ -156,11 +176,15 @@ int assigning_in_environment; SIGCHLD trap and so it can be saved and restored by the trap handlers. */ WORD_LIST *subst_assign_varlist = (WORD_LIST *)NULL; +/* Tell the expansion functions to not longjmp back to top_level on fatal + errors. Enabled when doing completion and prompt string expansion. */ +int no_longjmp_on_fatal_error = 0; + /* Extern functions and variables from different files. */ extern int last_command_exit_value, last_command_exit_signal; -extern int subshell_environment, line_number; +extern int subshell_environment, running_in_background; extern int subshell_level, parse_and_execute_level, sourcelevel; -extern int eof_encountered; +extern int eof_encountered, line_number; extern int return_catch_flag, return_catch_value; extern pid_t dollar_dollar_pid; extern int posixly_correct; @@ -171,6 +195,10 @@ extern int expanding_redir; extern int tempenv_assign_error; extern int builtin_ignoring_errexit; +#if defined (JOB_CONTROL) && defined (PROCESS_SUBSTITUTION) +extern PROCESS *last_procsub_child; +#endif + #if !defined (HAVE_WCSDUP) && defined (HANDLE_MULTIBYTE) extern wchar_t *wcsdup __P((const wchar_t *)); #endif @@ -191,15 +219,13 @@ char *glob_argv_flags; static int glob_argv_flags_size; #endif +static WORD_LIST *cached_quoted_dollar_at = 0; + static WORD_LIST expand_word_error, expand_word_fatal; static WORD_DESC expand_wdesc_error, expand_wdesc_fatal; static char expand_param_error, expand_param_fatal; static char extract_string_error, extract_string_fatal; -/* Tell the expansion functions to not longjmp back to top_level on fatal - errors. Enabled when doing completion and prompt string expansion. */ -static int no_longjmp_on_fatal_error = 0; - /* Set by expand_word_unsplit; used to inhibit splitting and re-joining $* on $IFS, primarily when doing assignment statements. */ static int expand_no_split_dollar_star = 0; @@ -237,8 +263,8 @@ static char *string_extract_verbatim __P((char *, size_t, int *, char *, int)); static char *string_extract __P((char *, int *, char *, int)); static char *string_extract_double_quoted __P((char *, int *, int)); static inline char *string_extract_single_quoted __P((char *, int *)); -static inline int skip_single_quoted __P((const char *, size_t, int)); -static int skip_double_quoted __P((char *, size_t, int)); +static inline int skip_single_quoted __P((const char *, size_t, int, int)); +static int skip_double_quoted __P((char *, size_t, int, int)); static char *extract_delimited_string __P((char *, int *, char *, char *, char *, int)); static char *extract_dollar_brace_string __P((char *, int *, int, int)); static int skip_matched_pair __P((const char *, int, int, int, int)); @@ -268,6 +294,19 @@ static char *array_remove_pattern __P((SHELL_VAR *, char *, int, char *, int)); #endif static char *parameter_brace_remove_pattern __P((char *, char *, int, char *, int, int, int)); +static char *string_var_assignment __P((SHELL_VAR *, char *)); +#if defined (ARRAY_VARS) +static char *array_var_assignment __P((SHELL_VAR *, int, int)); +#endif +static char *pos_params_assignment __P((WORD_LIST *, int, int)); +static char *string_transform __P((int, SHELL_VAR *, char *)); +static char *list_transform __P((int, SHELL_VAR *, WORD_LIST *, int, int)); +static char *parameter_list_transform __P((int, int, int)); +#if defined ARRAY_VARS +static char *array_transform __P((int, SHELL_VAR *, char *, int)); +#endif +static char *parameter_brace_transform __P((char *, char *, int, char *, int, int, int)); + static char *process_substitute __P((char *, int)); static char *read_comsub __P((int, int, int *)); @@ -283,7 +322,7 @@ static int chk_arithsub __P((const char *, int)); static WORD_DESC *parameter_brace_expand_word __P((char *, int, int, int, arrayind_t *)); static char *parameter_brace_find_indir __P((char *, int, int, int)); static WORD_DESC *parameter_brace_expand_indir __P((char *, int, int, int *, int *)); -static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *)); +static WORD_DESC *parameter_brace_expand_rhs __P((char *, char *, int, int, int, int *, int *)); static void parameter_brace_expand_error __P((char *, char *)); static int valid_length_expression __P((char *)); @@ -299,7 +338,7 @@ static int shouldexp_replacement __P((char *)); static char *pos_params_pat_subst __P((char *, char *, char *, int)); -static char *parameter_brace_patsub __P((char *, char *, int, char *, int, int)); +static char *parameter_brace_patsub __P((char *, char *, int, char *, int, int, int)); static char *pos_params_casemod __P((char *, char *, int, int)); static char *parameter_brace_casemod __P((char *, char *, int, int, char *, int, int)); @@ -319,7 +358,7 @@ static WORD_LIST *glob_expand_word_list __P((WORD_LIST *, int)); static WORD_LIST *brace_expand_word_list __P((WORD_LIST *, int)); #endif #if defined (ARRAY_VARS) -static int make_internal_declare __P((char *, char *)); +static int make_internal_declare __P((char *, char *, char *)); #endif static WORD_LIST *shell_expand_word_list __P((WORD_LIST *, int)); static WORD_LIST *expand_word_list_internal __P((WORD_LIST *, int)); @@ -339,6 +378,11 @@ dump_word_flags (flags) f = flags; fprintf (stderr, "%d -> ", f); + if (f & W_ARRAYIND) + { + f &= ~W_ARRAYIND; + fprintf (stderr, "W_ARRAYIND%s", f ? "|" : ""); + } if (f & W_ASSIGNASSOC) { f &= ~W_ASSIGNASSOC; @@ -384,11 +428,6 @@ dump_word_flags (flags) f &= ~W_ASSNGLOBAL; fprintf (stderr, "W_ASSNGLOBAL%s", f ? "|" : ""); } - if (f & W_ASSIGNINT) - { - f &= ~W_ASSIGNINT; - fprintf (stderr, "W_ASSIGNINT%s", f ? "|" : ""); - } if (f & W_COMPASSIGN) { f &= ~W_COMPASSIGN; @@ -474,6 +513,12 @@ dump_word_flags (flags) f &= ~W_HASDOLLAR; fprintf (stderr, "W_HASDOLLAR%s", f ? "|" : ""); } + if (f & W_COMPLETE) + { + f &= ~W_COMPLETE; + fprintf (stderr, "W_COMPLETE%s", f ? "|" : ""); + } + fprintf (stderr, "\n"); fflush (stderr); } @@ -573,6 +618,7 @@ quoted_strchr (s, c, flags) return ((char *)NULL); } +#if defined (INCLUDE_UNUSED) /* Return 1 if CHARACTER appears in an unquoted portion of STRING. Return 0 otherwise. CHARACTER must be a single-byte character. */ static int @@ -604,11 +650,11 @@ unquoted_member (character, string) break; case '\'': - sindex = skip_single_quoted (string, slen, ++sindex); + sindex = skip_single_quoted (string, slen, ++sindex, 0); break; case '"': - sindex = skip_double_quoted (string, slen, ++sindex); + sindex = skip_double_quoted (string, slen, ++sindex, 0); break; } } @@ -643,11 +689,11 @@ unquoted_substring (substr, string) break; case '\'': - sindex = skip_single_quoted (string, slen, ++sindex); + sindex = skip_single_quoted (string, slen, ++sindex, 0); break; case '"': - sindex = skip_double_quoted (string, slen, ++sindex); + sindex = skip_double_quoted (string, slen, ++sindex, 0); break; default: @@ -657,6 +703,7 @@ unquoted_substring (substr, string) } return (0); } +#endif /* Most of the substitutions must be done in parallel. In order to avoid using tons of unclear goto's, I have some functions @@ -673,11 +720,13 @@ unquoted_substring (substr, string) INLINE char * sub_append_string (source, target, indx, size) char *source, *target; - int *indx, *size; + int *indx; + size_t *size; { if (source) { - int srclen, n; + int n; + size_t srclen; srclen = STRLEN (source); if (srclen >= (int)(*size - *indx)) @@ -703,8 +752,9 @@ sub_append_string (source, target, indx, size) char * sub_append_number (number, target, indx, size) intmax_t number; - int *indx, *size; char *target; + int *indx; + size_t *size; { char *temp; @@ -788,9 +838,9 @@ string_extract (string, sindex, charlist, flags) Backslashes between the embedded double quotes are processed. If STRIPDQ is zero, an unquoted `"' terminates the string. */ static char * -string_extract_double_quoted (string, sindex, stripdq) +string_extract_double_quoted (string, sindex, flags) char *string; - int *sindex, stripdq; + int *sindex, flags; { size_t slen; char *send; @@ -799,11 +849,14 @@ string_extract_double_quoted (string, sindex, stripdq) char *temp, *ret; /* The new string we return. */ int pass_next, backquote, si; /* State variables for the machine. */ int dquote; + int stripdq; DECLARE_MBSTATE; slen = strlen (string + *sindex) + *sindex; send = string + slen; + stripdq = (flags & SX_STRIPDQ); + pass_next = backquote = dquote = 0; temp = (char *)xmalloc (1 + slen - *sindex); @@ -886,7 +939,7 @@ add_one_character: si = i + 2; if (string[i + 1] == LPAREN) - ret = extract_command_subst (string, &si, 0); + ret = extract_command_subst (string, &si, (flags & SX_COMPLETE)); else ret = extract_dollar_brace_string (string, &si, Q_DOUBLE_QUOTES, 0); @@ -945,10 +998,11 @@ add_one_character: /* This should really be another option to string_extract_double_quoted. */ static int -skip_double_quoted (string, slen, sind) +skip_double_quoted (string, slen, sind, flags) char *string; size_t slen; int sind; + int flags; { int c, i; char *ret; @@ -988,10 +1042,13 @@ skip_double_quoted (string, slen, sind) { si = i + 2; if (string[i + 1] == LPAREN) - ret = extract_command_subst (string, &si, SX_NOALLOC); + ret = extract_command_subst (string, &si, SX_NOALLOC|(flags&SX_COMPLETE)); else ret = extract_dollar_brace_string (string, &si, Q_DOUBLE_QUOTES, SX_NOALLOC); + /* These can consume the entire string if they are unterminated */ + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si + 1; continue; } @@ -1039,18 +1096,26 @@ string_extract_single_quoted (string, sindex) return (t); } +/* Skip over a single-quoted string. We overload the SX_COMPLETE flag to mean + that we are splitting out words for completion and have encountered a $'...' + string, which allows backslash-escaped single quotes. */ static inline int -skip_single_quoted (string, slen, sind) +skip_single_quoted (string, slen, sind, flags) const char *string; size_t slen; int sind; + int flags; { register int c; DECLARE_MBSTATE; c = sind; while (string[c] && string[c] != '\'') - ADVANCE_CHAR (string, slen, c); + { + if ((flags & SX_COMPLETE) && string[c] == '\\' && string[c+1] == '\'' && string[c+2]) + ADVANCE_CHAR (string, slen, c); + ADVANCE_CHAR (string, slen, c); + } if (string[c]) c++; @@ -1076,7 +1141,7 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) char *temp; DECLARE_MBSTATE; - if (charlist[0] == '\'' && charlist[1] == '\0') + if ((flags & SX_NOCTLESC) && charlist[0] == '\'' && charlist[1] == '\0') { temp = string_extract_single_quoted (string, sindex); --*sindex; /* leave *sindex at separator character */ @@ -1167,12 +1232,15 @@ extract_command_subst (string, sindex, xflags) int *sindex; int xflags; { - if (string[*sindex] == LPAREN) + char *ret; + + if (string[*sindex] == LPAREN || (xflags & SX_COMPLETE)) return (extract_delimited_string (string, sindex, "$(", "(", ")", xflags|SX_COMMAND)); /*)*/ else { xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); - return (xparse_dolparen (string, string+*sindex, sindex, xflags)); + ret = xparse_dolparen (string, string+*sindex, sindex, xflags); + return ret; } } @@ -1266,6 +1334,15 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) { c = string[i]; + /* If a recursive call or a call to ADVANCE_CHAR leaves the index beyond + the end of the string, catch it and cut the loop. */ + if (i > slen) + { + i = slen; + c = string[i = slen]; + break; + } + if (c == 0) break; @@ -1351,8 +1428,8 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags) if (c == '\'' || c == '"') { si = i + 1; - i = (c == '\'') ? skip_single_quoted (string, slen, si) - : skip_double_quoted (string, slen, si); + i = (c == '\'') ? skip_single_quoted (string, slen, si, 0) + : skip_double_quoted (string, slen, si, 0); continue; } @@ -1460,6 +1537,9 @@ extract_dollar_brace_string (string, sindex, quoted, flags) { si = i + 1; t = string_extract (string, &si, "`", flags|SX_NOALLOC); + + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si + 1; continue; } @@ -1478,7 +1558,7 @@ extract_dollar_brace_string (string, sindex, quoted, flags) if (c == '"') { si = i + 1; - i = skip_double_quoted (string, slen, si); + i = skip_double_quoted (string, slen, si, 0); /* skip_XXX_quoted leaves index one past close quote */ continue; } @@ -1491,7 +1571,7 @@ extract_dollar_brace_string (string, sindex, quoted, flags) else { si = i + 1; - i = skip_single_quoted (string, slen, si); + i = skip_single_quoted (string, slen, si, 0); } continue; @@ -1512,6 +1592,8 @@ extract_dollar_brace_string (string, sindex, quoted, flags) dolbrace_state = DOLBRACE_QUOTE; else if (dolbrace_state == DOLBRACE_PARAM && c == ',' && (i - *sindex) > 1) dolbrace_state = DOLBRACE_QUOTE; + /* This is intended to handle all of the [:]op expansions and the substring/ + length/pattern removal/pattern substitution expansions. */ else if (dolbrace_state == DOLBRACE_PARAM && strchr ("#%^,~:-=?+/", c) != 0) dolbrace_state = DOLBRACE_OP; else if (dolbrace_state == DOLBRACE_OP && strchr ("#%^,~:-=?+/", c) == 0) @@ -1595,7 +1677,7 @@ unquote_bang (string) } #endif -#define CQ_RETURN(x) do { no_longjmp_on_fatal_error = 0; return (x); } while (0) +#define CQ_RETURN(x) do { no_longjmp_on_fatal_error = oldjmp; return (x); } while (0) /* This function assumes s[i] == open; returns with s[ret] == close; used to parse array subscripts. FLAGS & 1 means to not attempt to skip over @@ -1607,12 +1689,13 @@ skip_matched_pair (string, start, open, close, flags) const char *string; int start, open, close, flags; { - int i, pass_next, backq, si, c, count; + int i, pass_next, backq, si, c, count, oldjmp; size_t slen; char *temp, *ss; DECLARE_MBSTATE; slen = strlen (string + start) + start; + oldjmp = no_longjmp_on_fatal_error; no_longjmp_on_fatal_error = 1; i = start + 1; /* skip over leading bracket */ @@ -1664,8 +1747,8 @@ skip_matched_pair (string, start, open, close, flags) } else if ((flags & 1) == 0 && (c == '\'' || c == '"')) { - i = (c == '\'') ? skip_single_quoted (ss, slen, ++i) - : skip_double_quoted (ss, slen, ++i); + i = (c == '\'') ? skip_single_quoted (ss, slen, ++i, 0) + : skip_double_quoted (ss, slen, ++i, 0); /* no increment, the skip functions increment past the closing quote. */ } else if ((flags&1) == 0 && c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE)) @@ -1678,6 +1761,9 @@ skip_matched_pair (string, start, open, close, flags) temp = extract_delimited_string (ss, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */ else temp = extract_dollar_brace_string (ss, &si, 0, SX_NOALLOC); + + CHECK_STRING_OVERRUN (i, si, slen, c); + i = si; if (string[i] == '\0') /* don't increment i past EOS in loop */ break; @@ -1714,19 +1800,27 @@ skip_to_delim (string, start, delims, flags) char *delims; int flags; { - int i, pass_next, backq, si, c, invert, skipquote, skipcmd; + int i, pass_next, backq, dquote, si, c, oldjmp; + int invert, skipquote, skipcmd, noprocsub, completeflag; + int arithexp, skipcol; size_t slen; char *temp, open[3]; DECLARE_MBSTATE; slen = strlen (string + start) + start; + oldjmp = no_longjmp_on_fatal_error; if (flags & SD_NOJMP) no_longjmp_on_fatal_error = 1; invert = (flags & SD_INVERT); skipcmd = (flags & SD_NOSKIPCMD) == 0; + noprocsub = (flags & SD_NOPROCSUB); + completeflag = (flags & SD_COMPLETE) ? SX_COMPLETE : 0; + + arithexp = (flags & SD_ARITHEXP); + skipcol = 0; i = start; - pass_next = backq = 0; + pass_next = backq = dquote = 0; while (c = string[i]) { /* If this is non-zero, we should not let quote characters be delimiters @@ -1761,14 +1855,45 @@ skip_to_delim (string, start, delims, flags) i++; continue; } + else if (arithexp && skipcol && c == ':') + { + skipcol--; + i++; + continue; + } + else if (arithexp && c == '?') + { + skipcol++; + i++; + continue; + } else if (skipquote == 0 && invert == 0 && member (c, delims)) break; - else if (c == '\'' || c == '"') - { - i = (c == '\'') ? skip_single_quoted (string, slen, ++i) - : skip_double_quoted (string, slen, ++i); - /* no increment, the skip functions increment past the closing quote. */ - } + /* the usual case is to use skip_xxx_quoted, but we don't skip over double + quoted strings when looking for the history expansion character as a + delimiter. */ + /* special case for programmable completion which takes place before + parser converts backslash-escaped single quotes between $'...' to + `regular' single-quoted strings. */ + else if (completeflag && i > 0 && string[i-1] == '$' && c == '\'') + i = skip_single_quoted (string, slen, ++i, SX_COMPLETE); + else if (c == '\'') + i = skip_single_quoted (string, slen, ++i, 0); + else if (c == '"') + i = skip_double_quoted (string, slen, ++i, completeflag); + else if (c == LPAREN && arithexp) + { + si = i + 1; + if (string[si] == '\0') + CQ_RETURN(si); + + temp = extract_delimited_string (string, &si, "(", "(", ")", SX_NOALLOC); /* ) */ + i = si; + if (string[i] == '\0') /* don't increment i past EOS in loop */ + break; + i++; + continue; + } else if (c == '$' && ((skipcmd && string[i+1] == LPAREN) || string[i+1] == LBRACE)) { si = i + 2; @@ -1786,13 +1911,17 @@ skip_to_delim (string, start, delims, flags) continue; } #if defined (PROCESS_SUBSTITUTION) - else if (skipcmd && (c == '<' || c == '>') && string[i+1] == LPAREN) + else if (skipcmd && noprocsub == 0 && (c == '<' || c == '>') && string[i+1] == LPAREN) { si = i + 2; if (string[si] == '\0') CQ_RETURN(si); +#if 1 + temp = extract_delimited_string (string, &si, (c == '<') ? "<(" : ">(", "(", ")", SX_COMMAND|SX_NOALLOC); /* )) */ +#else temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0); - free (temp); /* no SX_ALLOC here */ + free (temp); /* XXX - not using SX_NOALLOC here yet */ +#endif i = si; if (string[i] == '\0') break; @@ -1842,6 +1971,128 @@ skip_to_delim (string, start, delims, flags) CQ_RETURN(i); } +#if defined (BANG_HISTORY) +/* Skip to the history expansion character (delims[0]), paying attention to + quoted strings and command and process substitution. This is a stripped- + down version of skip_to_delims. The essential difference is that this + resets the quoting state when starting a command substitution */ +int +skip_to_histexp (string, start, delims, flags) + char *string; + int start; + char *delims; + int flags; +{ + int i, pass_next, backq, dquote, si, c, oldjmp; + int histexp_comsub, histexp_backq, old_dquote; + size_t slen; + char *temp, open[3]; + DECLARE_MBSTATE; + + slen = strlen (string + start) + start; + oldjmp = no_longjmp_on_fatal_error; + if (flags & SD_NOJMP) + no_longjmp_on_fatal_error = 1; + + histexp_comsub = histexp_backq = old_dquote = 0; + + i = start; + pass_next = backq = dquote = 0; + while (c = string[i]) + { + if (pass_next) + { + pass_next = 0; + if (c == 0) + CQ_RETURN(i); + ADVANCE_CHAR (string, slen, i); + continue; + } + else if (c == '\\') + { + pass_next = 1; + i++; + continue; + } + else if (backq && c == '`') + { + backq = 0; + histexp_backq--; + dquote = old_dquote; + i++; + continue; + } + else if (c == '`') + { + backq = 1; + histexp_backq++; + old_dquote = dquote; /* simple - one level for now */ + dquote = 0; + i++; + continue; + } + /* When in double quotes, act as if the double quote is a member of + history_no_expand_chars, like the history library does */ + else if (dquote && c == delims[0] && string[i+1] == '"') + { + i++; + continue; + } + else if (c == delims[0]) + break; + /* the usual case is to use skip_xxx_quoted, but we don't skip over double + quoted strings when looking for the history expansion character as a + delimiter. */ + else if (dquote && c == '\'') + { + i++; + continue; + } + else if (c == '\'') + i = skip_single_quoted (string, slen, ++i, 0); + /* The posixly_correct test makes posix-mode shells allow double quotes + to quote the history expansion character */ + else if (posixly_correct == 0 && c == '"') + { + dquote = 1 - dquote; + i++; + continue; + } + else if (c == '"') + i = skip_double_quoted (string, slen, ++i, 0); +#if defined (PROCESS_SUBSTITUTION) + else if ((c == '$' || c == '<' || c == '>') && string[i+1] == LPAREN && string[i+2] != LPAREN) +#else + else if (c == '$' && string[i+1] == LPAREN && string[i+2] != LPAREN) +#endif + { + if (string[i+2] == '\0') + CQ_RETURN(i+2); + i += 2; + histexp_comsub++; + old_dquote = dquote; + dquote = 0; + } + else if (histexp_comsub && c == RPAREN) + { + histexp_comsub--; + dquote = old_dquote; + i++; + continue; + } + else if (backq) /* placeholder */ + { + ADVANCE_CHAR (string, slen, i); + continue; + } + else + ADVANCE_CHAR (string, slen, i); + } + + CQ_RETURN(i); +} +#endif /* BANG_HISTORY */ + #if defined (READLINE) /* Return 1 if the portion of STRING ending at EINDEX is quoted (there is an unclosed quoted string), or if the character at EINDEX is quoted @@ -1856,11 +2107,12 @@ char_is_quoted (string, eindex) char *string; int eindex; { - int i, pass_next, c; + int i, pass_next, c, oldjmp; size_t slen; DECLARE_MBSTATE; slen = strlen (string); + oldjmp = no_longjmp_on_fatal_error; no_longjmp_on_fatal_error = 1; i = pass_next = 0; while (i <= eindex) @@ -1881,10 +2133,17 @@ char_is_quoted (string, eindex) i++; continue; } + else if (c == '$' && string[i+1] == '\'' && string[i+2]) + { + i += 2; + i = skip_single_quoted (string, slen, i, SX_COMPLETE); + if (i > eindex) + CQ_RETURN (i); + } else if (c == '\'' || c == '"') { - i = (c == '\'') ? skip_single_quoted (string, slen, ++i) - : skip_double_quoted (string, slen, ++i); + i = (c == '\'') ? skip_single_quoted (string, slen, ++i, 0) + : skip_double_quoted (string, slen, ++i, SX_COMPLETE); if (i > eindex) CQ_RETURN(1); /* no increment, the skip_xxx functions go one past end */ @@ -1930,10 +2189,11 @@ unclosed_pair (string, eindex, openstr) openc = 1 - openc; i += olen; } + /* XXX - may want to handle $'...' specially here */ else if (string[i] == '\'' || string[i] == '"') { - i = (string[i] == '\'') ? skip_single_quoted (string, slen, i) - : skip_double_quoted (string, slen, i); + i = (string[i] == '\'') ? skip_single_quoted (string, slen, i, 0) + : skip_double_quoted (string, slen, i, SX_COMPLETE); if (i > eindex) return 0; } @@ -2020,7 +2280,10 @@ split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp) for (i = 0; member (string[i], d) && spctabnl (string[i]); i++) ; if (string[i] == '\0') - return (ret); + { + FREE (d2); + return (ret); + } ts = i; nw = 0; @@ -2144,7 +2407,7 @@ string_list_internal (list, sep) { register WORD_LIST *t; char *result, *r; - int word_len, sep_len, result_size; + size_t word_len, sep_len, result_size; if (list == 0) return ((char *)NULL); @@ -2287,11 +2550,18 @@ string_list_dollar_star (list) , IFS characters in the words in the list should also be split. If IFS is null, and the word is not quoted, we need to quote the words in the list to preserve the positional parameters - exactly. */ + exactly. + Valid values for the FLAGS argument are the PF_ flags in command.h, + the only one we care about is PF_ASSIGNRHS. $@ is supposed to expand + to the positional parameters separated by spaces no matter what IFS is + set to if in a context where word splitting is not performed. The only + one that we didn't handle before is assignment statement arguments to + declaration builtins like `declare'. */ char * -string_list_dollar_at (list, quoted) +string_list_dollar_at (list, quoted, flags) WORD_LIST *list; int quoted; + int flags; { char *ifs, *ret; #if defined (HANDLE_MULTIBYTE) @@ -2312,7 +2582,13 @@ string_list_dollar_at (list, quoted) # if !defined (__GNUC__) sep = (char *)xmalloc (MB_CUR_MAX + 1); # endif /* !__GNUC__ */ - if (ifs && *ifs) + /* XXX - bash-4.4/bash-5.0 testing PF_ASSIGNRHS */ + if (flags & PF_ASSIGNRHS) + { + sep[0] = ' '; + sep[1] = '\0'; + } + else if (ifs && *ifs) { if (ifs_firstc_len == 1) { @@ -2331,7 +2607,8 @@ string_list_dollar_at (list, quoted) sep[1] = '\0'; } #else - sep[0] = (ifs == 0 || *ifs == 0) ? ' ' : *ifs; + /* XXX - bash-4.4/bash-5.0 test PF_ASSIGNRHS */ + sep[0] = ((flags & PF_ASSIGNRHS) || ifs == 0 || *ifs == 0) ? ' ' : *ifs; sep[1] = '\0'; #endif @@ -2388,7 +2665,7 @@ string_list_pos_params (pchar, list, quoted) string_list_dollar_star if the string is unquoted so we make sure that the elements of $@ are separated by the first character of $IFS for later splitting. */ - ret = string_list_dollar_at (list, quoted); + ret = string_list_dollar_at (list, quoted, 0); else if (pchar == '@') ret = string_list_dollar_star (list); else @@ -2472,7 +2749,7 @@ list_string (string, separators, quoted) extract a word, stopping at a separator skip sequences of spc, tab, or nl as long as they are separators This obeys the field splitting rules in Posix.2. */ - slen = (MB_CUR_MAX > 1) ? strlen (string) : 1; + slen = (MB_CUR_MAX > 1) ? STRLEN (string) : 1; for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; ) { /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim @@ -2603,7 +2880,7 @@ get_word_from_string (stringp, separators, endptr) sindex = 0; /* Don't need string length in ADVANCE_CHAR or string_extract_verbatim unless multibyte chars are possible. */ - slen = (MB_CUR_MAX > 1) ? strlen (s) : 1; + slen = (MB_CUR_MAX > 1) ? STRLEN (s) : 1; current_word = string_extract_verbatim (s, slen, &sindex, separators, xflags); /* Set ENDPTR to the first character after the end of the word. */ @@ -2694,9 +2971,9 @@ list_string_with_quotes (string) i++; } else if (c == '\'') - i = skip_single_quoted (s, s_len, ++i); + i = skip_single_quoted (s, s_len, ++i, 0); else if (c == '"') - i = skip_double_quoted (s, s_len, ++i); + i = skip_double_quoted (s, s_len, ++i, 0); else if (c == 0 || spctabnl (c)) { /* We have found the end of a token. Make a word out of it and @@ -2741,6 +3018,12 @@ do_compound_assignment (name, value, flags) if (mklocal && variable_context) { v = find_variable (name); + if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) + { + if (v && readonly_p (v)) + err_readonly (name); + return (v); /* XXX */ + } list = expand_compound_array_assignment (v, value, flags); if (mkassoc) v = make_local_assoc_variable (name); @@ -2748,11 +3031,19 @@ do_compound_assignment (name, value, flags) v = make_local_array_variable (name, 0); if (v) assign_compound_array_list (v, list, flags); + if (list) + dispose_words (list); } /* In a function but forcing assignment in global context */ else if (mkglobal && variable_context) { v = find_global_variable (name); + if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) + { + if (v && readonly_p (v)) + err_readonly (name); + return (v); /* XXX */ + } list = expand_compound_array_assignment (v, value, flags); if (v == 0 && mkassoc) v = make_new_assoc_variable (name); @@ -2764,9 +3055,19 @@ do_compound_assignment (name, value, flags) v = convert_var_to_array (v); if (v) assign_compound_array_list (v, list, flags); + if (list) + dispose_words (list); } else - v = assign_array_from_string (name, value, flags); + { + v = assign_array_from_string (name, value, flags); + if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) + { + if (v && readonly_p (v)) + err_readonly (name); + return (v); /* XXX */ + } + } return (v); } @@ -3018,7 +3319,7 @@ pos_params (string, start, end, quoted) return ((char *)NULL); save = params = list_rest_of_args (); - if (save == 0) + if (save == 0 && start > 0) return ((char *)NULL); if (start == 0) /* handle ${@:0[:x]} specially */ @@ -3030,7 +3331,10 @@ pos_params (string, start, end, quoted) for (i = start ? 1 : 0; params && i < start; i++) params = params->next; if (params == 0) - return ((char *)NULL); + { + dispose_words (save); + return ((char *)NULL); + } for (h = t = params; params && i < end; i++) { t = params; @@ -3205,6 +3509,8 @@ expand_arith_string (string, quoted) ret = (char *)NULL; FREE (td.word); } + else if (saw_quote && (quoted & Q_ARITH)) + ret = string_quote_removal (string, quoted); else if (saw_quote && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) ret = string_quote_removal (string, quoted); else @@ -3273,6 +3579,7 @@ cond_expand_word (w, special) qflags = QGLOB_CVTNULL; if (special == 2) qflags |= QGLOB_REGEXP; + word_list_remove_quoted_nulls (l); p = string_list (l); r = quote_string_for_globbing (p, qflags); free (p); @@ -3473,9 +3780,9 @@ expand_string_leave_quoted (string, quoted) /* This does not perform word splitting or dequote the WORD_LIST it returns. */ static WORD_LIST * -expand_string_for_rhs (string, quoted, dollar_at_p, has_dollar_at) +expand_string_for_rhs (string, quoted, dollar_at_p, expanded_p) char *string; - int quoted, *dollar_at_p, *has_dollar_at; + int quoted, *dollar_at_p, *expanded_p; { WORD_DESC td; WORD_LIST *tresult; @@ -3483,9 +3790,12 @@ expand_string_for_rhs (string, quoted, dollar_at_p, has_dollar_at) if (string == 0 || *string == '\0') return (WORD_LIST *)NULL; + expand_no_split_dollar_star = 1; td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */ td.word = string; - tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at); + tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p); + expand_no_split_dollar_star = 0; + return (tresult); } @@ -3713,6 +4023,11 @@ dequote_string (string) char *result, *send; DECLARE_MBSTATE; +#if defined (DEBUG) + if (string[0] == CTLESC && string[1] == 0) + internal_inform ("dequote_string: string with bare CTLESC"); +#endif + slen = strlen (string); t = result = (char *)xmalloc (slen + 1); @@ -3723,6 +4038,14 @@ dequote_string (string) return (result); } + /* A string consisting of only a single CTLESC should pass through unchanged */ + if (string[0] == CTLESC && string[1] == 0) + { + result[0] = CTLESC; + result[1] = '\0'; + return (result); + } + /* If no character in the string can be quoted, don't bother examining each character. Just return a copy of the string passed to us. */ if (strchr (string, CTLESC) == NULL) @@ -3920,7 +4243,7 @@ remove_upattern (param, pattern, op) char *param, *pattern; int op; { - register int len; + register size_t len; register char *end; register char *p, *ret, c; @@ -4132,7 +4455,8 @@ match_upattern (string, pat, mtype, sp, ep) int mtype; char **sp, **ep; { - int c, len, mlen; + int c, mlen; + size_t len; register char *p, *p1, *npat; char *end; int n1; @@ -4148,19 +4472,41 @@ match_upattern (string, pat, mtype, sp, ep) len = STRLEN (pat); if (pat[0] != '*' || (pat[0] == '*' && pat[1] == LPAREN && extended_glob) || pat[len - 1] != '*') { + int unescaped_backslash; + char *pp; + p = npat = (char *)xmalloc (len + 3); p1 = pat; if (*p1 != '*' || (*p1 == '*' && p1[1] == LPAREN && extended_glob)) *p++ = '*'; while (*p1) *p++ = *p1++; - if (p1[-1] != '*' || p[-2] == '\\') +#if 1 + /* Need to also handle a pattern that ends with an unescaped backslash. + For right now, we ignore it because the pattern matching code will + fail the match anyway */ + /* If the pattern ends with a `*' we leave it alone if it's preceded by + an even number of backslashes, but if it's escaped by a backslash + we need to add another `*'. */ + if (p1[-1] == '*' && (unescaped_backslash = p1[-2] == '\\')) + { + pp = p1 - 3; + while (pp >= pat && *pp-- == '\\') + unescaped_backslash = 1 - unescaped_backslash; + if (unescaped_backslash) + *p++ = '*'; + } + else if (p1[-1] != '*') *p++ = '*'; +#else + if (p1[-1] != '*' || p1[-2] == '\\') + *p++ = '*'; +#endif *p = '\0'; } else npat = pat; - c = strmatch (npat, string, FNMATCH_EXTFLAG); + c = strmatch (npat, string, FNMATCH_EXTFLAG | FNMATCH_IGNCASE); if (npat != pat) free (npat); if (c == FNM_NOMATCH) @@ -4176,7 +4522,7 @@ match_upattern (string, pat, mtype, sp, ep) case MATCH_ANY: for (p = string; p <= end; p++) { - if (match_pattern_char (pat, p)) + if (match_pattern_char (pat, p, FNMATCH_IGNCASE)) { p1 = (mlen == -1) ? end : p + mlen; /* p1 - p = length of portion of string to be considered @@ -4192,7 +4538,7 @@ match_upattern (string, pat, mtype, sp, ep) for ( ; p1 >= p; p1--) { c = *p1; *p1 = '\0'; - if (strmatch (pat, p, FNMATCH_EXTFLAG) == 0) + if (strmatch (pat, p, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) { *p1 = c; *sp = p; @@ -4212,13 +4558,13 @@ match_upattern (string, pat, mtype, sp, ep) return (0); case MATCH_BEG: - if (match_pattern_char (pat, string) == 0) + if (match_pattern_char (pat, string, FNMATCH_IGNCASE) == 0) return (0); for (p = (mlen == -1) ? end : string + mlen; p >= string; p--) { c = *p; *p = '\0'; - if (strmatch (pat, string, FNMATCH_EXTFLAG) == 0) + if (strmatch (pat, string, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) { *p = c; *sp = string; @@ -4236,7 +4582,7 @@ match_upattern (string, pat, mtype, sp, ep) case MATCH_END: for (p = end - ((mlen == -1) ? len : mlen); p <= end; p++) { - if (strmatch (pat, p, FNMATCH_EXTFLAG) == 0) + if (strmatch (pat, p, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) { *sp = p; *ep = end; @@ -4254,6 +4600,9 @@ match_upattern (string, pat, mtype, sp, ep) } #if defined (HANDLE_MULTIBYTE) + +#define WFOLD(c) (match_ignore_case && iswupper (c) ? towlower (c) : (c)) + /* Match WPAT anywhere in WSTRING and return the match boundaries. This returns 1 in case of a successful match, 0 otherwise. Wide character version. */ @@ -4286,19 +4635,36 @@ match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep) len = wcslen (wpat); if (wpat[0] != L'*' || (wpat[0] == L'*' && wpat[1] == WLPAREN && extended_glob) || wpat[len - 1] != L'*') { + int unescaped_backslash; + wchar_t *wpp; + wp = nwpat = (wchar_t *)xmalloc ((len + 3) * sizeof (wchar_t)); wp1 = wpat; if (*wp1 != L'*' || (*wp1 == '*' && wp1[1] == WLPAREN && extended_glob)) *wp++ = L'*'; while (*wp1 != L'\0') *wp++ = *wp1++; +#if 1 + /* See comments above in match_upattern. */ + if (wp1[-1] == L'*' && (unescaped_backslash = wp1[-2] == L'\\')) + { + wpp = wp1 - 3; + while (wpp >= wpat && *wpp-- == L'\\') + unescaped_backslash = 1 - unescaped_backslash; + if (unescaped_backslash) + *wp++ = L'*'; + } + else if (wp1[-1] != L'*') + *wp++ = L'*'; +#else if (wp1[-1] != L'*' || wp1[-2] == L'\\') *wp++ = L'*'; +#endif *wp = '\0'; } else nwpat = wpat; - len = wcsmatch (nwpat, wstring, FNMATCH_EXTFLAG); + len = wcsmatch (nwpat, wstring, FNMATCH_EXTFLAG | FNMATCH_IGNCASE); if (nwpat != wpat) free (nwpat); if (len == FNM_NOMATCH) @@ -4312,7 +4678,7 @@ match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep) case MATCH_ANY: for (n = 0; n <= wstrlen; n++) { - n2 = simple ? (*wpat == wstring[n]) : match_pattern_wchar (wpat, wstring + n); + n2 = simple ? (WFOLD(*wpat) == WFOLD(wstring[n])) : match_pattern_wchar (wpat, wstring + n, FNMATCH_IGNCASE); if (n2) { n1 = (mlen == -1) ? wstrlen : n + mlen; @@ -4322,7 +4688,7 @@ match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep) for ( ; n1 >= n; n1--) { wc = wstring[n1]; wstring[n1] = L'\0'; - if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG) == 0) + if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) { wstring[n1] = wc; *sp = indices[n]; @@ -4340,13 +4706,13 @@ match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep) return (0); case MATCH_BEG: - if (match_pattern_wchar (wpat, wstring) == 0) + if (match_pattern_wchar (wpat, wstring, FNMATCH_IGNCASE) == 0) return (0); for (n = (mlen == -1) ? wstrlen : mlen; n >= 0; n--) { wc = wstring[n]; wstring[n] = L'\0'; - if (wcsmatch (wpat, wstring, FNMATCH_EXTFLAG) == 0) + if (wcsmatch (wpat, wstring, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) { wstring[n] = wc; *sp = indices[0]; @@ -4364,7 +4730,7 @@ match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep) case MATCH_END: for (n = wstrlen - ((mlen == -1) ? wstrlen : mlen); n <= wstrlen; n++) { - if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG) == 0) + if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG | FNMATCH_IGNCASE) == 0) { *sp = indices[n]; *ep = indices[wstrlen]; @@ -4380,6 +4746,7 @@ match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep) return (0); } +#undef WFOLD #endif /* HANDLE_MULTIBYTE */ static int @@ -4396,7 +4763,7 @@ match_pattern (string, pat, mtype, sp, ep) size_t slen, plen, mslen, mplen; #endif - if (string == 0 || *string == 0 || pat == 0 || *pat == 0) + if (string == 0 || pat == 0 || *pat == 0) return (0); #if defined (HANDLE_MULTIBYTE) @@ -4465,7 +4832,7 @@ getpattern (value, quoted, expandpat) if (expandpat && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *tword) { i = 0; - pat = string_extract_double_quoted (tword, &i, 1); + pat = string_extract_double_quoted (tword, &i, SX_STRIPDQ); free (tword); tword = pat; } @@ -4566,7 +4933,7 @@ array_remove_pattern (var, pattern, patspec, varname, quoted) v = array_variable_part (varname, &ret, 0); /* XXX */ - if (v && invisible_p (var)) + if (v && invisible_p (v)) return ((char *)NULL); itype = ret[0]; @@ -4660,6 +5027,276 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag return temp1; } +static char * +string_var_assignment (v, s) + SHELL_VAR *v; + char *s; +{ + char flags[MAX_ATTRIBUTES], *ret, *val; + int i; + + val = sh_quote_reusable (s, 0); + i = var_attribute_string (v, 0, flags); + ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16 + MAX_ATTRIBUTES); + if (i > 0) + sprintf (ret, "declare -%s %s=%s", flags, v->name, val); + else + sprintf (ret, "%s=%s", v->name, val); + free (val); + return ret; +} + +#if defined (ARRAY_VARS) +static char * +array_var_assignment (v, itype, quoted) + SHELL_VAR *v; + int itype, quoted; +{ + char *ret, *val, flags[MAX_ATTRIBUTES]; + int i; + + if (v == 0) + return (char *)NULL; + val = array_p (v) ? array_to_assign (array_cell (v), 0) + : assoc_to_assign (assoc_cell (v), 0); + if (val == 0) + { + val = (char *)xmalloc (3); + val[0] = '('; + val[1] = ')'; + val[2] = 0; + } + else + { + ret = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (val) : quote_escapes (val); + free (val); + val = ret; + } + i = var_attribute_string (v, 0, flags); + ret = (char *)xmalloc (i + strlen (val) + strlen (v->name) + 16); + sprintf (ret, "declare -%s %s=%s", flags, v->name, val); + free (val); + return ret; +} +#endif + +static char * +pos_params_assignment (list, itype, quoted) + WORD_LIST *list; + int itype; + int quoted; +{ + char *temp, *ret; + + /* first, we transform the list to quote each word. */ + temp = list_transform ('Q', (SHELL_VAR *)0, list, itype, quoted); + ret = (char *)xmalloc (strlen (temp) + 8); + strcpy (ret, "set -- "); + strcpy (ret + 7, temp); + free (temp); + return ret; +} + +static char * +string_transform (xc, v, s) + int xc; + SHELL_VAR *v; + char *s; +{ + char *ret, flags[MAX_ATTRIBUTES]; + int i; + + if (((xc == 'A' || xc == 'a') && v == 0) || (xc != 'a' && s == 0)) + return (char *)NULL; + + switch (xc) + { + /* Transformations that interrogate the variable */ + case 'a': + i = var_attribute_string (v, 0, flags); + ret = (i > 0) ? savestring (flags) : (char *)NULL; + break; + case 'A': + ret = string_var_assignment (v, s); + break; + /* Transformations that modify the variable's value */ + case 'E': + ret = ansiexpand (s, 0, strlen (s), (int *)0); + break; + case 'P': + ret = decode_prompt_string (s); + break; + case 'Q': + ret = sh_quote_reusable (s, 0); + break; + default: + ret = (char *)NULL; + break; + } + return ret; +} + +static char * +list_transform (xc, v, list, itype, quoted) + int xc; + SHELL_VAR *v; + WORD_LIST *list; + int itype, quoted; +{ + WORD_LIST *new, *l; + WORD_DESC *w; + char *tword; + + for (new = (WORD_LIST *)NULL, l = list; l; l = l->next) + { + tword = string_transform (xc, v, l->word->word); + w = alloc_word_desc (); + w->word = tword ? tword : savestring (""); /* XXX */ + new = make_word_list (w, new); + } + + l = REVERSE_LIST (new, WORD_LIST *); + tword = string_list_pos_params (itype, l, quoted); + dispose_words (l); + + return (tword); +} + +static char * +parameter_list_transform (xc, itype, quoted) + int xc; + int itype; + int quoted; +{ + char *ret; + WORD_LIST *list; + + list = list_rest_of_args (); + if (list == 0) + return ((char *)NULL); + if (xc == 'A') + return (pos_params_assignment (list, itype, quoted)); + ret = list_transform (xc, (SHELL_VAR *)0, list, itype, quoted); + dispose_words (list); + return (ret); +} + +#if defined (ARRAY_VARS) +static char * +array_transform (xc, var, varname, quoted) + int xc; + SHELL_VAR *var; + char *varname; /* so we can figure out how it's indexed */ + int quoted; +{ + ARRAY *a; + HASH_TABLE *h; + int itype; + char *ret; + WORD_LIST *list; + SHELL_VAR *v; + + /* compute itype from varname here */ + v = array_variable_part (varname, &ret, 0); + + /* XXX */ + if (v && invisible_p (v)) + return ((char *)NULL); + + itype = ret[0]; + + if (xc == 'A') + return (array_var_assignment (v, itype, quoted)); + + a = (v && array_p (v)) ? array_cell (v) : 0; + h = (v && assoc_p (v)) ? assoc_cell (v) : 0; + + list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0); + if (list == 0) + return ((char *)NULL); + ret = list_transform (xc, v, list, itype, quoted); + dispose_words (list); + + return ret; +} +#endif /* ARRAY_VARS */ + +static char * +parameter_brace_transform (varname, value, ind, xform, rtype, quoted, flags) + char *varname, *value; + int ind; + char *xform; + int rtype, quoted, flags; +{ + int vtype, xc; + char *temp1, *val; + SHELL_VAR *v; + + xc = xform[0]; + if (value == 0 && xc != 'A' && xc != 'a') + return ((char *)NULL); + + this_command_name = varname; + + vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val); + if (vtype == -1) + return ((char *)NULL); + + /* check for valid values of xc */ + switch (xc) + { + case 'a': /* expand to a string with just attributes */ + case 'A': /* expand as an assignment statement with attributes */ + case 'E': /* expand like $'...' */ + case 'P': /* expand like prompt string */ + case 'Q': /* quote reusably */ + break; + default: + return &expand_param_error; + } + + temp1 = (char *)NULL; /* shut up gcc */ + switch (vtype & ~VT_STARSUB) + { + case VT_VARIABLE: + case VT_ARRAYMEMBER: + temp1 = string_transform (xc, v, val); + if (vtype == VT_VARIABLE) + FREE (val); + if (temp1) + { + val = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) + ? quote_string (temp1) + : quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; +#if defined (ARRAY_VARS) + case VT_ARRAYVAR: + temp1 = array_transform (xc, v, varname, quoted); + if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + { + val = quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; +#endif + case VT_POSPARMS: + temp1 = parameter_list_transform (xc, varname[0], quoted); + if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)) + { + val = quote_escapes (temp1); + free (temp1); + temp1 = val; + } + break; + } + + return temp1; +} + /******************************************* * * * Functions to expand WORD_DESCs * @@ -4755,6 +5392,11 @@ static struct temp_fifo *fifo_list = (struct temp_fifo *)NULL; static int nfifo; static int fifo_list_size; +void +clear_fifo_list () +{ +} + char * copy_fifo_list (sizep) int *sizep; @@ -4893,6 +5535,31 @@ static char *dev_fd_list = (char *)NULL; static int nfds; static int totfds; /* The highest possible number of open files. */ +void +clear_fifo (i) + int i; +{ + if (dev_fd_list[i]) + { + dev_fd_list[i] = 0; + nfds--; + } +} + +void +clear_fifo_list () +{ + register int i; + + if (nfds == 0) + return; + + for (i = 0; nfds && i < totfds; i++) + clear_fifo (i); + + nfds = 0; +} + char * copy_fifo_list (sizep) int *sizep; @@ -5070,7 +5737,7 @@ process_substitute (string, open_for_read_in_child) #else /* HAVE_DEV_FD */ if (pipe (fildes) < 0) { - sys_error (_("cannot make pipe for process substitution")); + sys_error ("%s", _("cannot make pipe for process substitution")); return ((char *)NULL); } /* If OPEN_FOR_READ_IN_CHILD == 1, we want to use the write end of @@ -5086,7 +5753,7 @@ process_substitute (string, open_for_read_in_child) if (pathname == 0) { - sys_error (_("cannot make pipe for process substitution")); + sys_error ("%s", _("cannot make pipe for process substitution")); return ((char *)NULL); } @@ -5094,7 +5761,8 @@ process_substitute (string, open_for_read_in_child) #if defined (JOB_CONTROL) old_pipeline_pgrp = pipeline_pgrp; - pipeline_pgrp = shell_pgrp; + if (pipeline_pgrp == 0 || (subshell_environment & (SUBSHELL_PIPE|SUBSHELL_FORK|SUBSHELL_ASYNC)) == 0) + pipeline_pgrp = shell_pgrp; save_pipeline (1); #endif /* JOB_CONTROL */ @@ -5105,8 +5773,15 @@ process_substitute (string, open_for_read_in_child) free_pushed_string_input (); /* Cancel traps, in trap.c. */ restore_original_signals (); /* XXX - what about special builtins? bash-4.2 */ + QUIT; /* catch any interrupts we got post-fork */ setup_async_signals (); subshell_environment |= SUBSHELL_COMSUB|SUBSHELL_PROCSUB; + + /* if we're expanding a redirection, we shouldn't have access to the + temporary environment, but commands in the subshell should have + access to their own temporary environment. */ + if (expanding_redir) + flush_temporary_env (); } #if defined (JOB_CONTROL) @@ -5114,11 +5789,13 @@ process_substitute (string, open_for_read_in_child) stop_making_children (); /* XXX - should we only do this in the parent? (as in command subst) */ pipeline_pgrp = old_pipeline_pgrp; +#else + stop_making_children (); #endif /* JOB_CONTROL */ if (pid < 0) { - sys_error (_("cannot make child for process substitution")); + sys_error ("%s", _("cannot make child for process substitution")); free (pathname); #if defined (HAVE_DEV_FD) close (parent_pipe_fd); @@ -5130,7 +5807,12 @@ process_substitute (string, open_for_read_in_child) if (pid > 0) { #if defined (JOB_CONTROL) - restore_pipeline (1); + if (last_procsub_child) + { + discard_pipeline (last_procsub_child); + last_procsub_child = (PROCESS *)NULL; + } + last_procsub_child = restore_pipeline (0); #endif #if !defined (HAVE_DEV_FD) @@ -5181,6 +5863,11 @@ process_substitute (string, open_for_read_in_child) fd = child_pipe_fd; #endif /* HAVE_DEV_FD */ + /* Discard buffered stdio output before replacing the underlying file + descriptor. */ + if (open_for_read_in_child == 0) + fpurge (stdout); + if (dup2 (fd, open_for_read_in_child ? 0 : 1) < 0) { sys_error (_("cannot duplicate named pipe %s as fd %d"), pathname, @@ -5208,10 +5895,15 @@ process_substitute (string, open_for_read_in_child) #endif /* HAVE_DEV_FD */ /* subshells shouldn't have this flag, which controls using the temporary - environment for variable lookups. */ + environment for variable lookups. We have already flushed the temporary + environment above in the case we're expanding a redirection, so processes + executed by this command need to be able to set it independently of their + parent. */ expanding_redir = 0; + subshell_level++; result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST)); + subshell_level--; #if !defined (HAVE_DEV_FD) /* Make sure we close the named pipe in the child before we exit. */ @@ -5263,8 +5955,8 @@ read_comsub (fd, quoted, rflag) if (c == 0) { -#if 0 - internal_warning ("read_comsub: ignored null byte in input"); +#if 1 + internal_warning ("%s", _("command substitution: ignored null byte in input")); #endif continue; } @@ -5346,7 +6038,7 @@ command_substitute (string, quoted) int quoted; { pid_t pid, old_pid, old_pipeline_pgrp, old_async_pid; - char *istring; + char *istring, *s; int result, fildes[2], function_value, pflags, rc, tflag; WORD_DESC *ret; @@ -5354,8 +6046,15 @@ command_substitute (string, quoted) /* Don't fork () if there is no need to. In the case of no command to run, just return NULL. */ +#if 1 + for (s = string; s && *s && (shellblank (*s) || *s == '\n'); s++) + ; + if (s == 0 || *s == 0) + return ((WORD_DESC *)NULL); +#else if (!string || !*string || (string[0] == '\n' && !string[1])) return ((WORD_DESC *)NULL); +#endif if (wordexp_only && read_but_dont_execute) { @@ -5381,7 +6080,7 @@ command_substitute (string, quoted) /* Pipe the output of executing STRING into the current shell. */ if (pipe (fildes) < 0) { - sys_error (_("cannot make pipe for command substitution")); + sys_error ("%s", _("cannot make pipe for command substitution")); goto error_exit; } @@ -5404,6 +6103,12 @@ command_substitute (string, quoted) trap strings. Set a flag noting that we have to free the trap strings if we run trap to change a signal disposition. */ reset_signal_handlers (); + if (ISINTERRUPT) + { + kill (getpid (), SIGINT); + CLRINTERRUPT; /* if we're ignoring SIGINT somehow */ + } + QUIT; /* catch any interrupts we got post-fork */ subshell_environment |= SUBSHELL_RESETTRAP; } @@ -5432,13 +6137,20 @@ command_substitute (string, quoted) if (pid == 0) { + /* The currently executing shell is not interactive. */ + interactive = 0; + set_sigint_handler (); /* XXX */ free_pushed_string_input (); + /* Discard buffered stdio output before replacing the underlying file + descriptor. */ + fpurge (stdout); + if (dup2 (fildes[1], 1) < 0) { - sys_error (_("command_substitute: cannot duplicate pipe as fd 1")); + sys_error ("%s", _("command_substitute: cannot duplicate pipe as fd 1")); exit (EXECUTION_FAILURE); } @@ -5465,20 +6177,32 @@ command_substitute (string, quoted) sh_setlinebuf (stdout); #endif /* __CYGWIN__ */ - /* The currently executing shell is not interactive. */ - interactive = 0; - /* This is a subshell environment. */ subshell_environment |= SUBSHELL_COMSUB; - /* When not in POSIX mode, command substitution does not inherit - the -e flag. */ - if (posixly_correct == 0) + /* Many shells do not appear to inherit the -v option for command + substitutions. */ + change_flag ('v', FLAG_OFF); + + /* When inherit_errexit option is not enabled, command substitution does + not inherit the -e flag. It is enabled when Posix mode is enabled */ + if (inherit_errexit == 0) { builtin_ignoring_errexit = 0; change_flag ('e', FLAG_OFF); - set_shellopts (); } + set_shellopts (); + + /* If we are expanding a redirection, we can dispose of any temporary + environment we received, since redirections are not supposed to have + access to the temporary environment. We will have to see whether this + affects temporary environments supplied to `eval', but the temporary + environment gets copied to builtin_env at some point. */ + if (expanding_redir) + { + flush_temporary_env (); + expanding_redir = 0; + } remove_quoted_escapes (string); @@ -5547,8 +6271,13 @@ command_substitute (string, quoted) pipeline_pgrp is non-zero only while we are constructing a pipeline, so what we are concerned about is whether or not that pipeline was started in the background. A pipeline started in - the background should never get the tty back here. */ - if (interactive && pipeline_pgrp != (pid_t)0 && (subshell_environment & SUBSHELL_ASYNC) == 0) + the background should never get the tty back here. We duplicate + the conditions that wait_for tests to make sure we only give + the terminal back to pipeline_pgrp under the conditions that wait_for + gave it to shell_pgrp. If wait_for doesn't mess with the terminal + pgrp, we should not either. */ + if (interactive && pipeline_pgrp != (pid_t)0 && running_in_background == 0 && + (subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0) give_terminal_to (pipeline_pgrp, 0); #endif /* JOB_CONTROL */ @@ -5659,7 +6388,7 @@ valid_brace_expansion_word (name, var_is_special) else if (var_is_special) return 1; #if defined (ARRAY_VARS) - else if (valid_array_reference (name)) + else if (valid_array_reference (name, 0)) return 1; #endif /* ARRAY_VARS */ else if (legal_identifier (name)) @@ -5703,7 +6432,7 @@ chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at) /* Now check for ${array[@]} and ${array[*]} */ #if defined (ARRAY_VARS) - else if (valid_array_reference (name)) + else if (valid_array_reference (name, 0)) { temp1 = mbschr (name, '['); if (temp1 && temp1[1] == '@' && temp1[2] == ']') @@ -5776,18 +6505,24 @@ parameter_brace_expand_word (name, var_is_special, quoted, pflags, indp) free (tt); } #if defined (ARRAY_VARS) - else if (valid_array_reference (name)) + else if (valid_array_reference (name, 0)) { expand_arrayref: - /* XXX - does this leak if name[@] or name[*]? */ if (pflags & PF_ASSIGNRHS) - { - var = array_variable_part (name, &tt, (int *)0); - if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') - temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind); + { + var = array_variable_part (name, &tt, (int *)0); + if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') + { + /* Only treat as double quoted if array variable */ + if (var && (array_p (var) || assoc_p (var))) + /* XXX - bash-4.4/bash-5.0 pass AV_ASSIGNRHS */ + temp = array_value (name, quoted|Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind); + else + temp = array_value (name, quoted, 0, &atype, &ind); + } else temp = array_value (name, quoted, 0, &atype, &ind); - } + } else temp = array_value (name, quoted, 0, &atype, &ind); if (atype == 0 && temp) @@ -5826,12 +6561,12 @@ expand_arrayref: else temp = (char *)NULL; } - else if (var = find_variable_last_nameref (name)) + else if (var = find_variable_last_nameref (name, 0)) { temp = nameref_cell (var); #if defined (ARRAY_VARS) /* Handle expanding nameref whose value is x[n] */ - if (temp && *temp && valid_array_reference (temp)) + if (temp && *temp && valid_array_reference (temp, 0)) { name = temp; goto expand_arrayref; @@ -5869,7 +6604,7 @@ parameter_brace_find_indir (name, var_is_special, quoted, find_nameref) WORD_DESC *w; SHELL_VAR *v; - if (find_nameref && var_is_special == 0 && (v = find_variable_last_nameref (name)) && + if (find_nameref && var_is_special == 0 && (v = find_variable_last_nameref (name, 0)) && nameref_p (v) && (t = nameref_cell (v)) && *t) return (savestring (t)); @@ -5909,7 +6644,7 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c bash performs an indirect lookup on foo[0] and expands the result; ksh93 expands bar[0]. We could do that here -- there are enough usable primitives to do that -- but do not at this point. */ - if (var_is_special == 0 && (v = find_variable_last_nameref (name))) + if (var_is_special == 0 && (v = find_variable_last_nameref (name, 0))) { if (nameref_p (v) && (t = nameref_cell (v)) && *t) { @@ -5926,6 +6661,16 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c if (t == 0) return (WORD_DESC *)NULL; + if (valid_brace_expansion_word (t, SPECIAL_VAR (t, 0)) == 0) + { + report_error (_("%s: bad substitution"), t); + free (t); + w = alloc_word_desc (); + w->word = &expand_param_error; + w->flags = 0; + return (w); + } + w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted, 0, 0); free (t); @@ -5937,49 +6682,63 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c "-", "+", or "=". QUOTED is true if the entire brace expression occurs between double quotes. */ static WORD_DESC * -parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat) +parameter_brace_expand_rhs (name, value, c, quoted, pflags, qdollaratp, hasdollarat) char *name, *value; - int c, quoted, *qdollaratp, *hasdollarat; + int c, quoted, pflags, *qdollaratp, *hasdollarat; { WORD_DESC *w; WORD_LIST *l; - char *t, *t1, *temp; - int hasdol; + char *t, *t1, *temp, *vname; + int l_hasdollat, sindex; +/*itrace("parameter_brace_expand_rhs: %s:%s pflags = %d", name, value, pflags);*/ /* If the entire expression is between double quotes, we want to treat the value as a double-quoted string, with the exception that we strip embedded unescaped double quotes (for sh backwards compatibility). */ if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *value) { - hasdol = 0; - temp = string_extract_double_quoted (value, &hasdol, 1); + sindex = 0; + temp = string_extract_double_quoted (value, &sindex, SX_STRIPDQ); } else temp = value; w = alloc_word_desc (); - hasdol = 0; + l_hasdollat = 0; /* XXX was 0 not quoted */ - l = *temp ? expand_string_for_rhs (temp, quoted, &hasdol, (int *)NULL) + l = *temp ? expand_string_for_rhs (temp, quoted, &l_hasdollat, (int *)NULL) : (WORD_LIST *)0; if (hasdollarat) - *hasdollarat = hasdol || (l && l->next); + *hasdollarat = l_hasdollat || (l && l->next); if (temp != value) free (temp); if (l) { - /* The expansion of TEMP returned something. We need to treat things - slightly differently if HASDOL is non-zero. If we have "$@", the - individual words have already been quoted. We need to turn them - into a string with the words separated by the first character of - $IFS without any additional quoting, so string_list_dollar_at won't - do the right thing. We use string_list_dollar_star instead. */ - temp = (hasdol || l->next) ? string_list_dollar_star (l) : string_list (l); - /* If l->next is not null, we know that TEMP contained "$@", since that is the only expansion that creates more than one word. */ - if (qdollaratp && ((hasdol && quoted) || l->next)) - *qdollaratp = 1; + if (qdollaratp && ((l_hasdollat && quoted) || l->next)) + { +/*itrace("parameter_brace_expand_rhs: %s:%s: l != NULL, set *qdollaratp", name, value);*/ + *qdollaratp = 1; + } + + /* The expansion of TEMP returned something. We need to treat things + slightly differently if L_HASDOLLAT is non-zero. If we have "$@", + the individual words have already been quoted. We need to turn them + into a string with the words separated by the first character of + $IFS without any additional quoting, so string_list_dollar_at won't + do the right thing. If IFS is null, we want "$@" to split into + separate arguments, not be concatenated, so we use string_list_internal + and mark the word to be split on spaces later. We use + string_list_dollar_star for "$@" otherwise. */ + if (l->next && ifs_is_null) + { + temp = string_list_internal (l, " "); + w->flags |= W_SPLITSPACE; + } + else + temp = (l_hasdollat || l->next) ? string_list_dollar_star (l) : string_list (l); + /* If we have a quoted null result (QUOTED_NULL(temp)) and the word is a quoted null (l->next == 0 && QUOTED_NULL(l->word->word)), the flags indicate it (l->word->flags & W_HASQUOTEDNULL), and the @@ -5989,17 +6748,32 @@ parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat) if (l->next == 0 && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && QUOTED_NULL (temp) && QUOTED_NULL (l->word->word) && (l->word->flags & W_HASQUOTEDNULL)) { w->flags |= W_HASQUOTEDNULL; +/*itrace("parameter_brace_expand_rhs (%s:%s): returning quoted null, turning off qdollaratp", name, value);*/ + /* If we return a quoted null with L_HASDOLLARAT, we either have a + construct like "${@-$@}" or "${@-${@-$@}}" with no positional + parameters or a quoted expansion of "$@" with $1 == ''. In either + case, we don't want to enable special handling of $@. */ + if (qdollaratp && l_hasdollat) + *qdollaratp = 0; } dispose_words (l); } - else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && hasdol) + else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && l_hasdollat) { + /* Posix interp 221 changed the rules on this. The idea is that + something like "$xxx$@" should expand the same as "${foo-$xxx$@}" + when foo and xxx are unset. The problem is that it's not in any + way backwards compatible and few other shells do it. We're eventually + going to try and split the difference (heh) a little bit here. */ + /* l_hasdollat == 1 means we saw a quoted dollar at. */ + /* The brace expansion occurred between double quotes and there was a $@ in TEMP. It does not matter if the $@ is quoted, as long as it does not expand to anything. In this case, we want to return - a quoted empty string. */ + a quoted empty string. Posix interp 888 */ temp = make_quoted_char ('\0'); w->flags |= W_HASQUOTEDNULL; +/*itrace("parameter_brace_expand_rhs (%s:%s): returning quoted null", name, value);*/ } else temp = (char *)NULL; @@ -6014,16 +6788,40 @@ parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat) t = temp ? savestring (temp) : savestring (""); t1 = dequote_string (t); free (t); + + /* bash-4.4/5.0 */ + vname = name; + if (*name == '!' && + (legal_variable_starter ((unsigned char)name[1]) || DIGIT (name[1]) || VALID_INDIR_PARAM (name[1]))) + { + vname = parameter_brace_find_indir (name + 1, SPECIAL_VAR (name, 1), quoted, 1); + if (vname == 0 || *vname == 0) + { + report_error (_("%s: invalid indirect expansion"), name); + free (vname); + dispose_word (w); + return &expand_wdesc_error; + } + if (legal_identifier (vname) == 0) + { + report_error (_("%s: invalid variable name"), vname); + free (vname); + dispose_word (w); + return &expand_wdesc_error; + } + } + #if defined (ARRAY_VARS) - if (valid_array_reference (name)) - assign_array_element (name, t1, 0); + if (valid_array_reference (vname, 0)) + assign_array_element (vname, t1, 0); else #endif /* ARRAY_VARS */ - bind_variable (name, t1, 0); -#if 0 - if (STREQ (name, "IFS") == 0) -#endif - stupidly_hack_special_variables (name); + bind_variable (vname, t1, 0); + + stupidly_hack_special_variables (vname); + + if (vname != name) + free (vname); /* From Posix group discussion Feb-March 2010. Issue 7 0000221 */ free (temp); @@ -6071,7 +6869,7 @@ valid_length_expression (name) ((sh_syntaxtab[(unsigned char) name[1]] & CSPECVAR) && name[2] == '\0') || /* special param */ (DIGIT (name[1]) && all_digits (name + 1)) || /* ${#11} */ #if defined (ARRAY_VARS) - valid_array_reference (name + 1) || /* ${#a[7]} */ + valid_array_reference (name + 1, 0) || /* ${#a[7]} */ #endif legal_identifier (name + 1)); /* ${#PS1} */ } @@ -6091,7 +6889,7 @@ parameter_brace_expand_length (name) if (name[1] == '\0') /* ${#} */ number = number_of_args (); - else if ((name[1] == '@' || name[1] == '*') && name[2] == '\0') /* ${#@}, ${#*} */ + else if (DOLLAR_AT_STAR (name[1]) && name[2] == '\0') /* ${#@}, ${#*} */ number = number_of_args (); else if ((sh_syntaxtab[(unsigned char) name[1]] & CSPECVAR) && name[2] == '\0') { @@ -6121,7 +6919,7 @@ parameter_brace_expand_length (name) FREE (t); } #if defined (ARRAY_VARS) - else if (valid_array_reference (name + 1)) + else if (valid_array_reference (name + 1, 0)) number = array_length_reference (name + 1); #endif /* ARRAY_VARS */ else @@ -6171,6 +6969,7 @@ parameter_brace_expand_length (name) the first DELIM, instead of using strchr(3). Two rules: 1. If the substring contains a `(', read until closing `)'. 2. If the substring contains a `?', read past one `:' for each `?'. + The SD_ARITHEXP flag to skip_to_delim takes care of doing this. */ static char * @@ -6178,51 +6977,13 @@ skiparith (substr, delim) char *substr; int delim; { - size_t sublen; - int skipcol, pcount, i; - DECLARE_MBSTATE; + int i; + char delims[2]; - sublen = strlen (substr); - i = skipcol = pcount = 0; - while (substr[i]) - { - /* Balance parens */ - if (substr[i] == LPAREN) - { - pcount++; - i++; - continue; - } - if (substr[i] == RPAREN && pcount) - { - pcount--; - i++; - continue; - } - if (pcount) - { - ADVANCE_CHAR (substr, sublen, i); - continue; - } - - /* Skip one `:' for each `?' */ - if (substr[i] == ':' && skipcol) - { - skipcol--; - i++; - continue; - } - if (substr[i] == delim) - break; - if (substr[i] == '?') - { - skipcol++; - i++; - continue; - } - ADVANCE_CHAR (substr, sublen, i); - } + delims[0] = delim; + delims[1] = '\0'; + i = skip_to_delim (substr, 0, delims, SD_ARITHEXP); return (substr + i); } @@ -6377,9 +7138,7 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) int vtype, want_indir; char *temp, *vname; WORD_DESC *wd; -#if defined (ARRAY_VARS) SHELL_VAR *v; -#endif arrayind_t lind; want_indir = *varname == '!' && @@ -6387,17 +7146,26 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) || VALID_INDIR_PARAM (varname[1])); if (want_indir) vname = parameter_brace_find_indir (varname+1, SPECIAL_VAR (varname, 1), quoted, 1); + /* XXX - what if vname == 0 || *vname == 0 ? */ else vname = varname; - + + if (vname == 0) + { + vtype = VT_VARIABLE; + *varp = (SHELL_VAR *)NULL; + *valp = (char *)NULL; + return (vtype); + } + /* This sets vtype to VT_VARIABLE or VT_POSPARMS */ - vtype = (vname[0] == '@' || vname[0] == '*') && vname[1] == '\0'; + vtype = STR_DOLLAR_AT_STAR (vname); if (vtype == VT_POSPARMS && vname[0] == '*') vtype |= VT_STARSUB; *varp = (SHELL_VAR *)NULL; #if defined (ARRAY_VARS) - if (valid_array_reference (vname)) + if (valid_array_reference (vname, 0)) { v = array_variable_part (vname, &temp, (int *)0); /* If we want to signal array_value to use an already-computed index, @@ -6453,6 +7221,7 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) { if (value && vtype == VT_VARIABLE) { + *varp = find_variable (vname); if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) *valp = dequote_string (value); else @@ -6485,7 +7254,8 @@ mb_substring (string, s, e) int s, e; { char *tt; - int start, stop, i, slen; + int start, stop, i; + size_t slen; DECLARE_MBSTATE; start = 0; @@ -6520,7 +7290,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags) char *temp, *val, *tt, *oname; SHELL_VAR *v; - if (value == 0) + if (value == 0 && ((varname[0] != '@' && varname[0] != '*') || varname[1])) return ((char *)NULL); oname = this_command_name; @@ -6602,6 +7372,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags) /* */ /****************************************************************/ +#if 0 /* Unused */ static int shouldexp_replacement (s) char *s; @@ -6617,6 +7388,7 @@ shouldexp_replacement (s) } return 0; } +#endif char * pat_subst (string, pat, rep, mflags) @@ -6624,7 +7396,8 @@ pat_subst (string, pat, rep, mflags) int mflags; { char *ret, *s, *e, *str, *rstr, *mstr; - int rsize, rptr, l, replen, mtype, rxpand, rslen, mlen; + int rptr, mtype, rxpand, mlen; + size_t rsize, l, replen, rslen; if (string == 0) return (savestring ("")); @@ -6642,6 +7415,8 @@ pat_subst (string, pat, rep, mflags) * with REP and return the result. * 2. A null pattern with mtype == MATCH_END means to append REP to * STRING and return the result. + * 3. A null STRING with a matching pattern means to append REP to + * STRING and return the result. * These don't understand or process `&' in the replacement string. */ if ((pat == 0 || *pat == 0) && (mtype == MATCH_BEG || mtype == MATCH_END)) @@ -6663,32 +7438,43 @@ pat_subst (string, pat, rep, mflags) } return (ret); } + else if (*string == 0 && (match_pattern (string, pat, mtype, &s, &e) != 0)) + { + replen = STRLEN (rep); + ret = (char *)xmalloc (replen + 1); + if (replen == 0) + ret[0] = '\0'; + else + strcpy (ret, rep); + return (ret); + } ret = (char *)xmalloc (rsize = 64); ret[0] = '\0'; - for (replen = STRLEN (rep), rptr = 0, str = string;;) + for (replen = STRLEN (rep), rptr = 0, str = string; *str;) { if (match_pattern (str, pat, mtype, &s, &e) == 0) break; l = s - str; - if (rxpand) + if (rep && rxpand) { - int x; - mlen = e - s; - mstr = xmalloc (mlen + 1); + int x; + mlen = e - s; + mstr = xmalloc (mlen + 1); for (x = 0; x < mlen; x++) mstr[x] = s[x]; - mstr[mlen] = '\0'; - rstr = strcreplace (rep, '&', mstr, 0); - rslen = strlen (rstr); + mstr[mlen] = '\0'; + rstr = strcreplace (rep, '&', mstr, 0); + free (mstr); + rslen = strlen (rstr); } else - { - rstr = rep; - rslen = replen; - } + { + rstr = rep; + rslen = replen; + } RESIZE_MALLOCED_BUFFER (ret, rptr, (l + rslen), rsize, 64); @@ -6775,11 +7561,11 @@ pos_params_pat_subst (string, pat, rep, mflags) and the string to substitute. QUOTED is a flags word containing the type of quoting currently in effect. */ static char * -parameter_brace_patsub (varname, value, ind, patsub, quoted, flags) +parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) char *varname, *value; int ind; char *patsub; - int quoted, flags; + int quoted, pflags, flags; { int vtype, mflags, starsub, delim; char *val, *temp, *pat, *rep, *p, *lpatsub, *tt; @@ -6815,6 +7601,9 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, flags) if (starsub) mflags |= MATCH_STARSUB; + if (pflags & PF_ASSIGNRHS) + mflags |= MATCH_ASSIGNRHS; + /* If the pattern starts with a `/', make sure we skip over it when looking for the replacement delimiter. */ delim = skip_to_delim (lpatsub, ((*patsub == '/') ? 1 : 0), "/", 0); @@ -7102,11 +7891,11 @@ chk_arithsub (s, len) break; case '\'': - i = skip_single_quoted (s, len, ++i); + i = skip_single_quoted (s, len, ++i, 0); break; case '"': - i = skip_double_quoted ((char *)s, len, ++i); + i = skip_double_quoted ((char *)s, len, ++i, 0); break; } } @@ -7124,13 +7913,13 @@ chk_arithsub (s, len) static WORD_DESC * parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, contains_dollar_at) char *string; - int *indexp, quoted, *quoted_dollar_atp, *contains_dollar_at, pflags; + int *indexp, quoted, pflags, *quoted_dollar_atp, *contains_dollar_at; { int check_nullness, var_is_set, var_is_null, var_is_special; int want_substring, want_indir, want_patsub, want_casemod; char *name, *value, *temp, *temp1; WORD_DESC *tdesc, *ret; - int t_index, sindex, c, tflag, modspec; + int t_index, sindex, c, tflag, modspec, all_element_arrayref; intmax_t number; arrayind_t ind; @@ -7138,6 +7927,8 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta var_is_set = var_is_null = var_is_special = check_nullness = 0; want_substring = want_indir = want_patsub = want_casemod = 0; + all_element_arrayref = 0; + sindex = *indexp; t_index = ++sindex; /* ${#var} doesn't have any of the other parameter expansions on it. */ @@ -7148,14 +7939,31 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta /* To enable case-toggling expansions using the `~' operator character change the 1 to 0. */ # if defined (CASEMOD_CAPCASE) - name = string_extract (string, &t_index, "#%^,~:-=?+/}", SX_VARNAME); + name = string_extract (string, &t_index, "#%^,~:-=?+/@}", SX_VARNAME); # else - name = string_extract (string, &t_index, "#%^,:-=?+/}", SX_VARNAME); + name = string_extract (string, &t_index, "#%^,:-=?+/@}", SX_VARNAME); # endif /* CASEMOD_CAPCASE */ #else - name = string_extract (string, &t_index, "#%:-=?+/}", SX_VARNAME); + name = string_extract (string, &t_index, "#%:-=?+/@}", SX_VARNAME); #endif /* CASEMOD_EXPANSIONS */ + /* Handle ${@[stuff]} now that @ is a word expansion operator. Not exactly + the cleanest code ever. */ + if (*name == 0 && sindex == t_index && string[sindex] == '@') + { + name = (char *)xrealloc (name, 2); + name[0] = '@'; + name[1] = '\0'; + t_index++; + } + else if (*name == '!' && t_index > sindex && string[t_index] == '@' && string[t_index+1] == '}') + { + name = (char *)xrealloc (name, t_index - sindex + 2); + name[t_index - sindex] = '@'; + name[t_index - sindex + 1] = '\0'; + t_index++; + } + ret = 0; tflag = 0; @@ -7163,12 +7971,15 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta /* If the name really consists of a special variable, then make sure that we have the entire name. We don't allow indirect references - to special variables except `#', `?', `@' and `*'. */ + to special variables except `#', `?', `@' and `*'. This clause is + designed to handle ${#SPECIAL} and ${!SPECIAL}, not anything more + general. */ if ((sindex == t_index && VALID_SPECIAL_LENGTH_PARAM (string[t_index])) || + (sindex == t_index && string[sindex] == '#' && VALID_SPECIAL_LENGTH_PARAM (string[sindex + 1])) || (sindex == t_index - 1 && string[sindex] == '!' && VALID_INDIR_PARAM (string[t_index]))) { t_index++; - temp1 = string_extract (string, &t_index, "#%:-=?+/}", 0); + temp1 = string_extract (string, &t_index, "#%:-=?+/@}", 0); name = (char *)xrealloc (name, 3 + (strlen (temp1))); *name = string[sindex]; if (string[sindex] == '!') @@ -7228,7 +8039,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta member (c, "%:=+/") && string[sindex] == RBRACE) { temp = (char *)NULL; - goto bad_substitution; + goto bad_substitution; /* XXX - substitution error */ } /* Indirect expansion begins with a `!'. A valid indirect expansion is @@ -7255,7 +8066,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta if (string[sindex - 1] != RBRACE || (valid_length_expression (name) == 0)) { temp = (char *)NULL; - goto bad_substitution; + goto bad_substitution; /* substitution error */ } number = parameter_brace_expand_length (name); @@ -7308,7 +8119,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta temp = string_list_dollar_star (xlist); else { - temp = string_list_dollar_at (xlist, quoted); + temp = string_list_dollar_at (xlist, quoted, 0); if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp) *quoted_dollar_atp = 1; if (contains_dollar_at) @@ -7332,7 +8143,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta #if defined (ARRAY_VARS) /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */ /* [ */ if (want_indir && string[sindex - 1] == RBRACE && - string[sindex - 2] == ']' && valid_array_reference (name+1)) + string[sindex - 2] == ']' && valid_array_reference (name+1, 0)) { char *x, *x1; @@ -7352,6 +8163,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta tflag |= W_DOLLARAT; } + free (name); free (temp1); *indexp = sindex; @@ -7370,12 +8182,17 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta var_is_special) == 0) { temp = (char *)NULL; - goto bad_substitution; + goto bad_substitution; /* substitution error */ } if (want_indir) { tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); + if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal) + { + temp = (char *)NULL; + goto bad_substitution; + } /* Turn off the W_ARRAYIND flag because there is no way for this function to return the index we're supposed to be using. */ if (tdesc && tdesc->flags) @@ -7401,8 +8218,22 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta } #if defined (ARRAY_VARS) - if (valid_array_reference (name)) - chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at); + if (valid_array_reference (name, 0)) + { + int qflags; + char *t; + + qflags = quoted; + /* If in a context where word splitting will not take place, treat as + if double-quoted. Has effects with $* and ${array[*]} */ + if (pflags & PF_ASSIGNRHS) + qflags |= Q_DOUBLE_QUOTES; + chk_atstar (name, qflags, quoted_dollar_atp, contains_dollar_at); + /* We duplicate a little code here */ + t = mbschr (name, '['); + if (t && ALL_ELEMENT_SUB (t[1]) && t[2] == ']') + all_element_arrayref = 1; + } #endif var_is_set = temp != (char *)0; @@ -7420,7 +8251,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta if (string[sindex] == RBRACE) sindex++; else - goto bad_substitution; + goto bad_substitution; /* substitution error */ } else value = (char *)NULL; @@ -7431,7 +8262,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta variable error. */ if (want_substring || want_patsub || want_casemod || c == '#' || c == '%' || c == RBRACE) { - if (var_is_set == 0 && unbound_vars_is_error && ((name[0] != '@' && name[0] != '*') || name[1])) + if (var_is_set == 0 && unbound_vars_is_error && ((name[0] != '@' && name[0] != '*') || name[1]) && all_element_arrayref == 0) { last_command_exit_value = EXECUTION_FAILURE; err_unboundvar (name); @@ -7469,7 +8300,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta } else if (want_patsub) { - temp1 = parameter_brace_patsub (name, temp, ind, value, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + temp1 = parameter_brace_patsub (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0); FREE (name); FREE (value); FREE (temp); @@ -7515,17 +8346,38 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta { default: case '\0': - bad_substitution: +bad_substitution: last_command_exit_value = EXECUTION_FAILURE; report_error (_("%s: bad substitution"), string ? string : "??"); FREE (value); FREE (temp); free (name); - return &expand_wdesc_error; + if (shell_compatibility_level <= 43) + return &expand_wdesc_error; + else + return ((posixly_correct && interactive_shell == 0) ? &expand_wdesc_fatal : &expand_wdesc_error); case RBRACE: break; + case '@': + temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0); + free (temp); + free (value); + free (name); + if (temp1 == &expand_param_error || temp1 == &expand_param_fatal) + { + last_command_exit_value = EXECUTION_FAILURE; + report_error (_("%s: bad substitution"), string ? string : "??"); + return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal); + } + + ret = alloc_word_desc (); + ret->word = temp1; + if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))) + ret->flags |= W_QUOTED|W_HASQUOTEDNULL; + return ret; + case '#': /* ${param#[#]pattern} */ case '%': /* ${param%[%]pattern} */ if (value == 0 || *value == '\0' || temp == 0 || *temp == '\0') @@ -7572,6 +8424,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta quoted |= Q_DOLBRACE; ret = parameter_brace_expand_rhs (name, value, c, quoted, + pflags, quoted_dollar_atp, contains_dollar_at); /* XXX - fix up later, esp. noting presence of @@ -7619,7 +8472,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta removed. */ if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) quoted |= Q_DOLBRACE; - ret = parameter_brace_expand_rhs (name, value, c, quoted, + ret = parameter_brace_expand_rhs (name, value, c, quoted, pflags, quoted_dollar_atp, contains_dollar_at); /* XXX - fix up later, esp. noting presence of @@ -7652,7 +8505,7 @@ param_expand (string, sindex, quoted, expanded_something, int *sindex, quoted, *expanded_something, *contains_dollar_at; int *quoted_dollar_at_p, *had_quoted_null_p, pflags; { - char *temp, *temp1, uerror[3]; + char *temp, *temp1, uerror[3], *savecmd; int zindex, t_index, expok; unsigned char c; intmax_t number; @@ -7661,6 +8514,7 @@ param_expand (string, sindex, quoted, expanded_something, WORD_DESC *tdesc, *ret; int tflag; +/*itrace("param_expand: `%s' pflags = %d", string+*sindex, pflags);*/ zindex = *sindex; c = string[++zindex]; @@ -7784,10 +8638,11 @@ param_expand (string, sindex, quoted, expanded_something, temp = (quoted & (Q_DOUBLE_QUOTES|Q_PATQUOTE)) ? string_list_dollar_star (list) : string_list (list); if (temp) { - temp1 = quote_string (temp); + temp1 = (quoted & Q_DOUBLE_QUOTES) ? quote_string (temp) : temp; if (*temp == 0) tflag |= W_HASQUOTEDNULL; - free (temp); + if (temp != temp1) + free (temp); temp = temp1; } } @@ -7806,9 +8661,18 @@ param_expand (string, sindex, quoted, expanded_something, temp = string_list_dollar_star (list); else { - temp = string_list_dollar_at (list, quoted); + temp = string_list_dollar_at (list, quoted, 0); if (quoted == 0 && (ifs_is_set == 0 || ifs_is_null)) tflag |= W_SPLITSPACE; + /* If we're not quoted but we still don't want word splitting, make + we quote the IFS characters to protect them from splitting (e.g., + when $@ is in the string as well). */ + else if (temp && quoted == 0 && ifs_is_set && (pflags & PF_ASSIGNRHS)) + { + temp1 = quote_string (temp); + free (temp); + temp = temp1; + } } if (expand_no_split_dollar_star == 0 && contains_dollar_at) @@ -7865,7 +8729,8 @@ param_expand (string, sindex, quoted, expanded_something, performed? Even when IFS is not the default, posix seems to imply that we behave like unquoted $* ? Maybe we should use PF_NOSPLIT2 here. */ - temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted); + /* XXX - bash-4.4/bash-5.0 passing PFLAGS */ + temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted, pflags); tflag |= W_DOLLARAT; dispose_words (list); @@ -7907,7 +8772,9 @@ param_expand (string, sindex, quoted, expanded_something, case LPAREN: /* We have to extract the contents of this paren substitution. */ t_index = zindex + 1; - temp = extract_command_subst (string, &t_index, 0); + /* XXX - might want to check for string[t_index+2] == LPAREN and parse + as arithmetic substitution immediately. */ + temp = extract_command_subst (string, &t_index, (pflags&PF_COMPLETE) ? SX_COMPLETE : 0); zindex = t_index; /* For Posix.2-style `$(( ))' arithmetic substitution, @@ -7938,13 +8805,15 @@ param_expand (string, sindex, quoted, expanded_something, } /* Expand variables found inside the expression. */ - temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES); + temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES|Q_ARITH); free (temp2); arithsub: /* No error messages. */ + savecmd = this_command_name; this_command_name = (char *)NULL; number = evalexp (temp1, &expok); + this_command_name = savecmd; free (temp); free (temp1); if (expok == 0) @@ -7992,7 +8861,7 @@ comsub: } /* Do initial variable expansion. */ - temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES); + temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES|Q_ARITH); goto arithsub; @@ -8049,11 +8918,11 @@ comsub: } else if (var && (invisible_p (var) || var_isset (var) == 0)) temp = (char *)NULL; - else if ((var = find_variable_last_nameref (temp1)) && var_isset (var) && invisible_p (var) == 0) + else if ((var = find_variable_last_nameref (temp1, 0)) && var_isset (var) && invisible_p (var) == 0) { temp = nameref_cell (var); #if defined (ARRAY_VARS) - if (temp && *temp && valid_array_reference (temp)) + if (temp && *temp && valid_array_reference (temp, 0)) { tdesc = parameter_brace_expand_word (temp, SPECIAL_VAR (temp, 0), quoted, pflags, (arrayind_t *)NULL); if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal) @@ -8110,6 +8979,13 @@ return0: return ret; } +void +invalidate_cached_quoted_dollar_at () +{ + dispose_words (cached_quoted_dollar_at); + cached_quoted_dollar_at = 0; +} + /* Make a word list which is the result of parameter and variable expansion, command substitution, arithmetic substitution, and quote removal of WORD. Return a pointer to a WORD_LIST which is @@ -8150,7 +9026,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin char *istring; /* The current size of the above object. */ - int istring_size; + size_t istring_size; /* Index into ISTRING. */ int istring_index; @@ -8181,6 +9057,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin int split_on_spaces; int tflag; int pflags; /* flags passed to param_expand */ + int mb_cur_max; int assignoff; /* If assignment, offset of `=' */ @@ -8191,6 +9068,23 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin DECLARE_MBSTATE; + /* OK, let's see if we can optimize a common idiom: "$@" */ + if (STREQ (word->word, "\"$@\"") && + (word->flags == (W_HASDOLLAR|W_QUOTED)) && + dollar_vars[1]) /* XXX - check IFS here as well? */ + { + if (contains_dollar_at) + *contains_dollar_at = 1; + if (expanded_something) + *expanded_something = 1; + if (cached_quoted_dollar_at) + return (copy_word_list (cached_quoted_dollar_at)); + list = list_rest_of_args (); + list = quote_list (list); + cached_quoted_dollar_at = copy_word_list (list); + return (list); + } + istring = (char *)xmalloc (istring_size = DEFAULT_INITIAL_ARRAY_SIZE); istring[istring_index = 0] = '\0'; quoted_dollar_at = had_quoted_null = has_dollar_at = 0; @@ -8200,9 +9094,11 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin string = word->word; if (string == 0) goto finished_with_string; + mb_cur_max = MB_CUR_MAX; + /* Don't need the string length for the SADD... and COPY_ macros unless multibyte characters are possible. */ - string_size = (MB_CUR_MAX > 1) ? strlen (string) : 1; + string_size = (mb_cur_max > 1) ? strlen (string) : 1; if (contains_dollar_at) *contains_dollar_at = 0; @@ -8224,7 +9120,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin case CTLESC: sindex++; #if HANDLE_MULTIBYTE - if (MB_CUR_MAX > 1 && string[sindex]) + if (mb_cur_max > 1 && string[sindex]) { SADD_MBQCHAR_BODY(temp, string, sindex, string_size); } @@ -8255,6 +9151,9 @@ add_string: case '<': case '>': { + /* bash-4.4/bash-5.0 + XXX - technically this should only be expanded at the start + of a word */ if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & (W_DQUOTE|W_NOPROCSUB)) || posixly_correct) { sindex--; /* add_character: label increments sindex */ @@ -8311,6 +9210,11 @@ add_string: string[sindex+1] == '~') word->flags |= W_ITILDE; #endif + + /* XXX - bash-4.4/bash-5.0 */ + if (word->flags & W_ASSIGNARG) + word->flags |= W_ASSIGNRHS; /* affects $@ */ + if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c)) goto add_ifs_character; else @@ -8337,10 +9241,12 @@ add_string: case '~': /* If the word isn't supposed to be tilde expanded, or we're not at the start of a word or after an unquoted : or = in an - assignment statement, we don't do tilde expansion. */ + assignment statement, we don't do tilde expansion. If we don't want + tilde expansion when expanding words to be passed to the arithmetic + evaluator, remove the check for Q_ARITH. */ if ((word->flags & (W_NOTILDE|W_DQUOTE)) || (sindex > 0 && ((word->flags & W_ITILDE) == 0)) || - (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && ((quoted & Q_ARITH) == 0))) { word->flags &= ~W_ITILDE; if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0) @@ -8390,6 +9296,8 @@ add_string: pflags |= PF_NOSPLIT2; if (word->flags & W_ASSIGNRHS) pflags |= PF_ASSIGNRHS; + if (word->flags & W_COMPLETE) + pflags |= PF_COMPLETE; tword = param_expand (string, &sindex, quoted, expanded_something, &temp_has_dollar_at, "ed_dollar_at, &had_quoted_null, pflags); @@ -8524,11 +9432,11 @@ add_twochars: break; case '"': - if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && ((quoted & Q_ARITH) == 0)) goto add_character; t_index = ++sindex; - temp = string_extract_double_quoted (string, &sindex, 0); + temp = string_extract_double_quoted (string, &sindex, (word->flags & W_COMPLETE) ? SX_COMPLETE : 0); /* If the quotes surrounded the entire string, then the whole word was quoted. */ @@ -8541,6 +9449,12 @@ add_twochars: tword = alloc_word_desc (); tword->word = temp; + /* XXX - bash-4.4/bash-5.0 */ + if (word->flags & W_ASSIGNARG) + tword->flags |= word->flags & (W_ASSIGNARG|W_ASSIGNRHS); /* affects $@ */ + if (word->flags & W_COMPLETE) + tword->flags |= W_COMPLETE; /* for command substitutions */ + temp = (char *)NULL; temp_has_dollar_at = 0; /* XXX */ @@ -8564,7 +9478,7 @@ add_twochars: /* "$@" (a double-quoted dollar-at) expands into nothing, not even a NULL word, when there are no positional parameters. */ - if (list == 0 && has_dollar_at) + if (list == 0 && temp_has_dollar_at) /* XXX - was has_dollar_at */ { quoted_dollar_at++; break; @@ -8584,7 +9498,7 @@ add_twochars: if (list && list->word && (list->word->flags & W_HASQUOTEDNULL)) had_quoted_null = 1; /* XXX */ - if (has_dollar_at) + if (temp_has_dollar_at) /* XXX - was has_dollar_at */ { quoted_dollar_at++; if (contains_dollar_at) @@ -8615,7 +9529,7 @@ add_twochars: /* Testing quoted_dollar_at makes sure that "$@" is split correctly when $IFS does not contain a space. */ temp = quoted_dollar_at - ? string_list_dollar_at (list, Q_DOUBLE_QUOTES) + ? string_list_dollar_at (list, Q_DOUBLE_QUOTES, 0) : string_list (quote_list (list)); dispose_words (list); goto add_string; @@ -8696,8 +9610,9 @@ add_twochars: remove_quoted_escapes (temp); /* ??? */ /* We do not want to add quoted nulls to strings that are only - partially quoted; such nulls are discarded. */ - if (temp == 0 && (quoted_state == PARTIALLY_QUOTED)) + partially quoted; such nulls are discarded. See above for the + exception, which is when the string is going to be split. */ + if (temp == 0 && (quoted_state == PARTIALLY_QUOTED) && (word->flags & (W_NOSPLIT|W_NOSPLIT2))) continue; /* If we have a quoted null expansion, add a quoted NULL to istring. */ @@ -8715,7 +9630,7 @@ add_twochars: default: /* This is the fix for " $@ " */ add_ifs_character: - if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c))) + if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c) && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0)) { if (string[sindex]) /* from old goto dollar_add_string */ sindex++; @@ -8727,10 +9642,10 @@ add_twochars: else { #if HANDLE_MULTIBYTE - if (MB_CUR_MAX > 1) + if (mb_cur_max > 1) sindex--; - if (MB_CUR_MAX > 1) + if (mb_cur_max > 1) { SADD_MBQCHAR_BODY(temp, string, sindex, string_size); } @@ -8799,6 +9714,8 @@ finished_with_string: /* According to sh, ksh, and Posix.2, if a word expands into nothing and a double-quoted "$@" appears anywhere in it, then the entire word is removed. */ + /* XXX - exception appears to be that quoted null strings result in + null arguments */ else if (quoted_state == UNQUOTED || quoted_dollar_at) list = (WORD_LIST *)NULL; #if 0 @@ -8848,7 +9765,9 @@ finished_with_string: with the first character of $IFS, so we split on $IFS. If SPLIT_ON_SPACES is set, we expanded $* (unquoted) with IFS either unset or null, and we want to make sure that we split on spaces - regardless of what else has happened to IFS since the expansion. */ + regardless of what else has happened to IFS since the expansion, + or we expanded "$@" with IFS null and we need to split the positional + parameters into separate words. */ if (split_on_spaces) list = list_string (istring, " ", 1); /* XXX quoted == 1? */ /* If we have $@ (has_dollar_at != 0) and we are in a context where we @@ -8875,6 +9794,17 @@ finished_with_string: free (tstring); goto set_word_flags; } + /* This is the attempt to make $* in an assignment context (a=$*) and + array variables subscripted with * in an assignment context (a=${foo[*]}) + behave similarly. It has side effects that, though they increase + compatibility with other shells, are not backwards compatible. */ +#if 0 + else if (has_dollar_at && quoted == 0 && ifs_chars && (word->flags & W_ASSIGNRHS)) + { + tword = make_bare_word (istring); + goto set_word_flags; + } +#endif else if (has_dollar_at && ifs_chars) list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); else @@ -9483,23 +10413,32 @@ brace_expand_word_list (tlist, eflags) /* Take WORD, a compound associative array assignment, and internally run 'declare -A w', where W is the variable name portion of WORD. */ static int -make_internal_declare (word, option) +make_internal_declare (word, option, cmd) char *word; char *option; + char *cmd; { - int t; + int t, r; WORD_LIST *wl; WORD_DESC *w; w = make_word (word); t = assignment (w->word, 0); - w->word[t] = '\0'; + if (w->word[t] == '=') + { + w->word[t] = '\0'; + if (w->word[t - 1] == '+') /* cut off any append op */ + w->word[t - 1] = '\0'; + } wl = make_word_list (w, (WORD_LIST *)NULL); wl = make_word_list (make_word (option), wl); - return (declare_builtin (wl)); + r = declare_builtin (wl); + + dispose_words (wl); + return r; } #endif @@ -9508,12 +10447,16 @@ shell_expand_word_list (tlist, eflags) WORD_LIST *tlist; int eflags; { - WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list; + WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list, *wcmd; int expanded_something, has_dollar_at; char *temp_string; /* We do tilde expansion all the time. This is what 1003.2 says. */ new_list = (WORD_LIST *)NULL; + for (wcmd = tlist; wcmd; wcmd = wcmd->next) + if (wcmd->word->flags & W_ASSNBLTIN) + break; + for (orig_list = tlist; tlist; tlist = next) { temp_string = tlist->word->word; @@ -9530,7 +10473,7 @@ shell_expand_word_list (tlist, eflags) if ((tlist->word->flags & (W_COMPASSIGN|W_ASSIGNARG)) == (W_COMPASSIGN|W_ASSIGNARG)) { int t; - char opts[8], opti; + char opts[16], opti; opti = 0; if (tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL|W_ASSIGNARRAY)) @@ -9553,16 +10496,48 @@ shell_expand_word_list (tlist, eflags) else if (tlist->word->flags & W_ASSNGLOBAL) opts[opti++] = 'g'; -#if 0 - /* If we have special handling note the integer attribute */ - if (opti > 0 && (tlist->word->flags & W_ASSIGNINT)) - opts[opti++] = 'i'; -#endif + /* If we have special handling note the integer attribute and others + that transform the value upon assignment. What we do is take all + of the option arguments and scan through them looking for options + that cause such transformations, and add them to the `opts' array. */ +/* if (opti > 0) */ + { + char omap[128]; + int oind; + WORD_LIST *l; + + memset (omap, '\0', sizeof (omap)); + for (l = orig_list->next; l != tlist; l = l->next) + { + if (l->word->word[0] != '-') + break; /* non-option argument */ + if (l->word->word[0] == '-' && l->word->word[1] == '-' && l->word->word[2] == 0) + break; /* -- signals end of options */ + for (oind = 1; l->word->word[oind]; oind++) + switch (l->word->word[oind]) + { + case 'i': + case 'l': + case 'u': + case 'c': + omap[l->word->word[oind]] = 1; + if (opti == 0) + opts[opti++] = '-'; + break; + default: + break; + } + } + + for (oind = 0; oind < sizeof (omap); oind++) + if (omap[oind]) + opts[opti++] = oind; + } opts[opti] = '\0'; if (opti > 0) { - t = make_internal_declare (tlist->word->word, opts); + t = make_internal_declare (tlist->word->word, opts, wcmd ? wcmd->word->word : (char *)0); if (t != EXECUTION_SUCCESS) { last_command_exit_value = t; @@ -9580,6 +10555,8 @@ shell_expand_word_list (tlist, eflags) /* Now transform the word as ksh93 appears to do and go on */ t = assignment (tlist->word->word, 0); tlist->word->word[t] = '\0'; + if (tlist->word->word[t - 1] == '+') + tlist->word->word[t - 1] = '\0'; /* cut off append op */ tlist->word->flags &= ~(W_ASSIGNMENT|W_NOSPLIT|W_COMPASSIGN|W_ASSIGNARG|W_ASSIGNASSOC|W_ASSIGNARRAY); } #endif @@ -9655,6 +10632,7 @@ expand_word_list_internal (list, eflags) { WORD_LIST *new_list, *temp_list; int tint; + char *savecmd; tempenv_assign_error = 0; if (list == 0) @@ -9672,8 +10650,10 @@ expand_word_list_internal (list, eflags) into the shell's environment. */ for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next) { + savecmd = this_command_name; this_command_name = (char *)NULL; /* no arithmetic errors */ tint = do_word_assignment (temp_list->word, 0); + this_command_name = savecmd; /* Variable assignment errors in non-interactive shells running in Posix.2 mode cause the shell to exit. */ if (tint == 0) @@ -9737,10 +10717,12 @@ expand_word_list_internal (list, eflags) for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next) { + savecmd = this_command_name; this_command_name = (char *)NULL; assigning_in_environment = (assign_func == assign_in_env); tint = (*assign_func) (temp_list->word, is_builtin_or_func); assigning_in_environment = 0; + this_command_name = savecmd; /* Variable assignment errors in non-interactive shells running in Posix.2 mode cause the shell to exit. */ if (tint == 0) diff --git a/subst.h b/subst.h index 1c300ab..a2a8294 100644 --- a/subst.h +++ b/subst.h @@ -1,6 +1,6 @@ /* subst.h -- Names of externally visible functions in subst.c. */ -/* Copyright (C) 1993-2010 Free Software Foundation, Inc. +/* Copyright (C) 1993-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -32,14 +32,16 @@ expanding a pattern ${var%#[#%]pattern} in an expansion surrounded by double quotes. Q_DOLBRACE means we are expanding a ${...} word, so backslashes should also escape { and } and be removed. */ -#define Q_DOUBLE_QUOTES 0x01 -#define Q_HERE_DOCUMENT 0x02 -#define Q_KEEP_BACKSLASH 0x04 -#define Q_PATQUOTE 0x08 -#define Q_QUOTED 0x10 -#define Q_ADDEDQUOTES 0x20 -#define Q_QUOTEDNULL 0x40 -#define Q_DOLBRACE 0x80 +#define Q_DOUBLE_QUOTES 0x001 +#define Q_HERE_DOCUMENT 0x002 +#define Q_KEEP_BACKSLASH 0x004 +#define Q_PATQUOTE 0x008 +#define Q_QUOTED 0x010 +#define Q_ADDEDQUOTES 0x020 +#define Q_QUOTEDNULL 0x040 +#define Q_DOLBRACE 0x080 +#define Q_ARITH 0x100 /* expanding string for arithmetic evaluation */ +#define Q_ARRAYSUB 0x200 /* expanding indexed array subscript */ /* Flag values controlling how assignment statements are treated. */ #define ASS_APPEND 0x0001 @@ -47,7 +49,7 @@ #define ASS_MKASSOC 0x0004 #define ASS_MKGLOBAL 0x0008 /* force global assignment */ #define ASS_NAMEREF 0x0010 /* assigning to nameref variable */ -#define ASS_FROMREF 0x0020 /* assigning from value of nameref variable */ +#define ASS_FORCE 0x0020 /* force assignment even to readonly variable */ /* Flags for the string extraction functions. */ #define SX_NOALLOC 0x0001 /* just skip; don't return substring */ @@ -60,6 +62,8 @@ #define SX_ARITHSUB 0x0080 /* extracting $(( ... )) (currently unused) */ #define SX_POSIXEXP 0x0100 /* extracting new Posix pattern removal expansions in extract_dollar_brace_string */ #define SX_WORD 0x0200 /* extracting word in ${param op word} */ +#define SX_COMPLETE 0x0400 /* extracting word for completion */ +#define SX_STRIPDQ 0x0800 /* strip double quotes when extracting double-quoted string */ /* Remove backslashes which are quoting backquotes from STRING. Modifies STRING, and returns a pointer to it. */ @@ -101,7 +105,7 @@ extern char *string_list __P((WORD_LIST *)); extern char *string_list_dollar_star __P((WORD_LIST *)); /* Expand $@ into a single string, obeying POSIX rules. */ -extern char *string_list_dollar_at __P((WORD_LIST *, int)); +extern char *string_list_dollar_at __P((WORD_LIST *, int, int)); /* Turn the positional paramters into a string, understanding quoting and the various subtleties of using the first character of $IFS as the @@ -134,7 +138,7 @@ extern int do_word_assignment __P((WORD_DESC *, int)); of space allocated to TARGET. SOURCE can be NULL, in which case nothing happens. Gets rid of SOURCE by free ()ing it. Returns TARGET in case the location has changed. */ -extern char *sub_append_string __P((char *, char *, int *, int *)); +extern char *sub_append_string __P((char *, char *, int *, size_t *)); /* Append the textual representation of NUMBER to TARGET. INDEX and SIZE are as in SUB_APPEND_STRING. */ @@ -266,6 +270,8 @@ extern char *copy_fifo_list __P((int *)); extern void unlink_new_fifos __P((char *, int)); extern void close_new_fifos __P((char *, int)); +extern void clear_fifo_list __P((void)); + extern WORD_LIST *list_string_with_quotes __P((char *)); #if defined (ARRAY_VARS) @@ -278,16 +284,24 @@ extern char *cond_expand_word __P((WORD_DESC *, int)); #endif /* Flags for skip_to_delim */ -#define SD_NOJMP 0x01 /* don't longjmp on fatal error. */ -#define SD_INVERT 0x02 /* look for chars NOT in passed set */ -#define SD_NOQUOTEDELIM 0x04 /* don't let single or double quotes act as delimiters */ -#define SD_NOSKIPCMD 0x08 /* don't skip over $(, <(, or >( command/process substitution */ -#define SD_EXTGLOB 0x10 /* skip over extended globbing patterns if appropriate */ -#define SD_IGNOREQUOTE 0x20 /* single and double quotes are not special */ -#define SD_GLOB 0x40 /* skip over glob patterns like bracket expressions */ +#define SD_NOJMP 0x001 /* don't longjmp on fatal error. */ +#define SD_INVERT 0x002 /* look for chars NOT in passed set */ +#define SD_NOQUOTEDELIM 0x004 /* don't let single or double quotes act as delimiters */ +#define SD_NOSKIPCMD 0x008 /* don't skip over $(, <(, or >( command/process substitution; parse them as commands */ +#define SD_EXTGLOB 0x010 /* skip over extended globbing patterns if appropriate */ +#define SD_IGNOREQUOTE 0x020 /* single and double quotes are not special */ +#define SD_GLOB 0x040 /* skip over glob patterns like bracket expressions */ +#define SD_NOPROCSUB 0x080 /* don't parse process substitutions as commands */ +#define SD_COMPLETE 0x100 /* skip_to_delim during completion */ +#define SD_HISTEXP 0x200 /* skip_to_delim during history expansion */ +#define SD_ARITHEXP 0x400 /* skip_to_delim during arithmetic expansion */ extern int skip_to_delim __P((char *, int, char *, int)); +#if defined (BANG_HISTORY) +extern int skip_to_histexp __P((char *, int, char *, int)); +#endif + #if defined (READLINE) extern int char_is_quoted __P((char *, int)); extern int unclosed_pair __P((char *, int, char *)); @@ -315,4 +329,6 @@ extern unsigned char ifs_firstc; /* Is the first character of STRING a quoted NULL character? */ #define QUOTED_NULL(string) ((string)[0] == CTLNUL && (string)[1] == '\0') +extern void invalidate_cached_quoted_dollar_at __P((void)); + #endif /* !_SUBST_H_ */ diff --git a/support/Makefile.in b/support/Makefile.in index 1ff3f1a..9ed7021 100644 --- a/support/Makefile.in +++ b/support/Makefile.in @@ -28,7 +28,7 @@ # topdir = @top_srcdir@ srcdir = @srcdir@ -VPATH = .:@srcdir@ +VPATH = @srcdir@ BUILD_DIR = @BUILD_DIR@ RM = rm -f @@ -83,5 +83,6 @@ clean: distclean maintainer-clean mostlyclean: clean $(RM) $(OBJ1) + $(RM) bash.pc man2html.o: man2html.c diff --git a/support/bash.pc.in b/support/bash.pc.in new file mode 100644 index 0000000..6009659 --- /dev/null +++ b/support/bash.pc.in @@ -0,0 +1,28 @@ +# bash.pc.in + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +includedir=@includedir@ +libdir=@libdir@ + +loadablesdir=@loadablesdir@ +headersdir=${includedir}/@PACKAGE_NAME@ + +LOCAL_CFLAGS = @LOCAL_CFLAGS@ +LOCAL_DEFS = @LOCAL_DEFS@ +CCFLAGS = ${LOCAL_DEFS} ${LOCAL_CFLAGS} + +CC = @CC@ +SHOBJ_CC = @SHOBJ_CC@ +SHOBJ_CFLAGS = @SHOBJ_CFLAGS@ +SHOBJ_LD = @SHOBJ_LD@ +SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@ +SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@ +SHOBJ_LIBS = @SHOBJ_LIBS@ + +Name: @PACKAGE_NAME@ +Description: Bash headers for bash loadable builtins +Version: @PACKAGE_VERSION@ +Url: @PACKAGE_URL@ +Libs: ${SHOBJ_LIBS} +Cflags: ${SHOBJ_CFLAGS} ${CCFLAGS} -I${headersdir} -I${headersdir}/builtins -I${headersdir}/include diff --git a/support/bashbug.sh b/support/bashbug.sh index 7b36d40..29ce134 100644 --- a/support/bashbug.sh +++ b/support/bashbug.sh @@ -62,7 +62,7 @@ while [ $# -gt 0 ]; do --version) shift ; do_version=y ;; --) shift ; break ;; -*) echo "bashbug: ${1}: invalid option" >&2 - echo "$USAGE" >& 2 + echo "$USAGE" >&2 exit 2 ;; *) break ;; esac @@ -265,7 +265,8 @@ esac ${RMAIL} $SMARGS < "$TEMPFILE1" || { cat "$TEMPFILE1" >> $HOME/dead.bashbug - echo "$0: mail failed: report saved in $HOME/dead.bashbug" >&2 + echo "$0: mail to ${BUGADDR} failed: report saved in $HOME/dead.bashbug" >&2 + echo "$0: please send it manually to ${BUGADDR}" >&2 } exit 0 diff --git a/support/man2html.c b/support/man2html.c index 87e5ee4..6ba5061 100644 --- a/support/man2html.c +++ b/support/man2html.c @@ -169,6 +169,19 @@ stralloc(int len) return new; } +void * +xmalloc (size_t size) +{ + void *ret; + + ret = malloc (size); + if (ret == 0) { + fprintf(stderr, "man2html: out of memory"); + exit(EXIT_FAILURE); + } + return ret; +} + /* * Some systems don't have strdup so lets use our own - which can also * check for out of memory. @@ -1252,9 +1265,9 @@ scan_format(char *c, TABLEROW ** result, int *maxcol) if (*result) { clear_table(*result); } - layout = currow = (TABLEROW *) malloc(sizeof(TABLEROW)); + layout = currow = (TABLEROW *) xmalloc(sizeof(TABLEROW)); currow->next = currow->prev = NULL; - currow->first = curfield = (TABLEITEM *) malloc(sizeof(TABLEITEM)); + currow->first = curfield = (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); *curfield = emptyfield; while (*c && *c != '.') { switch (*c) { @@ -1273,7 +1286,7 @@ scan_format(char *c, TABLEROW ** result, int *maxcol) case '^': case '_': if (curfield->align) { - curfield->next = (TABLEITEM *) malloc(sizeof(TABLEITEM)); + curfield->next = (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); curfield = curfield->next; *curfield = emptyfield; } @@ -1353,11 +1366,11 @@ scan_format(char *c, TABLEROW ** result, int *maxcol) break; case ',': case '\n': - currow->next = (TABLEROW *) malloc(sizeof(TABLEROW)); + currow->next = (TABLEROW *) xmalloc(sizeof(TABLEROW)); currow->next->prev = currow; currow = currow->next; currow->next = NULL; - curfield = currow->first = (TABLEITEM *) malloc(sizeof(TABLEITEM)); + curfield = currow->first = (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); *curfield = emptyfield; c++; break; @@ -1396,20 +1409,20 @@ next_row(TABLEROW * tr) } else { TABLEITEM *ti, *ti2; - tr->next = (TABLEROW *) malloc(sizeof(TABLEROW)); + tr->next = (TABLEROW *) xmalloc(sizeof(TABLEROW)); tr->next->prev = tr; ti = tr->first; tr = tr->next; tr->next = NULL; if (ti) - tr->first = ti2 = (TABLEITEM *) malloc(sizeof(TABLEITEM)); + tr->first = ti2 = (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); else tr->first = ti2 = NULL; while (ti != ti2) { *ti2 = *ti; ti2->contents = NULL; if ((ti = ti->next)) { - ti2->next = (TABLEITEM *) malloc(sizeof(TABLEITEM)); + ti2->next = (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); } ti2 = ti2->next; } @@ -1500,17 +1513,17 @@ scan_table(char *c) if ((*c == '_' || *c == '=') && (c[1] == itemsep || c[1] == '\n')) { if (c[-1] == '\n' && c[1] == '\n') { if (currow->prev) { - currow->prev->next = (TABLEROW *) malloc(sizeof(TABLEROW)); + currow->prev->next = (TABLEROW *) xmalloc(sizeof(TABLEROW)); currow->prev->next->next = currow; currow->prev->next->prev = currow->prev; currow->prev = currow->prev->next; } else { - currow->prev = layout = (TABLEROW *) malloc(sizeof(TABLEROW)); + currow->prev = layout = (TABLEROW *) xmalloc(sizeof(TABLEROW)); currow->prev->prev = NULL; currow->prev->next = currow; } curfield = currow->prev->first = - (TABLEITEM *) malloc(sizeof(TABLEITEM)); + (TABLEITEM *) xmalloc(sizeof(TABLEITEM)); *curfield = emptyfield; curfield->align = *c; curfield->colspan = maxcol; @@ -2245,7 +2258,7 @@ scan_request(char *c) while (de && de->nr != i) de = de->next; if (!de) { - de = (STRDEF *) malloc(sizeof(STRDEF)); + de = (STRDEF *) xmalloc(sizeof(STRDEF)); de->nr = i; de->slen = 0; de->next = strdef; @@ -2294,7 +2307,7 @@ scan_request(char *c) if (!de) { char *h; - de = (STRDEF *) malloc(sizeof(STRDEF)); + de = (STRDEF *) xmalloc(sizeof(STRDEF)); de->nr = i; de->slen = 0; de->next = strdef; @@ -2987,7 +3000,7 @@ scan_request(char *c) while (intd && intd->nr != i) intd = intd->next; if (!intd) { - intd = (INTDEF *) malloc(sizeof(INTDEF)); + intd = (INTDEF *) xmalloc(sizeof(INTDEF)); intd->nr = i; intd->val = 0; intd->incr = 0; @@ -3060,7 +3073,7 @@ scan_request(char *c) free(de->st); de->st = h; } else { - de = (STRDEF *) malloc(sizeof(STRDEF)); + de = (STRDEF *) xmalloc(sizeof(STRDEF)); de->nr = i; de->next = defdef; de->st = h; @@ -3973,6 +3986,7 @@ scan_troff_mandoc(char *c, int san, char **result) return ret; } +int main(int argc, char **argv) { FILE *f; diff --git a/support/texi2dvi b/support/texi2dvi index 83c0842..173e8ab 100755 --- a/support/texi2dvi +++ b/support/texi2dvi @@ -1,103 +1,95 @@ #! /bin/sh -# texi2dvi --- produce DVI (or PDF) files from Texinfo (or LaTeX) sources. -# $Id: texi2dvi,v 1.14 2003/02/05 00:42:33 karl Exp $ +# texi2dvi --- produce DVI (or PDF) files from Texinfo (or (La)TeX) sources. +# $Id: texi2dvi 5704 2014-07-07 17:45:16Z karl $ # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, -# 2002, 2003 Free Software Foundation, Inc. +# Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 +# Free Software Foundation, Inc. # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# This program is 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. +# 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 . +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # -# Original author: Noah Friedman . +# Originally written by Noah Friedman. # # Please send bug reports, etc. to bug-texinfo@gnu.org. # If possible, please send a copy of the output of the script called with # the `--debug' option when making a bug report. -# This string is expanded by rcs automatically when this file is checked out. -rcs_revision='$Revision: 1.14 $' +test -f /bin/ksh && test -z "$RUNNING_KSH" \ + && { UNAMES=`uname -s`; test "x$UNAMES" = xULTRIX; } 2>/dev/null \ + && { RUNNING_KSH=true; export RUNNING_KSH; exec /bin/ksh $0 ${1+"$@"}; } +unset RUNNING_KSH + +# No failure shall remain unpunished. +set -e + +# In case the default sed doesn't suffice. +: ${SED=sed} + +# This string is expanded automatically when this file is checked out. +rcs_revision='$Revision: 5704 $' rcs_version=`set - $rcs_revision; echo $2` -program=`echo $0 | sed -e 's!.*/!!'` -version="texi2dvi (GNU Texinfo 4.5) $rcs_version +program=`echo $0 | $SED -e 's!.*/!!'` -Copyright (C) 2003 Free Software Foundation, Inc. -There is NO warranty. You may redistribute this software -under the terms of the GNU General Public License. -For more information about these matters, see the files named COPYING." - -usage="Usage: $program [OPTION]... FILE... - -Run each Texinfo or LaTeX FILE through TeX in turn until all -cross-references are resolved, building all indices. The directory -containing each FILE is searched for included files. The suffix of FILE -is used to determine its language (LaTeX or Texinfo). - -Makeinfo is used to perform Texinfo macro expansion before running TeX -when needed. - -Operation modes: - -b, --batch no interaction - -c, --clean remove all auxiliary files - -D, --debug turn on shell debugging (set -x) - -h, --help display this help and exit successfully - -o, --output=OFILE leave output in OFILE (implies --clean); - Only one input FILE may be specified in this case - -q, --quiet no output unless errors (implies --batch) - -s, --silent same as --quiet - -v, --version display version information and exit successfully - -V, --verbose report on what is done - -TeX tuning: - -@ use @input instead of \input; for preloaded Texinfo - -e, -E, --expand force macro expansion using makeinfo - -I DIR search DIR for Texinfo files - -l, --language=LANG specify the LANG of FILE (LaTeX or Texinfo) - -p, --pdf use pdftex or pdflatex for processing - -t, --texinfo=CMD insert CMD after @setfilename in copy of input file - multiple values accumulate - -The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO, -TEX (or PDFTEX), and TEXINDEX environment variables are used to run -those commands, if they are set. - -Email bug reports to , -general questions and discussion to . -Texinfo home page: http://www.gnu.org/software/texinfo/" +build_mode=${TEXI2DVI_BUILD_MODE:-local} +build_dir=${TEXI2DVI_BUILD_DIRECTORY:-.} # Initialize variables for option overriding and otherwise. # Don't use `unset' since old bourne shells don't have this command. # Instead, assign them an empty value. -batch=false # eval for batch mode -clean= -debug= -escape='\' -expand= # t for expansion via makeinfo -miincludes= # makeinfo include path -oformat=dvi +action=compile +batch=false # interact normally +catcode_special=maybe +debug=false +escape="\\" +expand=false # true for expansion via makeinfo +includes= +line_error=true # pass --file-line-error to TeX +max_iters=7 # when to quit oname= # --output -quiet= # by default let the tools' message be displayed +out_lang=dvi +quiet=false # let the tools' message be displayed set_language= -textra= -tmpdir=${TMPDIR:-/tmp}/t2d$$ # avoid collisions on 8.3 filesystems. -txincludes= # TEXINPUTS extensions, with trailing colon -txiprereq=19990129 # minimum texinfo.tex version to have macro expansion -verbose=false # echo for verbose mode +src_specials= +shell_escape= +latex2html=hevea # or set to tex4ht +textra= # Extra TeX commands to insert in the input file. +txiprereq=19990129 # minimum texinfo.tex version with macro expansion +verb=false # true for verbose mode +translate_file= # name of charset translation file orig_pwd=`pwd` +# We have to initialize IFS to space tab newline since we save and +# restore IFS and apparently POSIX allows stupid/broken behavior with +# empty-but-set IFS. +# http://lists.gnu.org/archive/html/automake-patches/2006-05/msg00008.html +# We need space, tab and new line, in precisely that order. And don't leave +# trailing blanks. +space=' ' +tab=' ' +newline=' +' +IFS="$space$tab$newline" + +# In case someone pedantic insists on using grep -E. +: ${EGREP=egrep} + # Systems which define $COMSPEC or $ComSpec use semicolons to separate -# directories in TEXINPUTS. -if test -n "$COMSPEC$ComSpec"; then +# directories in TEXINPUTS -- except for Cygwin et al., where COMSPEC +# might be inherited, but : is used. +if test -n "$COMSPEC$ComSpec" \ + && uname | $EGREP -iv 'cygwin|mingw|djgpp' >/dev/null; then path_sep=";" else path_sep=":" @@ -106,14 +98,1537 @@ fi # Pacify verbose cds. CDPATH=${ZSH_VERSION+.}$path_sep -# In case someone crazy insists on using grep -E. -: ${EGREP=egrep} +# If $TEX is set to a directory, don't use it. +test -n "$TEX" && test -d "$TEX" && unset TEX -# Save this so we can construct a new TEXINPUTS path for each file. -TEXINPUTS_orig="$TEXINPUTS" -# Unfortunately makeindex does not read TEXINPUTS. -INDEXSTYLE_orig="$INDEXSTYLE" -export TEXINPUTS INDEXSTYLE +# +## --------------------- ## +## Auxiliary functions. ## +## --------------------- ## + +# In case `local' is not supported by the shell, provide a function +# that simulates it by simply performing the assignments. This means +# that we must not expect `local' to work, i.e., we must not (i) rely +# on it during recursion, and (ii) have two local declarations of the +# same variable. (ii) is easy to check statically, and our test suite +# does make sure there is never twice a static local declaration of a +# variable. (i) cannot be checked easily, so just be careful. +# +# Note that since we might use a function simulating `local', we can +# no longer rely on the fact that no IFS-splitting is performed. So, +# while +# +# foo=$bar +# +# is fine (no IFS-splitting), never write +# +# local foo=$bar +# +# but rather +# +# local foo="$bar" +( + foo=bar + test_local () { + local foo=foo + } + test_local >/dev/null 2>&1 + test $foo = bar +) || eval ' +local () { + case $1 in + *=*) eval "$1";; + esac +} +' + + +# cd_orig +# ------- +# Return to the original directory. +cd_orig () +{ + # In case $orig_pwd is on a different drive (for DOS). + cd / + + # Return to the original directory so that + # - the next file is processed in correct conditions + # - the temporary file can be removed + cd "$orig_pwd" || exit 1 +} + +# func_dirname FILE +# ----------------- +# Return the directory part of FILE. +func_dirname () +{ + dirname "$1" 2>/dev/null \ + || { echo "$1" | $SED 's!/[^/]*$!!;s!^$!.!'; } +} + + +# noexit FILE +# ----------- +# Return FILE with one extension remove. foo.bar.baz -> foo.bar. +noext () +{ + echo "$1" | $SED -e 's/\.[^/.][^/.]*$//' +} + + +# absolute NAME -> ABS-NAME +# ------------------------- +# Return an absolute path to NAME. +absolute () +{ + case $1 in + [\\/]* | ?:[\\/]*) + # Absolute paths don't need to be expanded. + echo "$1" + ;; + *) local slashes + slashes=`echo "$1" | $SED -n 's,.*[^/]\(/*\)$,\1,p'` + local rel + rel=$orig_pwd/`func_dirname "$1"` + if test -d "$rel"; then + (cd "$rel" 2>/dev/null \ + && local n + n=`pwd`/`basename "$1"`"$slashes" + echo "$n") + else + error 1 "not a directory: $rel" + fi + ;; + esac +} + + +# ensure_dir DIR1 DIR2... +# ----------------------- +# Make sure the directories exist. +ensure_dir () +{ + for dir + do + # Beware that in parallel builds we may have several concurrent + # attempts to create the directory. So fail only if "mkdir" + # failed *and* the directory still does not exist. + test -d "$dir" \ + || mkdir "$dir" \ + || test -d "$dir" \ + || error 1 "cannot create directory: $dir" + done +} + + +# error EXIT_STATUS LINE1 LINE2... +# -------------------------------- +# Report an error and exit with failure if EXIT_STATUS is non-null. +error () +{ + local s="$1" + shift + report "$@" + if test "$s" != 0; then + exit $s + fi +} + + +# findprog PROG +# ------------- +# Return true if PROG is somewhere in PATH, else false. +findprog () +{ + local saveIFS="$IFS" + IFS=$path_sep # break path components at the path separator + for dir in $PATH; do + IFS=$saveIFS + # The basic test for an executable is `test -f $f && test -x $f'. + # (`test -x' is not enough, because it can also be true for directories.) + # We have to try this both for $1 and $1.exe. + # + # Note: On Cygwin and DJGPP, `test -x' also looks for .exe. On Cygwin, + # also `test -f' has this enhancement, but not on DJGPP. (Both are + # design decisions, so there is little chance to make them consistent.) + # Thusly, it seems to be difficult to make use of these enhancements. + # + if { test -f "$dir/$1" && test -x "$dir/$1"; } \ + || { test -f "$dir/$1.exe" && test -x "$dir/$1.exe"; }; then + return 0 + fi + done + return 1 +} + +# report LINE1 LINE2... +# --------------------- +# Report some information on stderr. +report () +{ + for i in "$@" + do + echo >&2 "$0: $i" + done +} + + +# run COMMAND-LINE +# ---------------- +# Run the COMMAND-LINE verbosely, and catching errors as failures. +run () +{ + verbose "Running $@" + "$@" 2>&5 1>&2 \ + || error 1 "$1 failed" +} + + +# usage +# ----- +# Display usage and exit successfully. +usage () +{ + # We used to simply have `echo "$usage"', but coping with the + # changing behavior of `echo' is much harder than simply using a + # here-doc. + # + # echo '\noto' echo '\\noto' echo -e '\\noto' + # bash 3.1 \noto \\noto \noto + # bash 3.2 %oto \noto -e \noto + # + # where % denotes the eol character. + cat < +General help using GNU software: +EOF + exit 0 +} + + +# verbose WORD1 WORD2 +# ------------------- +# Report some verbose information. +verbose () +{ + if $verb; then + echo >&2 "$0: $@" + fi +} + + +# version +# ------- +# Display version info and exit successfully. +version () +{ + cat < +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. +EOF + exit 0 +} + + +## ---------------- ## +## Handling lists. ## +## ---------------- ## + + +# list_append LIST-NAME ELEM +# -------------------------- +# Set LIST-NAME to its former contents, with ELEM appended. +list_append () +{ + local la_l="$1" + shift + eval set X \$$la_l "$@" + shift + eval $la_l=\""$@"\" +} + + +# list_concat_dirs LIST-NAME DIR-LIST +# ----------------------------------- +# Append to LIST-NAME all the components (included empty) from +# the $path_sep separated list DIR-LIST. Make the paths absolute. +list_concat_dirs () +{ + local lcd_list="$1" + # Empty path components are meaningful to tex. We rewrite them as + # `EMPTY' so they don't get lost when we split on $path_sep. + # Hopefully no one will have an actual directory named EMPTY. + local replace_EMPTY="-e 's/^$path_sep/EMPTY$path_sep/g' \ + -e 's/$path_sep\$/${path_sep}EMPTY/g' \ + -e 's/$path_sep$path_sep/${path_sep}EMPTY:/g'" + save_IFS=$IFS + IFS=$path_sep + set x `echo "$2" | eval $SED $replace_EMPTY`; shift + IFS=$save_IFS + local dir + for dir + do + case $dir in + EMPTY) + list_append $lcd_list "" + ;; + *) + if test -d $dir; then + dir=`absolute "$dir"` + list_append $lcd_list "$dir" + fi + ;; + esac + done +} + + +# list_prefix LIST-NAME SEP -> STRING +# ----------------------------------- +# Return a string that is composed of the LIST-NAME with each item +# preceded by SEP. +list_prefix () +{ + local lp_p="$2" + eval set X \$$1 + shift + local lp_res + for i + do + lp_res="$lp_res \"$lp_p\" \"$i\"" + done + echo "$lp_res" +} + +# list_infix LIST-NAME SEP -> STRING +# ---------------------------------- +# Same as list_prefix, but a separator. +list_infix () +{ + eval set X \$$1 + shift + local la_IFS="$IFS" + IFS=$path_sep + echo "$*" + IFS=$la_IFS +} + +# list_dir_to_abs LIST-NAME +# ------------------------- +# Convert the list to using only absolute dir names. +# Currently unused, but should replace absolute_filenames some day. +list_dir_to_abs () +{ + local ld_l="$1" + eval set X \$$ld_l + shift + local ld_res + for dir + do + dir=`absolute "$dir"` + test -d "$dir" || continue + ld_res="$ld_res \"$dir\"" + done + set X $ld_res; shift + eval $ld_l=\"$@\" +} + + +## ------------------------------ ## +## Language auxiliary functions. ## +## ------------------------------ ## + + +# out_lang_set LANG +# ----------------- +out_lang_set () +{ + case $1 in + dvi|dvipdf|html|info|pdf|ps|text) out_lang=$1;; + *) error 1 "invalid output format: $1";; + esac +} + + +# out_lang_tex +# ------------ +# Return the tex output language (DVI or PDF) for $OUT_LANG. +out_lang_tex () +{ + case $out_lang in + dvi | ps | dvipdf ) echo dvi;; + pdf ) echo $out_lang;; + html | info | text ) echo $out_lang;; + *) error 1 "invalid out_lang: $1";; + esac +} + + +# out_lang_ext +# ------------ +# Return the extension for $OUT_LANG. +out_lang_ext () +{ + case $out_lang in + dvipdf ) echo pdf;; + dvi | html | info | pdf | ps | text ) echo $out_lang;; + *) error 1 "invalid out_lang: $1";; + esac +} + + +## ------------------------- ## +## TeX auxiliary functions. ## +## ------------------------- ## + +# Save TEXINPUTS so we can construct a new TEXINPUTS path for each file. +# Likewise for bibtex and makeindex. +tex_envvars="BIBINPUTS BSTINPUTS DVIPSHEADERS INDEXSTYLE MFINPUTS MPINPUTS \ +TEXINPUTS TFMFONTS" +for var in $tex_envvars; do + eval ${var}_orig=\$$var + export $var +done + + +# absolute_filenames TEX-PATH -> TEX-PATH +# --------------------------------------- +# Convert relative paths to absolute paths, so we can run in another +# directory (e.g., in tidy build mode, or during the macro-support +# detection). Prepend ".". +absolute_filenames () +{ + # Empty path components are meaningful to tex. We rewrite them as + # `EMPTY' so they don't get lost when we split on $path_sep. + # Hopefully no one will have an actual directory named EMPTY. + local replace_empty="-e 's/^$path_sep/EMPTY$path_sep/g' \ + -e 's/$path_sep\$/${path_sep}EMPTY/g' \ + -e 's/$path_sep$path_sep/${path_sep}EMPTY:/g'" + local res + res=`echo "$1" | eval $SED $replace_empty` + save_IFS=$IFS + IFS=$path_sep + set x $res; shift + res=. + for dir + do + case $dir in + EMPTY) + res=$res$path_sep + ;; + *) + if test -d "$dir"; then + res=$res$path_sep`absolute "$dir"` + else + # Even if $dir is not a directory, preserve it in the path. + # It might contain metacharacters that TeX will expand in + # turn, e.g., /some/path/{a,b,c}. This will not get the + # implicit absolutification of the path, but we can't help that. + res=$res$path_sep$dir + fi + ;; + esac + done + echo "$res" +} + + +# output_base_name FILE +# --------------------- +# The name of FILE, possibly renamed to satisfy --output. +# FILE is local, there is no directory part. +output_base_name () +{ + case $oname in + '') echo "$1";; + *) local out_noext + out_noext=`noext "$oname"` + local file_ext + file_ext=`echo "$1" | $SED 's/^.*\.//'` + echo "$out_noext.$file_ext" + ;; + esac +} + + +# destdir +# ------- +# Return the name of the directory where the output is expected. +destdir () +{ + case $oname in + '') echo "$orig_pwd";; + *) dirname "$oname";; + esac +} + + +# move_to_dest FILE... +# -------------------- +# Move FILE to the place where the user expects it. Truly move it, that +# is, it must not remain in its build location unless that is also the +# output location. (Otherwise it might appear as an extra file in make +# distcheck.) +# +# FILE can be the principal output (in which case -o directly applies), or +# an auxiliary file with the same base name. +move_to_dest () +{ +# echo "move_to_dest $*, tidy=$tidy, oname=$oname" + + # If we built in place and have no output name, there is nothing to + # do, so just return. + case $tidy:$oname in + false:) return;; + esac + + local destfile + local destdir + local destbase + local sourcedir + local sourcebase + + for file + do + test -f "$file" \ + || error 1 "no such file or directory: $file" + case $tidy:$oname in + true:) destdir=$orig_pwd + destfile=$destdir/$file;; + true:*) destfile=`output_base_name "$file"` + destdir=`dirname "$destfile"`;; + false:*) destfile=$oname + destdir=`dirname "$destfile"`;; + esac + + # We want to compare the source location and the output location, + # and if they are different, do the move. But if they are the + # same, we must preserve the source. Since we can't assume + # stat(1) or test -ef is available, resort to comparing the + # directory names, canonicalized with pwd. We can't use cmp -s + # since the output file might not actually change from run to run; + # e.g., TeX DVI output is timestamped to only the nearest minute. + destdir=`cd "$destdir" && pwd` + destbase=`basename "$destfile"` + + sourcedir=`dirname "$file"` + sourcedir=`cd "$sourcedir" && pwd` + sourcebase=`basename "$file"` + + if test "$sourcedir/$sourcebase" != "$destdir/$destbase"; then + verbose "Moving $file to $destfile" + rm -f "$destfile" + mv "$file" "$destfile" + fi + done +} + + +## --------------------- ## +## Managing xref files. ## +## --------------------- ## + +# aux_file_p FILE +# --------------- +# Return with success if FILE is an aux file. +aux_file_p () +{ + test -f "$1" || return 1 + case $1 in + *.aux) return 0;; + *) return 1;; + esac +} + +# bibaux_file_p FILE +# ------------------ +# Return with success if FILE is an aux file containing citation +# requests. +bibaux_file_p () +{ + test -s "$1" || return 1 + if (grep '^\\bibstyle[{]' "$1" \ + && grep '^\\bibdata[{]' "$1" \ + ## The following line is suspicious: fails when there + ## are citations in sub aux files. We need to be + ## smarter in this case. + ## && grep '^\\citation[{]' "$f" + ) >&6 2>&1; + then + return 0 + fi + return 1 +} + +# index_file_p FILE +# ----------------- +# Return with success if FILE is an index file. +index_file_p () +{ + test -f "$1" || return 1 + case $in_lang:$latex2html:`out_lang_tex`:`$SED '1q' "$1"` in + # When working with TeX4HT, *.idx are created by LaTeX. They must + # be processed to produce *.4ix, *.4dx files. The *.4dx file is + # passed to makeindex to produce the *.ind file. This sequence is + # handled by run_index, so we are only interested in the *.idx + # files, which have each "\indexentry" preceded by a + # "\beforeentry". + latex:tex4ht:html:"\\beforeentry {"*) return 0;; + + # When index.sty is used, there is a space before the brace. + latex:*:*:"\\indexentry{"*|latex:*:*:"\\indexentry {"*) return 0;; + + texinfo:*:*:"\\entry{"*) return 0;; + + *) return 1;; + esac +} + +# xref_file_p FILE +# ---------------- +# Return with success if FILE is an xref file (indexes, tables and lists). +xref_file_p () +{ + test -f "$1" || return 1 + # If the file is not suitable to be an index or xref file, don't + # process it. It's suitable if the first character is a + # backslash or right quote or at, as long as the first line isn't + # \input texinfo. + case `$SED '1q' "$1"` in + "\\input texinfo"*) return 1;; + [\\''@]*) return 0;; + *) return 1;; + esac +} + + +# generated_files_get FILENAME-NOEXT [PREDICATE-FILTER] +# ----------------------------------------------------- +# Return the list of files generated by the TeX compilation of FILENAME-NOEXT. +generated_files_get () +{ + local filter=true + if test -n "$2"; then + filter=$2 + fi + + # Gather the files created by TeX. + ( + if test -f "$1.log"; then + $SED -n -e "s,^\\\\openout.* = \`\\(.*\\)'\\.,\\1,p" "$1.log" + fi + echo "$1.log" + ) | + # Depending on these files, infer outputs from other tools. + while read file; do + echo $file + case $in_lang in + texinfo) + # texindex: texinfo.cp -> texinfo.cps + if index_file_p $file; then + echo ${file}s + fi + ;; + latex) + if aux_file_p $file; then + # bibtex: *.aux -> *.bbl and *.blg. + echo $file | $SED 's/^\(.*\)\.aux$/\1.bbl/' + echo $file | $SED 's/^\(.*\)\.aux$/\1.blg/' + # -recorder: .fls + echo $file | $SED 's/^\(.*\)\.aux$/\1.fls/' + fi + ;; + esac + done | + # Filter existing files matching the criterion. + # + # With an input file name containing a space, this produces a + # "command not found" message (and filtering is ineffective). + # The situation with a newline is presumably even worse. + while read file; do + if $filter "$file"; then + echo $file + fi + done | + sort | + # Some files are opened several times, e.g., listings.sty's *.vrb. + uniq +} + + +# xref_files_save +# --------------- +# Save the xref files. +xref_files_save () +{ + # Save copies of auxiliary files for later comparison. + xref_files_orig=`generated_files_get "$in_noext" xref_file_p` + if test -n "$xref_files_orig"; then + verbose "Backing up xref files: $xref_files_orig" + # The following line improves `cp $xref_files_orig "$work_bak"' + # by preserving the directory parts. Think of + # cp chap1/main.aux chap2/main.aux $work_bak. + # + # Users may have, e.g., --keep-old-files. Don't let this interfere. + # (Don't use unset for the sake of ancient shells.) + TAR_OPTIONS=; export TAR_OPTIONS + tar cf - $xref_files_orig | (cd "$work_bak" && tar xf -) + fi +} + + +# xref_files_changed +# ------------------ +# Whether the xref files were changed since the previous run. +xref_files_changed () +{ + # LaTeX (and the package changebar) report in the LOG file if it + # should be rerun. This is needed for files included from + # subdirs, since texi2dvi does not try to compare xref files in + # subdirs. Performing xref files test is still good since LaTeX + # does not report changes in xref files. + if grep "Rerun to get" "$in_noext.log" >&6 2>&1; then + return 0 + fi + # biblatex report of whether rerunning is needed. + if grep "biblatex.*(re)run" "$in_noext.log" >&6 2>&1; then + return 0 + fi + + # If old and new lists don't have the same file list, + # then something has definitely changed. + xref_files_new=`generated_files_get "$in_noext" xref_file_p` + verbose "Original xref files = $xref_files_orig" + verbose "New xref files = $xref_files_new" + if test "x$xref_files_orig" != "x$xref_files_new"; then + return 0 + fi + + # Compare each file until we find a difference. + for this_file in $xref_files_new; do + verbose "Comparing xref file `echo $this_file | $SED 's|\./||g'` ..." + # cmp -s returns nonzero exit status if files differ. + if cmp -s "$this_file" "$work_bak/$this_file"; then :; else + verbose "xref file `echo $this_file | $SED 's|\./||g'` differed ..." + if $debug; then + diff -u "$work_bak/$this_file" "$this_file" + fi + return 0 + fi + done + + # No change. + return 1 +} + + + +## ----------------------- ## +## Running the TeX suite. ## +## ----------------------- ## + + + +# run_tex () +# ---------- +# Run TeX as "$tex $in_input", taking care of errors and logs. +run_tex () +{ + case $in_lang:$latex2html:`out_lang_tex` in + latex:*:dvi|latex:tex4ht:html) + tex=${LATEX:-latex};; + latex:*:pdf) + tex=${PDFLATEX:-pdflatex};; + texinfo:*:dvi) + # MetaPost also uses the TEX environment variable. If the user + # has set TEX=latex for that reason, don't bomb out. + case $TEX in + *latex) tex=tex;; # don't bother trying to find etex + *) tex=$TEX + esac;; + texinfo:*:pdf) tex=$PDFTEX;; + + *) error 1 "$out_lang not supported for $in_lang";; + esac + + # do the special catcode trick for ~ in filenames only for Texinfo, + # not LaTeX. + if test x"$in_lang" = xtexinfo && test $catcode_special = maybe; then + catcode_special=true + else + catcode_special=false + fi + + # Beware of aux files in subdirectories that require the + # subdirectory to exist. + case $in_lang:$tidy in + latex:true) + $SED -n 's|^[ ]*\\include{\(.*\)/.*}.*|\1|p' "$in_input" | + sort -u | + while read d + do + ensure_dir "$work_build/$d" + done + ;; + esac + + # Note that this will be used via an eval: quote properly. + local cmd="$tex" + + # If possible, make TeX report error locations in GNU format. + if $line_error; then + if test "${tex_help:+set}" != set; then + # Go to a temporary directory to try --help, since old versions that + # don't accept --help will generate a texput.log. + tex_help_dir=$t2ddir/tex_help + ensure_dir "$tex_help_dir" + tex_help=`cd "$tex_help_dir" >&6 && $tex --help &1 || true` + fi + # The mk program and perhaps others want to parse TeX's + # original error messages. + case $tex_help in + *file-line-error*) cmd="$cmd --file-line-error";; + esac + fi + + # Tell TeX about TCX file, if specified. + test -n "$translate_file" && cmd="$cmd --translate-file=$translate_file" + + # Tell TeX to make source specials (for backtracking from output to + # source, given a sufficiently smart editor), if specified. + test -n "$src_specials" && cmd="$cmd $src_specials" + + # Tell TeX to allow running external executables + test -n "$shell_escape" && cmd="$cmd $shell_escape" + + # Tell TeX to be batch if requested. + if $batch; then + # \batchmode does not show terminal output at all, so we don't + # want that. And even in batch mode, TeX insists on having input + # from the user. Close its stdin to make it impossible. + cmd="$cmd &5; then + case $out_lang in + dvi | pdf ) move_to_dest "$in_noext.$out_lang";; + esac + else + error 1 "$tex exited with bad status, quitting." + fi +} + +# run_bibtex () +# ------------- +# Run bibtex on (or biber) current file. +# - If its input (AUX) exists. +# - If some citations are missing (LOG contains `Citation'). +# or the LOG complains of a missing .bbl +# +# Don't try to be too smart: +# 1. Running bibtex only if the bbl file exists and is older than +# the LaTeX file is wrong, since the document might include files +# that have changed. +# +# 3. Because there can be several AUX (if there are \include's), +# but a single LOG, looking for missing citations in LOG is +# easier, though we take the risk of matching false messages. +run_bibtex () +{ + case $in_lang in + latex) bibtex=${BIBTEX:-bibtex};; + texinfo) return;; + esac + + # "Citation undefined" is for LaTeX, "Undefined citation" for btxmac.tex. + # The no .aux && \bibdata test is also for btxmac, in case it was the + # first run of a bibtex-using document. Otherwise, it's possible that + # bibtex would never be run. + if test -r "$in_noext.aux" \ + && test -r "$in_noext.log" \ + && ( (grep 'Warning:.*Citation.*undefined' "$in_noext.log" \ + || grep '.*Undefined citation' "$in_noext.log" \ + || grep 'No file .*\.bbl\.' "$in_noext.log") \ + || (grep 'No \.aux file' "$in_noext.log" \ + && grep '^\\bibdata' "$in_noext.aux") ) \ + >&6 2>&1; \ + then + bibtex_aux=`generated_files_get "$in_noext" bibaux_file_p` + for f in $bibtex_aux; do + run $bibtex "$f" + done + fi + + # biber(+biblatex) check. + if test -r "$in_noext.bcf" \ + && grep '' "$in_noext.bcf" >/dev/null; then + run ${BIBER:-biber} "$in_noext" + fi +} + +# run_index () +# ------------ +# Run texindex (or makeindex or texindy) on current index files. If +# they already exist, and after running TeX a first time the index +# files don't change, then there's no reason to run TeX again. But we +# won't know that if the index files are out of date or nonexistent. +run_index () +{ + local index_files + index_files=`generated_files_get $in_noext index_file_p` + test -n "$index_files" \ + || return 0 + + : ${MAKEINDEX:=makeindex} + : ${TEXINDEX:=texindex} + : ${TEXINDY:=texindy} + + local index_file + local index_noext + case $in_lang:$latex2html:`out_lang_tex` in + latex:tex4ht:html) + for index_file in $index_files + do + index_noext=`noext "$index_file"` + run tex \ + '\def\filename{{'"$index_noext"'}{idx}{4dx}{ind}} + \input idxmake.4ht' + run $MAKEINDEX -o $index_noext.ind $index_noext.4dx + done + ;; + + latex:*) + if $TEXINDY --version >&6 2>&1; then + run $TEXINDY $index_files + else + run $MAKEINDEX $index_files + fi + ;; + + texinfo:*) + run $TEXINDEX $index_files + ;; + esac +} + + +# run_tex4ht () +# ------------- +# Run the last two phases of TeX4HT: tex4ht extracts the HTML from the +# instrumented DVI file, and t4ht converts the figures and installs +# the files when given -d. +# +# Because knowing exactly which files are created is complex (in +# addition the names are not simple to compute), which makes it +# difficult to install the output files in a second step, it is much +# simpler to install directly the output files. +run_tex4ht () +{ + case $in_lang:$latex2html:`out_lang_tex` in + latex:tex4ht:html) + : ${TEX4HT:=tex4ht} ${T4HT:=t4ht} + run "$TEX4HT" "-f/$in_noext" + # Do not remove the / after the destdir. + run "$T4HT" "-d`destdir`/" "-f/$in_noext" + ;; + esac +} + + +# run_thumbpdf () +# --------------- +run_thumbpdf () +{ + if test `out_lang_tex` = pdf \ + && test -r "$in_noext.log" \ + && grep 'thumbpdf\.sty' "$in_noext.log" >&6 2>&1; \ + then + thumbpdf=${THUMBPDF_CMD:-thumbpdf} + thumbcmd="$thumbpdf $in_dir/$in_noext" + verbose "Running $thumbcmd ..." + if $thumbcmd >&5; then + run_tex + else + report "$thumbpdf exited with bad status." \ + "Ignoring its output." + fi + fi +} + + +# run_dvipdf FILE.dvi +# ------------------- +# Convert FILE.dvi to FILE.pdf. +run_dvipdf () +{ + # Find which dvi->pdf program is available. + if test -z "$dvipdf"; then + for i in "$DVIPDF" dvipdfmx dvipdfm dvipdf dvi2pdf dvitopdf; do + if findprog $i; then + dvipdf=$i + fi + done + fi + # These tools have varying interfaces, some 'input output', others + # 'input -o output'. They all seem to accept 'input' only, + # outputting using the expected file name. + run $dvipdf "$1" + if test ! -f `echo "$1" | $SED -e 's/\.dvi$/.pdf/'`; then + error 1 "cannot find output file" + fi +} + +# run_tex_suite () +# ---------------- +# Run the TeX tools until a fix point is reached. +run_tex_suite () +{ + # Move to the working directory. + if $tidy; then + verbose "cd $work_build" + cd "$work_build" || exit 1 + fi + + # Count the number of cycles. + local cycle=0 + + while :; do + # check for probably LaTeX loop (e.g. varioref) + if test $cycle -eq "$max_iters"; then + error 0 "Maximum of $max_iters cycles exceeded" + break + fi + + # report progress + cycle=`expr $cycle + 1` + verbose "Cycle $cycle for $command_line_filename" + + xref_files_save + + # We run bibtex first, because it's more likely for the indexes + # to change after bibtex is run than the reverse, though either + # would be rare. + run_bibtex + run_index + run_core_conversion + + xref_files_changed || break + done + + # If we were using thumbpdf and producing PDF, then run thumbpdf + # and TeX one last time. + run_thumbpdf + + # If we are using tex4ht, call it. + run_tex4ht + + # Install the result if we didn't already (i.e., if the output is + # dvipdf or ps). + case $latex2html:$out_lang in + *:dvipdf) + run_dvipdf "$in_noext.`out_lang_tex`" + move_to_dest "$in_noext.`out_lang_ext`" + ;; + *:ps) + : ${DVIPS:=dvips} + run $DVIPS -o "$in_noext.`out_lang_ext`" "$in_noext.`out_lang_tex`" + move_to_dest "$in_noext.`out_lang_ext`" + ;; + esac + + cd_orig +} + +## -------------------------------- ## +## TeX processing auxiliary tools. ## +## -------------------------------- ## + + +# A sed script that preprocesses Texinfo sources in order to keep the +# iftex sections only. We want to remove non-TeX sections, and comment +# (with `@c _texi2dvi') TeX sections so that makeinfo does not try to +# parse them. Nevertheless, while commenting TeX sections, don't +# comment @macro/@end macro so that makeinfo does propagate them. +# Unfortunately makeinfo --iftex --no-ifinfo doesn't work well enough +# (yet), makeinfo can't parse the TeX commands, so work around with sed. +# +# We assume that `@c _texi2dvi' starting a line is not present in the +# document. +# +comment_iftex=\ +'/^@tex/,/^@end tex/{ + s/^/@c _texi2dvi/ +} +/^@iftex/,/^@end iftex/{ + s/^/@c _texi2dvi/ + /^@c _texi2dvi@macro/,/^@c _texi2dvi@end macro/{ + s/^@c _texi2dvi// + } +} +/^@ifnottex/,/^@end ifnottex/{ + s/^/@c (_texi2dvi)/ +} +/^@ifinfo/,/^@end ifinfo/{ + /^@node/p + /^@menu/,/^@end menu/p + t + s/^/@c (_texi2dvi)/ +} +s/^@ifnotinfo/@c _texi2dvi@ifnotinfo/ +s/^@end ifnotinfo/@c _texi2dvi@end ifnotinfo/' + +# Uncommenting is simpler: remove any leading `@c texi2dvi'; repeated +# copies can sneak in via macro invocations. +uncomment_iftex='s/^@c _texi2dvi\(@c _texi2dvi\)*//' + + +# run_makeinfo () +# --------------- +# Expand macro commands in the original source file using Makeinfo. +# Always use `end' footnote style, since the `separate' style +# generates different output (arguably this is a bug in -E). Discard +# main info output, the user asked to run TeX, not makeinfo. +run_makeinfo () +{ + test $in_lang = texinfo \ + || return 0 + + # Unless required by the user, makeinfo expansion is wanted only + # if texinfo.tex is too old. + if $expand; then + makeinfo=${MAKEINFO:-makeinfo} + else + # Check if texinfo.tex performs macro expansion by looking for + # its version. The version is a date of the form YEAR-MO-DA. + # We don't need to use [0-9] to match the digits since anyway + # the comparison with $txiprereq, a number, will fail with non-digits. + # Run in a temporary directory to avoid leaving files. + version_test_dir=$t2ddir/version_test + ensure_dir "$version_test_dir" + if ( + cd "$version_test_dir" + echo '\input texinfo.tex @bye' >txiversion.tex + # Be sure that if tex wants to fail, it is not interactive: + # close stdin. + $TEX txiversion.tex txiversion.out 2>txiversion.err + ); then :; else + report "texinfo.tex appears to be broken. +This may be due to the environment variable TEX set to something +other than (plain) tex, a corrupt texinfo.tex file, or +to tex itself simply not working." + cat "$version_test_dir/txiversion.out" + cat "$version_test_dir/txiversion.err" >&2 + error 1 "quitting." + fi + eval `$SED -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p' "$version_test_dir/txiversion.out"` + verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..." + if test "$txiprereq" -le "$txiversion" >&6 2>&1; then + makeinfo= + else + makeinfo=${MAKEINFO:-makeinfo} + fi + # If TeX is preloaded, offer the user this convenience: + if test "$txiformat" = Texinfo; then + escape=@ + fi + fi + + if test -n "$makeinfo"; then + # in_src: the file with macros expanded. + # Use the same basename to generate the same aux file names. + work_src=$workdir/src + ensure_dir "$work_src" + in_src=$work_src/$in_base + local miincludes + miincludes=`list_prefix includes -I` + verbose "Macro-expanding $command_line_filename to $in_src ..." + # eval $makeinfo because it might be defined as something complex + # (running missing) and then we end up with things like '"-I"', + # and "-I" (including the quotes) is not an option name. This + # happens with gettext 0.14.5, at least. + $SED "$comment_iftex" "$command_line_filename" \ + | eval $makeinfo --footnote-style=end -I "$in_dir" $miincludes \ + -o /dev/null --macro-expand=- \ + | $SED "$uncomment_iftex" >"$in_src" + # Continue only if everything succeeded. + if test $? -ne 0 \ + || test ! -r "$in_src"; then + verbose "Expansion failed, ignored..."; + else + in_input=$in_src + fi + fi +} + +# insert_commands () +# ------------------ +# Used most commonly for @finalout, @smallbook, etc. +insert_commands () +{ + if test -n "$textra"; then + # _xtr. The file with the user's extra commands. + work_xtr=$workdir/xtr + in_xtr=$work_xtr/$in_base + ensure_dir "$work_xtr" + verbose "Inserting extra commands: $textra" + local textra_cmd + case $in_lang in + latex) textra_cmd=1i;; + texinfo) textra_cmd='/^@setfilename/a';; + *) error 1 "internal error, unknown language: $in_lang";; + esac + $SED "$textra_cmd\\ +$textra" "$in_input" >"$in_xtr" + in_input=$in_xtr + fi + + case $in_lang:$latex2html:`out_lang_tex` in + latex:tex4ht:html) + # _tex4ht. The file with the added \usepackage{tex4ht}. + work_tex4ht=$workdir/tex4ht + in_tex4ht=$work_tex4ht/$in_base + ensure_dir "$work_tex4ht" + verbose "Inserting \\usepackage{tex4ht}" + perl -pe 's<\\documentclass(?:\[.*\])?{.*}> + <$&\\usepackage[xhtml]{tex4ht}>' \ + "$in_input" >"$in_tex4ht" + in_input=$in_tex4ht + ;; + esac +} + +# compute_language FILENAME +# ------------------------- +# Return the short string describing the language in which FILENAME +# is written: `texinfo' or `latex'. +compute_language () +{ + # If the user explicitly specified the language, use that. + # Otherwise, if the first line is \input texinfo, assume it's texinfo. + # Otherwise, guess from the file extension. + if test -n "$set_language"; then + echo $set_language + elif $SED 1q "$1" | grep 'input texinfo' >&6; then + echo texinfo + else + # Get the type of the file (latex or texinfo) from the given language + # we just guessed, or from the file extension if not set yet. + case $1 in + *.ltx | *.tex | *.drv | *.dtx) echo latex;; + *) echo texinfo;; + esac + fi +} + + +# run_hevea (MODE) +# ---------------- +# Convert to HTML/INFO/TEXT. +# +# Don't pass `-noiso' to hevea: it's useless in HTML since anyway the +# charset is set to latin1, and troublesome in other modes since +# accented characters loose their accents. +# +# Don't pass `-o DEST' to hevea because in that case it leaves all its +# auxiliary files there too... Too bad, because it means we will need +# to handle images some day. +run_hevea () +{ + local hevea="${HEVEA:-hevea}" + local run_hevea="$hevea" + + case $1 in + html) ;; + text|info) run_hevea="$run_hevea -$1";; + *) error 1 "run_hevea: invalid argument: $1";; + esac + + # Compiling to the tmp directory enables to preserve a previous + # successful compilation. + run_hevea="$run_hevea -fix -O -o '$out_base'" + run_hevea="$run_hevea `list_prefix includes -I` -I '$orig_pwd' " + run_hevea="$run_hevea '$in_input'" + + if $debug; then + run_hevea="$run_hevea -v -v" + fi + + verbose "running $run_hevea" + if eval "$run_hevea" >&5; then + # hevea leaves trailing white spaces, this is annoying. + case $1 in text|info) + perl -pi -e 's/[ \t]+$//g' "$out_base"*;; + esac + case $1 in + html|text) move_to_dest "$out_base";; + info) # There can be foo.info-1, foo.info-2 etc. + move_to_dest "$out_base"*;; + esac + else + error 1 "$hevea exited with bad status, quitting." + fi +} + + +# run_core_conversion () +# ---------------------- +# Run the TeX (or HeVeA). +run_core_conversion () +{ + case $in_lang:$latex2html:`out_lang_tex` in + *:dvi|*:pdf|latex:tex4ht:html) + run_tex;; + latex:*:html|latex:*:text|latex:*:info) + run_hevea $out_lang;; + *) + error 1 "invalid input/output combination: $in_lang/$out_lang";; + esac +} + + +# compile () +# ---------- +# Run the full compilation chain, from pre-processing to installation +# of the output at its expected location. +compile () +{ + # Source file might include additional sources. + # We want `.:$orig_pwd' before anything else. (We'll add `.:' later + # after all other directories have been turned into absolute paths.) + # `.' goes first to ensure that any old .aux, .cps, + # etc. files in ${directory} don't get used in preference to fresher + # files in `.'. Include orig_pwd in case we are in clean build mode, where + # we have cd'd to a temp directory. + common="$orig_pwd$path_sep$in_dir$path_sep" + # + # If we have any includes, put those at the end. + # Keep a final path_sep to get the default (system) TeX directories included. + txincludes=`list_infix includes $path_sep` + test -n "$txincludes" && common="$common$txincludes$path_sep" + # + for var in $tex_envvars; do + eval val="\$common\$${var}_orig" + # Convert relative paths to absolute paths, so we can run in another + # directory (e.g., in clean build mode, or during the macro-support + # detection). ".:" is added here. + val=`absolute_filenames "$val"` + eval $var="\"$val\"" + export $var + eval verbose \"$var=\'\$${var}\'\" + done + + # --expand + run_makeinfo + + # --command, --texinfo + insert_commands + + # Run until a fix point is reached. + run_tex_suite +} + + +# remove FILES +# ------------ +remove () +{ + verbose "Removing" "$@" + rm -rf "$@" +} + + +# mostly_clean +# ------------ +# Remove auxiliary files and directories. Changes the current directory. +mostly_clean () +{ + cd_orig + set X "$t2ddir" + shift + $tidy || { + local log="$work_build/$in_noext.log" + set X ${1+"$@"} "$log" `generated_files_get "$work_build/$in_noext"` + shift + } + remove ${1+"$@"} +} + + +# cleanup () +# ---------- +# Remove what should be removed according to options. +# Called at the end of each compilation cycle, and at the end of +# the script. Changes the current directory. +cleanup () +{ + case $build_mode in + local) cd_orig; remove "$t2ddir";; + clean) mostly_clean;; + tidy) ;; + esac +} + + + +## ---------------------- ## +## Command line parsing. ## +## ---------------------- ## # Push a token among the arguments that will be used to notice when we # ended options/arguments parsing. @@ -132,41 +1647,50 @@ while test x"$1" != x"$arg_sep"; do # Handle --option=value by splitting apart and putting back on argv. case "$1" in --*=*) - opt=`echo "$1" | sed -e 's/=.*//'` - val=`echo "$1" | sed -e 's/[^=]*=//'` + opt=`echo "$1" | $SED -e 's/=.*//'` + val=`echo "$1" | $SED -e 's/[^=]*=//'` shift set dummy "$opt" "$val" ${1+"$@"}; shift ;; esac - # This recognizes --quark as --quiet. So what. case "$1" in -@ ) escape=@;; + -~ ) catcode_special=false;; # Silently and without documentation accept -b and --b[atch] as synonyms. - -b | --b*) batch=eval;; - -q | -s | --q* | --s*) quiet=t; batch=eval;; - -c | --c*) clean=t;; - -D | --d*) debug=t;; - -e | -E | --e*) expand=t;; - -h | --h*) echo "$usage"; exit 0;; - -I | --I*) + -b | --batch) batch=true;; + --build) shift; build_mode=$1;; + --build-dir) shift; build_dir=$1; build_mode=tidy;; + -c | --clean) build_mode=clean;; + -D | --debug) debug=true;; + -e | -E | --expand) expand=true;; + -h | --help) usage;; + -I) shift; list_concat_dirs includes "$1";; + -l | --lang | --language) shift; set_language=$1;; + --mostly-clean) action=mostly-clean;; + --no-line-error) line_error=false;; + --max-iterations) shift; max_iters=$1;; + -o | --out | --output) shift - miincludes="$miincludes -I $1" - txincludes="$txincludes$1$path_sep" - ;; - -l | --l*) shift; set_language=$1;; - -o | --o*) - shift - clean=t - case "$1" in - /* | ?:/*) oname=$1;; - *) oname="$orig_pwd/$1";; - esac;; - -p | --p*) oformat=pdf;; - -t | --t*) shift; textra="$textra\\ -$1";; - -v | --vers*) echo "$version"; exit 0;; - -V | --verb*) verbose=echo;; + # Make it absolute, just in case we also have --clean, or whatever. + oname=`absolute "$1"`;; + + # Output formats. + -O|--output-format) shift; out_lang_set "$1";; + --dvi|--dvipdf|--html|--info|--pdf|--ps|--text) + out_lang_set `echo "x$1" | $SED 's/^x--//'`;; + + -p) out_lang_set pdf;; + -q | -s | --quiet | --silent) quiet=true; batch=true;; + --src-specials) src_specials=--src-specials;; + --shell-escape) shell_escape=--shell-escape;; + --tex4ht) latex2html=tex4ht;; + -t | --texinfo | --command ) shift; textra="$textra\\ +"`echo "$1" | $SED 's/\\\\/\\\\\\\\/g'`;; + --translate-file ) shift; translate_file="$1";; + --tidy) build_mode=tidy;; + -v | --vers*) version;; + -V | --verb*) verb=true;; --) # What remains are not options. shift while test x"$1" != x"$arg_sep"; do @@ -175,9 +1699,9 @@ $1";; done break;; -*) - echo "$0: Unknown or ambiguous option \`$1'." >&2 - echo "$0: Try \`--help' for more information." >&2 - exit 1;; + error 1 "Unknown or ambiguous option \`$1'." \ + "Try \`--help' for more information." + ;; *) set dummy ${1+"$@"} "$1"; shift;; esac shift @@ -185,103 +1709,59 @@ done # Pop the token shift +# $tidy: compile in a t2d directory. +# $clean: remove all the aux files. +case $build_mode in + local) clean=false; tidy=false;; + tidy) clean=false; tidy=true;; + clean) clean=true; tidy=true;; + *) error 1 "invalid build mode: $build_mode";; +esac + # Interpret remaining command line args as filenames. case $# in 0) - echo "$0: Missing file arguments." >&2 - echo "$0: Try \`--help' for more information." >&2 - exit 2 + error 2 "Missing file arguments." "Try \`--help' for more information." ;; 1) ;; *) if test -n "$oname"; then - echo "$0: Can't use option \`--output' with more than one argument." >&2 - exit 2 + error 2 "Can't use option \`--output' with more than one argument." fi ;; esac -# Prepare the temporary directory. Remove it at exit, unless debugging. -if test -z "$debug"; then - trap "cd / && rm -rf $tmpdir" 0 1 2 15 + +# We can't do much without tex. +# +if findprog ${TEX:-tex}; then :; else cat <$comment_iftex_sed -/^@tex/,/^@end tex/{ - s/^/@c texi2dvi/ -} -/^@iftex/,/^@end iftex/{ - s/^/@c texi2dvi/ - /^@c texi2dvi@macro/,/^@c texi2dvi@end macro/{ - s/^@c texi2dvi// - } -} -/^@html/,/^@end html/{ - s/^/@c (texi2dvi)/ -} -/^@ifhtml/,/^@end ifhtml/{ - s/^/@c (texi2dvi)/ -} -/^@ifnottex/,/^@end ifnottex/{ - s/^/@c (texi2dvi)/ -} -/^@ifinfo/,/^@end ifinfo/{ - /^@node/p - /^@menu/,/^@end menu/p - t - s/^/@c (texi2dvi)/ -} -s/^@ifnotinfo/@c texi2dvi@ifnotinfo/ -s/^@end ifnotinfo/@c texi2dvi@end ifnotinfo/ -EOF -# Uncommenting is simple: Remove any leading `@c texi2dvi'. -uncomment_iftex_sed=$utildir/uncomment.sed -cat <$uncomment_iftex_sed -s/^@c texi2dvi// -EOF - -# A shell script that computes the list of xref files. -# Takes the filename (without extension) of which we look for xref -# files as argument. The index files must be reported last. -get_xref_files=$utildir/get_xref.sh -cat <<\EOF >$get_xref_files -#! /bin/sh - -# Get list of xref files (indexes, tables and lists). -# Find all files having root filename with a two-letter extension, -# saves the ones that are really Texinfo-related files. .?o? catches -# many files: .toc, .log, LaTeX tables and lists, FiXme's .lox, maybe more. -for this_file in "$1".?o? "$1".aux "$1".?? "$1".idx; do - # If file is empty, skip it. - test -s "$this_file" || continue - # If the file is not suitable to be an index or xref file, don't - # process it. The file can't be if its first character is not a - # backslash or single quote. - first_character=`sed -n '1s/^\(.\).*$/\1/p;q' $this_file` - if test "x$first_character" = "x\\" \ - || test "x$first_character" = "x'"; then - xref_files="$xref_files ./$this_file" - fi -done -echo "$xref_files" -EOF -chmod 500 $get_xref_files # File descriptor usage: # 0 standard input @@ -290,369 +1770,175 @@ chmod 500 $get_xref_files # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 5 tools output (turned off by --quiet) +# 6 tracing/debugging (set -x output, etc.) -# Tools' output. If quiet, discard, else redirect to the message flow. -if test "$quiet" = t; then + +# Main tools' output (TeX, etc.) that TeX users are used to seeing. +# +# If quiet, discard, else redirect to the message flow. +if $quiet; then exec 5>/dev/null else exec 5>&1 fi -# Enable tracing -test "$debug" = t && set -x + +# Enable tracing, and auxiliary tools output. +# +# This fd should be used where you'd typically use /dev/null to throw +# output away. But sometimes it is convenient to see that output (e.g., +# from a grep) to aid debugging. Especially debugging at distance, via +# the user. +# +if $debug; then + exec 6>&1 + set -vx +else + exec 6>/dev/null +fi # -# TeXify files. -for command_line_filename in ${1+"$@"}; do - $verbose "Processing $command_line_filename ..." +# input_file_name_decode +# ---------------------- +# Decode COMMAND_LINE_FILENAME, and compute: +# - COMMAND_LINE_FILENAME clean of TeX commands +# - IN_DIR +# The directory to the input file, possibly absolute if needed. +# - IN_DIR_ABS +# The absolute directory of the input file. +# - IN_BASE +# The input file base name (no directory part). +# - IN_NOEXT +# The input file name without extensions (nor directory part). +# - IN_INPUT +# Defaults to COMMAND_LINE_FILENAME, but might change if the +# input is preprocessed. With directory, possibly absolute. +input_file_name_decode () +{ + # See if we are run from within AUC-Tex, in which case we are + # passed `\input{FOO.tex}' or even `\nonstopmode\input{FOO.tex}'. + case $command_line_filename in + *\\nonstopmode*) + batch=true;; + esac + case $command_line_filename in + *\\input{*}*) + # Let AUC-TeX error parser deal with line numbers. + line_error=false + command_line_filename=`\ + expr X"$command_line_filename" : X'.*input{\([^}]*\)}'` + ;; + esac # If the COMMAND_LINE_FILENAME is not absolute (e.g., --debug.tex), # prepend `./' in order to avoid that the tools take it as an option. - echo "$command_line_filename" | $EGREP '^(/|[A-z]:/)' >/dev/null \ + echo "$command_line_filename" | LC_ALL=C $EGREP '^(/|[A-Za-z]:/)' >&6 \ || command_line_filename="./$command_line_filename" # See if the file exists. If it doesn't we're in trouble since, even # though the user may be able to reenter a valid filename at the tex # prompt (assuming they're attending the terminal), this script won't # be able to find the right xref files and so forth. - if test ! -r "$command_line_filename"; then - echo "$0: Could not read $command_line_filename, skipping." >&2 - continue - fi + test -r "$command_line_filename" \ + || error 1 "cannot read $command_line_filename, skipping." - # Get the name of the current directory. We want the full path - # because in clean mode we are in tmp, in which case a relative - # path has no meaning. - filename_dir=`echo $command_line_filename | sed 's!/[^/]*$!!;s!^$!.!'` - filename_dir=`cd "$filename_dir" >/dev/null && pwd` + # Get the name of the current directory. + in_dir=`func_dirname "$command_line_filename"` + in_dir_abs=`absolute "$in_dir"` + # In a clean build, we `cd', so get an absolute file name. + if $tidy; then + in_dir=$in_dir_abs + fi # Strip directory part but leave extension. - filename_ext=`basename "$command_line_filename"` + in_base=`basename "$command_line_filename"` # Strip extension. - filename_noext=`echo "$filename_ext" | sed 's/\.[^.]*$//'` - ext=`echo "$filename_ext" | sed 's/^.*\.//'` + in_noext=`noext "$in_base"` - # _src. Use same basename since we want to generate aux files with - # the same basename as the manual. If --expand, then output the - # macro-expanded file to here, else copy the original file. - tmpdir_src=$tmpdir/src - filename_src=$tmpdir_src/$filename_noext.$ext + # The normalized file name to compile. Must always point to the + # file to actually compile (in case of recoding, macro-expansion etc.). + in_input=$in_dir/$in_base - # _xtr. The file with the user's extra commands. - tmpdir_xtr=$tmpdir/xtr - filename_xtr=$tmpdir_xtr/$filename_noext.$ext - # _bak. Copies of the previous xref files (another round is run if - # they differ from the new one). - tmpdir_bak=$tmpdir/bak - - # Make all those directories and give up if we can't succeed. - mkdir $tmpdir_src $tmpdir_xtr $tmpdir_bak || exit 1 - - # Source file might include additional sources. - # We want `.:$orig_pwd' before anything else. (We'll add `.:' later - # after all other directories have been turned into absolute paths.) - # `.' goes first to ensure that any old .aux, .cps, - # etc. files in ${directory} don't get used in preference to fresher - # files in `.'. Include orig_pwd in case we are in clean mode, where - # we've cd'd to a temp directory. - common="$orig_pwd$path_sep$filename_dir$path_sep$txincludes" - TEXINPUTS="$common$TEXINPUTS_orig" - INDEXSTYLE="$common$INDEXSTYLE_orig" - - # Convert relative paths to absolute paths, so we can run in another - # directory (e.g., in --clean mode, or during the macro-support - # detection.) - # - # Empty path components are meaningful to tex. We rewrite them - # as `EMPTY' so they don't get lost when we split on $path_sep. - TEXINPUTS=`echo $TEXINPUTS |sed 's/^:/EMPTY:/;s/:$/:EMPTY/;s/::/:EMPTY:/g'` - INDEXSTYLE=`echo $INDEXSTYLE |sed 's/^:/EMPTY:/;s/:$/:EMPTY/;s/::/:EMPTY:/g'` - save_IFS=$IFS - IFS=$path_sep - set x $TEXINPUTS; shift - TEXINPUTS=. - for dir - do - case $dir in - EMPTY) - TEXINPUTS=$TEXINPUTS$path_sep - ;; - [\\/]* | ?:[\\/]*) # Absolute paths don't need to be expansed. - TEXINPUTS=$TEXINPUTS$path_sep$dir - ;; - *) - abs=`cd "$dir" && pwd` && TEXINPUTS=$TEXINPUTS$path_sep$abs - ;; - esac - done - set x $INDEXSTYLE; shift - INDEXSTYLE=. - for dir - do - case $dir in - EMPTY) - INDEXSTYLE=$INDEXSTYLE$path_sep - ;; - [\\/]* | ?:[\\/]*) # Absolute paths don't need to be expansed. - INDEXSTYLE=$INDEXSTYLE$path_sep$dir - ;; - *) - abs=`cd "$dir" && pwd` && INDEXSTYLE=$INDEXSTYLE$path_sep$abs - ;; - esac - done - IFS=$save_IFS - - # If the user explicitly specified the language, use that. - # Otherwise, if the first line is \input texinfo, assume it's texinfo. - # Otherwise, guess from the file extension. - if test -n "$set_language"; then - language=$set_language - elif sed 1q "$command_line_filename" | grep 'input texinfo' >/dev/null; then - language=texinfo + # Compute the output file name. + if test x"$oname" != x; then + out_name=$oname else - language= + out_name=$in_noext.`out_lang_ext` + fi + out_dir=`func_dirname "$out_name"` + out_dir_abs=`absolute "$out_dir"` + out_base=`basename "$out_name"` + out_noext=`noext "$out_base"` +} + + +## -------------- ## +## TeXify files. ## +## -------------- ## + +for command_line_filename +do + verbose "Processing $command_line_filename ..." + + input_file_name_decode + + # `texinfo' or `latex'? + in_lang=`compute_language "$command_line_filename"` + + # An auxiliary directory used for all the auxiliary tasks involved + # in compiling this document. + case $build_dir in + '' | . ) t2ddir=$out_noext.t2d ;; + *) # Avoid collisions between multiple occurrences of the same + # file, so depend on the output path. Remove leading `./', + # at least to avoid creating a file starting with `.!', i.e., + # an invisible file. The sed expression is fragile if the cwd + # has active characters. Transform / into ! so that we don't + # need `mkdir -p'. It might be something to reconsider. + t2ddir=$build_dir/`echo "$out_dir_abs/$out_noext.t2d" | + $SED "s,^$orig_pwd/,,;s,^\./,,;s,/,!,g"` + esac + # Remove it at exit if clean mode. + trap "cleanup" 0 1 2 15 + + ensure_dir "$build_dir" "$t2ddir" + + # We will change directory, better work with an absolute path... + t2ddir=`absolute "$t2ddir"` + # Sometimes there are incompatibilities between auxiliary files for + # DVI and PDF. The contents can also change whether we work on PDF + # and/or DVI. So keep separate spaces for each. + workdir=$t2ddir/`out_lang_tex` + ensure_dir "$workdir" + + # _build. In a tidy build, where the auxiliary files are output. + if $tidy; then + work_build=$workdir/build + else + work_build=. fi - # Get the type of the file (latex or texinfo) from the given language - # we just guessed, or from the file extension if not set yet. - case ${language:-$filename_ext} in - [lL]a[tT]e[xX] | *.ltx | *.tex) - # Assume a LaTeX file. LaTeX needs bibtex and uses latex for - # compilation. No makeinfo. - bibtex=${BIBTEX:-bibtex} - makeinfo= # no point in running makeinfo on latex source. - texindex=${MAKEINDEX:-makeindex} - if test $oformat = dvi; then - tex=${LATEX:-latex} - else - tex=${PDFLATEX:-pdflatex} - fi + # _bak. Copies of the previous auxiliary files (another round is + # run if they differ from the new ones). + work_bak=$workdir/bak + + # Make those directories. + ensure_dir "$work_build" "$work_bak" + + case $action in + compile) + # Compile the document. + compile + cleanup ;; - *) - # Assume a Texinfo file. Texinfo files need makeinfo, texindex and tex. - bibtex= - texindex=${TEXINDEX:-texindex} - if test $oformat = dvi; then - tex=${TEX:-tex} - else - tex=${PDFTEX:-pdftex} - fi - # Unless required by the user, makeinfo expansion is wanted only - # if texinfo.tex is too old. - if test "$expand" = t; then - makeinfo=${MAKEINFO:-makeinfo} - else - # Check if texinfo.tex performs macro expansion by looking for - # its version. The version is a date of the form YEAR-MO-DA. - # We don't need to use [0-9] to match the digits since anyway - # the comparison with $txiprereq, a number, will fail with non - # digits. - txiversion_tex=txiversion.tex - echo '\input texinfo.tex @bye' >$tmpdir/$txiversion_tex - # Run in the tmpdir to avoid leaving files. - eval `cd $tmpdir >/dev/null && - $tex $txiversion_tex 2>/dev/null | - sed -n 's/^.*\[\(.*\)version \(....\)-\(..\)-\(..\).*$/txiformat=\1 txiversion="\2\3\4"/p'` - $verbose "texinfo.tex preloaded as \`$txiformat', version is \`$txiversion' ..." - if test "$txiprereq" -le "$txiversion" >/dev/null 2>&1; then - makeinfo= - else - makeinfo=${MAKEINFO:-makeinfo} - fi - # As long as we had to run TeX, offer the user this convenience - if test "$txiformat" = Texinfo; then - escape=@ - fi - fi + mostly-clean) + mostly_clean ;; esac - - # Expand macro commands in the original source file using Makeinfo. - # Always use `end' footnote style, since the `separate' style - # generates different output (arguably this is a bug in -E). - # Discard main info output, the user asked to run TeX, not makeinfo. - if test -n "$makeinfo"; then - $verbose "Macro-expanding $command_line_filename to $filename_src ..." - sed -f $comment_iftex_sed "$command_line_filename" \ - | $makeinfo --footnote-style=end -I "$filename_dir" $miincludes \ - -o /dev/null --macro-expand=- \ - | sed -f $uncomment_iftex_sed >"$filename_src" - filename_input=$filename_src - fi - - # If makeinfo failed (or was not even run), use the original file as input. - if test $? -ne 0 \ - || test ! -r "$filename_src"; then - $verbose "Reverting to $command_line_filename ..." - filename_input=$filename_dir/$filename_ext - fi - - # Used most commonly for @finalout, @smallbook, etc. - if test -n "$textra"; then - $verbose "Inserting extra commands: $textra" - sed '/^@setfilename/a\ -'"$textra" "$filename_input" >$filename_xtr - filename_input=$filename_xtr - fi - - # If clean mode was specified, then move to the temporary directory. - if test "$clean" = t; then - $verbose "cd $tmpdir_src" - cd "$tmpdir_src" || exit 1 - fi - - while :; do # will break out of loop below - orig_xref_files=`$get_xref_files "$filename_noext"` - - # Save copies of originals for later comparison. - if test -n "$orig_xref_files"; then - $verbose "Backing up xref files: `echo $orig_xref_files | sed 's|\./||g'`" - cp $orig_xref_files $tmpdir_bak - fi - - # Run bibtex on current file. - # - If its input (AUX) exists. - # - If AUX contains both `\bibdata' and `\bibstyle'. - # - If some citations are missing (LOG contains `Citation'). - # or the LOG complains of a missing .bbl - # - # We run bibtex first, because I can see reasons for the indexes - # to change after bibtex is run, but I see no reason for the - # converse. - # - # Don't try to be too smart. Running bibtex only if the bbl file - # exists and is older than the LaTeX file is wrong, since the - # document might include files that have changed. Because there - # can be several AUX (if there are \include's), but a single LOG, - # looking for missing citations in LOG is easier, though we take - # the risk to match false messages. - if test -n "$bibtex" \ - && test -r "$filename_noext.aux" \ - && test -r "$filename_noext.log" \ - && (grep '^\\bibdata[{]' "$filename_noext.aux" \ - && grep '^\\bibstyle[{]' "$filename_noext.aux" \ - && (grep 'Warning:.*Citation.*undefined' "$filename_noext.log" \ - || grep 'No file .*\.bbl\.' "$filename_noext.log")) \ - >/dev/null 2>&1; \ - then - $verbose "Running $bibtex $filename_noext ..." - if $bibtex "$filename_noext" >&5; then :; else - echo "$0: $bibtex exited with bad status, quitting." >&2 - exit 1 - fi - fi - - # What we'll run texindex on -- exclude non-index files. - # Since we know index files are last, it is correct to remove everything - # before .aux and .?o?. But don't really do o - # -- don't match whitespace as . - # Otherwise, if orig_xref_files contains something like - # foo.xo foo.whatever - # the space after the o will get matched. - index_files=`echo "$orig_xref_files" \ - | sed "s!.*\.aux!!g; - s!./$filename_noext\.[^ ]o[^ ]!!g; - s/^[ ]*//;s/[ ]*$//"` - # Run texindex (or makeindex) on current index files. If they - # already exist, and after running TeX a first time the index - # files don't change, then there's no reason to run TeX again. - # But we won't know that if the index files are out of date or - # nonexistent. - if test -n "$texindex" && test -n "$index_files"; then - $verbose "Running $texindex $index_files ..." - if $texindex $index_files 2>&5 1>&2; then :; else - echo "$0: $texindex exited with bad status, quitting." >&2 - exit 1 - fi - fi - - # Finally, run TeX. - # Prevent $ESCAPE from being interpreted by the shell if it happens - # to be `/'. - $batch tex_args="\\${escape}nonstopmode\ \\${escape}input" - cmd="$tex $tex_args $filename_input" - $verbose "Running $cmd ..." - if $cmd >&5; then :; else - echo "$0: $tex exited with bad status, quitting." >&2 - echo "$0: see $filename_noext.log for errors." >&2 - test "$clean" = t \ - && cp "$filename_noext.log" "$orig_pwd" - exit 1 - fi - - - # Decide if looping again is needed. - finished=t - - # LaTeX (and the package changebar) report in the LOG file if it - # should be rerun. This is needed for files included from - # subdirs, since texi2dvi does not try to compare xref files in - # subdirs. Performing xref files test is still good since LaTeX - # does not report changes in xref files. - if grep "Rerun to get" "$filename_noext.log" >/dev/null 2>&1; then - finished= - fi - - # Check if xref files changed. - new_xref_files=`$get_xref_files "$filename_noext"` - $verbose "Original xref files = `echo $orig_xref_files | sed 's|\./||g'`" - $verbose "New xref files = `echo $new_xref_files | sed 's|\./||g'`" - - # If old and new lists don't at least have the same file list, - # then one file or another has definitely changed. - test "x$orig_xref_files" != "x$new_xref_files" && finished= - - # File list is the same. We must compare each file until we find - # a difference. - if test -n "$finished"; then - for this_file in $new_xref_files; do - $verbose "Comparing xref file `echo $this_file | sed 's|\./||g'` ..." - # cmp -s returns nonzero exit status if files differ. - if cmp -s "$this_file" "$tmpdir_bak/$this_file"; then :; else - # We only need to keep comparing until we find one that - # differs, because we'll have to run texindex & tex again no - # matter how many more there might be. - finished= - $verbose "xref file `echo $this_file | sed 's|\./||g'` differed ..." - test "$debug" = t && diff -c "$tmpdir_bak/$this_file" "$this_file" - break - fi - done - fi - - # If finished, exit the loop, else rerun the loop. - test -n "$finished" && break - done - - # If we were in clean mode, compilation was in a tmp directory. - # Copy the DVI (or PDF) file into the directory where the compilation - # has been done. (The temp dir is about to get removed anyway.) - # We also return to the original directory so that - # - the next file is processed in correct conditions - # - the temporary file can be removed - if test -n "$clean"; then - if test -n "$oname"; then - dest=$oname - else - dest=$orig_pwd - fi - $verbose "Copying $oformat file from `pwd` to $dest" - cp -p "./$filename_noext.$oformat" "$dest" - cd / # in case $orig_pwd is on a different drive (for DOS) - cd $orig_pwd || exit 1 - fi - - # Remove temporary files. - if test "x$debug" = "x"; then - $verbose "Removing $tmpdir_src $tmpdir_xtr $tmpdir_bak ..." - cd / - rm -rf $tmpdir_src $tmpdir_xtr $tmpdir_bak - fi done -$verbose "$0 done." +verbose "done." exit 0 # exit successfully, not however we ended the loop. diff --git a/support/xcase.c b/support/xcase.c index 6796e06..527840d 100644 --- a/support/xcase.c +++ b/support/xcase.c @@ -36,6 +36,8 @@ extern int errno; #endif +extern int optind; + #define LOWER 1 #define UPPER 2 diff --git a/syntax.h b/syntax.h index e01110e..9a9a2fa 100644 --- a/syntax.h +++ b/syntax.h @@ -75,6 +75,8 @@ extern int sh_syntabsiz; #define shellblank(c) (sh_syntaxtab[(unsigned char)(c)] & CBLANK) +#define parserblank(c) ((c) == ' ' || (c) == '\t') + #define issyntype(c, t) ((sh_syntaxtab[(unsigned char)(c)] & (t)) != 0) #define notsyntype(c,t) ((sh_syntaxtab[(unsigned char)(c)] & (t)) == 0) diff --git a/test.c b/test.c index ab7bec7..ee63420 100644 --- a/test.c +++ b/test.c @@ -101,7 +101,7 @@ extern int errno; static procenv_t test_exit_buf; static int test_error_return; #define test_exit(val) \ - do { test_error_return = val; longjmp (test_exit_buf, 1); } while (0) + do { test_error_return = val; sh_longjmp (test_exit_buf, 1); } while (0) extern int sh_stat __P((const char *, struct stat *)); @@ -225,6 +225,7 @@ and () * '-'('G'|'L'|'O'|'S'|'N') filename * '-t' [int] * '-'('z'|'n') string + * '-'('v'|'R') varname * '-o' option * string * string ('!='|'='|'==') string @@ -623,7 +624,7 @@ unary_test (op, arg) case 'v': v = find_variable (arg); #if defined (ARRAY_VARS) - if (v == 0 && valid_array_reference (arg)) + if (v == 0 && valid_array_reference (arg, 0)) { char *t; t = array_value (arg, 0, 0, (int *)0, (arrayind_t *)0); @@ -822,6 +823,13 @@ posixtest () value = !three_arguments (); break; } + else if (argv[pos][0] == '(' && argv[pos][1] == '\0' && argv[argc-1][0] == ')' && argv[argc-1][1] == '\0') + { + advance (1); + value = two_arguments (); + pos = argc; + break; + } /* FALLTHROUGH */ default: value = expr (); diff --git a/tests/alias.right b/tests/alias.right index a37080c..cab07a9 100644 --- a/tests/alias.right +++ b/tests/alias.right @@ -10,3 +10,11 @@ OK OK OK OK +one +two +three +four +one +two +three +four diff --git a/tests/alias.tests b/tests/alias.tests index a97d5ff..d1ba97b 100644 --- a/tests/alias.tests +++ b/tests/alias.tests @@ -37,3 +37,4 @@ foo bar unalias foo bar baz ${THIS_SH} ./alias1.sub +${THIS_SH} ./alias2.sub diff --git a/tests/alias2.sub b/tests/alias2.sub new file mode 100644 index 0000000..7604448 --- /dev/null +++ b/tests/alias2.sub @@ -0,0 +1,22 @@ +THIS=alias2 +FN=$TMPDIR/$THIS.script + +cat > $FN <<'EOF' +# +(echo "$1") +EOF +chmod u+x $FN + +shopt -s expand_aliases + +alias foo1='$FN one; source $FN two; source $FN three; $FN four' + +alias foo2='$FN one +source $FN two +source $FN three +$FN four' + +foo1 +foo2 + +rm -f $FN diff --git a/tests/appendop.right b/tests/appendop.right index 9c86792..f9609f8 100644 --- a/tests/appendop.right +++ b/tests/appendop.right @@ -16,11 +16,11 @@ 9 16 ./appendop.tests: line 84: x: readonly variable -declare -A foo='([one]="bar" [two]="baz" [three]="quux" )' -declare -A foo='([one]="bar" [two]="baz" [0]="zero" [three]="quux" )' -declare -A foo='([four]="four" [one]="bar" [two]="baz" [0]="zero" [three]="quux" )' -declare -ai iarr='([0]="3" [1]="2" [2]="3")' -declare -ai iarr='([0]="3" [1]="2" [2]="3" [3]="4" [4]="5" [5]="6")' +declare -A foo=([two]="baz" [three]="quux" [one]="bar" ) +declare -A foo=([two]="baz" [0]="zero" [three]="quux" [one]="bar" ) +declare -A foo=([two]="baz" [0]="zero" [three]="quux" [four]="four" [one]="bar" ) +declare -ai iarr=([0]="3" [1]="2" [2]="3") +declare -ai iarr=([0]="3" [1]="2" [2]="3" [3]="4" [4]="5" [5]="6") 25 25 7 7 14 diff --git a/tests/arith.right b/tests/arith.right index 680d9a9..13c8c71 100644 --- a/tests/arith.right +++ b/tests/arith.right @@ -141,6 +141,8 @@ ok -7 7 7 +2 +2 ./arith1.sub: line 2: 4-- : syntax error: operand expected (error token is "- ") ./arith1.sub: line 3: 4++ : syntax error: operand expected (error token is "+ ") ./arith1.sub: line 4: 4 -- : syntax error: operand expected (error token is "- ") @@ -234,14 +236,20 @@ ok 0 0, 0 0, 1 +efg +e +efg +e +abcdefg +efg 8 12 -./arith.tests: line 286: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ") -./arith.tests: line 290: a b: syntax error in expression (error token is "b") -./arith.tests: line 291: ((: a b: syntax error in expression (error token is "b") +./arith.tests: line 294: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ") +./arith.tests: line 298: a b: syntax error in expression (error token is "b") +./arith.tests: line 299: ((: a b: syntax error in expression (error token is "b") 42 42 42 42 42 42 -./arith.tests: line 302: b[c]d: syntax error in expression (error token is "d") +./arith.tests: line 310: b[c]d: syntax error in expression (error token is "d") diff --git a/tests/arith.tests b/tests/arith.tests index 7dcc36d..79ce016 100644 --- a/tests/arith.tests +++ b/tests/arith.tests @@ -260,6 +260,10 @@ echo $(( -7 )) echo $(( ++7 )) echo $(( --7 )) +# combinations of expansions +echo $(( "`echo 1+1`" )) +echo $(( `echo 1+1` )) + ${THIS_SH} ./arith1.sub ${THIS_SH} ./arith2.sub ${THIS_SH} ./arith3.sub @@ -275,6 +279,10 @@ ${THIS_SH} ./arith5.sub # problems with suppressing evaluation present through bash-4.2 ${THIS_SH} ./arith6.sub +# problems with parsing arithmetic expressions containing colons that are +# part of word expansions such as substring extraction +${THIS_SH} ./arith7.sub + x=4 y=7 diff --git a/tests/arith7.sub b/tests/arith7.sub new file mode 100644 index 0000000..1b73ba7 --- /dev/null +++ b/tests/arith7.sub @@ -0,0 +1,11 @@ +PARAM=abcdefg + +echo ${PARAM:1 ? 4 : 2} +echo ${PARAM:1 ? 4 : 2:1} + +echo ${PARAM: 4<5 ? 4 : 2} +echo ${PARAM: 5>4 ? 4 : 2:1} + +echo ${PARAM:${OFFSET:-0}} +OFFSET=4 +echo ${PARAM:${OFFSET:-0}} diff --git a/tests/array.right b/tests/array.right index 0307d6b..031a0b7 100644 --- a/tests/array.right +++ b/tests/array.right @@ -6,15 +6,15 @@ abcde abcde abcde bdef abcde bdef -declare -a BASH_ARGC='()' -declare -a BASH_ARGV='()' -declare -a BASH_LINENO='([0]="0")' -declare -a BASH_SOURCE='([0]="./array.tests")' -declare -a DIRSTACK='()' -declare -a FUNCNAME='([0]="main")' -declare -a a='([0]="abcde" [1]="" [2]="bdef")' -declare -a b='()' -declare -ar c='()' +declare -a BASH_ARGC=() +declare -a BASH_ARGV=() +declare -a BASH_LINENO=([0]="0") +declare -a BASH_SOURCE=([0]="./array.tests") +declare -a DIRSTACK=() +declare -a FUNCNAME +declare -a a=([0]="abcde" [1]="" [2]="bdef") +declare -a b +declare -ar c abcde bdef abcde bdef abcde @@ -27,25 +27,25 @@ hello world 3 bdef hello world test expression test 2 ./array.tests: line 76: readonly: `a[5]': not a valid identifier -declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")' -declare -ar c='()' -declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")' -declare -ar c='()' -readonly -a a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")' -readonly -a c='()' +declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2") +declare -ar c +declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2") +declare -ar c +readonly -a a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2") +readonly -a c a test -declare -a BASH_ARGC='()' -declare -a BASH_ARGV='()' -declare -a BASH_LINENO='([0]="0")' -declare -a BASH_SOURCE='([0]="./array.tests")' -declare -a DIRSTACK='()' -declare -a FUNCNAME='([0]="main")' -declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")' -declare -a b='([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")' -declare -ar c='()' -declare -a d='([1]="" [2]="bdef" [5]="hello world" [6]="test" [9]="ninth element")' -declare -a e='([0]="test")' -declare -a f='([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")' +declare -a BASH_ARGC=() +declare -a BASH_ARGV=() +declare -a BASH_LINENO=([0]="0") +declare -a BASH_SOURCE=([0]="./array.tests") +declare -a DIRSTACK=() +declare -a FUNCNAME +declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2") +declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd") +declare -ar c +declare -a d=([1]="" [2]="bdef" [5]="hello world" [6]="test" [9]="ninth element") +declare -a e=([0]="test") +declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element") ./array.tests: line 100: a: readonly variable ./array.tests: line 102: b[]: bad array subscript ./array.tests: line 103: b[*]: bad array subscript @@ -57,35 +57,35 @@ declare -a f='([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element ./array.tests: line 111: []=abcde: bad array subscript ./array.tests: line 111: [*]=last: cannot assign to non-numeric index ./array.tests: line 111: [-65]=negative: bad array subscript -declare -a BASH_ARGC='()' -declare -a BASH_ARGV='()' -declare -a BASH_LINENO='([0]="0")' -declare -a BASH_SOURCE='([0]="./array.tests")' -declare -a DIRSTACK='()' -declare -a FUNCNAME='([0]="main")' -declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")' -declare -a b='([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")' -declare -ar c='()' -declare -a d='([1]="test test")' -declare -a f='([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")' +declare -a BASH_ARGC=() +declare -a BASH_ARGV=() +declare -a BASH_LINENO=([0]="0") +declare -a BASH_SOURCE=([0]="./array.tests") +declare -a DIRSTACK=() +declare -a FUNCNAME +declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2") +declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd") +declare -ar c +declare -a d=([1]="test test") +declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element") ./array.tests: line 119: unset: ps1: not an array variable ./array.tests: line 123: declare: c: cannot destroy array variables in this way this of this is a test of read using arrays this test this is a test of arrays -declare -a BASH_ARGC='()' -declare -a BASH_ARGV='()' -declare -a BASH_LINENO='([0]="0")' -declare -a BASH_SOURCE='([0]="./array.tests")' -declare -a DIRSTACK='()' -declare -a FUNCNAME='([0]="main")' -declare -ar a='([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")' -declare -a b='([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")' -declare -ar c='()' -declare -a d='([1]="test test")' -declare -a f='([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")' -declare -a rv='([0]="this" [1]="is" [2]="a" [3]="test" [4]="of" [5]="read" [6]="using" [7]="arrays")' +declare -a BASH_ARGC=() +declare -a BASH_ARGV=() +declare -a BASH_LINENO=([0]="0") +declare -a BASH_SOURCE=([0]="./array.tests") +declare -a DIRSTACK=() +declare -a FUNCNAME +declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2") +declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd") +declare -ar c +declare -a d=([1]="test test") +declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element") +declare -a rv=([0]="this" [1]="is" [2]="a" [3]="test" [4]="of" [5]="read" [6]="using" [7]="arrays") abde abde bbb @@ -351,8 +351,8 @@ version[agent] version.agent version[agent] foo[bar] version.agent bowl -foobar] foo foo[bar] -bleh bbb bleh +foo foobar] foo[bar] +bbb bleh bleh ab] bar 1 @@ -364,22 +364,22 @@ bar main main function function function function -declare -a x='([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5")' -declare -a x='([0]="0" [1]="1" [2]="2" [3]="3" [4]="4")' -declare -a x='([0]="0" [1]="1" [2]="2" [4]="4")' -./array14.sub: line 11: [-10]: bad array subscript -declare -a x='([0]="0" [1]="1" [2]="2" [3]="3" [4]="4")' -declare -a x='([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="five")' -declare -a x='([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5")' -declare -a x='([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5foo")' -declare -a x='([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5")' -declare -a x='([0]="0" [1]="1" [2]="2" [3]="3" [4]="4four" [5]="5")' +declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5") +declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4") +declare -a x=([0]="0" [1]="1" [2]="2" [4]="4") +./array14.sub: line 11: unset: [-10]: bad array subscript +declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4") +declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="five") +declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5") +declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="foo") +declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="5") +declare -a x=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4four" [5]="5") strlen(4four) = 5 -1 2 xx 3 1 2 0 3 -1 2 xx 3 1 2 0 3 -1 2 xx 3 +1 2 0 3 +1 2 0 3 +1 2 0 3 foo index 1: ok foo index 2: ok foo: implicit reference to element 0: ok @@ -388,3 +388,117 @@ bar: array with element zero unset: ok bar: element zero: ok qux: unset array: ok qux: unset array element 0: ok +2 +2 +2 +2 +0 +0 +1 +2 +0 +0 +3 +3 +0 +0 +zero +zero +one +one +one +one +two +two +./array17.sub: line 76: ~ : syntax error: operand expected (error token is "~ ") +1 +argv[1] = <> +argv[2] = <> +argv[3] = <> +argv[1] = +argv[1] = <--> +argv[1] = <> +argv[1] = +argv[1] = <-> +argv[2] = <-> +argv[1] = < > +argv[1] = <> +argv[2] = <> +argv[3] = <> +argv[1] = +argv[1] = <--> +argv[1] = <> +argv[1] = +argv[1] = <-> +argv[2] = <-> +argv[1] = < > +declare -a foo=([0]="( zeroind )") +declare -a foo=([0]="zeroind") +declare -a foo=([0]="zeroind") +declare -a foo=([0]="[0]=bar") +declare -a foo=([0]="[0]=bar") +declare -a foo=([0]="[0]=bar") +declare -- a="(1 2 3)" +declare -a a=([0]="1" [1]="2" [2]="3") +./array19.sub: line 46: a: 1: must use subscript when assigning associative array +./array19.sub: line 46: a: 2: must use subscript when assigning associative array +./array19.sub: line 46: a: 3: must use subscript when assigning associative array +declare -A a=() +declare -- a="([0]=a [1]=b)" +declare -a a=([0]="a" [1]="b") +declare -A a=([0]="a" [1]="b" ) +declare -a var=([0]="[\$(echo" [1]="total" [2]="0)]=1" [3]="[2]=2]") +declare -a var=([0]="[\$(echo total 0)]=1 [2]=2]") +declare -a var=([0]="[\$(echo" [1]="total" [2]="0)]=1" [3]="[2]=2]") +./array19.sub: line 81: total 0: syntax error in expression (error token is "0") +declare -a var=() +declare -al foo=([0]="abcde" [1]="two" [2]="three") +declare -al foo=([0]="abcde") +declare -al ar=([0]="one" [1]="two" [2]="three") +declare -a a=([2]="foo") +declare -a a=([2]="foo") +declare -a a=([1]="(var)" [2]="foo") +./array19.sub: line 120: warning: a[1]=(var): quoted compound array assignment deprecated +declare -a a=([1]="(var)") +declare -a a=([0]="1" [1]="2" [2]="(1 2 3)") +declare -a a=([0]="1" [1]="2" [2]="(1 2 3)") +declare -a a=([0]="1" [1]="2" [2]="3") +declare -a a=([0]="1" [1]="2" [2]="3") +declare -a a=([0]="1" [1]="2" [2]="3") +declare -- a="a b" +declare -- b="/scratch/bash" +declare -- c="(1 2)" +declare -- d="(\$a)" +declare -- e="(\$(echo Darwin))" +declare -a a=([0]="a b") +declare -a b=([0]="/scratch/bash") +declare -a c=([0]="1" [1]="2") +declare -a d=([0]="a" [1]="b") +declare -a e=([0]="Darwin") +./array19.sub: line 166: c: 1: must use subscript when assigning associative array +./array19.sub: line 166: c: 2: must use subscript when assigning associative array +./array19.sub: line 166: d: $a: must use subscript when assigning associative array +./array19.sub: line 166: e: $(echo Darwin): must use subscript when assigning associative array +declare -A a=([0]="a b" ) +declare -A b=([0]="/scratch/bash" ) +declare -A c=() +declare -A d=() +declare -A e=() +a+b+c +x+b+c +a+b+c +x+b+c +argv[1] = +argv[1] = +a b c +x b c +a b c +x b c +declare -a a=([1]="2" [2]="3" [3]="4") +abcd +unset +./array21.sub: line 17: typeset: a: not found +./array21.sub: line 20: typeset: A: not found +declare -a a=() +declare -A A=() +declare -a foo=([0]="1" [1]="(4 5 6)" [2]="3") diff --git a/tests/array.tests b/tests/array.tests index 4c17651..b105393 100644 --- a/tests/array.tests +++ b/tests/array.tests @@ -384,19 +384,16 @@ ${THIS_SH} ./array6.sub ${THIS_SH} ./array7.sub ${THIS_SH} ./array8.sub - ${THIS_SH} ./array9.sub - ${THIS_SH} ./array10.sub - ${THIS_SH} ./array11.sub - ${THIS_SH} ./array12.sub - ${THIS_SH} ./array13.sub - ${THIS_SH} ./array14.sub - ${THIS_SH} ./array15.sub - ${THIS_SH} ./array16.sub +${THIS_SH} ./array17.sub +${THIS_SH} ./array18.sub +${THIS_SH} ./array19.sub +${THIS_SH} ./array20.sub +${THIS_SH} ./array21.sub diff --git a/tests/array17.sub b/tests/array17.sub new file mode 100644 index 0000000..302dc03 --- /dev/null +++ b/tests/array17.sub @@ -0,0 +1,78 @@ +# this shows the expansions an array subscript undergoes before being run +# through the arithmetic evaluator + +b=(0 1 2 3) + +# array subscripts undergo variable expansion +a=2 +echo ${b[$a]} + +# array subscripts undergo command substitution +echo ${b[$(echo 2)]} + +c='1+1' +d='1-+1' + +# array subscripts are expanded and the expanded value is treated as an +# expression +echo ${b[$c]} +echo ${b[c]} + +echo ${b[$d]} +echo ${b[d]} + +# array subscripts undergo parameter expansion +set -- 1 2 3 +echo ${b[$1]} + +# array subscripts undergo tilde expansion +HOME=2 +echo ${b[~]} + +# array subscripts undergo word splitting -- bug in bash versions through 4.3 + +x='b[$d]' +IFS=- +echo $((x)) +IFS=$' \t\n' + +set -- 1 + 2 + +x='d' +IFS=- +echo $((x)) +IFS=$' \t\n' + +# start of quoting tests; make sure that subscript is treated as double +# quoted (inhibits word splitting) but that double quotes are silently +# discarded through quote removal + +echo $(( $@ )) +echo "$(( $@ ))" + +echo $(( "$x" )) +echo $(( "x" )) + +unset a foo bar +a=(zero one two three four five six seven eight nine ten) + +echo ${a[0]} +echo ${a["0"]} + +foo=1 +echo ${a[$foo]} +echo ${a["$foo"]} +echo ${a[foo]} +echo ${a["foo"]} + +bar=2 +echo ${a[" $bar "]} +echo ${a[" bar "]} + +# tilde expansion is performed by array subscript expansion but not by posix +# style arithmetic expansion + +HOME=2 +echo $(( ~ )) + + diff --git a/tests/array18.sub b/tests/array18.sub new file mode 100644 index 0000000..675b194 --- /dev/null +++ b/tests/array18.sub @@ -0,0 +1,34 @@ +# arrays referenced using @ subscript and positional parameters should behave +# the same way + +foo=(0 0 0); [[ -z ${foo[@]#0} ]]; echo $? + +recho "${foo[@]#0}" +bar=${foo[@]#0} +recho bar +recho $bar +recho -$bar- +recho "$bar" + +qux="${foo[@]#0}" +recho qux +recho $qux +recho -$qux- +recho "$qux" + +unset foo qux bar + +set -- 0 0 0 + +recho "${@#0}" +bar=${@#0} +recho bar +recho $bar +recho -$bar- +recho "$bar" + +qux="${@#0}" +recho qux +recho $qux +recho -$qux- +recho "$qux" diff --git a/tests/array19.sub b/tests/array19.sub new file mode 100644 index 0000000..adfad82 --- /dev/null +++ b/tests/array19.sub @@ -0,0 +1,167 @@ +# tests for changes to declare and assignment statement arguments post-bash-4.3 + +unset foo l a b + +l="( zeroind )" + +unset foo +declare -a foo +foo="$l" +declare -p foo + +unset foo +declare -a foo="$l" +declare -p foo + +unset foo +declare -a foo=$l +declare -p foo + +b='[0]=bar' + +unset foo +declare -a foo="$b" +declare -p foo + +unset foo +declare -a foo=("$b") +declare -p foo + +unset foo +declare -a foo=($b) +declare -p foo + +unset a + +declare a='(1 2 3)' +declare -p a +unset a + +declare -a a +declare a='(1 2 3)' +declare -p a +unset a + +declare -A a +declare a='(1 2 3)' +declare -p a +unset a + +declare a='([0]=a [1]=b)' +declare -p a +unset a + +declare -a a +declare a='([0]=a [1]=b)' +declare -p a +unset a + +declare -A a +declare a='([0]=a [1]=b)' +declare -p a +unset a +unset var value + +value='[$(echo total 0)]=1 [2]=2]' + +unset var +declare -a var +var=($value) +declare -p var + +unset var +declare -a var=("$value") +declare -p var + +unset var +declare -a var=($value) +declare -p var + +unset var +declare -a var="($value)" +declare -p var +unset foo value + +value="AbCdE" + +declare -a foo +foo=( one two three ) + +declare -l foo="$value" +declare -p foo + +unset foo +value='(AbCdE)' + +declare -a foo +foo=( one two three ) + +declare -l foo="$value" +declare -p foo +unset ar +declare -a ar=(ONE TWO THREE) +declare -al ar=(${ar[@]}) +declare -p ar +unset a + +declare -a a +a[2]=foo +declare -p a + +unset a +declare -a a +declare a[2]=foo +declare -p a + +declare a[1]='(var)' +declare -p a + +unset a +declare a[1]='(var)' +declare -p a +unset a + +a=(1 2 3) +a[2]='(1 2 3)' + +declare -p a + +unset a +a=(1 2 3) +declare a[2]='(1 2 3)' + +declare -p a + +unset a +a=(1 2 3) +declare a='(1 2 3)' + +declare -p a + +unset a +a=(1 2 3) +declare 'a=(1 2 3)' + +declare -p a + +unset a +declare -a a='(1 2 3)' + +declare -p a +unset a b c d e x y + +HOME=/scratch/bash +x='a b' +y='($(echo Darwin))' + +declare a=$x b=~ c='(1 2)' d='($a)' e=$y + +declare -p a b c d e + +unset a b c d e +declare -a a=$x b=~ c='(1 2)' d='($a)' e=$y +declare -p a b c d e + +unset a b c d e +declare -A a=$x b=~ c='(1 2)' d='($a)' e=$y +declare -p a b c d e diff --git a/tests/array20.sub b/tests/array20.sub new file mode 100644 index 0000000..035d936 --- /dev/null +++ b/tests/array20.sub @@ -0,0 +1,34 @@ +# tests to make sure that $* and ${array[*]} expand consistently in `list' +# and `scalar' contexts + +arr=(a b c) +IFS=+ + +# these two should both expand to `+' separated strings +a=${arr[*]} ; echo "$a" +b=${arr[*]/a/x}; echo "$b" + +set -- a b c + +# these two should both expand to `+' separated strings +a=${*} ; echo "$a" +b=${*/a/x}; echo "$b" + +# these two should both expand to `+' separated strings and it should handle +# characters in IFS as chars in the string +unset a b + +set -- 'a+b' 'c+d' 'e+f' +a=${*} ; recho "$a" +b=${*/a/x}; recho "$b" + +# now let's make sure that @ always uses space separators even in contexts +# where we don't do word splitting +set -- a b c +a=${@} ; echo "$a" +b=${@/a/x}; echo "$b" + +unset a b + +a=${arr[@]} ; echo "$a" +b=${arr[@]/a/x}; echo "$b" diff --git a/tests/array21.sub b/tests/array21.sub new file mode 100644 index 0000000..d1f705e --- /dev/null +++ b/tests/array21.sub @@ -0,0 +1,37 @@ +typeset -a a +a=(1 2 3 4) + +typeset -A A +A=([one]=1 [two]=2 [three]=3 [four]=4) + +unset 'a[0]' +typeset -p a + +scalar=abcd +echo ${scalar[0]} + +unset 'scalar[0]' +echo ${scalar-unset} + +unset 'a[@]' +typeset -p a + +unset 'A[@]' +typeset -p A + +typeset -a a +a=(1 2 3 4) +typeset -A A +A=([one]=1 [two]=2 [three]=3 [four]=4) + +# supported, recommended way to unset all array elements +a=() +typeset -p a +A=() +typeset -p A + +declare -a foo +declare foo='(1 2 3)' +declare foo[1]='(4 5 6)' + +declare -p foo diff --git a/tests/assoc.right b/tests/assoc.right index b9fd001..0a6951d 100644 --- a/tests/assoc.right +++ b/tests/assoc.right @@ -1,23 +1,24 @@ -declare -A BASH_ALIASES='()' -declare -A BASH_CMDS='()' -declare -A fluff='()' -declare -A BASH_ALIASES='()' -declare -A BASH_CMDS='()' -declare -A fluff='([bar]="two" [foo]="one" )' -declare -A fluff='([bar]="two" [foo]="one" )' -declare -A fluff='([bar]="two" )' -declare -A fluff='([bar]="newval" [qux]="assigned" )' +declare -A BASH_ALIASES=() +declare -A BASH_CMDS=() +declare -A fluff +declare -A BASH_ALIASES=() +declare -A BASH_CMDS=() +declare -A fluff=([bar]="two" [foo]="one" ) +declare -A fluff=([bar]="two" [foo]="one" ) +declare -A fluff=([bar]="two" ) +declare -A fluff=([bar]="newval" [qux]="assigned" ) ./assoc.tests: line 26: chaff: four: must use subscript when assigning associative array -declare -A BASH_ALIASES='()' -declare -A BASH_CMDS='()' -declare -Ai chaff='([one]="10" [zero]="5" )' -declare -Ar waste='([version]="4.0-devel" [source]="./assoc.tests" [lineno]="28" [pid]="42134" )' -declare -A wheat='([one]="a" [zero]="0" [two]="b" [three]="c" )' -declare -A chaff='([one]="10" ["hello world"]="flip" [zero]="5" )' -./assoc.tests: line 38: unset: waste: cannot unset: readonly variable -./assoc.tests: line 39: chaff[*]: bad array subscript -./assoc.tests: line 40: [*]=12: invalid associative array key -declare -A chaff='([one]="a" ["hello world"]="flip" )' +declare -A BASH_ALIASES=() +declare -A BASH_CMDS=() +declare -Ai chaff=([one]="10" [zero]="5" ) +declare -Ar waste=([version]="4.0-devel" [source]="./assoc.tests" [lineno]="28" [pid]="42134" ) +declare -A wheat=([two]="b" [three]="c" [one]="a" [zero]="0" ) +declare -A chaff=([one]="10" ["hello world"]="flip" [zero]="5" ) +./assoc.tests: line 38: waste: readonly variable +./assoc.tests: line 39: unset: waste: cannot unset: readonly variable +./assoc.tests: line 40: chaff[*]: bad array subscript +./assoc.tests: line 41: [*]=12: invalid associative array key +declare -A chaff=([one]="a" ["hello world"]="flip" ) flip argv[1] = argv[2] = @@ -31,14 +32,14 @@ argv[2] = argv[3] = argv[4] = argv[1] = -./assoc.tests: line 57: declare: chaff: cannot destroy array variables in this way -./assoc.tests: line 59: chaff[*]: bad array subscript -./assoc.tests: line 60: [*]=12: invalid associative array key -declare -A wheat='([six]="6" ["foo bar"]="qux qix" )' +./assoc.tests: line 58: declare: chaff: cannot destroy array variables in this way +./assoc.tests: line 60: chaff[*]: bad array subscript +./assoc.tests: line 61: [*]=12: invalid associative array key +declare -A wheat=([six]="6" ["foo bar"]="qux qix" ) argv[1] = argv[2] = argv[1] = -declare -A wheat='([six]="6" ["foo bar"]="qux qix" )' +declare -A wheat=([six]="6" ["foo bar"]="qux qix" ) argv[1] = <2> argv[1] = <7> argv[1] = @@ -47,16 +48,16 @@ argv[3] = argv[1] = argv[1] = <16> argv[1] = <16> -argv[1] = -argv[2] = <6> +argv[1] = <6> +argv[2] = argv[1] = argv[2] = argv[3] = argv[1] = argv[2] = 8 -/usr/local/bin . /bin /sbin /usr/sbin /usr/bin /bin /usr/ucb -bin . bin sbin sbin bin bin ucb +. /sbin /usr/bin /bin /usr/ucb /usr/local/bin /bin /usr/sbin +. sbin bin bin ucb bin bin sbin bin / / / / / / / / @@ -65,16 +66,16 @@ argv[1] = argv[1] = argv[1] = 8 -/usr/local/bin . /bin /sbin /usr/sbin /usr/bin /bin /usr/ucb -bin . bin sbin sbin bin bin ucb +. /sbin /usr/bin /bin /usr/ucb /usr/local/bin /bin /usr/sbin +. sbin bin bin ucb bin bin sbin / / / / / / / 8 4 -- /bin -^usr^local^bin . ^bin ^sbin ^usr^sbin ^usr^bin ^bin ^usr^ucb -^usr^local^bin . ^bin ^sbin ^usr^sbin ^usr^bin ^bin ^usr^ucb -\usr/local/bin . \bin \sbin \usr/sbin \usr/bin \bin \usr/ucb -\usr\local\bin . \bin \sbin \usr\sbin \usr\bin \bin \usr\ucb -\usr\local\bin . \bin \sbin \usr\sbin \usr\bin \bin \usr\ucb +. ^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin ^bin ^usr^sbin +. ^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin ^bin ^usr^sbin +. \sbin \usr/bin \bin \usr/ucb \usr/local/bin \bin \usr/sbin +. \sbin \usr\bin \bin \usr\ucb \usr\local\bin \bin \usr\sbin +. \sbin \usr\bin \bin \usr\ucb \usr\local\bin \bin \usr\sbin ([a]=1) qux foo @@ -87,23 +88,23 @@ hits command blat qux sh foo /sbin/blat /usr/local/bin/qux /bin/sh /usr/sbin/foo -foo qux -argv[1] = -argv[2] = -argv[3] = <-l> +qux foo +argv[1] = +argv[2] = <-l> +argv[3] = alias blat='cd /blat ; echo $PWD' alias foo='/usr/sbin/foo' alias qux='/usr/local/bin/qux -l' alias sh='/bin/bash --login -o posix' -sh foo blat qux -argv[1] = -argv[2] = -argv[3] = -argv[4] = +blat qux sh foo +argv[1] = +argv[2] = +argv[3] = +argv[4] = outside: outside -declare -A BASH_ALIASES='()' -declare -A BASH_CMDS='()' -declare -A afoo='([six]="six" ["foo bar"]="foo quux" )' +declare -A BASH_ALIASES=() +declare -A BASH_CMDS=() +declare -A afoo=([six]="six" ["foo bar"]="foo quux" ) argv[1] = argv[2] = argv[3] = @@ -137,56 +138,60 @@ abc def def ./assoc5.sub: line 13: declare: `myarray[foo[bar]=bleh': not a valid identifier -abc def bleh -myarray=(["a]a"]="abc" ["]"]="def" ["a]=test1;#a"]="123" [foo]="bleh" ) +bleh abc def +myarray=(["a]=test1;#a"]="123" [foo]="bleh" ["a]a"]="abc" ["]"]="def" ) 123 -myarray=(["a]a"]="abc" ["a]=test2;#a"]="def" ["]"]="def" ["a]=test1;#a"]="123" [foo]="bleh" ) +myarray=(["a]=test1;#a"]="123" [foo]="bleh" ["a]a"]="abc" ["a]=test2;#a"]="def" ["]"]="def" ) bar"bie doll -declare -A foo='(["bar\"bie"]="doll" )' +declare -A foo=(["bar\"bie"]="doll" ) bar"bie doll -declare -A foo='(["bar\"bie"]="doll" )' +declare -A foo=(["bar\"bie"]="doll" ) bar"bie doll -declare -A foo='(["bar\"bie"]="doll" )' +declare -A foo=(["bar\"bie"]="doll" ) bar"bie doll -declare -A foo='(["bar\"bie"]="doll" )' +declare -A foo=(["bar\"bie"]="doll" ) bar"bie doll -declare -A foo='(["bar\"bie"]="doll" )' +declare -A foo=(["bar\"bie"]="doll" ) bar'bie doll -declare -A foo='(["bar'\''bie"]="doll" )' +declare -A foo=(["bar'bie"]="doll" ) bar'bie doll -declare -A foo='(["bar'\''bie"]="doll" )' +declare -A foo=(["bar'bie"]="doll" ) bar'bie doll -declare -A foo='(["bar'\''bie"]="doll" )' +declare -A foo=(["bar'bie"]="doll" ) bar'bie doll -declare -A foo='(["bar'\''bie"]="doll" )' +declare -A foo=(["bar'bie"]="doll" ) bar'bie doll -declare -A foo='(["bar'\''bie"]="doll" )' +declare -A foo=(["bar'bie"]="doll" ) bar$bie doll -declare -A foo='(["bar\$bie"]="doll" )' +declare -A foo=(["bar\$bie"]="doll" ) bar[bie doll -declare -A foo='(["bar[bie"]="doll" )' +declare -A foo=(["bar[bie"]="doll" ) bar`bie doll -declare -A foo='(["bar\`bie"]="doll" )' +declare -A foo=(["bar\`bie"]="doll" ) bar\]bie doll -declare -A foo='(["bar\\]bie"]="doll" )' +declare -A foo=(["bar\\]bie"]="doll" ) bar${foo}bie doll -declare -A foo='(["bar\${foo}bie"]="doll" )' +declare -A foo=(["bar\${foo}bie"]="doll" ) bar after printf after use: 0 +declare -A assoc=([0]="assoc" ) +assoc +declare -A assoc=([two]="twoless" [three]="three" [one]="onemore" ) +declare -Ar assoc=([two]="twoless" [three]="three" [one]="onemore" ) diff --git a/tests/assoc.tests b/tests/assoc.tests index c3fb18e..32536b8 100644 --- a/tests/assoc.tests +++ b/tests/assoc.tests @@ -35,6 +35,7 @@ chaff[hello world]=flip declare -p chaff # TEST - errors +waste[stuff]=other unset waste chaff[*]=12 chaff=( [one]=a [*]=12 ) @@ -186,3 +187,23 @@ ${THIS_SH} ./assoc5.sub ${THIS_SH} ./assoc6.sub ${THIS_SH} ./assoc7.sub + +# test converting between scalars and assoc arrays +unset assoc +assoc=assoc +declare -A assoc +declare -p assoc +echo ${assoc[@]} + +# weird syntax required to append to multiple existing array elements using +# compound assignment syntax +unset assoc +declare -A assoc +assoc=( [one]=one [two]=two [three]=three ) +assoc+=( [one]+=more [two]+=less ) +declare -p assoc + +readonly -A assoc +declare -p assoc + +${THIS_SH} ./assoc8.sub diff --git a/tests/assoc8.sub b/tests/assoc8.sub new file mode 100644 index 0000000..83b43f4 --- /dev/null +++ b/tests/assoc8.sub @@ -0,0 +1,7 @@ +# warnings introduced beginning with bash-4.4-alpha + +var=foo; declare -A "arr$var=([x]=y)" + +key1=foo key2=bar + +declare -A a=([foo]='([bar]=baz)') "b=${a[$key1]}" diff --git a/tests/attr.right b/tests/attr.right new file mode 100644 index 0000000..631b3f4 --- /dev/null +++ b/tests/attr.right @@ -0,0 +1,37 @@ +after f1:declare -ar a=([0]="1") +./attr.tests: line 4: a: readonly variable +after f2:declare -ar a=([0]="1") +./attr.tests: line 5: a: readonly variable +after f3:declare -ar a=([0]="1") +./attr.tests: line 6: readonly: a: readonly variable +after f4:declare -ar a=([0]="1") +after f2:declare -ar b=([0]="2") +after f3:declare -ar c=([0]="(3)") +after f4:declare -ar d=([0]="4") +declare -r m="4" +in func:declare -r n="4" +declare -r n="4" +./attr1.sub: line 13: p: readonly variable +declare -r p="1" +./attr1.sub: line 19: r: readonly variable +declare -ar r=([0]="1") +./attr1.sub: line 23: r: readonly variable +declare -ar r=([0]="1") +./attr1.sub: line 27: r: readonly variable +declare -ar r=([0]="1") +./attr1.sub: line 31: readonly: r: readonly variable +declare -ar r=([0]="1") +declare -ar x=([0]="4") +in func:declare -ar y=([0]="4") +declare -ar y=([0]="4") +in func:declare -ar z=([0]="4") +declare -ar z=([0]="4") +in func:declare -ar y1=([0]="4") +declare -ar y1=([0]="4") +in func:declare -ar z1=([0]="4") +declare -ar z1=([0]="4") +declare -x p="4" +declare -ax r=([0]="4") +declare -ax r=([0]="(5)") +declare -ax r=([0]="6") +declare -ax r=([0]="7") diff --git a/tests/attr.tests b/tests/attr.tests new file mode 100644 index 0000000..b5e0159 --- /dev/null +++ b/tests/attr.tests @@ -0,0 +1,41 @@ +a=(outside) + +f1() { readonly a=(1) ; } +f2() { readonly -a a=(2) ; } +f3() { readonly 'a=(3)' ; } +f4() { readonly -a 'a=(4)' ; } + +f1 +echo -n after f1: +declare -p a +f2 +echo -n after f2: +declare -p a +f3 +echo -n after f3: +declare -p a +f4 +echo -n after f4: +declare -p a + +b=(outside) +c=(outside) +d=(outside) + +f2() { readonly -a b=(2) ; } +f3() { readonly 'c=(3)' ; } +f4() { readonly -a 'd=(4)' ; } + +f2 +echo -n after f2: +declare -p b +f3 +echo -n after f3: +declare -p c +f4 +echo -n after f4: +declare -p d + +${THIS_SH} ./attr1.sub +${THIS_SH} ./attr2.sub + diff --git a/tests/attr1.sub b/tests/attr1.sub new file mode 100644 index 0000000..1c0609a --- /dev/null +++ b/tests/attr1.sub @@ -0,0 +1,55 @@ +m=1 +readonly m=4 +declare -p m + +n=1 +f() { readonly n=4; echo -n in func: ; declare -p n ; } +f +declare -p n + +p=1 +readonly p + +readonly p=4 +declare -p p + +r=(1) +readonly r + +f() { readonly r=(4) ; } +f +declare -p r + +f() { readonly r='(5)' ; } +f +declare -p r + +f() { readonly -a r=(6) ; } +f +declare -p r + +f() { readonly -a r='(7)' ; } +f +declare -p r + +x=(1) +readonly x=(4) +declare -p x + +y=(1) +f() { readonly y=(4); echo -n in func: ; declare -p y; } +f +declare -p y + +z=(1) +f() { readonly -a z=(4); echo -n in func: ; declare -p z; } +f +declare -p z + +f() { readonly y1=(4); echo -n in func: ; declare -p y1; } +f +declare -p y1 + +f() { readonly -a z1=(4); echo -n in func: ; declare -p z1; } +f +declare -p z1 diff --git a/tests/attr2.sub b/tests/attr2.sub new file mode 100644 index 0000000..28d447c --- /dev/null +++ b/tests/attr2.sub @@ -0,0 +1,24 @@ +p=1 +export p + +export p=4 +declare -p p + +r=(1) +export r + +f() { export r=(4) ; } +f +declare -p r + +f() { export r='(5)' ; } +f +declare -p r + +f() { export -a r=(6) ; } +f +declare -p r + +f() { export -a r='(7)' ; } +f +declare -p r diff --git a/tests/builtins.right b/tests/builtins.right index bafc53f..32db2a5 100644 --- a/tests/builtins.right +++ b/tests/builtins.right @@ -158,14 +158,81 @@ b before: f = 4 inside after: f = 8 bar = 4 -./builtins4.sub: line 2: declare: c: not found -./builtins4.sub: line 5: declare: d: not found -declare -a c='([0]="4")' -declare -A c='([0]="4" )' -declare -a c='([0]="1" [1]="2" [2]="3")' -declare -A c='([one]="1" [two]="2" [three]="3" )' -declare -a c='([0]="1" [1]="2" [2]="3")' -declare -a c='([0]="1" [1]="2" [2]="3")' +declare -a c +declare -A d +declare -a c=([0]="4") +declare -A c=([0]="4" ) +declare -a c=([0]="1" [1]="2" [2]="3") +declare -A c=([two]="2" [three]="3" [one]="1" ) +declare -a c=([0]="1" [1]="2" [2]="3") +declare -a c=([0]="1" [1]="2" [2]="3") unset unset -./builtins.tests: line 260: exit: status: numeric argument required +assoc 1 unset +array 1 unset +assoc 2 unset +array 2 unset +unset1 +unset2 +1 +1 +1 +1 +assoc A +array a +assoc B unset +array b unset +scalar 1 +scalar 2 +scalar 3 unset +argv[1] = +assoc: 3 +array: 3 +scalar: 13 +scalar: 1 +scalar: 0 +scalar: 1 +scalar: 0 +scalar: 0 +all set: +one +two +f1 () +{ + echo f1 +} +f2 () +{ + echo f2 +} +all unset: +unset1 +unset2 +./builtins6.sub: line 28: declare: f1: not found +./builtins6.sub: line 28: declare: f2: not found +all reset: +one-one +two-one +f1 () +{ + echo f1 +} +f2 () +{ + echo f2 +} +vars unset: +unset1 +unset2 +f1 () +{ + echo f1 +} +f2 () +{ + echo f2 +} +funcs unset: +one-two +two-two +./builtins.tests: line 266: exit: status: numeric argument required diff --git a/tests/builtins.tests b/tests/builtins.tests index 9d77520..ac74fe6 100644 --- a/tests/builtins.tests +++ b/tests/builtins.tests @@ -256,6 +256,12 @@ ${THIS_SH} ./builtins3.sub # test behavior of using declare to create variables without assigning values ${THIS_SH} ./builtins4.sub +# test behavior of set and unset array variables +${THIS_SH} ./builtins5.sub + +# test behavior of unset builtin with -f and -v options +${THIS_SH} ./builtins6.sub + # this must be last -- it is a fatal error exit status diff --git a/tests/builtins5.sub b/tests/builtins5.sub new file mode 100644 index 0000000..9a5dd7b --- /dev/null +++ b/tests/builtins5.sub @@ -0,0 +1,61 @@ +# a start at a test suite for what it means for an array to be set or unset and +# how to test that state +typeset -A A +A[a]=1 +typeset -a a +a[1]=1 + +if [ -v A ]; then echo assoc 1; else echo assoc 1 unset; fi +if [ -v a ]; then echo array 1; else echo array 1 unset; fi + +if [ -v "${A[@]}" ]; then echo assoc 2; else echo assoc 2 unset; fi +if [ -v "${a[@]}" ]; then echo array 2; else echo array 2 unset; fi + +echo ${A-unset1} +echo ${a-unset2} + +echo ${A[@]-unset3} +echo ${a[@]-unset4} + +echo ${#A[@]} +echo ${#a[@]} + +typeset -A B +typeset -a b + +scalar1=foo +scalar2= + +if [ -v A[@] ]; then echo assoc A; else echo assoc A unset; fi +if [ -v a[@] ]; then echo array a; else echo array a unset; fi + +if [ -v B[@] ]; then echo assoc B; else echo assoc B unset; fi +if [ -v b[@] ]; then echo array b; else echo array b unset; fi + +if [ -v scalar1[@] ]; then echo scalar 1; else echo scalar 1 unset; fi +if [ -v scalar2[@] ]; then echo scalar 2; else echo scalar 2 unset; fi +if [ -v scalar3[@] ]; then echo scalar 3; else echo scalar 3 unset; fi + +unset a A +declare -A assoc=([one]=one [two]=two [three]=three) +declare -a array=(one two three) + +scalar="one two three" +scalar2= + +recho "${scalar[@]}" + +echo assoc: ${#assoc[@]} +echo array: ${#array[@]} + +echo scalar: ${#scalar} +echo scalar: ${#scalar[@]} + +echo scalar: ${#scalar2} +echo scalar: ${#scalar2[@]} + +echo scalar: ${#scalar3} +echo scalar: ${#scalar3[@]} + + + diff --git a/tests/builtins6.sub b/tests/builtins6.sub new file mode 100644 index 0000000..c18b476 --- /dev/null +++ b/tests/builtins6.sub @@ -0,0 +1,68 @@ +f1() +{ + echo f1 +} + +f2() +{ + echo f2 +} + +v1=one +v2=two + +echo all set: + +echo ${v1-unset1} +echo ${v2-unset2} + +declare -f -p f1 f2 + +unset v1 f1 v2 f2 + +echo all unset: + +echo ${v1-unset1} +echo ${v2-unset2} + +declare -f -p f1 f2 + +f1() +{ + echo f1 +} + +f2() +{ + echo f2 +} + +v1=one-one +v2=two-one + +echo all reset: +echo ${v1-unset1} +echo ${v2-unset2} + +declare -f -p f1 f2 + +unset -v v1 f1 v2 f2 + +echo vars unset: + +echo ${v1-unset1} +echo ${v2-unset2} + +declare -f -p f1 f2 + +v1=one-two +v2=two-two + +unset -f v1 f1 v2 f2 + +echo funcs unset: + +echo ${v1-unset1} +echo ${v2-unset2} + +declare -f f1 f2 diff --git a/tests/case.right b/tests/case.right index 58ab2a4..a17234b 100644 --- a/tests/case.right +++ b/tests/case.right @@ -7,6 +7,13 @@ no more clauses 1.0 ./case.tests: line 29: xx: readonly variable 1.1 +matches 1 +no +no +no +no +no +ok ok 1 ok 2 ok 3 diff --git a/tests/case.tests b/tests/case.tests index 547e8cc..7ab316a 100644 --- a/tests/case.tests +++ b/tests/case.tests @@ -29,5 +29,25 @@ readonly xx=1 case 1 in $((xx++)) ) echo hi1 ;; *) echo hi2; esac echo ${xx}.$? +unset var empty + +var= +case ']' in +[$var]*[$var]) echo matches 1;; +*) echo no match 1 ;; +esac + +case abc in ( [] ) echo yes ;; ( * ) echo no ;; esac +empty='' +case abc in ( ["$empty"] ) echo yes ;; ( * ) echo no ;; esac + +case abc in ( [] | [!a-z]* ) echo yes ;; ( * ) echo no ;; esac +empty='' +case abc in ( ["$empty"] | [!a-z]* ) echo yes ;; ( * ) echo no ;; esac + +case abc in (["$empty"]|[!a-z]*) echo yes ;; (*) echo no ;; esac + +case " " in ( [" "] ) echo ok;; ( * ) echo no;; esac + # tests of quote removal and pattern matching ${THIS_SH} ./case1.sub diff --git a/tests/casemod.right b/tests/casemod.right index 958b28d..ca1de49 100644 --- a/tests/casemod.right +++ b/tests/casemod.right @@ -43,3 +43,7 @@ Be Conservative in what you send and Liberal in what you accept BE CONSERVATIVE IN WHAT YOU SEND AND LIBERAL IN WHAT YOU ACCEPT Be conservative in what you send and liberal in what you accept BE CONSERVATIVE IN WHAT YOU SEND AND LIBERAL IN WHAT YOU ACCEPT +AcknOwlEdgEmEnt acknOwlEdgEmEnt +oeNoPHiLe OEnOphIlE +abcdexyz +ABCDEXYZ diff --git a/tests/casemod.tests b/tests/casemod.tests index 3c7ad23..dacdb0a 100644 --- a/tests/casemod.tests +++ b/tests/casemod.tests @@ -97,3 +97,17 @@ echo ${TEXT^^} echo ${TEXT2^} echo ${TEXT2^^} + +M1=${S1^^[aeiou]} +M2=${U2,,[AEIOU]} + +echo ${M1} ${M1~} +echo ${M2} ${M2~~} + +declare -l lower=aBcDe +lower+=XyZ +echo $lower + +declare -u upper=aBcDe +upper+=xYZ +echo $upper diff --git a/tests/comsub-posix.right b/tests/comsub-posix.right index ab04c52..2290aa6 100644 --- a/tests/comsub-posix.right +++ b/tests/comsub-posix.right @@ -71,3 +71,4 @@ swap32_posix () done } yes +ab cde diff --git a/tests/comsub-posix.tests b/tests/comsub-posix.tests index bcfeede..0650ca9 100644 --- a/tests/comsub-posix.tests +++ b/tests/comsub-posix.tests @@ -217,3 +217,16 @@ unset x # fixed after bash-4.0 released : $(case a in a) echo ;; # comment esac) + +# fixed after bash-4.3 released +testing=$( + echo test | while read line; do + case $line in + test) echo saw test ;; + *) echo other ;; + esac + done +) + +# recommended to be parsed as a nested comsub instead of arithsub +echo $(( echo ab cde ) ) diff --git a/tests/comsub.right b/tests/comsub.right index 9894529..09518aa 100644 --- a/tests/comsub.right +++ b/tests/comsub.right @@ -27,3 +27,24 @@ ok 3 ok 4 ok 5 ok 6 +xyz +\/tmp\/foo\/bar +/tmp/foo/bar +/tmp/foo/bar +/tmp/foo/bar +1 +2 +3 +4 +5 +6 +5 +6 +a +b +c +a +b +c +1 +2 diff --git a/tests/comsub.tests b/tests/comsub.tests index 493bbda..4defc31 100644 --- a/tests/comsub.tests +++ b/tests/comsub.tests @@ -41,4 +41,9 @@ bar'` echo $(recho 'foo\ bar') +# long-standing parse error in all versions up through bash-4.3 +echo ${foo:-$(echo a{b,c})} >/dev/null + ${THIS_SH} ./comsub1.sub +${THIS_SH} ./comsub2.sub +${THIS_SH} ./comsub3.sub diff --git a/tests/comsub1.sub b/tests/comsub1.sub index 86565e2..216e03f 100644 --- a/tests/comsub1.sub +++ b/tests/comsub1.sub @@ -46,3 +46,9 @@ esac) echo $(case a in (a) echo ok 6 # comment ;; esac) + +echo $( # we just took and pasted in some +# code from another script inside a +# command substitution +echo xyz +) diff --git a/tests/comsub2.sub b/tests/comsub2.sub new file mode 100644 index 0000000..a2d58ad --- /dev/null +++ b/tests/comsub2.sub @@ -0,0 +1,8 @@ +qpath='\/tmp\/foo\/bar' + +echo "$qpath" + +# it's crazy that all three of these produce the same result +echo ${qpath//\\/} +echo ${qpath//"`echo \\`"/} +echo ${qpath//`echo "\\\\\\\\"`/} diff --git a/tests/comsub3.sub b/tests/comsub3.sub new file mode 100644 index 0000000..6947400 --- /dev/null +++ b/tests/comsub3.sub @@ -0,0 +1,31 @@ +x=$( + case 1 in + 1) echo 1 + esac + case 2 in + 2) echo 2 + esac +) +echo "$x" + +x=$(case 1 in 1) echo 3;; esac; case 2 in 2) echo 4;; esac;) +echo "$x" + +x=$(case 1 in 1) echo 5;; esac; case 2 in 2) echo 6;; esac) +echo "$x" + +x=$(case 1 in 1) echo 5;; esac; case 2 in 2) echo 6;; esac; for f in a b c; do echo "$f" ; done) +echo "$x" + +x=$( + for f in a b c; do + echo $f + done + case 1 in + 1) echo 1 + esac + case 2 in + 2) echo 2 + esac +) +echo "$x" diff --git a/tests/cond.right b/tests/cond.right index 80bb5ce..18ebd06 100644 --- a/tests/cond.right +++ b/tests/cond.right @@ -41,6 +41,11 @@ found 2 libc ok 42 ok 43 +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 match 1 match 2 match 3 diff --git a/tests/cond.tests b/tests/cond.tests index d91dddd..8e4548a 100755 --- a/tests/cond.tests +++ b/tests/cond.tests @@ -180,6 +180,17 @@ echo ${BASH_REMATCH[@]} if [[ "123abc" == *?(a)bc ]]; then echo ok 42; else echo bad 42; fi if [[ "123abc" == *?(a)bc ]]; then echo ok 43; else echo bad 43; fi +foo="" +[[ bar == *"${foo,,}"* ]] && echo ok 1 +[[ bar == *${foo,,}* ]] && echo ok 2 + +shopt -s extquote +bs='\' +del=$'\177' +[[ bar == *$bs"$del"* ]] || echo ok 3 +[[ "" == "$foo" ]] && echo ok 4 +[[ "$del" == "${foo,,}" ]] || echo ok 5 + ${THIS_SH} ./cond-regexp1.sub ${THIS_SH} ./cond-regexp2.sub diff --git a/tests/coproc.right b/tests/coproc.right index 6d9deaa..94b001c 100644 --- a/tests/coproc.right +++ b/tests/coproc.right @@ -1,11 +1,8 @@ -84575 63 60 a b c -84577 63 60 flop -./coproc.tests: line 22: 84577 Terminated coproc REFLECT { cat -; } -84579 +coproc.tests: REFLECT: status 143 63 60 FOO 63 60 diff --git a/tests/coproc.tests b/tests/coproc.tests index 8be3563..d347eb7 100644 --- a/tests/coproc.tests +++ b/tests/coproc.tests @@ -1,6 +1,13 @@ +: ${TMPDIR:=/tmp} +TMPOUT=${TMPDIR}/coproc-wait-$BASHPID + coproc { echo a b c; sleep 2; } -echo $COPROC_PID +case $COPROC_PID in +[0-9]*) ;; +*) echo COPROC_PID not integer ;; +esac + echo ${COPROC[@]} read LINE <&${COPROC[0]} @@ -10,7 +17,11 @@ wait $COPROC_PID coproc REFLECT { cat - ; } -echo $REFLECT_PID +case $REFLECT_PID in +[0-9]*) ;; +*) echo REFLECT_PID not integer ;; +esac + echo ${REFLECT[@]} echo flop >&${REFLECT[1]} @@ -18,12 +29,21 @@ read LINE <&${REFLECT[0]} echo $LINE -kill $REFLECT_PID -wait $REFLECT_PID +{ sleep 1; kill $REFLECT_PID; } & +wait $REFLECT_PID >$TMPOUT 2>&1 || echo "coproc.tests: REFLECT: status $?" +grep 'Terminated.*coproc.*REFLECT' < $TMPOUT >/dev/null 2>&1 || { + echo "coproc.tests: wait for REFLECT failed" >&2 +} +rm -f $TMPOUT +exec 2>&1 coproc xcase -n -u -echo $COPROC_PID +case $COPROC_PID in +[0-9]*) ;; +*) echo COPROC_PID not integer ;; +esac + echo ${COPROC[@]} echo foo >&${COPROC[1]} diff --git a/tests/dollar-at-star b/tests/dollar-at-star index 9a5d402..2d2a1b6 100755 --- a/tests/dollar-at-star +++ b/tests/dollar-at-star @@ -211,6 +211,20 @@ esac # arrays) -- bugs through bash 4.2 ${THIS_SH} ./dollar-at-star1.sub +# more tests for expanding $@ and $* in a context where there is no word +# splitting +${THIS_SH} ./dollar-at-star2.sub +${THIS_SH} ./dollar-at-star3.sub +${THIS_SH} ./dollar-at-star4.sub +${THIS_SH} ./dollar-at-star5.sub +${THIS_SH} ./dollar-at-star6.sub +${THIS_SH} ./dollar-at-star7.sub + +# tests for expansions of $@ and ${a[@]} (vs. $* and ${a[*]}) on the RHS of +# assignment statements with non-default IFS: $@ expands to args or array +# members separated by spaces +${THIS_SH} ./dollar-at-star8.sub + # tests for special expansion of "$*" and "${array[*]}" when used with other # expansions -- bugs through bash-2.05b ${THIS_SH} ./dollar-star1.sub diff --git a/tests/dollar-at-star2.sub b/tests/dollar-at-star2.sub new file mode 100644 index 0000000..780548e --- /dev/null +++ b/tests/dollar-at-star2.sub @@ -0,0 +1,207 @@ +OIFS="$IFS" +foo=' ,foo' +set -- "$foo" + +if [[ $foo = ,* ]]; then echo bad 1; else echo ok 1; fi +if [[ $@ = ,* ]]; then echo bad 2; else echo ok 2; fi +if [[ $* = ,* ]]; then echo bad 3; else echo ok 3; fi +if [[ ${@} = ,* ]]; then echo bad 4; else echo ok 4; fi +if [[ ${*} = ,* ]]; then echo bad 5; else echo ok 5; fi +if [[ $1 = ,* ]]; then echo bad 6; else echo ok 6; fi + +set -- ' ,foo' +if [[ $foo = ,* ]]; then echo bad 7; else echo ok 7; fi +if [[ $@ = ,* ]]; then echo bad 8; else echo ok 8; fi +if [[ $* = ,* ]]; then echo bad 9; else echo ok 9; fi +if [[ ${@} = ,* ]]; then echo bad 10; else echo ok 10; fi +if [[ ${*} = ,* ]]; then echo bad 11; else echo ok 11; fi +if [[ $1 = ,* ]]; then echo bad 12; else echo ok 12; fi + +IFS= +if [[ $@ = ,* ]]; then echo bad 13; else echo ok 13; fi +if [[ $* = ,* ]]; then echo bad 14; else echo ok 14; fi +IFS="$OIFS" + +foo=' ,foo' +set -- ' ' ',foo' + +if [[ $@ = ,* ]]; then echo bad at 1; else echo ok at 1; fi +if [[ ${@} = ,* ]]; then echo bad at 2; else echo ok at 2; fi + +if [[ $* = ,* ]]; then echo bad star 1; else echo ok star 1; fi +if [[ ${*} = ,* ]]; then echo bad star 2; else echo ok star 2; fi + +foo=' ,foo' +set -- "$foo" + +# expand_string_for_rhs + +foo2=$@ +echo "$foo2" + +foo2=$* +echo "$foo2" + +foo2="$@" +echo "$foo2" + +foo2="$*" +echo "$foo2" + +# expand_word_unsplit +case $@ in +$foo2) echo ok at 1 ;; +*) echo bad at 1 ;; +esac + +# also uses expand_word_leave_quoted +case $@ in +$@) echo ok at 2;; +*) echo bad at 2;; +esac + +case $@ in +$foo) echo ok at 3 ;; +*) echo bad at 3;; +esac + +# expand_word_unsplit +case $* in +$foo2) echo ok star 1 ;; +*) echo bad star 1 ;; +esac + +# also uses expand_word_leave_quoted +case $* in +$*) echo ok star 2;; +*) echo bad star 2;; +esac + +case $* in +$foo) echo ok star 3 ;; +*) echo bad star 3;; +esac + +case $@ in +$*) echo ok at-star 1;; +*) echo bad at-star 1;; +esac + +case $* in +$@) echo ok at-star 2;; +*) echo bad at-star 2;; +esac + +foo='a b c' +set -- $foo + +# expand_string_for_rhs +IFS='|' +foo2=$@ +echo "$foo2" + +foo2=$* +echo "$foo2" + +foo2="$@" +echo "$foo2" + +foo2="$*" +echo "$foo2" + +foo="a b c" +set -- $foo + +if [[ $@ = $foo ]]; then echo ok at 1; else echo bad at 1; fi +if [[ $foo = $@ ]]; then echo ok at 2; else echo bad at 2; fi + +case $@ in +$@) echo ok at 3 ;; +*) echo bad at 3 ;; +esac + +case $@ in +$foo) echo ok at 4;; +*) echo bad at 4;; +esac + +case $foo in +$@) echo ok at 5;; +*) echo bad at 5;; +esac +IFS="$OIFS" + +foo="a b c" +set -- $foo + +IFS=: +if [[ $@ = $foo ]]; then echo ok at 1; else echo bad at 1; fi +if [[ $foo = $@ ]]; then echo ok at 2; else echo bad at 2; fi + +case $@ in +$@) echo ok at 3 ;; +*) echo bad at 3 ;; +esac + +case $@ in +$foo) echo ok at 4;; +*) echo bad at 4;; +esac + +case $foo in +$@) echo ok at 5;; +*) echo bad at 5;; +esac +IFS="$OIFS" + +foo="a b c" +set -- $foo + +IFS='|' +foo2=$@ + +case $@ in +$@) echo ok at 1 ;; +*) echo bad at 1 ;; +esac + +case $foo2 in +$foo) echo ok at 2;; +*) echo bad at 2;; +esac + +case $foo in +$foo2) echo ok at 3;; +*) echo bad at 3;; +esac + +case $foo in +$foo) echo ok at 4;; +*) echo bad at 4;; +esac + +case $foo2 in +$foo2) echo ok at 5;; +*) echo bad at 5;; +esac + +case $foo2 in +$@) echo ok at 6;; +*) echo bad at 6;; +esac + +case $@ in +$foo2) echo ok at 7;; +*) echo bad at 7;; +esac + +case $foo in +$@) echo ok at 8;; +*) echo bad at 8;; +esac + +case $@ in +$foo) echo ok at 9;; +*) echo bad at 9;; +esac +IFS="$OIFS" diff --git a/tests/dollar-at-star3.sub b/tests/dollar-at-star3.sub new file mode 100644 index 0000000..b37d64a --- /dev/null +++ b/tests/dollar-at-star3.sub @@ -0,0 +1,44 @@ +unset f ; f=abcd + +first_char=${f[@]:0:1} +recho $first_char + +first_char=${f[0]:0:1} +recho $first_char + +first_char=${f:0:1} +recho $first_char + +first_char="${f[@]:0:1}" +recho $first_char + +first_char="${f[@]:0:1}" +recho $first_char + +first_char="${f[0]:0:1}" +recho $first_char + +first_char="${f:0:1}" +recho $first_char + +unset f; +f=( one two three ) +first_word=${f[@]:0:1} +recho $first_word + +first_word=${f[0]:0:1} +recho $first_word + +first_word=${f:0:1} +recho $first_word + +unset f; +f=( one two three ) +first_word=${f[@]:0:1} +recho $first_word + +set -- abc def ghi + +printf '<%s> ' "123 $@ 456"; echo +printf '<%s> ' "123 $@\ 456"; echo + diff --git a/tests/dollar-at-star4.sub b/tests/dollar-at-star4.sub new file mode 100644 index 0000000..690eb67 --- /dev/null +++ b/tests/dollar-at-star4.sub @@ -0,0 +1,97 @@ +# tests for quoted and unquoted, split and unsplit expansions of $@ and $* +# Posix interpretation 221 speaks to this issue + +set -- a b +IFS= +x=abc + +printf "<%s>\n" ${x#$*} + +a="a bc" +echo ${a#$*} +unset x a + +a=$@ +echo "$a" + +a=$* +echo "$a" + +printf '<%s>' $@ ; echo + +IFS=' +' + +a=$@ +echo "$a" + +a=$* +echo "$a" + +unset a + +unset IFS +set a b "c d" +printf '<%s>' $* ; echo + +IFS= +set a b "c d" +printf '<%s>' $* ; echo + +IFS=: +set a b +printf '<%s>' ${foo=$*} ; echo +printf '<%s>' "${foo}" ; echo + +unset foo +IFS=' +' +printf '<%s>' ${foo=$@} ; echo +printf '<%s>' "$foo" ; echo + +IFS=? +set a c +foo=abcd + +echo ${foo#"$*"} +echo "${foo#$*}" + +echo "${foo#'a?c'}" +echo "${foo#a?c}" + +IFS=? +set a c +str=a$'\001'c +pat=a$'\001' +echo "${str#$pat}" + +set a b +IFS=: + +a=$@ +recho "$a" + +recho ${foo=$*} +recho "$foo" + +unset foo +IFS=' +' +recho ${foo=$@} +recho "$foo" + +shift $# +unset foo x + +set -- a b +x=abc + +IFS= +printf "<%s>\n" ${x#$*} +printf "<%s>\n" "${x#$*}" + +x=abcd +set a c +IFS='?' +printf "<%s>\n" ${x#$*} +printf "<%s>\n" "${x#$*}" diff --git a/tests/dollar-at-star5.sub b/tests/dollar-at-star5.sub new file mode 100644 index 0000000..3bd7b0f --- /dev/null +++ b/tests/dollar-at-star5.sub @@ -0,0 +1,53 @@ +# testing various combinations of quoted and unquoted expansions of $@, and +# whether they generate empty words after expansion + +n() { echo "$#"; } + +n "$@" +n ${foo-"$@"} +n "${foo-$@}" + +n ""$@ +n """$@" + +n $(true)$@ +n "$(true)$@" +n "$(true)$@" +n "$(true)""$@" + +n $xxx$@ +n "$xxx$@" +n $xxx"$@" +n "$xxx""$@" + +recho $xxx"$@" +echo after 1 + +recho "$xxx$@" +echo after 2 + +recho ${foo:-$xxx"$@"} +echo after 3 + +# this is where these things start to differ +echo same as 1 +recho "${foo:-$xxx"$@"}" +echo same as 2 +recho "${foo:-$xxx$@}" + +echo null fields +recho ""$@ +recho """$@" + +echo null fields in rhs +echo null string with unquoted '$@' +recho ${foo:-""$@} +echo null string with quoted '$@' +recho ${foo:-"""$@"} + +echo assignment +recho "${foo=$@}" +echo variable +recho "$foo" +echo dollar-at +recho "${@}" diff --git a/tests/dollar-at-star6.sub b/tests/dollar-at-star6.sub new file mode 100644 index 0000000..7366df5 --- /dev/null +++ b/tests/dollar-at-star6.sub @@ -0,0 +1,29 @@ +OIFS="$IFS" +arr=(a b c) + +recho ${arr[@]@Q} +recho "${arr[@]@Q}" + +IFS="'" +recho ${arr[@]@Q} +recho "${arr[@]@Q}" +IFS="$OIFS" + +arr=("'a'" "'b'" "'c'") + +IFS="'" +recho ${arr[@]} +recho "${arr[@]}" +IFS="$OIFS" + +IFS="'" +a="'a'" +recho $a +recho "$a" +IFS="$OIFS" + +set -- "'a'" "'b'" "'c'" + +IFS="'" +recho "${@}" +recho "$@" diff --git a/tests/dollar-at-star7.sub b/tests/dollar-at-star7.sub new file mode 100644 index 0000000..47cb37f --- /dev/null +++ b/tests/dollar-at-star7.sub @@ -0,0 +1,25 @@ +IFS='' # testing with only empty IFS + +set -- this is a test + +printf '|%s|\n' ${1+"$@"} +echo +printf '|%s|\n' "${1+$@}" +echo +printf '|%s|\n' "$@" +echo + +printf '|%s|\n' ${1-"$@"} +printf '|%s|\n' "${1-$@}" + +echo +: ${foo:="$@"} +printf '|%s|\n' "$foo" + +unset foo +: "${foo:=$@}" +printf '|%s|\n' "$foo" + +unset foo +printf '|%s|\n' ${foo-"$@"} +printf '|%s|\n' "${foo-$@}" diff --git a/tests/dollar-at-star8.sub b/tests/dollar-at-star8.sub new file mode 100644 index 0000000..7e1b688 --- /dev/null +++ b/tests/dollar-at-star8.sub @@ -0,0 +1,14 @@ +function f { + typeset -a a + a=("$@") + typeset IFS=, + typeset a1="${a[@]} ${a[*]} $@ $* ${@} ${*}" + typeset a2=${a[@]}\ ${a[*]}\ $@\ $*\ ${@}\ ${*} a3 a4 + a3="${a[@]} ${a[*]} $@ $* ${@} ${*}" + a4=${a[@]}\ ${a[*]}\ $@\ $*\ ${@}\ ${*} + unset -v IFS + printf '%s\n' "a1=$a1" "a2=$a2" "a3=$a3" "a4=$a4" +} + +echo +f a b c diff --git a/tests/dollar.right b/tests/dollar.right index 6af02b1..1e48c24 100644 --- a/tests/dollar.right +++ b/tests/dollar.right @@ -103,6 +103,202 @@ var=${a[@]} ... one:::two three:::four var="${a[@]}" ... one:::two three:::four var=$@ ... one:::two three:::four var="$@" ... one:::two three:::four +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 +ok 6 +ok 7 +ok 8 +ok 9 +ok 10 +ok 11 +ok 12 +ok 13 +ok 14 +ok at 1 +ok at 2 +ok star 1 +ok star 2 + ,foo + ,foo + ,foo + ,foo +ok at 1 +ok at 2 +ok at 3 +ok star 1 +ok star 2 +ok star 3 +ok at-star 1 +ok at-star 2 +a b c +a|b|c +a b c +a|b|c +ok at 1 +ok at 2 +ok at 3 +ok at 4 +ok at 5 +ok at 1 +ok at 2 +ok at 3 +ok at 4 +ok at 5 +ok at 1 +ok at 2 +ok at 3 +ok at 4 +ok at 5 +ok at 6 +ok at 7 +ok at 8 +ok at 9 +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[1] = +<123 abc> +<123 abc> + +a bc +a b +ab + +a b +a b + + + + + + +abcd +d +abcd +d +c +argv[1] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = + + + + +0 +0 +1 +1 +1 +0 +0 +0 +1 +0 +0 +0 +1 +after 1 +after 2 +after 3 +same as 1 +argv[1] = <> +same as 2 +argv[1] = <> +null fields +argv[1] = <> +argv[1] = <> +null fields in rhs +null string with unquoted $@ +argv[1] = <> +null string with quoted $@ +assignment +argv[1] = <> +variable +argv[1] = <> +dollar-at +argv[1] = <'a'> +argv[2] = <'b'> +argv[3] = <'c'> +argv[1] = <'a'> +argv[2] = <'b'> +argv[3] = <'c'> +argv[1] = <> +argv[2] = +argv[3] = <> +argv[4] = <> +argv[5] = +argv[6] = <> +argv[7] = <> +argv[8] = +argv[1] = <'a'> +argv[2] = <'b'> +argv[3] = <'c'> +argv[1] = <> +argv[2] = +argv[3] = <> +argv[4] = <> +argv[5] = +argv[6] = <> +argv[7] = <> +argv[8] = +argv[1] = <'a'> +argv[2] = <'b'> +argv[3] = <'c'> +argv[1] = <> +argv[2] = +argv[1] = <'a'> +argv[1] = <'a'> +argv[2] = <'b'> +argv[3] = <'c'> +argv[1] = <'a'> +argv[2] = <'b'> +argv[3] = <'c'> +|this| +|is| +|a| +|test| + +|this| +|is| +|a| +|test| + +|this| +|is| +|a| +|test| + +|this| +|this| + +|this is a test| +|this is a test| +|this| +|is| +|a| +|test| +|this| +|is| +|a| +|test| + +a1=a b c a,b,c a b c a,b,c a b c a,b,c +a2=a b c a,b,c a b c a,b,c a b c a,b,c +a3=a b c a,b,c a b c a,b,c a b c a,b,c +a4=a b c a,b,c a b c a,b,c a b c a,b,c xa|xb|xc xa|xb|xc a|b|c @@ -222,17 +418,17 @@ third set: "${@:2}a3 a2" a$1 #works as long as $1 and 3 are swapped set y za3 a2 ax 0 -declare -a a='([0]="y" [1]="za3 a2" [2]="ax")' +declare -a a=([0]="y" [1]="za3 a2" [2]="ax") "${@:2}b$1 b2" b3 #fails! why? set y zbx b2 b3 0 -declare -a b='([0]="y" [1]="zbx b2" [2]="b3")' +declare -a b=([0]="y" [1]="zbx b2" [2]="b3") ${@:2}c$1 c2 c3 #works as long as quoting omitted set y zcx c2 c3 0 -declare -a c='([0]="y" [1]="zcx" [2]="c2" [3]="c3")' +declare -a c=([0]="y" [1]="zcx" [2]="c2" [3]="c3") argv[1] = <> argv[2] = argv[1] = <> diff --git a/tests/errors.right b/tests/errors.right index 63d6b7e..362855e 100644 --- a/tests/errors.right +++ b/tests/errors.right @@ -35,7 +35,7 @@ hash: usage: hash [-lr] [-p pathname] [-dt] [name ...] ./errors.tests: line 106: hash: hashing disabled ./errors.tests: line 109: export: `AA[4]': not a valid identifier ./errors.tests: line 110: readonly: `AA[4]': not a valid identifier -./errors.tests: line 113: [-2]: bad array subscript +./errors.tests: line 113: unset: [-2]: bad array subscript ./errors.tests: line 117: AA: readonly variable ./errors.tests: line 121: AA: readonly variable ./errors.tests: line 129: shift: 5: shift count out of range @@ -110,4 +110,27 @@ after f ./errors3.sub: line 5: no_such_file: No such file or directory TEST ./errors3.sub: line 7: no_such_file: No such file or directory -./errors.tests: line 271: `!!': not a valid identifier +1 +2 +./errors4.sub: line 7: var: readonly variable +after readonly assignment +./errors4.sub: line 13: break: x: numeric argument required +1 +2 +./errors4.sub: line 7: var: readonly variable +./errors5.sub: line 6: array: unbound variable +./errors5.sub: line 7: array: unbound variable +./errors5.sub: line 10: 7: unbound variable +./errors5.sub: line 11: 7: unbound variable +after 1: 1 +after 2: 1 +after 3: 1 +array after 1: 1 +array after 2: 1 +./errors6.sub: line 18: ${-3}: bad substitution +./errors6.sub: line 19: -3: bad substitution +after indir: 1 +./errors6.sub: line 18: ${-3}: bad substitution +./errors6.sub: line 19: -3: bad substitution +after indir: 1 +./errors.tests: line 278: `!!': not a valid identifier diff --git a/tests/errors.tests b/tests/errors.tests index 14eeb08..ff542f7 100644 --- a/tests/errors.tests +++ b/tests/errors.tests @@ -262,6 +262,13 @@ echo $? ${THIS_SH} ./errors1.sub ${THIS_SH} ./errors2.sub ${THIS_SH} ./errors3.sub +${THIS_SH} ./errors4.sub +${THIS_SH} -o posix ./errors4.sub + +${THIS_SH} ./errors5.sub + +${THIS_SH} ./errors6.sub +THIS_SH="${THIS_SH} -o posix" ${THIS_SH} ./errors6.sub # this must be last! # in posix mode, a function name must be a valid identifier diff --git a/tests/errors4.sub b/tests/errors4.sub new file mode 100644 index 0000000..8451b96 --- /dev/null +++ b/tests/errors4.sub @@ -0,0 +1,18 @@ +# test effect of assigning to readonly vars on loops and non-interactive shells +# fatal error when in posix mode +var=foo +readonly var +for num in 1 2 3 4 5; do + if [ $num -eq 3 ]; then + var=bar + fi + echo $num +done +echo after readonly assignment + +# non-numeric arguments to break are fatal errors for all non-interactive shells +for f in 1 2 3 4 5 +do + break x +done +echo after loop diff --git a/tests/errors5.sub b/tests/errors5.sub new file mode 100644 index 0000000..7d9068b --- /dev/null +++ b/tests/errors5.sub @@ -0,0 +1,11 @@ +array[1]=one +array[2]=two + +set -u + +( echo ${#array} ) +( echo ${array} ) + +set -- 1 2 3 +( echo ${#7} ) +( echo ${7} ) diff --git a/tests/errors6.sub b/tests/errors6.sub new file mode 100644 index 0000000..3c05625 --- /dev/null +++ b/tests/errors6.sub @@ -0,0 +1,20 @@ +# problems with non-fatal expansion errors through bash-4.3 +: ${THIS_SH:=./bash} + +${THIS_SH} -c 'echo ${x!y} second +echo after 1: $?' 2>/dev/null + +${THIS_SH} -c 'echo ${#+} second +echo after 2: $?' 2>/dev/null + +${THIS_SH} -c 'echo ${#foo%} second +echo after 3: $?' 2>/dev/null + +${THIS_SH} -c 'b[0]=4 ; echo ${b[ ]} +echo array after 1: $?' 2>/dev/null +${THIS_SH} -c 'typeset -A v ; v["0"]=one ; echo ${v[ ]} +echo array after 2: $?' 2>/dev/null + +echo ${-3} +x=-3; echo ${!x} +echo after indir: $? diff --git a/tests/exec.right b/tests/exec.right index 54488bf..81224fa 100644 --- a/tests/exec.right +++ b/tests/exec.right @@ -13,7 +13,7 @@ after exec1.sub: one two three 126 ./execscript: line 40: /: Is a directory 126 -/: /: is a directory +/: /: Is a directory 126 ./execscript: line 47: .: /: is a directory 1 @@ -60,4 +60,48 @@ expand_aliases on 0 0 0 +/usr/local/bin:/usr/GNU/bin:/usr/bin:/bin:. +cannot find cat in $TMPDIR +cannot find cat with empty $PATH +PATH = /usr/local/bin:/usr/GNU/bin:/usr/bin:/bin:. +cannot find cat in $TMPDIR with hash +cannot find cat with empty $PATH with hash +PATH = /usr/local/bin:/usr/GNU/bin:/usr/bin:/bin:. +trap -- 'echo foo $BASH_SUBSHELL' EXIT +trap -- 'echo USR1 $BASHPID' SIGUSR1 +between +trap -- 'echo foo $BASH_SUBSHELL' EXIT +trap -- 'echo USR1 $BASHPID' SIGUSR1 +between 2 +trap -- 'echo foo $BASH_SUBSHELL' EXIT +trap -- 'echo USR1 $BASHPID' SIGUSR1 +in subshell: 1 +in subshell pipeline: 1 +group pipeline: 1 +EXIT-group.1 +foo 0 after +exit code: 1 +exit code: 1 +exit code: 1 +exit code: 127 +exit code: 127 +exit code: 127 +a +b +c +A +B +c +d +c +d +e +x1 +x1a +x2 +x2a +x2b +x3 +x3a +x3b diff --git a/tests/exec10.sub b/tests/exec10.sub new file mode 100644 index 0000000..af3ab0d --- /dev/null +++ b/tests/exec10.sub @@ -0,0 +1,34 @@ +# post bash-4.3 changes to how command -p works (avoid modifying $PATH) + +: ${TMPDIR=/tmp} +xpath=/usr/local/bin:/usr/GNU/bin:/usr/bin:/bin:. + +# set a value of PATH we can test for; versions of bash up to and including +# bash-4.3 would set $PATH while running command -p +PATH=$xpath +export PATH +command -p sh -c 'echo $PATH' + +PATH=${TMPDIR} +command -pv cat >/dev/null || echo "cannot find cat using standard path" +command -p cat < /dev/null +#hash + +PATH=$xpath +command -pv cat >/dev/null || echo "cannot find cat using xpath" +PATH=$TMPDIR command -pv cat >/dev/null || echo "cannot find cat using standard path with PATH=\$TMPDIR" +PATH= command -pv cat >/dev/null || echo "cannot find cat using standard path with empty \$PATH" +PATH=$TMPDIR command -v cat >/dev/null || echo "cannot find cat in \$TMPDIR" +PATH= command -v cat >/dev/null || echo "cannot find cat with empty \$PATH" + +echo PATH = $PATH +hash cat + +PATH=$xpath + +PATH=$TMPDIR command -pv cat >/dev/null || echo "cannot find cat using stdpath with hash" +PATH= command -pv cat >/dev/null || echo "cannot find cat using stdpath with hash" +PATH=$TMPDIR command -v cat >/dev/null || echo "cannot find cat in \$TMPDIR with hash" +PATH= command -v cat >/dev/null || echo "cannot find cat with empty \$PATH with hash" + +echo PATH = $PATH diff --git a/tests/exec11.sub b/tests/exec11.sub new file mode 100644 index 0000000..9631c67 --- /dev/null +++ b/tests/exec11.sub @@ -0,0 +1,14 @@ +trap 'echo USR1 $BASHPID' USR1 +trap 'echo foo $BASH_SUBSHELL' 0 + +trap | cat +echo between +( trap ) +echo between 2 +{ trap; } | cat + +( echo in subshell: $BASH_SUBSHELL ) +( echo in subshell pipeline: $BASH_SUBSHELL ) | cat + +{ echo group pipeline: $BASH_SUBSHELL; + trap 'echo EXIT-group.$BASH_SUBSHELL' EXIT; } | cat diff --git a/tests/exec12.sub b/tests/exec12.sub new file mode 100644 index 0000000..4bd6121 --- /dev/null +++ b/tests/exec12.sub @@ -0,0 +1,17 @@ +: ${TMPDIR:=/var/tmp} +TMPFILE=$TMPDIR/exitcode + +rm -f $TMPFILE +set -e +exit_handler() { echo "exit code: $?" ; touch $TMPFILE; } +false() { ! :; } +notfound() { nosuchcommand ; } +syntaxerror() { !:; } + +main() +{( + trap exit_handler 0 + "$@" >> /dev/null 2>&1 +)} +main "$@" +echo "after main: should not get here" diff --git a/tests/exec13.sub b/tests/exec13.sub new file mode 100644 index 0000000..0f84daa --- /dev/null +++ b/tests/exec13.sub @@ -0,0 +1,21 @@ +echo x1 | ( cat & wait ) +echo x1a | ( :& cat & wait ) + +echo x2 | for f in 1; do + cat & wait +done +echo x2a | if true; then cat & wait; fi +echo x2b | for (( i=0; i < 1; i++ )) ; do cat & wait; done + +echo x3 | { cat & wait; } + +lambda() { cat & wait; } +echo x3a | lambda + +: ${TMPDIR:=/tmp} +SRCF=$TMPDIR/bash-src-$$ +cat > $SRCF << \EOF +cat & wait +EOF +echo x3b | . $SRCF +rm -f $SRCF diff --git a/tests/execscript b/tests/execscript index 5a4e903..3415ae3 100644 --- a/tests/execscript +++ b/tests/execscript @@ -112,6 +112,9 @@ ${THIS_SH} -i ./exec8.sub ${THIS_SH} ./exec9.sub +${THIS_SH} ./exec10.sub +${THIS_SH} ./exec11.sub + true | `echo true` & echo after @@ -125,3 +128,32 @@ ${THIS_SH} -c 'VAR=0; VAR=1 command exec; exit ${VAR}' echo bad ) 2>/dev/null [ $? = 127 ] || echo FAIL: bad exit status $? at $LINENO + +unset FALSE +if [ -x /bin/false ]; then + FALSE=/bin/false +elif [ -x /usr/bin/false ]; then + FALSE=/usr/bin/false +else + FALSE='command false' +fi + +# problem with undoing redirections before running exit trap through bash-4.3 + +${THIS_SH} ./exec12.sub false # function +${THIS_SH} ./exec12.sub command false +${THIS_SH} ./exec12.sub $FALSE + +${THIS_SH} ./exec12.sub notfound +${THIS_SH} ./exec12.sub syntaxerror +${THIS_SH} ./exec12.sub nosuchcommand + +# problem with fork optimization in bash-4.4-alpha + +$THIS_SH -c 'echo a && /bin/echo b && echo c' +$THIS_SH -c 'echo A && /bin/echo B' + +$THIS_SH -c '/bin/echo c && echo d' +$THIS_SH -c '/bin/echo c && /bin/echo d && echo e' + +${THIS_SH} ./exec13.sub diff --git a/tests/exp.right b/tests/exp.right index c027036..9661739 100644 --- a/tests/exp.right +++ b/tests/exp.right @@ -4,6 +4,11 @@ argv[1] = <^?> argv[1] = <^?> argv[1] = <^A> argv[1] = <^?> +argv[1] = +argv[1] = <^A> +argv[1] = <^?> +argv[1] = <^A> +argv[1] = <^?> argv[1] = argv[1] = argv[1] = @@ -205,3 +210,125 @@ argv[1] = argv[2] = argv[1] = argv[2] = +argv[1] = <^A> +argv[1] = <3> +argv[2] = <^C> +argv[3] = <^C> +argv[4] = <^C> +argv[1] = <^A> +argv[1] = +argv[1] = +declare -- var="xyz" +argv[1] = +argv[2] = <--> +argv[3] = +declare -- var="x\001y\177z"$ +argv[1] = <$'x\001y\177z'> +argv[1] = +var=$'x\001y\177z' +./exp8.sub: line 16: xyz: syntax error: invalid arithmetic operator (error token is "z") +declare -a array=() +declare -a array=([0]=$'x\001y\177z') +argv[1] = +declare -a array=([0]=$'x\001y\177z') +declare -A array=([$'x\001y\177z']=$'a\242b\002c' ) +abc +def +ghi +jkl +abc def ghi jkl +xxabc +def +ghi +jklyy +xxabc def ghi jklyy +abc +def +ghi +jkl +abc +def ghi +jkl +abc +def ghi +jkl +abc +def ghi +jkl +xxabc +def +ghi +jklyy +xxabc +def ghi +jklyy +abc +def +ghi +jklabc +def +ghi +jkl +abc +def ghi +jklabc +def ghi +jkl +abc:def ghi:jkl +abc:def ghi:jkl +abc:def ghi:jkl +abc +def ghi +jkl +abc:def ghi:jkl +abc:def ghi:jkl +abc +def ghi +jkl +var=abc:def ghi:jkl +abc:def ghi:jkl +var=abc:def ghi:jkl +abcdef ghijkl +abcdef ghijkl +abcdef ghijkl +abcdef ghijkl +abcdef ghijkl +abcdef ghijkl +abcdef ghijkl +var=abcdef ghijkl +abcdef ghijkl +var=abcdef ghijkl +abc +def ghi +jkl +abc def ghi jkl +abc def ghi jkl +abc def ghi jkl +abc +def +ghi +jkl +abc def ghi jkl +abc def ghi jkl +abc +def +ghi +jkl +var=abc def ghi jkl +abc def ghi jkl +var=abc def ghi jkl +abc +def ghi +jkl +[foo] +[] +[foo] +[] +[foo] +[foo] +[foo] +[] +[foo] +[] +[foo] +[] diff --git a/tests/exp.tests b/tests/exp.tests index 9f77a7f..b446d63 100644 --- a/tests/exp.tests +++ b/tests/exp.tests @@ -31,6 +31,18 @@ recho `echo ` expect "<^?>" recho `echo ` +expect "bar" +recho ${foo:-"`echo bar`"} +expect "<^A>" +recho ${foo:-"`echo `"} +expect "<^?>" +recho ${foo:-"`echo `"} + +expect "<^A>" +recho "`echo `" +expect "<^?>" +recho "`echo `" + # Test null strings without variable expansion expect "" recho abcd""efgh @@ -390,3 +402,6 @@ ${THIS_SH} ./exp4.sub ${THIS_SH} ./exp5.sub ${THIS_SH} ./exp6.sub +${THIS_SH} ./exp7.sub +${THIS_SH} ./exp8.sub +${THIS_SH} ./exp9.sub diff --git a/tests/exp7.sub b/tests/exp7.sub new file mode 100644 index 0000000..0a4acc3 --- /dev/null +++ b/tests/exp7.sub @@ -0,0 +1,11 @@ +IFS=$'\001' +c=$'\001' +c2=$'\003' + +IFS=$c # this is the problem line, IFS should end up being \001 +recho "$IFS" +set -- $c2$c$c2$c$c2 +recho $# "$1" "$2" "$3" + +x=$c +recho "$x" diff --git a/tests/exp8.sub b/tests/exp8.sub new file mode 100644 index 0000000..9934083 --- /dev/null +++ b/tests/exp8.sub @@ -0,0 +1,31 @@ +var=$'x\001y\177z' + +recho "$var" +recho $var + +declare -p var +recho $(declare -p var) + +declare -p var | sed -n l + +recho ${var@Q} +recho ${var@P} +echo ${var@A} + +unset array +array=( [$'x\001y\177z']=foo ) # should be error +echo ${array[@]@A} + +unset array +declare -a array=([0]=$'x\001y\177z') +declare -p array + +unset array +array=( "$var" ) +recho ${array[@]} +echo ${array[@]@A} + +unset array +declare -A array +array=( [$'x\001y\177z']=$'a\242b\002c' ) +echo ${array[@]@A} diff --git a/tests/exp9.sub b/tests/exp9.sub new file mode 100644 index 0000000..a0399c7 --- /dev/null +++ b/tests/exp9.sub @@ -0,0 +1,69 @@ +# expansion test cases from Posix interp 888 + +set "abc" "def ghi" "jkl" +unset novar +IFS=' ' # a space +printf '%s\n' $* +printf '%s\n' "$*" +printf '%s\n' xx$*yy +printf '%s\n' "xx$*yy" +printf '%s\n' $@ +printf '%s\n' "$@" +printf '%s\n' ${1+"$@"} +printf '%s\n' ${novar-"$@"} +printf '%s\n' xx$@yy +printf '%s\n' "xx$@yy" +printf '%s\n' $@$@ +printf '%s\n' "$@$@" +IFS=':' +printf '%s\n' "$*" +var=$*; printf '%s\n' "$var" +var="$*"; printf '%s\n' "$var" +unset var +printf '%s\n' ${var-$*} +printf '%s\n' "${var-$*}" +printf '%s\n' ${var-"$*"} +printf '%s\n' ${var=$*} +printf 'var=%s\n' "$var" +unset var +printf '%s\n' "${var=$*}" +printf 'var=%s\n' "$var" + +IFS='' # null +printf '%s\n' "$*" +var=$*; printf '%s\n' "$var" +var="$*"; printf '%s\n' "$var" +unset var +printf '%s\n' ${var-$*} +printf '%s\n' "${var-$*}" +printf '%s\n' ${var-"$*"} +printf '%s\n' ${var=$*} +printf 'var=%s\n' "$var" +unset var +printf '%s\n' "${var=$*}" +printf 'var=%s\n' "$var" +printf '%s\n' "$@" + +unset IFS +printf '%s\n' "$*" +var=$*; printf '%s\n' "$var" +var="$*"; printf '%s\n' "$var" +unset var +printf '%s\n' ${var-$*} +printf '%s\n' "${var-$*}" +printf '%s\n' ${var-"$*"} +printf '%s\n' ${var=$*} +printf 'var=%s\n' "$var" +unset var +printf '%s\n' "${var=$*}" +printf 'var=%s\n' "$var" +printf '%s\n' "$@" + +set -- +printf '[%s]\n' foo "$*" +printf '[%s]\n' foo "$novar$*$(echo)" +printf '[%s]\n' foo $@ +printf '[%s]\n' foo "$@" +printf '[%s]\n' foo ''$@ +printf '[%s]\n' foo ''"$@" +printf '[%s]\n' foo ''"$novar$@$(echo)" diff --git a/tests/exportfunc.right b/tests/exportfunc.right new file mode 100644 index 0000000..2ee35a7 --- /dev/null +++ b/tests/exportfunc.right @@ -0,0 +1,14 @@ +exportfunc ok 1 +exportfunc ok 2 +./exportfunc.tests: line 24: cve7169-bad: No such file or directory +./exportfunc.tests: eval: line 31: syntax error: unexpected end of file +./exportfunc.tests: line 30: cve7169-bad2: No such file or directory +./exportfunc1.sub: line 1: maximum here-document count exceeded +./exportfunc.tests: line 51: HELLO_WORLD: No such file or directory +eval ok +./exportfunc3.sub: line 10: export: foo=bar: cannot export +status: 1 +equals-1 +bad echo +./exportfunc3.sub: line 23: export: /bin/echo: cannot export +bar diff --git a/tests/exportfunc.tests b/tests/exportfunc.tests new file mode 100644 index 0000000..f5ef54f --- /dev/null +++ b/tests/exportfunc.tests @@ -0,0 +1,71 @@ +# normal operation +foo() +{ + echo exportfunc ok 1 +} +export -f foo +${THIS_SH} -c foo +unset -f foo +foo-a () +{ + echo exportfunc ok 2 +} +export -f foo-a +${THIS_SH} -c 'foo-a' + +# CVE-2014-6271 + +env -i BASH_FUNC_foo%%='() { echo cve6271 ok; } ; echo BAD' ${THIS_SH} -c foo 2>/dev/null + +# CVE-2014-7169 + +rm -f cve7169-bad +env -i BASH_FUNC_X%%='() { (a)=>\' ${THIS_SH} -c cve7169-bad 2>/dev/null +: < cve7169-bad +rm -f cve7169-bad + +echo cve7169-bad2 > $TMPDIR/bar +rm -f cve7169-bad2 +eval 'X() { (a)>\' ; . ./bar 2>/dev/null +: < cve7169-bad2 +rm -f cve7169-bad2 $TMPDIR/bar + +# CVE-2014-7186 +${THIS_SH} ./exportfunc1.sub + +# CVE-2014-7187 +${THIS_SH} ./exportfunc2.sub + +# CVE-2014-6277 + +env BASH_FUNC_foo%%="() { 000(){>0;}&000(){ 0;}<<0 0" ${THIS_SH} -c foo 2>/dev/null +env BASH_FUNC_foo%%="() { 000(){>0;}&000(){ 0;}<<`perl -e '{print "A"x100000}'` 0" ${THIS_SH} -c foo 2>/dev/null +${THIS_SH} -c "f(){ x(){ _;}; x(){ _;}</dev/null + +# CVE-2014-6278 + +env 'BASH_FUNC_FOO%%=() { 0;}>r[0${$(}0 {>"$(id >/dev/tty)"; }' ${THIS_SH} -c : 2>/dev/null + +rm -f HELLO_WORLD +env BASH_FUNC_FOO%%='() { 0;}>r[0${$(}0 {>HELLO_WORLD; }' ${THIS_SH} -c : 2>/dev/null +: < HELLO_WORLD + +env BASH_FUNC_x%%='() { _;}>_[$($())] { echo vuln;}' ${THIS_SH} -c : 2>/dev/null + +env -i BASH_FUNC_x%%='() { _; } >_[${ $() }] { id; }' ${THIS_SH} -c : 2>/dev/null + +env BASH_FUNC_x%%=$'() { _;}>_[$($())]\n{ echo vuln;}' ${THIS_SH} -c : 2>/dev/null +eval 'x() { _;}>_[$($())] { echo vuln;}' 2>/dev/null + +eval 'foo() { _; } >_[${ $() }] ;{ echo eval ok; }' + +# other tests fixed in bash43-030 concerning function name transformation +env $'BASH_FUNC_\nfoo%%=() { echo transform-1; }' ${THIS_SH} -c foo 2>/dev/null +env $'BASH_FUNC_foo\n%%=() { echo transform-2; }' ${THIS_SH} -c foo 2>/dev/null +env $'BASH_FUNC_ foo %%=() { echo transform-3; }' ${THIS_SH} -c foo 2>/dev/null + +unset -f foo +env $'BASH_FUNC_#badname%%'=$'() { :; }\nfoo () { echo transform-4; } ' ${THIS_SH} -c 'foo' 2>/dev/null + +# tests of exported names +${THIS_SH} ./exportfunc3.sub diff --git a/tests/exportfunc1.sub b/tests/exportfunc1.sub new file mode 100644 index 0000000..d9c9fa1 --- /dev/null +++ b/tests/exportfunc1.sub @@ -0,0 +1,21 @@ +cat </dev/null' + +function /bin/echo +{ + echo bad echo +} + +/bin/echo foo +export -f '/bin/echo' + +${THIS_SH} -c '/bin/echo bar' diff --git a/tests/extglob.right b/tests/extglob.right index 837ccc2..efb7e5f 100644 --- a/tests/extglob.right +++ b/tests/extglob.right @@ -92,3 +92,16 @@ a ab a ab a ab a +. .. +. .. a.log +a.log +?(foo) +a.log +a.log +. .. +a.log +.x .y .z +a b c +.x .y .z a b c +a b c +a b c diff --git a/tests/extglob.tests b/tests/extglob.tests index 0fa310a..a51c4db 100644 --- a/tests/extglob.tests +++ b/tests/extglob.tests @@ -370,4 +370,8 @@ ${THIS_SH} ./extglob1.sub ${THIS_SH} ./extglob1a.sub +${THIS_SH} ./extglob3.sub + +${THIS_SH} ./extglob4.sub + exit 0 diff --git a/tests/extglob2.sub b/tests/extglob2.sub new file mode 100644 index 0000000..f4a3b37 --- /dev/null +++ b/tests/extglob2.sub @@ -0,0 +1,7 @@ +LANG=en_US.UTF-8 + +shopt -s extglob +a="aaaäöü" + +echo "${a}" "${a//?aa}" "${a//\aaa}" +exit 0 diff --git a/tests/extglob3.sub b/tests/extglob3.sub new file mode 100644 index 0000000..94567ee --- /dev/null +++ b/tests/extglob3.sub @@ -0,0 +1,21 @@ +shopt -s extglob +DIR=/tmp/extglob-$$ +mkdir $DIR +cd $DIR + +touch a.log + +echo *(.) +echo *(.)* +echo ?(foo)* +echo ?(foo) +echo *(foo)* +echo @(|foo)* + +echo *(foo).* + +echo !(foo)* + +cd $OLDPWD +rm -rf $DIR + diff --git a/tests/extglob4.sub b/tests/extglob4.sub new file mode 100644 index 0000000..2ec8f31 --- /dev/null +++ b/tests/extglob4.sub @@ -0,0 +1,25 @@ +LANG=C +LC_ALL=C + +: ${TMPDIR:=/tmp} +GTDIR=$TMPDIR/extglob4-$$ + +shopt -s extglob +[ -d "${GTDIR}" ] || mkdir "${GTDIR}" +cd "${GTDIR}" || { + echo "extglob4: cannot cd to ${GTDIR}" + exit 2 +} + +touch a b c .x .y .z +echo .!(|.) # correct +echo * # correct + +echo @(*|.!(|.)) # wrong, adds . and .. +echo @(*|@(f)) # ?? +echo @(*|@(ff)) + +cd / +rm -rf $GTDIR + +[[ a = a*?(/)b ]] && echo bad match 1 diff --git a/tests/getopts.right b/tests/getopts.right index 9226103..fff9729 100644 --- a/tests/getopts.right +++ b/tests/getopts.right @@ -54,3 +54,15 @@ remaining args: 0 ./getopts7.sub: line 4: getopts: `opt-var': not a valid identifier remaining args: +opt: x +opt: y +opt: a +opt: b +opt: c +opt: z +$1 = a +./getopts10.sub: line 3: OPTARG: readonly variable +OPTARG = x = ? +unset x = ? +declare -r RO="foo" +declare -r RO="foo" diff --git a/tests/getopts.tests b/tests/getopts.tests index 1814d78..d54190c 100644 --- a/tests/getopts.tests +++ b/tests/getopts.tests @@ -36,3 +36,8 @@ ${THIS_SH} ./getopts6.sub -ac echo $? # this should be 2 ${THIS_SH} ./getopts7.sub -a + +${THIS_SH} ./getopts8.sub +${THIS_SH} ./getopts9.sub + +${THIS_SH} ./getopts10.sub diff --git a/tests/getopts10.sub b/tests/getopts10.sub new file mode 100644 index 0000000..84bacf8 --- /dev/null +++ b/tests/getopts10.sub @@ -0,0 +1,17 @@ +set -- -a bb +readonly OPTARG +getopts :x x + +echo OPTARG = $OPTARG x = $x + +getopts x x +echo ${OPTARG-unset} x = $x + +typeset -r RO=foo +typeset -n OPTARG=RO + +getopts :x x +typeset -p RO + +getopts x x +typeset -p RO diff --git a/tests/getopts5.sub b/tests/getopts5.sub index c6e3888..30614ef 100644 --- a/tests/getopts5.sub +++ b/tests/getopts5.sub @@ -1,4 +1,3 @@ -#!/local/bin/bash #Time-stamp: <95/06/07 07:40:40 hrue@imf.unit.no> getop () { diff --git a/tests/getopts8.sub b/tests/getopts8.sub new file mode 100644 index 0000000..6aeeca6 --- /dev/null +++ b/tests/getopts8.sub @@ -0,0 +1,13 @@ +f() +{ + typeset OPTIND=1 + typeset opt + + while getopts ":abcxyz" opt + do + echo opt: "$opt" + if [[ $opt = y ]]; then f -abc ; fi + done +} + +f -xyz diff --git a/tests/getopts9.sub b/tests/getopts9.sub new file mode 100644 index 0000000..fafb067 --- /dev/null +++ b/tests/getopts9.sub @@ -0,0 +1,16 @@ +f() +{ + OPTIND=4 + + echo \$1 = $1 +} + +main() +{ +while getopts abcdefg opt +do + f $opt +done +} + +main -abc diff --git a/tests/globstar.right b/tests/globstar.right index c104fd3..69030c4 100644 --- a/tests/globstar.right +++ b/tests/globstar.right @@ -582,4 +582,3 @@ bar/foo/e bar/foo/f foo/a foo/b -/tmp/empty diff --git a/tests/globstar2.sub b/tests/globstar2.sub index 844d312..f4bb1b1 100644 --- a/tests/globstar2.sub +++ b/tests/globstar2.sub @@ -1,3 +1,6 @@ +olddir=$PWD +EMPTY=/tmp/empty + shopt -s globstar s() { @@ -8,8 +11,8 @@ p() printf '<%q>\n' "$@" } -mkdir -p /tmp/empty/a/a/a -cd /tmp/empty +mkdir -p $EMPTY/a/a/a +cd $EMPTY # good p ** @@ -17,8 +20,8 @@ p **/** p **/**/** rm -rf a -mkdir -p /tmp/empty/{a,b}/{a,b}/{a,b}/{a,b} -cd /tmp/empty +mkdir -p $EMPTY/{a,b}/{a,b}/{a,b}/{a,b} +cd $EMPTY # good s '**/a' @@ -76,5 +79,5 @@ p **/a/**/**/** s '**/**/a/**' p **/**/a/** -cd - -rm -rf /tmp/empty +cd "$olddir" +rm -rf $EMPTY diff --git a/tests/heredoc.right b/tests/heredoc.right index 6abaa1f..137a295 100644 --- a/tests/heredoc.right +++ b/tests/heredoc.right @@ -59,13 +59,13 @@ qux bar qux abc def geh -./heredoc3.sub: line 6: warning: here-document at line 4 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 9: warning: here-document at line 7 delimited by end-of-file (wanted `EOF') = here is the text = -./heredoc3.sub: line 12: warning: here-document at line 10 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 15: warning: here-document at line 13 delimited by end-of-file (wanted `EOF') this paren ) is not a problem -./heredoc3.sub: line 18: warning: here-document at line 16 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 21: warning: here-document at line 19 delimited by end-of-file (wanted `EOF') these balanced parens ( ) are not a problem -./heredoc3.sub: line 24: warning: here-document at line 22 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 27: warning: here-document at line 25 delimited by end-of-file (wanted `EOF') quoted balanced parens \( ) are not a problem either more text in a subshell some more text in a different subshell @@ -76,15 +76,14 @@ ENDEND end ENDEND hello end hello -x star x end x*x helloEND end helloEND hello \END end hello\END -./heredoc3.sub: line 74: warning: here-document at line 72 delimited by end-of-file (wanted `EOF') -./heredoc3.sub: line 75: syntax error: unexpected end of file +./heredoc3.sub: line 78: warning: here-document at line 76 delimited by end-of-file (wanted `EOF') +./heredoc3.sub: line 79: syntax error: unexpected end of file comsub here-string ./heredoc.tests: line 105: warning: here-document at line 103 delimited by end-of-file (wanted `EOF') hi diff --git a/tests/heredoc3.sub b/tests/heredoc3.sub index 73a111e..baf91c1 100644 --- a/tests/heredoc3.sub +++ b/tests/heredoc3.sub @@ -1,3 +1,6 @@ +SAVEPWD=$PWD +cd $TMPDIR || echo "heredoc3.sub: cannot cd to $TMPDIR" >&2 + text=$(cat </dev/null & touch 'x*x' x star x x*x +wait $! echo end 'x*x' rm 'x*x' diff --git a/tests/herestr.right b/tests/herestr.right index 80b01cf..03f38ed 100644 --- a/tests/herestr.right +++ b/tests/herestr.right @@ -24,5 +24,8 @@ f3 () echo $(echo hi) echo ho echo off to work we go -declare -a uu='([0]="" [1]="kghfjk" [2]="jkfzuk" [3]="i -")' +declare -a uu=([0]="" [1]="kghfjk" [2]="jkfzuk" [3]=$'i\n') +foo bar +foo bar +qux:::::bax +qux:::::bax diff --git a/tests/herestr.tests b/tests/herestr.tests index f77b229..607f85e 100644 --- a/tests/herestr.tests +++ b/tests/herestr.tests @@ -37,3 +37,5 @@ cat <<< "echo $(echo off to work we go)" IFS="/" read -r -d $'\000' -a uu <<< /kghfjk/jkfzuk/i declare -p uu + +${THIS_SH} ./herestr1.sub diff --git a/tests/herestr1.sub b/tests/herestr1.sub new file mode 100644 index 0000000..0cf8082 --- /dev/null +++ b/tests/herestr1.sub @@ -0,0 +1,10 @@ +# problems with word splitting unquoted here-strings present since bash-3.2 + +x="foo bar" +cat <<< $x # Word-splitting appears to collapse the run of whitespace +cat <<< "$x" # Whitespace preserved, as with here doc + +x="qux:::::bax" +IFS=':' +cat <<< $x # Word-splitting appears to collapse the run of whitespace +cat <<< "$x" # Whitespace preserved, as with here doc diff --git a/tests/histexp.right b/tests/histexp.right index f1c9e9d..ed6e089 100644 --- a/tests/histexp.right +++ b/tests/histexp.right @@ -127,3 +127,70 @@ echo '!!' \!\! ok 1 ok 2 ok 3 +echo shopt a +shopt a +echo a b c d 2> /dev/null +a b c d +one two three four +echo two ; echo four +one two three four +echo four ; echo two +! +! +! +! +! +! +! +! +! +\! +\! +\! +\! +a +b +c +echo "#!/bin/bash" set -o posix +#!/bin/bash set -o posix +!! +!! +a +echo $(echo echo a) +echo a +a +echo echo a $(echo echo a) +echo a echo a +b +!! $(echo !!) +c +echo "echo c" "$(echo echo c)" +echo c echo c +d +echo "echo d" $(echo "echo d") +echo d echo d +e +!! !! +f +!! +f +!! +g +echo "echo g" +echo g +g +eval echo "echo g" +echo g +a +cat < <(echo echo a) +echo a +b +echo echo b `echo echo b` +echo b echo b +c +! +d +! +e +! ! +./histexp4.sub: line 20: !': event not found diff --git a/tests/histexp.tests b/tests/histexp.tests index add2a67..99c7520 100644 --- a/tests/histexp.tests +++ b/tests/histexp.tests @@ -122,3 +122,21 @@ echo ${!var2} # Bash-2.01[.1] fails this test -- it attempts history expansion after the # history_comment_char echo ok 3 # !1200 + +# bash versions through bash-4.3 fail this; they make the digit preceding the +# > into a separate word, changing the meaning of the redirection +shopt a b c d 2>/dev/null +echo !shopt-1 + +echo !shopt* + +# make sure a :p modifier anywhere on the line affects all history expansions +echo one two three four +echo !:2:p ; echo !$ +echo one two three four +echo !$ ; echo !:2:p + +${THIS_SH} ./histexp1.sub +${THIS_SH} ./histexp2.sub +${THIS_SH} ./histexp3.sub +${THIS_SH} ./histexp4.sub diff --git a/tests/histexp1.sub b/tests/histexp1.sub new file mode 100644 index 0000000..a5948f1 --- /dev/null +++ b/tests/histexp1.sub @@ -0,0 +1,23 @@ +LC_ALL=C +LANG=C + +set -o history +set -H + +echo '!' +echo "!" +echo ! + +echo "$( echo '!' )" +echo "$( echo "!" )" +echo "$( echo ! )" + +echo $( echo '!' ) +echo $( echo "!" ) +echo $( echo ! ) + +echo "$( echo "\!" )" +echo "\!" + +echo "$( echo '\!' )" +echo '\!' diff --git a/tests/histexp2.sub b/tests/histexp2.sub new file mode 100644 index 0000000..bb5bfda --- /dev/null +++ b/tests/histexp2.sub @@ -0,0 +1,14 @@ +LANG=C LC_ALL=C + +set -o history +echo a +echo b +echo c + +set -o histexpand +set -o posix + +echo "#!/bin/bash" !! + +echo '!!' +echo "!!" diff --git a/tests/histexp3.sub b/tests/histexp3.sub new file mode 100644 index 0000000..ae2b498 --- /dev/null +++ b/tests/histexp3.sub @@ -0,0 +1,35 @@ +HISTFILE=${TMPDIR}/bashhist-$$ + +set -o history +set -o histexpand + +echo a +echo $(echo !!) + +echo a +echo !! $(echo !!) + +echo b +echo '!!' '$(echo !!)' + +echo c +echo "!!" "$(echo !!)" + +echo d +echo "!!" $(echo "!!") + +echo e +echo '!!' $(echo '!!') + +echo f +echo '!!' +echo f +eval echo '!!' + +echo g +echo "!!" +echo g +eval echo "!!" + +set +o history +rm -f $HISTFILE # just in case diff --git a/tests/histexp4.sub b/tests/histexp4.sub new file mode 100644 index 0000000..ddc3bb3 --- /dev/null +++ b/tests/histexp4.sub @@ -0,0 +1,23 @@ +HISTFILE=$TMPDIR/bashhist-$$ + +set -o history +set -o histexpand + +echo a +cat < <(echo !!) + +echo b +echo !! `echo !!` + +echo c +echo "$(echo "!" )" + +echo d +echo "$(echo '!' )" + +echo e +echo '!' "!" +echo "'!'" + +set +o history +rm -f $HISTFILE diff --git a/tests/history.right b/tests/history.right index 3dc93a1..de8e22b 100644 --- a/tests/history.right +++ b/tests/history.right @@ -140,7 +140,7 @@ three one two three -4.3 +4.4 echo ${BASH_VERSION%\.*} -4.3 +4.4 echo ${BASH_VERSION%\.*} diff --git a/tests/history.tests b/tests/history.tests index 25d7834..f976fbd 100644 --- a/tests/history.tests +++ b/tests/history.tests @@ -109,6 +109,6 @@ shopt -q -o history echo $? ${THIS_SH} ./history1.sub -rm foohist-* +rm -f $TMPDIR/foohist-* ${THIS_SH} ./history2.sub diff --git a/tests/history1.sub b/tests/history1.sub index fa51ffc..091b1ed 100644 --- a/tests/history1.sub +++ b/tests/history1.sub @@ -1,6 +1,6 @@ trap 'rm -f $HISTFILE' 0 1 2 3 6 15 -HISTFILE=foohist-$$ +HISTFILE=$TMPDIR/foohist-$$ unset HISTIGNORE HISTCONTROL set -o history diff --git a/tests/intl.right b/tests/intl.right index acf108a..006318e 100644 --- a/tests/intl.right +++ b/tests/intl.right @@ -17,35 +17,40 @@ aéb 1.0000 1.0000 1,0000 +1 +bytematch +0000000 254 012 +0000002 Passed all 1378 Unicode tests -0000000 303 277 012 +0000000 303 277 012 0000003 -0000000 303 277 012 +0000000 303 277 012 0000003 -0000000 303 277 012 +0000000 303 277 012 0000003 -0000000 303 277 012 +0000000 303 277 012 0000003 -0000000 357 277 277 012 +0000000 357 277 277 012 0000004 -0000000 357 277 277 012 +0000000 357 277 277 012 0000004 -0000000 012 +0000000 012 0000001 -0000000 012 +0000000 012 0000001 -0000000 012 +0000000 012 0000001 -0000000 012 +0000000 012 0000001 -0000000 303 277 012 +0000000 303 277 012 0000003 -0000000 303 277 012 +0000000 303 277 012 0000003 -0000000 303 277 012 +0000000 303 277 012 0000003 -0000000 101 040 302 243 040 305 222 012 +0000000 101 040 302 243 040 305 222 012 0000010 -./unicode3.sub: line 2: 5§@3™+ÆS8Ÿ¢ê³: command not found -5§@3™+ÆS8Ÿ¢ê³ +./unicode3.sub: line 3: $'5\247@3\231+\306S8\237\242\352\263': command not found +./unicode3.sub: line 5: cd: $'5\247@3\231+\306S8\237\242\352\263': No such file or directory +$'5\247@3\231+\306S8\237\242\352\263' + : $'5\247@3\231+\306S8\237\242\352\263' diff --git a/tests/intl.tests b/tests/intl.tests index 3844fa8..5c15b47 100644 --- a/tests/intl.tests +++ b/tests/intl.tests @@ -35,8 +35,10 @@ esac set a b printf '%s\n' "$*" -# squeeze out blanks to avoid white space differences in od implementations -printf '%s' "$*" | od -b | ( IFS=$' \t\n' ; while read line; do echo $line; done; ) + +. ./test-glue-functions + +printf '%s' "$*" | od -b | _intl_normalize_spaces # display differences make this problematic ${THIS_SH} ./intl1.sub @@ -44,6 +46,9 @@ ${THIS_SH} ./intl1.sub # this tests both international handling in printf and temporary environments ${THIS_SH} ./intl2.sub +# test splitting on characters instead of bytes +${THIS_SH} ./intl3.sub + ${THIS_SH} ./unicode1.sub 2>/dev/null ${THIS_SH} ./unicode2.sub diff --git a/tests/intl3.sub b/tests/intl3.sub new file mode 100644 index 0000000..650000e --- /dev/null +++ b/tests/intl3.sub @@ -0,0 +1,23 @@ +. ./test-glue-functions + +# more tests to make sure that IFS splits on characters, not bytes +export LANG=en_US.UTF-8 + +euro=$'\342\202\254' +o342=$'\342' +o202=$'\202' +o254=$'\254' + +IFS=$o254 +t=+$euro+ +set -- $t + +echo "$#" + +# but matching still occurs on bytes if we don't have a valid multibyte char +case $euro in +*$o202*) echo bytematch ;; +*) echo mbchar match ;; +esac + +echo "${euro##*$o202}" | od -b | _intl_normalize_spaces diff --git a/tests/jobs.right b/tests/jobs.right index 7af54eb..c3ee944 100644 --- a/tests/jobs.right +++ b/tests/jobs.right @@ -61,7 +61,7 @@ fg: usage: fg [job_spec] ./jobs.tests: line 99: bg: -s: invalid option bg: usage: bg [job_spec ...] ./jobs.tests: line 104: disown: -s: invalid option -disown: usage: disown [-h] [-ar] [jobspec ...] +disown: usage: disown [-h] [-ar] [jobspec ... | pid ...] ./jobs.tests: line 108: disown: %1: no such job ./jobs.tests: line 111: disown: %2: no such job wait-for-non-child diff --git a/tests/lastpipe.right b/tests/lastpipe.right index 23fe089..cca5938 100644 --- a/tests/lastpipe.right +++ b/tests/lastpipe.right @@ -8,3 +8,13 @@ last = c 1 -- 0 0 1 1 -- 0 1 0 lastpipe1.sub returns 14 +A1 +A2 +B1 +B2 +HI +A1 +A2 +B1 +B2 +HI -- 42 -- 0 42 diff --git a/tests/lastpipe.tests b/tests/lastpipe.tests index 13fa214..16dc841 100644 --- a/tests/lastpipe.tests +++ b/tests/lastpipe.tests @@ -56,3 +56,6 @@ set +o pipefail ${THIS_SH} ./lastpipe1.sub echo lastpipe1.sub returns $? + +${THIS_SH} ./lastpipe2.sub + diff --git a/tests/lastpipe2.sub b/tests/lastpipe2.sub new file mode 100644 index 0000000..3bcc37d --- /dev/null +++ b/tests/lastpipe2.sub @@ -0,0 +1,30 @@ +shopt -s lastpipe +echo -e 'A\nB' | while read letter; do + echo -e '1\n2' | while read digit; do + echo $letter$digit + done +done + +myPipefunc() +{ + cat | tee $TMPDIR/outfile +} +echo HI | myPipefunc + +echo -e 'A\nB' | while read letter; do + echo -e '1\n2' | while read digit; do + echo $letter$digit | myPipefunc + done +done + +rm -f $TMPDIR/outfile + +unset -f myPipefunc +myPipefunc() +{ + cat | read var + return 42 +} +echo HI | myPipefunc + +echo $var -- $? -- ${PIPESTATUS[@]} diff --git a/tests/mapfile.right b/tests/mapfile.right index 9fd4bb5..143d6dd 100644 --- a/tests/mapfile.right +++ b/tests/mapfile.right @@ -162,3 +162,8 @@ foo 3 4 foo 4 5 +0 abc +1 def +2 ghi +3 jkl +abc def ghi jkl diff --git a/tests/mapfile.tests b/tests/mapfile.tests index a9170c1..ff8da32 100644 --- a/tests/mapfile.tests +++ b/tests/mapfile.tests @@ -40,3 +40,5 @@ for (( i = 0 ; i < ${#E[@]} ; i++ )); do done ${THIS_SH} ./mapfile1.sub + +${THIS_SH} ./mapfile2.sub diff --git a/tests/mapfile2.sub b/tests/mapfile2.sub new file mode 100644 index 0000000..771a992 --- /dev/null +++ b/tests/mapfile2.sub @@ -0,0 +1,6 @@ +# test mapfile -d DELIM functionality added after bash-4.3 + +printf "abc\0def\0ghi\0jkl\0" | { + mapfile -C echo -c 1 -d '' A + echo "${A[@]}" +} diff --git a/tests/nameref.right b/tests/nameref.right index 5321534..5300259 100644 --- a/tests/nameref.right +++ b/tests/nameref.right @@ -27,13 +27,15 @@ changevar: expect argv[1] = expect argv[1] = -./nameref.tests: line 93: bar: readonly variable +./nameref.tests: line 93: foo: readonly variable ./nameref.tests: line 94: foo: readonly variable one one ./nameref.tests: line 106: foo: readonly variable ./nameref.tests: line 103: foo: readonly variable one +abxde +abxde one bar @@ -109,6 +111,7 @@ 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 42 -- 0 @@ -118,12 +121,291 @@ y -- 0 y -- 0 bar unset +./nameref8.sub: line 3: typeset: warning: v: circular name reference +./nameref8.sub: line 3: warning: v: circular name reference +./nameref8.sub: line 5: warning: v: circular name reference inside inside: two outside: +./nameref8.sub: line 29: typeset: warning: x: circular name reference +./nameref8.sub: line 29: warning: x: circular name reference +./nameref8.sub: line 31: warning: x: circular name reference foo +./nameref8.sub: line 38: typeset: warning: v: circular name reference +./nameref8.sub: line 38: warning: v: circular name reference +./nameref8.sub: line 38: warning: v: circular name reference local ./nameref8.sub: line 47: typeset: v: nameref variable self references not allowed ./nameref8.sub: line 54: warning: x: circular name reference ./nameref8.sub: line 55: warning: x: circular name reference x = +idx2 +idX2 +idx2 +idX2 +declare -n foo="x[\$zero]" +42 +declare -a x=([0]="4") +declare -n foo="x[\$(echo 0)]" +4 +comsub +x[i=0] +comsub +4 +comsub +4 +comsub +4 +declare -n foo="somevariable" +./nameref10.sub: line 38: typeset: somevariable: not found +foo = +declare -n foo="somevariable" +declare -A somevariable=([jug]="brown" ) +declare -n foo="somevariable" +declare -A somevariable=([jug]="brown" ) +declare -n foo="somevariable" +./nameref10.sub: line 49: typeset: somevariable: not found +./nameref10.sub: line 51: typeset: foo: not found +./nameref10.sub: line 51: typeset: somevariable: not found +declare -n foo="bar" +./nameref10.sub: line 55: typeset: bar: not found +declare -n foo="bar" +./nameref10.sub: line 57: typeset: bar: not found +declare -n foo="bar" +declare -i bar="8" +8 +declare -n foo="bar" +./nameref10.sub: line 64: typeset: bar: not found +./nameref11.sub: line 1: declare: `/': invalid variable name for name reference +./nameref11.sub: line 2: declare: `/': invalid variable name for name reference +./nameref11.sub: line 3: `/': not a valid identifier +./nameref11.sub: line 4: declare: `/': not a valid identifier +./nameref11.sub: line 5: `/': not a valid identifier +1) / +#? ./nameref11.sub: line 6: `/': not a valid identifier +x + +./nameref11.sub: line 7: ((: `0': not a valid identifier +./nameref11.sub: line 8: declare: `0': invalid variable name for name reference +./nameref11.sub: line 9: declare: `/': invalid variable name for name reference +./nameref11.sub: line 10: declare: `/': invalid variable name for name reference +/ +./nameref11.sub: line 12: `/': not a valid identifier +./nameref11.sub: line 13: exec: `10': not a valid identifier +./nameref11.sub: line 13: r: cannot assign fd to variable +./nameref11.sub: line 14: warning: r: removing nameref attribute +63 +./nameref11.sub: line 15: declare: RO: readonly variable +./nameref11.sub: line 15: RO: readonly variable +./nameref11.sub: line 16: declare: `/': invalid variable name for name reference +/ +./nameref11.sub: line 17: declare: `/': invalid variable name for name reference +./nameref11.sub: illegal option -- h +./nameref11.sub: line 18: getopts: `?': not a valid identifier +./nameref11.sub: line 19: warning: r: removing nameref attribute +declare -a r=() +./nameref11.sub: line 20: declare: r: reference variable cannot be an array +./nameref11.sub: line 21: printf: `/': not a valid identifier +./nameref11.sub: line 23: `': not a valid identifier +./nameref11.sub: line 24: declare: `': not a valid identifier +./nameref11.sub: line 25: `': not a valid identifier +./nameref11.sub: line 26: printf: `': not a valid identifier +./nameref11.sub: line 27: declare: `': invalid variable name for name reference +declare -r ROVAR="42" +./nameref11.sub: line 32: ROVAR: readonly variable +./nameref11.sub: line 32: ROVAR: cannot unset: readonly variable +declare -r ROVAR="42" +./nameref11.sub +./nameref11.sub: line 34: `@': not a valid identifier +./nameref11.sub +declare -n ref="x" +./nameref11.sub: line 39: RO: readonly variable +declare -r RO_PID +./nameref11.sub: line 39: RO: cannot unset: readonly variable +declare -r RO="x" +./nameref11.sub: line 39: declare: RO_PID: not found +./nameref11.sub: line 41: RO2: readonly variable +declare -r RO2="a" +./nameref12.sub: line 6: declare: `/': invalid variable name for name reference +./nameref12.sub: line 9: declare: `%': invalid variable name for name reference +./nameref12.sub: line 13: `^': not a valid identifier +declare -n r +declare -a foo +declare -a foo=([0]="7") +./nameref12.sub: line 26: declare: `42': not a valid identifier +./nameref12.sub: line 27: declare: x: not found +declare -nr RO="foo" +/ +./nameref12.sub: line 45: declare: `7*6': not a valid identifier +./nameref12.sub: line 45: declare: foo: not found +./nameref12.sub: line 47: `7*6': not a valid identifier +declare -n ref="var" +declare -n ref="var" +./nameref12.sub: line 74: readonly: `var[0]': not a valid identifier +declare -- var="foo" +declare -r var2="foo" +declare -n ref="var" +declare -a var=([0]="foo") +./nameref12.sub: line 91: `': not a valid identifier +declare -n ref +declare -- ref="global" +declare -a var=([0]="foo2") +./nameref12.sub: line 100: declare: global: not found +declare -- a +declare -n r="a" +declare -- a +declare -n r="a" +0 +declare -n r="P" +declare -n ref="var" +declare -- a +declare -n r="a" +0 +declare -n r +declare -n r +./nameref13.sub: line 88: typeset: `12345': invalid variable name for name reference +declare -n foo +./nameref13.sub: line 97: typeset: `12345': invalid variable name for name reference +declare -n foo +declare -nx ref="var" +var +var +var +var +foo +foo +foo +foo +before +declare -n ref="var" +./nameref14.sub: line 23: typeset: var: not found +first +declare -n ref="var" +declare -x var="xxx" +invalid +declare -n ref="var" +declare -x var="5" +after +declare -n ref="var" +./nameref14.sub: line 32: typeset: var: not found +declare -n ref="var" +./nameref15.sub: line 1: local: warning: a: circular name reference +./nameref15.sub: line 1: warning: a: circular name reference +./nameref15.sub: line 1: `a[0]': not a valid identifier +declare -a a=([0]="0") +./nameref15.sub: line 1: local: warning: a: circular name reference +./nameref15.sub: line 1: warning: a: circular name reference +./nameref15.sub: line 1: warning: a: circular name reference +declare -a a=([0]="X") +declare -a b=([0]="X") +./nameref15.sub: line 1: local: warning: a: circular name reference +./nameref15.sub: line 1: warning: a: circular name reference +./nameref15.sub: line 1: `a[0]': not a valid identifier +declare -a b=([0]="0") +./nameref15.sub: line 19: typeset: warning: ref: circular name reference +./nameref15.sub: line 19: warning: ref: circular name reference +./nameref15.sub: line 20: warning: ref: circular name reference +./nameref15.sub: line 21: warning: ref: circular name reference +inside +outside X +./nameref15.sub: line 29: typeset: ref: nameref variable self references not allowed +./nameref15.sub: line 31: ref: nameref variable self references not allowed +declare -n ref="re" +declare -n ref="re" +declare -- re="4" +4 +declare -n foo="var[@]" +declare -n ref="var[@]" +./nameref15.sub: line 48: var[@]: bad array subscript +declare -n bar="var[@]" +./nameref15.sub: line 53: var[@]: bad array subscript +declare -n a="b" +declare -n b="a[1]" +./nameref15.sub: line 61: warning: a: removing nameref attribute +declare -a a=([1]="foo") +declare -n b="a[1]" +./nameref15.sub: line 66: warning: a: removing nameref attribute +declare -a a=([1]="foo") +declare -n b="a[1]" +declare -n n="v" +declare -a v=([1]="1") +./nameref15.sub: line 82: typeset: n: not found +declare -a v=([0]="0" [1]="1") +declare -n n="v[1]" +declare -a v=([0]="0") +declare -n r1="y" +declare -n r2="x" +./nameref16.sub: line 12: typeset: x: not found +./nameref16.sub: line 12: typeset: y: not found +declare -n r1="y" +declare -n r2="x" +./nameref16.sub: line 21: typeset: x: not found +./nameref16.sub: line 21: typeset: y: not found +declare -n r1="y" +declare -n r2="x" +./nameref16.sub: line 33: typeset: x: not found +./nameref16.sub: line 33: typeset: y: not found +declare -n r1="y" +declare -n r2="x" +declare -- x="one" +declare -- y="two" +./nameref17.sub: line 8: declare: bar: not found +./nameref17.sub: line 9: unset: foo0: cannot unset: readonly variable +declare -nr foo0="bar" +declare -nr foo0="bar" +declare -- bar +./nameref17.sub: line 14: declare: foo0: readonly variable +./nameref17.sub: line 15: declare: foo0: readonly variable +declare -nr foo1 +./nameref17.sub: line 24: typeset: foo1: readonly variable +declare -nr foo1 +declare -n foo2="bar" +declare -r bar +./nameref17.sub: line 35: bar: readonly variable +./nameref17.sub: line 36: typeset: bar: readonly variable +declare -n foo2="bar" +declare -r bar +declare -- bar3="three" +./nameref17.sub: line 46: unset: foo3: cannot unset: readonly variable +./nameref17.sub: line 49: declare: bar3: readonly variable +declare -nr foo3="bar3" +declare -r bar3="three" +./nameref17.sub: line 51: declare: foo3: readonly variable +declare -nr foo4="bar4" +declare -- bar4="four" +./nameref17.sub: line 63: typeset: foo4: readonly variable +declare -nr foo4="bar4" +declare -nr foo4="bar4" +declare -- bar4="four" +./nameref17.sub: line 79: typeset: foo4: readonly variable +declare -nr foo4="bar4" +declare -nr foo4="bar4" +declare -- bar4="four" +declare -nr foo5 +declare -r foo5 +declare -nr foo5 +declare -r foo5 +./nameref18.sub: line 2: mapfile: `XXX[0]': not a valid identifier +./nameref18.sub: line 3: declare: XXX[0]: not found +./nameref18.sub: line 9: `XXX[0]': not a valid identifier +./nameref18.sub: line 10: declare: XXX[0]: not found +declare -n ref="XXX[0]" +declare -a XXX=([0]="4") +./nameref18.sub: line 24: `XXX[0]': not a valid identifier +declare -n ref="XXX[0]" +./nameref18.sub: line 25: declare: XXX[0]: not found +./nameref18.sub: line 29: read: `XXX[0]': not a valid identifier +./nameref18.sub: line 30: declare: XXX[0]: not found +./nameref18.sub: line 35: `XXX[0]': not a valid identifier +declare -n ref="XXX[0]" +./nameref18.sub: line 38: `XXX[0]': not a valid identifier +./nameref18.sub: line 38: declare: XXX[0]: not found +declare -n ref="var[123]" +./nameref18.sub: line 46: declare: var[123]: not found +declare -a var=([123]="") +declare -n ref="var[123]" +./nameref18.sub: line 50: declare: var[123]: not found +declare -a var=([123]="") +declare -n ref="var[123]" +./nameref18.sub: line 54: declare: var[123]: not found +declare -a var=([123]="X") diff --git a/tests/nameref.tests b/tests/nameref.tests index 438133c..f4af904 100644 --- a/tests/nameref.tests +++ b/tests/nameref.tests @@ -108,11 +108,13 @@ readonly foo=one assignvar foo two three four echo $foo -${THIS_SH} ./nameref1.sub -${THIS_SH} ./nameref2.sub -${THIS_SH} ./nameref3.sub -${THIS_SH} ./nameref4.sub -${THIS_SH} ./nameref5.sub -${THIS_SH} ./nameref6.sub -${THIS_SH} ./nameref7.sub -${THIS_SH} ./nameref8.sub +var=abcde +x=var +declare -n v=var +# these two should display the same +echo ${!x//c/x} +echo ${v//c/x} + +for testfile in ./nameref[0-9].sub ./nameref[1-9][0-9].sub ; do + ${THIS_SH} "$testfile" +done diff --git a/tests/nameref10.sub b/tests/nameref10.sub new file mode 100644 index 0000000..2a1ba35 --- /dev/null +++ b/tests/nameref10.sub @@ -0,0 +1,64 @@ +# testing behavior of command substitution as one of expansions performed by +# array subscripting; should behave the same directly as when done through +# a nameref + +x[0]=42 +zero=0 +f() { typeset -n foo="$1"; declare -p foo; echo "$foo"; } + +f 'x[$zero]' + +x[$(echo 0)]=4 +declare -p x + +f 'x[$(echo 0)]' + +unset -f f +f() +{ + typeset -n foo="$1"; + + echo "x[i=0$(echo comsub >&2)]" + echo "${x[i=0$(echo comsub >&2)]}" + echo "${!1}" + echo "$foo" +} + +f 'x[i=0$(echo comsub >&2)]' + +unset -f f +unset x + +# problems with unset and namerefs pointing to non-existent variables pointed +# out after bash-4.3 released + +typeset -n foo=somevariable +foo=bar +unset foo # unsets somevariable +typeset -p foo somevariable +echo foo = $foo + +typeset -A foo # should create array variable named somevariable +foo["jug"]="brown" + +typeset -p foo somevariable +typeset -A foo='([jug]="brown" )' +typeset -p foo somevariable + +unset foo +typeset -p foo somevariable +unset -n foo +typeset -p foo somevariable + +unset bar +typeset -n foo=bar +typeset -p foo bar +unset foo +typeset -p foo bar +typeset -i foo +foo=4+4 +typeset -p foo bar +echo "$foo" + +unset foo +typeset -p foo bar diff --git a/tests/nameref11.sub b/tests/nameref11.sub new file mode 100644 index 0000000..85feedf --- /dev/null +++ b/tests/nameref11.sub @@ -0,0 +1,41 @@ +r=/; declare -n r ; unset r +declare -n r=/ ; unset -n r +declare -n r; r=/ ; unset -n r +declare -n r; declare r=/ ; unset -n r +declare -n r; for r in /; do :; done ; unset -n r +declare -n r; select r in /; do :; done <<< 1; echo x; echo $r ; unset -n r +declare -n r; ((r=0)) ; unset -n r +((r=0)); declare -n r ; unset -n r +r=/ declare -n r ; unset -n r +f() { declare -n r; }; r=/ f ; unset r +f() { echo $r; }; declare -n r; r=/ f ; unset -n r +declare -n r; : ${r:=/} ; unset -n r +declare -n r; exec {r}>/dev/null ; unset -n r +declare -n r; coproc r { :; }; echo $r ; unset r ; wait +declare -r RO=x; r=$RO; declare -n r; x=y; declare -n RO; RO=z; declare -p RO; echo "$RO" +s=/; declare -n r=s; declare -n s; echo $r ; unset -n r ; unset -n s +declare -n r=s; declare -n s; s=/ ; unset -n r; unset -n s +declare -n r; getopts x r -h ; unset r; unset -n r +declare -n r; mapfile r < /dev/null ; declare -p r; unset r ; unset -n r +mapfile r < /dev/null; declare -n r ; unset r ; unset -n r +declare -n r; printf -v r / ; unset -n r + +declare -n r; r="" ; unset -n r +declare -n r="" ; unset -n r +declare -n r; : ${r=} ; unset -n r +declare -n r; printf -v r '' ; unset -n r +r=""; declare -n r ; unset -n r +export r + +# coproc tests, since coproc sets and unsets variables +declare -r ROVAR=42 +declare -p ROVAR; coproc ROVAR { :; }; wait; declare -p ROVAR + +echo ${@:0}; coproc @ { :; }; wait ; echo ${@:0} + +declare -n ref=x; coproc ref { :; }; wait ; declare -p ref +unset -n ref ; unset ref + +declare -r RO RO_PID; coproc RO { :; }; declare -p RO_PID; wait; declare -p RO RO_PID + +declare -r RO2=a; declare -n ref_PID=RO2; coproc ref { :; }; wait; declare -p RO2 diff --git a/tests/nameref12.sub b/tests/nameref12.sub new file mode 100644 index 0000000..24c3370 --- /dev/null +++ b/tests/nameref12.sub @@ -0,0 +1,100 @@ +declare -n r +declare -n r +unset -n r + +r=foo +declare -n r=/ + +r=% +declare -n r +unset r + +declare -n r +r=^ +declare -p r + +unset -n r + +declare -n foo +declare -a foo +declare -p foo +foo[0]=7 +declare -p foo +unset foo + +declare -n x +declare x=42 +declare -p x + +declare -n -r RO=foo +declare -p RO + +unset -n r; unset r + +# the details of this may change; currently we put namerefs and values into +# the tempenv if the nameref value is an invalid variable name +f() { echo $r; } + +declare -n r +r=/ ${THIS_SH} < /dev/null +r=/ f + +unset -f f + +# the details of this may change; this will tell me when they do +declare -n foo ; declare -i foo=7*6 ; declare -p foo +unset -n foo +declare -n foo ; declare -i foo ; foo=7*6 ; declare -p foo + +# used to be buggy +f() +{ + unset var + declare -n ref=var + declare -n ref + declare -p ref +} +f + +unset -f f +f() +{ + local var + declare -n ref=var + declare -n ref + declare -p ref +} +f + +unset ref; unset -n ref +unset var + +var=foo +typeset -n ref=var[0] +readonly ref +typeset -p var + +var2=foo +typeset -n ref2=var2 +readonly ref2 +typeset -p var2 + +unset var +unset -n ref ref2 + +unset var; typeset -n ref=var +ref[0]=foo +typeset -p ref var +unset -n ref + +unset var; typeset -n ref +ref[0]=foo +typeset -p ref +unset -n ref + +ref=global +f() { declare -n ref=var; ref[0]=foo1; }; f +f() { declare -n ref=var; ref[0]=foo2; }; f +declare -p ref var + +declare -p global diff --git a/tests/nameref13.sub b/tests/nameref13.sub new file mode 100644 index 0000000..556fbdb --- /dev/null +++ b/tests/nameref13.sub @@ -0,0 +1,102 @@ +declare -nt r=a + +f() +{ + declare a + declare -n r=a + declare -p a r +} + +f +unset -f f + +f() +{ + declare a + declare -n r + r=a + declare -p a r +} +f +echo $? + +unset -f f + +P=12345 +function foo +{ + typeset -n r + typeset -n r=P + typeset -p r +} + +foo +unset P foo + +ref=outside + +f() +{ + unset var + declare -n ref=var + declare -n ref; + declare -p ref; +} +f + +unset ref foo + +typeset -n r=a + +f() +{ + typeset a + typeset -n r + typeset -n r + r=a + + typeset -p a r +} +f +echo $? +unset -n r +unset -f f + +function foo +{ + typeset -n r + typeset -n r + typeset -p r +} + +foo +unset -f foo + + +function foo +{ + typeset r + typeset -n r + typeset -p r +} +foo +unset -f foo + +foo() +{ + typeset -n foo + typeset foo=12345 + typeset -p foo +} +foo +unset -f foo + +foo() +{ + typeset -n foo + typeset -n foo=12345 + typeset -p foo +} +foo +unset -f foo + diff --git a/tests/nameref14.sub b/tests/nameref14.sub new file mode 100644 index 0000000..7880b00 --- /dev/null +++ b/tests/nameref14.sub @@ -0,0 +1,43 @@ +# exporting namerefs and putting namerefs in temp env post bash-4.3 + +typeset -nx ref=var; +typeset -p ref + +var=foo; str='' +printenv ref # var +ref+=$str printenv ref # var +ref+="$str" printenv ref # var +ref=$ref$str printenv ref # var + +export ref # follows nameref and exports var + +printenv var # foo +ref+=$str printenv var # foo +ref+="$str" printenv var # foo +ref=$ref$str printenv var # foo + +# none of these should change ref; should follow the nameref and export var +unset var; unset -n ref; typeset -n ref=var + +echo before +typeset -p ref var + +echo first +ref=xxx typeset -p ref var + +echo invalid +var= ref=5 typeset -p ref var + +echo after +typeset -p ref var + +# ref isn't exported, so none of the printenvs should print anything +unset var ; unset -n ref +typeset -n ref=var; +typeset -p ref + +var=foo; str='' +printenv ref +ref+=$str printenv ref +ref+="$str" printenv ref +ref=$ref$str printenv ref diff --git a/tests/nameref15.sub b/tests/nameref15.sub new file mode 100644 index 0000000..6c9ace5 --- /dev/null +++ b/tests/nameref15.sub @@ -0,0 +1,88 @@ +f() { local -n a=$1; a=X; } + +a=(0); f 'a[0]' +while [[ -v a ]]; do declare -p a; unset a; done + +a=(0); f 'a' +while [[ -v a ]]; do declare -p a; unset a; done + +b=(0); f 'b[0]' +while [[ -v a ]]; do typeset -p a; unset a; done +typeset -p b + +b=(0); f 'a[0]' +while [[ -v a ]]; do typeset -p a; unset a; done +typeset -p b + +add_X_echo() +{ + typeset -n ref=$1 + ref+=X + echo inside $ref +} + +ref= +add_X_echo ref +echo outside "$ref" +unset ref + +typeset -n ref=ref + +typeset -n ref=re ref+=f +typeset -p ref +ref=4 +typeset -p ref re + +export ref +printenv ref +printenv re + +unset ref ; unset -n ref +unset foo; unset -n foo + +typeset -n foo=var[@] +typeset -p foo +typeset -n ref=var ref+=[@] +typeset -p ref + +ref=42 + +typeset -n bar +bar=var[@] +typeset -p bar +bar=7 + +unset a b +unset -n a b + +typeset -n a=b b +b=a[1] +typeset -p a b +a=foo +typeset -p a b + +unset a +typeset -n a=b +declare a=foo +typeset -p a b + +unset n v +unset -n n v + +v=(0 1) +typeset -n n=v +unset n[0] +typeset -p n v + +unset -n n + +v=(0 1) +typeset -n n=v +unset -n n +typeset -p n v + +v=(0 1) +declare -n n=v[1] +unset n +declare -p n v + diff --git a/tests/nameref16.sub b/tests/nameref16.sub new file mode 100644 index 0000000..75c7ba1 --- /dev/null +++ b/tests/nameref16.sub @@ -0,0 +1,44 @@ +# post-bash-4.3 changes for more ksh93 compatibility when following nameref +# chains and using typeset/declare -n to operate on nameref variables rather +# than the variables they reference + +# don't follow nameref chain when using declare -n and at the global scope +unset -n r1 r2 + +typeset -n r1=r2 +typeset -n r2=x +typeset -n r1=y + +typeset -p r1 r2 x y + +# same behavior when in a shell function +foo() +{ + typeset -n r1=r2 + typeset -n r2=x + typeset -n r1=y + + typeset -p r1 r2 x y +} +unset -n r1 r2 +foo +unset -f foo + +# same behavior when namerefs aren't chained +unset -n r1 r2 + +typeset -n r1=z +typeset -n r2=x +typeset -n r1=y +typeset -p r1 r2 x y + +# same behavior when referenced variables have values +unset -n r1 r2 + +x=one +y=two +typeset -n r1=r2 +typeset -n r2=x +typeset -n r1=y + +typeset -p r1 r2 x y diff --git a/tests/nameref17.sub b/tests/nameref17.sub new file mode 100644 index 0000000..0cd5a42 --- /dev/null +++ b/tests/nameref17.sub @@ -0,0 +1,103 @@ +# test behavior of readonly namerefs and namerefs referencing readonly variables + +# readonly nameref variable referencing read-write global variable + +bar=one +declare -rn foo0=bar +unset foo0 # unsets bar +declare -p bar +unset -n foo0 # cannot unset +declare -p foo0 + +declare +r foo0 # modifies bar +declare -p foo0 bar +declare +r -n foo0 # error +declare +n foo0 # error +unset bar + +# readonly nameref variable without a value +typeset -n foo1 +typeset -r foo1 + +typeset -p foo1 + +typeset foo1=bar # error +typeset +r foo1 # no-op, follows nameref chain to nothing +typeset -p foo1 + +# nameref pointing to read-only global variable +foo2=bar +typeset -n foo2 +typeset -r foo2 # changes bar + +typeset -p foo2 bar + +foo2=bar # error? +typeset +r foo2 # attempts to change bar, error +typeset -p foo2 bar # nameref unchanged + +# read-only nameref pointing to read-only global variable +bar3=three +declare -rn foo3=bar3 +unset foo3 # unsets bar3 + +bar3=three +declare -p bar3 +unset -n foo3 # cannot unset + +readonly bar3 +declare +r foo3 # error attempting to reference bar3 +declare -p foo3 bar3 +declare +r -n foo3 # error + +# readonly nameref pointing to read-write local -- can we remove nameref attr? +func() +{ + typeset bar4=four + + # readonly nameref + typeset -n -r foo4=bar4 + + typeset -p foo4 bar4 + + typeset +n foo4 + + typeset -p foo4 +} +func +unset -f func + +# readonly nameref pointing to read-write global -- can we remove nameref attr? +bar4=four +foo4=bar4 +# readonly nameref +typeset -n foo4 +typeset -r -n foo4 + +typeset -p foo4 bar4 + +typeset +n foo4 +typeset -p foo4 + +bar4=four +: ${foo4=bar4} + +typeset -p foo4 bar4 + +# readonly local nameref without a value -- can we remove nameref attribute? +func() +{ + declare -r -n foo5 + declare -p foo5 + declare +n foo5 + declare -p foo5 +} +func +unset -f func + +# readonly global nameref without a value -- can we remove nameref attribute? +declare -n foo5 +declare -r -n foo5 +declare -p foo5 +declare +n foo5 +declare -p foo5 diff --git a/tests/nameref18.sub b/tests/nameref18.sub new file mode 100644 index 0000000..1b02295 --- /dev/null +++ b/tests/nameref18.sub @@ -0,0 +1,54 @@ +declare -n ref=XXX[0] +mapfile ref <<< $'1\n2' +declare -p XXX[0] + +unset -n ref + +declare -n ref=XXX[0] +declare -A ref +ref[foo]=bar +declare -p XXX[0] + +unset -n ref +unset XXX + +typeset -n ref=XXX[0] +typeset ref=4 + +typeset -p ref XXX + +unset -n ref +unset XXX + +declare -n ref=XXX[0] +ref+=([2]=x) +declare -p ref XXX[0] +unset -n ref + +declare -n ref=XXX[0] +read -a ref <<< "A B C" +declare -p XXX[0] +unset -n ref + +declare -n ref=XXX[0] +unset ref +ref=() +declare -p ref + +coproc ref { :; }; declare -p ${!ref} +wait + +unset -n ref + +declare -n ref=var[123] +unset ref +declare ref= +declare -p ref ${!ref} var + +unset ref +declare ref+= +declare -p ref ${!ref} var + +declare +t ref +ref=X +declare -p ref ${!ref} var diff --git a/tests/nameref4.sub b/tests/nameref4.sub index f1e2aef..4dd86b2 100644 --- a/tests/nameref4.sub +++ b/tests/nameref4.sub @@ -66,7 +66,9 @@ ckval bar hello # XXX -- another self-referencing error? # ksh93 makes this another invalid self-reference -unset foo bar +unset foo +unset -n bar + bar=123 foobar() { @@ -80,14 +82,16 @@ typeset -n short=long short=( a b ) echo "expect " echo ${long[@]} -unset short long +unset long +unset -n short # assignment to a previously-unset variable typeset -n short=long short=foo echo "expect " echo ${long} -unset short long +unset long +unset -n short unset foo bar @@ -110,7 +114,8 @@ barfunc() barfunc bar unset -f foobar -unset foo bar +unset bar +unset -n foo # should ref at global scope survive call to foobar()? unset ref x @@ -151,6 +156,8 @@ echo "expect " recho "${x[@]}" unset ref x +unset -n ref + typeset -n ref ref=x # make sure nameref to a previously-unset variable creates the variable @@ -159,6 +166,8 @@ ckval x 42 # make sure they work inside arithmetic expressions unset foo bar ref x xxx +unset -n ref + typeset -i ivar typeset -n iref=ivar diff --git a/tests/nameref8.sub b/tests/nameref8.sub index 6837f6f..2380868 100644 --- a/tests/nameref8.sub +++ b/tests/nameref8.sub @@ -55,3 +55,7 @@ x=4 echo x = $x unset -n v w x + +# can we keep local variables invisible when we add nameref attribute? +function f { typeset x; typeset -n x; x=y; } +f diff --git a/tests/nameref9.sub b/tests/nameref9.sub new file mode 100644 index 0000000..e76c21b --- /dev/null +++ b/tests/nameref9.sub @@ -0,0 +1,8 @@ +arr=( idx1 idx2 ) +i='arr[1]' +echo ${!i} +echo ${!i/x/X} + +typeset -n f='arr[1]' +echo ${f} +echo ${f/x/X} diff --git a/tests/new-exp.right b/tests/new-exp.right index 3243d05..9913fbd 100644 --- a/tests/new-exp.right +++ b/tests/new-exp.right @@ -59,8 +59,15 @@ argv[1] = <4> argv[1] = argv[1] = argv[1] = -./new-exp.tests: line 172: ABX: unbound variable -./new-exp.tests: line 176: $6: cannot assign in this way +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +./new-exp.tests: line 180: ABX: unbound variable +./new-exp.tests: line 184: $6: cannot assign in this way argv[1] = argv[1] = argv[1] = @@ -169,7 +176,7 @@ this is test 2 ./new-exp2.sub: line 42: 1111111111111111111111: command not found argv[1] = <6> -./new-exp.tests: line 277: ${#:}: bad substitution +./new-exp.tests: line 285: ${#:}: bad substitution argv[1] = <'> argv[1] = <"> argv[1] = <"hello"> @@ -247,6 +254,12 @@ argv[1] = argv[1] = argv[1] = argv[1] = +x +x +x +xabc +x +x argv[1] = argv[2] = argv[3] = @@ -398,13 +411,13 @@ argv[6] = argv[7] = argv[8] = argv[9] = -./new-exp.tests: line 482: $9: unbound variable -./new-exp.tests: line 483: 9: unbound variable -./new-exp.tests: line 484: UNSET: unbound variable -./new-exp.tests: line 485: UNSET: unbound variable -./new-exp.tests: line 486: UNSET: unbound variable -./new-exp.tests: line 487: UNSET: unbound variable -./new-exp.tests: line 488: UNSET: unbound variable +./new-exp.tests: line 503: $9: unbound variable +./new-exp.tests: line 504: 9: unbound variable +./new-exp.tests: line 505: UNSET: unbound variable +./new-exp.tests: line 506: UNSET: unbound variable +./new-exp.tests: line 507: UNSET: unbound variable +./new-exp.tests: line 508: UNSET: unbound variable +./new-exp.tests: line 509: UNSET: unbound variable argv[1] = <5> argv[1] = <#> argv[1] = <#> @@ -421,10 +434,28 @@ argv[3] = <_QUEST> argv[4] = <_QUILL> argv[5] = <_QUOTA> argv[6] = <_QUOTE> +argv[1] = <_QUANTITY> +argv[2] = <_QUART> +argv[3] = <_QUEST> +argv[4] = <_QUILL> +argv[5] = <_QUOTA> +argv[6] = <_QUOTE> argv[1] = <_QUANTITY-_QUART-_QUEST-_QUILL-_QUOTA-_QUOTE> -./new-exp3.sub: line 19: ${!_Q* }: bad substitution -./new-exp3.sub: line 24: ${!1*}: bad substitution -./new-exp3.sub: line 26: ${!@*}: bad substitution +argv[1] = <_QUANTITY> +argv[2] = <_QUART> +argv[3] = <_QUEST> +argv[4] = <_QUILL> +argv[5] = <_QUOTA> +argv[6] = <_QUOTE> +argv[1] = <_QUANTITY> +argv[2] = <_QUART> +argv[3] = <_QUEST> +argv[4] = <_QUILL> +argv[5] = <_QUOTA> +argv[6] = <_QUOTE> +./new-exp3.sub: line 23: ${!_Q* }: bad substitution +./new-exp3.sub: line 28: ${!1*}: bad substitution +./new-exp3.sub: line 30: ${!@*}: bad substitution Case01---3---A:B:C--- Case02---1---A B C::--- Case03---3---A:B:C--- @@ -433,7 +464,7 @@ Case05---3---A:B:C--- Case06---1---A B C::--- Case07---3---A:B:C--- Case08---3---A:B:C--- -./new-exp.tests: line 508: ${$(($#-1))}: bad substitution +./new-exp.tests: line 529: ${$(($#-1))}: bad substitution argv[1] = argv[2] = argv[3] = @@ -450,7 +481,7 @@ argv[1] = argv[1] = argv[2] = argv[1] = <> -./new-exp.tests: line 527: $(($# - 2)): substring expression < 0 +./new-exp.tests: line 548: $(($# - 2)): substring expression < 0 argv[1] = argv[2] = argv[3] = @@ -562,6 +593,16 @@ ing999 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; art;string0;string1;string2;string3;string4;string5;string6;string7;string8;string9;string10;string11;string12;string13;string14;string15;string16;string17;string18;string19;string20;string21;string22;string23;string24;string25;string26;string27;string28;string29;string30;string31;string32;string33;string34;string35;string36;string37;string38;string39;string40;string41;string42;string43;string44;string45;string46;string47;string48;string49;string50;string51;string52;string53;string54;string55;string56;string57;string58;string59;string60;string61;string62;string63;string64;string65;string66;string67;string68;string69;string70;string71;string72;string73;string74;string75;string76;string77;string78;string79;string80;string81;string82;string83;string84;string85;string86;string87;string88;string89;string90;string91;string92;string93;string94;string95;string96;string97;string98;string99;string100;string101;string102;string103;string104;string105;string106;string107;string108;string109;string110;string111;string112;string113;string114;string115;string116;string117;string118;string119;string120;string121;string122;string123;string124;string125;string126;string127;string128;string129;string130;string131;string132;string133;string134;string135;string136;string137;string138;string139;string140;string141;string142;string143;string144;string145;string146;string147;string148;string149;string150;string151;string152;string153;string154;string155;string156;string157;string158;string159;string160;string161;string162;string163;string164;string165;string166;string167;string168;string169;string170;string171;string172;string173;string174;string175;string176;string177;string178;string179;string180;string181;string182;string183;string184;string185;string186;string187;string188;string189;string190;string191;string192;string193;string194;string195;string196;string197;string198;string199;string200;string201;string202;string203;string204;string205;string206;string207;string208;string209;string210;string211;string212;string213;string214;string215;string216;string217;string218;string219;string220;string221;string222;string223;string224;string225;string226;string227;string228;string229;string230;string231;string232;string233;string234;string235;string236;string237;string238;string239;string240;string241;string242;string243;string244;string245;string246;string247;string248;string249;string250;string251;string252;string253;string254;string255;string256;string257;string258;string259;string260;string261;string262;string263;string264;string265;string266;string267;string268;string269;string270;string271;string272;string273;string274;string275;string276;string277;string278;string279;string280;string281;string282;string283;string284;string285;string286;string287;string288;string289;string290;string291;string292;string293;string294;string295;string296;string297;string298;string299;string300;string301;string302;string303;string304;string305;string306;string307;string308;string309;string310;string311;string312;string313;string314;string315;string316;string317;string318;string319;string320;string321;string322;string323;string324;string325;string326;string327;string328;string329;string330;string331;string332;string333;string334;string335;string336;string337;string338;string339;string340;string341;string342;string343;string344;string345;string346;string347;string348;string349;string350;string351;string352;string353;string354;string355;string356;string357;string358;string359;string360;string361;string362;string363;string364;string365;string366;string367;string368;string369;string370;string371;string372;string373;string374;string375;string376;string377;string378;string379;string380;string381;string382;string383;string384;string385;string386;string387;string388;string389;string390;string391;string392;string393;string394;string395;string396;string397;string398;string399;string400;string401;string402;string403;string404;string405;string406;string407;string408;string409;string410;string411;string412;string413;string414;string415;string416;string417;string418;string419;string420;string421;string422;string423;string424;string425;string426;string427;string428;string429;string430;string431;string432;string433;string434;string435;string436;string437;string438;string439;string440;string441;string442;string443;string444;string445;string446;string447;string448;string449;string450;string451;string452;string453;string454;string455;string456;string457;string458;string459;string460;string461;string462;string463;string464;string465;string466;string467;string468;string469;string470;string471;string472;string473;string474;string475;string476;string477;string478;string479;string480;string481;string482;string483;string484;string485;string486;string487;string488;string489;string490;string491;string492;string493;string494;string495;string496;string497;string498;string499;string500;string501;string502;string503;string504;string505;string506;string507;string508;string509;string510;string511;string512;string513;string514;string515;string516;string517;string518;string519;string520;string521;string522;string523;string524;string525;string526;string527;string528;string529;string530;string531;string532;string533;string534;string535;string536;string537;string538;string539;string540;string541;string542;string543;string544;string545;string546;string547;string548;string549;string550;string551;string552;string553;string554;string555;string556;string557;string558;string559;string560;string561;string562;string563;string564;string565;string566;string567;string568;string569;string570;string571;string572;string573;string574;string575;string576;string577;string578;string579;string580;string581;string582;string583;string584;string585;string586;string587;string588;string589;string590;string591;string592;string593;string594;string595;string596;string597;string598;string599;string600;string601;string602;string603;string604;string605;string606;string607;string608;string609;string610;string611;string612;string613;string614;string615;string616;string617;string618;string619;string620;string621;string622;string623;string624;string625;string626;string627;string628;string629;string630;string631;string632;string633;string634;string635;string636;string637;string638;string639;string640;string641;string642;string643;string644;string645;string646;string647;string648;string649;string650;string651;string652;string653;string654;string655;string656;string657;string658;string659;string660;string661;string662;string663;string664;string665;string666;string667;string668;string669;string670;string671;string672;string673;string674;string675;string676;string677;string678;string679;string680;string681;string682;string683;string684;string685;string686;string687;string688;string689;string690;string691;string692;string693;string694;string695;string696;string697;string698;string699;string700;string701;string702;string703;string704;string705;string706;string707;string708;string709;string710;string711;string712;string713;string714;string715;string716;string717;string718;string719;string720;string721;string722;string723;string724;string725;string726;string727;string728;string729;string730;string731;string732;string733;string734;string735;string736;string737;string738;string739;string740;string741;string742;string743;string744;string745;string746;string747;string748;string749;string750;string751;string752;string753;string754;string755;string756;string757;string758;string759;string760;string761;string762;string763;string764;string765;string766;string767;string768;string769;string770;string771;string772;string773;string774;string775;string776;string777;string778;string779;string780;string781;string782;string783;string784;string785;string786;string787;string788;string789;string790;string791;string792;string793;string794;string795;string796;string797;string798;string799;string800;string801;string802;string803;string804;string805;string806;string807;string808;string809;string810;string811;string812;string813;string814;string815;string816;string817;string818;string819;string820;string821;string822;string823;string824;string825;string826;string827;string828;string829;string830;string831;string832;string833;string834;string835;string836;string837;string838;string839;string840;string841;string842;string843;string844;string845;string846;string847;string848;string849;string850;string851;string852;string853;string854;string855;string856;string857;string858;string859;string860;string861;string862;string863;string864;string865;string866;string867;string868;string869;string870;string871;string872;string873;string874;string875;string876;string877;string878;string879;string880;string881;string882;string883;string884;string885;string886;string887;string888;string889;string890;string891;string892;string893;string894;string895;string896;string897;string898;string899;string900;string901;string902;string903;string904;string905;string906;string907;string908;string909;string910;string911;string912;string913;string914;string915;string916;string917;string918;string919;string920;string921;string922;string923;string924;string925;string926;string927;string928;string929;string930;string931;string932;string933;string934;string935;string936;string937;string938;string939;string940;string941;string942;string943;string944;string945;string946;string947;string948;string949;string950;string951;string952;string953;string954;string955;string956;string957;string958;string959;string960;string961;string962;string963;string964;string965;string966;string967;string968;string969;string970;string971;string972;string973;string974;string975;string976;string977;string978;string979;string980;string981;string982;string983;string984;string985;string986;string987;string988;string989;string990;string991;string992;string993;string994;string995;string996;string997;string998;string999 start;string0;string1;string2;string3;string4;string5;string6;string7;string8;string9;string10;string11;string12;string13;string14;string15;string16;string17;string18;string19;string20;string21;string22;string23;string24;string25;string26;string27;string28;string29;string30;string31;string32;string33;string34;string35;string36;string37;string38;string39;string40;string41;string42;string43;string44;string45;string46;string47;string48;string49;string50;string51;string52;string53;string54;string55;string56;string57;string58;string59;string60;string61;string62;string63;string64;string65;string66;string67;string68;string69;string70;string71;string72;string73;string74;string75;string76;string77;string78;string79;string80;string81;string82;string83;string84;string85;string86;string87;string88;string89;string90;string91;string92;string93;string94;string95;string96;string97;string98;string99;string100;string101;string102;string103;string104;string105;string106;string107;string108;string109;string110;string111;string112;string113;string114;string115;string116;string117;string118;string119;string120;string121;string122;string123;string124;string125;string126;string127;string128;string129;string130;string131;string132;string133;string134;string135;string136;string137;string138;string139;string140;string141;string142;string143;string144;string145;string146;string147;string148;string149;string150;string151;string152;string153;string154;string155;string156;string157;string158;string159;string160;string161;string162;string163;string164;string165;string166;string167;string168;string169;string170;string171;string172;string173;string174;string175;string176;string177;string178;string179;string180;string181;string182;string183;string184;string185;string186;string187;string188;string189;string190;string191;string192;string193;string194;string195;string196;string197;string198;string199;string200;string201;string202;string203;string204;string205;string206;string207;string208;string209;string210;string211;string212;string213;string214;string215;string216;string217;string218;string219;string220;string221;string222;string223;string224;string225;string226;string227;string228;string229;string230;string231;string232;string233;string234;string235;string236;string237;string238;string239;string240;string241;string242;string243;string244;string245;string246;string247;string248;string249;string250;string251;string252;string253;string254;string255;string256;string257;string258;string259;string260;string261;string262;string263;string264;string265;string266;string267;string268;string269;string270;string271;string272;string273;string274;string275;string276;string277;string278;string279;string280;string281;string282;string283;string284;string285;string286;string287;string288;string289;string290;string291;string292;string293;string294;string295;string296;string297;string298;string299;string300;string301;string302;string303;string304;string305;string306;string307;string308;string309;string310;string311;string312;string313;string314;string315;string316;string317;string318;string319;string320;string321;string322;string323;string324;string325;string326;string327;string328;string329;string330;string331;string332;string333;string334;string335;string336;string337;string338;string339;string340;string341;string342;string343;string344;string345;string346;string347;string348;string349;string350;string351;string352;string353;string354;string355;string356;string357;string358;string359;string360;string361;string362;string363;string364;string365;string366;string367;string368;string369;string370;string371;string372;string373;string374;string375;string376;string377;string378;string379;string380;string381;string382;string383;string384;string385;string386;string387;string388;string389;string390;string391;string392;string393;string394;string395;string396;string397;string398;string399;string400;string401;string402;string403;string404;string405;string406;string407;string408;string409;string410;string411;string412;string413;string414;string415;string416;string417;string418;string419;string420;string421;string422;string423;string424;string425;string426;string427;string428;string429;string430;string431;string432;string433;string434;string435;string436;string437;string438;string439;string440;string441;string442;string443;string444;string445;string446;string447;string448;string449;string450;string451;string452;string453;string454;string455;string456;string457;string458;string459;string460;string461;string462;string463;string464;string465;string466;string467;string468;string469;string470;string471;string472;string473;string474;string475;string476;string477;string478;string479;string480;string481;string482;string483;string484;string485;string486;string487;string488;string489;string490;string491;string492;string493;string494;string495;string496;string497;string498;string499;string500;string501;string502;string503;string504;string505;string506;string507;string508;string509;string510;string511;string512;string513;string514;string515;string516;string517;string518;string519;string520;string521;string522;string523;string524;string525;string526;string527;string528;string529;string530;string531;string532;string533;string534;string535;string536;string537;string538;string539;string540;string541;string542;string543;string544;string545;string546;string547;string548;string549;string550;string551;string552;string553;string554;string555;string556;string557;string558;string559;string560;string561;string562;string563;string564;string565;string566;string567;string568;string569;string570;string571;string572;string573;string574;string575;string576;string577;string578;string579;string580;string581;string582;string583;string584;string585;string586;string587;string588;string589;string590;string591;string592;string593;string594;string595;string596;string597;string598;string599;string600;string601;string602;string603;string604;string605;string606;string607;string608;string609;string610;string611;string612;string613;string614;string615;string616;string617;string618;string619;string620;string621;string622;string623;string624;string625;string626;string627;string628;string629;string630;string631;string632;string633;string634;string635;string636;string637;string638;string639;string640;string641;string642;string643;string644;string645;string646;string647;string648;string649;string650;string651;string652;string653;string654;string655;string656;string657;string658;string659;string660;string661;string662;string663;string664;string665;string666;string667;string668;string669;string670;string671;string672;string673;string674;string675;string676;string677;string678;string679;string680;string681;string682;string683;string684;string685;string686;string687;string688;string689;string690;string691;string692;string693;string694;string695;string696;string697;string698;string699;string700;string701;string702;string703;string704;string705;string706;string707;string708;string709;string710;string711;string712;string713;string714;string715;string716;string717;string718;string719;string720;string721;string722;string723;string724;string725;string726;string727;string728;string729;string730;string731;string732;string733;string734;string735;string736;string737;string738;string739;string740;string741;string742;string743;string744;string745;string746;string747;string748;string749;string750;string751;string752;string753;string754;string755;string756;string757;string758;string759;string760;string761;string762;string763;string764;string765;string766;string767;string768;string769;string770;string771;string772;string773;string774;string775;string776;string777;string778;string779;string780;string781;string782;string783;string784;string785;string786;string787;string788;string789;string790;string791;string792;string793;string794;string795;string796;string797;string798;string799;string800;string801;string802;string803;string804;string805;string806;string807;string808;string809;string810;string811;string812;string813;string814;string815;string816;string817;string818;string819;string820;string821;string822;string823;string824;string825;string826;string827;string828;string829;string830;string831;string832;string833;string834;string835;string836;string837;string838;string839;string840;string841;string842;string843;string844;string845;string846;string847;string848;string849;string850;string851;string852;string853;string854;string855;string856;string857;string858;string859;string860;string861;string862;string863;string864;string865;string866;string867;string868;string869;string870;string871;string872;string873;string874;string875;string876;string877;string878;string879;string880;string881;string882;string883;string884;string885;string886;string887;string888;string889;string890;string891;string892;string893;string894;string895;string896;string897;string898;string899;string900;string901;string902;string903;string904;string905;string906;string907;string908;string909;string910;string911;string912;string913;string914;string915;string916;string917;string918;string919;string920;string921;string922;string923;string924;string925;string926;string927;string928;string929;string930;string931;string932;string933;string934;string935;string936;string937;string938;string939;string940;string941;string942;string943;string944;string945;string946;string947;string948;string949;string950;string951;string952;string953;string954;string955;string956;string957;string958;string959;string960;string961;string962;string963;string964;string965;string966;string967;string968;string969;string970;string971;string972;string973;string974;string975;string976;string977;string978;string979;string980;string981;string982;string983;string984;string985;string986;string987;string988;string989;string990;string991;string992;string993;string994;string995;string996;string997;string998;string9 +zbcd +axd +axxd +axxd +zzzz +zbcd +axd +axxd +axxd +zzzz a Value = 1 2 3 4 5 a Sub = 0 1 2 3 4 b Value = a b c d e @@ -570,6 +611,38 @@ c Value = 10 20 40 80 c Sub = 0 2 4 8 <1> <2> <3> <4> <5> <10> <20> <40> <80> +<> +<> +<> +<> +<'ab '\''cd'\'' ef'> +./new-exp10.sub: line 11: ${x@C}: bad substitution +<'ab'> <'cd ef'> <''> <'gh'> +<'ab' 'cd ef' '' 'gh'> +<'ab'> <'cd> <''> <'gh'> +<'ab'> <'cd> <''> <'gh'> +<'ab cd'> +<'4'> <'ab cd'> +<> +argv[1] = +< +> +<' \t\n'> +< +> +<$' \t\n'> +declare -r x='ab '\''cd'\'' ef' +set -- 'ab' 'cd ef' '' 'gh' +declare -a A=([0]="ab" [1]="cd ef" [2]="" [3]="gh") +declare -a B=() +declare -A A=([two]="b c" [three]="" [four]="de" [one]="1" ) +r +a +A +ir +a b c d e +5 +a5b argv[1] = argv[1] = -./new-exp.tests: line 584: ABXD: parameter unset +./new-exp.tests: line 608: ABXD: parameter unset diff --git a/tests/new-exp.tests b/tests/new-exp.tests index e48ac3d..c4aa9d1 100644 --- a/tests/new-exp.tests +++ b/tests/new-exp.tests @@ -167,6 +167,14 @@ recho ${a-$z} expect nothing recho ${!1-$z} +set -- a 'b c' d +unset foo +foo=@ +expect ' ' +recho ${!foo} +expect ' ' +recho "${!foo}" + set -u expect $0: ABX: unbound variable ( recho ${ABX} ) @@ -444,6 +452,19 @@ recho ${xxx//%${zzz}} recho ${xxx//#${zzz}/} recho ${xxx//#${zzz}} +# make sure null strings are replaced appropriately +unset var +var= +echo "${var/#/x}" +echo "${var/*/x}" +echo "${var//*/x}" + +var=abc +echo "${var/#/x}" +echo "${var/*/x}" +echo "${var//*/x}" +unset var + # another case that caused a core dump in bash-2.0 XPATH=/usr/bin:/bin:/usr/local/bin:/usr/gnu/bin::/usr/bin/X11:/sbin:/usr/sbin @@ -573,6 +594,9 @@ ${THIS_SH} ./new-exp8.sub # value is 'anothervar[@]' stop working ${THIS_SH} ./new-exp9.sub +# new parameter transformation `@' expansion operator +${THIS_SH} ./new-exp10.sub + # problems with stray CTLNUL in bash-4.0-alpha unset a a=/a diff --git a/tests/new-exp10.sub b/tests/new-exp10.sub new file mode 100644 index 0000000..e07e558 --- /dev/null +++ b/tests/new-exp10.sub @@ -0,0 +1,86 @@ +# new framework for parameter transformations, post bash-4.3 + +printf "<%s>" "${x@Q}" ; echo +printf "<%s>" "${x@E}" ; echo +printf "<%s>" "${x@P}" ; echo +printf "<%s>" "${x@A}" ; echo + +x="ab 'cd' ef" +printf "<%s> " "${x@Q}" ; echo + +printf "<%s>" "${x@C}" + +# if unquoted, normal word splitting happens +set -- ab 'cd ef' '' gh +printf "<%s> " "${@@Q}" ; echo +printf "<%s> " "${*@Q}" ; echo +printf "<%s> " ${@@Q} ; echo +printf "<%s> " ${*@Q} ; echo + +y[0]=4 +y[1]='ab cd' + +printf "<%s> " "${y[1]@Q}" ; echo +printf "<%s> " "${y[@]@Q}" ; echo # mksh doesn't like @ or * or arrays subscripted with them + +printf "<%s> " "${z@Q}" ; echo # empty string? + +recho ${z@Q} # this disappears + +# +HOST=host +SHELL_LEVEL=2 +NPS1='\[\]${HOST}($SHELL_LEVEL)[\v]\$ ' + +recho "${NPS1@P}" + +# +D=' \t\n' +printf "<%s>" "${D@E}" ; echo +printf "<%s>" "${D@Q}" ; echo + +E=$' \t\n' +printf "<%s>" "${E@E}" ; echo +printf "<%s>" "${E@Q}" ; echo + +declare x +declare -r x="ab 'cd' ef" +printf "%s" "${x@A}" ; echo + +set -- ab 'cd ef' '' gh +printf "%s " "${@@A}" ; echo + +A=( "$@" ) +printf "%s " "${A[@]@A}" ; echo +B=() +printf "%s " "${B[@]@A}" ; echo + +unset A +declare -A A +A=( [one]=1 [two]='b c' [three]='' [four]=de ) +printf "%s " "${A[@]@A}" ; echo + +unset X +declare X +declare -r X="ab 'cd' ef" +printf "%s" "${X@a}" ; echo + +set -- 1 2 3 4 + +unset A +A=( "$@" ) +printf "%s " "${A@a}" ; echo + +unset A +declare -A A +A=( [one]=1 [two]='b c' [three]='' [four]=de ) +printf "%s " "${A@a}" ; echo + +declare -ir Y=0 +printf "%s" "${Y@a}" ; echo + +# make sure we still handle ${#@} and ${@} as posix requires +set -- a b c d e +echo ${@} +echo ${#@} +echo a${#@}b diff --git a/tests/new-exp3.sub b/tests/new-exp3.sub index 3107ef1..2a766eb 100644 --- a/tests/new-exp3.sub +++ b/tests/new-exp3.sub @@ -8,12 +8,16 @@ _QUEST= _QUART= recho ${!_Q*} +recho ${!_Q@} # compatibility IFS="-$IFS" recho ${!_Q*} recho "${!_Q*}" +recho ${!_Q@} +recho "${!_Q@}" + recho ${!_Y*} recho "${!_Q* }" diff --git a/tests/new-exp8.sub b/tests/new-exp8.sub index 6cae6ab..e047abc 100644 --- a/tests/new-exp8.sub +++ b/tests/new-exp8.sub @@ -93,3 +93,24 @@ x="${z/#[^;][^;]}" echo $x x="${z/%[^;][^;]}" echo $x + +# post-bash-4.3 changes to make pattern replacement honor nocasematch variable +unset string +string=abcd + +shopt -s nocasematch + +echo ${string//A/z} +echo ${string//BC/x} +echo ${string//[BC]/x} +echo ${string//[bC]/x} +echo ${string//?/z} + +LC_ALL=C +echo ${string//A/z} +echo ${string//BC/x} +echo ${string//[BC]/x} +echo ${string//[bC]/x} +echo ${string//?/z} + + diff --git a/tests/nquote.right b/tests/nquote.right index 9d1290e..e3ae555 100644 --- a/tests/nquote.right +++ b/tests/nquote.right @@ -56,3 +56,9 @@ $'\'' $'\'abcd\'' ' 1 +argv[1] = <^?> +0000000 del nl +0000002 +0000000 esc fs gs rs us del nl +0000007 +\q diff --git a/tests/nquote.tests b/tests/nquote.tests index aa0a9d8..80d3cb4 100644 --- a/tests/nquote.tests +++ b/tests/nquote.tests @@ -117,3 +117,4 @@ recho "$( args $'A\tB' )" ${THIS_SH} ./nquote1.sub ${THIS_SH} ./nquote2.sub +${THIS_SH} ./nquote3.sub diff --git a/tests/nquote3.sub b/tests/nquote3.sub new file mode 100644 index 0000000..d1480c0 --- /dev/null +++ b/tests/nquote3.sub @@ -0,0 +1,8 @@ +. ./test-glue-functions + +recho $'\c?' + +echo $'\c?' | od -t a | _intl_normalize_spaces +echo $'\c[\c\\\c]\c^\c_\c?' | od -t a | _intl_normalize_spaces + +echo $'\q' diff --git a/tests/parser.right b/tests/parser.right new file mode 100644 index 0000000..43d5a8e --- /dev/null +++ b/tests/parser.right @@ -0,0 +1 @@ +AAA diff --git a/tests/parser.tests b/tests/parser.tests new file mode 100644 index 0000000..12ff88c --- /dev/null +++ b/tests/parser.tests @@ -0,0 +1,4 @@ +# catch-all for parsing problems that don't fit anywhere else + +# this has to be in a separate file to get desired EOF behavior +${THIS_SH} ./parser1.sub diff --git a/tests/parser1.sub b/tests/parser1.sub new file mode 100644 index 0000000..5031931 --- /dev/null +++ b/tests/parser1.sub @@ -0,0 +1 @@ +eval "array=(foo bar)" ; echo AAA\ diff --git a/tests/posix2.right b/tests/posix2.right index df30c4f..b1585a2 100644 --- a/tests/posix2.right +++ b/tests/posix2.right @@ -1,2 +1,6 @@ Testing for POSIX.2 conformance +./posix2.tests: eval: line 182: syntax error near unexpected token `esac' +./posix2.tests: eval: line 182: `case esac in (esac) ;; *) echo "case esac test 3" ;; esac' +./posix2.tests: eval: line 184: syntax error near unexpected token `)' +./posix2.tests: eval: line 184: `case esac in esac) ;; *) echo "case esac test 4";; esac' All tests passed diff --git a/tests/posix2.tests b/tests/posix2.tests index d0fb46c..ecf6a6f 100644 --- a/tests/posix2.tests +++ b/tests/posix2.tests @@ -171,6 +171,18 @@ if [ "$val1" != "'#abcd'" ]; then testfail "variable quoting 4" fi +# these are Posix.2 shell grammar rule 4, problems through bash-4.3 +newtest +case esac in (foo|esac) ;; *) testfail "case esac test 1" ;; esac +newtest +case esac in foo|esac) ;; *) testfail "case esac test 2" ;; esac + +# these are supposed to be syntax errors +newtest +eval 'case esac in (esac) ;; *) echo "case esac test 3" ;; esac' +newtest +eval 'case esac in esac) ;; *) echo "case esac test 4";; esac' + if [ $exitval = 0 ]; then echo "All tests passed" else diff --git a/tests/redir.right b/tests/redir.right index f461e65..c158e25 100644 --- a/tests/redir.right +++ b/tests/redir.right @@ -140,3 +140,21 @@ bix () } foo :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +1 +./redir11.sub: line 8: $a: Bad file descriptor +./redir11.sub: line 9: $(echo $a): Bad file descriptor +7 +after: 42 +./redir11.sub: line 24: echo: write error: Bad file descriptor +./redir11.sub: line 25: echo: write error: Bad file descriptor +./redir11.sub: line 26: $(a=4 foo): Bad file descriptor +./redir11.sub: line 27: $(a=4 foo): Bad file descriptor +./redir11.sub: line 30: $a: Bad file descriptor +./redir11.sub: line 31: $(echo $a): Bad file descriptor +./redir11.sub: line 39: $(ss= declare -i ss): ambiguous redirect +after: 42 +a+=3 +foo +foo +./redir11.sub: line 53: $(echo $a): Bad file descriptor +123 diff --git a/tests/redir.tests b/tests/redir.tests index c2e4866..24e3cd1 100644 --- a/tests/redir.tests +++ b/tests/redir.tests @@ -189,3 +189,6 @@ exec 9>&- ${THIS_SH} ./redir9.sub ${THIS_SH} ./redir10.sub + +${THIS_SH} ./redir11.sub +${THIS_SH} ./redir12.sub diff --git a/tests/redir11.sub b/tests/redir11.sub new file mode 100644 index 0000000..59ed493 --- /dev/null +++ b/tests/redir11.sub @@ -0,0 +1,53 @@ +# make sure redirections do not have access to the temporary environment, even +# in subshells and command substitutions + +a=1 +a=4 b=7 ss=4 echo $a + +a=42 +a=2 echo foo >&$a +a=2 echo foo >&$(echo $a) + +foo() +{ + local -i a + local v=0 x=1 + a+=3 + echo $a +} + +a=4 b=7 ss=4 declare -i ss +a=4 b=7 foo +echo after: $a + +unset a +a=4 echo foo >&$(foo) +a=1 echo foo >&$(foo) +a=1 echo foo >&$(a=4 foo) +echo foo >&$(a=4 foo) + +a=42 +a=2 echo foo >&$a +a=2 echo foo >&$(echo $a) + +unset -f foo +foo() +{ + local -i a + local v=0 x=1 + a+=3 + echo $a >&$(ss= declare -i ss) +} + +a=4 b=7 foo +echo after: $a + +unset a +typeset -i a +a=4 eval echo $(echo a+=3) +a=2 +a=9 echo foo >&$(echo $a) +a=2 +a=9 eval echo foo >&$(echo $a) +a=2 +a=9 eval echo foo '>&$(echo $a)' diff --git a/tests/redir12.sub b/tests/redir12.sub new file mode 100644 index 0000000..0e68f3b --- /dev/null +++ b/tests/redir12.sub @@ -0,0 +1,5 @@ +# make sure we can wait for the last process substitution, since it sets $! +cat <(exit 123) >/dev/null + +wait "$!" +echo $? diff --git a/tests/run-alias b/tests/run-alias index 6a20b06..3b4f4dc 100644 --- a/tests/run-alias +++ b/tests/run-alias @@ -1,2 +1,2 @@ -${THIS_SH} ./alias.tests > /tmp/xx 2>&1 -diff /tmp/xx alias.right && rm -f /tmp/xx +${THIS_SH} ./alias.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} alias.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-all b/tests/run-all index d3f3a0e..2882fe0 100644 --- a/tests/run-all +++ b/tests/run-all @@ -1,5 +1,16 @@ #! /bin/sh +: ${TMPDIR:=/tmp} +export TMPDIR + +# basic /bin/sh syntax +SUFFIX=`${THIS_SH} -c 'echo $(( $RANDOM + $BASHPID ))'` + +BASH_TSTOUT=${TMPDIR}/bashtst-$SUFFIX # for now +export BASH_TSTOUT + +trap 'rm -f $BASH_TSTOUT' 0 + PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests' export PATH @@ -13,7 +24,7 @@ export THIS_SH ${THIS_SH} ./version -rm -f /tmp/xx +rm -f ${BASH_TSTOUT} echo Any output from any test, unless otherwise noted, indicates a possible anomaly @@ -22,7 +33,7 @@ do case $x in $0|run-minimal|run-gprof) ;; *.orig|*~) ;; - *) echo $x ; sh $x ;; + *) echo $x ; sh $x ; rm -f ${BASH_TSTOUT} ;; esac done diff --git a/tests/run-appendop b/tests/run-appendop index c5bffbc..2d756f8 100644 --- a/tests/run-appendop +++ b/tests/run-appendop @@ -1,2 +1,2 @@ -${THIS_SH} ./appendop.tests > /tmp/xx 2>&1 -diff /tmp/xx appendop.right && rm -f /tmp/xx +${THIS_SH} ./appendop.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} appendop.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-arith b/tests/run-arith index f9f573c..0786b4f 100644 --- a/tests/run-arith +++ b/tests/run-arith @@ -1,2 +1,2 @@ -${THIS_SH} ./arith.tests > /tmp/xx 2>&1 -diff /tmp/xx arith.right && rm -f /tmp/xx +${THIS_SH} ./arith.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} arith.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-arith-for b/tests/run-arith-for index 1d13075..085715e 100644 --- a/tests/run-arith-for +++ b/tests/run-arith-for @@ -1,2 +1,2 @@ -${THIS_SH} ./arith-for.tests > /tmp/xx 2>&1 -diff /tmp/xx arith-for.right && rm -f /tmp/xx +${THIS_SH} ./arith-for.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} arith-for.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-array b/tests/run-array index 6fdbae4..6c5ec27 100644 --- a/tests/run-array +++ b/tests/run-array @@ -2,5 +2,5 @@ echo "warning: all of these tests will fail if arrays have not" >&2 echo "warning: been compiled into the shell" >&2 echo "warning: the BASH_ARGC and BASH_ARGV tests will fail if debugging support" >&2 echo "warning: has not been compiled into the shell" >&2 -${THIS_SH} ./array.tests > /tmp/xx 2>&1 -diff /tmp/xx array.right && rm -f /tmp/xx +${THIS_SH} ./array.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} array.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-array2 b/tests/run-array2 index dd94ec8..54852ec 100644 --- a/tests/run-array2 +++ b/tests/run-array2 @@ -1,4 +1,4 @@ echo "warning: all of these tests will fail if arrays have not" >&2 echo "warning: been compiled into the shell" >&2 -${THIS_SH} ./array-at-star > /tmp/xx 2>&1 -diff /tmp/xx array2.right && rm -f /tmp/xx +${THIS_SH} ./array-at-star > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} array2.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-assoc b/tests/run-assoc index 18c3a9c..7fef234 100644 --- a/tests/run-assoc +++ b/tests/run-assoc @@ -1,4 +1,4 @@ echo "warning: all of these tests will fail if arrays have not" >&2 echo "warning: been compiled into the shell" >&2 -${THIS_SH} ./assoc.tests > /tmp/xx 2>&1 -diff /tmp/xx assoc.right && rm -f /tmp/xx +${THIS_SH} ./assoc.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} assoc.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-attr b/tests/run-attr new file mode 100644 index 0000000..948b9e1 --- /dev/null +++ b/tests/run-attr @@ -0,0 +1,2 @@ +${THIS_SH} ./attr.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} attr.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-braces b/tests/run-braces index 53d4f1b..554e218 100644 --- a/tests/run-braces +++ b/tests/run-braces @@ -1,2 +1,2 @@ -${THIS_SH} ./braces.tests > /tmp/xx -diff /tmp/xx braces.right && rm -f /tmp/xx +${THIS_SH} ./braces.tests > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} braces.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-builtins b/tests/run-builtins index db88c8c..69644f2 100644 --- a/tests/run-builtins +++ b/tests/run-builtins @@ -2,5 +2,5 @@ echo "warning: some of these tests may fail if process substitution has not" >&2 echo "warning: been compiled into the shell or if the OS does not provide" >&2 echo "warning: /dev/fd." >&2 -${THIS_SH} ./builtins.tests > /tmp/xx 2>&1 -diff /tmp/xx builtins.right && rm -f /tmp/xx +${THIS_SH} ./builtins.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} builtins.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-case b/tests/run-case index 71d9b83..1560ee2 100644 --- a/tests/run-case +++ b/tests/run-case @@ -1,2 +1,2 @@ -${THIS_SH} ./case.tests > /tmp/xx 2>&1 -diff /tmp/xx case.right && rm -f /tmp/xx +${THIS_SH} ./case.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} case.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-casemod b/tests/run-casemod index 83c1b5a..9b58764 100644 --- a/tests/run-casemod +++ b/tests/run-casemod @@ -1,2 +1,2 @@ -${THIS_SH} ./casemod.tests > /tmp/xx 2>&1 -diff /tmp/xx casemod.right && rm -f /tmp/xx +${THIS_SH} ./casemod.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} casemod.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-comsub b/tests/run-comsub index 0bbcad5..4c3d1cf 100644 --- a/tests/run-comsub +++ b/tests/run-comsub @@ -1,2 +1,2 @@ -${THIS_SH} ./comsub.tests > /tmp/xx 2>&1 -diff /tmp/xx comsub.right && rm -f /tmp/xx +${THIS_SH} ./comsub.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} comsub.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-comsub-eof b/tests/run-comsub-eof index 5c006be..0733b2d 100644 --- a/tests/run-comsub-eof +++ b/tests/run-comsub-eof @@ -1,2 +1,2 @@ -${THIS_SH} ./comsub-eof.tests > /tmp/xx 2>&1 -diff /tmp/xx comsub-eof.right && rm -f /tmp/xx +${THIS_SH} ./comsub-eof.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} comsub-eof.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-comsub-posix b/tests/run-comsub-posix index 38bf8ee..520cb44 100644 --- a/tests/run-comsub-posix +++ b/tests/run-comsub-posix @@ -1,2 +1,2 @@ -${THIS_SH} ./comsub-posix.tests > /tmp/xx 2>&1 -diff /tmp/xx comsub-posix.right && rm -f /tmp/xx +${THIS_SH} ./comsub-posix.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} comsub-posix.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-cond b/tests/run-cond index 6b119a6..603e739 100644 --- a/tests/run-cond +++ b/tests/run-cond @@ -3,5 +3,5 @@ echo "warning: been compiled into the shell" >&2 echo "warning: some of these tests will fail if extended pattern matching has not" >&2 echo "warning: been compiled into the shell" >&2 -${THIS_SH} ./cond.tests > /tmp/xx 2>&1 -diff /tmp/xx cond.right && rm -f /tmp/xx +${THIS_SH} ./cond.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} cond.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-coproc b/tests/run-coproc index ce62474..02c5c92 100644 --- a/tests/run-coproc +++ b/tests/run-coproc @@ -1,4 +1,2 @@ -echo "warning: the process IDs printed will differ on every run" >&2 -echo "warning: and generate diffs" >&2 -${THIS_SH} ./coproc.tests > /tmp/xx 2>&1 -diff /tmp/xx coproc.right && rm -f /tmp/xx +${THIS_SH} ./coproc.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} coproc.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-cprint b/tests/run-cprint index 5f202e4..82d2c2a 100644 --- a/tests/run-cprint +++ b/tests/run-cprint @@ -1,2 +1,2 @@ -${THIS_SH} ./cprint.tests > /tmp/xx 2>&1 -diff /tmp/xx cprint.right && rm -f /tmp/xx +${THIS_SH} ./cprint.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} cprint.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-dbg-support b/tests/run-dbg-support old mode 100755 new mode 100644 diff --git a/tests/run-dbg-support2 b/tests/run-dbg-support2 old mode 100755 new mode 100644 diff --git a/tests/run-dirstack b/tests/run-dirstack index 6390d1b..e6b42d4 100644 --- a/tests/run-dirstack +++ b/tests/run-dirstack @@ -1,5 +1,5 @@ -${THIS_SH} ./dstack.tests > /tmp/xx 2>&1 -diff /tmp/xx dstack.right && rm -f /tmp/xx +${THIS_SH} ./dstack.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} dstack.right && rm -f ${BASH_TSTOUT} -${THIS_SH} ./dstack2.tests > /tmp/xx 2>&1 -diff /tmp/xx dstack2.right && rm -f /tmp/xx +${THIS_SH} ./dstack2.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} dstack2.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-dollars b/tests/run-dollars index 0ced414..dc5d623 100644 --- a/tests/run-dollars +++ b/tests/run-dollars @@ -1,2 +1,2 @@ -${THIS_SH} ./dollar-at-star > /tmp/xx 2>&1 -diff /tmp/xx dollar.right && rm -f /tmp/xx +${THIS_SH} ./dollar-at-star > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} dollar.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-errors b/tests/run-errors index 6be4e0c..29417cd 100644 --- a/tests/run-errors +++ b/tests/run-errors @@ -1,2 +1,3 @@ -${THIS_SH} ./errors.tests > /tmp/xx 2>&1 -diff /tmp/xx errors.right && rm -f /tmp/xx +unset OLDPWD # make sure shell doesn't inherit OLDPWD +${THIS_SH} ./errors.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} errors.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-execscript b/tests/run-execscript index f97ab21..de78644 100644 --- a/tests/run-execscript +++ b/tests/run-execscript @@ -5,5 +5,5 @@ echo "warning: \`/tmp/bash-notthere' not being found or \`/' being a directory" echo "warning: produce diff output, please do not consider this a test failure" >&2 echo "warning: if diff output differing only in the location of the bash" >&2 echo "warning: binary appears, please do not consider this a test failure" >&2 -${THIS_SH} ./execscript > /tmp/xx 2>&1 -diff /tmp/xx exec.right && rm -f /tmp/xx +${THIS_SH} ./execscript > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} exec.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-exp-tests b/tests/run-exp-tests index cbabace..78cf754 100644 --- a/tests/run-exp-tests +++ b/tests/run-exp-tests @@ -1,2 +1,2 @@ -${THIS_SH} ./exp.tests | grep -v '^expect' > /tmp/xx -diff /tmp/xx exp.right && rm -f /tmp/xx +${THIS_SH} ./exp.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} exp.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-exportfunc b/tests/run-exportfunc new file mode 100644 index 0000000..7b207fa --- /dev/null +++ b/tests/run-exportfunc @@ -0,0 +1,2 @@ +${THIS_SH} ./exportfunc.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} exportfunc.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-extglob b/tests/run-extglob index 06316ad..149e34a 100644 --- a/tests/run-extglob +++ b/tests/run-extglob @@ -1,4 +1,4 @@ PATH=$PATH:`pwd` export PATH -${THIS_SH} ./extglob.tests | grep -v '^expect' > /tmp/xx -diff /tmp/xx extglob.right && rm -f /tmp/xx +${THIS_SH} ./extglob.tests | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} extglob.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-extglob2 b/tests/run-extglob2 index 0a6f728..71d3d80 100644 --- a/tests/run-extglob2 +++ b/tests/run-extglob2 @@ -1,4 +1,4 @@ PATH=$PATH:`pwd` export PATH -${THIS_SH} ./extglob2.tests | grep -v '^expect' > /tmp/xx -diff /tmp/xx extglob2.right && rm -f /tmp/xx +${THIS_SH} ./extglob2.tests | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} extglob2.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-extglob3 b/tests/run-extglob3 index 2675196..6ebd674 100644 --- a/tests/run-extglob3 +++ b/tests/run-extglob3 @@ -1,4 +1,4 @@ PATH=$PATH:`pwd` export PATH -${THIS_SH} ./extglob3.tests > /tmp/xx -diff /tmp/xx extglob3.right && rm -f /tmp/xx +${THIS_SH} ./extglob3.tests > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} extglob3.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-func b/tests/run-func index f449eb8..a804364 100644 --- a/tests/run-func +++ b/tests/run-func @@ -1,5 +1,5 @@ echo "warning: if you have exported functions defined in your environment," >&2 echo "warning: they may show up as diff output." >&2 echo "warning: if so, please do not consider this a test failure" >&2 -${THIS_SH} ./func.tests > /tmp/xx 2>&1 -diff /tmp/xx func.right && rm -f /tmp/xx +${THIS_SH} ./func.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} func.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-getopts b/tests/run-getopts index 1e8b5fb..4cfc592 100644 --- a/tests/run-getopts +++ b/tests/run-getopts @@ -1,2 +1,2 @@ -${THIS_SH} ./getopts.tests > /tmp/xx 2>&1 -diff /tmp/xx getopts.right && rm -f /tmp/xx +${THIS_SH} ./getopts.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} getopts.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-glob-test b/tests/run-glob-test index 7a12343..43aa276 100644 --- a/tests/run-glob-test +++ b/tests/run-glob-test @@ -1,4 +1,4 @@ PATH=$PATH:`pwd` export PATH -${THIS_SH} ./glob.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx glob.right && rm -f /tmp/xx +${THIS_SH} ./glob.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} glob.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-globstar b/tests/run-globstar index d12cce9..3aa01ed 100644 --- a/tests/run-globstar +++ b/tests/run-globstar @@ -1,4 +1,4 @@ PATH=$PATH:`pwd` export PATH -${THIS_SH} ./globstar.tests > /tmp/xx 2>&1 -diff /tmp/xx globstar.right && rm -f /tmp/xx +${THIS_SH} ./globstar.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} globstar.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-heredoc b/tests/run-heredoc index 456453a..b655c4f 100644 --- a/tests/run-heredoc +++ b/tests/run-heredoc @@ -2,5 +2,5 @@ echo "warning: UNIX versions number signals and schedule processes differently." echo "warning: If output differing only in line numbers is produced, please" >&2 echo "warning: do not consider this a test failure." >&2 -${THIS_SH} ./heredoc.tests > /tmp/xx 2>&1 -diff /tmp/xx heredoc.right && rm -f /tmp/xx +${THIS_SH} ./heredoc.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} heredoc.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-herestr b/tests/run-herestr index 8c5b36d..d6def9c 100644 --- a/tests/run-herestr +++ b/tests/run-herestr @@ -1,2 +1,2 @@ -${THIS_SH} ./herestr.tests > /tmp/xx 2>&1 -diff /tmp/xx herestr.right && rm -f /tmp/xx +${THIS_SH} ./herestr.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} herestr.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-histexpand b/tests/run-histexpand index 06a415b..a0fc331 100644 --- a/tests/run-histexpand +++ b/tests/run-histexpand @@ -1,4 +1,4 @@ echo "warning: all of these tests will fail if history has not been compiled" >&2 echo "warning: into the shell" >&2 -${THIS_SH} ./histexp.tests > /tmp/xx 2>&1 -diff /tmp/xx histexp.right && rm -f /tmp/xx +${THIS_SH} ./histexp.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} histexp.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-history b/tests/run-history index ea356b1..f4fa466 100644 --- a/tests/run-history +++ b/tests/run-history @@ -1,4 +1,4 @@ echo "warning: all of these tests will fail if history has not been compiled" >&2 echo "warning: into the shell" >&2 -${THIS_SH} ./history.tests > /tmp/xx 2>&1 -diff /tmp/xx history.right && rm -f /tmp/xx +${THIS_SH} ./history.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} history.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-ifs b/tests/run-ifs index 3f9d820..394d998 100644 --- a/tests/run-ifs +++ b/tests/run-ifs @@ -1,2 +1,2 @@ -${THIS_SH} ./ifs.tests > /tmp/xx 2>&1 -diff /tmp/xx ifs.right && rm -f /tmp/xx +${THIS_SH} ./ifs.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} ifs.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-ifs-posix b/tests/run-ifs-posix index e578e8d..895c2e2 100644 --- a/tests/run-ifs-posix +++ b/tests/run-ifs-posix @@ -1,2 +1,2 @@ -${THIS_SH} ./ifs-posix.tests > /tmp/xx 2>&1 -diff /tmp/xx ifs-posix.right && rm -f /tmp/xx +${THIS_SH} ./ifs-posix.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} ifs-posix.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-input-test b/tests/run-input-test index aaa5d35..412587c 100644 --- a/tests/run-input-test +++ b/tests/run-input-test @@ -1,2 +1,2 @@ -${THIS_SH} < ./input-line.sh > /tmp/xx -diff /tmp/xx input.right && rm -f /tmp/xx +${THIS_SH} < ./input-line.sh > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} input.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-intl b/tests/run-intl index 6a9234a..c31d1d0 100644 --- a/tests/run-intl +++ b/tests/run-intl @@ -3,6 +3,6 @@ echo "warning: some of these tests will fail if you do not have UTF-8" >&2 echo "warning: locales installed on your system." >&2 -echo "warning: please ignore any differences consisting only of white space" >&2 -${THIS_SH} ./intl.tests > /tmp/xx -diff $AFLAG /tmp/xx intl.right && rm -f /tmp/xx + +${THIS_SH} ./intl.tests > ${BASH_TSTOUT} +diff $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-invert b/tests/run-invert index 4949307..b2bd06e 100644 --- a/tests/run-invert +++ b/tests/run-invert @@ -1,2 +1,2 @@ -${THIS_SH} ./invert.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx invert.right && rm -f /tmp/xx +${THIS_SH} ./invert.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} invert.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-iquote b/tests/run-iquote index 61a8aa7..4fca94a 100644 --- a/tests/run-iquote +++ b/tests/run-iquote @@ -1,2 +1,2 @@ -${THIS_SH} ./iquote.tests >/tmp/xx 2>&1 -diff /tmp/xx iquote.right && rm -f /tmp/xx +${THIS_SH} ./iquote.tests >${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} iquote.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-jobs b/tests/run-jobs index bfd4fa0..8429b0d 100644 --- a/tests/run-jobs +++ b/tests/run-jobs @@ -3,5 +3,5 @@ echo "warning: into the shell" >&2 echo "warning: there may be a message regarding a cat process dying due to a" >&2 echo "warning: SIGHUP. Please disregard." >&2 -${THIS_SH} ./jobs.tests > /tmp/xx 2>&1 -diff /tmp/xx jobs.right && rm -f /tmp/xx +${THIS_SH} ./jobs.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} jobs.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-lastpipe b/tests/run-lastpipe index 92ac030..2edf5c4 100644 --- a/tests/run-lastpipe +++ b/tests/run-lastpipe @@ -1,2 +1,2 @@ -${THIS_SH} ./lastpipe.tests > /tmp/xx 2>&1 -diff /tmp/xx lastpipe.right && rm -f /tmp/xx +${THIS_SH} ./lastpipe.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} lastpipe.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-mapfile b/tests/run-mapfile index a207f09..e5d1b38 100644 --- a/tests/run-mapfile +++ b/tests/run-mapfile @@ -1,2 +1,2 @@ -${THIS_SH} ./mapfile.tests > /tmp/xx 2>&1 -diff /tmp/xx mapfile.right && rm -f /tmp/xx +${THIS_SH} ./mapfile.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} mapfile.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-minimal b/tests/run-minimal index de98344..c7fba73 100644 --- a/tests/run-minimal +++ b/tests/run-minimal @@ -3,6 +3,18 @@ # run-minimal - a version of run-all for shells configured with # --enable-minimal-config # + +: ${TMPDIR:=/tmp} +export TMPDIR + +# basic /bin/sh syntax +SUFFIX=`${THIS_SH} -c 'echo $(( $RANDOM + $BASHPID ))'` + +BASH_TSTOUT=${TMPDIR}/bashtst-$SUFFIX # for now +export BASH_TSTOUT + +trap 'rm -f $BASH_TSTOUT' 0 + PATH=.:$PATH # just to get the right version of printenv export PATH @@ -16,7 +28,7 @@ export THIS_SH ${THIS_SH} ./version.mini -rm -f /tmp/xx +rm -f "$BASH_TSTOUT" echo Testing ${THIS_SH} echo Any output from any test, unless otherwise noted, indicates a possible anomaly @@ -31,6 +43,7 @@ do run-precedence|run-quote|run-read|run-rhs-exp|run-strip|run-tilde) echo $x ; sh $x ;; *) ;; esac + rm -f "$BASH_TSTOUT" done exit 0 diff --git a/tests/run-more-exp b/tests/run-more-exp index 60f55cb..0424a2f 100644 --- a/tests/run-more-exp +++ b/tests/run-more-exp @@ -1,2 +1,2 @@ -${THIS_SH} ./more-exp.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx more-exp.right && rm -f /tmp/xx +${THIS_SH} ./more-exp.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} more-exp.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-nameref b/tests/run-nameref index 40f00d5..b73e1b8 100644 --- a/tests/run-nameref +++ b/tests/run-nameref @@ -1,4 +1,4 @@ echo "warning: some of these tests will fail if arrays have not" >&2 echo "warning: been compiled into the shell" >&2 -${THIS_SH} ./nameref.tests > /tmp/xx 2>&1 -diff /tmp/xx nameref.right && rm -f /tmp/xx +${THIS_SH} ./nameref.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} nameref.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-new-exp b/tests/run-new-exp index 2e3d7c9..8777c7b 100644 --- a/tests/run-new-exp +++ b/tests/run-new-exp @@ -6,5 +6,5 @@ echo "warning: if you have exported variables beginning with the string _Q," >&2 echo "warning: diff output may be generated. If so, please do not consider" >&2 echo "warning: this a test failure" >&2 -${THIS_SH} ./new-exp.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx new-exp.right && rm -f /tmp/xx +${THIS_SH} ./new-exp.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} new-exp.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-nquote b/tests/run-nquote index 006872c..03954b8 100644 --- a/tests/run-nquote +++ b/tests/run-nquote @@ -1,2 +1,2 @@ -${THIS_SH} ./nquote.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx nquote.right && rm -f /tmp/xx +${THIS_SH} ./nquote.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} nquote.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-nquote1 b/tests/run-nquote1 index a71740f..bd9e939 100644 --- a/tests/run-nquote1 +++ b/tests/run-nquote1 @@ -1,4 +1,4 @@ echo "warning: several of these tests will fail if arrays have not" >&2 echo "warning: been compiled into the shell." >&2 -${THIS_SH} ./nquote1.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx nquote1.right && rm -f /tmp/xx +${THIS_SH} ./nquote1.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} nquote1.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-nquote2 b/tests/run-nquote2 index 80d1a8d..4648d3e 100644 --- a/tests/run-nquote2 +++ b/tests/run-nquote2 @@ -1,4 +1,4 @@ echo "warning: several of these tests will fail if arrays have not" >&2 echo "warning: been compiled into the shell." >&2 -${THIS_SH} ./nquote2.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx nquote2.right && rm -f /tmp/xx +${THIS_SH} ./nquote2.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} nquote2.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-nquote3 b/tests/run-nquote3 index 45ba5f7..4a3e32a 100644 --- a/tests/run-nquote3 +++ b/tests/run-nquote3 @@ -1,4 +1,4 @@ echo "warning: several of these tests will fail if arrays have not" >&2 echo "warning: been compiled into the shell." >&2 -${THIS_SH} ./nquote3.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx nquote3.right && rm -f /tmp/xx +${THIS_SH} ./nquote3.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} nquote3.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-nquote4 b/tests/run-nquote4 index 493f4aa..44baac4 100644 --- a/tests/run-nquote4 +++ b/tests/run-nquote4 @@ -1,4 +1,4 @@ echo warning: some of these tests will fail if you do not have UTF-8 >&2 echo warning: locales installed on your system >&2 -${THIS_SH} ./nquote4.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx nquote4.right && rm -f /tmp/xx +${THIS_SH} ./nquote4.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} nquote4.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-nquote5 b/tests/run-nquote5 index 14cef64..1d4c4aa 100644 --- a/tests/run-nquote5 +++ b/tests/run-nquote5 @@ -1,2 +1,2 @@ -${THIS_SH} ./nquote5.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx nquote5.right && rm -f /tmp/xx +${THIS_SH} ./nquote5.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} nquote5.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-parser b/tests/run-parser new file mode 100644 index 0000000..ea1ec49 --- /dev/null +++ b/tests/run-parser @@ -0,0 +1,2 @@ +${THIS_SH} ./parser.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} parser.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-posix2 b/tests/run-posix2 index 52eea2f..cfa9571 100644 --- a/tests/run-posix2 +++ b/tests/run-posix2 @@ -1,2 +1,2 @@ -${THIS_SH} ./posix2.tests 2>&1 | grep -v '^expect' > /tmp/xx -diff /tmp/xx posix2.right && rm -f /tmp/xx +${THIS_SH} ./posix2.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} posix2.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-posixexp b/tests/run-posixexp index e5a1c3e..827b0e4 100644 --- a/tests/run-posixexp +++ b/tests/run-posixexp @@ -1,2 +1,2 @@ -${THIS_SH} ./posixexp.tests > /tmp/xx 2>&1 -diff /tmp/xx posixexp.right && rm -f /tmp/xx +${THIS_SH} ./posixexp.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} posixexp.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-posixexp2 b/tests/run-posixexp2 index 9a2890f..1e6b2d9 100644 --- a/tests/run-posixexp2 +++ b/tests/run-posixexp2 @@ -1,2 +1,2 @@ -${THIS_SH} ./posixexp2.tests > /tmp/xx 2>&1 -diff /tmp/xx posixexp2.right && rm -f /tmp/xx +${THIS_SH} ./posixexp2.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} posixexp2.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-posixpat b/tests/run-posixpat index ef2b140..8937948 100644 --- a/tests/run-posixpat +++ b/tests/run-posixpat @@ -1,2 +1,2 @@ -${THIS_SH} ./posixpat.tests > /tmp/xx -diff /tmp/xx posixpat.right && rm -f /tmp/xx +${THIS_SH} ./posixpat.tests > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} posixpat.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-posixpipe b/tests/run-posixpipe index c574535..5f099e2 100644 --- a/tests/run-posixpipe +++ b/tests/run-posixpipe @@ -1,2 +1,2 @@ -${THIS_SH} ./posixpipe.tests > /tmp/xx 2>&1 -diff /tmp/xx posixpipe.right && rm -f /tmp/xx +${THIS_SH} ./posixpipe.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} posixpipe.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-precedence b/tests/run-precedence index d81a868..de33224 100644 --- a/tests/run-precedence +++ b/tests/run-precedence @@ -1,2 +1,2 @@ -${THIS_SH} ./precedence > /tmp/xx -diff /tmp/xx prec.right && rm -f /tmp/xx +${THIS_SH} ./precedence > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} prec.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-printf b/tests/run-printf index 7b152a1..e242787 100644 --- a/tests/run-printf +++ b/tests/run-printf @@ -2,6 +2,6 @@ #( diff -a ./printf.tests ./printf.tests >/dev/null 2>&1 ) && AFLAG=-a # use cat -v (and assume it's there) to make control chars visible -${THIS_SH} ./printf.tests 2>&1 | cat -v > /tmp/xx -#diff $AFLAG /tmp/xx printf.right && rm -f /tmp/xx -diff /tmp/xx printf.right && rm -f /tmp/xx +${THIS_SH} ./printf.tests 2>&1 | cat -v > ${BASH_TSTOUT} +#diff $AFLAG ${BASH_TSTOUT} printf.right && rm -f ${BASH_TSTOUT} +diff ${BASH_TSTOUT} printf.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-quote b/tests/run-quote index 6905042..2543666 100644 --- a/tests/run-quote +++ b/tests/run-quote @@ -1,2 +1,2 @@ -${THIS_SH} ./quote.tests >/tmp/xx 2>&1 -diff /tmp/xx quote.right && rm -f /tmp/xx +${THIS_SH} ./quote.tests >${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} quote.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-read b/tests/run-read index 47e4188..5ec07e2 100644 --- a/tests/run-read +++ b/tests/run-read @@ -1,4 +1,4 @@ echo "warning: please do not consider output differing only in the amount of" >&2 echo "warning: white space to be an error." >&2 -${THIS_SH} ./read.tests > /tmp/xx 2>&1 -diff /tmp/xx read.right && rm -f /tmp/xx +${THIS_SH} ./read.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} read.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-redir b/tests/run-redir index 2be45dd..071af6e 100644 --- a/tests/run-redir +++ b/tests/run-redir @@ -3,5 +3,5 @@ echo "warning: produce diff output." >&2 echo "warning: if the text of an error message concerning \`redir1.*' not being" >&2 echo "warning: found or messages concerning bad file descriptors produce diff" >&2 echo "warning: output, please do not consider it a test failure" >&2 -${THIS_SH} ./redir.tests > /tmp/xx 2>&1 -diff /tmp/xx redir.right && rm -f /tmp/xx +${THIS_SH} ./redir.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} redir.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-rhs-exp b/tests/run-rhs-exp index 1f89d0b..de8ae0e 100644 --- a/tests/run-rhs-exp +++ b/tests/run-rhs-exp @@ -1,2 +1,2 @@ -${THIS_SH} ./rhs-exp.tests 2>&1 > /tmp/xx -diff /tmp/xx rhs-exp.right && rm -f /tmp/xx +${THIS_SH} ./rhs-exp.tests 2>&1 > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} rhs-exp.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-rsh b/tests/run-rsh index ef23583..6770699 100644 --- a/tests/run-rsh +++ b/tests/run-rsh @@ -1,2 +1,2 @@ -${THIS_SH} ./rsh.tests > /tmp/xx 2>&1 -diff /tmp/xx rsh.right && rm -f /tmp/xx +${THIS_SH} ./rsh.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} rsh.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-set-e b/tests/run-set-e index 3389f11..eed17fa 100644 --- a/tests/run-set-e +++ b/tests/run-set-e @@ -1,2 +1,2 @@ -${THIS_SH} ./set-e.tests > /tmp/xx -diff /tmp/xx set-e.right && rm -f /tmp/xx +${THIS_SH} ./set-e.tests > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} set-e.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-set-x b/tests/run-set-x old mode 100755 new mode 100644 diff --git a/tests/run-shopt b/tests/run-shopt index 100a3de..02c43e7 100644 --- a/tests/run-shopt +++ b/tests/run-shopt @@ -1,2 +1,2 @@ -${THIS_SH} ./shopt.tests > /tmp/xx 2>&1 -diff /tmp/xx shopt.right && rm -f /tmp/xx +${THIS_SH} ./shopt.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} shopt.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-strip b/tests/run-strip index 0d32115..46a9da9 100644 --- a/tests/run-strip +++ b/tests/run-strip @@ -1,2 +1,2 @@ -${THIS_SH} ./strip.tests > /tmp/xx -diff /tmp/xx strip.right && rm -f /tmp/xx +${THIS_SH} ./strip.tests > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} strip.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-test b/tests/run-test index b2482c3..d68791c 100644 --- a/tests/run-test +++ b/tests/run-test @@ -1,4 +1,4 @@ unset GROUPS UID 2>/dev/null -${THIS_SH} ./test.tests >/tmp/xx 2>&1 -diff /tmp/xx test.right && rm -f /tmp/xx +${THIS_SH} ./test.tests >${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} test.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-tilde b/tests/run-tilde index b8569c1..9460225 100644 --- a/tests/run-tilde +++ b/tests/run-tilde @@ -1,2 +1,2 @@ -${THIS_SH} ./tilde.tests > /tmp/xx -diff /tmp/xx tilde.right && rm -f /tmp/xx +${THIS_SH} ./tilde.tests > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} tilde.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-tilde2 b/tests/run-tilde2 index 4446989..fa7e7d6 100644 --- a/tests/run-tilde2 +++ b/tests/run-tilde2 @@ -1,2 +1,2 @@ -${THIS_SH} ./tilde2.tests > /tmp/xx -diff /tmp/xx tilde2.right && rm -f /tmp/xx +${THIS_SH} ./tilde2.tests > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} tilde2.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-trap b/tests/run-trap index 14f6874..e3331ed 100644 --- a/tests/run-trap +++ b/tests/run-trap @@ -2,5 +2,5 @@ echo "warning: UNIX versions number signals and schedule processes differently." echo "warning: If output differing only in line numbers is produced, please" >&2 echo "warning: do not consider this a test failure." >&2 -${THIS_SH} ./trap.tests > /tmp/xx 2>&1 -diff /tmp/xx trap.right && rm -f /tmp/xx +${THIS_SH} ./trap.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} trap.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-type b/tests/run-type index 4d195b0..499cb4e 100644 --- a/tests/run-type +++ b/tests/run-type @@ -1,2 +1,2 @@ -${THIS_SH} ./type.tests > /tmp/xx 2>&1 -diff /tmp/xx type.right && rm -f /tmp/xx +${THIS_SH} ./type.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} type.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-varenv b/tests/run-varenv index f0ce195..5987a7f 100644 --- a/tests/run-varenv +++ b/tests/run-varenv @@ -1,2 +1,2 @@ -${THIS_SH} ./varenv.sh | grep -v '^expect' > /tmp/xx -diff /tmp/xx varenv.right && rm -f /tmp/xx +${THIS_SH} ./varenv.sh 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} varenv.right && rm -f ${BASH_TSTOUT} diff --git a/tests/run-vredir b/tests/run-vredir index 9a96377..2a4faf3 100644 --- a/tests/run-vredir +++ b/tests/run-vredir @@ -1,2 +1,2 @@ -${THIS_SH} ./vredir.tests > /tmp/xx 2>&1 -diff /tmp/xx vredir.right && rm -f /tmp/xx +${THIS_SH} ./vredir.tests > ${BASH_TSTOUT} 2>&1 +diff ${BASH_TSTOUT} vredir.right && rm -f ${BASH_TSTOUT} diff --git a/tests/shopt.right b/tests/shopt.right index 0a7edfb..86d9ed6 100644 --- a/tests/shopt.right +++ b/tests/shopt.right @@ -13,6 +13,7 @@ shopt -u compat32 shopt -u compat40 shopt -u compat41 shopt -u compat42 +shopt -u compat43 shopt -s complete_fullquote shopt -u direxpand shopt -u dirspell @@ -24,14 +25,15 @@ shopt -u extglob shopt -s extquote shopt -u failglob shopt -s force_fignore -shopt -u globstar shopt -u globasciiranges +shopt -u globstar shopt -u gnu_errfmt shopt -u histappend shopt -u histreedit shopt -u histverify shopt -s hostcomplete shopt -u huponexit +shopt -u inherit_errexit shopt -s interactive_comments shopt -u lastpipe shopt -u lithist @@ -74,6 +76,7 @@ shopt -u compat32 shopt -u compat40 shopt -u compat41 shopt -u compat42 +shopt -u compat43 shopt -u direxpand shopt -u dirspell shopt -u dotglob @@ -81,13 +84,14 @@ shopt -u execfail shopt -u extdebug shopt -u extglob shopt -u failglob -shopt -u globstar shopt -u globasciiranges +shopt -u globstar shopt -u gnu_errfmt shopt -u histappend shopt -u histreedit shopt -u histverify shopt -u huponexit +shopt -u inherit_errexit shopt -u lastpipe shopt -u lithist shopt -u login_shell @@ -110,6 +114,7 @@ compat32 off compat40 off compat41 off compat42 off +compat43 off direxpand off dirspell off dotglob off @@ -117,13 +122,14 @@ execfail off extdebug off extglob off failglob off -globstar off globasciiranges off +globstar off gnu_errfmt off histappend off histreedit off histverify off huponexit off +inherit_errexit off lastpipe off lithist off login_shell off diff --git a/tests/source6.sub b/tests/source6.sub index 9e1cb64..43db203 100644 --- a/tests/source6.sub +++ b/tests/source6.sub @@ -19,8 +19,13 @@ echo $? echo $? # pipe +if [ -e /dev/stdin ]; then echo "echo three - OK" | . /dev/stdin echo $? +else +# no /dev/stdin, just fake it +echo "three - OK" ; echo 0 +fi # FIFO mkfifo $TMPDIR/fifo-$$ diff --git a/tests/test-glue-functions b/tests/test-glue-functions new file mode 100644 index 0000000..2b2f61d --- /dev/null +++ b/tests/test-glue-functions @@ -0,0 +1,9 @@ +# shell functions to include in multiple test files + +# squeeze out blanks to avoid white space differences in od implementations +_intl_normalize_spaces() +{ + sed -e 's/[[:space:]]\{1,\}/ /g' -e 's/[[:space:]]*$//' +} + + diff --git a/tests/trap.right b/tests/trap.right index b361564..1f68d33 100644 --- a/tests/trap.right +++ b/tests/trap.right @@ -18,15 +18,15 @@ trap -- 'echo [$LINENO] debug' DEBUG [24] debug func[16] funcdebug funcdebug line -[26] debug +./trap.tests[26] funcdebug trap -- 'echo exiting' EXIT trap -- 'echo aborting' SIGHUP trap -- 'echo aborting' SIGINT trap -- 'echo aborting' SIGQUIT trap -- 'echo aborting' SIGABRT trap -- 'echo aborting' SIGTERM -trap -- 'echo [$LINENO] debug' DEBUG -[28] debug +trap -- 'echo ${FUNCNAME:-$0}[$LINENO] funcdebug' DEBUG +./trap.tests[28] funcdebug ./trap.tests[33] debug ./trap.tests[34] debug func2[30] debug @@ -100,5 +100,4 @@ trap -- 'echo caught a child death' SIGCHLD trap -- 'echo exiting' EXIT trap -- 'echo aborting' SIGABRT trap -- 'echo caught a child death' SIGCHLD -trap -- '' SIGUSR2 exiting diff --git a/tests/trap.tests b/tests/trap.tests index 5d8b06c..4176df0 100644 --- a/tests/trap.tests +++ b/tests/trap.tests @@ -62,6 +62,7 @@ echo $? # hmmm...should this set the handling to SIG_IGN for children, too? trap '' USR2 ./trap1.sub +trap - USR2 # test ERR trap ./trap2.sub diff --git a/tests/unicode2.sub b/tests/unicode2.sub index f10cdec..83ff274 100644 --- a/tests/unicode2.sub +++ b/tests/unicode2.sub @@ -1,22 +1,24 @@ +. ./test-glue-functions + export LANG=en_US.UTF-8 -printf '%s\n' "$(printf '\uff')" | od -b -printf '%s\n' $'\uff' | od -b +printf '%s\n' "$(printf '\uff')" | od -b | _intl_normalize_spaces +printf '%s\n' $'\uff' | od -b | _intl_normalize_spaces -printf '\uff'\\n | od -b -echo $'\uff' | od -b +printf '\uff'\\n | od -b | _intl_normalize_spaces +echo $'\uff' | od -b | _intl_normalize_spaces -printf '\uffff'\\n | od -b -echo $'\uffff' | od -b +printf '\uffff'\\n | od -b | _intl_normalize_spaces +echo $'\uffff' | od -b | _intl_normalize_spaces -printf '\Ufffffffe'\\n | od -b -echo $'\Ufffffffe' | od -b +printf '\Ufffffffe'\\n | od -b | _intl_normalize_spaces +echo $'\Ufffffffe' | od -b | _intl_normalize_spaces -printf '\Uffffffff'\\n | od -b -echo $'\Uffffffff' | od -b +printf '\Uffffffff'\\n | od -b | _intl_normalize_spaces +echo $'\Uffffffff' | od -b | _intl_normalize_spaces -LC_CTYPE=C printf '\uff'\\n | od -b -LC_CTYPE=ru_RU.CP1251 printf '\uff'\\n | od -b -LC_CTYPE=en_US.UTF-8 printf '\uff'\\n | od -b +LC_CTYPE=C printf '\uff'\\n | od -b | _intl_normalize_spaces +LC_CTYPE=ru_RU.CP1251 printf '\uff'\\n | od -b | _intl_normalize_spaces +LC_CTYPE=en_US.UTF-8 printf '\uff'\\n | od -b | _intl_normalize_spaces -echo -e '\u0041 \u00a3 \u0152' | od -b +echo -e '\u0041 \u00a3 \u0152' | od -b | _intl_normalize_spaces diff --git a/tests/unicode3.sub b/tests/unicode3.sub index f79871f..b39f1d3 100644 --- a/tests/unicode3.sub +++ b/tests/unicode3.sub @@ -1,6 +1,8 @@ +export LANG=en_US.UTF-8 # make sure payload=$'\065\247\100\063\231\053\306\123\070\237\242\352\263' "$payload" +cd "$payload" printf %q "$payload" echo diff --git a/tests/varenv.right b/tests/varenv.right index 2d98b22..38d1ce7 100644 --- a/tests/varenv.right +++ b/tests/varenv.right @@ -60,12 +60,37 @@ FIN: asdf fdsa, asdf fdsa g: v = , w = f: v = , w = FIN: v = two, w = one -declare -Ar FOOBAR='([foo]="bar" )' -declare -Ar FOOBAR='([foo]="bar" )' -declare -ar FOOBAR2='([0]="bar")' -declare -ar FOOBAR2='([0]="bar")' +./varenv4.sub: line 54: bbb: unique: cannot convert indexed to associative array +after bbb: 1 +declare -Ar FOOBAR=([foo]="bar" ) +declare -Ar FOOBAR=([foo]="bar" ) +declare -ar FOOBAR2=([0]="bar") +declare -ar FOOBAR2=([0]="bar") F OUTSIDE F OUTSIDE +declare -ar outside=() +declare -ir outside1="1" +tempenv = foo +0 +declare -ar myvar=([0]="0") +1 +declare -ir myvar="1" +declare -rx tempvar1='foo' +declare -rx tempvar2='qux' +./varenv7.sub: line 44: local: var: readonly variable +inside: outside +outside: outside +local: unset1 unset2 +abc +abc +:1 +:2 +after: ---- +global:1 +global:2 +after: --global-- +after: ---- +x = :1:2 a=z a=b a=z diff --git a/tests/varenv.sh b/tests/varenv.sh index 6576282..a0d3169 100644 --- a/tests/varenv.sh +++ b/tests/varenv.sh @@ -214,6 +214,12 @@ ${THIS_SH} ./varenv5.sub # variable scoping in the presence of nameref ${THIS_SH} ./varenv6.sub +# variable declaration problems with arrays and readonly local variables +${THIS_SH} ./varenv7.sub + +# variable visibility problems with process substitution subshells in +# redirections +${THIS_SH} ./varenv8.sub + # make sure variable scoping is done right tt() { typeset a=b;echo a=$a; };a=z;echo a=$a;tt;echo a=$a - diff --git a/tests/varenv4.sub b/tests/varenv4.sub index 4852ad6..b2df61c 100644 --- a/tests/varenv4.sub +++ b/tests/varenv4.sub @@ -42,3 +42,17 @@ g() f echo FIN: v = $v, w = $w + +# problem with error return propagation through bash-4.3 +unset -f aaa bbb +unset unique + +aaa() { + declare -g -a unique=() +} +bbb() { + declare -g -A unique=() +} +aaa +bbb +echo after bbb: $? diff --git a/tests/varenv7.sub b/tests/varenv7.sub new file mode 100644 index 0000000..45654da --- /dev/null +++ b/tests/varenv7.sub @@ -0,0 +1,62 @@ +foo() +{ + local -a myvar=() + local -r myvar=0 + + echo "${myvar[@]}" + declare -p myvar +} + +foo2() +{ + local -i myvar=0 + local -r myvar=1 + + echo "${myvar}" + declare -p myvar +} + +declare -a outside=() +declare -r outside +declare -p outside + +outside1=1 +declare -ir outside1 +declare -p outside1 + +tempenv=foo declare -r tempenv +echo tempenv = $tempenv + +foo +foo2 + +tempvar1=foo declare -r tempvar1 +echo ${tempvar1@A} + +tempvar2=bar declare -r tempvar2=qux +echo ${tempvar2@A} + +unset foo +readonly var=outside + +func() +{ + local var=inside + echo "inside: $var" +} + +func +echo outside: $var + +unset -f f +unset VAR1 VAR2 +export VAR1=abc VAR2=abc + +f() +{ + local VAR1; local VAR2 + echo local: ${VAR1-unset1} ${VAR2-unset2} + printenv VAR1 ; printenv VAR2 +} + +f diff --git a/tests/varenv8.sub b/tests/varenv8.sub new file mode 100644 index 0000000..cad2c6e --- /dev/null +++ b/tests/varenv8.sub @@ -0,0 +1,14 @@ +FOO=bar cat < <(echo $FOO:1; echo $FOO:2) +echo after: --${FOO}-- + +unset FOO +FOO=global + +FOO=bar cat < <(echo $FOO:1; echo $FOO:2) +echo after: --${FOO}-- + +unset FOO +FOO=bar read x < <(echo -n $FOO:1; echo $FOO:2) +echo after: --${FOO}-- +echo x = $x + diff --git a/tests/vredir.right b/tests/vredir.right index 07e02a7..3985f22 100644 --- a/tests/vredir.right +++ b/tests/vredir.right @@ -88,5 +88,16 @@ swizzle () } ok 1 ./vredir6.sub: redirection error: cannot duplicate fd: Invalid argument -./vredir6.sub: line 13: v: Invalid argument +./vredir6.sub: line 13: /dev/null: Invalid argument unset +12 10 +a +a +swizzle is a function +swizzle () +{ + exec {fd[0]}<&0; + exec {fd[1]}>&1; + exec {stdin}<&${fd[0]}-; + exec {stdout}>&${fd[1]}- +} diff --git a/tests/vredir.tests b/tests/vredir.tests index 5158fe3..b81c671 100644 --- a/tests/vredir.tests +++ b/tests/vredir.tests @@ -43,4 +43,6 @@ ${THIS_SH} ./vredir5.sub ${THIS_SH} ./vredir6.sub +${THIS_SH} ./vredir7.sub + exit 0 diff --git a/tests/vredir7.sub b/tests/vredir7.sub new file mode 100644 index 0000000..8cb80ed --- /dev/null +++ b/tests/vredir7.sub @@ -0,0 +1,23 @@ +swizzle() +{ +exec {fd[0]}<&0 +exec {fd[1]}>&1 + +exec {stdin}<&${fd[0]}- +exec {stdout}>&${fd[1]}- +} + +swizzle + +echo $stdin $stdout + +read line <&$stdin <&$stdout + +type swizzle + +exit 0 diff --git a/trap.c b/trap.c index edce31a..eb8ecf3 100644 --- a/trap.c +++ b/trap.c @@ -1,7 +1,7 @@ /* trap.c -- Not the trap command, but useful functions for manipulating those objects. The trap command is in builtins/trap.def. */ -/* Copyright (C) 1987-2013 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -72,15 +72,17 @@ extern int errno; assumes this. */ static int sigmodes[BASH_NSIG]; -static void free_trap_command __P((int)); -static void change_signal __P((int, char *)); +static void free_trap_command (int); +static void change_signal (int, char *); -static int _run_trap_internal __P((int, char *)); +static int _run_trap_internal (int, char *); -static void free_trap_string __P((int)); -static void reset_signal __P((int)); -static void restore_signal __P((int)); -static void reset_or_restore_signal_handlers __P((sh_resetsig_func_t *)); +static void free_trap_string (int); +static void reset_signal (int); +static void restore_signal (int); +static void reset_or_restore_signal_handlers (sh_resetsig_func_t *); + +static void trap_if_untrapped (int, char *); /* Variables used here but defined in other files. */ extern int last_command_exit_value; @@ -89,9 +91,12 @@ extern int line_number; extern int sigalrm_seen; extern procenv_t alrmbuf; +extern volatile int from_return_trap; + extern char *this_command_name; extern sh_builtin_func_t *this_shell_builtin; extern procenv_t wait_intr_buf; +extern int wait_intr_flag; extern int return_catch_flag, return_catch_value; extern int subshell_level; extern WORD_LIST *subst_assign_varlist; @@ -184,6 +189,8 @@ initialize_traps () GETORIGSIG (SIGTERM); sigmodes[SIGTERM] |= SIG_SPECIAL; } + + get_original_tty_job_signals (); } #ifdef DEBUG @@ -277,8 +284,9 @@ void run_pending_traps () { register int sig; - int old_exit_value; + int old_exit_value, x; WORD_LIST *save_subst_varlist; + HASH_TABLE *save_tempenv; sh_parser_state_t pstate; #if defined (ARRAY_VARS) ARRAY *ps; @@ -292,8 +300,9 @@ run_pending_traps () #if defined (DEBUG) internal_warning ("run_pending_traps: recursive invocation while running trap for signal %d", running_trap-1); #endif -#if 0 - return; /* no recursive trap invocations */ +#if defined (SIGWINCH) + if (running_trap == SIGWINCH+1 && pending_traps[SIGWINCH]) + return; /* no recursive SIGWINCH trap invocations */ #else ; #endif @@ -302,7 +311,7 @@ run_pending_traps () catch_flag = trapped_signal_received = 0; /* Preserve $? when running trap. */ - old_exit_value = last_command_exit_value; + trap_saved_exit_value = old_exit_value = last_command_exit_value; #if defined (ARRAY_VARS) ps = save_pipestatus_array (); #endif @@ -321,7 +330,7 @@ run_pending_traps () if (sig == SIGINT) { pending_traps[sig] = 0; /* XXX */ - run_interrupt_trap (); + run_interrupt_trap (0); CLRINTERRUPT; } #if defined (JOB_CONTROL) && defined (SIGCHLD) @@ -330,8 +339,15 @@ run_pending_traps () (sigmodes[SIGCHLD] & SIG_INPROGRESS) == 0) { sigmodes[SIGCHLD] |= SIG_INPROGRESS; - run_sigchld_trap (pending_traps[sig]); /* use as counter */ + x = pending_traps[sig]; + pending_traps[sig] = 0; + run_sigchld_trap (x); /* use as counter */ + running_trap = 0; sigmodes[SIGCHLD] &= ~SIG_INPROGRESS; + /* continue here rather than reset pending_traps[SIGCHLD] below in + case there are recursive calls to run_pending_traps and children + have been reaped while run_sigchld_trap was running. */ + continue; } else if (sig == SIGCHLD && trap_list[SIGCHLD] == (char *)IMPOSSIBLE_TRAP_HANDLER && @@ -382,6 +398,8 @@ run_pending_traps () save_parser_state (&pstate); save_subst_varlist = subst_assign_varlist; subst_assign_varlist = 0; + save_tempenv = temporary_env; + temporary_env = 0; /* traps should not run with temporary env */ #if defined (JOB_CONTROL) save_pipeline (1); /* XXX only provides one save level */ @@ -395,6 +413,7 @@ run_pending_traps () subst_assign_varlist = save_subst_varlist; restore_parser_state (&pstate); + temporary_env = save_tempenv; } pending_traps[sig] = 0; /* XXX - move before evalstring? */ @@ -438,14 +457,13 @@ trap_handler (sig) catch_flag = 1; pending_traps[sig]++; - trapped_signal_received = sig; if (this_shell_builtin && (this_shell_builtin == wait_builtin)) { wait_signal_received = sig; - if (interrupt_immediately) - longjmp (wait_intr_buf, 1); + if (interrupt_immediately && wait_intr_flag) + sh_longjmp (wait_intr_buf, 1); } #if defined (READLINE) @@ -555,6 +573,16 @@ queue_sigchld_trap (nchild) } #endif /* JOB_CONTROL && SIGCHLD */ +/* Set a trap for SIG only if SIG is not already trapped. */ +static inline void +trap_if_untrapped (sig, command) + int sig; + char *command; +{ + if ((sigmodes[sig] & SIG_TRAPPED) == 0) + set_signal (sig, command); +} + void set_debug_trap (command) char *command; @@ -562,6 +590,19 @@ set_debug_trap (command) set_signal (DEBUG_TRAP, command); } +/* Separate function to call when functions and sourced files want to restore + the original version of the DEBUG trap before returning. Unless the -T + option is set, source and shell function execution save the old debug trap + and unset the trap. If the function or sourced file changes the DEBUG trap, + SIG_TRAPPED will be set and we don't bother restoring the original trap string. + This is used by both functions and the source builtin. */ +void +maybe_set_debug_trap (command) + char *command; +{ + trap_if_untrapped (DEBUG_TRAP, command); +} + void set_error_trap (command) char *command; @@ -569,6 +610,13 @@ set_error_trap (command) set_signal (ERROR_TRAP, command); } +void +maybe_set_error_trap (command) + char *command; +{ + trap_if_untrapped (ERROR_TRAP, command); +} + void set_return_trap (command) char *command; @@ -576,6 +624,13 @@ set_return_trap (command) set_signal (RETURN_TRAP, command); } +void +maybe_set_return_trap (command) + char *command; +{ + trap_if_untrapped (RETURN_TRAP, command); +} + #ifdef INCLUDE_UNUSED void set_sigint_trap (command) @@ -855,6 +910,10 @@ run_exit_trap () retval = trap_saved_exit_value; running_trap = 0; +#if defined (ARRAY_VARS) + array_dispose (ps); +#endif + return retval; } @@ -882,16 +941,18 @@ _run_trap_internal (sig, tag) { char *trap_command, *old_trap; int trap_exit_value, *token_state; - volatile int save_return_catch_flag, function_code; + volatile int save_return_catch_flag, function_code, top_level_code, old_int; int flags; procenv_t save_return_catch; WORD_LIST *save_subst_varlist; + HASH_TABLE *save_tempenv; sh_parser_state_t pstate; #if defined (ARRAY_VARS) ARRAY *ps; #endif trap_exit_value = function_code = 0; + trap_saved_exit_value = last_command_exit_value; /* Run the trap only if SIG is trapped and not ignored, and we are not currently executing in the trap handler. */ if ((sigmodes[sig] & SIG_TRAPPED) && ((sigmodes[sig] & SIG_IGNORED) == 0) && @@ -911,6 +972,9 @@ _run_trap_internal (sig, tag) running_trap = sig + 1; + old_int = interrupt_state; /* temporarily suppress pending interrupts */ + CLRINTERRUPT; + #if defined (ARRAY_VARS) ps = save_pipestatus_array (); #endif @@ -918,6 +982,8 @@ _run_trap_internal (sig, tag) save_parser_state (&pstate); save_subst_varlist = subst_assign_varlist; subst_assign_varlist = 0; + save_tempenv = temporary_env; + temporary_env = 0; /* traps should not run with temporary env */ #if defined (JOB_CONTROL) if (sig != DEBUG_TRAP) /* run_debug_trap does this */ @@ -936,9 +1002,12 @@ _run_trap_internal (sig, tag) if (sig != DEBUG_TRAP && sig != RETURN_TRAP && sig != ERROR_TRAP) flags |= SEVAL_RESETLINE; if (function_code == 0) - parse_and_execute (trap_command, tag, flags); - - trap_exit_value = last_command_exit_value; + { + parse_and_execute (trap_command, tag, flags); + trap_exit_value = last_command_exit_value; + } + else + trap_exit_value = return_catch_value; #if defined (JOB_CONTROL) if (sig != DEBUG_TRAP) /* run_debug_trap does this */ @@ -951,9 +1020,12 @@ _run_trap_internal (sig, tag) #if defined (ARRAY_VARS) restore_pipestatus_array (ps); #endif - running_trap = 0; + + temporary_env = save_tempenv; sigmodes[sig] &= ~SIG_INPROGRESS; + running_trap = 0; + interrupt_state = old_int; if (sigmodes[sig] & SIG_CHANGED) { @@ -973,7 +1045,12 @@ _run_trap_internal (sig, tag) return_catch_value = trap_exit_value; COPY_PROCENV (save_return_catch, return_catch); if (function_code) - longjmp (return_catch, 1); + { +#if 0 + from_return_trap = sig == RETURN_TRAP; +#endif + sh_longjmp (return_catch, 1); + } } } @@ -1021,7 +1098,7 @@ run_debug_trap () if (debugging_mode && trap_exit_value == 2 && return_catch_flag) { return_catch_value = trap_exit_value; - longjmp (return_catch, 1); + sh_longjmp (return_catch, 1); } #endif } @@ -1056,8 +1133,11 @@ run_return_trap () /* Run a trap set on SIGINT. This is called from throw_to_top_level (), and declared here to localize the trap functions. */ void -run_interrupt_trap () +run_interrupt_trap (will_throw) + int will_throw; /* from throw_to_top_level? */ { + if (will_throw && running_trap > 0) + run_trap_cleanup (running_trap - 1); _run_trap_internal (SIGINT, "interrupt trap"); } @@ -1073,12 +1153,20 @@ free_trap_strings () { register int i; - for (i = 0; i < BASH_NSIG; i++) + for (i = 0; i < NSIG; i++) { if (trap_list[i] != (char *)IGNORE_SIG) free_trap_string (i); } - trap_list[DEBUG_TRAP] = trap_list[EXIT_TRAP] = trap_list[ERROR_TRAP] = trap_list[RETURN_TRAP] = (char *)NULL; + for (i = NSIG; i < BASH_NSIG; i++) + { + /* Don't free the trap string if the subshell inherited the trap */ + if ((sigmodes[i] & SIG_TRAPPED) == 0) + { + free_trap_string (i); + trap_list[i] = (char *)NULL; + } + } } /* Free a trap command string associated with SIG without changing signal @@ -1140,6 +1228,7 @@ reset_or_restore_signal_handlers (reset) } else if (sigmodes[i] & SIG_SPECIAL) (*reset) (i); + pending_traps[i] = 0; /* XXX */ } /* Command substitution and other child processes don't inherit the @@ -1186,7 +1275,7 @@ maybe_call_trap_handler (sig) switch (sig) { case SIGINT: - run_interrupt_trap (); + run_interrupt_trap (0); break; case EXIT_TRAP: run_exit_trap (); diff --git a/trap.h b/trap.h index 34a05c4..41f185f 100644 --- a/trap.h +++ b/trap.h @@ -74,6 +74,10 @@ extern void set_debug_trap __P((char *)); extern void set_error_trap __P((char *)); extern void set_return_trap __P((char *)); +extern void maybe_set_debug_trap __P((char *)); +extern void maybe_set_error_trap __P((char *)); +extern void maybe_set_return_trap __P((char *)); + extern void set_sigint_trap __P((char *)); extern void set_signal __P((int, char *)); @@ -95,7 +99,7 @@ extern void get_all_original_signals __P((void)); extern char *signal_name __P((int)); extern int decode_signal __P((char *, int)); -extern void run_interrupt_trap __P((void)); +extern void run_interrupt_trap __P((int)); extern int maybe_call_trap_handler __P((int)); extern int signal_is_special __P((int)); extern int signal_is_trapped __P((int)); diff --git a/unwind_prot.c b/unwind_prot.c index 85a10b5..c9196dc 100644 --- a/unwind_prot.c +++ b/unwind_prot.c @@ -49,6 +49,7 @@ #include "sig.h" #include "quit.h" #include "error.h" /* for internal_warning */ +#include "ocache.h" /* Structure describing a saved variable and the value to restore it to. */ typedef struct { @@ -75,7 +76,6 @@ typedef union uwp { } sv; } UNWIND_ELT; - static void without_interrupts __P((VFunction *, char *, char *)); static void unwind_frame_discard_internal __P((char *, char *)); static void unwind_frame_run_internal __P((char *, char *)); @@ -88,8 +88,24 @@ static void unwind_protect_mem_internal __P((char *, char *)); static UNWIND_ELT *unwind_protect_list = (UNWIND_ELT *)NULL; +/* Allocating from a cache of unwind-protect elements */ +#define UWCACHESIZE 128 + +sh_obj_cache_t uwcache = {0, 0, 0}; + +#if 0 #define uwpalloc(elt) (elt) = (UNWIND_ELT *)xmalloc (sizeof (UNWIND_ELT)) #define uwpfree(elt) free(elt) +#else +#define uwpalloc(elt) ocache_alloc (uwcache, UNWIND_ELT, elt) +#define uwpfree(elt) ocache_free (uwcache, UNWIND_ELT, elt) +#endif + +void +uwp_init () +{ + ocache_create (uwcache, UNWIND_ELT, UWCACHESIZE); +} /* Run a function without interrupts. This relies on the fact that the FUNCTION cannot change the value of interrupt_immediately. (I.e., does @@ -183,6 +199,22 @@ have_unwind_protects () return (unwind_protect_list != 0); } +int +unwind_protect_tag_on_stack (tag) + const char *tag; +{ + UNWIND_ELT *elt; + + elt = unwind_protect_list; + while (elt) + { + if (elt->head.cleanup == 0 && STREQ (elt->arg.v, tag)) + return 1; + elt = elt->head.next; + } + return 0; +} + /* **************************************************************** */ /* */ /* The Actual Functions */ @@ -348,10 +380,9 @@ print_unwind_protect_tags () elt = unwind_protect_list; while (elt) { - unwind_protect_list = unwind_protect_list->head.next; if (elt->head.cleanup == 0) fprintf(stderr, "tag: %s\n", elt->arg.v); - elt = unwind_protect_list; + elt = elt->head.next; } } #endif diff --git a/unwind_prot.h b/unwind_prot.h index cc556f7..cbfc97c 100644 --- a/unwind_prot.h +++ b/unwind_prot.h @@ -21,6 +21,8 @@ #if !defined (_UNWIND_PROT_H) #define _UNWIND_PROT_H +extern void uwp_init __P((void)); + /* Run a function without interrupts. */ extern void begin_unwind_frame __P((char *)); extern void discard_unwind_frame __P((char *)); @@ -30,6 +32,7 @@ extern void remove_unwind_protect __P((void)); extern void run_unwind_protects __P((void)); extern void clear_unwind_protect_list __P((int)); extern int have_unwind_protects __P((void)); +extern int unwind_protect_tag_on_stack __P((const char *)); extern void uwp_init __P((void)); /* Define for people who like their code to look a certain way. */ diff --git a/variables.c b/variables.c index 51aaf9c..be2446e 100644 --- a/variables.c +++ b/variables.c @@ -1,6 +1,6 @@ /* variables.c -- Functions for hacking shell variables. */ -/* Copyright (C) 1987-2013 Free Software Foundation, Inc. +/* Copyright (C) 1987-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -79,15 +79,20 @@ # include "pcomplete.h" #endif +#define VARIABLES_HASH_BUCKETS 1024 /* must be power of two */ +#define FUNCTIONS_HASH_BUCKETS 512 #define TEMPENV_HASH_BUCKETS 4 /* must be power of two */ -#define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0') - #define BASHFUNC_PREFIX "BASH_FUNC_" #define BASHFUNC_PREFLEN 10 /* == strlen(BASHFUNC_PREFIX */ #define BASHFUNC_SUFFIX "%%" #define BASHFUNC_SUFFLEN 2 /* == strlen(BASHFUNC_SUFFIX) */ +/* flags for find_variable_internal */ + +#define FV_FORCETEMPENV 0x01 +#define FV_SKIPINVISIBLE 0x02 + extern char **environ; /* Variables used here and defined in other files. */ @@ -171,6 +176,9 @@ static int export_env_size; static int winsize_assignment; /* currently assigning to LINES or COLUMNS */ #endif +SHELL_VAR nameref_invalid_value; +static SHELL_VAR nameref_maxloop_value; + static HASH_TABLE *last_table_searched; /* hash_lookup sets this */ /* Some forward declarations. */ @@ -275,6 +283,8 @@ static int variable_in_context __P((SHELL_VAR *)); static int visible_array_vars __P((SHELL_VAR *)); #endif +static SHELL_VAR *find_variable_internal __P((const char *, int)); + static SHELL_VAR *find_nameref_at_context __P((SHELL_VAR *, VAR_CONTEXT *)); static SHELL_VAR *find_variable_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **)); static SHELL_VAR *find_variable_last_nameref_context __P((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **)); @@ -305,15 +315,15 @@ create_variable_tables () { shell_variables = global_variables = new_var_context ((char *)NULL, 0); shell_variables->scope = 0; - shell_variables->table = hash_create (0); + shell_variables->table = hash_create (VARIABLES_HASH_BUCKETS); } if (shell_functions == 0) - shell_functions = hash_create (0); + shell_functions = hash_create (FUNCTIONS_HASH_BUCKETS); #if defined (DEBUGGER) if (shell_function_defs == 0) - shell_function_defs = hash_create (0); + shell_function_defs = hash_create (FUNCTIONS_HASH_BUCKETS); #endif } @@ -331,7 +341,7 @@ initialize_shell_variables (env, privmode) create_variable_tables (); - for (string_index = 0; string = env[string_index++]; ) + for (string_index = 0; env && (string = env[string_index++]); ) { char_index = 0; name = string; @@ -352,6 +362,7 @@ initialize_shell_variables (env, privmode) temp_var = (SHELL_VAR *)NULL; +#if defined (FUNCTION_IMPORT) /* If exported function, define it now. Don't import functions from the environment in privileged mode. */ if (privmode == 0 && read_but_dont_execute == 0 && @@ -375,10 +386,12 @@ initialize_shell_variables (env, privmode) memcpy (temp_string + namelen + 1, string, string_length + 1); /* Don't import function names that are invalid identifiers from the - environment, though we still allow them to be defined as shell - variables. */ + environment in posix mode, though we still allow them to be defined as + shell variables. */ if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname))) parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); + else + free (temp_string); /* parse_and_execute does this */ if (temp_var = find_function (tname)) { @@ -399,24 +412,22 @@ initialize_shell_variables (env, privmode) /* Restore original suffix */ tname[namelen] = BASHFUNC_SUFFIX[0]; } + else +#endif /* FUNCTION_IMPORT */ #if defined (ARRAY_VARS) # if ARRAY_EXPORT /* Array variables may not yet be exported. */ - else if (*string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')') + if (*string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')') { string_length = 1; temp_string = extract_array_assignment_list (string, &string_length); - temp_var = assign_array_from_string (name, temp_string); + temp_var = assign_array_from_string (name, temp_string, 0); FREE (temp_string); VSETATTR (temp_var, (att_exported | att_imported)); array_needs_making = 1; } -# endif /* ARRAY_EXPORT */ -#endif -#if 0 - else if (legal_identifier (name)) -#else else +# endif /* ARRAY_EXPORT */ #endif { ro = 0; @@ -479,7 +490,8 @@ initialize_shell_variables (env, privmode) qnx_nidtostr (getnid (), node_name, sizeof (node_name)); # endif temp_var = bind_variable ("NODE", node_name, 0); - set_auto_export (temp_var); + if (temp_var) + set_auto_export (temp_var); } #endif @@ -495,7 +507,11 @@ initialize_shell_variables (env, privmode) #endif set_if_not ("PS2", secondary_prompt); } - set_if_not ("PS4", "+ "); + + if (current_user.euid == 0) + bind_variable ("PS4", "+ ", 0); + else + set_if_not ("PS4", "+ "); /* Don't allow IFS to be imported from the environment. */ temp_var = bind_variable ("IFS", " \t\n", 0); @@ -633,6 +649,11 @@ initialize_shell_variables (env, privmode) if (temp_var && imported_p (temp_var)) sv_xtracefd (temp_var->name); + sv_shcompat ("BASH_COMPAT"); + + /* Allow FUNCNEST to be inherited from the environment. */ + sv_funcnest ("FUNCNEST"); + /* Initialize the dynamic variables, and seed their values. */ initialize_dynamic_variables (); } @@ -788,7 +809,7 @@ adjust_shell_level (change) shell_level = old_level + change; if (shell_level < 0) shell_level = 0; - else if (shell_level > 1000) + else if (shell_level >= 1000) { internal_warning (_("shell level (%d) too high, resetting to 1"), shell_level); shell_level = 1; @@ -836,16 +857,25 @@ void set_pwd () { SHELL_VAR *temp_var, *home_var; - char *temp_string, *home_string; + char *temp_string, *home_string, *current_dir; home_var = find_variable ("HOME"); home_string = home_var ? value_cell (home_var) : (char *)NULL; temp_var = find_variable ("PWD"); + /* Follow posix rules for importing PWD */ if (temp_var && imported_p (temp_var) && (temp_string = value_cell (temp_var)) && + temp_string[0] == '/' && same_file (temp_string, ".", (struct stat *)NULL, (struct stat *)NULL)) - set_working_directory (temp_string); + { + current_dir = sh_canonpath (temp_string, PATH_CHECKDOTDOT|PATH_CHECKEXISTS); + if (current_dir == 0) + current_dir = get_working_directory ("shell_init"); + else + set_working_directory (current_dir); + free (current_dir); + } else if (home_string && interactive_shell && login_shell && same_file (home_string, ".", (struct stat *)NULL, (struct stat *)NULL)) { @@ -865,10 +895,15 @@ set_pwd () } /* According to the Single Unix Specification, v2, $OLDPWD is an - `environment variable' and therefore should be auto-exported. - Make a dummy invisible variable for OLDPWD, and mark it as exported. */ - temp_var = bind_variable ("OLDPWD", (char *)NULL, 0); - VSETATTR (temp_var, (att_exported | att_invisible)); + `environment variable' and therefore should be auto-exported. If we + don't find OLDPWD in the environment, or it doesn't name a directory, + make a dummy invisible variable for OLDPWD, and mark it as exported. */ + temp_var = find_variable ("OLDPWD"); + if (temp_var == 0 || value_cell (temp_var) == 0 || file_isdir (value_cell (temp_var)) == 0) + { + temp_var = bind_variable ("OLDPWD", (char *)NULL, 0); + VSETATTR (temp_var, (att_exported | att_invisible)); + } } /* Make a variable $PPID, which holds the pid of the shell's parent. */ @@ -919,7 +954,7 @@ make_vers_array () ARRAY *av; char *s, d[32], b[INT_STRLEN_BOUND(int) + 1]; - unbind_variable ("BASH_VERSINFO"); + unbind_variable_noref ("BASH_VERSINFO"); vv = make_new_array_variable ("BASH_VERSINFO"); av = array_cell (vv); @@ -1597,6 +1632,13 @@ assign_hashcmd (self, value, ind, key) arrayind_t ind; char *key; { +#if defined (RESTRICTED_SHELL) + if (restricted && strchr (value, '/')) + { + sh_restricted (value); + return (SHELL_VAR *)NULL; + } +#endif phash_insert (key, value, 0, 0); return (build_hashcmd (self)); } @@ -1808,16 +1850,18 @@ var_lookup (name, vcontext) */ SHELL_VAR * -find_variable_internal (name, force_tempenv) +find_variable_internal (name, flags) const char *name; - int force_tempenv; + int flags; { SHELL_VAR *var; - int search_tempenv; + int search_tempenv, force_tempenv; VAR_CONTEXT *vc; var = (SHELL_VAR *)NULL; + force_tempenv = (flags & FV_FORCETEMPENV); + /* If explicitly requested, first look in the temporary environment for the variable. This allows constructs such as "foo=x eval 'echo $foo'" to get the `exported' value of $foo. This happens if we are executing @@ -1828,22 +1872,24 @@ find_variable_internal (name, force_tempenv) if (search_tempenv && temporary_env) var = hash_lookup (name, temporary_env); - vc = shell_variables; -#if 0 -if (search_tempenv == 0 && /* (subshell_environment & SUBSHELL_COMSUB) && */ - expanding_redir && - (this_shell_builtin == eval_builtin || this_shell_builtin == command_builtin)) - { - itrace("find_variable_internal: search_tempenv == 0: skipping VC_BLTNENV"); - while (vc && (vc->flags & VC_BLTNENV)) - vc = vc->down; - if (vc == 0) - vc = shell_variables; - } -#endif - if (var == 0) - var = var_lookup (name, vc); + { + if ((flags & FV_SKIPINVISIBLE) == 0) + var = var_lookup (name, shell_variables); + else + { + /* essentially var_lookup expanded inline so we can check for + att_invisible */ + for (vc = shell_variables; vc; vc = vc->down) + { + var = hash_lookup (name, vc->table); + if (var && invisible_p (var)) + var = 0; + if (var) + break; + } + } + } if (var == 0) return ((SHELL_VAR *)NULL); @@ -1857,8 +1903,8 @@ SHELL_VAR * find_variable_nameref (v) SHELL_VAR *v; { - int level; - char *newname; + int level, flags; + char *newname, *t; SHELL_VAR *orig, *oldv; level = 0; @@ -1872,7 +1918,11 @@ find_variable_nameref (v) if (newname == 0 || *newname == '\0') return ((SHELL_VAR *)0); oldv = v; - v = find_variable_internal (newname, (expanding_redir == 0 && (assigning_in_environment || executing_builtin))); + flags = 0; + if (expanding_redir == 0 && (assigning_in_environment || executing_builtin)) + flags |= FV_FORCETEMPENV; + /* We don't handle array subscripts here. */ + v = find_variable_internal (newname, flags); if (v == orig || v == oldv) { internal_warning (_("%s: circular name reference"), orig->name); @@ -1884,12 +1934,13 @@ find_variable_nameref (v) /* Resolve the chain of nameref variables for NAME. XXX - could change later */ SHELL_VAR * -find_variable_last_nameref (name) +find_variable_last_nameref (name, vflags) const char *name; + int vflags; { SHELL_VAR *v, *nv; char *newname; - int level; + int level, flags; nv = v = find_variable_noref (name); level = 0; @@ -1900,17 +1951,22 @@ find_variable_last_nameref (name) return ((SHELL_VAR *)0); /* error message here? */ newname = nameref_cell (v); if (newname == 0 || *newname == '\0') - return ((SHELL_VAR *)0); + return ((vflags && invisible_p (v)) ? v : (SHELL_VAR *)0); nv = v; - v = find_variable_internal (newname, (expanding_redir == 0 && (assigning_in_environment || executing_builtin))); + flags = 0; + if (expanding_redir == 0 && (assigning_in_environment || executing_builtin)) + flags |= FV_FORCETEMPENV; + /* We don't accommodate array subscripts here. */ + v = find_variable_internal (newname, flags); } return nv; } /* Resolve the chain of nameref variables for NAME. XXX - could change later */ SHELL_VAR * -find_global_variable_last_nameref (name) +find_global_variable_last_nameref (name, vflags) const char *name; + int vflags; { SHELL_VAR *v, *nv; char *newname; @@ -1925,8 +1981,9 @@ find_global_variable_last_nameref (name) return ((SHELL_VAR *)0); /* error message here? */ newname = nameref_cell (v); if (newname == 0 || *newname == '\0') - return ((SHELL_VAR *)0); + return ((vflags && invisible_p (v)) ? v : (SHELL_VAR *)0); nv = v; + /* We don't accommodate array subscripts here. */ v = find_global_variable_noref (newname); } return nv; @@ -1948,7 +2005,7 @@ find_nameref_at_context (v, vc) { level++; if (level > NAMEREF_MAX) - return ((SHELL_VAR *)NULL); + return (&nameref_maxloop_value); newname = nameref_cell (nv); if (newname == 0 || *newname == '\0') return ((SHELL_VAR *)NULL); @@ -1978,6 +2035,8 @@ find_variable_nameref_context (v, vc, nvcp) for (nv = v, nvc = vc; nvc; nvc = nvc->down) { nv2 = find_nameref_at_context (nv, nvc); + if (nv2 == &nameref_maxloop_value) + return (nv2); /* XXX */ if (nv2 == 0) continue; nv = nv2; @@ -2007,6 +2066,8 @@ find_variable_last_nameref_context (v, vc, nvcp) for (nv = v, nvc = vc; nvc; nvc = nvc->down) { nv2 = find_nameref_at_context (nv, nvc); + if (nv2 == &nameref_maxloop_value) + return (nv2); /* XXX */ if (nv2 == 0) continue; nv = nv2; @@ -2016,6 +2077,58 @@ find_variable_last_nameref_context (v, vc, nvcp) return (nameref_p (nv) ? nv : (SHELL_VAR *)NULL); } +SHELL_VAR * +find_variable_nameref_for_create (name, flags) + const char *name; + int flags; +{ + SHELL_VAR *var; + + /* See if we have a nameref pointing to a variable that hasn't been + created yet. */ + var = find_variable_last_nameref (name, 1); + if ((flags&1) && var && nameref_p (var) && invisible_p (var)) + { + internal_warning (_("%s: removing nameref attribute"), name); + VUNSETATTR (var, att_nameref); + } + if (var && nameref_p (var)) + { + if (legal_identifier (nameref_cell (var)) == 0) + { + sh_invalidid (nameref_cell (var) ? nameref_cell (var) : ""); + return ((SHELL_VAR *)INVALID_NAMEREF_VALUE); + } + } + return (var); +} + +SHELL_VAR * +find_variable_nameref_for_assignment (name, flags) + const char *name; + int flags; +{ + SHELL_VAR *var; + + /* See if we have a nameref pointing to a variable that hasn't been + created yet. */ + var = find_variable_last_nameref (name, 1); + if (var && nameref_p (var) && invisible_p (var)) /* XXX - flags */ + { + internal_warning (_("%s: removing nameref attribute"), name); + VUNSETATTR (var, att_nameref); + } + if (var && nameref_p (var)) + { + if (valid_nameref_value (nameref_cell (var), 1) == 0) + { + sh_invalidid (nameref_cell (var) ? nameref_cell (var) : ""); + return ((SHELL_VAR *)INVALID_NAMEREF_VALUE); + } + } + return (var); +} + /* Find a variable, forcing a search of the temporary environment first */ SHELL_VAR * find_variable_tempenv (name) @@ -2023,7 +2136,7 @@ find_variable_tempenv (name) { SHELL_VAR *var; - var = find_variable_internal (name, 1); + var = find_variable_internal (name, FV_FORCETEMPENV); if (var && nameref_p (var)) var = find_variable_nameref (var); return (var); @@ -2094,9 +2207,52 @@ find_variable (name) const char *name; { SHELL_VAR *v; + int flags; last_table_searched = 0; - v = find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin))); + flags = 0; + if (expanding_redir == 0 && (assigning_in_environment || executing_builtin)) + flags |= FV_FORCETEMPENV; + v = find_variable_internal (name, flags); + if (v && nameref_p (v)) + v = find_variable_nameref (v); + return v; +} + +/* Find the first instance of NAME in the variable context chain; return first + one found without att_invisible set; return 0 if no non-invisible instances + found. */ +SHELL_VAR * +find_variable_no_invisible (name) + const char *name; +{ + SHELL_VAR *v; + int flags; + + last_table_searched = 0; + flags = FV_SKIPINVISIBLE; + if (expanding_redir == 0 && (assigning_in_environment || executing_builtin)) + flags |= FV_FORCETEMPENV; + v = find_variable_internal (name, flags); + if (v && nameref_p (v)) + v = find_variable_nameref (v); + return v; +} + +/* Find the first instance of NAME in the variable context chain; return first + one found even if att_invisible set. */ +SHELL_VAR * +find_variable_for_assignment (name) + const char *name; +{ + SHELL_VAR *v; + int flags; + + last_table_searched = 0; + flags = 0; + if (expanding_redir == 0 && (assigning_in_environment || executing_builtin)) + flags |= FV_FORCETEMPENV; + v = find_variable_internal (name, flags); if (v && nameref_p (v)) v = find_variable_nameref (v); return v; @@ -2107,8 +2263,12 @@ find_variable_noref (name) const char *name; { SHELL_VAR *v; + int flags; - v = find_variable_internal (name, (expanding_redir == 0 && (assigning_in_environment || executing_builtin))); + flags = 0; + if (expanding_redir == 0 && (assigning_in_environment || executing_builtin)) + flags |= FV_FORCETEMPENV; + v = find_variable_internal (name, flags); return v; } @@ -2154,9 +2314,9 @@ get_variable_value (var) /* Return the string value of a variable. Return NULL if the variable doesn't exist. Don't cons a new string. This is a potential memory - leak if the variable is found in the temporary environment. Since - functions and variables have separate name spaces, returns NULL if - var_name is a shell function only. */ + leak if the variable is found in the temporary environment, but doesn't + leak in practice. Since functions and variables have separate name + spaces, returns NULL if var_name is a shell function only. */ char * get_string_value (var_name) const char *var_name; @@ -2202,16 +2362,29 @@ SHELL_VAR * make_local_variable (name) const char *name; { - SHELL_VAR *new_var, *old_var; + SHELL_VAR *new_var, *old_var, *old_ref; VAR_CONTEXT *vc; int was_tmpvar; char *tmp_value; + /* We don't want to follow the nameref chain when making local variables; we + just want to create them. */ + old_ref = find_variable_noref (name); + if (old_ref && nameref_p (old_ref) == 0) + old_ref = 0; /* local foo; local foo; is a no-op. */ old_var = find_variable (name); - if (old_var && local_p (old_var) && old_var->context == variable_context) + if (old_ref == 0 && old_var && local_p (old_var) && old_var->context == variable_context) return (old_var); + /* local -n foo; local -n foo; is a no-op. */ + if (old_ref && local_p (old_ref) && old_ref->context == variable_context) + return (old_ref); + + /* From here on, we want to use the refvar, not the variable it references */ + if (old_ref) + old_var = old_ref; + was_tmpvar = old_var && tempvar_p (old_var); /* If we're making a local variable in a shell function, the temporary env has already been merged into the function's variable context stack. We @@ -2225,7 +2398,7 @@ make_local_variable (name) set in hash_lookup and only (so far) checked here. */ if (was_tmpvar && old_var->context == variable_context && last_table_searched != temporary_env) { - VUNSETATTR (old_var, att_invisible); + VUNSETATTR (old_var, att_invisible); /* XXX */ return (old_var); } if (was_tmpvar) @@ -2289,7 +2462,7 @@ make_local_variable (name) if (ifsname (name)) setifs (new_var); - if (was_tmpvar == 0) + if (was_tmpvar == 0 && no_invisible_vars == 0) VSETATTR (new_var, att_invisible); /* XXX */ return (new_var); } @@ -2516,27 +2689,10 @@ bind_variable_internal (name, value, table, hflags, aflags) HASH_TABLE *table; int hflags, aflags; { - char *newname, *newval; - SHELL_VAR *entry; -#if defined (ARRAY_VARS) - arrayind_t ind; - char *subp; - int sublen; -#endif + char *newval, *tname; + SHELL_VAR *entry, *tentry; - newname = 0; -#if defined (ARRAY_VARS) - if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name)) - { - newname = array_variable_name (name, &subp, &sublen); - if (newname == 0) - return (SHELL_VAR *)NULL; /* XXX */ - entry = hash_lookup (newname, table); - } - else -#endif entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table); - /* Follow the nameref chain here if this is the global variables table */ if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table) { @@ -2544,22 +2700,44 @@ bind_variable_internal (name, value, table, hflags, aflags) /* Let's see if we have a nameref referencing a variable that hasn't yet been created. */ if (entry == 0) - entry = find_variable_last_nameref (name); /* XXX */ + entry = find_variable_last_nameref (name, 0); /* XXX */ if (entry == 0) /* just in case */ return (entry); } - /* The first clause handles `declare -n ref; ref=x;' */ + /* The first clause handles `declare -n ref; ref=x;' or `declare -n ref; + declare -n ref' */ if (entry && invisible_p (entry) && nameref_p (entry)) - goto assign_value; + { + if ((aflags & ASS_FORCE) == 0 && value && valid_nameref_value (value, 0) == 0) + { + sh_invalidid (value); + return ((SHELL_VAR *)NULL); + } + goto assign_value; + } else if (entry && nameref_p (entry)) { newval = nameref_cell (entry); #if defined (ARRAY_VARS) - /* declare -n foo=x[2] */ - if (valid_array_reference (newval)) - /* XXX - should it be aflags? */ - entry = assign_array_element (newval, make_variable_value (entry, value, 0), aflags); + /* declare -n foo=x[2] ; foo=bar */ + if (valid_array_reference (newval, 0)) + { + tname = array_variable_name (newval, (char **)0, (int *)0); + if (tname && (tentry = find_variable_noref (tname)) && nameref_p (tentry)) + { + /* nameref variables can't be arrays */ + internal_warning (_("%s: removing nameref attribute"), name_cell (tentry)); + FREE (value_cell (tentry)); /* XXX - bash-4.3 compat */ + var_setvalue (tentry, (char *)NULL); + VUNSETATTR (tentry, att_nameref); + } + free (tname); + /* XXX - should it be aflags? */ + entry = assign_array_element (newval, make_variable_value (entry, value, 0), aflags|ASS_NAMEREF); + if (entry == 0) + return entry; + } else #endif { @@ -2567,16 +2745,6 @@ bind_variable_internal (name, value, table, hflags, aflags) var_setvalue (entry, make_variable_value (entry, value, 0)); } } -#if defined (ARRAY_VARS) - else if (entry == 0 && newname) - { - entry = make_new_array_variable (newname); /* indexed array by default */ - if (entry == 0) - return entry; - ind = array_expand_index (name, subp, sublen); - bind_array_element (entry, ind, value, aflags); - } -#endif else if (entry == 0) { entry = make_new_variable (name, table); @@ -2599,10 +2767,10 @@ bind_variable_internal (name, value, table, hflags, aflags) else { assign_value: - if (readonly_p (entry) || noassign_p (entry)) + if ((readonly_p (entry) && (aflags & ASS_FORCE) == 0) || noassign_p (entry)) { if (readonly_p (entry)) - err_readonly (name); + err_readonly (name_cell (entry)); return (entry); } @@ -2674,7 +2842,7 @@ bind_variable (name, value, flags) shell_variables table. This allows sourced scripts to modify values given to them in a temporary environment while modifying the variable value that the caller sees. */ - if (temporary_env) + if (temporary_env && value) /* XXX - can value be null here? */ bind_tempenv_variable (name, value); /* XXX -- handle local variables here. */ @@ -2697,12 +2865,34 @@ bind_variable (name, value, flags) normal. */ if (nameref_cell (nv) == 0) return (bind_variable_internal (nv->name, value, nvc->table, 0, flags)); - /* XXX - bug here with ref=array[index] */ - return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags|ASS_FROMREF)); +#if defined (ARRAY_VARS) + else if (valid_array_reference (nameref_cell (nv), 0)) + return (assign_array_element (nameref_cell (nv), value, flags)); + else +#endif + return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags)); + } + else if (nv == &nameref_maxloop_value) + { + internal_warning (_("%s: circular name reference"), v->name); +#if 0 + return (bind_variable_value (v, value, flags|ASS_NAMEREF)); +#else + v = 0; /* backwards compat */ +#endif } else v = nv; } + else if (nv == &nameref_maxloop_value) + { + internal_warning (_("%s: circular name reference"), v->name); +#if 0 + return (bind_variable_value (v, value, flags|ASS_NAMEREF)); +#else + v = 0; /* backwards compat */ +#endif + } else v = nv; } @@ -2760,11 +2950,20 @@ bind_variable_value (var, value, aflags) else { t = make_variable_value (var, value, aflags); -#if defined (ARRAY_VARS) - if ((aflags & ASS_NAMEREF) && (t == 0 || *t == 0 || (legal_identifier (t) == 0 && valid_array_reference (t) == 0))) -#else - if ((aflags & ASS_NAMEREF) && (t == 0 || *t == 0 || legal_identifier (t) == 0)) -#endif + if ((aflags & (ASS_NAMEREF|ASS_FORCE)) == ASS_NAMEREF && check_selfref (name_cell (var), t, 0)) + { + if (variable_context) + internal_warning (_("%s: circular name reference"), name_cell (var)); + else + { + internal_error (_("%s: nameref variable self references not allowed"), name_cell (var)); + free (t); + if (invis) + VSETATTR (var, att_invisible); /* XXX */ + return ((SHELL_VAR *)NULL); + } + } + if ((aflags & ASS_NAMEREF) && (valid_nameref_value (t, 0) == 0)) { free (t); if (invis) @@ -2805,7 +3004,7 @@ bind_int_variable (lhs, rhs) isint = isarr = implicitarray = 0; #if defined (ARRAY_VARS) - if (valid_array_reference (lhs)) + if (valid_array_reference (lhs, 0)) { isarr = 1; v = array_variable_part (lhs, (char **)0, (int *)0); @@ -2840,6 +3039,9 @@ bind_int_variable (lhs, rhs) VUNSETATTR (v, att_invisible); } + if (v && nameref_p (v)) + internal_warning (_("%s: assigning integer to name reference"), lhs); + return (v); } @@ -2941,7 +3143,7 @@ assign_in_env (word, flags) int flags; { int offset, aflags; - char *name, *temp, *value; + char *name, *temp, *value, *newname; SHELL_VAR *var; const char *string; @@ -2949,7 +3151,7 @@ assign_in_env (word, flags) aflags = 0; offset = assignment (string, 0); - name = savestring (string); + newname = name = savestring (string); value = (char *)NULL; if (name[offset] == '=') @@ -2964,6 +3166,23 @@ assign_in_env (word, flags) } var = find_variable (name); + if (var == 0) + { + var = find_variable_last_nameref (name, 1); + /* If we're assigning a value to a nameref variable in the temp + environment, and the value of the nameref is valid for assignment, + but the variable does not already exist, assign to the nameref + target and add the target to the temporary environment. This is + what ksh93 does */ + if (var && nameref_p (var) && valid_nameref_value (nameref_cell (var), 1)) + { + newname = nameref_cell (var); + var = 0; /* don't use it for append */ + } + } + else + newname = name_cell (var); /* no-op if not nameref */ + if (var && (readonly_p (var) || noassign_p (var))) { if (readonly_p (var)) @@ -2971,12 +3190,17 @@ assign_in_env (word, flags) free (name); return (0); } - temp = name + offset + 1; + value = expand_assignment_string_to_string (temp, 0); if (var && (aflags & ASS_APPEND)) { + if (value == 0) + { + value = (char *)xmalloc (1); /* like do_assignment_internal */ + value[0] = '\0'; + } temp = make_variable_value (var, value, aflags); FREE (value); value = temp; @@ -2986,15 +3210,15 @@ assign_in_env (word, flags) if (temporary_env == 0) temporary_env = hash_create (TEMPENV_HASH_BUCKETS); - var = hash_lookup (name, temporary_env); + var = hash_lookup (newname, temporary_env); if (var == 0) - var = make_new_variable (name, temporary_env); + var = make_new_variable (newname, temporary_env); else FREE (value_cell (var)); if (value == 0) { - value = (char *)xmalloc (1); /* like do_assignment_internal */ + value = (char *)xmalloc (1); /* see above */ value[0] = '\0'; } @@ -3003,12 +3227,12 @@ assign_in_env (word, flags) var->context = variable_context; /* XXX */ INVALIDATE_EXPORTSTR (var); - var->exportstr = mk_env_string (name, value, 0); + var->exportstr = mk_env_string (newname, value, 0); array_needs_making = 1; if (flags) - stupidly_hack_special_variables (name); + stupidly_hack_special_variables (newname); if (echo_command_at_execute) /* The Korn shell prints the `+ ' in front of assignment statements, @@ -3140,6 +3364,34 @@ unbind_nameref (name) return 0; } +/* Unbind the first instance of NAME, whether it's a nameref or not */ +int +unbind_variable_noref (name) + const char *name; +{ + SHELL_VAR *v; + + v = var_lookup (name, shell_variables); + if (v) + return makunbound (name, shell_variables); + return 0; +} + +int +check_unbind_variable (name) + const char *name; +{ + SHELL_VAR *v; + + v = find_variable (name); + if (v && readonly_p (v)) + { + internal_error (_("%s: cannot unset: readonly %s"), name, "variable"); + return -1; + } + return (unbind_variable (name)); +} + /* Unset the shell function named NAME. */ int unbind_func (name) @@ -3798,12 +4050,12 @@ push_temp_var (data) { if (shell_variables == global_variables) /* shouldn't happen */ - binding_table = shell_variables->table = global_variables->table = hash_create (0); + binding_table = shell_variables->table = global_variables->table = hash_create (VARIABLES_HASH_BUCKETS); else binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS); } - v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, 0); + v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE); /* XXX - should we set the context here? It shouldn't matter because of how assign_in_env works, but might want to check. */ @@ -3815,7 +4067,8 @@ push_temp_var (data) if (binding_table == shell_variables->table) shell_variables->flags |= VC_HASTMPVAR; } - v->attributes |= var->attributes; + if (v) + v->attributes |= var->attributes; if (find_special_var (var->name) >= 0) tempvar_list[tvlist_ind++] = savestring (var->name); @@ -3894,6 +4147,17 @@ merge_temporary_env () dispose_temporary_env (push_temp_var); } +void +flush_temporary_env () +{ + if (temporary_env) + { + hash_flush (temporary_env, free_variable_hash_data); + hash_dispose (temporary_env); + temporary_env = (HASH_TABLE *)NULL; + } +} + /* **************************************************************** */ /* */ /* Creating and manipulating the environment */ @@ -4003,13 +4267,13 @@ make_env_array_from_var_list (vars) #if defined (ARRAY_VARS) else if (array_p (var)) # if ARRAY_EXPORT - value = array_to_assignment_string (array_cell (var)); + value = array_to_assign (array_cell (var), 0); # else continue; /* XXX array vars cannot yet be exported */ # endif /* ARRAY_EXPORT */ else if (assoc_p (var)) # if 0 - value = assoc_to_assignment_string (assoc_cell (var)); + value = assoc_to_assign (assoc_cell (var), 0); # else continue; /* XXX associative array vars cannot yet be exported */ # endif @@ -4373,20 +4637,33 @@ push_func_var (data) var = (SHELL_VAR *)data; - if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate))) + if (local_p (var) && STREQ (var->name, "-")) + set_current_options (value_cell (var)); + else if (tempvar_p (var) && (posixly_correct || (var->attributes & att_propagate))) { /* Make sure we have a hash table to store the variable in while it is being propagated down to the global variables table. Create one if we have to */ if ((vc_isfuncenv (shell_variables) || vc_istempenv (shell_variables)) && shell_variables->table == 0) - shell_variables->table = hash_create (0); + shell_variables->table = hash_create (VARIABLES_HASH_BUCKETS); /* XXX - should we set v->context here? */ v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); +#if defined (ARRAY_VARS) + if (array_p (var) || assoc_p (var)) + { + FREE (value_cell (v)); + if (array_p (var)) + var_setarray (v, array_copy (array_cell (var))); + else + var_setassoc (v, assoc_copy (assoc_cell (var))); + } +#endif if (shell_variables == global_variables) var->attributes &= ~(att_tempvar|att_propagate); else shell_variables->flags |= VC_HASTMPVAR; - v->attributes |= var->attributes; + if (v) + v->attributes |= var->attributes; } else stupidly_hack_special_variables (var->name); /* XXX */ @@ -4474,7 +4751,8 @@ push_exported_var (data) v = bind_variable_internal (var->name, value_cell (var), shell_variables->table, 0, 0); if (shell_variables == global_variables) var->attributes &= ~att_propagate; - v->attributes |= var->attributes; + if (v) + v->attributes |= var->attributes; } else stupidly_hack_special_variables (var->name); /* XXX */ @@ -4527,8 +4805,7 @@ static WORD_LIST **dollar_arg_stack = (WORD_LIST **)NULL; static int dollar_arg_stack_slots; static int dollar_arg_stack_index; -/* XXX - we might want to consider pushing and popping the `getopts' state - when we modify the positional parameters. */ +/* XXX - should always be followed by remember_args () */ void push_context (name, is_subshell, tempvars) char *name; /* function name */ @@ -4681,6 +4958,8 @@ static struct name_and_function special_vars[] = { { "COMP_WORDBREAKS", sv_comp_wordbreaks }, #endif + { "EXECIGNORE", sv_execignore }, + { "FUNCNEST", sv_funcnest }, { "GLOBIGNORE", sv_globignore }, @@ -4870,6 +5149,14 @@ sv_funcnest (name) funcnest_max = num; } +/* What to do when EXECIGNORE changes. */ +void +sv_execignore (name) + char *name; +{ + setup_exec_ignore (name); +} + /* What to do when GLOBIGNORE changes. */ void sv_globignore (name) @@ -4931,7 +5218,7 @@ sv_winsize (name) return; v = find_variable (name); - if (v == 0 || var_isnull (v)) + if (v == 0 || var_isset (v) == 0) rl_reset_screen_size (); else { @@ -4994,7 +5281,10 @@ sv_histsize (name) else if (hmax >= 0) /* truncate HISTFILE if HISTFILESIZE >= 0 */ { history_truncate_file (get_string_value ("HISTFILE"), hmax); - if (hmax <= history_lines_in_file) + /* If we just shrank the history file to fewer lines than we've + already read, make sure we adjust our idea of how many lines + we have read from the file. */ + if (hmax < history_lines_in_file) history_lines_in_file = hmax; } } @@ -5108,7 +5398,7 @@ sv_ignoreeof (name) eof_encountered = 0; tmp_var = find_variable (name); - ignoreeof = tmp_var != 0; + ignoreeof = tmp_var && var_isset (tmp_var); temp = tmp_var ? value_cell (tmp_var) : (char *)NULL; if (temp) eof_encountered_limit = (*temp && all_digits (temp)) ? atoi (temp) : 10; @@ -5119,10 +5409,16 @@ void sv_optind (name) char *name; { + SHELL_VAR *var; char *tt; int s; - tt = get_string_value ("OPTIND"); + var = find_variable ("OPTIND"); + tt = var ? get_variable_value (var) : (char *)NULL; + + /* Assume that if var->context < variable_context and variable_context > 0 + then we are restoring the variables's previous state while returning + from a function. */ if (tt && *tt) { s = atoi (tt); @@ -5151,7 +5447,10 @@ void sv_strict_posix (name) char *name; { - SET_INT_VAR (name, posixly_correct); + SHELL_VAR *var; + + var = find_variable (name); + posixly_correct = var && var_isset (var); posix_initialize (posixly_correct); #if defined (READLINE) if (interactive_shell) @@ -5351,14 +5650,14 @@ sv_shcompat (name) return; } /* Handle decimal-like compatibility version specifications: 4.2 */ - if (isdigit (val[0]) && val[1] == '.' && isdigit (val[2]) && val[3] == 0) + if (ISDIGIT (val[0]) && val[1] == '.' && ISDIGIT (val[2]) && val[3] == 0) { tens = val[0] - '0'; ones = val[2] - '0'; compatval = tens*10 + ones; } /* Handle integer-like compatibility version specifications: 42 */ - else if (isdigit (val[0]) && isdigit (val[1]) && val[2] == 0) + else if (ISDIGIT (val[0]) && ISDIGIT (val[1]) && val[2] == 0) { tens = val[0] - '0'; ones = val[1] - '0'; diff --git a/variables.h b/variables.h index 1a783b9..25c9ae0 100644 --- a/variables.h +++ b/variables.h @@ -1,6 +1,6 @@ /* variables.h -- data structures for shell variables. */ -/* Copyright (C) 1987-2012 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -156,6 +156,9 @@ typedef struct _vlist { #define tempvar_p(var) ((((var)->attributes) & (att_tempvar))) +/* Variable names: lvalues */ +#define name_cell(var) ((var)->name) + /* Acessing variable values: rvalues */ #define value_cell(var) ((var)->value) #define function_cell(var) (COMMAND *)((var)->value) @@ -165,8 +168,9 @@ typedef struct _vlist { #define NAMEREF_MAX 8 /* only 8 levels of nameref indirection */ -#define var_isnull(var) ((var)->value == 0) #define var_isset(var) ((var)->value != 0) +#define var_isunset(var) ((var)->value == 0) +#define var_isnull(var) ((var)->value && *(var)->value == 0) /* Assigning variable values: lvalues */ #define var_setvalue(var, str) ((var)->value = (str)) @@ -211,6 +215,12 @@ typedef struct _vlist { (var)->exportstr = (char *)NULL; \ } \ } while (0) + +#define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0') + +/* Special value for nameref with invalid value for creation or assignment */ +extern SHELL_VAR nameref_invalid_value; +#define INVALID_NAMEREF_VALUE (void *)&nameref_invalid_value /* Stuff for hacking variables. */ typedef int sh_var_map_func_t __P((SHELL_VAR *)); @@ -240,16 +250,20 @@ extern SHELL_VAR *find_function __P((const char *)); extern FUNCTION_DEF *find_function_def __P((const char *)); extern SHELL_VAR *find_variable __P((const char *)); extern SHELL_VAR *find_variable_noref __P((const char *)); -extern SHELL_VAR *find_variable_last_nameref __P((const char *)); -extern SHELL_VAR *find_global_variable_last_nameref __P((const char *)); +extern SHELL_VAR *find_variable_last_nameref __P((const char *, int)); +extern SHELL_VAR *find_global_variable_last_nameref __P((const char *, int)); extern SHELL_VAR *find_variable_nameref __P((SHELL_VAR *)); -extern SHELL_VAR *find_variable_internal __P((const char *, int)); +extern SHELL_VAR *find_variable_nameref_for_create __P((const char *, int)); +extern SHELL_VAR *find_variable_nameref_for_assignment __P((const char *, int)); +/*extern SHELL_VAR *find_variable_internal __P((const char *, int));*/ extern SHELL_VAR *find_variable_tempenv __P((const char *)); extern SHELL_VAR *find_variable_notempenv __P((const char *)); extern SHELL_VAR *find_global_variable __P((const char *)); extern SHELL_VAR *find_global_variable_noref __P((const char *)); extern SHELL_VAR *find_shell_variable __P((const char *)); extern SHELL_VAR *find_tempenv_variable __P((const char *)); +extern SHELL_VAR *find_variable_no_invisible __P((const char *)); +extern SHELL_VAR *find_variable_for_assignment __P((const char *)); extern SHELL_VAR *copy_variable __P((SHELL_VAR *)); extern SHELL_VAR *make_local_variable __P((const char *)); extern SHELL_VAR *bind_variable __P((const char *, char *, int)); @@ -288,7 +302,9 @@ extern SHELL_VAR *bind_var_to_int __P((char *, intmax_t)); extern int assign_in_env __P((WORD_DESC *, int)); extern int unbind_variable __P((const char *)); +extern int check_unbind_variable __P((const char *)); extern int unbind_nameref __P((const char *)); +extern int unbind_variable_noref __P((const char *)); extern int unbind_func __P((const char *)); extern int unbind_function_def __P((const char *)); extern int delete_var __P((const char *, VAR_CONTEXT *)); @@ -320,6 +336,7 @@ extern void dispose_used_env_vars __P((void)); extern void dispose_function_env __P((void)); extern void dispose_builtin_env __P((void)); extern void merge_temporary_env __P((void)); +extern void flush_temporary_env __P((void)); extern void merge_builtin_env __P((void)); extern void kill_all_local_variables __P((void)); @@ -372,6 +389,7 @@ extern void sv_ifs __P((char *)); extern void sv_path __P((char *)); extern void sv_mail __P((char *)); extern void sv_funcnest __P((char *)); +extern void sv_execignore __P((char *)); extern void sv_globignore __P((char *)); extern void sv_ignoreeof __P((char *)); extern void sv_strict_posix __P((char *)); diff --git a/version.c b/version.c index 3fa4aeb..f241c5c 100644 --- a/version.c +++ b/version.c @@ -1,6 +1,6 @@ /* version.c -- distribution and version numbers. */ -/* Copyright (C) 1989-2013 Free Software Foundation, Inc. +/* Copyright (C) 1989-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -43,7 +43,7 @@ const char * const release_status = (char *)0; #endif const char * const sccs_version = SCCSVERSION; -const char * const bash_copyright = N_("Copyright (C) 2013 Free Software Foundation, Inc."); +const char * const bash_copyright = N_("Copyright (C) 2016 Free Software Foundation, Inc."); const char * const bash_license = N_("License GPLv3+: GNU GPL version 3 or later \n"); /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */ @@ -64,13 +64,13 @@ shell_version_string () if (tt[0] == '\0') { if (release_status) -#if defined (HAVE_SNPRINTF) +#if HAVE_SNPRINTF snprintf (tt, sizeof (tt), "%s.%d(%d)-%s", dist_version, patch_level, build_version, release_status); #else sprintf (tt, "%s.%d(%d)-%s", dist_version, patch_level, build_version, release_status); #endif else -#if defined (HAVE_SNPRINTF) +#if HAVE_SNPRINTF snprintf (tt, sizeof (tt), "%s.%d(%d)", dist_version, patch_level, build_version); #else sprintf (tt, "%s.%d(%d)", dist_version, patch_level, build_version); diff --git a/xmalloc.c b/xmalloc.c index 2344d2d..b32c068 100644 --- a/xmalloc.c +++ b/xmalloc.c @@ -1,6 +1,6 @@ /* xmalloc.c -- safe versions of malloc and realloc */ -/* Copyright (C) 1991-2009 Free Software Foundation, Inc. +/* Copyright (C) 1991-2016 Free Software Foundation, Inc. This file is part of GNU Bash, the GNU Bourne Again SHell. @@ -61,7 +61,7 @@ static size_t allocated; /* */ /* **************************************************************** */ -#if defined (HAVE_SBRK) +#if defined (HAVE_SBRK) && defined (USING_BASH_MALLOC) #define FINDBRK() \ do { \ if (brkfound == 0) \ @@ -86,7 +86,7 @@ allocerr (func, bytes) const char *func; size_t bytes; { -#if defined (HAVE_SBRK) +#if defined (HAVE_SBRK) && defined (USING_BASH_MALLOC) allocated = findbrk (); fatal_error (_("%s: cannot allocate %lu bytes (%lu bytes allocated)"), func, (unsigned long)bytes, (unsigned long)allocated); #else diff --git a/y.tab.c b/y.tab.c index b7264e2..e9a57fc 100644 --- a/y.tab.c +++ b/y.tab.c @@ -1,14 +1,13 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + 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. + 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 @@ -16,9 +15,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -47,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,120 +52,17 @@ /* Pure parsers. */ #define YYPURE 0 -/* Using locations. */ -#define YYLSP_NEEDED 0 +/* Push parsers. */ +#define YYPUSH 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 +/* Pull parsers. */ +#define YYPULL 1 /* Copy the first part of user declarations. */ -#line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 21 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:339 */ #include "config.h" @@ -220,6 +114,8 @@ #if defined (JOB_CONTROL) # include "jobs.h" +#else +extern int cleanup_dead_jobs __P((void)); #endif /* JOB_CONTROL */ #if defined (ALIAS) @@ -276,6 +172,7 @@ extern char *dist_version; extern int patch_level; extern int dump_translatable_strings, dump_po_strings; extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; +extern int here_doc_first_line; #if defined (BUFFERED_INPUT) extern int bash_input_fd_changed; #endif @@ -383,6 +280,9 @@ char *secondary_prompt = SPROMPT; /* PROMPT_STRING_POINTER points to one of these, never to an actual string. */ char *ps1_prompt, *ps2_prompt; +/* Displayed after reading a command but before executing it in an interactive shell */ +char *ps0_prompt; + /* Handle on the current prompt string. Indirectly points through ps1_ or ps2_prompt. */ char **prompt_string_pointer = (char **)NULL; @@ -419,8 +319,6 @@ 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. */ -#define HEREDOC_MAX 16 - static REDIRECT *redir_stack[HEREDOC_MAX]; int need_here_doc; @@ -476,11 +374,15 @@ static WORD_DESC *word_desc_to_read; static REDIRECTEE source; static REDIRECTEE redir; +#line 378 "y.tab.c" /* yacc.c:339 */ -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif +# ifndef YY_NULLPTR +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE @@ -490,15 +392,128 @@ static REDIRECTEE redir; # define YYERROR_VERBOSE 0 #endif -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; #endif +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + 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 + +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y" + +union YYSTYPE { +#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:355 */ + WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ WORD_LIST *word_list; @@ -506,22 +521,25 @@ typedef union YYSTYPE REDIRECT *redirect; ELEMENT element; PATTERN_LIST *pattern; -} -/* Line 193 of yacc.c. */ -#line 512 "y.tab.c" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 + +#line 526 "y.tab.c" /* yacc.c:355 */ +}; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 #endif +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ - -/* Line 216 of yacc.c. */ -#line 525 "y.tab.c" +#line 543 "y.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -535,11 +553,8 @@ typedef unsigned char yytype_uint8; #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; +typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -559,8 +574,7 @@ typedef short int yytype_int16; # 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) +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -574,38 +588,67 @@ typedef short int yytype_int16; # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ -# define YY_(msgid) msgid +# define YY_(Msgid) Msgid +# endif +#endif + +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(e) ((void) (e)) +# define YYUSE(E) ((void) (E)) #else -# define YYUSE(e) /* empty */ +# define YYUSE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(n) (n) +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int i) -#else -static int -YYID (i) - int i; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return i; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + #if ! defined yyoverflow || YYERROR_VERBOSE @@ -624,11 +667,11 @@ YYID (i) # 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) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -636,8 +679,8 @@ YYID (i) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (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 @@ -651,25 +694,23 @@ YYID (i) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined _STDLIB_H \ +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS 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) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -679,14 +720,14 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss; - YYSTYPE yyvs; - }; + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) @@ -697,46 +738,50 @@ union yyalloc ((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 +# define YYCOPY_NEEDED 1 /* 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)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) #endif +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + /* YYFINAL -- State number of the termination state. */ #define YYFINAL 116 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 659 +#define YYLAST 638 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 61 @@ -744,17 +789,19 @@ union yyalloc #define YYNNTS 38 /* YYNRULES -- Number of rules. */ #define YYNRULES 167 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 342 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 334 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 304 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -791,127 +838,30 @@ static const yytype_uint8 yytranslate[] = }; #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. */ + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 382, 382, 393, 402, 417, 427, 429, 433, 439, - 445, 451, 457, 463, 469, 475, 481, 487, 493, 499, - 505, 511, 517, 523, 530, 537, 544, 551, 558, 565, - 571, 577, 583, 589, 595, 601, 607, 613, 619, 625, - 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, - 691, 697, 705, 707, 709, 713, 717, 728, 730, 734, - 736, 738, 754, 756, 760, 762, 764, 766, 768, 770, - 772, 774, 776, 778, 780, 784, 789, 794, 799, 804, - 809, 814, 819, 826, 831, 836, 841, 848, 853, 858, - 863, 868, 873, 880, 885, 890, 897, 900, 903, 907, - 909, 940, 947, 952, 969, 974, 991, 998, 1000, 1002, - 1007, 1011, 1015, 1019, 1021, 1023, 1027, 1028, 1032, 1034, - 1036, 1038, 1042, 1044, 1046, 1048, 1050, 1052, 1056, 1058, - 1067, 1075, 1076, 1082, 1083, 1090, 1094, 1096, 1098, 1105, - 1107, 1109, 1113, 1114, 1117, 1119, 1121, 1125, 1126, 1135, - 1148, 1164, 1179, 1181, 1183, 1190, 1193, 1197, 1199, 1205, - 1211, 1228, 1248, 1250, 1273, 1277, 1279, 1281 + 0, 386, 386, 397, 406, 421, 431, 433, 437, 443, + 449, 455, 461, 467, 473, 479, 485, 491, 497, 503, + 509, 515, 521, 527, 534, 541, 548, 555, 562, 569, + 575, 581, 587, 593, 599, 605, 611, 617, 623, 629, + 635, 641, 647, 653, 659, 665, 671, 677, 683, 689, + 695, 701, 709, 711, 713, 717, 721, 732, 734, 738, + 740, 742, 758, 760, 764, 766, 768, 770, 772, 774, + 776, 778, 780, 782, 784, 788, 793, 798, 803, 808, + 813, 818, 823, 830, 835, 840, 845, 852, 857, 862, + 867, 872, 877, 884, 889, 894, 901, 904, 907, 911, + 913, 944, 951, 956, 973, 978, 995, 1002, 1004, 1006, + 1011, 1015, 1019, 1023, 1025, 1027, 1031, 1032, 1036, 1038, + 1040, 1042, 1046, 1048, 1050, 1052, 1054, 1056, 1060, 1062, + 1071, 1079, 1080, 1086, 1087, 1094, 1098, 1100, 1102, 1109, + 1111, 1113, 1117, 1118, 1121, 1123, 1125, 1129, 1130, 1139, + 1152, 1168, 1183, 1185, 1187, 1194, 1197, 1201, 1203, 1209, + 1215, 1234, 1256, 1258, 1281, 1285, 1287, 1289 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +#if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = @@ -935,13 +885,13 @@ static const char *const yytname[] = "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 + "timespec", YY_NULLPTR }; #endif # ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -954,53 +904,59 @@ static const yytype_uint16 yytoknum[] = }; # endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = +#define YYPACT_NINF -205 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-205))) + +#define YYTABLE_NINF -1 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = { - 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 + 308, -28, -205, 6, -1, 37, -205, -205, 57, 558, + 18, 358, 54, 45, -205, 251, 583, -205, 102, 104, + 35, 107, 80, 112, 127, 140, 146, 147, -205, -205, + 153, 154, -205, -205, 188, -205, -205, 196, -205, 219, + -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, + -205, 17, 23, -205, -19, 358, -205, -205, 185, 408, + -205, 144, 51, 166, 189, 207, 133, 28, 196, 219, + 211, -205, -205, -205, -205, -205, 201, 184, 220, 226, + 81, 227, 126, 233, 234, 241, 242, 245, 246, 249, + 142, 255, 148, 256, 257, 259, 266, 267, -205, -205, + -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, + -205, -205, -205, -205, 243, 240, -205, -205, -205, -205, + 219, -205, -205, -205, -205, -205, 458, 458, -205, -205, + -205, -205, -205, -205, -205, 299, -205, 68, -205, 61, + -205, -205, -205, -205, 72, -205, -205, 244, 41, 219, + 219, -205, -205, -205, -205, -205, -205, -205, -205, -205, + -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, + -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, + -205, -205, -205, -205, -205, 408, 408, 63, 63, 508, + 508, 179, -205, -205, -205, -205, -205, -205, 60, -205, + 155, -205, 287, 252, 74, 108, -205, 286, -205, 300, + 302, -205, 219, -205, 219, 41, -205, -205, -19, -19, + -205, -205, -205, 307, 408, 408, 408, 408, 408, 313, + 159, -205, -4, -205, -205, 312, -205, 161, -205, 265, + -205, -205, -205, -205, -205, -205, 314, 408, 161, 270, + -205, -205, 41, 219, -205, 332, 336, -205, -205, -205, + 87, 87, 87, -205, -205, -205, -205, 178, 11, -205, + -205, 315, -43, 327, 298, -205, -205, -205, 110, -205, + 342, 306, 343, 319, -205, 299, -205, -205, -205, -205, + -205, -205, -205, -205, -205, -32, 346, -205, -205, -205, + 113, -205, -205, -205, -205, -205, -205, 118, 137, -205, + -205, -205, 408, -205, -205, 363, 321, -205, -205, -205, + -205, -205, 408, 367, 325, -205, -205, 374, 333, -205, + -205, -205, -205, -205 }; -/* 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. */ + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_uint8 yydefact[] = { 0, 0, 147, 0, 0, 0, 147, 147, 0, 0, @@ -1024,229 +980,180 @@ static const yytype_uint8 yydefact[] = 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 + 0, 147, 99, 98, 105, 0, 152, 153, 163, 162, + 147, 147, 107, 0, 0, 0, 134, 135, 133, 0, + 116, 147, 0, 147, 147, 0, 6, 0, 147, 0, + 85, 86, 147, 147, 147, 147, 0, 0, 0, 0, + 66, 67, 0, 100, 96, 0, 0, 109, 136, 137, + 138, 139, 140, 95, 122, 124, 126, 117, 0, 93, + 128, 0, 0, 0, 0, 75, 7, 147, 0, 76, + 0, 0, 0, 0, 87, 0, 147, 88, 97, 108, + 147, 123, 125, 127, 94, 0, 0, 147, 77, 78, + 0, 147, 147, 83, 84, 89, 90, 0, 113, 147, + 129, 118, 119, 147, 147, 0, 0, 147, 147, 147, + 115, 120, 121, 0, 0, 81, 82, 0, 0, 114, + 79, 80, 91, 92 }; -/* 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]. */ + /* 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 + -205, -205, 183, -36, -23, -50, 364, -205, -7, -205, + -205, -205, -205, -205, -204, -205, -205, -205, -205, -205, + -205, 84, -205, 167, -205, 128, -202, -6, -205, 52, + -205, -46, -48, -205, -119, 24, -33, -205 }; -/* 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 + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 34, 237, 35, 36, 120, 37, 38, 39, 40, + 41, 42, 43, 44, 213, 45, 46, 47, 48, 49, + 50, 223, 229, 230, 231, 272, 57, 58, 134, 135, + 123, 74, 59, 51, 52, 136, 54, 55 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_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, + 64, 65, 69, 119, 246, 269, 249, 187, 188, 130, + 296, 254, 137, 139, 118, 144, 142, 297, 148, 150, + 294, 296, 270, 56, 53, 61, 114, 115, 309, 128, + 62, 2, 60, 119, 129, 75, 3, 270, 4, 5, + 6, 7, 282, 283, 2, 118, 10, 133, 288, 3, + 70, 4, 5, 6, 7, 271, 124, 125, 17, 10, + 149, 100, 133, 63, 101, 140, 216, 217, 121, 122, + 271, 17, 126, 127, 233, 199, 185, 186, 76, 131, + 189, 190, 200, 66, 184, 32, 206, 33, 242, 197, + 198, 102, 133, 207, 204, 205, 124, 125, 32, 214, + 33, 71, 72, 73, 77, 215, 104, 156, 141, 105, + 157, 133, 133, 119, 184, 327, 328, 234, 201, 133, + 192, 193, 244, 133, 301, 133, 191, 313, 98, 208, + 99, 243, 317, 103, 202, 203, 106, 158, 107, 209, + 210, 212, 319, 221, 224, 225, 226, 227, 228, 232, + 53, 53, 160, 108, 238, 161, 218, 219, 247, 133, + 247, 133, 253, 252, 133, 245, 109, 302, 170, 133, + 314, 171, 110, 111, 174, 318, 119, 175, 184, 112, + 113, 236, 162, 268, 220, 221, 222, 276, 116, 132, + 278, 277, 147, 235, 138, 239, 247, 247, 172, 264, + 265, 266, 286, 145, 176, 71, 72, 73, 212, 53, + 53, 71, 72, 73, 255, 256, 143, 184, 291, 292, + 293, 146, 117, 14, 15, 16, 152, 273, 274, 300, + 151, 18, 19, 20, 21, 22, 280, 281, 307, 23, + 24, 25, 26, 27, 153, 212, 154, 15, 16, 312, + 30, 31, 155, 159, 18, 19, 20, 21, 22, 163, + 164, 322, 23, 24, 25, 26, 27, 165, 166, 247, + 247, 167, 168, 30, 31, 169, 258, 259, 260, 261, + 262, 173, 177, 178, 308, 179, 78, 79, 80, 81, + 82, 311, 180, 181, 83, 315, 316, 84, 85, 285, + 183, 182, 240, 321, 211, 86, 87, 323, 324, 1, + 241, 2, 236, 329, 257, 250, 3, 251, 4, 5, + 6, 7, 263, 279, 8, 9, 10, 275, 287, 284, + 11, 12, 192, 193, 13, 14, 15, 16, 17, 289, + 290, 270, 298, 18, 19, 20, 21, 22, 194, 195, + 196, 23, 24, 25, 26, 27, 299, 303, 305, 28, + 29, 2, 30, 31, 304, 32, 3, 33, 4, 5, + 6, 7, 310, 68, 8, 9, 10, 306, 325, 326, + 11, 12, 330, 331, 13, 14, 15, 16, 17, 332, + 248, 333, 320, 18, 19, 20, 21, 22, 267, 295, + 0, 23, 24, 25, 26, 27, 0, 0, 71, 72, + 73, 2, 30, 31, 0, 32, 3, 33, 4, 5, + 6, 7, 0, 0, 8, 9, 10, 0, 0, 0, + 11, 12, 0, 0, 13, 14, 15, 16, 17, 0, 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, - 0, 23, 24, 25, 26, 27, 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 + 0, 23, 24, 25, 26, 27, 0, 0, 0, 133, + 0, 2, 30, 31, 0, 32, 3, 33, 4, 5, + 6, 7, 0, 0, 8, 9, 10, 0, 0, 0, + 11, 12, 0, 0, 13, 14, 15, 16, 17, 0, + 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, + 0, 23, 24, 25, 26, 27, 0, 0, 0, 0, + 0, 2, 30, 31, 0, 32, 3, 33, 4, 5, + 6, 7, 0, 0, 8, 9, 10, 0, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, 17, 0, + 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, + 0, 23, 24, 25, 26, 27, 0, 0, 0, 133, + 0, 2, 30, 31, 0, 32, 3, 33, 4, 5, + 6, 7, 0, 0, 0, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 67, 14, 15, 16, 17, 0, + 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, + 0, 23, 24, 25, 26, 27, 0, 0, 0, 0, + 0, 0, 30, 31, 0, 32, 0, 33, 88, 89, + 90, 91, 92, 0, 0, 0, 93, 0, 0, 94, + 95, 0, 0, 0, 0, 0, 0, 96, 97 }; 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, + 6, 7, 9, 39, 206, 9, 208, 126, 127, 55, + 53, 215, 60, 61, 37, 63, 62, 60, 66, 69, + 9, 53, 26, 51, 0, 26, 32, 33, 60, 48, + 31, 3, 26, 69, 53, 11, 8, 26, 10, 11, + 12, 13, 244, 245, 3, 68, 18, 51, 252, 8, + 32, 10, 11, 12, 13, 59, 33, 34, 30, 18, + 67, 26, 51, 26, 29, 14, 185, 186, 51, 52, + 59, 30, 49, 50, 14, 14, 124, 125, 24, 55, + 128, 129, 21, 26, 120, 57, 14, 59, 14, 21, + 138, 56, 51, 21, 142, 143, 33, 34, 57, 149, + 59, 50, 51, 52, 59, 153, 26, 26, 57, 29, + 29, 51, 51, 149, 150, 317, 318, 57, 57, 51, + 33, 34, 14, 51, 14, 51, 132, 14, 26, 57, + 26, 57, 14, 26, 140, 141, 56, 56, 26, 145, + 146, 148, 5, 6, 192, 193, 194, 195, 196, 197, + 126, 127, 26, 26, 200, 29, 189, 190, 206, 51, + 208, 51, 212, 211, 51, 57, 26, 57, 26, 51, + 57, 29, 26, 26, 26, 57, 212, 29, 214, 26, + 26, 26, 56, 231, 5, 6, 7, 26, 0, 4, + 238, 237, 59, 199, 50, 201, 244, 245, 56, 40, + 41, 42, 248, 14, 56, 50, 51, 52, 215, 185, + 186, 50, 51, 52, 220, 221, 50, 253, 40, 41, + 42, 14, 26, 27, 28, 29, 25, 233, 234, 277, + 19, 35, 36, 37, 38, 39, 242, 243, 286, 43, + 44, 45, 46, 47, 60, 252, 26, 28, 29, 297, + 54, 55, 26, 26, 35, 36, 37, 38, 39, 26, + 26, 309, 43, 44, 45, 46, 47, 26, 26, 317, + 318, 26, 26, 54, 55, 26, 224, 225, 226, 227, + 228, 26, 26, 26, 290, 26, 35, 36, 37, 38, + 39, 297, 26, 26, 43, 301, 302, 46, 47, 247, + 60, 58, 15, 309, 60, 54, 55, 313, 314, 1, + 58, 3, 26, 319, 7, 15, 8, 15, 10, 11, + 12, 13, 9, 58, 16, 17, 18, 15, 58, 15, + 22, 23, 33, 34, 26, 27, 28, 29, 30, 7, + 4, 26, 15, 35, 36, 37, 38, 39, 49, 50, + 51, 43, 44, 45, 46, 47, 58, 15, 15, 51, + 52, 3, 54, 55, 58, 57, 8, 59, 10, 11, + 12, 13, 26, 9, 16, 17, 18, 58, 15, 58, + 22, 23, 15, 58, 26, 27, 28, 29, 30, 15, + 207, 58, 308, 35, 36, 37, 38, 39, 231, 271, + -1, 43, 44, 45, 46, 47, -1, -1, 50, 51, + 52, 3, 54, 55, -1, 57, 8, 59, 10, 11, + 12, 13, -1, -1, 16, 17, 18, -1, -1, -1, + 22, 23, -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, - -1, 43, 44, 45, 46, 47, 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 + -1, 43, 44, 45, 46, 47, -1, -1, -1, 51, + -1, 3, 54, 55, -1, 57, 8, 59, 10, 11, + 12, 13, -1, -1, 16, 17, 18, -1, -1, -1, + 22, 23, -1, -1, 26, 27, 28, 29, 30, -1, + -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, + -1, 43, 44, 45, 46, 47, -1, -1, -1, -1, + -1, 3, 54, 55, -1, 57, 8, 59, 10, 11, + 12, 13, -1, -1, 16, 17, 18, -1, -1, -1, + -1, -1, -1, -1, 26, 27, 28, 29, 30, -1, + -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, + -1, 43, 44, 45, 46, 47, -1, -1, -1, 51, + -1, 3, 54, 55, -1, 57, 8, 59, 10, 11, + 12, 13, -1, -1, -1, -1, 18, -1, -1, -1, + -1, -1, -1, -1, 26, 27, 28, 29, 30, -1, + -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, + -1, 43, 44, 45, 46, 47, -1, -1, -1, -1, + -1, -1, 54, 55, -1, 57, -1, 59, 35, 36, + 37, 38, 39, -1, -1, -1, 43, -1, -1, 46, + 47, -1, -1, -1, -1, -1, -1, 54, 55 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ + /* 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, @@ -1270,111 +1177,100 @@ static const yytype_uint8 yystos[] = 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 + 88, 60, 69, 75, 66, 93, 95, 95, 97, 97, + 5, 6, 7, 82, 93, 93, 93, 93, 93, 83, + 84, 85, 93, 14, 57, 88, 26, 63, 92, 88, + 15, 58, 14, 57, 14, 57, 87, 93, 63, 87, + 15, 15, 93, 66, 75, 88, 88, 7, 90, 90, + 90, 90, 90, 9, 40, 41, 42, 84, 93, 9, + 26, 59, 86, 88, 88, 15, 26, 92, 93, 58, + 88, 88, 87, 87, 15, 90, 92, 58, 75, 7, + 4, 40, 41, 42, 9, 86, 53, 60, 15, 58, + 93, 14, 57, 15, 58, 15, 58, 93, 88, 60, + 26, 88, 93, 14, 57, 88, 88, 14, 57, 5, + 82, 88, 93, 88, 88, 15, 58, 87, 87, 88, + 15, 58, 15, 58 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 + /* 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 +}; -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 1, 2, 1, 1, 2, 2, 2, + 3, 3, 3, 3, 2, 3, 3, 2, 3, 3, + 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 +}; -/* 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 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 -#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 \ - { \ +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 -#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 @@ -1384,54 +1280,46 @@ while (YYID (0)) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (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)) +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +# 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 (0) + + +/*----------------------------------------. +| Print this symbol's value 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 { + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); # endif - switch (yytype) - { - default: - break; - } + YYUSE (yytype); } @@ -1439,22 +1327,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) | 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]); + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); @@ -1465,66 +1342,54 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) | 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 +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (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 +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { + unsigned long int yylno = yyrline[yyrule]; 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); + 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"); + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -1538,7 +1403,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1553,7 +1418,6 @@ int yydebug; # define YYMAXDEPTH 10000 #endif - #if YYERROR_VERBOSE @@ -1562,15 +1426,8 @@ int yydebug; # 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++) @@ -1586,16 +1443,8 @@ yystrlen (yystr) # 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; @@ -1625,27 +1474,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; + 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 (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -1656,211 +1505,209 @@ yytnamerr (char *yyres, const char *yystr) } # 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) +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) { - int yyn = yypact[yystate]; + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) - return 0; - else + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) { - 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; + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + 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 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; + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* 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 = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; } #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; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } - - -/* 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. */ + +/* The lookahead symbol. */ int yychar; -/* The semantic value of the look-ahead symbol. */ +/* The semantic value of the lookahead 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 yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + int yyn; int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ + /* Lookahead token as an internal (translated) token number. */ int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; @@ -1868,54 +1715,22 @@ yyparse () 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; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + 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; - + yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. @@ -1936,25 +1751,23 @@ yyparse () #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; + /* 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); - /* 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; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -1962,23 +1775,22 @@ yyparse () # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + 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); - + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -1986,16 +1798,18 @@ yyparse () yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; + goto yybackup; /*-----------. @@ -2004,20 +1818,20 @@ yyparse () yybackup: /* Do appropriate processing given the current state. Read a - look-ahead token if we need one and don't already have one. */ + lookahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to look-ahead token. */ + /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) + if (yypact_value_is_default (yyn)) goto yydefault; - /* Not known => get a look-ahead token if don't already have one. */ + /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (); } if (yychar <= YYEOF) @@ -2039,29 +1853,27 @@ yybackup: yyn = yytable[yyn]; if (yyn <= 0) { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; + if (yytable_value_is_error (yyn)) + 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. */ + /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; + /* Discard the shifted token. */ + yychar = YYEMPTY; yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END goto yynewstate; @@ -2084,7 +1896,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -2098,21 +1910,22 @@ yyreduce: switch (yyn) { case 2: -#line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 387 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { /* Case of regular command. Discard the error safety net,and return the command just parsed. */ - global_command = (yyvsp[(1) - (2)].command); + global_command = (yyvsp[-1].command); eof_encountered = 0; /* discard_parser_constructs (0); */ if (parser_state & PST_CMDSUBST) parser_state |= PST_EOFTOKEN; YYACCEPT; } +#line 1925 "y.tab.c" /* yacc.c:1646 */ break; case 3: -#line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 398 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { /* Case of regular command, but not a very interesting one. Return a NULL command. */ @@ -2121,10 +1934,11 @@ yyreduce: parser_state |= PST_EOFTOKEN; YYACCEPT; } +#line 1938 "y.tab.c" /* yacc.c:1646 */ break; case 4: -#line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 407 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { /* Error during parsing. Return NULL command. */ global_command = (COMMAND *)NULL; @@ -2139,10 +1953,11 @@ yyreduce: YYABORT; } } +#line 1957 "y.tab.c" /* yacc.c:1646 */ break; case 5: -#line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 422 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { /* Case of EOF seen by itself. Do ignoreeof or not. */ @@ -2150,752 +1965,847 @@ yyreduce: handle_eof_input_unit (); YYACCEPT; } +#line 1969 "y.tab.c" /* yacc.c:1646 */ break; case 6: -#line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } +#line 432 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } +#line 1975 "y.tab.c" /* yacc.c:1646 */ break; case 7: -#line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } +#line 434 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); } +#line 1981 "y.tab.c" /* yacc.c:1646 */ break; case 8: -#line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 438 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); } +#line 1991 "y.tab.c" /* yacc.c:1646 */ break; case 9: -#line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 444 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); } +#line 2001 "y.tab.c" /* yacc.c:1646 */ break; case 10: -#line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 450 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.filename = (yyvsp[(3) - (3)].word); + source.dest = (yyvsp[-2].number); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); } +#line 2011 "y.tab.c" /* yacc.c:1646 */ break; case 11: -#line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 456 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.filename = (yyvsp[(3) - (3)].word); + source.dest = (yyvsp[-2].number); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); } +#line 2021 "y.tab.c" /* yacc.c:1646 */ break; case 12: -#line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 462 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.filename = (yyvsp[(3) - (3)].word); + source.filename = (yyvsp[-2].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN); } +#line 2031 "y.tab.c" /* yacc.c:1646 */ break; case 13: -#line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 468 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.filename = (yyvsp[(3) - (3)].word); + source.filename = (yyvsp[-2].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN); } +#line 2041 "y.tab.c" /* yacc.c:1646 */ break; case 14: -#line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 474 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); } +#line 2051 "y.tab.c" /* yacc.c:1646 */ break; case 15: -#line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 480 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.filename = (yyvsp[(3) - (3)].word); + source.dest = (yyvsp[-2].number); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); } +#line 2061 "y.tab.c" /* yacc.c:1646 */ break; case 16: -#line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 486 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.filename = (yyvsp[(3) - (3)].word); + source.filename = (yyvsp[-2].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN); } +#line 2071 "y.tab.c" /* yacc.c:1646 */ break; case 17: -#line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 492 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); } +#line 2081 "y.tab.c" /* yacc.c:1646 */ break; case 18: -#line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 498 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.filename = (yyvsp[(3) - (3)].word); + source.dest = (yyvsp[-2].number); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); } +#line 2091 "y.tab.c" /* yacc.c:1646 */ break; case 19: -#line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 504 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.filename = (yyvsp[(3) - (3)].word); + source.filename = (yyvsp[-2].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN); } +#line 2101 "y.tab.c" /* yacc.c:1646 */ break; case 20: -#line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 510 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); } +#line 2111 "y.tab.c" /* yacc.c:1646 */ break; case 21: -#line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 516 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.filename = (yyvsp[(3) - (3)].word); + source.dest = (yyvsp[-2].number); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); } +#line 2121 "y.tab.c" /* yacc.c:1646 */ break; case 22: -#line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 522 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.filename = (yyvsp[(3) - (3)].word); + source.filename = (yyvsp[-2].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN); } +#line 2131 "y.tab.c" /* yacc.c:1646 */ break; case 23: -#line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 528 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } +#line 2142 "y.tab.c" /* yacc.c:1646 */ break; case 24: -#line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 535 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.filename = (yyvsp[(3) - (3)].word); + source.dest = (yyvsp[-2].number); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } +#line 2153 "y.tab.c" /* yacc.c:1646 */ break; case 25: -#line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 542 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.filename = (yyvsp[(3) - (3)].word); + source.filename = (yyvsp[-2].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); push_heredoc ((yyval.redirect)); } +#line 2164 "y.tab.c" /* yacc.c:1646 */ break; case 26: -#line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 549 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } +#line 2175 "y.tab.c" /* yacc.c:1646 */ break; case 27: -#line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 556 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.filename = (yyvsp[(3) - (3)].word); + source.dest = (yyvsp[-2].number); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); push_heredoc ((yyval.redirect)); } +#line 2186 "y.tab.c" /* yacc.c:1646 */ break; case 28: -#line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 563 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.filename = (yyvsp[(3) - (3)].word); + source.filename = (yyvsp[-2].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); push_heredoc ((yyval.redirect)); } +#line 2197 "y.tab.c" /* yacc.c:1646 */ break; case 29: -#line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 570 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); } +#line 2207 "y.tab.c" /* yacc.c:1646 */ break; case 30: -#line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 576 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.filename = (yyvsp[(3) - (3)].word); + source.dest = (yyvsp[-2].number); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); } +#line 2217 "y.tab.c" /* yacc.c:1646 */ break; case 31: -#line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 582 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.filename = (yyvsp[(3) - (3)].word); + source.filename = (yyvsp[-2].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN); } +#line 2227 "y.tab.c" /* yacc.c:1646 */ break; case 32: -#line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 588 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; - redir.dest = (yyvsp[(2) - (2)].number); + redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); } +#line 2237 "y.tab.c" /* yacc.c:1646 */ break; case 33: -#line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 594 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.dest = (yyvsp[(3) - (3)].number); + source.dest = (yyvsp[-2].number); + redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); } +#line 2247 "y.tab.c" /* yacc.c:1646 */ break; case 34: -#line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 600 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.dest = (yyvsp[(3) - (3)].number); + source.filename = (yyvsp[-2].word); + redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN); } +#line 2257 "y.tab.c" /* yacc.c:1646 */ break; case 35: -#line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 606 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; - redir.dest = (yyvsp[(2) - (2)].number); + redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); } +#line 2267 "y.tab.c" /* yacc.c:1646 */ break; case 36: -#line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 612 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.dest = (yyvsp[(3) - (3)].number); + source.dest = (yyvsp[-2].number); + redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); } +#line 2277 "y.tab.c" /* yacc.c:1646 */ break; case 37: -#line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 618 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.dest = (yyvsp[(3) - (3)].number); + source.filename = (yyvsp[-2].word); + redir.dest = (yyvsp[0].number); (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN); } +#line 2287 "y.tab.c" /* yacc.c:1646 */ break; case 38: -#line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 624 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); } +#line 2297 "y.tab.c" /* yacc.c:1646 */ break; case 39: -#line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 630 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.filename = (yyvsp[(3) - (3)].word); + source.dest = (yyvsp[-2].number); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); } +#line 2307 "y.tab.c" /* yacc.c:1646 */ break; case 40: -#line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 636 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.filename = (yyvsp[(3) - (3)].word); + source.filename = (yyvsp[-2].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN); } +#line 2317 "y.tab.c" /* yacc.c:1646 */ break; case 41: -#line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 642 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); } +#line 2327 "y.tab.c" /* yacc.c:1646 */ break; case 42: -#line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 648 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); - redir.filename = (yyvsp[(3) - (3)].word); + source.dest = (yyvsp[-2].number); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); } +#line 2337 "y.tab.c" /* yacc.c:1646 */ break; case 43: -#line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 654 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); - redir.filename = (yyvsp[(3) - (3)].word); + source.filename = (yyvsp[-2].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN); } +#line 2347 "y.tab.c" /* yacc.c:1646 */ break; case 44: -#line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 660 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } +#line 2357 "y.tab.c" /* yacc.c:1646 */ break; case 45: -#line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 666 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); + source.dest = (yyvsp[-2].number); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } +#line 2367 "y.tab.c" /* yacc.c:1646 */ break; case 46: -#line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 672 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); + source.filename = (yyvsp[-2].word); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); } +#line 2377 "y.tab.c" /* yacc.c:1646 */ break; case 47: -#line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 678 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 0; redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } +#line 2387 "y.tab.c" /* yacc.c:1646 */ break; case 48: -#line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 684 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.dest = (yyvsp[(1) - (3)].number); + source.dest = (yyvsp[-2].number); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); } +#line 2397 "y.tab.c" /* yacc.c:1646 */ break; case 49: -#line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 690 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - source.filename = (yyvsp[(1) - (3)].word); + source.filename = (yyvsp[-2].word); redir.dest = 0; (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); } +#line 2407 "y.tab.c" /* yacc.c:1646 */ break; case 50: -#line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 696 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0); } +#line 2417 "y.tab.c" /* yacc.c:1646 */ break; case 51: -#line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 702 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { source.dest = 1; - redir.filename = (yyvsp[(2) - (2)].word); + redir.filename = (yyvsp[0].word); (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0); } +#line 2427 "y.tab.c" /* yacc.c:1646 */ break; case 52: -#line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } +#line 710 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } +#line 2433 "y.tab.c" /* yacc.c:1646 */ break; case 53: -#line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } +#line 712 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; } +#line 2439 "y.tab.c" /* yacc.c:1646 */ break; case 54: -#line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } +#line 714 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; } +#line 2445 "y.tab.c" /* yacc.c:1646 */ break; case 55: -#line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 718 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.redirect) = (yyvsp[(1) - (1)].redirect); + (yyval.redirect) = (yyvsp[0].redirect); } +#line 2453 "y.tab.c" /* yacc.c:1646 */ break; case 56: -#line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 722 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { register REDIRECT *t; - for (t = (yyvsp[(1) - (2)].redirect); t->next; t = t->next) + for (t = (yyvsp[-1].redirect); t->next; t = t->next) ; - t->next = (yyvsp[(2) - (2)].redirect); - (yyval.redirect) = (yyvsp[(1) - (2)].redirect); + t->next = (yyvsp[0].redirect); + (yyval.redirect) = (yyvsp[-1].redirect); } +#line 2466 "y.tab.c" /* yacc.c:1646 */ break; case 57: -#line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } +#line 733 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); } +#line 2472 "y.tab.c" /* yacc.c:1646 */ break; case 58: -#line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } +#line 735 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); } +#line 2478 "y.tab.c" /* yacc.c:1646 */ break; case 59: -#line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } +#line 739 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = clean_simple_command ((yyvsp[0].command)); } +#line 2484 "y.tab.c" /* yacc.c:1646 */ break; case 60: -#line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 741 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2490 "y.tab.c" /* yacc.c:1646 */ break; case 61: -#line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 743 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { COMMAND *tc; - tc = (yyvsp[(1) - (2)].command); + tc = (yyvsp[-1].command); if (tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; - t->next = (yyvsp[(2) - (2)].redirect); + t->next = (yyvsp[0].redirect); } else - tc->redirects = (yyvsp[(2) - (2)].redirect); - (yyval.command) = (yyvsp[(1) - (2)].command); + tc->redirects = (yyvsp[0].redirect); + (yyval.command) = (yyvsp[-1].command); } +#line 2510 "y.tab.c" /* yacc.c:1646 */ break; case 62: -#line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 759 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2516 "y.tab.c" /* yacc.c:1646 */ break; case 63: -#line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 761 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2522 "y.tab.c" /* yacc.c:1646 */ break; case 64: -#line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 765 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2528 "y.tab.c" /* yacc.c:1646 */ break; case 65: -#line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 767 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2534 "y.tab.c" /* yacc.c:1646 */ break; case 66: -#line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } +#line 769 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); } +#line 2540 "y.tab.c" /* yacc.c:1646 */ break; case 67: -#line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } +#line 771 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); } +#line 2546 "y.tab.c" /* yacc.c:1646 */ break; case 68: -#line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 773 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2552 "y.tab.c" /* yacc.c:1646 */ break; case 69: -#line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 775 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2558 "y.tab.c" /* yacc.c:1646 */ break; case 70: -#line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 777 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2564 "y.tab.c" /* yacc.c:1646 */ break; case 71: -#line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 779 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2570 "y.tab.c" /* yacc.c:1646 */ break; case 72: -#line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 781 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2576 "y.tab.c" /* yacc.c:1646 */ break; case 73: -#line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 783 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2582 "y.tab.c" /* yacc.c:1646 */ break; case 74: -#line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 785 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2588 "y.tab.c" /* yacc.c:1646 */ break; case 75: -#line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 789 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2597 "y.tab.c" /* yacc.c:1646 */ break; case 76: -#line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 794 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2606 "y.tab.c" /* yacc.c:1646 */ break; case 77: -#line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 799 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2615 "y.tab.c" /* yacc.c:1646 */ break; case 78: -#line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 804 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2624 "y.tab.c" /* yacc.c:1646 */ break; case 79: -#line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 809 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (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]); + (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2633 "y.tab.c" /* yacc.c:1646 */ break; case 80: -#line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 814 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (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]); + (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2642 "y.tab.c" /* yacc.c:1646 */ break; case 81: -#line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 819 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2651 "y.tab.c" /* yacc.c:1646 */ break; case 82: -#line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 824 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); + (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2660 "y.tab.c" /* yacc.c:1646 */ break; case 83: -#line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 831 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); + (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); if (word_top > 0) word_top--; } +#line 2669 "y.tab.c" /* yacc.c:1646 */ break; case 84: -#line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 836 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); + (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno); if (word_top > 0) word_top--; } +#line 2678 "y.tab.c" /* yacc.c:1646 */ break; case 85: -#line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 841 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); + (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); if (word_top > 0) word_top--; } +#line 2687 "y.tab.c" /* yacc.c:1646 */ break; case 86: -#line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 846 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); + (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno); if (word_top > 0) word_top--; } +#line 2696 "y.tab.c" /* yacc.c:1646 */ break; case 87: -#line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 853 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2705 "y.tab.c" /* yacc.c:1646 */ break; case 88: -#line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 858 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2714 "y.tab.c" /* yacc.c:1646 */ break; case 89: -#line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 863 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2723 "y.tab.c" /* yacc.c:1646 */ break; case 90: -#line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 868 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2732 "y.tab.c" /* yacc.c:1646 */ break; case 91: -#line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 873 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (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]); + (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2741 "y.tab.c" /* yacc.c:1646 */ break; case 92: -#line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 878 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (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]); + (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2750 "y.tab.c" /* yacc.c:1646 */ break; case 93: -#line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 885 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); + (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2759 "y.tab.c" /* yacc.c:1646 */ break; case 94: -#line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 890 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); + (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2768 "y.tab.c" /* yacc.c:1646 */ break; case 95: -#line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 895 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); + (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]); if (word_top > 0) word_top--; } +#line 2777 "y.tab.c" /* yacc.c:1646 */ break; case 96: -#line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } +#line 902 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } +#line 2783 "y.tab.c" /* yacc.c:1646 */ break; case 97: -#line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } +#line 905 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); } +#line 2789 "y.tab.c" /* yacc.c:1646 */ break; case 98: -#line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } +#line 908 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_function_def ((yyvsp[-2].word), (yyvsp[0].command), function_dstart, function_bstart); } +#line 2795 "y.tab.c" /* yacc.c:1646 */ break; case 99: -#line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 912 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 2801 "y.tab.c" /* yacc.c:1646 */ break; case 100: -#line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 914 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { COMMAND *tc; - tc = (yyvsp[(1) - (2)].command); + tc = (yyvsp[-1].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 @@ -2914,378 +2824,430 @@ yyreduce: register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; - t->next = (yyvsp[(2) - (2)].redirect); + t->next = (yyvsp[0].redirect); } else - tc->redirects = (yyvsp[(2) - (2)].redirect); - (yyval.command) = (yyvsp[(1) - (2)].command); + tc->redirects = (yyvsp[0].redirect); + (yyval.command) = (yyvsp[-1].command); } +#line 2834 "y.tab.c" /* yacc.c:1646 */ break; case 101: -#line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 945 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); + (yyval.command) = make_subshell_command ((yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL; } +#line 2843 "y.tab.c" /* yacc.c:1646 */ break; case 102: -#line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 952 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } +#line 2852 "y.tab.c" /* yacc.c:1646 */ break; case 103: -#line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 957 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { COMMAND *tc; - tc = (yyvsp[(2) - (3)].command); + tc = (yyvsp[-1].command); if (tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; - t->next = (yyvsp[(3) - (3)].redirect); + t->next = (yyvsp[0].redirect); } else - tc->redirects = (yyvsp[(3) - (3)].redirect); - (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (3)].command)); + tc->redirects = (yyvsp[0].redirect); + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } +#line 2873 "y.tab.c" /* yacc.c:1646 */ break; case 104: -#line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 974 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); + (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } +#line 2882 "y.tab.c" /* yacc.c:1646 */ break; case 105: -#line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 979 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { COMMAND *tc; - tc = (yyvsp[(3) - (4)].command); + tc = (yyvsp[-1].command); if (tc->redirects) { register REDIRECT *t; for (t = tc->redirects; t->next; t = t->next) ; - t->next = (yyvsp[(4) - (4)].redirect); + t->next = (yyvsp[0].redirect); } else - tc->redirects = (yyvsp[(4) - (4)].redirect); - (yyval.command) = make_coproc_command ((yyvsp[(2) - (4)].word)->word, (yyvsp[(3) - (4)].command)); + tc->redirects = (yyvsp[0].redirect); + (yyval.command) = make_coproc_command ((yyvsp[-2].word)->word, (yyvsp[-1].command)); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } +#line 2903 "y.tab.c" /* yacc.c:1646 */ break; case 106: -#line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 996 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command))); (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; } +#line 2912 "y.tab.c" /* yacc.c:1646 */ break; case 107: -#line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } +#line 1003 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); } +#line 2918 "y.tab.c" /* yacc.c:1646 */ break; case 108: -#line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } +#line 1005 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); } +#line 2924 "y.tab.c" /* yacc.c:1646 */ break; case 109: -#line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } +#line 1007 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); } +#line 2930 "y.tab.c" /* yacc.c:1646 */ break; case 110: -#line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } +#line 1012 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_group_command ((yyvsp[-1].command)); } +#line 2936 "y.tab.c" /* yacc.c:1646 */ break; case 111: -#line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } +#line 1016 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); } +#line 2942 "y.tab.c" /* yacc.c:1646 */ break; case 112: -#line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(2) - (3)].command); } +#line 1020 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[-1].command); } +#line 2948 "y.tab.c" /* yacc.c:1646 */ break; case 113: -#line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } +#line 1024 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); } +#line 2954 "y.tab.c" /* yacc.c:1646 */ break; case 114: -#line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } +#line 1026 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); } +#line 2960 "y.tab.c" /* yacc.c:1646 */ break; case 115: -#line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } +#line 1028 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); } +#line 2966 "y.tab.c" /* yacc.c:1646 */ break; case 117: -#line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } +#line 1033 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); } +#line 2972 "y.tab.c" /* yacc.c:1646 */ break; case 118: -#line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } +#line 1037 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } +#line 2978 "y.tab.c" /* yacc.c:1646 */ break; case 119: -#line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } +#line 1039 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } +#line 2984 "y.tab.c" /* yacc.c:1646 */ break; case 120: -#line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } +#line 1041 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); } +#line 2990 "y.tab.c" /* yacc.c:1646 */ break; case 121: -#line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } +#line 1043 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); } +#line 2996 "y.tab.c" /* yacc.c:1646 */ break; case 122: -#line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } +#line 1047 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.pattern) = (yyvsp[-1].pattern); } +#line 3002 "y.tab.c" /* yacc.c:1646 */ break; case 123: -#line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } +#line 1049 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } +#line 3008 "y.tab.c" /* yacc.c:1646 */ break; case 124: -#line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } +#line 1051 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); } +#line 3014 "y.tab.c" /* yacc.c:1646 */ break; case 125: -#line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } +#line 1053 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } +#line 3020 "y.tab.c" /* yacc.c:1646 */ break; case 126: -#line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } +#line 1055 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); } +#line 3026 "y.tab.c" /* yacc.c:1646 */ break; case 127: -#line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } +#line 1057 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); } +#line 3032 "y.tab.c" /* yacc.c:1646 */ break; case 128: -#line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } +#line 1061 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); } +#line 3038 "y.tab.c" /* yacc.c:1646 */ break; case 129: -#line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } +#line 1063 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); } +#line 3044 "y.tab.c" /* yacc.c:1646 */ break; case 130: -#line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1072 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = (yyvsp[(2) - (2)].command); + (yyval.command) = (yyvsp[0].command); if (need_here_doc) gather_here_documents (); } +#line 3054 "y.tab.c" /* yacc.c:1646 */ break; case 132: -#line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1081 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = (yyvsp[(2) - (2)].command); + (yyval.command) = (yyvsp[0].command); } +#line 3062 "y.tab.c" /* yacc.c:1646 */ break; case 134: -#line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1088 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (3)].command)->type == cm_connection) - (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&'); + if ((yyvsp[-2].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[-2].command), (COMMAND *)NULL, '&'); else - (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&'); + (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&'); } +#line 3073 "y.tab.c" /* yacc.c:1646 */ break; case 136: -#line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } +#line 1099 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } +#line 3079 "y.tab.c" /* yacc.c:1646 */ break; case 137: -#line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } +#line 1101 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } +#line 3085 "y.tab.c" /* yacc.c:1646 */ break; case 138: -#line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1103 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (4)].command)->type == cm_connection) - (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&'); + if ((yyvsp[-3].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[-3].command), (yyvsp[0].command), '&'); else - (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&'); + (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&'); } +#line 3096 "y.tab.c" /* yacc.c:1646 */ break; case 139: -#line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } +#line 1110 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); } +#line 3102 "y.tab.c" /* yacc.c:1646 */ break; case 140: -#line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } +#line 1112 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); } +#line 3108 "y.tab.c" /* yacc.c:1646 */ break; case 141: -#line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 1114 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 3114 "y.tab.c" /* yacc.c:1646 */ break; case 144: -#line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1122 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = '\n'; } +#line 3120 "y.tab.c" /* yacc.c:1646 */ break; case 145: -#line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1124 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = ';'; } +#line 3126 "y.tab.c" /* yacc.c:1646 */ break; case 146: -#line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1126 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = yacc_EOF; } +#line 3132 "y.tab.c" /* yacc.c:1646 */ break; case 149: -#line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1140 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = (yyvsp[(1) - (1)].command); + (yyval.command) = (yyvsp[0].command); if (need_here_doc) gather_here_documents (); if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) { - global_command = (yyvsp[(1) - (1)].command); + global_command = (yyvsp[0].command); eof_encountered = 0; rewind_input_string (); YYACCEPT; } } +#line 3149 "y.tab.c" /* yacc.c:1646 */ break; case 150: -#line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1153 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (2)].command)->type == cm_connection) - (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&'); + if ((yyvsp[-1].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[-1].command), (COMMAND *)NULL, '&'); else - (yyval.command) = command_connect ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&'); + (yyval.command) = command_connect ((yyvsp[-1].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); + global_command = (yyvsp[-1].command); eof_encountered = 0; rewind_input_string (); YYACCEPT; } } +#line 3169 "y.tab.c" /* yacc.c:1646 */ break; case 151: -#line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1169 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - (yyval.command) = (yyvsp[(1) - (2)].command); + (yyval.command) = (yyvsp[-1].command); if (need_here_doc) gather_here_documents (); if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) { - global_command = (yyvsp[(1) - (2)].command); + global_command = (yyvsp[-1].command); eof_encountered = 0; rewind_input_string (); YYACCEPT; } } +#line 3186 "y.tab.c" /* yacc.c:1646 */ break; case 152: -#line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } +#line 1184 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); } +#line 3192 "y.tab.c" /* yacc.c:1646 */ break; case 153: -#line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } +#line 1186 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); } +#line 3198 "y.tab.c" /* yacc.c:1646 */ break; case 154: -#line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1188 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (3)].command)->type == cm_connection) - (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&'); + if ((yyvsp[-2].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[-2].command), (yyvsp[0].command), '&'); else - (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&'); + (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&'); } +#line 3209 "y.tab.c" /* yacc.c:1646 */ break; case 155: -#line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } +#line 1195 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); } +#line 3215 "y.tab.c" /* yacc.c:1646 */ break; case 156: -#line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 1198 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 3221 "y.tab.c" /* yacc.c:1646 */ break; case 157: -#line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 1202 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 3227 "y.tab.c" /* yacc.c:1646 */ break; case 158: -#line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1204 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (2)].command)) - (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN; /* toggle */ - (yyval.command) = (yyvsp[(2) - (2)].command); + if ((yyvsp[0].command)) + (yyvsp[0].command)->flags ^= CMD_INVERT_RETURN; /* toggle */ + (yyval.command) = (yyvsp[0].command); } +#line 3237 "y.tab.c" /* yacc.c:1646 */ break; case 159: -#line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1210 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (2)].command)) - (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number); - (yyval.command) = (yyvsp[(2) - (2)].command); + if ((yyvsp[0].command)) + (yyvsp[0].command)->flags |= (yyvsp[-1].number); + (yyval.command) = (yyvsp[0].command); } +#line 3247 "y.tab.c" /* yacc.c:1646 */ break; case 160: -#line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1216 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { ELEMENT x; @@ -3297,15 +3259,18 @@ yyreduce: x.word = 0; x.redirect = 0; (yyval.command) = make_simple_command (x, (COMMAND *)NULL); - (yyval.command)->flags |= (yyvsp[(1) - (2)].number); + (yyval.command)->flags |= (yyvsp[-1].number); /* XXX - let's cheat and push a newline back */ - if ((yyvsp[(2) - (2)].number) == '\n') + if ((yyvsp[0].number) == '\n') token_to_read = '\n'; + else if ((yyvsp[0].number) == ';') + token_to_read = ';'; } +#line 3270 "y.tab.c" /* yacc.c:1646 */ break; case 161: -#line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1235 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { ELEMENT x; @@ -3320,25 +3285,29 @@ yyreduce: (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') + if ((yyvsp[0].number) == '\n') token_to_read = '\n'; + if ((yyvsp[0].number) == ';') + token_to_read = ';'; } +#line 3294 "y.tab.c" /* yacc.c:1646 */ break; case 162: -#line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } +#line 1257 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); } +#line 3300 "y.tab.c" /* yacc.c:1646 */ break; case 163: -#line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1259 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { /* 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); + tc = (yyvsp[-3].command)->type == cm_simple ? (COMMAND *)(yyvsp[-3].command)->value.Simple : (yyvsp[-3].command); sd.dest = 2; rd.dest = 1; r = make_redirection (sd, r_duplicating_output, rd, 0); @@ -3352,35 +3321,50 @@ yyreduce: else tc->redirects = r; - (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); + (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); } +#line 3327 "y.tab.c" /* yacc.c:1646 */ break; case 164: -#line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y" - { (yyval.command) = (yyvsp[(1) - (1)].command); } +#line 1282 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ + { (yyval.command) = (yyvsp[0].command); } +#line 3333 "y.tab.c" /* yacc.c:1646 */ break; case 165: -#line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1286 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = CMD_TIME_PIPELINE; } +#line 3339 "y.tab.c" /* yacc.c:1646 */ break; case 166: -#line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1288 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } +#line 3345 "y.tab.c" /* yacc.c:1646 */ break; case 167: -#line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1290 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1646 */ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } +#line 3351 "y.tab.c" /* yacc.c:1646 */ break; -/* Line 1267 of yacc.c. */ -#line 3382 "y.tab.c" +#line 3355 "y.tab.c" /* yacc.c:1646 */ default: break; } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); @@ -3389,8 +3373,7 @@ yyreduce: *++yyvsp = yyval; - - /* Now `shift' the result of the reduction. Determine what state + /* 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. */ @@ -3405,10 +3388,14 @@ yyreduce: goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { @@ -3416,37 +3403,36 @@ yyerrlab: #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) { - 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; - } + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; } +# undef YYSYNTAX_ERROR #endif } @@ -3454,24 +3440,24 @@ yyerrlab: if (yyerrstatus == 3) { - /* If just tried and failed to reuse look-ahead token after an - error, discard it. */ + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } - /* Else will try to reuse look-ahead token after shifting the error + /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; @@ -3487,7 +3473,7 @@ yyerrorlab: if (/*CONSTCOND*/ 0) goto yyerrorlab; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -3500,38 +3486,37 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + 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; - } - } + if (!yypact_value_is_default (yyn)) + { + 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; + YYABORT; yydestruct ("Error: popping", - yystos[yystate], yyvsp); + yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ @@ -3555,7 +3540,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow +#if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -3566,17 +3551,22 @@ yyexhaustedlab: #endif yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - /* Do not reclaim the symbols of the rule which action triggered + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -3587,12 +3577,9 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - -#line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y" +#line 1292 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1906 */ /* Initial size to allocate for tokens, and the @@ -3740,9 +3727,9 @@ yy_readline_get () int line_len; unsigned char c; - if (!current_readline_line) + if (current_readline_line == 0) { - if (!bash_readline_initialized) + if (bash_readline_initialized == 0) initialize_readline (); #if defined (JOB_CONTROL) @@ -3750,7 +3737,7 @@ yy_readline_get () give_terminal_to (shell_pgrp, 0); #endif /* JOB_CONTROL */ - old_sigint = (SigHandler *)IMPOSSIBLE_TRAP_HANDLER; + old_sigint = IMPOSSIBLE_TRAP_HANDLER; if (signal_is_ignored (SIGINT) == 0) { /* interrupt_immediately++; */ @@ -4265,6 +4252,13 @@ parser_restore_alias () #endif } +void +clear_shell_input_line () +{ + if (shell_input_line) + shell_input_line[shell_input_line_index = 0] = '\0'; +} + /* 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 @@ -4371,10 +4365,10 @@ read_secondary_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. + /* To make adding 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++; @@ -4516,11 +4510,12 @@ shell_getc (remove_quoted_newline) int remove_quoted_newline; { register int i; - int c, truncating; + int c, truncating, last_was_backslash; unsigned char uc; QUIT; + last_was_backslash = 0; if (sigwinch_received) { sigwinch_received = 0; @@ -4617,7 +4612,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 (%zu) exceeds SIZE_MAX (%llu): line truncated", shell_input_line_size, SIZE_MAX); + internal_warning(_("shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"), shell_input_line_size, (unsigned long)SIZE_MAX); shell_input_line[i] = '\0'; truncating = 1; } @@ -4651,6 +4646,8 @@ shell_getc (remove_quoted_newline) current_command_line_count++; break; } + + last_was_backslash = last_was_backslash == 0 && c == '\\'; } shell_input_line_index = 0; @@ -4672,6 +4669,8 @@ shell_getc (remove_quoted_newline) if (current_delimiter (dstack) == '\'') history_expansion_inhibited = 1; # endif + /* Calling with a third argument of 1 allows remember_on_history to + determine whether or not the line is saved to the history list */ expansions = pre_process_line (shell_input_line, 1, 1); # if defined (BANG_HISTORY) history_expansion_inhibited = old_hist; @@ -4745,7 +4744,14 @@ shell_getc (remove_quoted_newline) shell_input_line = (char *)xrealloc (shell_input_line, 1 + (shell_input_line_size += 2)); - shell_input_line[shell_input_line_len] = '\n'; + /* Don't add a newline to a string that ends with a backslash if we're + going to be removing quoted newlines, since that will eat the + backslash. Add another backslash instead (will be removed by + word expansion). */ + if (bash_input.type == st_string && expanding_alias() == 0 && last_was_backslash && c == EOF && remove_quoted_newline) + shell_input_line[shell_input_line_len] = '\\'; + else + shell_input_line[shell_input_line_len] = '\n'; shell_input_line[shell_input_line_len + 1] = '\0'; set_line_mbstate (); @@ -4856,7 +4862,7 @@ parser_remaining_input () if (shell_input_line == 0) return 0; if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) - return '\0'; /* XXX */ + return ""; /* XXX */ return (shell_input_line + shell_input_line_index); } @@ -4907,6 +4913,17 @@ execute_variable_command (command, vname) token_to_read = 0; } +void +push_token (x) + int x; +{ + two_tokens_ago = token_before_that; + token_before_that = last_read_token; + last_read_token = current_token; + + current_token = x; +} + /* Place to remember the token. We try to keep the buffer at a reasonable size, but it can grow. */ static char *token = (char *)NULL; @@ -4984,23 +5001,43 @@ gather_here_documents () int r; r = 0; + here_doc_first_line = 1; while (need_here_doc > 0) { parser_state |= PST_HEREDOC; make_here_document (redir_stack[r++], line_number); parser_state &= ~PST_HEREDOC; need_here_doc--; + redir_stack[r - 1] = 0; /* XXX */ } + here_doc_first_line = 0; /* just in case */ } /* When non-zero, an open-brace used to create a group is awaiting a close brace partner. */ static int open_brace_count; +/* In the following three macros, `token' is always last_read_token */ + +/* Are we in the middle of parsing a redirection where we are about to read + a word? This is used to make sure alias expansion doesn't happen in the + middle of a redirection, even though we're parsing a simple command. */ +#define parsing_redirection(token) \ + (token == '<' || token == '>' || \ + token == GREATER_GREATER || token == GREATER_BAR || \ + token == LESS_GREATER || token == LESS_LESS_MINUS || \ + token == LESS_LESS || token == LESS_LESS_LESS || \ + token == LESS_AND || token == GREATER_AND || token == AND_GREATER) + +/* Is `token' one that will allow a WORD to be read in a command position? + We can read a simple command name on which we should attempt alias expansion + or we can read an assignment statement. */ #define command_token_position(token) \ - (((token) == ASSIGNMENT_WORD) || (parser_state&PST_REDIRLIST) || \ + (((token) == ASSIGNMENT_WORD) || \ + ((parser_state&PST_REDIRLIST) && parsing_redirection(token) == 0) || \ ((token) != SEMI_SEMI && (token) != SEMI_AND && (token) != SEMI_SEMI_AND && reserved_word_acceptable(token))) +/* Are we in a position where we can read an assignment statement? */ #define assignment_acceptable(token) \ (command_token_position(token) && ((parser_state & PST_CASEPAT) == 0)) @@ -5019,6 +5056,8 @@ static int open_brace_count; break; \ if (word_token_alist[i].token == TIME && time_command_acceptable () == 0) \ break; \ + if ((parser_state & PST_CASEPAT) && last_read_token == '|' && word_token_alist[i].token == ESAC) \ + break; /* Posix grammar rule 4 */ \ if (word_token_alist[i].token == ESAC) \ parser_state &= ~(PST_CASEPAT|PST_CASESTMT); \ else if (word_token_alist[i].token == CASE) \ @@ -5063,7 +5102,7 @@ mk_alexpansion (s) 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') + if (r[l - 1] != ' ' && r[l - 1] != '\n' && shellmeta(r[l - 1]) == 0) r[l++] = ' '; r[l] = '\0'; return r; @@ -5127,6 +5166,9 @@ time_command_acceptable () case 0: case ';': case '\n': + if (token_before_that == '|') + return (0); + /* FALLTHROUGH */ case AND_AND: case OR_OR: case '&': @@ -5284,12 +5326,14 @@ reset_parser () #endif parser_state = 0; + here_doc_first_line = 0; #if defined (ALIAS) || defined (DPAREN_ARITHMETIC) if (pushed_string_list) free_string_list (); #endif /* ALIAS || DPAREN_ARITHMETIC */ + /* This is where we resynchronize to the next newline on error/reset */ if (shell_input_line) { free (shell_input_line); @@ -5407,7 +5451,16 @@ read_token (command) parser_state &= ~PST_ASSIGNOK; - peek_char = shell_getc (1); + /* If we are parsing a command substitution and we have read a character + that marks the end of it, don't bother to skip over quoted newlines + when we read the next token. We're just interested in a character + that will turn this into a two-character token, so we let the higher + layers deal with quoted newlines following the command substitution. */ + if ((parser_state & PST_CMDSUBST) && character == shell_eof_token) + peek_char = shell_getc (0); + else + peek_char = shell_getc (1); + if (character == peek_char) { switch (character) @@ -5564,7 +5617,8 @@ tokword: #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 LEX_QUOTEDDOC 0x400 /* here doc with quoted delim */ +#define LEX_INWORD 0x800 #define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') @@ -5810,7 +5864,7 @@ parse_matched_pair (qc, open, close, lenp, flags) APPEND_NESTRET (); FREE (nestret); } - else if ((flags & P_ARRAYSUB) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ goto parse_dollar_word; } /* Parse an old-style command substitution within double quotes as a @@ -5856,6 +5910,81 @@ parse_dollar_word: return ret; } +#if defined (DEBUG) +static void +dump_tflags (flags) + int flags; +{ + int f; + + f = flags; + fprintf (stderr, "%d -> ", f); + if (f & LEX_WASDOL) + { + f &= ~LEX_WASDOL; + fprintf (stderr, "LEX_WASDOL%s", f ? "|" : ""); + } + if (f & LEX_CKCOMMENT) + { + f &= ~LEX_CKCOMMENT; + fprintf (stderr, "LEX_CKCOMMENT%s", f ? "|" : ""); + } + if (f & LEX_INCOMMENT) + { + f &= ~LEX_INCOMMENT; + fprintf (stderr, "LEX_INCOMMENT%s", f ? "|" : ""); + } + if (f & LEX_PASSNEXT) + { + f &= ~LEX_PASSNEXT; + fprintf (stderr, "LEX_PASSNEXT%s", f ? "|" : ""); + } + if (f & LEX_RESWDOK) + { + f &= ~LEX_RESWDOK; + fprintf (stderr, "LEX_RESWDOK%s", f ? "|" : ""); + } + if (f & LEX_CKCASE) + { + f &= ~LEX_CKCASE; + fprintf (stderr, "LEX_CKCASE%s", f ? "|" : ""); + } + if (f & LEX_INCASE) + { + f &= ~LEX_INCASE; + fprintf (stderr, "LEX_INCASE%s", f ? "|" : ""); + } + if (f & LEX_INHEREDOC) + { + f &= ~LEX_INHEREDOC; + fprintf (stderr, "LEX_INHEREDOC%s", f ? "|" : ""); + } + if (f & LEX_HEREDELIM) + { + f &= ~LEX_HEREDELIM; + fprintf (stderr, "LEX_HEREDELIM%s", f ? "|" : ""); + } + if (f & LEX_STRIPDOC) + { + f &= ~LEX_STRIPDOC; + fprintf (stderr, "LEX_WASDOL%s", f ? "|" : ""); + } + if (f & LEX_QUOTEDDOC) + { + f &= ~LEX_QUOTEDDOC; + fprintf (stderr, "LEX_QUOTEDDOC%s", f ? "|" : ""); + } + if (f & LEX_INWORD) + { + f &= ~LEX_INWORD; + fprintf (stderr, "LEX_INWORD%s", f ? "|" : ""); + } + + fprintf (stderr, "\n"); + fflush (stderr); +} +#endif + /* Parse a $(...) command substitution. This is messier than I'd like, and reproduces a lot more of the token-reading code than I'd like. */ static char * @@ -5933,7 +6062,7 @@ eof_error: tind++; if (STREQN (ret + tind, heredelim, hdlen)) { - tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC); + tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); /*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ free (heredelim); heredelim = 0; @@ -5953,21 +6082,29 @@ eof_error: 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);*/ +/*itrace("parse_comsub:%d: in here doc, ch == close, retind - firstind = %d hdlen = %d retind = %d", line_number, retind-lex_firstind, hdlen, retind);*/ tind = lex_firstind; while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') tind++; if (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);*/ + tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC); +/*itrace("parse_comsub:%d: found here doc end `%*s'", line_number, hdlen, ret + tind);*/ free (heredelim); heredelim = 0; lex_firstind = -1; } } - /* Don't bother counting parens or doing anything else if in a comment */ + /* Don't bother counting parens or doing anything else if in a comment or + here document (not exactly right for here-docs -- if we want to allow + recursive calls to parse_comsub to have their own here documents, + change the LEX_INHEREDOC to LEX_QUOTEDDOC here and uncomment the next + clause below. Note that to make this work completely, we need to make + additional changes to allow xparse_dolparen to work right when the + command substitution is parsed, because read_secondary_line doesn't know + to recursively parse through command substitutions embedded in here- + documents */ if (tflags & (LEX_INCOMMENT|LEX_INHEREDOC)) { /* Add this character. */ @@ -5982,6 +6119,21 @@ eof_error: continue; } +#if 0 + /* If we're going to recursively parse a command substitution inside a + here-document, make sure we call parse_comsub recursively below. See + above for additional caveats. */ + if ((tflags & LEX_INHEREDOC) && ((tflags & LEX_WASDOL) == 0 || ch != '(')) /*)*/ + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + if MBTEST(ch == '$') + tflags |= LEX_WASDOL; + else + tflags &= ~LEX_WASDOL; + } +#endif if (tflags & LEX_PASSNEXT) /* last char was backslash */ { @@ -6059,9 +6211,11 @@ eof_error: { 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 (STREQ (heredelim, nestret) == 0) + tflags |= LEX_QUOTEDDOC; + free (nestret); } if (ch == '\n') { @@ -6111,7 +6265,7 @@ eof_error: /* If we can read a reserved word, try to read one. */ if (tflags & LEX_RESWDOK) { - if MBTEST(islower (ch)) + if MBTEST(islower ((unsigned char)ch)) { /* Add this character. */ RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); @@ -6124,14 +6278,34 @@ eof_error: if (STREQN (ret + retind - 4, "case", 4)) { tflags |= LEX_INCASE; + tflags &= ~LEX_RESWDOK; /*itrace("parse_comsub:%d: found `case', lex_incase -> 1 lex_reswdok -> 0", line_number);*/ } else if (STREQN (ret + retind - 4, "esac", 4)) { tflags &= ~LEX_INCASE; -/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 0", line_number);*/ +/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 1", line_number);*/ + tflags |= LEX_RESWDOK; + lex_rwlen = 0; + } + else if (STREQN (ret + retind - 4, "done", 4) || + STREQN (ret + retind - 4, "then", 4) || + STREQN (ret + retind - 4, "else", 4) || + STREQN (ret + retind - 4, "elif", 4) || + STREQN (ret + retind - 4, "time", 4)) + { + /* these are four-character reserved words that can be + followed by a reserved word; anything else turns off + the reserved-word-ok flag */ +/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 1", line_number, ret+retind-4);*/ + tflags |= LEX_RESWDOK; + lex_rwlen = 0; + } + else + { + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/ } - 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 */ @@ -6139,11 +6313,11 @@ eof_error: 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') && + (isblank((unsigned char)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);*/ +/*itrace("parse_comsub:%d: lex_incase == 0 found `%c', found \"do\"", line_number, ch);*/ lex_rwlen = 0; } else if MBTEST((tflags & LEX_INCASE) && ch != '\n') @@ -6164,7 +6338,7 @@ eof_error: #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) + else if MBTEST(isblank ((unsigned char)ch) && lex_rwlen > 0) { tflags &= ~LEX_RESWDOK; /*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ @@ -6349,7 +6523,8 @@ xparse_dolparen (base, string, indp, flags) /*(*/ parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ shell_eof_token = ')'; - parse_string (string, "command substitution", sflags, &ep); + + nc = parse_string (string, "command substitution", sflags, &ep); shell_eof_token = orig_eof_token; restore_parser_state (&ps); @@ -6359,6 +6534,11 @@ xparse_dolparen (base, string, indp, flags) token_to_read = 0; + /* If parse_string returns < 0, we need to jump to top level with the + negative of the return value */ + if (nc < 0) + jump_to_top_level (-nc); /* XXX */ + /* Need to find how many characters parse_and_execute consumed, update *indp, if flags != 0, copy the portion of the string parsed into RET and return it. If flags & 1 (EX_NOALLOC) we can return NULL. */ @@ -6814,7 +6994,7 @@ read_token_word (character) /* Non-zero means to ignore the value of the next character, and just to add it no matter what. */ - int pass_next_character; + int pass_next_character; /* The current delimiting character. */ int cd; @@ -7111,7 +7291,6 @@ read_token_word (character) } got_character: - if (character == CTLESC || character == CTLNUL) { RESIZE_MALLOCED_BUFFER (token, token_index, 2, token_buffer_size, @@ -7188,7 +7367,7 @@ got_token: #endif CHECK_FOR_RESERVED_WORD (token); - the_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); + the_word = alloc_word_desc (); the_word->word = (char *)xmalloc (1 + token_index); the_word->flags = 0; strcpy (the_word->word, token); @@ -7231,7 +7410,7 @@ got_token: /* 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)) + if (legal_identifier (token+1) || valid_array_reference (token+1, 0)) #else if (legal_identifier (token+1)) #endif @@ -7404,7 +7583,7 @@ history_delimiting_chars (line) last_was_heredoc = 0; return "\n"; } - return (current_command_line_count == 2 ? "\n" : ""); + return (here_doc_first_line ? "\n" : ""); } if (parser_state & PST_COMPASSIGN) @@ -7425,7 +7604,7 @@ history_delimiting_chars (line) command lists. It's a suboptimal solution. */ else if (parser_state & PST_CASESTMT) /* case statement pattern */ return " "; - else + else return "; "; /* (...) subshell */ } else if (token_before_that == WORD && two_tokens_ago == FUNCTION) @@ -7439,7 +7618,8 @@ history_delimiting_chars (line) last_was_heredoc = 1; return "\n"; } - + else if ((parser_state & PST_HEREDOC) == 0 && current_command_line_count > 1 && need_here_doc > 0) + return "\n"; else if (token_before_that == WORD && two_tokens_ago == FOR) { /* Tricky. `for i\nin ...' should not have a semicolon, but @@ -7476,6 +7656,8 @@ prompt_again () ps1_prompt = get_string_value ("PS1"); ps2_prompt = get_string_value ("PS2"); + ps0_prompt = get_string_value ("PS0"); + if (!prompt_string_pointer) prompt_string_pointer = &ps1_prompt; @@ -7568,9 +7750,10 @@ decode_prompt_string (string) struct dstack save_dstack; int last_exit_value, last_comsub_pid; #if defined (PROMPT_STRING_DECODE) - int result_size, result_index; + size_t result_size; + int result_index; int c, n, i; - char *temp, octal_string[4]; + char *temp, *t_host, octal_string[4]; struct tm *tm; time_t the_time; char timebuf[128]; @@ -7718,7 +7901,11 @@ decode_prompt_string (string) case 's': temp = base_pathname (shell_name); - temp = savestring (temp); + /* Try to quote anything the user can set in the file system */ + if (promptvars || posixly_correct) + temp = sh_backslash_quote_for_double_quotes (temp); + else + temp = savestring (temp); goto add_string; case 'v': @@ -7808,9 +7995,17 @@ decode_prompt_string (string) case 'h': case 'H': - temp = savestring (current_host_name); - if (c == 'h' && (t = (char *)strchr (temp, '.'))) + t_host = savestring (current_host_name); + if (c == 'h' && (t = (char *)strchr (t_host, '.'))) *t = '\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 (t_host); + else + temp = savestring (t_host); + free (t_host); goto add_string; case '#': @@ -7901,6 +8096,10 @@ not_escape: else { RESIZE_MALLOCED_BUFFER (result, result_index, 3, result_size, PROMPT_GROWTH); + /* dequote_string should take care of removing this if we are not + performing the rest of the word expansions. */ + if (c == CTLESC || c == CTLNUL) + result[result_index++] = CTLESC; result[result_index++] = c; result[result_index] = '\0'; } @@ -8394,6 +8593,8 @@ sh_parser_state_t * save_parser_state (ps) sh_parser_state_t *ps; { + int i; + if (ps == 0) ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t)); if (ps == 0) @@ -8427,6 +8628,17 @@ save_parser_state (ps) ps->expand_aliases = expand_aliases; ps->echo_input_at_read = echo_input_at_read; ps->need_here_doc = need_here_doc; + ps->here_doc_first_line = here_doc_first_line; + +#if 0 + for (i = 0; i < HEREDOC_MAX; i++) + ps->redir_stack[i] = redir_stack[i]; +#else + if (need_here_doc == 0) + ps->redir_stack[0] = 0; + else + memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); +#endif ps->token = token; ps->token_buffer_size = token_buffer_size; @@ -8441,6 +8653,8 @@ void restore_parser_state (ps) sh_parser_state_t *ps; { + int i; + if (ps == 0) return; @@ -8476,6 +8690,17 @@ restore_parser_state (ps) expand_aliases = ps->expand_aliases; echo_input_at_read = ps->echo_input_at_read; need_here_doc = ps->need_here_doc; + here_doc_first_line = ps->here_doc_first_line; + +#if 0 + for (i = 0; i < HEREDOC_MAX; i++) + redir_stack[i] = ps->redir_stack[i]; +#else + if (need_here_doc == 0) + redir_stack[0] = 0; + else + memcpy (redir_stack, ps->redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX); +#endif FREE (token); token = ps->token; @@ -8534,8 +8759,7 @@ set_line_mbstate () 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); + shell_input_line_property = (char *)xrealloc (shell_input_line_property, len + 1); memset (&prevs, '\0', sizeof (mbstate_t)); for (i = previ = 0; i < len; i++) @@ -8578,4 +8802,3 @@ set_line_mbstate () } } #endif /* HANDLE_MULTIBYTE */ - diff --git a/y.tab.h b/y.tab.h index b280e40..b367eb2 100644 --- a/y.tab.h +++ b/y.tab.h @@ -1,14 +1,13 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + 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. + 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 @@ -16,9 +15,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -33,60 +30,69 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Tokens. */ +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ #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 - }; + 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 @@ -137,13 +143,13 @@ #define BAR_AND 303 #define yacc_EOF 304 - - - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 324 "/usr/homes/chet/src/bash/src/parse.y" + +union YYSTYPE { +#line 333 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909 */ + WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ WORD_LIST *word_list; @@ -151,14 +157,18 @@ typedef union YYSTYPE 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 + +#line 162 "y.tab.h" /* yacc.c:1909 */ +}; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 #endif + extern YYSTYPE yylval; +int yyparse (void); + +#endif /* !YY_YY_Y_TAB_H_INCLUDED */

    4. }U$Z_o| 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⪚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